// WebDozerClt.Web Version 1.0
// José Proença
// 2007-06-18

// References: WebDozerClt
if (!('WebDozerClt' in this))
	alert('Error WebDozerClt.Web.00. WebDozerClt not found.');

if (!('Web' in WebDozerClt))
	WebDozerClt.Web = new Object();
	

WebDozerClt.Web.BodyOnload = new Object();

WebDozerClt.Web.BodyOnload.Append = function(f)
{
	isMac = (navigator.appVersion.indexOf("Mac")!=-1) ? true : false;
	IEmac = ((document.all)&&(isMac)) ? true : false;
	IE4 = ((document.all)&&(navigator.appVersion.indexOf("MSIE 4.")!=-1)) ? true : false;

	if (IEmac && IE4)  // IE 4.5 blows out on testing window.onload
	{
		window.onload = this.InvokeAll;
		this._FunctionsArray[this._FunctionsArray.length] = f;
	}
	else if  (window.onload)
	{
		if (window.onload != this.InvokeAll)
		{
			this._FunctionsArray[this._FunctionsArray.length] = window.onload;
			window.onload = this.InvokeAll;
		}		
		this._FunctionsArray[this._FunctionsArray.length] = f;
	}
	else
		window.onload = f;
}

WebDozerClt.Web.BodyOnload.InvokeAll = function()
{
	var farray = WebDozerClt.Web.BodyOnload._FunctionsArray;
	for (var i=0; i < farray.length; i++)
		farray[i]();
}

WebDozerClt.Web.BodyOnload._FunctionsArray = new Array();


WebDozerClt.Web.BodyUnload = new Object();

WebDozerClt.Web.BodyUnload.Append = function(f)
{
	isMac = (navigator.appVersion.indexOf("Mac")!=-1) ? true : false;
	IEmac = ((document.all)&&(isMac)) ? true : false;
	IE4 = ((document.all)&&(navigator.appVersion.indexOf("MSIE 4.")!=-1)) ? true : false;

	if (IEmac && IE4)  // IE 4.5 blows out on testing window.Unload
	{
		window.Unload = this.InvokeAll;
		this._FunctionsArray[this._FunctionsArray.length] = f;
	}
	else if  (window.Unload)
	{
		if (window.Unload != this.InvokeAll)
		{
			this._FunctionsArray[this._FunctionsArray.length] = window.Unload;
			window.Unload = this.InvokeAll;
		}		
		this._FunctionsArray[this._FunctionsArray.length] = f;
	}
	else
		window.Unload = f;
}

WebDozerClt.Web.BodyUnload.InvokeAll = function()
{
	var farray = WebDozerClt.Web.BodyUnload._FunctionsArray;
	for (var i=0; i < farray.length; i++)
		farray[i]();
}

WebDozerClt.Web.BodyUnload._FunctionsArray = new Array();


WebDozerClt.Web.UI = {};

WebDozerClt.Web.UI.ShowHide = new Object();

WebDozerClt.Web.UI.ShowHide._IDArray = new Array();
WebDozerClt.Web.UI.ShowHide._TimerArray = new Array();

WebDozerClt.Web.UI.ShowHide._FindIdx = function(id)
{
	var bFound = false;
	var n = WebDozerClt.Web.UI.ShowHide._IDArray.length-1;
	while ((n>=0) && !bFound)
	{
		if (WebDozerClt.Web.UI.ShowHide._IDArray[n] == id)
			bFound = true;
		else
			n--;
	}
	if (bFound)
		return n;
	else
		return null;
}

WebDozerClt.Web.UI.ShowHide.ElementOffsetSaveSelect = function(itemId, placeitemId, xOffSet, yOffSet, show, saveSelects)
{
	var container;
	var bShow;
	var nDelay = 0;

	var nIdx = WebDozerClt.Web.UI.ShowHide._FindIdx(itemId + "_" + placeitemId);
	if (nIdx && WebDozerClt.Web.UI.ShowHide._TimerArray[nIdx] >= 0)
	{
		window.clearTimeout(WebDozerClt.Web.UI.ShowHide._TimerArray[nIdx]);
		WebDozerClt.Web.UI.ShowHide._TimerArray[nIdx] = -1;
	}
	
	if (typeof(show) == "number")
	{
		if (show >= 0)
		{
			bShow = true;
			nDelay = show;
		}
		else
		{
			bShow = false;
			nDelay = -show;
		}	
	}
	else
		bShow = show;


	var control = document.getElementById(itemId);
	if (control)
	{
		if (nDelay > 0)
		{
  			var nTimer = window.setTimeout("WebDozerClt.Web.UI.ShowHide.ElementOffsetSaveSelect('"+itemId+"','"+placeitemId+"',"+xOffSet+","+yOffSet+","+bShow+","+saveSelects+");", nDelay);
			if (nIdx)
				WebDozerClt.Web.UI.ShowHide._TimerArray[nIdx] = nTimer;
			else
			{
				WebDozerClt.Web.UI.ShowHide._TimerArray[WebDozerClt.Web.UI.ShowHide._IDArray.length] = nTimer;
				WebDozerClt.Web.UI.ShowHide._IDArray[WebDozerClt.Web.UI.ShowHide._IDArray.length] = itemId + "_" + placeitemId;
			}
		}
		else
		{
			if (bShow)
				container = document.getElementById(placeitemId);
			if (container)
			{
				control.style.left = WebDozerClt.Web.UI.GetAbsoluteLeft(container) + xOffSet;
				control.style.top = WebDozerClt.Web.UI.GetAbsoluteTop(container) + yOffSet;
				control.style.display = bShow ? "block" : "none";
			}
			else
				control.style.display = bShow ? "inline" : "none";
				
			if (saveSelects)
			{
				var bVisibility = bShow ? 'hidden' : 'visible';
				var arrElements=document.getElementsByTagName('select');
				for(var i=0;i<arrElements.length;i++)
					arrElements[i].style.visibility=bVisibility;
			}
		}
	}
}

WebDozerClt.Web.UI.ShowHide.ElementOffset = function(itemId, placeitemId, xOffSet, yOffSet, show)
{
	return WebDozerClt.Web.UI.ShowHide.ElementOffsetSaveSelect(itemId, placeitemId, xOffSet, yOffSet, show, false)
}

WebDozerClt.Web.UI.ShowHide.Element = function(itemId, placeitemId, show)
{
	return WebDozerClt.Web.UI.ShowHide.ElementOffset(itemId, placeitemId, 0, 0, show);
}

WebDozerClt.Web.UI.GetAbsoluteTop = function(item)
{
	var nTop = 0;
	if (item)
		do
			nTop += item.offsetTop;
		while ((item = item.offsetParent) && ((item.style == null) || (item.style.position=="static") || (item.currentStyle && item.currentStyle.position=="static")));
	return (nTop)
}

WebDozerClt.Web.UI.GetAbsoluteLeft = function(item)
{
	var nLeft = 0;
	if (item)
		do
			nLeft += item.offsetLeft;
		while ((item = item.offsetParent) && ((item.style == null) || (item.style.position=="static") || (item.currentStyle && item.currentStyle.position=="static")));
	return (nLeft)
}

WebDozerClt.Web.UI.CheckExitedElement = function(e, element)
{
	if (!e) var e = window.event;
	var oTo = (e.relatedTarget) ? e.relatedTarget : e.toElement;
	while (oTo != null && oTo != element)
		oTo = oTo.parentNode
	return (oTo != element)
}

