/* Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ //>>built define("dojo/dnd/Moveable",["../_base/array","../_base/declare","../_base/event","../_base/lang","../dom","../dom-class","../Evented","../on","../topic","../touch","./common","./Mover","../_base/window"],function(_1,_2,_3,_4,_5,_6,_7,on,_8,_9,_a,_b,_c){ var _d=_2("dojo.dnd.Moveable",[_7],{handle:"",delay:0,skip:false,constructor:function(_e,_f){ this.node=_5.byId(_e); if(!_f){ _f={}; } this.handle=_f.handle?_5.byId(_f.handle):null; if(!this.handle){ this.handle=this.node; } this.delay=_f.delay>0?_f.delay:0; this.skip=_f.skip; this.mover=_f.mover?_f.mover:_b; this.events=[on(this.handle,_9.press,_4.hitch(this,"onMouseDown")),on(this.handle,"dragstart",_4.hitch(this,"onSelectStart")),on(this.handle,"selectstart",_4.hitch(this,"onSelectStart"))]; },markupFactory:function(_10,_11,_12){ return new _12(_11,_10); },destroy:function(){ _1.forEach(this.events,function(_13){ _13.remove(); }); this.events=this.node=this.handle=null; },onMouseDown:function(e){ if(this.skip&&_a.isFormElement(e)){ return; } if(this.delay){ this.events.push(on(this.handle,_9.move,_4.hitch(this,"onMouseMove")),on(this.handle,_9.release,_4.hitch(this,"onMouseUp"))); this._lastX=e.pageX; this._lastY=e.pageY; }else{ this.onDragDetected(e); } _3.stop(e); },onMouseMove:function(e){ if(Math.abs(e.pageX-this._lastX)>this.delay||Math.abs(e.pageY-this._lastY)>this.delay){ this.onMouseUp(e); this.onDragDetected(e); } _3.stop(e); },onMouseUp:function(e){ for(var i=0;i<2;++i){ this.events.pop().remove(); } _3.stop(e); },onSelectStart:function(e){ if(!this.skip||!_a.isFormElement(e)){ _3.stop(e); } },onDragDetected:function(e){ new this.mover(this.node,e,this); },onMoveStart:function(_14){ _8.publish("/dnd/move/start",_14); _6.add(_c.body(),"dojoMove"); _6.add(this.node,"dojoMoveItem"); },onMoveStop:function(_15){ _8.publish("/dnd/move/stop",_15); _6.remove(_c.body(),"dojoMove"); _6.remove(this.node,"dojoMoveItem"); },onFirstMove:function(){ },onMove:function(_16,_17){ this.onMoving(_16,_17); var s=_16.node.style; s.left=_17.l+"px"; s.top=_17.t+"px"; this.onMoved(_16,_17); },onMoving:function(){ },onMoved:function(){ }}); return _d; });