/* Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)  */
(function(H){H.fn.drag=function(K,J,I){if(J){this.bind("dragstart",K)}if(I){this.bind("dragend",I)}return !K?this.trigger("drag"):this.bind("drag",J?J:K)};var D=H.event,B=D.special,F=B.drag={not:":input",distance:0,setup:function(I){I=H.extend({distance:F.distance,not:F.not},I||{});I.distance=G(I.distance);D.add(this,"mousedown",E,I)},teardown:function(){D.remove(this,"mousedown",E);if(this===F.dragging){F.dragging=F.proxy=null}C(this,true)}};function E(K){var J=this,I,L=K.data||{};if(J===document){K.dragTarget=J=L.elem;K.dragProxy=F.proxy||J;K.cursorOffsetX=L.pageX-L.left;K.cursorOffsetY=L.pageY-L.top;K.offsetX=K.pageX-K.cursorOffsetX;K.offsetY=K.pageY-K.cursorOffsetY}else{if(F.dragging||K.which!=1||H(K.target).is(L.not)){return }}switch(K.type){case"mousedown":H.extend(L,H(J).offset(),{elem:J,target:K.target,pageX:K.pageX,pageY:K.pageY});D.add(document,"mousemove mouseup",E,L);C(J,false);return false;case !F.dragging&&"mousemove":if(G(K.pageX-L.pageX)+G(K.pageY-L.pageY)<L.distance){break}K.target=L.target;I=A(K,"dragstart",J);if(I!==false){F.dragging=J;F.proxy=K.dragProxy=H(I)[0]||J}case"mousemove":if(F.dragging){I=A(K,"drag",J);if(B.drop){B.drop.allowed=(I!==false);B.drop.handler(K)}if(I!==false){break}K.type="mouseup"}case"mouseup":D.remove(document,"mousemove mouseup",E);if(F.dragging){if(B.drop){B.drop.handler(K)}A(K,"dragend",J)}C(J,true);F.dragging=F.proxy=null;break}}function A(K,I,J){K.type=I;return D.handle.call(J,K)}function G(I){return Math.pow(I,2)}function C(J,I){if(!J){return }J.unselectable=I?"off":"on";J.onselectstart=function(){return I};if(J.style){J.style.MozUserSelect=I?"":"none"}}})(jQuery);

;(function($){$.fn.drop=function(fn1,fn2,fn3){if(fn2)this.bind('dropstart',fn1);if(fn3)this.bind('dropend',fn3);return!fn1?this.trigger('drop'):this.bind('drop',fn2?fn2:fn1)};$.dropManage=function(opts){$.extend(drop,{filter:'*',data:[],tolerance:null},opts||{});return drop.$elements.filter(drop.filter).each(function(i){drop.data[i]=drop.locate(this)})};var drop=$.event.special.drop={delay:100,mode:'intersect',$elements:$([]),data:[],setup:function(){drop.$elements=drop.$elements.add(this);drop.data[drop.data.length]=drop.locate(this)},teardown:function(){var elem=this;drop.$elements=drop.$elements.not(this);drop.data=$.grep(drop.data,function(obj){return(obj.elem!==elem)})},handler:function(event){var dropstart=null,dropped;event.dropTarget=drop.dropping||undefined;if(drop.data.length&&event.dragTarget){switch(event.type){case'drag':drop.event=event;if(!drop.timer)drop.timer=setTimeout(drop.tolerate,20);break;case'mouseup':drop.timer=clearTimeout(drop.timer);if(!drop.dropping)break;if(drop.allowed){event.type="drop";dropped=$.event.handle.call(drop.dropping,event)}dropstart=false;case drop.dropping&&'dropstart':event.type="dropend";dropstart=dropstart===null&&drop.allowed?true:false;case drop.dropping&&'dropend':$.event.handle.call(drop.dropping,event);drop.dropping=null;if(dropped===false)event.dropTarget=undefined;if(!dropstart)break;event.type="dropstart";case drop.allowed&&'dropstart':event.dropTarget=this;drop.dropping=$.event.handle.call(this,event)!==false?this:null;break}}},tolerate:function(){var i=0,drp,winner,xy=[drop.event.pageX,drop.event.pageY],drg=drop.locate(drop.event.dragProxy);drop.tolerance=drop.tolerance||drop.modes[drop.mode];do if(drp=drop.data[i]){if(drop.tolerance)winner=drop.tolerance.call(drop,drop.event,drg,drp);else if(drop.contains(drp,xy))winner=drp}while(++i<drop.data.length&&!winner);drop.event.type=(winner=winner||drop.best)?'dropstart':'dropend';if(drop.event.type=='dropend'||winner.elem!=drop.dropping)drop.handler.call(winner?winner.elem:drop.dropping,drop.event);if(drop.last&&xy[0]==drop.last.pageX&&xy[1]==drop.last.pageY)delete drop.timer;else drop.timer=setTimeout(drop.tolerate,drop.delay);drop.last=drop.event;drop.best=null},locate:function(elem){var $el=$(elem),pos=$el.offset(),h=$el.outerHeight(),w=$el.outerWidth();return{elem:elem,L:pos.left,R:pos.left+w,T:pos.top,B:pos.top+h,W:w,H:h}},contains:function(target,test){return((test[0]||test.L)>=target.L&&(test[0]||test.R)<=target.R&&(test[1]||test.T)>=target.T&&(test[1]||test.B)<=target.B)},modes:{'intersect':function(event,proxy,target){return this.contains(target,[event.pageX,event.pageY])?target:this.modes['overlap'].apply(this,arguments)},'overlap':function(event,proxy,target){target.overlap=Math.max(0,Math.min(target.B,proxy.B)-Math.max(target.T,proxy.T))*Math.max(0,Math.min(target.R,proxy.R)-Math.max(target.L,proxy.L));if(target.overlap>((this.best||{}).overlap||0))this.best=target;return null},'fit':function(event,proxy,target){return this.contains(target,proxy)?target:null},'middle':function(event,proxy,target){return this.contains(target,[proxy.L+proxy.W/2,proxy.T+proxy.H/2])?target:null}}}})(jQuery);