// JavaScript Document

var xmlHttp;
	
window.onload = function() {
	
	xmlHttp = GetXmlHttpObject();

	if (xmlHttp == null) {

		alert ("Your browser does not support AJAX!");
		return;
	
	} 
	
	var url="xml/submenu.xml";
	xmlHttp.onreadystatechange = stateChanged;
	xmlHttp.open("GET", url, true);
	xmlHttp.send('');

}

function GetXmlHttpObject() {

	var xmlHttp = null;

	try { // Firefox, Opera 8.0+, Safari
	
		xmlHttp = new XMLHttpRequest();
		xmlHttp.overrideMimeType('text/xml');
	
	}catch (e) {
	
		try { // Internet Explorer
		
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	 
		}catch (e) {
		
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			
		}
		
	}
	
	return xmlHttp;

}

function stateChanged() { 

	if (xmlHttp.readyState==4) { 

		buildMenu(xmlHttp.responseXML.documentElement.childNodes);
		
	}

}

//Function to generate menu
function buildMenu(x) {

	var list; //Store HTML output to display on page
	var nodes = x; //Level 1 links - x is the XML output from ajaxfunction
	var children; //Level 2 links
	var children2; //Level 3 linkz
	var subNum = 1;

	list = "<ul class='menu'>";

	//Loop through all level 1 nodes
	for (i=0; i< nodes.length; i++) {
		
		//If statement to do something to level 1 sub nodes
		if(nodes[i].nodeName == 'sub') {
			
			list += "<li id='sub"+i+"' class='hasSub'><a href='javascript:expand("+i+", 1)' id='sl'>"+nodes[i].getAttribute('name')+"</a>"; 
	
			children = nodes[i].childNodes; //Set children variable to an array of nodes that are children of nodes[i]
	
			list += "<ul class='hidez' id='c"+i+"'>";
			
			//Loop through all level 2 nodes that are children of nodes[i]
			for(x=0; x<children.length; x++) {
			
				//Level 2 link nodes that are children of nodes[i]
				if(children[x].nodeName == 'link') {
				
					list += "<li id='link2"+x+"' class='noSub'><a href='"+children[x].getAttribute("url")+"'>"+children[x].getAttribute("name")+"</a></li>"; 
				
				//Level 2 sub nodes that are children of nodes[i]
				}else if(children[x].nodeName == 'sub') {
					
					list += "<li id='sub2"+x+"' class='hasSub'><a href='javascript:expand("+x+", 2)' id='sl2'>"+children[x].getAttribute('name')+"</a>";
					
					children2 = children[x].childNodes; //Set children2 variable to an array of nodes that are children of children[x]
					
					list += "<ul class='hidez' id='d"+x+"'>";
					
					for(z=0; z<children2.length; z++) {
						
						if(children2[z].nodeName == 'link') {
							
						list +=  "<li id='link3"+z+"' class='noSub'><a href='"+children2[z].getAttribute("url")+"'>"+children2[z].getAttribute("name")+"</a></li>";
						
						}else if(children2[z].nodeName == 'br') {
			
							list += "<br />";
						
						}
					
					}
					
					list += "</ul>";
					
					subNum++;
					
				}else if(children[x].nodeName == 'br') {
			
					list += "<br />";
				
				}
			
			}
		
			list += "</ul>";
		
		}else if(nodes[i].nodeName == 'link') {
		
			list += "<li id='link"+i+"' class='noSub'><a href='"+nodes[i].getAttribute("url")+"' onClick='killCookie'>"+nodes[i].getAttribute("name")+"</a>";
			
		}else if(nodes[i].nodeName == 'br') {
			
			list += "<br />";
		
		}
		
		list += "</li>";
		
	}
	
	list += "</ul>"; //End main list
	
	document.getElementById('submenu').innerHTML = list; //Output content in list variable to subMenu Div on the page
	
	checkState();

}


