/*
	Copyright (c) 2004-2008, The Dojo Foundation
	All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
*/


window[(typeof (djConfig)!="undefined"&&djConfig.scopeMap&&djConfig.scopeMap[0][1])||"dojo"]._xdResourceLoaded({depends:[["provide","dojo.dnd.Manager"],["require","dojo.dnd.common"],["require","dojo.dnd.autoscroll"],["require","dojo.dnd.Avatar"]],defineResource:function(_1,_2,_3){if(!_1._hasResource["dojo.dnd.Manager"]){_1._hasResource["dojo.dnd.Manager"]=true;_1.provide("dojo.dnd.Manager");_1.require("dojo.dnd.common");_1.require("dojo.dnd.autoscroll");_1.require("dojo.dnd.Avatar");_1.declare("dojo.dnd.Manager",null,{constructor:function(){this.avatar=null;this.source=null;this.nodes=[];this.copy=true;this.target=null;this.canDropFlag=false;this.events=[];},OFFSET_X:16,OFFSET_Y:16,overSource:function(_4){if(this.avatar){this.target=(_4&&_4.targetState!="Disabled")?_4:null;this.avatar.update();}_1.publish("/dnd/source/over",[_4]);},outSource:function(_5){if(this.avatar){if(this.target==_5){this.target=null;this.canDropFlag=false;this.avatar.update();_1.publish("/dnd/source/over",[null]);}}else{_1.publish("/dnd/source/over",[null]);}},startDrag:function(_6,_7,_8){this.source=_6;this.nodes=_7;this.copy=Boolean(_8);this.avatar=this.makeAvatar();_1.body().appendChild(this.avatar.node);_1.publish("/dnd/start",[_6,_7,this.copy]);this.events=[_1.connect(_1.doc,"onmousemove",this,"onMouseMove"),_1.connect(_1.doc,"onmouseup",this,"onMouseUp"),_1.connect(_1.doc,"onkeydown",this,"onKeyDown"),_1.connect(_1.doc,"onkeyup",this,"onKeyUp")];var c="dojoDnd"+(_8?"Copy":"Move");_1.addClass(_1.body(),c);},canDrop:function(_a){var _b=Boolean(this.target&&_a);if(this.canDropFlag!=_b){this.canDropFlag=_b;this.avatar.update();}},stopDrag:function(){_1.removeClass(_1.body(),"dojoDndCopy");_1.removeClass(_1.body(),"dojoDndMove");_1.forEach(this.events,_1.disconnect);this.events=[];this.avatar.destroy();this.avatar=null;this.source=null;this.nodes=[];},makeAvatar:function(){return new _1.dnd.Avatar(this);},updateAvatar:function(){this.avatar.update();},onMouseMove:function(e){var a=this.avatar;if(a){_1.dnd.autoScroll(e);var s=a.node.style;s.left=(e.pageX+this.OFFSET_X)+"px";s.top=(e.pageY+this.OFFSET_Y)+"px";var _f=Boolean(this.source.copyState(_1.dnd.getCopyKeyState(e)));if(this.copy!=_f){this._setCopyStatus(_f);}}},onMouseUp:function(e){if(this.avatar&&(!("mouseButton" in this.source)||this.source.mouseButton==e.button)){if(this.target&&this.canDropFlag){var _11=[this.source,this.nodes,Boolean(this.source.copyState(_1.dnd.getCopyKeyState(e))),this.target];_1.publish("/dnd/drop/before",_11);_1.publish("/dnd/drop",_11);}else{_1.publish("/dnd/cancel");}this.stopDrag();}},onKeyDown:function(e){if(this.avatar){switch(e.keyCode){case _1.keys.CTRL:var _13=Boolean(this.source.copyState(true));if(this.copy!=_13){this._setCopyStatus(_13);}break;case _1.keys.ESCAPE:_1.publish("/dnd/cancel");this.stopDrag();break;}}},onKeyUp:function(e){if(this.avatar&&e.keyCode==_1.keys.CTRL){var _15=Boolean(this.source.copyState(false));if(this.copy!=_15){this._setCopyStatus(_15);}}},_setCopyStatus:function(_16){this.copy=_16;this.source._markDndStatus(this.copy);this.updateAvatar();_1.removeClass(_1.body(),"dojoDnd"+(this.copy?"Move":"Copy"));_1.addClass(_1.body(),"dojoDnd"+(this.copy?"Copy":"Move"));}});_1.dnd._manager=null;_1.dnd.manager=function(){if(!_1.dnd._manager){_1.dnd._manager=new _1.dnd.Manager();}return _1.dnd._manager;};}}});
