var selectDiv=null;var tempDiv=null;var objDiv;function initDndMgr(){dndMgr.clearDropZones();dndMgr.clearDraggables();var containerDiv=objDiv;for(var i=0;i<containerDiv.childNodes.length;i++){if(containerDiv.childNodes[i].tagName=='DIV'){var temp=containerDiv.childNodes[i];dndMgr.registerDropZone(new Rico.Dropzone(temp.id));initDraggable(temp)}}};function initDraggable(obj){for(var i=0;i<obj.childNodes.length;i++){if(obj.childNodes[i].tagName=='DIV'){var temp1=obj.childNodes[i];dndMgr.registerDraggable(new Rico.Draggable('test-rico-dnd',temp1.id))}}};var Rico={};Rico.DragAndDrop=Class.create();Rico.DragAndDrop.prototype={initialize:function(){this.dropZones=new Array();this.draggables=new Array();this.currentDragObjects=new Array();this.dragElement=null;this.lastSelectedDraggable=null;this.currentDragObjectVisible=false;this.interestedInMotionEvents=false},registerDropZone:function(aDropZone){this.dropZones[this.dropZones.length]=aDropZone},deregisterDropZone:function(aDropZone){var newDropZones=new Array();var j=0;for(var i=0;i<this.dropZones.length;i++){if(this.dropZones[i]!=aDropZone)newDropZones[j++]=this.dropZones[i]}this.dropZones=newDropZones},clearDropZones:function(){this.dropZones=new Array()},clearDraggables:function(){this.draggables=new Array()},registerDraggable:function(aDraggable){this.draggables[this.draggables.length]=aDraggable;this._addMouseDownHandler(aDraggable)},deregisterregisterDraggable:function(aDraggable){var ds=new Array();var j=0;for(var i=0;i<this.draggables.length;i++){if(this.draggables[i]!=aDraggable)ds[j++]=this.draggables[i]}this.draggables=ds},clearSelection:function(){for(var i=0;i<this.currentDragObjects.length;i++)this.currentDragObjects[i].deselect();this.currentDragObjects=new Array();this.lastSelectedDraggable=null},hasSelection:function(){return this.currentDragObjects.length>0},setStartDragFromElement:function(e,mouseDownElement){this.interestedInMotionEvents=this.hasSelection();this._terminateEvent(e)},updateSelection:function(draggable,extendSelection){if(!extendSelection)this.clearSelection();if(draggable.isSelected()){this.currentDragObjects.removeItem(draggable);draggable.deselect();if(draggable==this.lastSelectedDraggable)this.lastSelectedDraggable=null}else{this.currentDragObjects[this.currentDragObjects.length]=draggable;draggable.select();this.lastSelectedDraggable=draggable}},_mouseDownHandler:function(e){if(arguments.length==0)e=event;var nsEvent=e.which!=undefined;if((nsEvent&&e.which!=1)||(!nsEvent&&e.button!=1))return;var eventTarget=e.target?e.target:e.srcElement;if(eventTarget.tagName!='H3'&&eventTarget.tagName!='h3'){if(eventTarget.parentNode.tagName=='H3'||eventTarget.parentNode.tagName=='h3'){eventTarget=eventTarget.parentNode}else{return}}var draggableObject=eventTarget.parentNode.draggable;this.updateSelection(draggableObject,e.ctrlKey);if(this.hasSelection())for(var i=0;i<this.dropZones.length;i++)this.dropZones[i].clearPositionCache();this.setStartDragFromElement(e,draggableObject.getMouseDownHTMLElement())},_mouseMoveHandler:function(e){var nsEvent=e.which!=undefined;if(!this.interestedInMotionEvents){this._terminateEvent(e);return}if(!this.hasSelection())return;if(!this.currentDragObjectVisible)this._startDrag(e);if(!this.activatedDropZones)this._activateRegisteredDropZones();this._updateDraggableLocation(e);if(tempDiv.style.display=='none'){tempDiv.style.display='none'}if(this._updateDraggableHover(e)==false){if(this._updateDropZonesHover(e)==false){this._terminateEvent(e)}this._terminateEvent(e)}},_makeDraggableObjectVisible:function(e){if(!this.hasSelection())return;var dragElement;if(this.currentDragObjects.length>1)dragElement=this.currentDragObjects[0].getMultiObjectDragGUI(this.currentDragObjects);else dragElement=this.currentDragObjects[0].getSingleObjectDragGUI();if(RicoUtil.getElementsComputedStyle(dragElement,"position")!="absolute")dragElement.style.position="absolute";if(dragElement.parentNode==null||dragElement.parentNode.nodeType==11)document.body.appendChild(dragElement);this.dragElement=dragElement;this._updateDraggableLocation(e);this.currentDragObjectVisible=true},_updateDraggableLocation:function(e){if(selectDiv!=null){selectDiv.style.left=event.clientX+RicoUtil.docScrollLeft()-80+"px";selectDiv.style.top=event.clientY+RicoUtil.docScrollTop()-20+"px"}},_updateDraggableHover:function(e){var n=this.draggables.length;var n1=this.dropZones.length;var flag=false;for(var i=0;i<n;i++){this.draggables[i].hideHover()}for(var i=0;i<n1;i++){this.dropZones[i].hideHover()}for(var i=0;i<n;i++){var temp=this._mousePointInDraggable(e,this.draggables[i]);if(temp>0){this.draggables[i].showHover(temp);flag=true;break}}return flag},_startDrag:function(e){for(var i=0;i<this.currentDragObjects.length;i++)this.currentDragObjects[i].startDrag();this._makeDraggableObjectVisible(e)},_mouseUpHandler:function(e){if(!this.hasSelection())return;var nsEvent=e.which!=undefined;if((nsEvent&&e.which!=1)||(!nsEvent&&e.button!=1))return;this.interestedInMotionEvents=false;if(this.dragElement==null){this._terminateEvent(e);return}if(this._placeDraggableInDropZone(e)){this._completeDropOperation(e);if(tempDiv&&tempDiv.parentNode){tempDiv.parentNode.removeChild(tempDiv)}}else{if(tempDiv&&tempDiv.parentNode){selectDiv.style.position="";selectDiv.style.left="";selectDiv.style.top="";selectDiv.style.width="";tempDiv.parentNode.insertBefore(selectDiv,tempDiv)}this._completeDropOperation(e)}tempDiv=null;initDndMgr()},_completeDropOperation:function(e){if(this.dragElement!=this.currentDragObjects[0].getMouseDownHTMLElement()){if(this.dragElement.parentNode!=null)this.dragElement.parentNode.removeChild(this.dragElement)}this._deactivateRegisteredDropZones();this._endDrag();this.clearSelection();this.dragElement=null;this.currentDragObjectVisible=false;this._terminateEvent(e);RicoUtil.delCloneElement()},_doCancelDragProcessing:function(){this._cancelDrag();if(this.dragElement!=this.currentDragObjects[0].getMouseDownHTMLElement()){if(this.dragElement.parentNode!=null){this.dragElement.parentNode.removeChild(this.dragElement)}}this._deactivateRegisteredDropZones();this.dragElement=null;this.currentDragObjectVisible=false},_placeDraggableInDropZone:function(e){var foundDropZone=false;var n=this.dropZones.length;var l=this.draggables.length;for(var i=0;i<l;i++){var temp=this._mousePointInDraggable(e,this.draggables[i]);if(temp>0){this.dropZones[0].accept(this.draggables[i].getHTMLElement(),temp);this.draggables[i].hideHover();foundDropZone=true;break}else{for(var j=0;j<n;j++){if(this._mousePointInDropZone(e,this.dropZones[j])){this.dropZones[j].acceptByZone();this.dropZones[j].hideHover();foundDropZone=true;break}}}}return foundDropZone},_cancelDrag:function(){for(var i=0;i<this.currentDragObjects.length;i++)this.currentDragObjects[i].cancelDrag()},_endDrag:function(){for(var i=0;i<this.currentDragObjects.length;i++)this.currentDragObjects[i].endDrag()},_updateDropZonesHover:function(e){var n=this.dropZones.length;for(var i=0;i<n;i++){if(!this._mousePointInDropZone(e,this.dropZones[i]))this.dropZones[i].hideHover()}for(var i=0;i<n;i++){if(this._mousePointInDropZone(e,this.dropZones[i])){this.dropZones[i].showHover()}}},_mousePointInDropZone:function(e,dropZone){var absoluteRect=dropZone.getAbsoluteRect();var left=e.clientX+RicoUtil.docScrollLeft();var top=e.clientY+RicoUtil.docScrollTop();return left>absoluteRect.left&&left<absoluteRect.right&&top>absoluteRect.bottom},_mousePointInDraggable:function(e,draggable){var absoluteRect=draggable.getAbsoluteRect();var left=e.clientX+RicoUtil.docScrollLeft();var right=e.clientX+RicoUtil.docScrollLeft();var top=e.clientY+RicoUtil.docScrollTop();var bottom=e.clientY+RicoUtil.docScrollTop();if(left>absoluteRect.left&&right<absoluteRect.right&&top>absoluteRect.top&&bottom<absoluteRect.bottom){if(left>absoluteRect.left&&right<absoluteRect.right&&top>absoluteRect.top&&bottom<((absoluteRect.bottom-absoluteRect.top)/2+absoluteRect.top)){return 1}else{return 2}}else{return 0}},_addMouseDownHandler:function(aDraggable){var htmlElement=aDraggable.getMouseDownHTMLElement();if(htmlElement!=null){htmlElement.draggable=aDraggable;this._addMouseDownEvent(htmlElement)}},_activateRegisteredDropZones:function(){var n=this.dropZones.length;for(var i=0;i<n;i++){var dropZone=this.dropZones[i];dropZone.activate()}this.activatedDropZones=true},_deactivateRegisteredDropZones:function(){var n=this.dropZones.length;for(var i=0;i<n;i++)this.dropZones[i].deactivate();this.activatedDropZones=false},_addMouseDownEvent:function(htmlElement){if(typeof document.implementation!="undefined"&&document.implementation.hasFeature("HTML","1.0")&&document.implementation.hasFeature("Events","2.0")&&document.implementation.hasFeature("CSS","2.0")){htmlElement.addEventListener("mousedown",this._mouseDownHandler.bindAsEventListener(this),false)}else{htmlElement.attachEvent("onmousedown",this._mouseDownHandler.bindAsEventListener(this))}},_terminateEvent:function(e){if(e.stopPropagation!=undefined)e.stopPropagation();else if(e.cancelBubble!=undefined)e.cancelBubble=true;if(e.preventDefault!=undefined)e.preventDefault();else e.returnValue=false},initializeEventHandlers:function(){if(typeof document.implementation!="undefined"&&document.implementation.hasFeature("HTML","1.0")&&document.implementation.hasFeature("Events","2.0")&&document.implementation.hasFeature("CSS","2.0")){document.addEventListener("mouseup",this._mouseUpHandler.bindAsEventListener(this),false);document.addEventListener("mousemove",this._mouseMoveHandler.bindAsEventListener(this),false)}else{document.attachEvent("onmouseup",this._mouseUpHandler.bindAsEventListener(this));document.attachEvent("onmousemove",this._mouseMoveHandler.bindAsEventListener(this))}}};var dndMgr=new Rico.DragAndDrop();dndMgr.initializeEventHandlers();Rico.Draggable=Class.create();Rico.Draggable.prototype={initialize:function(type,htmlElement){this.type=type;this.htmlElement=$(htmlElement);this.selected=false;this.absoluteRect=null},getMouseDownHTMLElement:function(){return this.htmlElement},select:function(){this.selected=true;if(this.showingSelected)return;var htmlElement=this.getMouseDownHTMLElement();tempDiv=this.getMouseDownHTMLElement().cloneNode(false);htmlElement.style.width=(parseInt(htmlElement.parentNode.offsetWidth))+"px";htmlElement.style.height=(parseInt(htmlElement.clientHeight))+"px";this.showingSelected=true;selectDiv=htmlElement;RicoUtil.cloneElement=htmlElement.cloneNode(false);tempDiv.style.width=(parseInt(htmlElement.style.width)+50)+"px";tempDiv.style.height=(parseInt(htmlElement.style.height)+50)+"px";tempDiv.style.borderWidth="1px";tempDiv.style.borderStyle="solid";tempDiv.style.borderColor="#ccc";var title=htmlElement.firstChild.cloneNode(true);tempDiv.appendChild(title);tempDiv.style.filter="alpha(opacity=50)";tempDiv.style.opacity="0.5";tempDiv.style.display='none';tempDiv.id="tempDivID";htmlElement.parentNode.insertBefore(tempDiv,htmlElement);dndMgr.registerDraggable(new Rico.Draggable('test-rico-dnd',tempDiv.id));htmlElement.style.height="10px"},deselect:function(){this.selected=false;if(!this.showingSelected)return;var htmlElement=this.getMouseDownHTMLElement();htmlElement.style.width="";htmlElement.style.height="";this.showingSelected=false;selectDiv=null;tempDiv.parentNode.removeChild(tempDiv);dndMgr.deregisterregisterDraggable(new Rico.Draggable('test-rico-dnd',tempDiv.id));tempDiv=null},isSelected:function(){return this.selected},startDrag:function(){},cancelDrag:function(){},endDrag:function(){},getSingleObjectDragGUI:function(){return this.htmlElement},getMultiObjectDragGUI:function(draggables){return this.htmlElement},getDroppedGUI:function(){return this.htmlElement},getAbsoluteRect:function(){if(this.absoluteRect==null){var htmlElement=this.getHTMLElement();if(selectDiv.id==htmlElement.id){return{top:0,left:0,bottom:0,right:0}}var pos=RicoUtil.toViewportPosition(htmlElement);this.absoluteRect={top:pos.y,left:pos.x,bottom:pos.y+htmlElement.offsetHeight,right:pos.x+htmlElement.offsetWidth}}return this.absoluteRect},getHTMLElement:function(){return this.htmlElement},showHover:function(flag){var htmlElement=this.getHTMLElement();if(htmlElement==null||this.showingHover)return;this.showingHover=true;RicoUtil.setCloneElementNewStyle(RicoUtil.cloneElement);if(flag==1){htmlElement.insertAdjacentElement("BeforeBegin",RicoUtil.cloneElement)}else if(flag==2){htmlElement.insertAdjacentElement("AfterEnd",RicoUtil.cloneElement)}},hideHover:function(){var htmlElement=this.getHTMLElement();if(htmlElement==null||!this.showingHover)return;RicoUtil.cloneElement.removeNode(-1);this.showingHover=false},canAccept:function(draggableObjects){return true},toString:function(){return this.type+":"+this.htmlElement+":"}};Rico.Dropzone=Class.create();Rico.Dropzone.prototype={initialize:function(htmlElement){this.htmlElement=$(htmlElement);this.absoluteRect=null},getHTMLElement:function(){return this.htmlElement},clearPositionCache:function(){this.absoluteRect=null},activate:function(){var htmlElement=this.getHTMLElement();if(htmlElement==null||this.showingActive)return;this.showingActive=true},deactivate:function(){var htmlElement=this.getHTMLElement();if(htmlElement==null||!this.showingActive)return;this.showingActive=false},showHover:function(){var htmlElement=this.getHTMLElement();if(htmlElement==null||this.showingHover)return;this.saveBorderWidth=htmlElement.style.borderWidth;this.saveBorderStyle=htmlElement.style.borderStyle;this.saveBorderColor=htmlElement.style.borderColor;this.showingHover=true;htmlElement.style.borderBottomWidth="5px";htmlElement.style.borderBottomStyle="solid";htmlElement.style.borderBottomColor="#00F"},hideHover:function(){var htmlElement=this.getHTMLElement();if(htmlElement==null||!this.showingHover)return;htmlElement.style.borderWidth=this.saveBorderWidth;htmlElement.style.borderStyle=this.saveBorderStyle;htmlElement.style.borderColor=this.saveBorderColor;this.showingHover=false},getAbsoluteRect:function(){if(this.absoluteRect==null){var htmlElement=this.getHTMLElement();var pos=RicoUtil.toViewportPosition(htmlElement);this.absoluteRect={top:pos.y,left:pos.x,bottom:pos.y,right:pos.x}}return this.absoluteRect},accept:function(focusDiv,flag){var htmlElement=focusDiv.parentNode;if(htmlElement==null)return;var obj=$(focusDiv);selectDiv.style.position="";selectDiv.style.top="";selectDiv.style.left="";if(obj!=null){if(flag==1||focusDiv.id=='leftDivFooter'||focusDiv.id=='centerDivFooter'||focusDiv.id=='rightDivFooter'){htmlElement.insertBefore(selectDiv,obj)}else{RicoUtil.insertAfter(selectDiv,obj)}}else{htmlElement.appendChild(selectDiv)}saveAllNow();Module.setModuleStatByDiv(htmlElement)},acceptByZone:function(){var htmlElement=this.getHTMLElement();if(htmlElement==null)return;selectDiv.style.position="";selectDiv.style.top="";selectDiv.style.left="";htmlElement.insertBefore(selectDiv,$(htmlElement.id+'Footer'));saveAllNow();Module.setModuleStatByDiv(htmlElement)}};var RicoUtil={getElementsComputedStyle:function(htmlElement,cssProperty,mozillaEquivalentCSS){if(arguments.length==2)mozillaEquivalentCSS=cssProperty;var el=$(htmlElement);if(el.currentStyle)return el.currentStyle[cssProperty];else return document.defaultView.getComputedStyle(el,null).getPropertyValue(mozillaEquivalentCSS)},cloneElement:new Object(),setCloneElementNewStyle:function(element){var tmpElment=element;tmpElment.id="tmpPosDiv";tmpElment.style.width="98%";tmpElment.style.borderWidth="1px";tmpElment.style.borderStyle="dashed";tmpElment.style.borderColor="#ff7300"},delCloneElement:function(){try{RicoUtil.cloneElement.removeNode(-1)}catch(e){}},createXmlDocument:function(){if(document.implementation&&document.implementation.createDocument){var doc=document.implementation.createDocument("","",null);if(doc.readyState==null){doc.readyState=1;doc.addEventListener("load",function(){doc.readyState=4;if(typeof doc.onreadystatechange=="function")doc.onreadystatechange()},false)}return doc}if(window.ActiveXObject)return Try.these(function(){return new ActiveXObject('MSXML2.DomDocument')},function(){return new ActiveXObject('Microsoft.DomDocument')},function(){return new ActiveXObject('MSXML.DomDocument')},function(){return new ActiveXObject('MSXML3.DomDocument')})||false;return null},toViewportPosition:function(element){return this._toAbsolute(element,true)},toDocumentPosition:function(element){return this._toAbsolute(element,false)},_toAbsolute:function(element,accountForDocScroll){if(navigator.userAgent.toLowerCase().indexOf("msie")==-1)return this._toAbsoluteMozilla(element,accountForDocScroll);var x=0;var y=0;var parent=element;while(parent){var borderXOffset=0;var borderYOffset=0;if(parent!=element){var borderXOffset=parseInt(this.getElementsComputedStyle(parent,"borderLeftWidth"));var borderYOffset=parseInt(this.getElementsComputedStyle(parent,"borderTopWidth"));borderXOffset=isNaN(borderXOffset)?0:borderXOffset;borderYOffset=isNaN(borderYOffset)?0:borderYOffset}x+=parent.offsetLeft+borderXOffset;y+=parent.offsetTop+borderYOffset;parent=parent.offsetParent}if(accountForDocScroll){}return{x:x,y:y}},_toAbsoluteMozilla:function(element,accountForDocScroll){var x=0;var y=0;var parent=element;while(parent){x+=parent.offsetLeft;y+=parent.offsetTop;parent=parent.offsetParent}parent=element;if(accountForDocScroll){}return{x:x,y:y}},docScrollLeft:function(){if(window.pageXOffset){return window.pageXOffset}else if(document.documentElement&&document.documentElement.scrollLeft){return document.documentElement.scrollLeft}else if(document.body){return document.body.scrollLeft}else{return 0}},docScrollTop:function(){if(window.pageYOffset){return window.pageYOffset}else if(document.documentElement&&document.documentElement.scrollTop){return document.documentElement.scrollTop}else if(document.body){return document.body.scrollTop}else{return 0}},insertAfter:function(oNewNode,oChildNode){var parent=oChildNode.parentNode;parent.insertBefore(oNewNode,this.nextElement(parent,oChildNode))},nextElement:function(parentNode,oChildNode){var flag=-1;for(var i=0;i<parentNode.childNodes.length;i++){if(flag>-1){return parentNode.childNodes[i]}if(parentNode.childNodes[i].id==oChildNode.id){flag=i}}return null}};