margen=0;

var isdrag=false;
var isdragH=true;
var isdragV=true;
var x,y,tx,ty;
var dobj = null;
var n=0;

function movex(e){dobj.style.left = (IE ? tx + event.clientX - x : tx + e.clientX - x)+"px";}
function movey(e){dobj.style.top  = (IE ? ty + event.clientY - y : ty + e.clientY - y)+"px";}
function movemouse(e){
  xclient = IE ? event.clientX : e.clientX;
  yclient = IE ? event.clientY : e.clientY;
  if (isdrag){
  	if (isdragH){
		if ((xclient-distxL) <= minx){
			dobj.style.left=(minx)+"px";
			cursorAuxX=minx+distxL;
			isdragH=false;
			bordex='L';
		}
		else if ((xclient+distxR) >= maxx){
			dobj.style.left=(maxx-dobj.offsetWidth)+"px";
			cursorAuxX=maxx-distxR;
			isdragH=false;
			bordex='R';
		}
		else movex(e);	
	}
	else{
		if (bordex=='R'){
			if ((xclient-cursorAuxX)<0){
				movex(e);
				isdragH=true;		
			}
		}
		if (bordex=='L'){
			if ((xclient-cursorAuxX)>0){
				movex(e);
				isdragH=true;		
			}
		}
	}
  	if (isdragV){
		if ((yclient-distyT) <= miny){
			dobj.style.top=(miny)+"px";
			cursorAuxY=miny+distyT;
			isdragY=false;
			bordey='T';
		}
		else if ((yclient+distyB) >= maxy){
			dobj.style.top=(maxy-dobj.offsetHeight)+"px";
			cursorAuxY=maxy-distyB;
			isdragY=false;
			bordey='B';
		}
		else movey(e);		
	}
	else{
		if (bordey=='B'){
			if ((yclient-cursorAuxY)<0){
				movey(e);
				isdragY=true;		
			}
		}
		if (bordey=='T'){
			if ((yclient-cursorAuxY)>0){
				movey(e);
				isdragY=true;		
			}
		}
	} 
    return false;
  }
}
function selectmouse(e){
    isdrag = true;
	isdragH = true;
	isdragV = true;
    tx = parseInt(dobj.style.left+0);
    ty = parseInt(dobj.style.top+0);
    x = IE ? event.clientX : e.clientX;
    y = IE ? event.clientY : e.clientY;
	distxL=(x-tx); //Distancia desde el ratón al borde izquierdo del div
	distyT=(y-ty); //Distancia desde el ratón al borde superior del div
	distxR=dobj.offsetWidth-distxL; //Distancia desde el ratón al borde derecho del div
	distyB=dobj.offsetHeight-distyT; //Distancia desde el ratón al borde inferior del div
	maxx=document.documentElement.clientWidth+document.documentElement.scrollLeft-margen;
	maxy=document.documentElement.clientHeight+document.documentElement.scrollTop-margen;
	minx=margen+document.documentElement.scrollLeft;
	miny=margen+document.documentElement.scrollTop;
    document.onmousemove=movemouse;
	document.onmousedown=disableselect;
    return false;
}
window.onresize=function(){
	if (dobj != null){
		if ((dobj.offsetLeft+dobj.offsetWidth) > (document.documentElement.clientWidth+document.documentElement.scrollLeft-margen)){
			dobj.style.left=(document.documentElement.clientWidth+document.documentElement.scrollLeft-dobj.offsetWidth)+"px";
		}
		if (dobj.offsetLeft < (margen+document.documentElement.scrollLeft)){
			dobj.style.left=margen+document.documentElement.scrollLeft+"px";
		}
		if ((dobj.offsetTop+dobj.offsetHeight) >= (document.documentElement.clientHeight+document.documentElement.scrollTop-margen)){
			dobj.style.top=(document.documentElement.clientHeight+document.documentElement.scrollTop-dobj.offsetHeight)+"px";
		}
		if (dobj.offsetTop < (margen+document.documentElement.scrollTop)){
			dobj.style.top=margen+document.documentElement.scrollTop+"px";
		}
	}
}	
function hideDrag(){
	dobj.style.display = "none";
	clearTimeout(progresive);
	dobj = null;
}
function showDrag(id){
	if (dobj == null){
		dobj=document.getElementById(id);
		if (dobj.style.display == "none"){
			dobj.style.display = "block";
			dobj.style.top = (((document.documentElement.clientHeight/2)+document.documentElement.scrollTop)-(dobj.offsetHeight/2))+"px";
			dobj.style.left = (((document.documentElement.clientWidth/2)+document.documentElement.scrollLeft)-(dobj.offsetWidth/2))+"px";
			n=0;
			if(IE){dobj.filters.alpha.opacity = 0;}
			else{dobj.style.opacity = 0;}
			fadeInDrag();
		}
	}
}

document.onmouseup=stopDrag;

function stopDrag(){
	isdrag=false;
	reEnable();
}

function disableselect(e){return false}

function reEnable(){document.onmousedown=null;}

function fadeInDrag(){
    if (n < 100) {	
		if(IE)dobj.filters.alpha.opacity = n		
		else dobj.style.opacity = n/100;
        n += 10;
        progresive=setTimeout("fadeInDrag()", 20);
    }
	else clearTimeout(progresive);
}
