var ns4 = (document.layers)? true:false;
var ie4 = (document.all)? true:false;
var ns6 = (document.getElementById && !document.all) ? true: false;
var coorX, coorY;

var listo = 0;

function mouseMove(e){ 
	if (ns4||ns6){ 
		coorX = e.pageX /*+ window.scrollX*/; 
		coorY = e.pageY /*+ window.scrollY*/; 
	} 
	if (ie4){
		coorX = event.x + document.documentElement.scrollLeft; 
		coorY = event.y + document.documentElement.scrollTop; 
	}
	return true; 
} 

function ini(){ 
	listo = 1;
	if (ie4){ document.body.onmousemove = mouseMove; }
	if (ns6){ document.addEventListener("mousemove", mouseMove, true); }
	if (ns4){ document.captureEvents(Event.MOUSEMOVE); document.mousemove = mouseMove; }
}

function mostrar(dato, despX, despY){ 
	
	if( listo == 1 ){
		if( document.getElementById(dato) ){
			div = document.getElementById(dato);
			div.style.top = coorY + despY + "px"; 
			div.style.left = coorX + despX + "px";
			
			div.style.display = "";
			
			Verificar_Posicion(div);
		}
	}
}

function ocultar(dato){
	if( listo == 1 ){
		if( document.getElementById(dato) ){
			document.getElementById(dato).style.display = "none";
		}
	}
}

function mover(dato, despX, despY){ 
	if( listo == 1 ){
		
		if( document.getElementById(dato) && typeof(coorX) != "undefined" && typeof(coorY) != "undefined" ){
			div = document.getElementById(dato);
			div.style.left = coorX + despX + "px";
			div.style.top = coorY + despY +"px";
			Verificar_Posicion(div);
		}
	}
}

function Verificar_Posicion(elemento){
	
	if( listo == 1 ){
		var ancho = elemento.offsetWidth;
		var alto = elemento.offsetHeight;
		
		var x, y;
		
		if (self.innerHeight) { // MOS
			scrollerX = window.scrollX;
			scrollerY = window.scrollY;
			x = self.innerWidth/* + scrollerX*/;
			y = self.innerHeight/* + scrollerY*/;
			
		} else if (document.documentElement && document.documentElement.clientWidth) { // IE6 Strict
			scrollerX = document.documentElement.scrollLeft;
			scrollerY = document.documentElement.scrollTop;
			x = document.documentElement.clientWidth + scrollerX;
			y = document.documentElement.clientHeight + scrollerY;
			
		} else if (document.body.clientHeight) { // IE quirks
			scrollerX = document.body.scrollLeft;
			scrollerY = document.body.scrollTop;
			x = document.body.clientWidth + scrollerX;
			y = document.body.clientHeight + scrollerY;
		}
		
		/* Si la posición derecha del div supera la dimensión x de la pantalla coloco el div desde la derecha */
		if( ( ((elemento.offsetLeft) + ancho) > x) && ((elemento.offsetLeft - scrollerX) > 0) && ((x - ancho) > scrollerX ) ){
			
			elemento.style.left = (x - ancho);
			
		/* Si la posición derecha del div supera la dimensión x de la pantalla y la posicion izquierda es menos que el area visible amplio la pantalla */
		} else if( ( ((elemento.offsetLeft) + ancho) > x) && ((elemento.offsetLeft - scrollerX) > 0) && ((x - ancho) <= scrollerX ) ){
			elemento.style.left = scrollerX;
			var diferencia_x = ancho - (x - scrollerX);
			window.resizeBy(diferencia_x, 0);
		
		/* Si la posición izquierda es menos al area visible coloco el div desde la derecha */
		}else if( (elemento.offsetLeft - scrollerX) < 0 ){ 
			elemento.style.left = scrollerX;
		}
		
		if( ((elemento.offsetTop + alto) > y) && ((elemento.offsetTop - scrollerY) > 0) && ((y - alto) > scrollerY) ){
			elemento.style.top = (y - alto);
		
		}else if( ((elemento.offsetTop + alto) > y) && ((elemento.offsetTop - scrollerY) > 0) && ((y - alto) <= scrollerY) ){
			elemento.style.top = scrollerY;
			var diferencia_y = alto - (y - scrollerY);
			window.resizeBy(0, diferencia_y);
		
		}else if( (elemento.offsetTop - scrollerY) < 0 ){ 
			elemento.style.top = scrollerY;
		}
	}
}

function mostrar_centrado(elemento){ 
	
	if( listo == 1 ){
		if( document.getElementById(elemento) ){
			div = document.getElementById(elemento);
			div.style.display = "";
			var ancho = div.offsetWidth;
			var alto = div.offsetHeight;
			div.style.display = "none";
			
			var x, y;
		
			if (self.innerHeight) { // MOS
				scrollerX = window.scrollX;
				scrollerY = window.scrollY;
				x = self.innerWidth;
				y = self.innerHeight;
				//alert(scrollerY);
				
			} else if (document.documentElement && document.documentElement.clientWidth) { // IE6 Strict
				scrollerX = document.documentElement.scrollLeft;
				scrollerY = document.documentElement.scrollTop;
				x = document.documentElement.clientWidth;
				y = document.documentElement.clientHeight;
				
			} else if (document.body.clientHeight) { // IE quirks
				scrollerX = document.body.scrollLeft;
				scrollerY = document.body.scrollTop;
				x = document.body.clientWidth;
				y = document.body.clientHeight;
			}

			div.style.left = (x/2) - (ancho/2) + scrollerX + "px"; 
			div.style.top = (y/2) - (alto/2) + scrollerY + "px"; 
			
			div.style.display = "";
		}
	}
}