function HideDropDownList()
{

}

/* Without Drops Array */

HideDropDownList.prototype.Process = function(area)
{
	for(var j = 0; j < document.forms.length; j++)
	{
		for(var i = 0; i < document.forms[j].elements.length; i++)
		{
			var element = document.forms[j].elements[i];

			if(element.type != null && element.type.indexOf('select') == 0)
			{
				var elementArea = GetElementArea(element);

				var visibility = element.style["visibility"];
				var newVisibility = elementArea.Intersects(area) ? "hidden" : "visible";

				if(visibility != newVisibility)
				{
					element.style["visibility"] = newVisibility;
				}
			}
		}
	}
}

/* With Drops Array */

HideDropDownList.prototype.GetDrops = function(area)
{
	var dropDowns = new Array();

	for(var j = 0; j < document.forms.length; j++)
	{
		for(var i = 0; i < document.forms[j].elements.length; i++)
		{
			var element = document.forms[j].elements[i];

			if(element.type != null && element.type.indexOf('select') == 0)
			{
				var elementArea = GetElementArea(element);

				if(elementArea.Intersects(area))
				{
					dropDowns.push( new HideDropDownListInfo(element, elementArea) );
				}
			}
		}
	}

	return dropDowns;
}

/* Analisa sempre os dropdowns passados como parametro */

HideDropDownList.prototype.ProcessDrops = function(area, drops)
{
	if(drops == null) return;

	for(var i = 0; i < drops.length; i++)
	{
		var info = drops[i];
		var visibility = info.DropDown.style["visibility"];
		var newVisibility = area.Intersects(info.Area) ? "hidden" : "visible";

		if(visibility != newVisibility)
		{
			info.DropDown.style["visibility"] = newVisibility;
			info.Visible = visibility == "visible";
		}
	}
}

HideDropDownList.prototype.ClearDrops = function(drops)
{
	if(drops == null) return;

	for(var i = 0; i < drops.length; i++)
	{
		if(drops[i].DropDown.style["visibility"] == "hidden")
		{
			drops[i].DropDown.style["visibility"] = "visible";
		}
	}
}

document.HideDropDownList = new HideDropDownList();

/* Informações do drop down */

function HideDropDownListInfo(dropDown, area)
{
	this.DropDown = dropDown;
	this.Area = area;
	this.Visible = this.DropDown.style["visibility"] == "visible";
}
