var intPID  = null;
var timeout  = null;
var whoami=navigator.userAgent.toLowerCase();
var my_version = parseInt(navigator.appVersion);
var is_ie = (whoami.indexOf("msie") != -1);
var is_ie3 = (is_ie && (my_version < 4));

var tooltip_id = 'tooltip_div';
var tooltip_buffer = 10;

var followMouse = true;
var offX =  12;
var offY = 8;

function ttmv(e)
{
 var tooltip = document.getElementById(tooltip_id);
 var left = 0;
 var top = 0;

 if(!e)
  e = window.event;
 if(e.pageX || e.pageY) {  // mozilla
  mouse_x = e.pageX;
  mouse_y = e.pageY;
 }
 if(window.event) {  // ie
  mouse_x = e.clientX + document.body.scrollLeft;
  mouse_y = e.clientY + document.body.scrollTop;
 }

 var scrollX = document.body.scrollLeft;
 var scrollY = document.body.scrollTop;
 var height = document.body.clientHeight;
 var width = document.body.clientWidth;
 
 var x = mouse_x + scrollX;
 var y = mouse_y + scrollY;

 if ( x + tooltip.offsetWidth + offX > width + scrollX ) {		// left
	x = x - tooltip.offsetWidth + offX;
	x = x - 10;
	if ( x < 0 )
		 x = 0;
 } else														// right
	x = x + offX;

 if ( y + tooltip.offsetHeight + offY > height + scrollY ) {
	y = y - tooltip.offsetHeight;								// above
	if ( y < scrollY )
		y = height + scrollY - tooltip.offsetHeight;
 } else {
	y = y + offY;												// under
 }

 tooltip.style.left = x + "px";
 tooltip.style.top = y + "px";
}

function ttup(text)
{
 clearTimeout(intPID);
 var tooltip = document.getElementById(tooltip_id);
 if(tooltip) {
  tooltip.innerHTML = text;
  tooltip.style.visibility = 'visible';
  document.onmousemove = ttmv;
 }
}

function ttdn()
{
 var tooltip = document.getElementById(tooltip_id);
 intPID = setTimeout(function() { ttdn_work() }, tooltip_buffer); /* stops glitching by adding buffer */
}

function ttdn_work()
{

 var tooltip = document.getElementById(tooltip_id);
 if(tooltip) {
  tooltip.style.visibility = 'hidden';
  document.onmousemove = null;
 }
}
