function nav_init(menuId) {
	navMenuId = menuId;
	curPage = '';
	var menu = document.getElementById(menuId);
	var menuItems = menu.getElementsByTagName('li');
	curMenus = document.getElementsByTagName('body')[0].className;
	curMenus = curMenus.split(' ');

	set_nav_handlers(menuItems);

	// Look for menu items that match body class
	// Note: ALL body classes MUST match a menu item id
	for (var i=0; i<curMenus.length; i++) {
		//alert ("current menu: " + curMenus[i]);
		curMenus[i] = document.getElementById(curMenus[i]);
		var c = curMenus[i];
		c.current = 1;
		c.onmouseover = null;
		c.onmouseout = null;
		nav_light(c);
	}
}

function set_nav_handlers(items) {
	for (var i=0; i<items.length; i++) {
		if (items[i].className.match(/\bhassub\b/)) {
			//alert('setting submenu for ' + items[i].id);
			items[i].submenu = items[i].getElementsByTagName('ul').item(0);
			//set_nav_handlers(items[i].submenu.getElementsByTagName('li'));
		}
		if (items[i].parentNode.id != navMenuId) {
			// we want the enclosing li, not ul
			var par = items[i].parentNode.parentNode;
			//if (i<3) alert("copying ancestors "+par.ancestors+" from " + par.id);
			//if (i<3 && par.ancestors) alert (par.id + " has " + par.ancestors.length + " ancestors")
			items[i].ancestors = par.ancestors;
			items[i].ancestors = items[i].ancestors.concat(par.id);
			//if (i<3) alert("ancestor of " + items[i].id + " = " + items[i].ancestors[items[i].ancestors.length-1]);
		} else {
			items[i].ancestors = Array();
		}
		items[i].onmouseover = nav_over;
		items[i].onmouseout = nav_out;
		items[i].getElementsByTagName('a')[0].onclick = nav_click;
	}
}

function nav_over () {
	if (this.current) return;

	if (curMenus) {
		for (var i=0; i<curMenus.length; i++) {
			var hideMenus = true;
			for (var j=0; j<this.ancestors.length; j++) {
				if (this.ancestors[j] == curMenus[i].id) {
					hideMenus = false;
				}
			}
			if (hideMenus) {
				//alert ("parent node " + this.parentNode.parentNode.id + " != " + curMenus[i].id);
				nav_dim(curMenus[i]);
			}
		}
	}
	nav_light(this);
}

function nav_light (nav) {
	var sty = nav.getElementsByTagName('a')[0].style;
	if (nav.parentNode.id == navMenuId) {
		sty.background = "white";
		sty.borderTopColor = "red";
		sty.borderBottomColor = "#555F64";
		sty.color = "black";
	} else {
		sty.background = "#E7F3F8";
		sty.color = "black";
	}
	if (!nav.submenu) return;
	//alert('showing submenu for ' + this.id);
	nav.submenu.style.visibility = 'visible';
}

function nav_out () {
	if (this.current) return;
	nav_dim(this);
	if (curMenus) {
		for (var i=0; i<curMenus.length; i++) {
			if (this.parentNode.id != curMenus[i].id) {
				nav_light(curMenus[i]);
			}
		}
	}
}

function nav_dim (nav) {
	if (nav.submenu) {
		//alert('hiding submenu for ' + this.id);
		nav.submenu.style.visibility = 'hidden';
	}
	var sty = nav.getElementsByTagName('a')[0].style;
	if (nav.parentNode.id == navMenuId) {
		sty.background = 'url("top_divider") right 3px no-repeat';
		sty.borderTopColor = "#ecf3f6";
		sty.borderBottomColor = "#CEDBE1";
		sty.color = "#555F64";
	} else {
		sty.background = "none";
		sty.color = "#555F64";
	}
}

function nav_click () {
	this.blur();
	// follow link unless there's a submenu
	if (!this.parentNode.submenu) return true;

	//alert ('found submenu for ' + this.id);

	return false;
}
