/******************************************************************************
* Name:	menus.js
*
* Shared: Yes
*
* Application: VOS - VLMI - Admin
*
* Purpose: To encapsulate JavaScript functions for menu system.
*
* Linked From: parent
*
* Requires:
*
* Linked To:  
*
* Created: DC 02/20/2009
*
* History:  ~ 1 
'******************************************************************************/

function sidemenu_ToggleFlyout(item)
{
	// If the browser doesn't even support getElementById give up now and ignore any flyouts
	if (!document.getElementById && !document.all)
	{
		return true;
	}
	
	var objItemOffBackground;
	var objtItemOffColor;
	var objItemOnBackground;
	var objtItemOnColor;
	var objParentMenuItemOn = getStyleObjectFromSelector(".sidemenu_Item_oncolor");
	
	if(objParentMenuItemOn) 
	{
		objtItemOffColor = objParentMenuItemOn.color;
		if (objtItemOffColor == "") { objtItemOffColor = "#000"; }
		objItemOffBackground = objParentMenuItemOn.background;
	}
	else
	{
		objtItemOffColor = "#000"; 
		objItemOffBackground = "#CCC";
	}
	
	var objParentMenuItemOff = getStyleObjectFromSelector(".sidemenu_Item_offcolor");
	
	if(objParentMenuItemOff) 
	{
		objtItemOnColor = objParentMenuItemOff.color;
		if (objtItemOnColor == "") { objtItemOnColor = "#000"; }
		objItemOnBackground = objParentMenuItemOff.background;
	}
	else
	{
		objtItemOnColor = "#000"; 
		objItemOnBackground = "#EEE";
	}
	
	// Set item object
	var objItem = document.getElementById("sidemenu_Item_" + item);
	// Set variable to parentitem y (height difference from top)
	var yItem = objItem.offsetTop;
	// Set flyout object 
	var objFlyout = document.getElementById("sidemenu_Flyout_" + item).style;
	
    // If the flyout is displayed then hide it 
    if (objFlyout.display == "inline")
    {
        //Google Chrome stupidity
        var objLinks = objItem.getElementsByTagName('a');
        var objFlyoutLinks = document.getElementById("sidemenu_Flyout_" + item).getElementsByTagName('a');
        
        for (i = 0; i < objLinks.length; i++)
        {
            var inFlyout = false;
            for (j = 0; j < objFlyoutLinks.length; j++)
            {
                if (objLinks[i].href == objFlyoutLinks[j].href)
                {
                    inFlyout = true;
                    j = objFlyoutLinks.length;
                }
            }
            if (!inFlyout)
            {
                objLinks[i].style.background = objItemOnBackground;
            }
        }
        
	    objItem.style.background = objItemOnBackground;
	    objItem.color = objtItemOnColor;
	    
	    if (objItem.firstChild.style)
	    {
	        objItem.firstChild.style.color = objtItemOnColor;
	    }
	    else
	    {
	        objItem.firstChild.color = objtItemOnColor;
	    }
	    objFlyout.display = "none";
    }
    // If the flyout is hidden then display it
    else
    {
        //Google Chrome stupidity
        var objLinks = objItem.getElementsByTagName('a');
        var objFlyoutLinks = document.getElementById("sidemenu_Flyout_" + item).getElementsByTagName('a');
        
        for (i = 0; i < objLinks.length; i++)
        {
            var inFlyout = false;
            for (j = 0; j < objFlyoutLinks.length; j++)
            {
                if (objLinks[i].href == objFlyoutLinks[j].href)
                {
                    inFlyout = true;
                    j = objFlyoutLinks.length;
                }
            }
            if (!inFlyout)
            {
                objLinks[i].style.background = objItemOffBackground;
            }
        }
        
	    objItem.style.background = objItemOffBackground;
	    if (objItem.firstChild.style)
	    {
	        objItem.firstChild.style.color = objtItemOffColor;
	    }
	    else
	    {
	        objItem.firstChild.color = objtItemOffColor;
	    }
	    objFlyout.display = "inline";
	    objFlyout.top = yItem + "px";
    }
}

function getStyleObjectFromSelector (selectorText) 
{ 
	if (document.styleSheets) 
	{ 
		for (var i = document.styleSheets.length - 1; i >= 0; i--) 
		{ 
			var styleSheet = document.styleSheets[i]; 
			var rules; 
			if (styleSheet.cssRules) 
			{ 
				rules = styleSheet.cssRules; 
			} 
			else if (styleSheet.rules) 
			{ 
				rules = styleSheet.rules; 
			} 
			if (rules) 
			{ 
				for (var j = rules.length - 1; j >= 0; j--) 
				{ 
					if (rules[j].selectorText == selectorText) 
					{ 
						return rules[j].style; 
					} 
				} 
			} 
		} 
		return null; 
	} 
	else 
	{ 
		return null; 
	} 
} 
