var fieldHelpTimeoutID;
var selectedFieldHelpID;

function preserveFieldHelp()
{
	if (fieldHelpTimeoutID)
	{
		window.clearTimeout(fieldHelpTimeoutID);
	}
	fieldHelpTimeoutID = null;
}

function hideFieldHelp(divID)
{
	selectedFieldHelpID = divID;
	fieldHelpTimeoutID = window.setTimeout('hideSpecificFieldHelp();', 200);
}

function hideSpecificFieldHelp(divID)
{
	var div = document.getElementById(selectedFieldHelpID);
	if (div)
	{
		div.style.display = 'none';
		selectedFieldHelpID = null;
	}
}

function showFieldHelp(divID, attachToObjectID, helpImageID)
{
//alert('in:'+divID+':'+helpImageID);
	divs = document.getElementsByTagName("div");
	
	for (i = 0; i < divs.length; i++)
	{
		var div = divs[i];
		if ('fieldHelp' == div.className)
		{
			if (divID == div.id)
			{
				if ('inline' == div.style.display)
				{
					div.style.display = 'none';
				}
				else
				{
					var top = 20;
					var left = 0;
					var maxWidth = 300;
					var widthAdjust = 0;
					var rightObject = document.getElementById(helpImageID);
					var leftObject = document.getElementById(attachToObjectID);
					var width;

					div.style.width = '300px';
					setRelativeLocation(leftObject, div, 0, leftObject.offsetHeight);
					div.style.display = 'inline';
				}
			}
			else
			{
				div.style.display = 'none';
			}
		}
	}
}

function setRelativeLocation(relativeToObject, element, offsetLeft, offsetTop)
{
	var newX = findPosX(relativeToObject);
    var newY = findPosY(relativeToObject);
    element.style.top = (newY + offsetTop) + 'px';
	element.style.left = (newX + offsetLeft) + 'px';
}
function 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 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;
}
