

/***********************************************
* Cool DHTML tooltip script- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/
var override_delay = 0;
var current_update_object = "";
var xpos; 
var ypos;
var rightedge_first;
var bottomedge_first;
var clientx;
var clienty;
var leftedge_first;
var tipobj_top_first;
var tipobj_left_first
var blnCalcposition = false;

var theDelay
var offsetxpoint=-60 //Customize x offset of tooltip
var offsetypoint=20 //Customize y offset of tooltip
var ie=document.all
var ns6=document.getElementById && !document.all
var enabletip=false
if (ie||ns6)
var tipobj;
function ietruebody(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function updatetip(id)
{
	if (enabletip && id==current_update_object)
	{
		tipobj.innerHTML = document.getElementById(id).innerHTML;
	}
}

function showtip(theid, useform)
{
	
	blnCalcposition = false;
	clearTimeout(theDelay);
	ddrivetip(theid, useform); 
	positiontip_first();
}

function hidedelaytip()
{
	blnCalcposition = false;
	clearTimeout(theDelay);
	hideddrivetip();
}


function calcposition()
{
	if (blnCalcposition)
	{
		var e = window.event;
		try{
		    xpos = (ns6)?e.pageX : event.x+ietruebody().scrollLeft
		    ypos = (ns6)?e.pageY : event.y+ietruebody().scrollTop
		    rightedge_first = ie&&!window.opera? ietruebody().clientWidth-event.clientX-offsetxpoint : window.innerWidth-e.clientX-offsetxpoint-20;
		    bottomedge_first = ie&&!window.opera? ietruebody().clientHeight-event.clientY-offsetypoint : window.innerHeight-e.clientY-offsetypoint-20;
		    clientx = e.clientX;
		    clienty = e.clientY;
		    leftedge_first = (offsetxpoint<0)? offsetxpoint*(-1) : -1000;
		    tipobj_top_first = ie? ietruebody().scrollTop+event.clientY-tipobj.offsetHeight-offsetypoint+"px" : window.pageYOffset+e.clientY-tipobj.offsetHeight-offsetypoint+"px";
		    tipobj_left_first = ie? ietruebody().scrollLeft+event.clientX-tipobj.offsetWidth+"px" : window.pageXOffset+e.clientX-tipobj.offsetWidth+"px"
		  }
		 catch(e){}
	    
	}
}


function showdelaytip(id, useform, delay)
{	
		if (delay>0)
		{
			theDelay = setTimeout("showtip('"+id+"',"+useform+")", delay);
			blnCalcposition = true;
			calcposition();
		}
		else
		{
			showtip(id+'');		
		}	
}

function replace(string,text,by) 
{
	var strLength = string.length, txtLength = text.length;
	if ((strLength == 0) || (txtLength == 0)) return string;

	var i = string.indexOf(text);
	if ((!i) && (text != string.substring(0,txtLength))) return string;
	if (i == -1) return string;

	var newstr = string.substring(0,i) + by;

	if (i+txtLength < strLength)
		newstr += replace(string.substring(i+txtLength,strLength),text,by);

	return newstr;
}


function ddrivetip(theid, htmlinput, thecolor, thewidth){
if (ns6||ie){
if (typeof thewidth!="undefined") tipobj.style.width=thewidth+"px"
if (typeof thecolor!="undefined" && thecolor!="") tipobj.style.backgroundColor=thecolor
var blnuseform = false;

current_update_object = theid;

if (tipobj.innerHTML!="") //thetext
	enabletip=true

return false
}
}

function positiontip_first(){
if (enabletip){
var curX=xpos;
var curY=ypos;
var rightedge = rightedge_first;
var bottomedge=bottomedge_first;

var leftedge=leftedge_first;


//if the horizontal distance isn't enough to accomodate the width of the context menu
if (rightedge<tipobj.offsetWidth)
//move the horizontal position of the menu to the left by it's width
tipobj.style.left=tipobj_left_first;
else if (curX<leftedge)
tipobj.style.left="5px"
else
//position the horizontal position of the menu where the mouse is positioned
tipobj.style.left=curX+offsetxpoint+"px"

//same concept with the vertical position
if (bottomedge<tipobj.offsetHeight)
tipobj.style.top=tipobj_top_first;
else
tipobj.style.top=curY+offsetypoint+"px"
tipobj.style.visibility="visible"
}
}


function positiontip(e){
if (enabletip){
var curX=(ns6)?e.pageX : event.x+ietruebody().scrollLeft;
var curY=(ns6)?e.pageY : event.y+ietruebody().scrollTop;
//Find out how close the mouse is to the corner of the window
var rightedge=ie&&!window.opera? ietruebody().clientWidth-event.clientX-offsetxpoint : window.innerWidth-e.clientX-offsetxpoint-20
var bottomedge=ie&&!window.opera? ietruebody().clientHeight-event.clientY-offsetypoint : window.innerHeight-e.clientY-offsetypoint-20

var leftedge=(offsetxpoint<0)? offsetxpoint*(-1) : -1000

//if the horizontal distance isn't enough to accomodate the width of the context menu
if (rightedge<tipobj.offsetWidth)
//move the horizontal position of the menu to the left by it's width
tipobj.style.left=ie? ietruebody().scrollLeft+event.clientX-tipobj.offsetWidth+"px" : window.pageXOffset+e.clientX-tipobj.offsetWidth+"px"
else if (curX<leftedge)
tipobj.style.left="5px"
else
//position the horizontal position of the menu where the mouse is positioned
tipobj.style.left=curX+offsetxpoint+"px"

//same concept with the vertical position
if (bottomedge<tipobj.offsetHeight)
tipobj.style.top=ie? ietruebody().scrollTop+event.clientY-tipobj.offsetHeight-offsetypoint+"px" : window.pageYOffset+e.clientY-tipobj.offsetHeight-offsetypoint+"px"
else
tipobj.style.top=curY+offsetypoint+"px"
tipobj.style.visibility="visible"
}
else
	calcposition();

}

function hideddrivetip()
{
	if (ns6||ie){
		enabletip=false
		//tipobj.innerHTML=="";
		if (tipobj)
		{
			tipobj.style.visibility="hidden"
			tipobj.style.left="-1000px"
			tipobj.style.backgroundColor=''
			tipobj.style.width=''
		}
	}
}

document.onmousemove=positiontip

