var ie = document.all ? true : false;
var tooltip, tipcss;

function initializeTip(elem) {
	tooltip = document.getElementById(elem);
	tipcss = tooltip.style;
}

function doTooltip(event, id) {
	// setup mouseover event
	if (!event) var event = window.event;

	// set up current tool tip
	initializeTip(id);
	if (!tooltip) return;
	if (!tipcss) return;

	// get mouse position
	var mouseX = 0;
	var mouseY = 0;
	if (event.pageX || event.pageY) {
		mouseX = event.pageX;
		mouseY = event.pageY;
		var scrollX = window.pageXOffset;
		var scrollY = window.pageYOffset;
	}
	else if (event.clientX || event.clientY)
	{
		// get scroll offset
		if (document.documentElement && document.documentElement.scrollTop) {
			var scrollX = ie ? document.documentElement.scrollLeft : window.pageXOffset;
			var scrollY = ie ? document.documentElement.scrollTop : window.pageYOffset;
		}
		else {
			var scrollX = ie ? document.body.scrollLeft : window.pageXOffset;
			var scrollY = ie ? document.body.scrollTop : window.pageYOffset;
		}

		mouseX = event.clientX + scrollX;
		mouseY = event.clientY + scrollY;
	}


	// get page width
	var pageWidth = ie ? document.body.clientWidth : document.body.offsetWidth;
	var pageHeight = ie ? document.body.clientHeight : document.body.offsetHeight;

	// hide <select> and <applet> objects
	setVisibility("select", "invisible");
	setVisibility("applet", "invisible");

	// display tooltip - note that we need this before we can get the tooltip size
	tipcss.display='block';

	// get tooltip size
	var tipWidth = tooltip.offsetWidth;
	var tipHeight = tooltip.offsetHeight;

	// set target position to above and right of mouse
	var leftSide = mouseX;
	var topSide = mouseY - tipHeight;

	// make sure target is not off the screen
	if (mouseX > pageWidth / 2)
		leftSide = mouseX - tipWidth - 5;

	if (topSide < scrollY)
		topSide = mouseY + 5;

	while((topSide + tipHeight > (scrollY + pageHeight)) && (topSide > scrollY + 1))
		topSide--;

	// position tooltip
	tipcss.left = ie ? leftSide : leftSide + "px";
	tipcss.top = ie ? topSide : topSide + "px";
}

function hideTip() {
	// hide all tooltips
	if (!tooltip) return;
	tipcss.display = 'none';

	// show all <select> and <applet> objects
	setVisibility("select", "");
	setVisibility("applet", "");
}

function setVisibility(elmID, displayValue) {
	if (ie) {
		for(i = 0; i < document.all.tags( elmID ).length; i++) {
			obj = document.all.tags(elmID)[i];
			if(!obj || !obj.offsetParent || !obj.style.visibility) continue;
			obj.style.visibility = displayValue;
		}
	}
}
