// CSS class for nav menus
CSS_NAV = "nav";
// CSS class for active link
CSS_NAV_ACTIVE = "active";

function init(e) {
	// Set sidebar links active
	( function() {
		var sidebar = document.getElementById("sidebar");
		if ( !sidebar ) return;
		
		var nav;
		
		for ( var i = 0; i < sidebar.childNodes.length; i++ ) {
			if ( sidebar.childNodes[i].className && eval("/(?:\\s|^)"+CSS_NAV+"(?:\\s|$)/").test(sidebar.childNodes[i].className) ) {
				nav = sidebar.childNodes[i];
				break;
			}
		}
		if ( !nav ) return;
		
		var ul = ( function() { 
			var r = []; 
			var n = sidebar.getElementsByTagName("UL");
			for ( var i = 0; i < n.length; i++ ) r.push(n[i]);
			return r;
		} )();
		var root = [];
		for ( i = 0; i < ul.length; i++ ) {
			if ( ul[i].parentNode.tagName == "LI" ) ul[i].style.display = "none";
			else root.push(ul[i]);
		}
		
		var url = /^((http|https):\/\/([A-Za-z0-9\-\.]*)\/(.*\/)?)([^\/\?#\:]*)(\:[0-9]+)?(\?(.*))?(#(.*))?$/.exec(window.location.href);
		var script_name = url[5];
		
		var done = false;
		
		for ( i = 0; i < root.length; i++ ) {
			( function find_active_page(ul) {
				if ( done ) return;
										
				var li = [];
				for ( var i = 0; i < ul.childNodes.length; i++ ) if ( ul.childNodes[i].tagName == "LI" ) li.push(ul.childNodes[i]);
				
				var a;
				var href;
				
				var i;
				var j;
				
				var sub_ul;
				
				for ( i = 0; i < li.length; i++ ) {
					sub_ul = [];
					for ( j = 0; j < li[i].childNodes.length; j++ ) if ( li[i].childNodes[j].tagName == "UL" ) {
						find_active_page(li[i].childNodes[j]);
						sub_ul.push(li[i].childNodes[j]);
					}
					
					a = li[i].getElementsByTagName("A");
					if ( a.length > 0 ) {
						href = /\/([^\/]*)$/.exec(a[0].href);
						if ( href && script_name == href[1] ) {
							var classes = li[i].className.split(" ");
							classes.push(CSS_NAV_ACTIVE);
							li[i].className = classes.join(" ").replace(/\s+/, " ").replace(/^\s+|\s+$/, "");
							a[0].onclick = function(e) { return false; };
							
							for ( j = 0; j < sub_ul.length; j++ ) sub_ul[j].style.display = "block";
							
							elem = li[i];
							while ( ( elem = elem.parentNode ) && !eval("/(?:\\s|^)"+CSS_NAV+"(?:\\s|$)/").test(elem.className) ) {
								if ( elem.tagName == "UL" ) elem.style.display = "block";
							}
							
							done = true;
							
							return;
						}
					}
				}
			} )(root[i]);
		}
	} )();
}

if ( window.addEventListener ) window.addEventListener("load", init, false);
else window.attachEvent("onload", init);
