dd-drag-min.js revision 74df3147f09ac0f4cdeffadca20bcd1f57a45fd5
YUI.add("dd-drag",function(D){var E=D.DD.DDM,T="node",G="dragging",N="dragNode",C="offsetHeight",K="offsetWidth",R="mouseup",P="mousedown",M="dragstart",H="drag:mouseDown",B="drag:afterMouseDown",F="drag:removeHandle",L="drag:addHandle",Q="drag:removeInvalid",S="drag:addInvalid",J="drag:start",I="drag:end",O="drag:drag";var A=function(){A.superclass.constructor.apply(this,arguments);E._regDrag(this);};A.NAME="drag";A.ATTRS={node:{setter:function(U){var V=D.get(U);if(!V){D.fail("DD.Drag: Invalid Node Given: "+U);}else{V=V.item(0);}return V;}},dragNode:{setter:function(U){var V=D.Node.get(U);if(!V){D.fail("DD.Drag: Invalid dragNode Given: "+U);}return V;}},offsetNode:{value:true},clickPixelThresh:{value:E.get("clickPixelThresh")},clickTimeThresh:{value:E.get("clickTimeThresh")},lock:{value:false,setter:function(U){if(U){this.get(T).addClass(E.CSS_PREFIX+"-locked");}else{this.get(T).removeClass(E.CSS_PREFIX+"-locked");}return U;}},data:{value:false},move:{value:true},useShim:{value:true},activeHandle:{value:false},primaryButtonOnly:{value:true},dragging:{value:false},parent:{value:false},target:{value:false,setter:function(U){D.later(0,this,function(V){this._handleTarget(V);},U);return U;}},dragMode:{value:null,setter:function(U){return E._setDragMode(U);}},groups:{value:["default"],getter:function(){if(!this._groups){this._groups={};}var U=[];D.each(this._groups,function(W,V){U[U.length]=V;});return U;},setter:function(U){this._groups={};D.each(U,function(W,V){this._groups[W]=true;},this);return U;}},handles:{value:null,setter:function(U){if(U){this._handles={};D.each(U,function(W,V){this._handles[W]=true;},this);}else{this._handles=null;}return U;}},bubbles:{writeOnce:true,value:D.DD.DDM}};D.extend(A,D.Base,{addToGroup:function(U){this._groups[U]=true;E._activateTargets();return this;},removeFromGroup:function(U){delete this._groups[U];E._activateTargets();return this;},target:null,_handleTarget:function(U){if(D.DD.Drop){if(U===false){if(this.target){E._unregTarget(this.target);this.target=null;}return false;}else{if(!D.Lang.isObject(U)){U={};}U.bubbles=this.get("bubbles");U.node=this.get(T);this.target=new D.DD.Drop(U);}}else{return false;}},_groups:null,_createEvents:function(){this.publish(H,{defaultFn:this._handleMouseDown,queuable:false,emitFacade:true,bubbles:true});var U=[B,F,L,Q,S,J,I,O,"drag:drophit","drag:dropmiss","drag:over","drag:enter","drag:exit"];D.each(U,function(W,V){this.publish(W,{type:W,emitFacade:true,bubbles:true,preventable:false,queuable:false});},this);if(this.get("bubbles")){this.addTarget(this.get("bubbles"));}},_ev_md:null,_startTime:null,_endTime:null,_handles:null,_invalids:null,_invalidsDefault:{"textarea":true,"input":true,"a":true,"button":true},_dragThreshMet:null,_fromTimeout:null,_clickTimeout:null,deltaXY:null,startXY:null,nodeXY:null,lastXY:null,realXY:null,mouseXY:null,region:null,_handleMouseUp:function(U){this._fixIEMouseUp();if(E.activeDrag){E._end();}},_fixDragStart:function(U){U.preventDefault();},_ieSelectFix:function(){return false;},_ieSelectBack:null,_fixIEMouseDown:function(){if(D.UA.ie){this._ieSelectBack=D.config.doc.body.onselectstart;D.config.doc.body.onselectstart=this._ieSelectFix;}},_fixIEMouseUp:function(){if(D.UA.ie){D.config.doc.body.onselectstart=this._ieSelectBack;}},_handleMouseDownEvent:function(U){this.fire(H,{ev:U});},_handleMouseDown:function(V){var U=V.ev;this._dragThreshMet=false;this._ev_md=U;if(this.get("primaryButtonOnly")&&U.button>1){return false;}if(this.validClick(U)){this._fixIEMouseDown();U.halt();this._setStartPosition([U.pageX,U.pageY]);E.activeDrag=this;this._clickTimeout=D.later(this.get("clickTimeThresh"),this,this._timeoutCheck);}this.fire(B,{ev:U});},validClick:function(Y){var X=false,U=Y.target,W=null;if(this._handles){D.each(this._handles,function(a,b){if(D.Lang.isString(b)){if(U.test(b+", "+b+" *")&&!W){W=b;X=true;}}});}else{if(this.get(T).contains(U)||this.get(T).compareTo(U)){X=true;}}if(X){if(this._invalids){D.each(this._invalids,function(a,b){if(D.Lang.isString(b)){if(U.test(b+", "+b+" *")){X=false;}}});}}if(X){if(W){var V=Y.currentTarget.queryAll(W),Z=false;V.each(function(b,a){if((b.contains(U)||b.compareTo(U))&&!Z){Z=true;this.set("activeHandle",b);}},this);}else{this.set("activeHandle",this.get(T));}}return X;},_setStartPosition:function(U){this.startXY=U;this.nodeXY=this.get(T).getXY();this.lastXY=this.nodeXY;this.realXY=this.nodeXY;if(this.get("offsetNode")){this.deltaXY=[(this.startXY[0]-this.nodeXY[0]),(this.startXY[1]-this.nodeXY[1])];}else{this.deltaXY=[0,0];}},_timeoutCheck:function(){if(!this.get("lock")){this._fromTimeout=true;this._dragThreshMet=true;this.start();this._alignNode([this._ev_md.pageX,this._ev_md.pageY],true);}},removeHandle:function(U){if(this._handles[U]){delete this._handles[U];this.fire(F,{handle:U});}return this;},addHandle:function(U){if(!this._handles){this._handles={};}if(D.Lang.isString(U)){this._handles[U]=true;this.fire(L,{handle:U});}return this;},removeInvalid:function(U){if(this._invalids[U]){this._invalids[U]=null;delete this._invalids[U];this.fire(Q,{handle:U});}return this;},addInvalid:function(U){if(D.Lang.isString(U)){this._invalids[U]=true;this.fire(S,{handle:U});}return this;},initializer:function(){this.get(T).dd=this;if(!this.get(T).get("id")){var U=D.stamp(this.get(T));this.get(T).set("id",U);}this._invalids=D.clone(this._invalidsDefault,true);D.later(100,this,this._createEvents);if(!this.get(N)){this.set(N,this.get(T));}this._prep();this._dragThreshMet=false;},_prep:function(){var U=this.get(T);U.addClass(E.CSS_PREFIX+"-draggable");U.on(P,this._handleMouseDownEvent,this,true);U.on(R,this._handleMouseUp,this,true);U.on(M,this._fixDragStart,this,true);},_unprep:function(){var U=this.get(T);U.removeClass(E.CSS_PREFIX+"-draggable");U.detach(P,this._handleMouseDownEvent,this,true);U.detach(R,this._handleMouseUp,this,true);U.detach(M,this._fixDragStart,this,true);},start:function(){if(!this.get("lock")&&!this.get(G)){E._start(this.deltaXY,[this.get(T).get(C),this.get(T).get(K)]);
this.get(T).addClass(E.CSS_PREFIX+"-dragging");this.fire(J,{pageX:this.nodeXY[0],pageY:this.nodeXY[1]});this.get(N).on(R,this._handleMouseUp,this,true);var U=this.nodeXY;this._startTime=(new Date()).getTime();this.region={"0":U[0],"1":U[1],area:0,top:U[1],right:U[0]+this.get(T).get(K),bottom:U[1]+this.get(T).get(C),left:U[0]};this.set(G,true);}return this;},end:function(){this._endTime=(new Date()).getTime();if(this._clickTimeout){this._clickTimeout.cancel();}this._dragThreshMet=false;this._fromTimeout=false;if(!this.get("lock")&&this.get(G)){this.fire(I,{pageX:this.lastXY[0],pageY:this.lastXY[1],startTime:this._startTime,endTime:this._endTime});}this.get(T).removeClass(E.CSS_PREFIX+"-dragging");this.set(G,false);this.deltaXY=[0,0];this.get(N).detach(R,this._handleMouseUp,this,true);return this;},_align:function(U){return[U[0]-this.deltaXY[0],U[1]-this.deltaXY[1]];},_alignNode:function(U,Y){var X=this._align(U),V=[],W=[];this._moveNode(X,Y);},_moveNode:function(X,Y){if(!this.get(G)){Y=true;}var U=[],V=[];U[0]=(X[0]-this.lastXY[0]);U[1]=(X[1]-this.lastXY[1]);V[0]=(X[0]-this.nodeXY[0]);V[1]=(X[1]-this.nodeXY[1]);if(this.get("move")){if(D.UA.opera){this.get(N).setXY(X);}else{E.setXY(this.get(N),U);}this.realXY=X;}this.region={"0":X[0],"1":X[1],area:0,top:X[1],right:X[0]+this.get(N).get(K),bottom:X[1]+this.get(N).get(C),left:X[0]};var W=this.nodeXY;if(!Y){this.fire(O,{pageX:X[0],pageY:X[1],info:{start:W,xy:X,delta:U,offset:V}});}this.lastXY=X;},_move:function(W){if(this.get("lock")){return false;}else{this.mouseXY=[W.pageX,W.pageY];if(!this._dragThreshMet){var V=Math.abs(this.startXY[0]-W.pageX);var U=Math.abs(this.startXY[1]-W.pageY);if(V>this.get("clickPixelThresh")||U>this.get("clickPixelThresh")){this._dragThreshMet=true;this.start();this._alignNode([W.pageX,W.pageY]);}}else{if(this._clickTimeout){this._clickTimeout.cancel();}this._alignNode([W.pageX,W.pageY]);}}},stopDrag:function(){if(this.get(G)){E._end();}return this;},destructor:function(){E._unregDrag(this);this._unprep();if(this.target){this.target.destroy();}}});D.namespace("DD");D.DD.Drag=A;},"@VERSION@",{requires:["dd-ddm-base"],skinnable:false});