EM.MoveEvent=new function(){var self=this,_movestart=null,_moveend=null,_move=null,_dp=3,_ic={'x':0,'y':0},moveState=0,moveTarget=null,moveTargetOffset={'x':0,'y':0}
var setMoveTarget=function(el){if(el&&el.nodeType&&el.tagName){moveTarget=el;moveTargetOffset=DOM.getOffset(el);return true;}
return false;}
var __mousemove=function(e){var cc=DOM.getCursorPosition(e);if(1==moveState&&(Math.abs(cc.x-_ic.x)>_dp||Math.abs(cc.y-_ic.y)>_dp)){moveState=2;_movestart.trigger(e.target,{'setMoveTarget':setMoveTarget})}
if(2==moveState&&moveTarget){_move.trigger(moveTarget,{'pageX':cc.x,'pageY':cc.y,'newOffsetX':cc.x-_ic.x+moveTargetOffset.x,'newOffsetY':cc.y-_ic.y+moveTargetOffset.y});if(window.getSelection)window.getSelection().removeAllRanges();}}
var __mousedown=function(e){moveState=1;_ic=DOM.getCursorPosition(e);}
var __mouseup=function(e){moveState=0;moveTarget=null;moveTargetOffset.x=0;moveTargetOffset.y=0;EM.removeEventListener(document.body,'selectstart',EM.preventDefaultAction);}
var __defaultMoveStartAction=function(e){EM.addEventListener(document.body,'selectstart',EM.preventDefaultAction);if(window.getSelection)window.getSelection().removeAllRanges();}
var __defaultMoveAction=function(e){moveTarget.style.left=e.newOffsetX+'px';moveTarget.style.top=e.newOffsetY+'px';}
var __construct=function(){EM.addEventListener(document.body.parentNode,'mousemove',__mousemove);EM.addEventListener(document.body,'mousedown',__mousedown);EM.addEventListener(document.body.parentNode,'mouseup',__mouseup);_move=EM.registerEvent('nodemove',self,true,__defaultMoveAction);_movestart=EM.registerEvent('nodemovestart',self,true,__defaultMoveStartAction);}
EM.addEventListener(window,'domload',__construct);}