/*
dom_tooltip.js

DOM Tooltip by Chris Roberts
columcille@gmail.com
http://www.musterion.net/
*/

var domTip_curPageX = 0;
var domTip_curPagey = 0;
var domTip_scrollPageY = 0;
var domTip_viewPageX = 0;
var domTip_viewPageY = 0;
var domTip_viewScreenX = 0;
var domTip_viewScreenY = 0;
var domTip_totalScreenX = 0;
var domTip_totalScreenY = 0;

var domTip_tipBox = "";

window.document.onmousemove = domTip_trackMouse;

function domTip_trackMouse(e)
{
	var e = (e) ? e : ((event) ? event : null);

	// Functions do different things depending on whether or not a
	// doctype is present. Node type 10 is a doctype but IE reads
	// a doctype as Node type 8 - a comment.
	if (document.childNodes[0].nodeType == 10 || document.childNodes[0].nodeType == 8)
	{
		domTip_curPageX = e.clientX + document.documentElement.scrollLeft;
 		domTip_curPageY = e.clientY + document.documentElement.scrollTop;

 		domTip_scrollPageY = document.documentElement.scrollTop;

		domTip_viewPageX = e.clientX;
		domTip_viewPageY = e.clientY;

		domTip_viewScreenX = document.documentElement.clientWidth;
		domTip_viewScreenY = document.documentElement.clientHeight;

		domTip_totalScreenX = document.body.offsetWidth;
		domTip_totalScreenY = document.body.offsetHeight;
	} else {
		domTip_curPageX = e.clientX + document.body.scrollLeft;
 		domTip_curPageY = e.clientY + document.body.scrollTop;

 		domTip_scrollPageY = document.body.scrollTop;

		domTip_viewPageX = e.clientX;
		domTip_viewPageY = e.clientY;

		domTip_viewScreenX = document.body.clientWidth;
		domTip_viewScreenY = document.body.clientHeight;

		domTip_totalScreenX = document.documentElement.scrollWidth;
		domTip_totalScreenY = document.documentElement.scrollHeight;
	}

	if (domTip_tipBox != "" && domTip_tipBox.style.display == "block")
	{
		domTip_moveTip();
	}
}

function domTip_clearTip()
{
	if (domTip_tipBox != "")
	{
		while (domTip_tipBox.childNodes.length > 0)
		{
			domTip_tipBox.removeChild(domTip_tipBox.childNodes[0]);
		}

		domTip_tipBox.style.display = "none";
	}
}

function domTip_toolText(domTip_headerText, domTip_tipText)
{
	if (domTip_tipBox == "")
	{
		domTip_tipBox = document.createElement("div");
		domTip_tipBox.className = "domTip_Tip";
		domTip_tipBox.id = "toolTipDiv";
		domTip_tipBox.style.position = "absolute";
		domTip_tipBox.style.display = "none";

		window.document.body.appendChild(domTip_tipBox);
	} else {
		domTip_clearTip();
	}

	if (domTip_headerText != "")
	{
		// Build the tip header
		var domTip_tipHead = document.createElement("div");
		domTip_tipHead.className = "domTip_TipHeader";

		var domTip_tipHeadText = document.createTextNode(domTip_headerText);
		domTip_tipHead.appendChild(domTip_tipHeadText);

		domTip_tipBox.appendChild(domTip_tipHead);
	}

	var domTip_tipBody = document.createElement("div");
	domTip_tipBody.className = "domTip_TipBody";

	domTip_tipBody.innerHTML = domTip_tipText;

	domTip_tipBox.appendChild(domTip_tipBody);

	domTip_tipBox.style.visibility = "hidden";
	domTip_tipBox.style.display = "block";

	domTip_moveTip();
	domTip_tipBox.style.visibility = "visible";
}

function domTip_moveTip()
{
	var domTip_tipXloc = domTip_curPageX + 10;
	var domTip_tipYloc = domTip_curPageY + 10;

	var domTip_tipHeight = domTip_tipBox.offsetHeight;
	var domTip_tipWidth = domTip_tipBox.offsetWidth;

	// If the tooltip extends off the side, pull it over
	if (domTip_viewPageX + 10 + domTip_tipWidth > domTip_viewScreenX)
	{
		domTip_tipXloc -= (domTip_tipWidth + 15);
	}

	// If the tooltip will extend off the bottom of the screen, pull it back up.
	if (domTip_viewPageY + 10 + domTip_tipHeight > domTip_viewScreenY)
	{
		var domTip_pageDiff = (domTip_viewPageY + 10 + domTip_tipHeight - domTip_viewScreenY);
		domTip_tipYloc -= domTip_pageDiff;
	}

	// If the tooltip extends off the bottom and the top, line up the top of
	// the tooltip with the top of the page
	if (domTip_tipHeight > domTip_viewScreenY)
	{
		domTip_tipYloc = domTip_scrollPageY + 5;
	}

	domTip_tipBox.style.left = domTip_tipXloc + "px";
	domTip_tipBox.style.top = domTip_tipYloc + "px";
}
