/*
	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/Container",["../_base/array","../_base/connect","../_base/declare","../_base/event","../_base/kernel","../_base/lang","../dom","../dom-class","../dom-construct","../Evented","../query","./common"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,_c){var _d=_3("dojo.dnd.Container",_a,{skipForm:false,constructor:function(_e,_f){this.node=_7.byId(_e);if(!_f){_f={};}this.creator=_f.creator||null;this.skipForm=_f.skipForm;this.parent=_f.dropParent&&_7.byId(_f.dropParent);this.map={};this.current=null;this.containerState="";_8.add(this.node,"dojoDndContainer");if(!(_f&&_f._skipStartup)){this.startup();}this.events=[_2.connect(this.node,"onmouseover",this,"onMouseOver"),_2.connect(this.node,"onmouseout",this,"onMouseOut"),_2.connect(this.node,"ondragstart",this,"onSelectStart"),_2.connect(this.node,"onselectstart",this,"onSelectStart")];},creator:function(){},getItem:function(key){return this.map[key];},setItem:function(key,_10){this.map[key]=_10;},delItem:function(key){delete this.map[key];},forInItems:function(f,o){o=o||_5.global;var m=this.map,e=_c._empty;for(var i in m){if(i in e){continue;}f.call(o,m[i],i,this);}return o;},clearItems:function(){this.map={};},getAllNodes:function(){return _b("> .dojoDndItem",this.parent);},sync:function(){var map={};this.getAllNodes().forEach(function(_11){if(_11.id){var _12=this.getItem(_11.id);if(_12){map[_11.id]=_12;return;}}else{_11.id=_c.getUniqueId();}var _13=_11.getAttribute("dndType"),_14=_11.getAttribute("dndData");map[_11.id]={data:_14||_11.innerHTML,type:_13?_13.split(/\s*,\s*/):["text"]};},this);this.map=map;return this;},insertNodes:function(_15,_16,_17){if(!this.parent.firstChild){_17=null;}else{if(_16){if(!_17){_17=this.parent.firstChild;}}else{if(_17){_17=_17.nextSibling;}}}var i,t;if(_17){for(i=0;i<_15.length;++i){t=this._normalizedCreator(_15[i]);this.setItem(t.node.id,{data:t.data,type:t.type});this.parent.insertBefore(t.node,_17);}}else{for(i=0;i<_15.length;++i){t=this._normalizedCreator(_15[i]);this.setItem(t.node.id,{data:t.data,type:t.type});this.parent.appendChild(t.node);}}return this;},destroy:function(){_1.forEach(this.events,_2.disconnect);this.clearItems();this.node=this.parent=this.current=null;},markupFactory:function(_18,_19,_1a){_18._skipStartup=true;return new _1a(_19,_18);},startup:function(){if(!this.parent){this.parent=this.node;if(this.parent.tagName.toLowerCase()=="table"){var c=this.parent.getElementsByTagName("tbody");if(c&&c.length){this.parent=c[0];}}}this.defaultCreator=_c._defaultCreator(this.parent);this.sync();},onMouseOver:function(e){var n=e.relatedTarget;while(n){if(n==this.node){break;}try{n=n.parentNode;}catch(x){n=null;}}if(!n){this._changeState("Container","Over");this.onOverEvent();}n=this._getChildByEvent(e);if(this.current==n){return;}if(this.current){this._removeItemClass(this.current,"Over");}if(n){this._addItemClass(n,"Over");}this.current=n;},onMouseOut:function(e){for(var n=e.relatedTarget;n;){if(n==this.node){return;}try{n=n.parentNode;}catch(x){n=null;}}if(this.current){this._removeItemClass(this.current,"Over");this.current=null;}this._changeState("Container","");this.onOutEvent();},onSelectStart:function(e){if(!this.skipForm||!_c.isFormElement(e)){_4.stop(e);}},onOverEvent:function(){},onOutEvent:function(){},_changeState:function(_1b,_1c){var _1d="dojoDnd"+_1b;var _1e=_1b.toLowerCase()+"State";_8.replace(this.node,_1d+_1c,_1d+this[_1e]);this[_1e]=_1c;},_addItemClass:function(_1f,_20){_8.add(_1f,"dojoDndItem"+_20);},_removeItemClass:function(_21,_22){_8.remove(_21,"dojoDndItem"+_22);},_getChildByEvent:function(e){var _23=e.target;if(_23){for(var _24=_23.parentNode;_24;_23=_24,_24=_23.parentNode){if(_24==this.parent&&_8.contains(_23,"dojoDndItem")){return _23;}}}return null;},_normalizedCreator:function(_25,_26){var t=(this.creator||this.defaultCreator).call(this,_25,_26);if(!_6.isArray(t.type)){t.type=["text"];}if(!t.node.id){t.node.id=_c.getUniqueId();}_8.add(t.node,"dojoDndItem");return t;}});_c._createNode=function(tag){if(!tag){return _c._createSpan;}return function(_27){return _9.create(tag,{innerHTML:_27});};};_c._createTrTd=function(_28){var tr=_9.create("tr");_9.create("td",{innerHTML:_28},tr);return tr;};_c._createSpan=function(_29){return _9.create("span",{innerHTML:_29});};_c._defaultCreatorNodes={ul:"li",ol:"li",div:"div",p:"div"};_c._defaultCreator=function(_2a){var tag=_2a.tagName.toLowerCase();var c=tag=="tbody"||tag=="thead"?_c._createTrTd:_c._createNode(_c._defaultCreatorNodes[tag]);return function(_2b,_2c){var _2d=_2b&&_6.isObject(_2b),_2e,_2f,n;if(_2d&&_2b.tagName&&_2b.nodeType&&_2b.getAttribute){_2e=_2b.getAttribute("dndData")||_2b.innerHTML;_2f=_2b.getAttribute("dndType");_2f=_2f?_2f.split(/\s*,\s*/):["text"];n=_2b;}else{_2e=(_2d&&_2b.data)?_2b.data:_2b;_2f=(_2d&&_2b.type)?_2b.type:["text"];n=(_2c=="avatar"?_c._createSpan:c)(String(_2e));}if(!n.id){n.id=_c.getUniqueId();}return {node:n,data:_2e,type:_2f};};};return _d;});
