function zwDragDrop(){this.dragObj=null;this.idDrag=0;this.isDrag=false;this.offset={x:0,y:0};this.relPoint={x:0,y:0};this.dragSize={width:0,height:0};this.startRect={x:0,y:0};this.maxSize={width:600,height:400};this.cancel=false;this.noDummy=false;this.endDragAnim=true;this.dummyDrg=null;this.dummyDrp=null;this.dropTarget=null;this.dropBefore=null;this.pageOffset=null;this.dropTargets;this.dropIsLast=false;this.forceChange=false;this.parentId="";this.dropZone="";this.lock="";this.transparency=7;this.targetClass="";this.dropMode=0;this.minMoveDrag=10;this.maxX=undefined;this.maxY=undefined;this.minX=undefined;this.minY=undefined;this.desX=0;this.desY=0;this.scrollTimer=false;this.scrollDir=0;this.scrollEvent=false;this.cancelTimer=false;this.dropCallBack=null;this.endCallBack=null;this.draggingCallback=null;this.mouseMove=null;this.mouseUp=null;this.keyDown=null}zwDragDrop.prototype={startDrag:function(l,g,j){var h,b,k,a=0,m=0;j=(j?j:window.event);this.dragObj=l;this.iId=g;this.isDrag=true;this.cancel=false;this.unsetTarget();this.dummyDrg=null;this.dummyDrp=null;this.dropTarget=null;this.dropBefore=null;this.pageOffset=null;this.dropIsLast=false;this.forceChange=false;this.dropTargets=new Array();h=document.getElementById(this.dropZone);if(!h){h=document.body}zw.stopEventPropagation(j);this.startRect=_getObjRectangle(l);if(this.dropMode!=2){this.getDropTargets(h);if(window.event){this.relPoint.x=j.clientX;this.relPoint.y=j.clientY}else{this.relPoint.x=j.pageX;this.relPoint.y=j.pageY}this.pageOffset=zwGetScrollOffset();this.offset.x=this.relPoint.x-this.startRect.x;this.offset.y=this.relPoint.y-this.startRect.y}else{h=document.getElementById(this.parentId);k=(j.srcElement?j.srcElement:j.target);while(k&&k!=h){value=parseInt(k.style.top);m+=(isNaN(value)?0:value);value=parseInt(k.style.left);a+=(isNaN(value)?0:value);k=k.parentNode}if(window.event){if(this.lock==""||this.lock=="H"){l.style.left=(j.offsetX+this.desX+a)+"px"}if(this.lock==""||this.lock=="V"){l.style.top=(j.offsetY+this.desY+m)+"px"}}else{if(this.lock==""||this.lock=="H"){l.style.left=(j.layerX+this.desX+a)+"px"}if(this.lock==""||this.lock=="V"){l.style.top=(j.layerY+this.desY+m)+"px"}}this.relPoint.x=parseInt(l.style.left)+this.desX;this.relPoint.y=parseInt(l.style.top)+this.desY;this.offset.x=j.screenX;this.offset.y=j.screenY;if(this.draggingCallback){this.draggingCallback.call(this)}}b=this;this.mouseMove=function(d){b.setDummyLocation(d)};this.mouseUp=function(d){b.endDrag(d)};this.keyDown=function(d){b.keyDownHandler(d)};zw.addEventHandler(document.body,"onmousemove",this.mouseMove);zw.addEventHandler(document.body,"onmouseup",this.mouseUp);zw.addEventHandler(document.body,"onkeydown",this.keyDown)},getDropTargets:function(p){var i,o,t,s,e;if(this.targetClass!=""){for(i=0;i<p.childNodes.length;i++){o=p.childNodes[i];eval("e=/\\b"+this.targetClass+"/;");if(o.className&&e.test(o.className)){t={o:false,r:false};t.o=o;t.r=_getObjRectangle(o);this.dropTargets.push(t)}else{this.getDropTargets(o)}}}},getDropTargetFromPoint:function(m,k){var p=null;var g,b,e,a;var d=false;var j,n;f=zwGetScrollOffset();m+=f.x;k+=f.y;for(g=0;g<this.dropTargets.length;g++){b=this.dropTargets[g].o;e=this.dropTargets[g].r;switch(this.dropMode){case 0:if(m>=e.left&&k>=e.top&&m<=e.right&&k<=e.bottom){p=b}break;case 1:a=_getObjRectangle(this.dummyDrg);j=a.bottom;n=a.right;m=a.x;k=a.y;if(m>=e.left&&m<=e.right){if((k>=e.top&&k<=e.bottom)){p=b;if(k>e.top+(e.height/2)){if(g<this.dropTargets.length-2){p=this.dropTargets[g+1].o;if(p.parentNode!=b.parentNode){d=true;p=b}}else{d=true}}}else{if(k<e.top&&(k+j)>(e.top+e.height)){if(g<this.dropTargets.length-1){p=this.dropTargets[g+1].o;if(p.parentNode!=b.parentNode){d=true;p=b}}else{d=true;p=b}}}}break}if(p){break}}if(d!=this.dropIsLast){this.dropIsLast=d;this.forceChange=true}return p},removeDropDummy:function(){if(this.dummyDrp&&this.dummyDrp.parentNode){this.dummyDrp.parentNode.removeChild(this.dummyDrp)}},setParentId:function(b){var a=document.getElementById(b);this.parentId=b;if(a){zw.addEventHandler(a,"ondragstart",this.stopPropagation);zw.addEventHandler(a,"onmousedown",this.stopPropagation);zw.addEventHandler(a,"onselectstart",this.stopPropagation)}},stopPropagation:function(a){return zw.stopEventPropagation(a)},setTarget:function(b){if(b!=this.dropTarget||this.forceChange){this.forceChange=false;this.unsetTarget();switch(this.dropMode){case 0:this.dropTarget=b;if(this.dropTarget.className!="cmsdrop"){this.targetClass=this.dropTarget.className}this.dropTarget.className="cmsdrop";break;case 1:this.removeDropDummy();this.dropTarget=b;var a=_getObjRectangle(this.dropTarget);this.dummyDrg.style.width=(a.width>0?a.width:this.startRect.width);this.dropBefore=this.dropTarget;if(this.dropIsLast){this.dropBefore=null}this.dropTarget.parentNode.insertBefore(this.dummyDrp,this.dropBefore);break;case 2:break}}},unsetTarget:function(){if(this.dropTarget){switch(this.dropMode){case 0:this.dropTarget.className=this.targetClass;this.dropTarget=null;break;case 1:this.dummyDrg.style.width=(this.startRect.width>this.maxSize.width?this.maxSize.width:this.startRect.width);break}}},startScrollWnd:function(){if(this.scrollTimer==false){var a=this;this.scrollTimer=setInterval(function(){a.doScrollWnd()},10)}},stopScrollWnd:function(){if(this.scrollTimer!=false){clearInterval(this.scrollTimer);this.scrollTimer=false}},doScrollWnd:function(){f=zwGetScrollOffset();switch(this.scrollDir){case 1:document.body.scrollTop-=5;break;case 2:document.body.scrollLeft+=5;break;case 3:document.body.scrollTop+=5;break;case 4:document.body.scrollLeft-=5;break}zw.objFireEvent(document.body,"onmousemove")},startScrollEndDrag:function(){if(this.cancelTimer==false){var a=this;this.cancelTimer=setInterval(function(){a.doScrollEndDrag()},30)}},stopScrollEndDrag:function(){if(this.cancelTimer!=false){clearInterval(this.cancelTimer);this.cancelTimer=false}if(this.dummyDrg){this.dummyDrg.parentNode.removeChild(this.dummyDrg);this.dummyDrg=null}},doScrollEndDrag:function(){var a,l,b,i,g,e=50,j,k;if(this.dummyDrg){g=_getObjRectangle(this.dummyDrg);j=this.startRect;a=(j.x-g.left)/2;l=(j.y-g.top)/2;b=(j.width-g.width)/2;i=(j.height-g.height)/2;if(a>e){a=e}if(a<-e){a=-e}if(l>e){l=e}if(l<-e){l=-e}if(b>e){b=e}if(b<-e){b=-e}if(i>e){i=e}if(i<-e){i=-e}if(Math.abs(a)<1&&Math.abs(l)<1){this.stopScrollEndDrag()}else{k=this.dummyDrg;k.style.left=(g.left+a)+"px";k.style.top=(g.top+l)+"px";k.style.width=(g.width+b)+"px";k.style.height=(g.height+i)+"px";t=this}}else{this.stopScrollEndDrag()}},setDummyLocation:function(l){var B,g,d,q,n,i,u,j,a,A,m=false,k=false,z=null;B=this;l=(l?l:window.event);if(B.dummyDrg){if(B.dropMode==2){q=parseInt(B.dummyDrg.style.left);n=parseInt(B.dummyDrg.style.top);if(B.lock==""||B.lock=="H"){q=B.relPoint.x+(l.screenX-B.offset.x)-B.desX}if(B.lock==""||B.lock=="V"){n=B.relPoint.y+(l.screenY-B.offset.y)-B.desY}if(B.maxY!=undefined&&n>B.maxY+B.desY-1){n=B.maxY+B.desY-1}if(B.minY!=undefined&&n<B.minY+B.desY){n=B.minY+B.desY}if(B.maxX!=undefined&&q>B.maxX+B.desX-1){q=B.maxX+B.desX-1}if(B.minX!=undefined&&q<B.minX+B.desX){q=B.minX+B.desX}B.dummyDrg.style.left=q+"px";B.dummyDrg.style.top=n+"px"}else{j=zwGetScrollOffset();if(window.event){if(B.lock==""||B.lock=="H"){B.dummyDrg.style.left=(l.clientX-B.offset.x+(B.dropMode!=2?(j.x-B.pageOffset.x):0))+"px"}if(B.lock==""||B.lock=="V"){B.dummyDrg.style.top=(l.clientY-B.offset.y+(B.dropMode!=2?(j.y-B.pageOffset.y):0))+"px"}}else{if(B.lock==""||B.lock=="H"){B.dummyDrg.style.left=(l.pageX-B.offset.x)+"px"}if(B.lock==""||B.lock=="V"){B.dummyDrg.style.top=(l.pageY-B.offset.y)+"px"}}z=B.getDropTargetFromPoint(l.clientX,l.clientY);if(z){B.setTarget(z)}else{B.unsetTarget()}if(window.event){if(!k&&l.clientY<=30&&j.y>0){k=true;B.scrollDir=1}if(!k&&l.clientX<=30&&j.x>0){k=true;B.scrollDir=4}if(!k&&l.clientY+B.dragSize.height>=document.body.clientHeight&&l.clientY+15<document.body.scrollHeight){k=true;B.scrollDir=3}if(!k&&l.clientX+B.dragSize.width>=document.body.clientWidth&&l.clientX+15<document.body.scrollWidth){k=true;B.scrollDir=2}}else{n=l.pageY-j.y;q=l.pageX-j.x;if(!k&&n<=30&&j.y>0){k=true;B.scrollDir=1}if(!k&&q<=30&&j.x>0){k=true;B.scrollDir=4}if(!k&&n+B.dragSize.height>=window.innerHeight){k=true;B.scrollDir=3}if(!k&&q+B.dragSize.height>=window.innerWidth){k=true;B.scrollDir=2}}if(k){B.scrollEvent=l;B.startScrollWnd()}else{B.stopScrollWnd()}}if(B.draggingCallback){B.draggingCallback.call(B)}}else{if(B.dragObj){if(window.event){q=l.clientX-B.relPoint.x;n=l.clientY-B.relPoint.y}else{q=l.pageX-B.relPoint.x;n=l.pageY-B.relPoint.y}if(B.dropMode==2||((B.lock==""||B.lock=="H")&&Math.abs(q)>B.minMoveDrag)||((B.lock==""||B.lock=="V")&&Math.abs(n)>B.minMoveDrag)){if(B.dropMode==2){B.dummyDrg=B.dragObj}else{m=true;g=B.dragObj.cloneNode(true);a=_getObjRectangle(B.dragObj);B.dragSize.width=(a.width>B.maxSize.width?B.maxSize.width:a.width)+"px";B.dragSize.height=(a.height>B.maxSize.height?B.maxSize.height:a.height)+"px";g.style.width=a.width+"px";g.style.height=a.height+"px";B.dummyDrg=document.createElement("DIV");A=B.dummyDrg.style;A.width=parseInt(B.dragSize.width)+"px";A.height=parseInt(B.dragSize.height)+"px";A.left=a.left+"px";A.top=a.top+"px";A.zIndex=2000;A.backgroundColor="#FFFFFF";A.position="absolute";A.overflow="hidden";if(window.event){A.filter="progid:DXImageTransform.Microsoft.Alpha( Style=0, Opacity="+B.transparency+"0);"}else{A.opacity="."+B.transparency}B.dummyDrg.appendChild(g)}if(B.dropMode==1){B.dummyDrp=document.createElement("DIV");B.dummyDrp.style.height=a.height+"px";B.dummyDrp.className="cmsdropdummy";B.dummyDrp.style.margin=B.dragObj.style.margin;B.dragObj.style.display="none";if(B.noDummy){B.dummyDrp.style.display="none"}}B.setDummyLocation(l);oParent=document.getElementById(B.parentId);oParent.appendChild(B.dummyDrg);if(B.dropMode==1){B.setTarget(B.dragObj)}if(m){a=_getObjectSize(g);i=parseInt(g.style.height);g.style.height=(i-(a.height-i))+"px";u=parseInt(g.style.width);g.style.width=(u-(a.width-u))+"px"}}}}},endDrag:function(b){var a=this;if(a.isDrag){b=(b?b:window.event);a.idDrag=0;a.isDrag=false;a.stopScrollWnd();zw.removeEventHandler(document.body,"onmousemove",a.mouseMove);zw.removeEventHandler(document.body,"onmouseup",a.mouseUp);zw.removeEventHandler(document.body,"onkeydown",a.keyDown);if(a.dummyDrg&&a.dropMode!=2){if(a.dropTarget&&a.dropTarget!=a.dragObj&&!a.cancel){a.startRect=_getObjRectangle((a.dropMode==1?a.dummyDrp:a.dropTarget))}if(a.endDragAnim){a.startScrollEndDrag()}else{a.stopScrollEndDrag()}}if(a.dropCallBack&&a.dropTarget&&a.dropTarget!=a.dragObj&&!a.cancel){a.dropCallBack.call(a)}if(a.endCallBack){a.endCallBack.call(a)}switch(a.dropMode){case 0:break;case 1:a.dragObj.style.display="block";a.removeDropDummy();break;case 2:break}a.dummyDrp=null;a.dragObj=null;a.unsetTarget();a.dropTarget=null}},keyDownHandler:function(b){var a=this;b=(b?b:window.event);if(b.keyCode==27&&a.isDrag){a.unsetTarget();a.cancel=true;a.endDrag(b)}}};function _zwGetMousePosition(){var a,b;a=function(){b=_zwMousePositionFromEvent(arguments[0])};zw.addEventHandler(document,"onmousemove",a);zw.objFireEvent(document,"onmousemove");zw.removeEventHandler(document,"onmousemove",a);return b}function _zwMousePositionFromEvent(d){var h,a,g={x:0,y:0};d=d||window.event;if(d.pageX||d.pageY){g.x=d.pageX;g.y=d.pageY}else{h=document.documentElement;a=document.body;g.x=d.clientX+(h.scrollLeft||a.scrollLeft)-(h.clientLeft||0);g.y=d.clientY+(h.scrollTop||a.scrollTop)-(h.clientTop||0)}return g}function _zwDragRemoveFlash(d){var h,a,g;for(a=0;a<d.childNodes.length;a++){h=d.childNodes[a];if(h.tagName=="OBJECT"){g=document.createElement("DIV");try{g.style.height=h.height}catch(b){}try{g.style.width=h.width}catch(b){}g.className="flashdummy";g.innerHTML="&nbsp;";d.replaceChild(g,h)}else{_zwDragRemoveFlash(h)}}}function _getObjectPagePos(d){var b={x:0,y:0,s:""};var a;if(d){do{b.y+=d.offsetTop||0;b.x+=d.offsetLeft||0;d=d.offsetParent;if(d){if(d.tagName=="BODY"){break}a=d.style.position;if(a=="relative"||a=="absolute"){break}}}while(d)}return b}function _getObjectSize(b){var a={width:0,height:0};if(b){a.width=b.offsetWidth;a.height=b.offsetHeight}return a}function _getEventOffsets(h){var b=h.target;if(window.event){var g={offsetX:h.offsetX,offsetY:h.offsetY}}else{if(b.nodeType!=b.ELEMENT_NODE){b=b.parentNode}var a=_getObjectPagePos(b);var d={x:window.pageXOffset+h.clientX,y:window.pageYOffset+h.clientY};var g={offsetX:d.x-a.x,offsetY:d.y-a.y}}return g}function _getObjRectangle(e){var d,a;s=_getObjectSize(e);c=_getObjectPagePos(e);d=c.x+s.width;a=c.y+s.height;return{x:c.x,y:c.y,top:c.y,left:c.x,width:s.width,height:s.height,right:d,bottom:a}}function zwGetScrollSize(d){var a,b;if(d==null){d=window.document.body}a=d.scrollWidth;b=d.scrollHeight;return{w:a,h:b}}function zwGetScrollOffset(b){var a,d;if(b==null){b=window.document.body}if(b.pageYOffset!=undefined){a=b.pageXOffset;d=b.pageYOffset}else{a=b.scrollLeft;d=b.scrollTop}return{x:a,y:d}}function zwGetViewportSize(d){var a,b;if(d==null){d=window}if(typeof d.innerWidth!="undefined"){a=d.innerWidth;b=d.innerHeight}else{if(typeof d.document.documentElement!="undefined"&&typeof document.documentElement.clientWidth!="undefined"&&document.documentElement.clientWidth!=0){a=d.document.documentElement.clientWidth;b=d.document.documentElement.clientHeight}else{a=d.document.getElementsByTagName("body")[0].clientWidth;b=d.document.getElementsByTagName("body")[0].clientHeight}}return{w:a,h:b}};
