function getViewportSize() {
  var size = [0, 0];
  if (typeof window.innerWidth != 'undefined')  {
    	size = [ window.innerWidth, window.innerHeight ];
  } else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0)  {
    	size = [ document.documentElement.clientWidth, document.documentElement.clientHeight ];
  } else {
   	 	size = [ document.getElementsByTagName('body')[0].clientWidth, document.getElementsByTagName('body')[0].clientHeight ];
  }
  return size;
}

function hoverShow(event, imgsrc, imgtitle, imgw, imgh, factor) {
	var offX = 10;
	var offY = 10;
	var newImgDim = [Math.ceil(imgw/factor), Math.ceil(imgh/factor)];
	var newDivDim = [newImgDim[0] + 30, newImgDim[1] + 60];
	var newDivHeight = Math.ceil(imgh/factor)+60;
	var newDivWidth = Math.ceil(imgw/factor)+30;
	var odiv = document.getElementById("hoverdiv").style; 
	var oimg = document.getElementById("hoverimg").style;
	odiv.width = (parseInt(newDivDim[0])) + 'px';
	odiv.height = (parseInt(newDivDim[1])) + 'px';
	// decide where to place hover window:
	var viewportsize = getViewportSize();
	if (typeof event == "undefined") { var evt = window.event; } else { var evt = event; }
	if (evt.pageX) {
		var cursorX = evt.pageX
	} else if (evt.clientX) {
		var cursorX = evt.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft)
	} else {
		var cursorX = 0
	}
	if (evt.pageY) {
		var cursorY = evt.pageY
	} else if (evt.clientY) {
		var cursorY = evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop)
	} else {
		var cursorY = 0
	}
	if (cursorX + newDivWidth > viewportsize[0] -15) { offX = - newDivWidth - offX }
	if (cursorY + newDivHeight > viewportsize[1] -15) { offY =  - newDivHeight - offY }
	odiv.display = "block";
	document.getElementById("loadimg").style.display="block";
	oimg.width = (parseInt(newImgDim[0])) + 'px';
	oimg.height = (parseInt(newImgDim[1])) + 'px';
	function mouseX(evt) {if (!evt) evt = window.event; if (evt.pageX) return evt.pageX; else if (evt.clientX) return evt.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); else return 0;}
	function mouseY(evt) {if (!evt) evt = window.event; if (evt.pageY) return evt.pageY; else if (evt.clientY) return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); else return 0;}
	function follow(evt) {
		if (document.getElementById) {
			odiv.left = (parseInt(mouseX(evt))+offX) + 'px';
			odiv.top = (parseInt(mouseY(evt))+offY) + 'px';
		}
	}
	
	document.onmousemove = follow;
	document.getElementById("hoverhead").innerHTML = imgtitle;
	document.getElementById("hoverimg").src = imgsrc;
	document.getElementById("hoverimg").onload = function(){document.getElementById("loadimg").style.display="none";document.getElementById("hoverimg").style.display="block";}
}
function hoverHide() {
	document.getElementById("hoverimg").src = "images/pix_clear.gif";	// 1x1 trans pixel
	document.getElementById("hoverimg").style.display = "none";
	document.getElementById("hoverdiv").style.display = "none";
}