function initNav(selectMenuPage) {
	// makes sure dynamic images get loaded into cache as soon as possible to minimize display artifacts
	var imagePreload = new Array
	(
		"../images/tab_bg.gif",
		"../images/tab_bg_selected.gif",
		"../images/tab_bg_hover.gif"
	);
	var i,x;
	for (i in imagePreload) {
		var img = new Image();
		img.src = imagePreload[i];
	}

	// Find current page and mark with correct styles
	var navContainerId = "menu";

	var page = new String(window.location);
	if (selectMenuPage == "" || selectMenuPage == null) {
		if (page.indexOf('index.php') != -1) {
			page = page.replace(/\/index.php/g, "")+"/";
		}
		page = page.replace(/\?.*/,"");
	} else {
		page = page.replace(/[^\/]+$/,selectMenuPage);
	}

	var navItemSelected;
	var subNavItemSelected;
	var navItem;
	var subNavItem;
	var tabAnchor;
	var subNavAnchor;
	var subNavItemsContainer;
	var subNavItems;
	var navContainer = document.getElementById(navContainerId); //menu
	var navItems = $(navContainer).select('[class~="navItem"]');
	for (i=0; i<navItems.length; i++) {
		navItem = $(navItems[i]);
		tabAnchor = navItem.select('a')[0];
		subNavItems = navItem.select('[class~="subNavItems"]');
		if (subNavItems.length > 0) {
			subNavItemsContainer = $(subNavItems[0]);
		} else {
			subNavItemsContainer = null; // signal that we should not try to display the submenu since it doesn't exist
		}
		if (page == tabAnchor.href) {
			navItemSelected = navItem;
		}
		if (subNavItems.length > 0) {
			// look for sub item seleted. Could be the same as the tab selected
			subNavItems = subNavItemsContainer.select('[class~="subNavItem"]');
			for (x=0; x<subNavItems.length; x++) {
				subNavItem = $(subNavItems[x]);
				subNavAnchor = subNavItem.select('a')[0];
				if (page == subNavAnchor.href) {
					subNavItemSelected = subNavItem;
					navItemSelected = navItem;
					break; // found the current sub page, break the loop
				}
			}
			if (navItemSelected != null) {
				break; // We already found the current page, break the loop
			}
		} else {
			subNavItemsContainer = null; // signal that we should not try to display the sub menu, since there isn't one
			if (navItemSelected != null) {
				break; // Done. This is the right tab and we checked the sub menu to see if it should be highlighted as well. Break out of loop.
			}
		}
	}	
	if (navItemSelected != null) {
		navItemSelected.addClassName('selected');
	}
	if (subNavItemSelected != null) {
		subNavItemSelected.select('a')[0].addClassName('selected');
	}
	if (subNavItemsContainer != null) {
		subNavItemsContainer.addClassName('displayInline');
	}
	

	var navItemSiblings;
	var navItemParent;
	navContainerId = "sideNavigation";
	navContainer = document.getElementById(navContainerId);
	if (navContainer != null) {
		navItems = $(navContainer).select('a');
		for (i=0; i<navItems.length; i++) {
			navItem = $(navItems[i]);
			if (navItem.href == page) {
				navItem.addClassName('selected');
				navItemSiblings = navItem.siblings();
				for (x=0; x < navItemSiblings.length; x++) {
					if (navItemSiblings[x].hasClassName('sideSubNavItems')) {
						navItemSiblings[x].removeClassName('hidden');
					}
				}
				navItemParent = $(navItem.parentNode.parentNode);
				if (navItemParent.hasClassName('sideSubNavItems')) {
					navItemParent.removeClassName('hidden');
				}
			}
		}
	}
}

function navRollOver(e) {
	e = $(e);
	if (e.hasClassName('selected') || e.hasClassName('mouseOver')) {
		// Nothing to do
		return;
	}
	var showing = $('menu').select('[class~="displayInline"]');
	for (var i = 0; i < showing.length; i++) {
		if (!$(showing[i]).hasClassName('displayNone')) {
			$(showing[i].addClassName('displayNone'));
		}
	}
	e.addClassName('mouseOver');
	$('subMenuFiller').addClassName('mouseOver');
	var subNavItems = e.select('[class~="subNavItems"]');
	if (subNavItems.length > 0) {
		$(subNavItems[0]).addClassName('subSelected');
	}
}

function navRollOut(e) {
	e = $(e);
	if (e.hasClassName('selected')) {
		// nothing to do
		return;
	}
	e.removeClassName('mouseOver');
	var subNavItems = e.select('[class~="subNavItems"]');
	if (subNavItems.length > 0) {
		$(subNavItems[0]).removeClassName('subSelected');
	}
	$('subMenuFiller').removeClassName('mouseOver');
	var hidden = $('menu').select('[class~="displayNone"]');
	for (var i = 0; i < hidden.length; i++) {
		$(hidden[i].removeClassName('displayNone'));
	}
}
