
var visibleNodesCookie = "VisibleNodes";
var separator = ",";

function initializeMenu(){
	var cssmenu = document.getElementById("cssmenu");

	cssmenu.onclick = menuClicked;

	var c = GetCookie(visibleNodesCookie);

	if(top && c){
		var visibleIds = c.split(separator);
		
		for(var i = 0; i<visibleIds.length; ++i){
			var node = document.getElementById(visibleIds[i]);
			
			if(node){
				node.style.display = "block";
			}
		}
	}
}


function combineFunctions(f1, f2){
	return function(){
		if(f1) f1();
		if(f2) f2();
	}
}

function menuClicked(w3cEvent){
	var evt = getCrossBrowserEvent(w3cEvent);
	var clickedNode = getEventTargetElement(evt);
	var listNode = getParentElement(clickedNode, "LI");

	toggleUl(listNode);	
}	

function toggleUl(node)
{	
	var ul = node.getElementsByTagName("UL")[0];
	
	if (ul != null)
	{
		showElement(ul, ul.style.display != "block");
	}	
}

function showElement(node, visible)
{
	if (node)
	{
		var display = "";
	
		if (visible)
		{
			display = "block";
			SetVisibleCookie(node);
		}
		else
		{
			display = "none";
			RemoveVisibleCookie(node);
		}
		
		node.style.display = display;
	}
}


function SetVisibleCookie(node){
	var c = GetCookie(visibleNodesCookie);
	
	if(!c){
		c = "";
	}
	
	c = c + node.id + separator;
	
	SetCookie("VisibleNodes", c);
}


function RemoveVisibleCookie(node){
	var c = GetCookie(visibleNodesCookie);

	if(!c){
		c = "";
	}
	
	c = c.replace(new RegExp(node.id + separator, "gi"), "")

	SetCookie("VisibleNodes", c);
}



function getCookieVal (offset) {  
	var endstr = document.cookie.indexOf (";", offset);  
	if (endstr == -1) { 
		endstr = document.cookie.length; 
	}

	return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) {  
	var arg = name + "=";  
	var alen = arg.length;  
	var clen = document.cookie.length;  
	var i = 0;  

	while (i < clen) {    
		var j = i + alen;    
		if (document.cookie.substring(i, j) == arg) return getCookieVal (j);    
		i = document.cookie.indexOf(" ", i) + 1;    
		if (i == 0) break;   
	}  

	return null;
}

function SetCookie (name, value) {  
	var argv = SetCookie.arguments;  
	var argc = SetCookie.arguments.length;  
	var expires = (argc > 2) ? argv[2] : null;  
	var path = (argc > 3) ? argv[3] : null;  
	var domain = (argc > 4) ? argv[4] : null;  
	var secure = (argc > 5) ? argv[5] : false;  
	document.cookie = name + "=" + escape (value) + 
	((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + 
	((path == null) ? "" : ("; path=" + path)) +  
	((domain == null) ? "" : ("; domain=" + domain)) +    
	((secure == true) ? "; secure" : "");
}



function getCrossBrowserEvent(w3cEvent){
	if(w3cEvent)
		return w3cEvent;
	else if(event)
		return event;
	else
		return null;		
}

function getEventTargetElement(evt){
	if(evt.srcElement)
		return evt.srcElement;
	else if(evt.target)
		return evt.target;
	else
		return null;
}

function getParentElement(element, parentTagName){

	element = element.parentNode ? element.parentNode : element.parentElement;

	while(element && element.tagName != parentTagName){
		element = element.parentNode ? element.parentNode : element.parentElement;
	}
	
	return element;
}


//set event handlers

//merge our onload with any existing onload event handlers.
window.onload = combineFunctions(window.onload, initializeMenu);
