function xstooltip_findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent) 
	{
	while (obj.offsetParent) 
		{
		curleft += obj.offsetLeft
		obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function xstooltip_findPosY(obj) {
	var curtop = 0;
	if (obj.offsetParent) 
	{
		while (obj.offsetParent) 
		{
		curtop += obj.offsetTop
		obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function xstooltip_show(tooltipId, parentId, posX, posY) {
	it = document.getElementById(tooltipId);
	
	if(it.style.visibility != 'visible') {
		if ((it.style.top == '' || it.style.top == 0) 
			&& (it.style.left == '' || it.style.left == 0))
		{
			// need to fixate default size (MSIE problem)
			it.style.width = it.offsetWidth + 'px';
			it.style.height = it.offsetHeight + 'px';
			
			img = document.getElementById(parentId);
		
			// if tooltip is too wide, shift left to be within parent 
			if (posX + it.offsetWidth > img.offsetWidth) posX = img.offsetWidth - it.offsetWidth;
			if (posX < 0 ) posX = 0;
			
			x = xstooltip_findPosX(img) + posX;
			y = xstooltip_findPosY(img) + posY;
			
			it.style.top = y + 'px';
			it.style.left = x + 'px';
		}
		
		it.style.visibility = 'visible';
		it.style.display = '';
	}
}

function xstooltip_hide(id) {
	it = document.getElementById(id);
	it.style.visibility = 'hidden';
	it.style.display = 'none';
}
