function showHovertip(ht, p, e)
{
	h = document.getElementById(ht);
	h.style.display = "block";
	moveHovertip(ht, p, e);
}

function hideHovertip(ht)
{
	h = document.getElementById(ht);
	h.style.display = "none";
}

function moveHovertip(ht, p, e)
{
	h = document.getElementById(ht);
	xoffset = 2;
	xfoffset = 4;
	yoffset = 16;
	yfoffset = 4;
	
	// get offsets 
	if (window.document.body.all == null)
	{
		// NN / Firefox
	} else {
		// IE
	}
	
	// get page dimensions and offsets
	pageW = 0;
	pageH = 0;
	if (window.innerHeight)
	{
		// non IE
		pageW = window.innerWidth;
		pageH = window.innerHeight;
		pyo = window.pageYOffset;
		pxo = window.pageXOffset;
	} else if (document.documentElement && (document.documentElement.clientHeight + document.documentElement.clientWidth > 0)) {
		// IE 6
		pageW = document.documentElement.clientWidth;
		pageH = document.documentElement.clientHeight;
		pyo = document.documentElement.scrollTop;
		pxo = document.documentElement.scrollLeft;
	} else {
		// IE <6
		pageW = document.body.clientWidth;
		pageH = document.body.clientHeight;
		pyo = document.body.scrollTop;
		pxo = document.body.scrollLeft;
	}
	
	// get object dimensions
	objW = h.offsetWidth;
	objH = h.offsetHeight;
	
	// get mouse positions
	if (e.pageX)
	{
		x = e.pageX;
		y = e.pageY;
	} else {
		x = e.clientX + pxo;
		y = e.clientY + pyo;
	}
	
	// test for breach
	flipH = false;
	flipV = false;
	if (x + objW + xoffset - pxo > pageW)
		flipH = true;					
	if (y + objH + yoffset - pyo > pageH)
		flipV = true;
	
	// position object
	if (flipH)
	{
		newposx = x - objW - xfoffset;
	} else {
		newposx = x + xoffset;
	}
	
	if (flipV)
	{
		newposy = y - objH - yfoffset;
	} else {
		newposy = y + yoffset;
	}
	
	h.style.left = newposx + "px";
	h.style.top = newposy + "px";
}
