var theURL = "/preview.jsp?pdId=";
var http = getHTTPObject(); 
var previewTime = 3000;
var over = false;

setInterval("reset()", 1000);

function handleHttpResponse() {
  if (http.readyState == 4) {
    document.getElementById('result').innerHTML = http.responseText;
  	document.getElementById("previewDIV").style.visibility = "visible";  	
  }
}

function position(evt) {
	positionCustom(evt, -40);
}

function reset() {
	if(!over && document.getElementById("previewDIV").style.visibility == 'visible') {
		previewEnd();
	}
}

function positionCustom(evt, shift) {
  var isMacIE = navigator.appVersion.indexOf("Macintosh") != -1  || navigator.appVersion.indexOf("MSIE") != -1;

	var posX;
	var posY;
	if(isMacIE) {
		maxY = document.documentElement.clientHeight - 220 + document.documentElement.scrollTop;
		maxX = document.documentElement.clientWidth - 290;
		posX = evt.x + 50;
		posY = evt.y + shift + document.documentElement.scrollTop;
		if(posY > maxY) posY = maxY;
		if(posX > maxX) posX = evt.x - 290 - 30;
  } else {
  	maxY = innerHeight - 220 + scrollY;
  	maxX = innerWidth - 290;
		posX = evt.pageX + 50;
		posY = evt.pageY + shift;
		if(posY > maxY) posY = maxY;
		if(posX > maxX) posX = evt.pageX - 290 - 30;
		posY += "px";
		posX += "px";
  }

	document.getElementById("previewDIV").style.left = posX;
	document.getElementById("previewDIV").style.top = posY;	
}

var previewTimeout;
function preview(sku, evt) {
	over = true;
	var date = (new Date()).getTime();
  previewTimeout = setTimeout("previewEnd()", previewTime);
	position(evt);
	combURL = theURL + sku;
  http.open("GET", combURL, true);
  http.onreadystatechange = handleHttpResponse;

  
  if (http.readyState == 1) {
    http.send(null);
  }
}

function previewEnd() {

  	over = false;
    clearTimeout(previewTimeout);
    document.getElementById("previewDIV").style.visibility = "hidden";
    document.getElementById('result').innerHTML = "";

}

function getHTTPObject() {
  var xmlhttp;
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
     try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
     } catch (E) {
        xmlhttp = false;
     }
  }

  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
    }
  }

  return xmlhttp;
}