// Global Variables -----------------------------------------------------------

var g_asMenuStates = new Array();

// Cookies --------------------------------------------------------------------

function SetCookie(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();
}

function GetCookie(cookieName, defaultValue)
{
    var dc = document.cookie;
    var prefix = cookieName + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return defaultValue;
    } else {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

// Global Functions -----------------------------------------------------------

function MenuLoadDefaults(showAsDefault)
{
	// Read cookie, parse and store parsed menu states in global variable
	sMenuStates = GetCookie("menuStates", "");
	var asMenuStates = sMenuStates.split(",");
	for(var i = 0; i < asMenuStates.length; i += 2)
		g_asMenuStates[asMenuStates[i]] = asMenuStates[i+1];

	// Locate divs with class="menuLinks", then if the h2 links below
	// are to be hidden (the default state), then find and hide them.
	var doMenu = document.getElementById("menu");
	var adoMenuLinks = doMenu.getElementsByTagName("div");
	for(var i = 0; i < adoMenuLinks.length; i++)
	{
		var doMenuLinks = adoMenuLinks[i];
		var fStatus = showAsDefault ? (g_asMenuStates[doMenuLinks.id] == "hide" ? false : true): (g_asMenuStates[doMenuLinks.id] == "show" ? true : false);
		if(!fStatus)
		{
			var adoMenuLinksH2 = doMenuLinks.getElementsByTagName("h2");
			for(j = 0; j < adoMenuLinksH2.length; j++)
			{
				adoMenuLinksH2[j].style.display = "none";
			}
			doMenuLinks.style.display = "";
		}
	}
}

function MenuOnClick(evt)
{
	// Locate the containing div with class="menuLinks"
	var doMenuLinks = null;
	evt = (evt) ? evt : ((event) ? event : null);
	if(evt)
	{
		for(var doClick = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
			doClick;
			doClick = doClick.parentNode)
		{
			if(doClick.className == "menuLinks")
			{
				doMenuLinks = doClick;
				break;
			}
		}
	}
	if(!doMenuLinks)
		return;

	// Invert status
	var fStatus = g_asMenuStates[doMenuLinks.id] == "show" ? false : true;

	// Show/hide h2 elements
	var adoMenuLinksH2 = doMenuLinks.getElementsByTagName("h2");
	for(var j = 0; j < adoMenuLinksH2.length; j++)
	{
		adoMenuLinksH2[j].style.display = fStatus ? "" : "none";
	}

	// Update and save cookie
	g_asMenuStates[doMenuLinks.id] = fStatus ? "show" : "hide";

	var sMenuStates = "";
	var fNeedComma = false;
	for(var sID in g_asMenuStates)
	{
		if(!sID || sID == "") continue;
		if(fNeedComma) sMenuStates += ",";
		fNeedComma = true;
		sMenuStates += sID + "," + g_asMenuStates[sID];
	}

	SetCookie("menuStates", sMenuStates);
}

