
var visibleNodesCookie = "VisibleNodes";
var separator = ",";

function initializeMenu(){
	var cssmenu = document.getElementById("subMenu");

	$("#subMenu").find("a").click(function(e) { SetVisibleCookie(e.target); } );
	
//	cssmenu.onclick = menuClicked;

	var c = GetCookie(visibleNodesCookie);
				
	if(c){
	
		var visibleIds = c.split(separator);
	
		for(var i = 0; i<visibleIds.length; ++i){
			if (visibleIds[i].length > 0) {
				
				//alert('now loading... ' + visibleIds[i]);
				
				var nodes = $(cssmenu).find('*[href=' + window.location.href + ']');
				
				//debugger;
		
				//var node = document.getElementById(visibleIds[i]);
				
				if(nodes[0]){
	
					//alert('now loading... ' + nodes[0].href);
	
					//toggleClass(node.parentNode, 'visibility', true);	
					// ul.style.visibility = "visible";
					// node.style.display = "block";
					showElement(getParentElement(nodes[0], "UL"), true);
				}
			}
		}
	}
}


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, "UL");

	SetVisibleCookie(clickedNode);
	
	//toggleUl(listNode);	
	
	
}	

function toggleUl(node)
{	

	//var ul = node.getElementsByTagName("UL")[0];
	
	//if (ul != null)
	if (node != null)
	{
//		var visible = ul.style.display != "block";
			var visible = node.style.visibility != "visible";
		//toggleClass(node, 'visibility', visible);	
		// if (visible) 
		// {
			// node.style.visibility = "visible";
		// }
		// else
		// {
			// node.style.visibility = "hidden";
		// }

		showElement(node, visible);
	}	
}


// function toggleClass(node, theClass, condition)
// {
	// //alert('old class: ' + node.className);
	// if(condition){
		// if(node.className.indexOf(theClass) == -1){
			// node.className = node.className + (node.className.length > 0 ? ' ' : '') + theClass
		// }
	// }
	// else {
		// node.className = node.className.replace(theClass, '')
	// }

	// //alert('new class: ' + node.className);
// }


function showElement(node, visible)
{
	

	if (node)
	{
		var display = "";
		var visibility = "";
	
		if (visible)
		{
			display = "block";
			visibility = "visible";
			//SetVisibleCookie(node.getElementsByTagName("A")[0]);
		}
		else
		{
			display = "none";
			visibility = "hidden";
			//RemoveVisibleCookie(node.getElementsByTagName("A")[0]);
		}
		
		node.style.visibility = visibility;
		node.style.display = display;
		
		var parentList = getParentElement(node, "UL");

		parentNode = getParentElement(node, "UL");
		
		if (parentNode != null) {
			showElement(parentNode, true);
		}
	}
}


function SetVisibleCookie(node){
	// //var c = GetCookie(visibleNodesCookie);
	// var c = "";
	
	// //c = c + node.href + separator;
	// c = c + node.href;
	
	//alert(node.href);
	
	SetCookie("VisibleNodes", node.href);
}


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);
