/*
			navmenu.js
			for Eileen Gunn website
*/

window.onload = jsNavmenuInit;


//==============================
//	initialize navigation menu
//==============================
function jsNavmenuInit()
{
	//bDebugFlag = true;
	jsDebugAlert("function jsNavmenuInit()");

		// bail if we don't speak the same language
		if (!document.getElementById) return;

	// get the nav menu
	var oMenu = document.getElementById("navmenu");
	
	//oMenu.onmouseout = jsNavmenuSelectBranch;

	// initialize it
		if (oMenu) jsNavmenuInitLevel(oMenu);

	document.getElementById("sitehead").onmouseover = jsNavmenuSelectLeaf;
	document.getElementById("news").onmouseover = jsNavmenuSelectLeaf;
	document.body.onmouseover = jsNavmenuSelectLeaf;
	

bDebugFlag = 0;
}



//===========================
function jsNavmenuInitLevel(argMenu)
//===========================
// Pass:  a UL element containing a menu
{
jsDebugAlert("function jsNavmenuInitLevel(argMenu)");

	// begin with the first list item
	var oItem = argMenu.firstChild;

jsDebugAlert("typeof(oItem) = " + typeof(oItem));
jsDebugAlert("oItem.nodeName = " + oItem.nodeName);

		// if not a list item, it's an empty list, so we're done
		if (oItem.nodeName != "LI") return jsDebugAlert("UL first child not an LI, it's " + oItem.tagName);

	// do this all items in this menu:
	do
	{
		// check for a submenu (we're asking for an array even though we're expecting only one)
		var aSubmenus = oItem.getElementsByTagName("UL");
			if (aSubmenus && (aSubmenus.length > 0))
			{
				// yes, the item has a submenu
				jsDebugAlert("Item: " + oItem.firstChild.innerText + "\n" + "has a submenu");

				// behavior = menu
				oItem.onmouseover = jsNavmenuSelectBranch;
				//aSubmenus[0].onmouseover = jsNavmenuSelectBranch;

				// now run this function on the next level
				jsNavmenuInitLevel(aSubmenus[0]);

			// no, the item has no submenu
			} else if (oItem) {
				jsDebugAlert("Item: " + oItem.firstChild.innerText + "\n" + "is a leaf");

				// behavior = leaf link
				oItem.onmouseover = jsNavmenuSelectLeaf;
			}

		// get next list item
		oItem = oItem.nextSibling;
			if (oItem) jsDebugAlert("nextSibling = " + oItem.tagName);
			else jsDebugAlert("nextSibling = " + oItem);
	}
	// stop when we've run out of menu items
	while (oItem)

//bDebugFlag=0
}

//==============================
// activate a sub-menu
//==============================
function jsNavmenuSelectBranch(evt)
{
		// cancel event bubbling
		if (evt) 
		{
			event = evt;
		}
		event.cancelBubble = true;

	// set the parent class = this.id to trigger CSS styles
		if (this.id) document.getElementById("navmenu").className = this.id;	//"navmenuSelected";
	//alert("navmenu class = " + document.getElementById("navmenu").className);
}


//==============================
// activate a menu leaf
//==============================
function jsNavmenuSelectLeaf(evt)
{
		// cancel event bubbling
		if (evt) 
		{
			event = evt;
		}
		event.cancelBubble = true;

	// set the parent class = this.id to trigger CSS styles
	if (this.id) document.getElementById("navmenu").className = this.id;
}



