var Drag={obj:null,init:function(s,o,q,u,r,v,l,n,p,m,t){s.onmousedown=Drag.start;s.hmode=n?false:true;s.vmode=p?false:true;s.root=o&&o!=null?o:s;if(s.hmode&&isNaN(parseInt(s.root.style.left))){s.root.style.left="0px"}if(s.vmode&&isNaN(parseInt(s.root.style.top))){s.root.style.top="0px"}if(!s.hmode&&isNaN(parseInt(s.root.style.right))){s.root.style.right="0px"}if(!s.vmode&&isNaN(parseInt(s.root.style.bottom))){s.root.style.bottom="0px"}s.minX=typeof q!="undefined"?q:null;s.minY=typeof r!="undefined"?r:null;s.maxX=typeof u!="undefined"?u:null;s.maxY=typeof v!="undefined"?v:null;s.xMapper=m?m:null;s.yMapper=t?t:null;s.root.onDragStart=new Function();s.root.onDragEnd=new Function();s.root.onDrag=new Function();if(l!=null){s.root.onOverBounds=function(){var a=Drag.obj.root.style.left;var b=Drag.obj.root.style.top;a=parseInt(a.substr(0,a.indexOf("px",0)));b=parseInt(b.substr(0,b.indexOf("px",0)));l(a,b)}}else{s.root.onOverBounds=null}},start:function(e){var h=Drag.obj=this;e=Drag.fixE(e);var g=parseInt(h.vmode?h.root.style.top:h.root.style.bottom);var f=parseInt(h.hmode?h.root.style.left:h.root.style.right);h.root.onDragStart(f,g);h.lastMouseX=e.clientX;h.lastMouseY=e.clientY;if(h.hmode){if(h.minX!=null){h.minMouseX=e.clientX-f+h.minX}if(h.maxX!=null){h.maxMouseX=h.minMouseX+h.maxX-h.minX}}else{if(h.minX!=null){h.maxMouseX=-h.minX+e.clientX+f}if(h.maxX!=null){h.minMouseX=-h.maxX+e.clientX+f}}if(h.vmode){if(h.minY!=null){h.minMouseY=e.clientY-g+h.minY}if(h.maxY!=null){h.maxMouseY=h.minMouseY+h.maxY-h.minY}}else{if(h.minY!=null){h.maxMouseY=-h.minY+e.clientY+g}if(h.maxY!=null){h.minMouseY=-h.maxY+e.clientY+g}}document.onmousemove=Drag.drag;document.onmouseup=Drag.end;return false},drag:function(n){n=Drag.fixE(n);var m=Drag.obj;var p=n.clientY;var o=n.clientX;var k=parseInt(m.vmode?m.root.style.top:m.root.style.bottom);var e=parseInt(m.hmode?m.root.style.left:m.root.style.right);var j,l;if(m.minX!=null&&m.onOverBounds!=null){o=m.hmode?Math.max(o,m.minMouseX):Math.min(o,m.maxMouseX)}if(m.maxX!=null&&m.onOverBounds!=null){o=m.hmode?Math.min(o,m.maxMouseX):Math.max(o,m.minMouseX)}if(m.minY!=null&&m.onOverBounds!=null){p=m.vmode?Math.max(p,m.minMouseY):Math.min(p,m.maxMouseY)}if(m.maxY!=null&&m.onOverBounds!=null){p=m.vmode?Math.min(p,m.maxMouseY):Math.max(p,m.minMouseY)}j=e+((o-m.lastMouseX)*(m.hmode?1:-1));l=k+((p-m.lastMouseY)*(m.vmode?1:-1));if(m.xMapper){j=m.xMapper(k)}else{if(m.yMapper){l=m.yMapper(e)}}Drag.obj.root.style[m.hmode?"left":"right"]=j+"px";Drag.obj.root.style[m.vmode?"top":"bottom"]=l+"px";Drag.obj.lastMouseX=o;Drag.obj.lastMouseY=p;Drag.obj.root.onDrag(j,l);return false},end:function(){document.onmousemove=null;document.onmouseup=null;var c=Drag.obj.root.style.left;var d=Drag.obj.root.style.top;c=parseInt(c.substr(0,c.indexOf("px",0)));d=parseInt(d.substr(0,d.indexOf("px",0)));if((c<0||c>Drag.obj.maxX||d<0||d>Drag.obj.maxY)&&(Drag.obj.root.onOverBounds!=null&&Drag.obj.root.onOverBounds!="undefined")){Drag.obj.root.onOverBounds()}Drag.obj.root.onDragEnd(parseInt(Drag.obj.root.style[Drag.obj.hmode?"left":"right"]),parseInt(Drag.obj.root.style[Drag.obj.vmode?"top":"bottom"]));Drag.obj=null},fixE:function(b){if(typeof b=="undefined"){b=window.event}if(typeof b.layerX=="undefined"){b.layerX=b.offsetX}if(typeof b.layerY=="undefined"){b.layerY=b.offsetY}return b}};