var $=function(id){return document.getElementById(id)}; 
Array.prototype.extend=function(C){for(var B=0,A=C.length;B<A;B++){this.push(C[B]);}return this;} 
function divDrag(){ 
var A,B,$cn; 
var zIndex=1001; 
this.dragStart=function(e){ 
e=e||window.event; 
if((e.which && (e.which!=1))||(e.button && (e.button!=1)))return; 
var pos=this.$pos; 
$cn=this.parent||this; 
if(document.defaultView){ 
_top=document.defaultView.getComputedStyle($cn,null).getPropertyValue("top"); 
_left=document.defaultView.getComputedStyle($cn,null).getPropertyValue("left");} 
else{ 
if($cn.currentStyle){_top=$cn.currentStyle["top"];_left=$cn.currentStyle["left"];}} 
pos.ox=(e.pageX||(e.clientX+document.documentElement.scrollLeft))-parseInt(_left); 
pos.oy=(e.pageY||(e.clientY+document.documentElement.scrollTop))-parseInt(_top); 
if(!!A){ 
if(document.removeEventListener){ 
document.removeEventListener("mousemove",A,false); 
document.removeEventListener("mouseup",B,false);} 
else{ 
document.detachEvent("onmousemove",A); 
document.detachEvent("onmouseup",B);}} 
A=this.dragMove.create(this); 
B=this.dragEnd.create(this); 
if(document.addEventListener){ 
document.addEventListener("mousemove",A,false); 
document.addEventListener("mouseup",B,false);} 
else{ 
document.attachEvent("onmousemove",A); 
document.attachEvent("onmouseup",B);} 
$cn.style.zIndex=(++zIndex); 
this.stop(e); 
} 
this.dragMove=function(e){ 
e=e||window.event; 
var pos=this.$pos; 
$cn=this.parent||this; 
$cn.style.top=(e.pageY||(e.clientY+document.documentElement.scrollTop))-parseInt(pos.oy)+'px'; 
$cn.style.left=(e.pageX||(e.clientX+document.documentElement.scrollLeft))-parseInt(pos.ox)+'px'; 
this.stop(e);} 
this.dragEnd=function(e){ 
var pos=this.$pos; 
e=e||window.event; 
if((e.which && (e.which!=1))||(e.button && (e.button!=1)))return; 
$cn=this.parent||this; 
if(!!(this.parent)){this.style.backgroundColor=pos.color} 
if(document.removeEventListener){ 
document.removeEventListener("mousemove",A,false); 
document.removeEventListener("mouseup",B,false);} 
else{ 
document.detachEvent("onmousemove",A); 
document.detachEvent("onmouseup",B);} 
A=null; 
B=null; 
$cn.style.zIndex=(++zIndex); 
this.stop(e); 
} 
this.shiftColor=function(){ 
this.style.backgroundColor="#EEEEEE"; 
} 
this.position=function (e){ 
var t=e.offsetTop; 
var l=e.offsetLeft; 
while(e=e.offsetParent){ 
t+=e.offsetTop; 
l+=e.offsetLeft;} 
return {x:l,y:t,ox:0,oy:0,color:null} 
} 
this.stop=function(e){ 
if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble=true;} 
if(e.preventDefault){e.preventDefault();}else{e.returnValue=false;} 
} 
this.stop1=function(e){ 
e=e||window.event; 
if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble=true;} 
} 
this.create=function(bind){ 
var B=this; 
var A=bind; 
return function(e){return B.apply(A,[e]);} 
} 
this.dragStart.create=this.create; 
this.dragMove.create=this.create; 
this.dragEnd.create=this.create; 
this.shiftColor.create=this.create; 
this.initialize=function(){ 
for(var A=0,B=arguments.length;A<B;A++){ 
C=arguments[A]; 
if(!(C.push)){C=[C];} 
$C=(typeof(C[0])=='object')?C[0]:(typeof(C[0])=='string'?$(C[0]):null); 
if(!$C)continue; 
$C.$pos=this.position($C); 
$C.dragMove=this.dragMove; 
$C.dragEnd=this.dragEnd; 
$C.stop=this.stop; 
if(!!C[1]){$C.parent=C[1];$C.$pos.color=$C.style.backgroundColor;} 
if($C.addEventListener){ 
$C.addEventListener("mousedown",this.dragStart.create($C),false); 
if(!!C[1]){$C.addEventListener("mousedown",this.shiftColor.create($C),false);}} 
else{$C.attachEvent("onmousedown",this.dragStart.create($C)); 
if(!!C[1]){$C.attachEvent("onmousedown",this.shiftColor.create($C));}} 
} 
} 
this.initialize.apply(this,arguments); 
} 