var graphTooltip;
var offsetX = 12;
var offsetY = -40;
var opacity = 0.9;

function createTooltip(){
	graphTooltip = document.createElement('div');
	graphTooltip.id = 'graphTooltip';
	graphTooltip.setAttribute('id','graphTooltip');
	graphTooltip.className = 'tooltip';
	graphTooltip.style.position = 'absolute';
	graphTooltip.style.display = 'none';
	setOpacity(graphTooltip, opacity);
	document.body.appendChild(graphTooltip);
}

function showTooltip(elem, html, e, x, y, o){
	if(!graphTooltip)
		createTooltip();

	if(x != null){ offsetX = x; }
	if(y != null){ offsetY = y; }
	if(o != null){ opacity = o; }

	moveTooltip(e);
	elem.onmousemove = moveTooltip;
	elem.onmouseout = hideTooltip;
	graphTooltip.innerHTML = html;
	graphTooltip.style.display = '';
}

function hideTooltip(e){
	if(graphTooltip){
		graphTooltip.style.display = 'none';
		graphTooltip.innerHTML = '';
	}
}

if(!document.onclick){
	document.onclick = hideTooltip;
	if (document.captureEvents) document.captureEvents(Event.CLICK);
}

function setOpacity(elem, val){
	var filterOpacity = val*100;
	elem.style.filter = 'alpha(opacity:' + filterOpacity + ')';
	elem.style.KHTMLOpacity = val.toString();
	elem.style.MozOpacity = val.toString();
	elem.style.opacity = val.toString();
}

function moveTooltip(e){
	var posx = 0, posy = 0;
	if(e == null) e = window.event;
	if(e.pageX || e.pageY){
		posx = e.pageX; posy = e.pageY;
	}
	else if(e.clientX || e.clientY){
		if(document.documentElement.scrollTop){
			posx = e.clientX + document.documentElement.scrollLeft;
			posy = e.clientY + document.documentElement.scrollTop;
		}
		else{
			posx = e.clientX + document.body.scrollLeft;
			posy = e.clientY + document.body.scrollTop;
		}
	}
	graphTooltip.style.top = (posy + offsetY) + 'px';
	graphTooltip.style.left = (posx + offsetX) + 'px';
}

function GetItemById(id){
	return (document.all ? document.all[id] : document.getElementById(id));
}