subnav_links = new Array("subnav_about_div", "subnav_programs_div", "subnav_people_div");

function showSubMenu(toShow) {
	return function() {
		clearSubMenus();
		elem = document.getElementById(toShow);
		elem.style.display = "block";
	};
}

function hideSubMenu(toHide) {
	return function(e) {
		if(checkOnMouseOut(e)){
			elem = document.getElementById(toHide);
			elem.style.display = "none";
		}
	};
}

function onLoad() {
	//Grab elements that spawn a submenu, and the submenus themselves
	elem_about = document.getElementById("nav_about");
	elem_sn_about = document.getElementById("subnav_about_div");
	elem_programs = document.getElementById("nav_programs");
	elem_sn_programs = document.getElementById("subnav_programs_div");
	elem_people = document.getElementById("nav_people");
	elem_sn_people = document.getElementById("subnav_people_div");
	
	//Grab all other links that do not spawn a sub menu
	elem_home = document.getElementById("nav_home");
	elem_events = document.getElementById("nav_events");
	elem_newsletter = document.getElementById("nav_newsletter");
	elem_links = document.getElementById("nav_links");
	elem_contactus = document.getElementById("nav_contactus");
	
	//Register events that show/hide a submenu
	registerEvent(elem_about, "mouseover", showSubMenu(subnav_links[0]), false);
	registerEvent(elem_sn_about, "mouseout", hideSubMenu(subnav_links[0]), false);
	registerEvent(elem_programs, "mouseover", showSubMenu(subnav_links[1]), false);
	registerEvent(elem_sn_programs, "mouseout", hideSubMenu(subnav_links[1]), false);
	registerEvent(elem_people, "mouseover", showSubMenu(subnav_links[2]), false);
	registerEvent(elem_sn_people, "mouseout", hideSubMenu(subnav_links[2]), false);	

	//Register events on elements that don't spawn a submenu to hide all submenus when moused over
	registerEvent(elem_home, "mouseover", clearSubMenus, false);
	registerEvent(elem_events, "mouseover", clearSubMenus, false);
	registerEvent(elem_newsletter, "mouseover", clearSubMenus, false);
	registerEvent(elem_links, "mouseover", clearSubMenus, false);
	registerEvent(elem_contactus, "mouseover", clearSubMenus, false);
	
}

//Clears all submenus from the screen
function clearSubMenus() {
	for(i = 0; i < subnav_links.length; i++){
		elem = document.getElementById(subnav_links[i]);
		elem.style.display = "none";
	}
}

//Checks if an 'onmouseout' event is truly triggered by leaving the div
//Inspired by http://www.quirksmode.org/js/events_mouse.html
function checkOnMouseOut(e) {
	if(!e) e = window.event;
	targ = (window.event) ? e.srcElement : e.target;
	if(targ.nodeName != "DIV") return false;
	reltarget = (e.relatedTarget) ? e.relatedTarget : e.toElement;
	while(reltarget != targ && reltarget.nodeName != 'BODY'){
		reltarget = reltarget.parentNode;
	}
	if(reltarget == targ) return false;
	return true;
}

//Registers an event on either mozilla-like browsers or IE
function registerEvent(element, action, func, bool) {
	if(document.addEventListener){
		element.addEventListener(action, func, bool);
	}else if(document.attachEvent){
		element.attachEvent("on" + action, func);
	}
}