function expand(e, p) {
		
	if(p == 1) {
		
		if(document.getElementById('sub'+e) != null) {
		
		var y = document.getElementById('c'+e);
		var z = document.getElementById('sub'+e);
		
		}
		
		if(y.className != 'hidez') {
			
			//Kill Cookie When Collapsing
			killCookie();
			
		}
		
	}else{
		
		if(document.getElementById('sub2' + e) != null) {
		
			var y = document.getElementById('d' + e);
			var z = document.getElementById('sub2' + e);
		
		}
		
	}
	
	if(y.className == 'hidez') {
		
		y.className = 'showz';
		z.className = 'hasSubExpanded';
		
		//Set Cookie
		var linkName = z.firstChild.innerHTML;
		setCookie("MSCnav", y.id + '_' + getPath() + '_' + linkName, 1);
	
	}else{

		y.className = 'hidez';
		z.className = 'hasSub';
		
		if(p == 2) {
			
			var linkName2 = y.parentNode.parentNode.parentNode.firstChild.innerHTML;
			setCookie("MSCnav", y.parentNode.parentNode.id + '_' + getPath() + '_' + linkName2, 1);
			
		}
		
	}
	
}

function getPath() {
	
	var path = String(window.location.pathname);
	path = path.substring(1,path.indexOf('/', 1));
	return(path);
	
}

function setCookie(c_name,value,expiredays) {
	
	var exdate = new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+
	((expiredays==null) ? "" : "; expires="+exdate.toLocaleString())

}

function getCookie(c_name) {
	
	if (document.cookie.length > 0) { 
	
		c_start=document.cookie.indexOf(c_name + "=");
		
			if (c_start!=-1) { 
			
				c_start=c_start + c_name.length+1 ;
				c_end=document.cookie.indexOf(";",c_start);
				
				if (c_end==-1) { 
				
					c_end=document.cookie.length;
					
				}
				
				return unescape(document.cookie.substring(c_start,c_end))
			
			} 
			
		}

	return "";
}


function checkState() {
	
	var urlCheck = getPath();
	var cookie = checkCookie();
	var node = cookie.substring(0, cookie.indexOf('_'));
	var url = cookie.substring(cookie.indexOf('_')+1, cookie.lastIndexOf('_'));
	var linkName = cookie.slice(cookie.lastIndexOf('_')+1);
	var expanded = document.getElementById(node);
	var previous = document.referrer;
	previous = previous.split("/", 4);
	
	if(expanded != null) {
		
		if(urlCheck == previous[3]) {
			
			var level = expanded.id.substring(0,1);
			var expNum = expanded.id.slice(1);
			var expandedNode;
			var expandedIcon;
			
			if(level == 'd' && linkName == document.getElementById('sub2'+expNum).firstChild.innerHTML) {
				
				expandedIcon = document.getElementById('sub2'+expNum);
				expandedIcon.className = 'hasSubExpanded';
				
				expandedNode = document.getElementById('d'+expNum);
				expandedNode.className = 'showz';
				
				expandedIcon.parentNode.className = 'showz';
				expandedIcon.parentNode.parentNode.className = 'hasSubExpanded';
				
			}else if(linkName == document.getElementById('sub'+expNum).firstChild.innerHTML) {
				
				expandedIcon = document.getElementById('sub'+expNum);
				expandedIcon.className = 'hasSubExpanded';
				
				expandedNode = document.getElementById('c'+expNum);
				expandedNode.className = 'showz';
			
			}
			
		}
	
	}
	
}

function checkCookie() {
	
	var name=getCookie('MSCnav');
	
	if (name!=null && name!="") {
		
		
		
	}
	
	return(name);
	
}

function killCookie() {
	
	var exdate = new Date();
	exdate.setDate(exdate.getDate());
	 document.cookie="MSCnav=null;expires="+exdate.toLocaleString();
	
}

function getURL(url) {
	
	killCookie();
	window.location.href = url;
	
}

//Function to work around the problem with exProxy links in Contribute
function ezProxy(url) {
	
	var url = 'http://ezproxy.maconstate.edu/login?url=http://'+url
	window.location = url;
	
}
