﻿//TOOL TIPS CLASS
//Created By: Andrew Timmins
//Date: July 10 2007

//Example:
//[Create:]
/*
var ToolTips = new MouseToolTips(delayTime:int(milliseconds), opacity:double (0-0.9),CssClass:String,fixedPoistion:int(px, or 0);

*/
//


function MouseToolTips(timeDelay,opacity,className,position)
{
	this.timeDelay = timeDelay; //milliseconds;
	this.className = className;
	this.opacity = opacity;
	this.position = position;
	
	var copy = this;
    if(typeof window.attachEvent != 'undefined')
	window.attachEvent('onload', function() { copy.CreateDiv(); });
    else
	window.addEventListener('load',function() { copy.CreateDiv(); },false);
}

MouseToolTips.prototype.CreateDiv = function()
{
	//Create the Div for the tool tip, if not created already.
	this.divName = 'toolTipContainer_' + Math.ceil(Math.random()*1000);
	if (!document.getElementById(this.divName))
	{
		var newDiv = document.createElement(this.divName);
		newDiv.id = this.divName;
		var style = newDiv.style;
		style.position = "absolute";
		style.display = "none";
		style.top = "-2000px";
		style.left = "-2000px"
		style.zIndex = "9999";
		style.opacity = this.opacity;
		style.filter = 'alpha(opacity='+this.opacity * 100+')';
		newDiv.className =this.className;
		document.body.appendChild(newDiv);
	}
}


MouseToolTips.prototype.Show = function(e,element)
{

	var toolTipDiv = document.getElementById(this.divName);
	var toolTipStyles = toolTipDiv.style;
	
	var toolTipText = element.getAttribute('toolTip');
	//Convert Text To HTML
	toolTipText = toolTipText.replace(/\[/g,'<');
	toolTipText = toolTipText.replace(/\]/g,'>');
	toolTipDiv.innerHTML = toolTipText;

	//Get the Xy function
	getMouseXYForToolTips = function(e)
	{
		var Mouse = new Object();
        if (document.all)
        {
            Mouse.x = event.clientX + document.body.scrollLeft
			Mouse.y = event.clientY + document.body.scrollTop

        }
        else
        {
            Mouse.x = e.pageX;
			Mouse.y = e.pageY; 
        }
		return Mouse;
	}
	
	
	//Set the X and Y function
	SetXY = function(e)
	{
		//Set styles
		var MouseXY = getMouseXYForToolTips(e);
		toolTipStyles.top = MouseXY.y -15 + "px"
		toolTipStyles.left = MouseXY.x + 25+"px"
	}
	
	if (parseInt(this.position) > 0)
	{
		var offsets = this.GetRealOffset(element);
		tipLeft = offsets.left + this.position;
		tipTop = offsets.top;
		toolTipStyles.top = tipTop -20 + "px";
		toolTipStyles.left = tipLeft + "px";
	}
	else
	{
	//OnmOuseMove change the X and Y of the TT
	element.onmousemove = SetXY;
	}
	//Turn on the Tool Tip
	SetDisplay = function(e)
	{
		toolTipStyles.display = "block";
	}
	//Set the delay time.
	var x = setTimeout("SetDisplay()",this.timeDelay)
	
	//Set onMouseOut Function
	MOut = function() 
	{
		toolTipDiv.style.display = "none";
		toolTipDiv.style.top = "-2000px";
		toolTipDiv.style.left = "-2000px";
		element.onmousemove = null;
		//element.onmouseout = null;
		clearTimeout(x);
	}
	
    if(typeof window.attachEvent != 'undefined')
	element.attachEvent('onmouseout', function() {MOut(); });
    else
	element.addEventListener('mouseout',function() { MOut(); },false);
}



MouseToolTips.prototype.GetRealOffset = function(elem)
{
	var Offsets = new Object();

	var leftOffset = elem.offsetLeft;
	var topOffset = elem.offsetTop;
	var parent = elem.parentNode;
	
	while(parent != document.body) 
	{
		var sTop = 0;
		var sLeft = 0;
		if (parent.scrollTop > 0) { sTop = parent.scrollTop; }
		if (parent.scrollLeft > 0) { sLeft = parent.scrollLeft; } 
   	 	leftOffset += parent.offsetLeft - sLeft;
		topOffset += parent.offsetTop - sTop;
    	parent = parent.parentNode;
	}
	Offsets.top = topOffset;
	Offsets.left = leftOffset;

	return Offsets;
}

