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 = $(tooltipId);
    
    if ((it.getStyle('top') == '' || it.getStyle('top') == 0) 
        && (it.getStyle('left') == '' || it.getStyle('left') == 0))
    {
        // need to fixate default size (MSIE problem)
		it.setStyle({ width: it.offsetWidth + 'px' });
		it.setStyle({ height: it.offsetHeight + 'px' });
        
        img = $(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.setStyle({ top: y + 'px' });
        it.setStyle({ left: x + 'px' });
    }
    
	 it.setStyle({ display: 'block' });
}

function xstooltip_hide(id)
{
    it = $(id); 
	 it.setStyle({ display: 'none' });
}
