// JavaScript Document
//Ancho y alto de la pgina
function Viewport(){ this.windowX = (document.documentElement && document.documentElement.clientWidth) || window.innerWidth || self.innerWidth || document.body.clientWidth; this.windowY = (document.documentElement && document.documentElement.clientHeight) || window.innerHeight || self.innerHeight || document.body.clientHeight; this.scrollX = (document.documentElement && document.documentElement.scrollLeft) || window.pageXOffset || self.pageXOffset || document.body.scrollLeft; this.scrollY = (document.documentElement && document.documentElement.scrollTop) || window.pageYOffset || self.pageYOffset || document.body.scrollTop; this.pageX = (document.documentElement && document.documentElement.scrollWidth) ? document.documentElement.scrollWidth : (document.body.scrollWidth > document.body.offsetWidth) ? document.body.scrollWidth : document.body.offsetWidth; this.pageY = (document.documentElement && document.documentElement.scrollHeight) ? document.documentElement.scrollHeight : (document.body.scrollHeight > document.body.offsetHeight) ? document.body.scrollHeight : document.body.offsetHeight;
}

<!-- inicio
var IE = document.all?true:false
if (!IE) document.captureEvents(Event.MOUSEMOVE)

document.onmousemove = posicRatonXY;

var posicX = 0
var posicY = 0

function posicRatonXY(e)
{
	if (IE)
	{ 
		posicX = event.clientX + document.body.scrollLeft;
		posicY = event.clientY + document.body.scrollTop;
	}	else { 
		posicX = e.pageX; posicY = e.pageY;
	}
	if (posicX < 0) {posicX = 0};
	if (posicY < 0) {posicY = 0};
	
	if (mov == 1)
	{
		var nub = document.getElementById("nube");
		
		var scrl = new Viewport();
		if (navigator.appName.indexOf("Microsoft") != -1)
			nub.style.top = (parseFloat(posicY) - parseFloat(nub.style.height) - 25 + scrl.scrollY) + "px";
		if (navigator.appName.indexOf("Netscape") != -1)
			nub.style.top = (parseFloat(posicY) - parseFloat(nub.style.height) - 25) + "px";
			
		nub.style.left = (parseFloat(posicX) - 20) + "px";
	}
	
	return true 
}
// final -->
var tout;
var mov;
function mostrar(id)
{
	/*mov = 1;
	clearTimeout(tout);
	var nub = document.getElementById('nube');

	var scrl = new Viewport();
	if (navigator.appName.indexOf("Microsoft") != -1)
		nub.style.top = (parseFloat(posicY) - parseFloat(nub.style.height) - 25 + scrl.scrollY) + "px";
	if (navigator.appName.indexOf("Netscape") != -1)
		nub.style.top = (parseFloat(posicY) - parseFloat(nub.style.height) - 25) + "px";
		
	nub.style.left = (parseFloat(posicX) - 20) + "px";
	var nub_cont = document.getElementById('nube_cont');
	var des = document.getElementById('des' + id);
	nub_cont.innerHTML = des.innerHTML;
	fadeOp('nube','0','80');
	nub.style.visibility = 'visible';*/
}
function ocultar()
{
	//document.getElementById("nube").style.visibility = "hidden";
	//mov = 0;
	/*fadeOp('nube','80','0');
	tout = setTimeout("ocult()", 500);*/
}
function ocult()
{
	nub = document.getElementById("nube");
	nub.style.visibility = "hidden";
	mov = 0;
	nub.style.top = 0;
	nub.style.left = 0;
}

<!-- ver detalle -->
function mostrar_detalle()
{
	var fon = document.getElementById('fondo_negro');
	var fonv = document.getElementById('fondo_ver');
	var dim = new Viewport();
	if (navigator.appName.indexOf("Microsoft") != -1)
	{
		fon.style.height = ((dim.pageY > dim.windowY) ? dim.pageY : dim.windowY) + 'px';
	}
	if (navigator.appName.indexOf("Netscape") != -1)
	{
		fon.style.height = (dim.pageY) + 'px';
	}
	document.getElementById('form_ver').style.top = (dim.scrollY + 50) + 'px';
	fon.style.width = dim.pageX;

	fadeOp('fondo_negro','0','60');
	fon.style.display = 'block';
	fonv.style.display = 'block';
	setTimeout("mostrar2()", 500);
}
function mostrar2()
{
	//alert(tam);
	var form = document.getElementById('form_ver');
	form.style.width = '59px';
	form.style.height = '59px';
	form.style.display = 'block';
	fadeTamX('form_ver','59','59','850','800');
}
function ocultar_detalle()
{
	var fon = document.getElementById('fondo_negro');
	var fonv = document.getElementById('fondo_ver');
	var form = document.getElementById('form_ver');
	form.style.display = 'none'
	fonv.style.display = 'none'
	fon.style.display = 'none'
}
function ocultar_detalle2()
{
	//var fon = document.getElementById('fondo_negro');
	//var fonv = document.getElementById('fondo_ver');
	var form = document.getElementById('form_ver');
	form.style.display = 'none'
	//form.innerHTML="<img src='images/loading.gif'>";
	//fonv.style.display = 'none'
	//fon.style.display = 'none'
}

