/**** UTF-8: áéíóú€ ****/
function xstooltip_findPosX(obj, restScrollPosition)
{
	var curleft = 0;
	
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft;
			if(restScrollPosition && obj.scrollLeft)
			{
				curleft -= obj.scrollLeft;
			}
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
	{
		curleft += obj.x;
		if(restScrollPosition && obj.scrollLeft)
		{
			curleft -= obj.scrollLeft;
		}
	}
	return curleft;
}

function xstooltip_findPosY(obj, restScrollPosition)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop;
			if(restScrollPosition && obj.scrollTop)
			{
				curtop -= obj.scrollTop;
			}
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
	{
		curtop += obj.y;
		if(restScrollPosition && obj.scrollTop)
		{
			curtop -= obj.scrollTop;
		}
	}
	return curtop;
}

function getScrollXY()
{
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' )
	{
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	}
	else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) )
	{
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	}
	else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) )
	{
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return [ scrOfX, scrOfY ];
}

function xstooltip_show(tooltipId, obj, posX, posY)
{
	if(obj)
	{
		it = document.getElementById(tooltipId);
		
		if(it)
		{
			/*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';
				
				// if tooltip is too wide, shift left to be within parent
				if ((posX + it.offsetWidth) > obj.offsetWidth){ posX = (obj.offsetWidth - it.offsetWidth); }
				if (posX < 0 ){ posX = 0; }
				
				x = xstooltip_findPosX(obj, true) + posX;
				y = xstooltip_findPosY(obj, true) + posY;
				
				// Get scroll position and rest to the tooltip position
				//wScrollPos = getScrollXY();
				//x += wScrollPos[0];
				//y += wScrollPos[1];
				
				it.style.top = y + 'px';
				it.style.left = x + 'px';
			}
			
			it.style.visibility = 'visible';
		}
	}
}

function xstooltip_hide(id)
{
    it = document.getElementById(id);
    if(it)
    {
    	it.style.visibility = 'hidden';
    }
}

// Vars to store info about the object that shown the last tooltip
var xstooltip_last_obj_title = '';
var xstooltip_last_obj = null;

function showToolTipOfTitle(toolTipID, obj)
{
	it = document.getElementById(toolTipID);
	
	if(obj && it)
	{
		//Restore title of the object related with the last tooltip shown (if exists)
	    if(xstooltip_last_obj)
	    {
	    	xstooltip_last_obj.title = xstooltip_last_obj_title;
	    }
	    
	    //Store ref and title of the currect object to restore later if needed
	    xstooltip_last_obj_title = obj.title;
		xstooltip_last_obj = obj;
		
		//Remove title of the object to prevent be shown by the browser
		obj.title = '';
		
		//show tooltip only if exist a text to show
		if(xstooltip_last_obj_title != '')
		{
			//Replace new lines with linebreaks html
			it.innerHTML = xstooltip_last_obj_title.replace(/\n/g, "<br />\n");
			
			//show tooltip
			xstooltip_show(toolTipID, obj, obj.offsetWidth, obj.offsetHeight);
		}
	}
}