var tooltipDiv = null;
var tooltipElement = null;
var documentOnKeyPressBKP_TOOLTIP;

if (typeof document.attachEvent != 'undefined')
	document.attachEvent('onmousemove',moveMouse);
else
	document.addEventListener('mousemove',moveMouse,false);


function tooltip(element) {
	tooltipElement = element;
	
	if (tooltipDiv != null) {
		tooltipDiv.style.display = 'none';
		
		document.onkeypress = documentOnKeyPressBKP_TOOLTIP;
		documentOnKeyPressBKP_TOOLTIP = null;
	}
	
	if (tooltipElement != null)
		tooltipDiv = document.getElementById(tooltipElement.id + "_TOOLTIP");
}

function getPosition (element) {
	if (element.position)
		return element.position;
	
	var top = 0;
	var left = 0;
		
	var e = element;
	while (e) {
		top += e.offsetLeft + (e.currentStyle ? parseInt(e.currentStyle.borderLeftWidth).NaN0() : 0);
		left += e.offsetTop + (e.currentStyle ? parseInt(e.currentStyle.borderTopWidth).NaN0() : 0);
		e = e.offsetParent;
	}
	
	return (element.position = {y:left, x:top});
}

function mouseCoords(evt){
	if (evt.pageX || evt.pageY) {
		return {x:evt.pageX, y:evt.pageY};
	}
	
	return {
		x:evt.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:evt.clientY + document.body.scrollTop - document.body.clientTop
	};
}

function getMouseOffset(target, evt){
	evt = evt || window.event;
	
	var docPosition = getPosition(target);
	var mousePosition = mouseCoords(evt);
	
	return {x:mousePosition.x + docPosition.x, y:mousePosition.y + docPosition.y};
}

function moveMouse(evt) {
	evt = evt || window.event;
	target = evt.target || evt.srcElement;

	if (tooltipElement != null && tooltipDiv != null) {
		mouseOffset = mouseCoords(evt);
		
		tooltipDiv.style.left = mouseOffset.x + 10 + "px";
		tooltipDiv.style.top = mouseOffset.y + 10 + "px";
		
		tooltipDiv.style.display = 'block';
		
		documentOnKeyPressBKP_TOOLTIP = document.onkeypress;
		document.onkeypress = function(evt) {
			left = parseInt(tooltipDiv.style.left.substring(0, tooltipDiv.style.left.length - 2));
			top = parseInt(tooltipDiv.style.top.substring(0, tooltipDiv.style.top.length - 2));
		
			evt = evt || window.event;
			if (evt.keyCode == 37)
				tooltipDiv.style.left = (left - 10) + 'px';
			else if (evt.keyCode == 38)
				tooltipDiv.style.top = (top - 10) + 'px';
			else if (evt.keyCode == 39)
				tooltipDiv.style.left = (left + 10) + 'px';
			else if (evt.keyCode == 40)
				tooltipDiv.style.top = (top + 10) + 'px';
			else
				return true;
				
			return false;
		}
	}
}