// ----------- AJAX ----------- //
var id_prod = 0;
function getXMLHttpRequest(){
					var aVersions = [ "MSXML2.XMLHttp.5.0",
									"MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",
									"MSXML2.XMLHttp","Microsoft.XMLHttp"
					];

					if (window.XMLHttpRequest){
									// para IE7, Mozilla, Safari, etc: que usen el objeto nativo
									return new XMLHttpRequest();
					}else if (window.ActiveXObject){
									// de lo contrario utilizar el control ActiveX para IE5.x y IE6.x
									for (var i = 0; i < aVersions.length; i++) {
													try {
															var oXmlHttp = new ActiveXObject(aVersions[i]);
															return oXmlHttp;
													}catch (error) {
													//no necesitamos hacer nada especial
													}
							}
					}
}

//////////////////////////////////////
function form(id)
{
	form2(id, 0);	
}
var resp_ajax;
function form2(id, subid){
		ocultar_detalle2();
		var par = "r="+Math.random();
		var url = "productos.php?codprod=" + id + "&sub=" + subid; //"ajax.php?id=" + id;
		id_prod = id;
				var ajax = getXMLHttpRequest();
		ajax.open("POST",url,true);
		ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
				ajax.onreadystatechange  = respuesta;
		ajax.send(par);                
				function respuesta(){
						var Layer1 = document.getElementById("form_ver");
						if (ajax.readyState==4){
								if (ajax.status==200){
										Layer1.innerHTML= htmlentities(ajax.responseText);
										mostrar_detalle();
										//setTimeout("mostrar_ajax()",2000);
								}
						}else{
								Layer1.innerHTML="<img src='images/loading.gif'>";
						}
				}
}
function mostrar_ajax()
{
	var Layer1 = document.getElementById("form_ver");
	Layer1.innerHTML= htmlentities(resp_ajax);
	//alert('hola');
}
function htmlentities(texto){
	texto = texto.replace(/(\u00e1|\xe1|\xc3\xa1|\u00c3\u00a1|á)/g, '&aacute;'); //
	texto = texto.replace(/(\u00e9|\xe9|\xc3\xa9|\u00c3\u00a9|é)/g, '&eacute;'); //
	texto = texto.replace(/(\u00ed|\xed|\xc3\xad|\u00c3\u00ad|í)/g, '&iacute;'); //
	texto = texto.replace(/(\u00f3|\xf3|\xc3\xb3|\u00c3\u00b3|ó)/g, '&oacute;'); //
	texto = texto.replace(/(\u00fa|\xfa|\xc3\xba|\u00c3\u00ba|ú)/g, '&uacute;'); //
	texto = texto.replace(/(\u00c1|\xc1|\xc3\x81|\u00c3\u0081|Á)/g, '&Aacute;'); //
	texto = texto.replace(/(\u00c9|\xc9|\xc3\x89|\u00c3\u0089|É)/g, '&Eacute;'); //
	texto = texto.replace(/(\u00cd|\xcd|\xc3\x8d|\u00c3\u008d|Í)/g, '&Iacute;'); //
	texto = texto.replace(/(\u00d3|\xd3|\xc3\x93|\u00c3\u0093|Ó)/g, '&Oacute;'); //
	texto = texto.replace(/(\u00da|\xda|\xc3\x9a|\u00c3\u009a|Ú)/g, '&Uacute;'); //
	texto = texto.replace(/(\u00f1|\xf1|\xc3\xb1|\u00c3\u00b1|ñ)/g, '&ntilde;'); //
	texto = texto.replace(/(\u00d1|\xd1|\xc3\x91|\u00c3\u0091|Ñ)/g, '&Ntilde;'); //
	texto = texto.replace(/(\u00fc|\xfc|\xc3\xbc|\u00c3\u00bc|ü)/g, '&uuml;'); //
	texto = texto.replace(/(\u00dc|\xdc|\xc3\x9c|\u00c3\u009c|Ü)/g, '&Uuml;'); //
	texto = texto.replace(/(\u201c|\x93|\xe2\x80\x9c|\u00e2\u0080\u009c|“|)/g, '&quot;'); //
	texto = texto.replace(/(\u201d|\x94|\xe2\x80\x9d|\u00e2\u0080\u009d|”|)/g, '&quot;'); //
	texto = texto.replace(/(¨)/g, '&quot;'); //
	texto = texto.replace(/(º)/g, '&deg;'); //
	return texto;
}

//////////////////////////////////////