// JavaScript Document

var xOffset = 0;
var yOffset = 30;

var navBarItemIds = new Array();
var timeoutMenu = "";
var menuTimeoutId = 0;

function constructNavBar(items) {
	var i;
	var navBar = "";
	
	for (i in items) {
		//Add the nav bar item's table cell.
		navBar += "<td id='" + items[i].id + "' onmouseover='navBarItemOver(this);' onmouseout='navBarItemOut(this);'><a href='" + items[i].href + "'>" + items[i].text
		if (items[i].menu != null) {
			navBar += "<span style='font-weight: normal;'>&nbsp;&raquo;</span>"
		}
		navBar += "</a></td>"
		
		//Construct the nav's menu.
		if (items[i].menu != null) {
			constructNavMenu(items[i].id, items[i].menu);
		}
	}
	
	navBar = "<div class='navbar'><table border='0' cellspacing='0' cellpadding='0'><tr>" + navBar + "</tr></table></div>"
	
	//alert(navBar);
	
	document.write(navBar);
}

function constructNavMenu(id, items) {
	//Add the menu to the list;
	navBarItemIds[navBarItemIds.length] = id;

	//Write the menu HTML
	document.write(
		"<table border='0' cellspacing='0' cellpadding='0' " +
		"id='" + id + "_menu' class='navmenu' " +
		"onmouseover='menuOver(this);' " + 
		"onmouseout='menuOut(this);'" +
		">" +
		getMenuTableRows(items) + 
		"</table>"
	);	
}

function getMenuTableRows(items) {
	var i;
	var menuTableRows = "";
	
	for (i in items) {
		//menuTableRows += "<tr><td onclick='document.location.href=\"" + items[i].href + "\";' onmouseover='menuItemOver(this);' onmouseout='menuItemOut(this);'>" + items[i].text + "</td></tr>";
		menuTableRows += "<tr><td><a href='" + items[i].href + "'>" + items[i].text + "</a></td></tr>";	
	}
	
	return menuTableRows;
}

function positionMenus() {
	var i;
	
	for (i in navBarItemIds) {
		//Get the coords of the menu parent.
		var x = getAbsX(document.getElementById(navBarItemIds[i]));
		var y = getAbsY(document.getElementById(navBarItemIds[i]));
		
		//Set the menu coords.
		document.getElementById(navBarItemIds[i] + "_menu").style.left = "" + (x + xOffset) + "px";
		document.getElementById(navBarItemIds[i] + "_menu").style.top = "" + (y + yOffset) + "px";
		//document.getElementById(menus[i] + "_menu").style.zIndex = 2000;
	}
}

// get the true offset of anything on NS4, IE4/5 & NS6, even if it's in a table!
function getAbsX(elt) { return (elt.x) ? elt.x : getAbsPos(elt,"Left"); }
function getAbsY(elt) { return (elt.y) ? elt.y : getAbsPos(elt,"Top"); }
function getAbsPos(elt,which) {
 iPos = 0;
 while (elt != null) {
  iPos += elt["offset" + which];
  elt = elt.offsetParent;
 }
 return iPos;
}

function showMenu(e) {
	document.getElementById(e.id).style.backgroundColor = "#3b7856";
	var menu = document.getElementById(e.id + "_menu");
	if (menu != null) {
		menu.style.display = "block";
	}
}

function hideMenu(id) {
	timeoutMenu = "";
	document.getElementById(id).style.backgroundColor = "transparent";
	var menu = document.getElementById(id + "_menu");
	if (menu != null) {
		menu.style.display = "none";
	}
}

// NavBarItem --------------------------------------------------------------------------------------

function navBarItemOver(e) {
	if (timeoutMenu == (e.id + "_menu")) {
		//The menu is already open; we just moved out of it.
		//Cancel the pending menu close.
		timeoutMenu = "";
		clearTimeout(menuTimeoutId);
	}
	else {
		//The menu is not open yet.
		//Show the menu.
		showMenu(e);
	}
}

function navBarItemOut(e) {
	//Schedule the menu to close in 0.5 seconds.
	timeoutMenu = e.id + "_menu";
	menuTimeoutId = setTimeout("hideMenu('" + e.id + "');", 1);
}

//--------------------------------------------------------------------------------------------------

function menuOver(e) {
	if (timeoutMenu == e.id) {
		//The menu is already open; we just moved out of nav.
		//Cancel the pending menu close.
		timeoutMenu = "";
		clearTimeout(menuTimeoutId);
	}
}

function menuOut(menu) {
	var id = menu.id.substr(0, menu.id.length - 5);
	//Schedule the menu to close in 0.5 seconds.
	timeoutMenu = menu.id;
	menuTimeoutId = window.setTimeout("hideMenu('" + id + "');", 1);
}

function menuItemOver(e) {
	e.style.backgroundColor = "#3b7a56";
}

function menuItemOut(e) {
	e.style.backgroundColor = "transparent";
}
