// Global Variables -----------------------------------------------------------

var g_SimpleMenuCookieName = "SimpleMenuShowSubmenu-";

// Public Functions -----------------------------------------------------------

function SimpleMenuLoadDefaults(menuContainerID, showSubmenuDefault)
{
	var menuContainer = document.getElementById(menuContainerID);
	for(var iMenuList = 0; iMenuList < menuContainer.childNodes.length; iMenuList++)
	{
		var menuList = menuContainer.childNodes[iMenuList];
		if(!menuList.tagName || menuList.tagName.toLowerCase() != "ul") continue;  // Typical usage has 1 ul within menuContainer
		
		for(var iMenuListItem = 0; iMenuListItem < menuList.childNodes.length; iMenuListItem++)
		{
			var menuListItem = menuList.childNodes[iMenuListItem];
			if(!menuListItem.tagName || menuListItem.tagName.toLowerCase() != "li") continue;
		
			var cookieName  = g_SimpleMenuCookieName + menuListItem.id;
			var showSubmenu = SimpleMenuGetCookie(cookieName, showSubmenuDefault) == "true";
			if(!showSubmenu)
			{
				for(var iSubmenuList = 0; iSubmenuList < menuListItem.childNodes.length; iSubmenuList++)
				{
					var submenuList = menuListItem.childNodes[iSubmenuList];
					if(!submenuList.tagName || submenuList.tagName.toLowerCase() != "ul") continue; // Submenus are children ul of menuListItem
					
					submenuList.style.display = showSubmenu ? "" : "none";
				}
			}
		}
	}
}

function SimpleMenuOnClick(listItemContent)
{
	// Locate the containing li
	var menuListItem = null;
	for(var i = listItemContent.parentNode; i; i = i.parentNode)
	{
		if(i.tagName && i.tagName.toLowerCase() == "li")
		{
			menuListItem = i;
			break;
		}
	}
	if(!menuListItem)
		return;
		
	// Invert status of any submenus (children ul)
	var showValid   = false;
	var showSubmenu = false;
	for(var iSubmenuList = 0; iSubmenuList < menuListItem.childNodes.length; iSubmenuList++)	
	{
		var submenuList = menuListItem.childNodes[iSubmenuList];
		if(!submenuList.tagName || submenuList.tagName.toLowerCase() != "ul") continue; // Submenus are children ul of menuListItem
		
		if(!showValid) 
		{
			showSubmenu = submenuList.style.display == "" ? false : true;
			showValid = true;
		}
		submenuList.style.display = showSubmenu ? "" : "none";
	}
	
	// Save cookie
	var cookieName = g_SimpleMenuCookieName + menuListItem.id;
	SimpleMenuSetCookie(cookieName, showSubmenu);
}

// Private Functions ----------------------------------------------------------

function SimpleMenuSetCookie(cookieName, cookieValue) 
{
	var today = new Date();
	var expire = new Date();
	expire.setTime(today.getTime() + 3600000*24*3000);
	document.cookie = cookieName + "=" + escape(cookieValue) + ";expires="+expire.toGMTString();
}

// Always returns a string - use parseInt, parseFloat, etc. to convert
function SimpleMenuGetCookie(cookieName, defaultValue)
{
	var cookie = "" + document.cookie;
	var cookieIndex = cookie.indexOf(cookieName);
	if(cookieIndex == -1 || cookieName == "") return defaultValue.toString();
	var cookieIndex1 = cookie.indexOf(';', cookieIndex);
	if(cookieIndex1 == -1) cookieIndex1 = cookie.length;
	return unescape(cookie.substring(cookieIndex + cookieName.length + 1, cookieIndex1));
}

