//-----------------------------------------------------
// DisplayHandler
//
//		This contains the javascript necessary for handling
//		the basic page layout, fixing scrollbar issues, 
//		and so forth.
//
//		Copyright (c) 2004 Universal Computer Consulting, Inc.
// 
//		VMOD#		PROJECT#		DATE			DESCRIPTION OF CHANGE
//		-----		--------		--------		---------------------
//		1.00		58679			09/10/04		Initial Creation
//


var nSCROLLBAR_WIDTH = 1;

var m_cCurrentSubmenu = null;
var m_cCurrentMenu = null;

//---------------------------------------
// OnLoadHandler()
//
//		This is a function that handles all of the 
//		javascript that needs to be called onload.
//
function OnLoadHandler()
{
	SetMenuHeight();

	SetContentHeight();
	SetContentWidth();
}

//---------------------------------------
// OnResizeHandler()
//
//		This is a function that handles all of the 
//		javascript that needs to be called onresize.
//
function OnResizeHandler()
{
	SetMenuHeight();
	RepositionSubmenus();
	
	SetContentHeight();
	SetContentWidth();
}

//------------------------------------
// SetMenuHeight
//
//		This sets the left-menu height so that it
//		will scroll if it needs to.
//
function SetMenuHeight()
{
	try
	{
		var cMenu			= document.getElementById(SelectElementClientId("menu"));
		var cFooter			= document.getElementById(SelectElementClientId("footer"));
		
		cMenu.style.height = (GetTopCoordinate(cFooter) - GetTopCoordinate(cMenu)) + "px";
	}
	catch(e){}
}

//------------------------------------
// SetContentHeight
//
//		This sets the content height so that it
//		will scroll if it needs to.
//
function SetContentHeight()
{
	try
	{
		var cContent		= document.getElementById(SelectElementClientId("content"));
		var cFooter			= document.getElementById(SelectElementClientId("footer"));
		
		cContent.style.height = (GetTopCoordinate(cFooter) - GetTopCoordinate(cContent)) + "px";
	}
	catch(e){}
}

//------------------------------------
// SetContentWidth
//
//		This sets the content width so that it
//		will scroll if it needs to.
//
function SetContentWidth()
{
	try
	{
		var cContent		= document.getElementById(SelectElementClientId("content"));
		var cMenu			= document.getElementById(SelectElementClientId("menu"));
		var cFooter			= document.getElementById(SelectElementClientId("footer"));
				
		cContent.style.width = (GetElementWidth(cFooter) - GetElementWidth(cMenu) - nSCROLLBAR_WIDTH) + "px";
	}
	catch(e){}
}
			
//-----------------------------------------
// GetTopCoordinate(cElement)
//
//		This returns an integer cooresponding to the 
//		top y-coordinate of an element.
//
function GetTopCoordinate(cElement)
{
	var nOffsetTop = 0;
	var cElementTrail = cElement;
	
	while (cElementTrail)
	{
		nOffsetTop		+= cElementTrail.offsetTop;
		cElementTrail	= cElementTrail.offsetParent;
	}
	
	if (navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined")
	{
		nOffsetTop += document.body.topMargin;
	}
	
	return nOffsetTop;
}

//-----------------------------------------
// GetElementHeight(cElement)
//
//		This returns an integer cooresponding to the 
//		height of an element.
//
function GetElementHeight(cElement)
{
	var nOffsetHeight = 0;
	var cElement = cElement;
	
	nOffsetHeight = cElement.offsetHeight;
										
	return nOffsetHeight;
}

//-----------------------------------------
// GetElementWidth(cElement)
//
//		This returns an integer cooresponding to the 
//		width of an element.
//
function GetElementWidth(cElement)
{
	var nOffsetWidth = 0;
	var cElement = cElement;
	
	nOffsetWidth = cElement.offsetWidth;
										
	return nOffsetWidth;
}

//----------------------------------------------
// PositionSubmenu(strSubmenuClientID, strMenuClientID)
//
//		This positions a submenu element based on its height and
//		the position of the selected menu element.
//
function PositionSubmenu(strSubmenuClientID, strMenuClientID)
{
	try
	{
		if(strSubmenuClientID == "" || strMenuClientID == "")
		{
			ClearSubmenus();
		}
		else if(document.getElementById(strSubmenuClientID) != m_cCurrentSubmenu)
		{
			var cMenu = document.getElementById(SelectElementClientId("menu"));
			
			ClearSubmenus();
			
			m_cCurrentSubmenu = document.getElementById(strSubmenuClientID);
			m_cCurrentMenu = document.getElementById(strMenuClientID);
			
			m_cCurrentSubmenu.style.visibility = "hidden";
			m_cCurrentSubmenu.style.display = "block";
			m_cCurrentSubmenu.style.position = "relative";
			
			var nNormalPosition = (GetTopCoordinate(m_cCurrentMenu) - GetTopCoordinate(cMenu) - 10);
			var nFooterTop = GetTopCoordinate(document.getElementById(SelectElementClientId("footer")));
			
			var nTotalAvailableSpace = 0;
			
			if(cMenu.scrollHeight > (nFooterTop - GetTopCoordinate(cMenu)))
			{
				nTotalAvailableSpace = cMenu.scrollHeight - 5;
			}
			else
			{
				nTotalAvailableSpace = nFooterTop - GetTopCoordinate(cMenu) - 5;
			}
			var nNormalAvailableSpace = nTotalAvailableSpace - nNormalPosition;
			var nBottomUpPosition = nNormalPosition - (GetElementHeight(m_cCurrentSubmenu) - nNormalAvailableSpace) - 5;
			
			if(GetElementHeight(m_cCurrentSubmenu) <= nNormalAvailableSpace)
			{
				m_cCurrentSubmenu.style.top = nNormalPosition + "px";
			}
			else if((GetElementHeight(m_cCurrentSubmenu) + 5) <= nTotalAvailableSpace)
			{
				m_cCurrentSubmenu.style.top = nBottomUpPosition + "px";
			}
			else
			{
				m_cCurrentSubmenu.style.top = "0px";
			}
								
			m_cCurrentSubmenu.style.visibility = "visible";
		}
	}
	catch(e){}
}

//--------------------------------------------------
// ClearSubmenus()
//
//		This function hides the currently displayed 
//		submenu.
//
function ClearSubmenus()
{
	if(m_cCurrentSubmenu != null)
	{
		m_cCurrentSubmenu.style.display = "none";
	}
	
	m_cCurrentSubmenu = null;
	m_cCurrentMenu = null;
}

//-------------------------------------------------
// RepositionSubmenus()
//
//		This function repositions the current, 
//		active submenus.
//
function RepositionSubmenus()
{
	if(m_cCurrentMenu != null && m_cCurrentSubmenu != null)
	{
		var strSubmenuID = m_cCurrentSubmenu.id;
		var strMenuID = m_cCurrentMenu.id
		
		ClearSubmenus();					
		
		PositionSubmenu(strSubmenuID, strMenuID);
	}
}

//------------------------------------------------------
// SelectElementClientId(strElementId)
//
//		This function is generated by .NET and returns
//		the clientID of the structural page element.
//		This function can be found on the default.aspx
//		page and is generated in the default.aspx.cs
//		codebehind.
//

//---------------------------------------
// IsInternetExplorer()
//
//		This function determines whether or 
//		not the client's browser is Internet
//		Explorer.
//