var tTooltipHideTimeout = 0;
var tTooltipShowTimeout = 0;
var oTooltipDiv = 0;
var oWhere = 0;
var oTip = 0;
var tooltipState = 'hidden';

var tooltipShowDelay = 700;
var tooltipHideDelay = 300;
var tooltipExpire = 10000;

function getTooltipDiv()
{
	if(!oTooltipDiv)
	{
		// document.createElement: Internet explorer 5.0
		oTooltipDiv = document.createElement("DIV");
		document.body.appendChild(oTooltipDiv);
		oTooltipDiv.className = 'tooltip';
		oTooltipDiv.style.position = 'absolute';
		oTooltipDiv.style.zIndex = 255;
		
		oTooltipDiv.onmousemove = hideTooltip;
	}
	return oTooltipDiv;
}

function tooltip(tip,where)
{
	// er staat al een delay voor dit item.
	if(where == oWhere && 	tooltipState == 'pending') return;
	if(where == oWhere && 	tooltipState == 'showing') return;
	if(where == oWhere && 	tooltipState == 'dieing') return;

	// bestaande showTimeouts worden geannueerd
	if(tTooltipShowTimeout) clearTimeout(tTooltipShowTimeout);
	
	oWhere = where;
	oTip = tip;

	// zorg dat de tooltip verdwijnt als de muis ergens anders heen gaat.
	if(where.addEventListener)	{	// voor mozilla en w3c-compatible browsers
		where.addEventListener('mouseout',cancelTooltip,false);
	}
	else if( where.attachEvent ) {	// voor Internet Explorer 5 en 6
		where.attachEvent('mouseout',cancelTooltip);
	}
	else {	// voor Internet Explorer 5.2 mac
		where.onmouseout = cancelTooltip;
	}

	tooltipState = 'pending';
	setTimeout("showTooltip(oTip,oWhere)",tooltipShowDelay);

}

function cancelTooltip()
{
	if(tTooltipShowTimeout) clearTimeout(tTooltipShowTimeout);

}

function showTooltip(tip,where)
{
	
	// als de tooltipdiv nog niet gemaakt is, vraag 'm aan.
	if(!oTooltipDiv) getTooltipDiv();
	
	// als de tip blanco is, verbergen we alleen maar de tip.
	if(tip=='') return hideTooltip();

	// als er nog een delay gaande is, maak die blanco.
	if(tTooltipHideTimeout) clearTimeout(tTooltipHideTimeout);

	// zoek de tooltip div op.
	div = getTooltipDiv();
	div.innerHTML = tip;
	tooltipState = 'showing';

		// maak de tooltip zichtbaar
	div.style.display = "block";
	// bepaal de de verticale positie van het object.
	// Hiermee zijn een aantal bekende browser-bugs:
	// - IE4mac:	werkt niet correct in tabellen.
	// - IE5mac:	werkt niet correct in tabellen (andere reden dan bovenstaand)
	// - IE5.5, IE6: position:reltive geeft onjuiste (dubbele) positie.
	// - Na een resize werkt opera niet meer correct.
	// - Alle browsers: werkt niet met MAP-elementen.
	// - Alle browsers: in een div met overflow: scroll klopt de positie niet.
	pTop = 0; pLeft = 0;
	pParent = where;
	while(pParent)
	{
		if(pParent.offsetTop) pTop += pParent.offsetTop;
		if(pParent.offsetLeft) pLeft += pParent.offsetLeft;
		pParent = pParent.offsetParent;
	}


	if( window.innerHeight) lInnerHeight = window.innerHeight;
	else lInnerHeight = window.document.body.offsetHeight;
   viewportLeft = window.document.body.scrollLeft;
	viewportRight =viewportLeft + window.document.body.offsetWidth;
	viewportTop =  window.document.body.scrollTop;
	viewportBottom = viewportTop + lInnerHeight;

	// stel de hoogte in
	if((pTop + div.offsetHeight + where.offsetHeight) > viewportBottom)
	{
		div.style.top = (pTop - div.offsetHeight - 3)+"px";
	}
	else
	{
		div.style.top = (pTop + where.offsetHeight + 3)+"px";
	}
	// kijk of de tooltip (met een breedte van 200px) nog binnen het venster past.
	docWidth = window.document.body.scrollWidth;
	if(pLeft < docWidth - 200)
	{	// Het past gewoon
		div.style.left = pLeft + "px";
		// de breedte van de tooltip is minimaal 200px.
		div.style.width = Math.max(200,where.offsetWidth) + "px";
	}
	else
	{	// het past niet
		div.style.left = (docWidth - 200) + "px" ;
		div.style.width = "200px";
	}
	// maak de tooltip zichtbaar
	div.style.display = "block";

	// zorg dat de tooltip verdwijnt als de muis ergens anders heen gaat.
	if(where.addEventListener)	{	// voor mozilla en w3c-compatible browsers
		where.addEventListener('mouseout',hideTooltipDelayed,false);
	}
	else if( where.attachEvent ) {	// voor Internet Explorer 5 en 6
		where.attachEvent('mouseout',hideTooltipDelayed);
	}
	else {	// voor Internet Explorer 5.2 mac
		where.onmouseout=hideTooltipDelayed;
	}

	// na een bepaalde tijd wordt de tooltip verborgen. Dit is standaard 10 seconden.
	hideTooltipDelayed(tooltipExpire);
}

function hideTooltip()
{
	if(tTooltipHideTimeout) clearTimeout(tTooltipHideTimeout);
	tTooltipHideTimeout = 0;
	tooltipState = 'hidden';

// verberg de tooltip.
	div = getTooltipDiv();
	div.style.display = "none";
//	oWhere = 0;
	return true;
}

function hideTooltipDelayed(time)
{
	tooltipState = 'dieing';

	if( typeof time != 'number' ) time = tooltipHideDelay;
	if(tTooltipHideTimeout) clearTimeout(tTooltipHideTimeout);
	tTooltipHideTimeout = setTimeout('hideTooltip()',time);
}




