var browser = 'ie';
var tooltip = null;
var tooltiptag = 'tooltip';

var ttDefDelay = 10;
var ttDefStyle = 'tooltip';

switch(navigator.appName)
{
	case 'Microsoft Internet Explorer':
		browser='ie';
		//setTimeout('IEResize();',20);
		break;
	case 'Netscape':
		if (navigator.vendorSub != '')
			browser='ns';
		else
			browser='mz'
		break;
	default:
		browser='ie';
		break;
}

function IEResize()
{
	window.resizeBy(-1,-1);
	setTimeout('window.resizeBy(-1,-1);',2);
}

function displayToolTip()
{
	if (tooltip)
	{
		tooltip.style.zIndex='200';
		tooltip.style.display='block';
		//var onTime = tooltip.getAttribute('ontime');
		//if (onTime)
		//	setTimeout('deleteToolTip()',onTime);
	}
}

function constructToolTip(e)
{
	var target = e.target;
	
	if (target.nodeName == '#text')
		target = target.parentNode;
		
    if (target.getAttribute(tooltiptag))
	{
		if (tooltip)
			deleteToolTip(e);
		
		tooltip = document.createElement('DIV');
		document.body.appendChild(tooltip);
		
		tooltip.setAttribute('class',ttDefStyle);
		tooltip.innerHTML = target.getAttribute(tooltiptag);
				
        moveToolTip(e);
        setTimeout('displayToolTip()',ttDefDelay);
	}    
}

function constructIEToolTip(e)
{
	var target=e.srcElement;
    if (!target.getAttribute(tooltiptag))
		return;
    
    if (tooltip)
		deleteToolTip(e);
	
    tooltip = document.createElement('DIV');
    document.body.appendChild(tooltip);
    
    tooltip.className = ttDefStyle;
    tooltip.innerHTML = target.getAttribute(tooltiptag);
	
	moveIEToolTip(e);
	setTimeout('displayToolTip()',ttDefDelay);
    return;
}

function deleteToolTip()
{
	if (tooltip)
		{
		document.body.removeChild(tooltip);
        tooltip=null;
	}
}

function moveToolTip(e)
{
	if (tooltip)
	{
		var dw = document.width;
		var scrollLeft = e.pageX - e.clientX;
		
		if (e.clientX < 0.8 * dw)
		{
			tooltip.style.left = (e.pageX + 15) + 'px';
            tooltip.style.right = '';
            tooltip.style.marginLeft = '';
            tooltip.style.marginRight = (20 - scrollLeft) + 'px';
		}
        else
        {
			tooltip.style.right = (dw - (e.pageX - 25)) + 'px';
            tooltip.style.left = '';
            tooltip.style.marginLeft = (scrollLeft + 20) + 'px';
            tooltip.style.marginRight = '';
		}
        tooltip.style.top = (e.pageY + 5) + 'px';
	}
    return;
}

function moveIEToolTip(e)
{
	if (tooltip)
	{
		var dw = document.body.clientWidth;
        var mpX = e.clientX + document.body.scrollLeft;
        var mpY = e.clientY + document.body.scrollTop;
        
        if (e.clientX < 0.8 * dw)
		{
			tooltip.style.left = (mpX + 15) + 'px';
            tooltip.style.right = (20 - document.body.scrollLeft) + 'px';
		}
        else
		{
			tooltip.style.right = (dw - (e.clientX - 15)) + 'px';
			tooltip.style.left = '';
		}
		tooltip.style.top = (mpY + 5) + 'px';
	}
}

function initIEToolTips(node)
{
	if (node.nodeType == 1 && node.getAttribute(tooltiptag))
	{
		node.attachEvent('onmouseover',constructIEToolTip);
		node.attachEvent('onmouseout',deleteToolTip);
		node.attachEvent('onmousemove',moveIEToolTip);
	}
    for(var i=0; i<node.childNodes.length; i++)
        initIEToolTips(node.childNodes[i]);
}

function initToolTips()
{
	if(browser=='ie')
		initIEToolTips(document.body);
	else
    {
		document.addEventListener('mouseover',constructToolTip,true);
        document.addEventListener('mouseout',deleteToolTip,true);
        document.addEventListener('mousemove',moveToolTip,true);
	}
}
