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.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);
		
		var ttClass = target.getAttribute('ttclass');
        if (! ttClass)
			ttClass=ttDefStyle;
        
        tooltip.setAttribute('class',ttClass);
        var ttOnTime=target.getAttribute('ttontime');
        
        if (ttOnTime)
			tooltip.setAttribute('ontime',ttOnTime);      
		
		var sToolTipText = target.getAttribute(tooltiptag);
		tooltip.innerHTML = sToolTipText;
		
        moveToolTip(e);
        
        var ttDelay=target.getAttribute('ttdelay');
        if (!ttDelay) 
			ttDelay=ttDefDelay;
			
		if (ttDelay > 0)
			setTimeout('displayToolTip()',ttDelay);
		else
			displayToolTip();
	}    
}

function constructIEToolTip(e)
{
	var target=e.srcElement;
    if (!target.getAttribute(tooltiptag))
		return;
    
    if (tooltip)
		deleteToolTip(e);
    tooltip = document.createElement('DIV');
    document.body.appendChild(tooltip);
    
    var ttClass=target.getAttribute('ttclass');
    
    if (!ttClass)
		ttClass=ttDefStyle;
    tooltip.className=ttClass;
    
    var ttOnTime = target.getAttribute('ttontime');
    if (ttOnTime)
		tooltip.setAttribute('ontime',ttOnTime);
    
    
    var sToolTipText = target.getAttribute(tooltiptag);
	var sToolTipArr = sToolTipText.split('<p>');
	var iToolTipArr = sToolTipArr.length;
	
	var sToolTipSec;
	var sToolTipSec2;
	
	for (iToolTipArr = 0; iToolTipArr < sToolTipArr.length; iToolTipArr++)
	{
		sToolTipSec = null;
		sToolTipSec2 = null;
		
		sToolTipSec = document.createElement('DIV');
		if (iToolTipArr == 0)
		{
			sToolTipSec2 = document.createElement('B');
			sToolTipSec2.innerHTML = sToolTipArr[iToolTipArr];
			sToolTipSec.appendChild(sToolTipSec2);
		}
		else
			sToolTipSec.innerHTML = sToolTipArr[iToolTipArr];
		tooltip.appendChild(sToolTipSec);
	}
	
	moveIEToolTip(e);
    
    var ttDelay = target.getAttribute('ttdelay');
    if (!ttDelay)
		ttDelay=ttDefDelay;
	
	if (ttDelay > 0)
		setTimeout('displayToolTip()',ttDelay); 
	else
		displayToolTip();
    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);
	}
}
