var objHelpbox = null;


/* OBJECT HelpBox */
function HelpBox()
{
	//object properties
	this.dropdowns = null;	//array with dropdowns hidden for helpbox div
	this.helpbox = null	;	//helpbox HTML element
	this.position = null;
	

	//initialize object
	this.browserOffsetX = 19;
	this.browserOffsetY = 5;

	//find helpbox div
	this.helpbox = document.getElementById('helpbox');
	this.boxwidth = getWidth(this.helpbox);
}

HelpBox.prototype.isMatch = function(obj)
{
	//we know that if the y-axels match, x1 and x2 are semi fixed
	if (  (this.position.y1 <= obj.y1)  &&  (obj.y1 <= this.position.y2)   ) return true;
	if (  (this.position.y1 <= obj.y2)  &&  (obj.y2 <= this.position.y2)   ) return true;
	
	return false;

}

HelpBox.prototype.hide = function()
{
	this.helpbox.style.display = "none";
	
	if (isInternetExplorer)
		this.restoreDropdowns();
}

HelpBox.prototype.show = function (imgElement, label, text)
{
	//determine position of image
	var pos = new Position(imgElement);
	
	//set new top and left of helpbox
	boxleft = (pos.x + imgElement.width) - this.boxwidth - this.browserOffsetX;
	boxtop = pos.y + imgElement.height + this.browserOffsetY;
	setStyle("helpbox", "left", boxleft + "px");
	setStyle("helpbox", "top", boxtop + "px");

	//set label and text for helpbox
	document.getElementById('helpboxlabel').innerHTML = label;
	document.getElementById('helpboxtext').innerHTML = text;

	//render dropdown is browser (for calculation of height), but do NOT show it!
	this.helpbox.style.display = "block";
	this.helpbox.style.visibility = "hidden";
	
	this.position = getElementPosition(this.helpbox);
	
	//hide dropdowns because in MSIE they shine right right thru the upperdiv!
	if (isInternetExplorer)
		this.hideDropdowns(this.position);


	this.helpbox.style.visibility = "visible";

}

HelpBox.prototype.hideDropdowns = function (hbPosition)
{
	//fetch all dropdowns on form
	var dropdowns = document.getElementsByTagName("select");
	if (dropdowns == null) return;	//no result

	//create new array for hidden dropdowns, so we can restore them at a later point
	this.hiddenDropdowns = new Array(dropdowns.length);
	

	for(i=0; i < dropdowns.length; i++)
	{
		var ddElem = dropdowns[i];
		var ddPos = getElementPosition(ddElem);
		if (this.isMatch(ddPos))
		{
			hideDropdown(ddElem.id);				//hide dropdown
			this.hiddenDropdowns[i] = ddElem.id;	//remember for restore function
		}
	}
}

HelpBox.prototype.restoreDropdowns = function()
{
	//enumerate hiddenDropdowns array and set each dropdown visible
	for(i=0; i < this.hiddenDropdowns.length; i++)
	{
		if (this.hiddenDropdowns[i] != null)
			showDropdown(this.hiddenDropdowns[i]);
	}
	
	//empty array after restoring dropdowns
	this.hiddenDropdowns = new Array();
}




//wrapper functions for HelpBox object
function showHelpbox(elem, field, txt)
{
	if (objHelpbox == null)
		objHelpbox = new HelpBox();
		
	objHelpbox.show(elem, field, txt);
}

function hideHelpbox()
{
	if (objHelpbox == null)
		return;
		
	objHelpbox.hide();
}


