addLoadEvent(function () {
	window.toolTipDiv = document.createElement('div');
	window.toolTipDiv.id = 'tooltip';
	window.toolTipDiv.innerHTML = '<div class="text"><div></div></div><div class="point"></div>';
	document.body.appendChild(window.toolTipDiv);
});

var toolTipTimers = [];

function toolTip (object, text) {
	if (typeof toolTipDiv == 'undefined' || !text.length) {
		return;
	}
	
	toolTipDiv.firstChild.firstChild.innerHTML = text;
	
	var left = object.offsetLeft + (!document.all ? 13 : 0), 
			top = object.offsetTop + object.offsetHeight;
	
	while (object.offsetParent) {
		var offsetParent = object.offsetParent;
		object = object.offsetParent;
		left += object.offsetLeft;
		top += object.offsetTop;
	}
	
	toolTipDiv.style.left = left + 'px';
	toolTipDiv.style.top = top + 'px';	
	toolTipOpacity(0);
	toolTipDiv.style.display = 'block';	
	toolTipDiv.style.height = (toolTipDiv.firstChild.offsetHeight + 14) + 'px';
	
	if (toolTipTimers.length) {
		for (i = 0; i < toolTipTimers.length; i ++) {
			clearTimeout(toolTipTimers[i]);
		}
		toolTipTimers = [];
	}
	
	for (i = 0; i <= 100; i += 5) {
		toolTipTimers[toolTipTimers.length] = setTimeout('toolTipOpacity(' + i + ')', i);	
	}
	
	object.onmouseout = function () {
		if (toolTipTimers.length) {
			for (i = 0; i < toolTipTimers.length; i ++) {
				clearTimeout(toolTipTimers[i]);
			}
			toolTipTimers = [];
		}
		
		for (i = 0; i <= 100; i += 5) {
			toolTipTimers[toolTipTimers.length] = setTimeout('toolTipOpacity(' + (100 - i) + ')', i);
		}
		
		this.onmouseout = null;
	}
}

function toolTipOpacity (opacity) {
	toolTipDiv.style.opacity = (opacity / 100);
	toolTipDiv.style.MozOpacity = (opacity / 100);
	toolTipDiv.style.KhtmlOpacity = (opacity / 100);
	toolTipDiv.style.filter = "alpha(opacity=" + opacity + ")";
	
	if (opacity && toolTipDiv.style.display != 'block') {
		toolTipDiv.style.display = 'block';
	}
	
	if (!opacity && toolTipDiv.style.display != 'none') {
		toolTipDiv.style.display = 'none';
	}
}