/*
This script is a modified version of the ToolTip script orignally created Sharon Pain at Dynamic Web Coding,
but heavily modified by Jason Bramble. 

Changes include:

* Hard coded content arrays gone. Yuck.  Now we can pass in an element name and define anything we want.
* We can support multiple elements to display as floaters.
* Added support for cacheing images on download.
* Gutted all the hard coded CSS styles.  Again, yuck.

Here is a sample on how to use in HTML:

<script type="text/javascript" language="javascript" src="DynamicToolTip.js"></script>

<div id="tipDiv1" style="position:absolute; visibility:hidden; z-index:100"><table><tr><td>Option 1 Floater/td></tr></table></div>
<a href="#" onmouseover="doTooltip('tipDiv1', 200, 100)" onmouseout="hideTip()">Link1</a>
<br>
<div id="tipDiv2" style="position:absolute; visibility:hidden; z-index:100"><table><tr><td>Option 2 Floater</td></tr></table></div>
<a href="#" onmouseover="doTooltip('tipDiv2', 10, 20)" onmouseout="hideTip()">Link 2</a>

Syntax: doTooltip([NAME OF ELEMENT], [X OFFSET], [Y OFFSET])

Pretty simple eh?
*/

var dom = (document.getElementById) ? true : false;
var ns5 = (!document.all && dom || window.opera) ? true: false;
var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
var ie4 = (document.all && !dom) ? true : false;
var nodyn = (!ns5 && !ie4 && !ie5 && !dom) ? true : false;
var windowLoadEvent;

var origWidth, origHeight;

// avoid error of passing event object in older browsers
if (nodyn) { event = "nope" }

var tipFollowMouse= true;	
var offX= 20;
var offY= 12; 

function preLoadImage(imageSource) 
{
	var newImage = new Image();
	newImage.src = imageSource;
}

function initTip() {
	if (windowLoadEvent != null) windowLoadEvent();

	if (nodyn) return;

	if (tipFollowMouse) {
		document.onmousemove = trackMouse;
	}
}

windowLoadEvent = window.onload;
window.onload = initTip;

var tipOn = false;	
var tooltip, tipcss;

function doTooltip(divElementName, xOffset, yOffset) {

    if (xOffset) offx = xOffset;
    if (yOffset) offY = yOffset;

	tipOn = true;

	tooltip = (ie4)? document.all[divElementName]: (ie5||ns5)? document.getElementById(divElementName): null;
	tipcss = tooltip.style;

	if (!tipFollowMouse) 
	    positionTip(evt);
	else
	{ 
	    tipcss.visibility='visible';
	    tipcss.display='block';
    }
}

//Tracks mouse
var mouseX, mouseY;
function trackMouse(evt) {
	standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body 
	mouseX = (ns5)? evt.pageX: window.event.clientX + standardbody.scrollLeft;
	mouseY = (ns5)? evt.pageY: window.event.clientY + standardbody.scrollTop;
	if (tipOn) positionTip(evt);
}

function positionTip(evt) {
	if (!tipFollowMouse) {
		standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body
		mouseX = (ns5)? evt.pageX: window.event.clientX + standardbody.scrollLeft;
		mouseY = (ns5)? evt.pageY: window.event.clientY + standardbody.scrollTop;
	}

	var tpWd = (ie4||ie5)? tooltip.clientWidth: tooltip.offsetWidth;
	var tpHt = (ie4||ie5)? tooltip.clientHeight: tooltip.offsetHeight;
	var winWd = (ns5)? window.innerWidth-20+window.pageXOffset: standardbody.clientWidth+standardbody.scrollLeft;
	var winHt = (ns5)? window.innerHeight-20+window.pageYOffset: standardbody.clientHeight+standardbody.scrollTop;

	if ((mouseX+offX+tpWd)>winWd) 
		tipcss.left = mouseX-(tpWd+offX)+"px";
	else tipcss.left = mouseX+offX+"px";
	
	if ((mouseY+offY+tpHt)>winHt) 
		tipcss.top = winHt-(tpHt+offY)+"px";
	else tipcss.top = mouseY+offY+"px";
	
	if (!tipFollowMouse) t1=setTimeout("tipcss.visibility='visible';tipcss.display='block';",100);
}

function hideTip(divElementName) {
	var divElement = (ie4)? document.all[divElementName]: (ie5||ns5)? document.getElementById(divElementName): null;
    divElement.style.visibility='hidden';
    divElement.style.display='none';
	tipOn = false;
}

