// Nav Globals
var debug = false;
var initialized = false;
var menu = new Array();
var menuOn = new Array();
var timer = new Array();
var menuImgName = new Array();
var menuImgOnSrc = new Array();
var menuImgOverSrc = new Array();
var menuImgOffSrc = new Array();
var defaultMenu = -1;
var mainMenuCount = 4;
var intHidMenuTimeout = 80;
var boolLeaveMenuOn = true;
var boolMenuIsImage = true;
var boolMenuImageOverState = false;

// initializes the menus into an array
function initNav(defMenu) {
	var numberPad = '';
	
	for (var i = 1; i <= mainMenuCount; i++) {
		if (i < 10) {
			numberPad = '0';
		}
		else {
			numberPad = '';
		}
		menu[i] = 'menu' + numberPad + i;
		// Find out if we need to reset the position for this element
		var obj1;
		var obj2;
		if ( (obj1 = MM_findObj (menu[i]) ) != null ) {
			if ( (obj2 = MM_findObj ('menu' + numberPad + i + 'RelativePosition') ) != null ) {
				obj1.style.left = findPosX (obj1) + findPosX (obj2) + 'px';
				obj1.style.top = findPosY (obj1) + findPosY (obj2) + 'px';
			}
		}
		menuOn[i] = false;
		timer[i] = null;
		if (boolMenuIsImage) {
			menuImgName[i] = 'image' + numberPad + i;
			menuImgOnSrc[i] = 'image' + numberPad + i + 'on';
			if (boolMenuImageOverState) {
				menuImgOverSrc[i] = 'image' + numberPad + i + 'over';
			}
			menuImgOffSrc[i] = 'image' + numberPad + i + 'off';
		}
	}
	
	if (defMenu != -1) {
		defaultMenu = defMenu;
	}
	initialized = true;
	clearMenus();
} // initNav()

// menuMouseOut and menuMouseOver should be the only functions called from
// the HTML pages

// mouse over event for a menu or menu item
function menuMouseOver(i) {
	if (initialized) {
		showMenu(i);
		return true;
	}
	else {
		if (debug) {
			alert("menuMouseOver() - initialize failed.");
		}
		return false;
	}
} // menuMouseOver()

// mouse out event for a menu or menu item
function menuMouseOut(i) {
	if (initialized) {
		if (boolLeaveMenuOn && i == defaultMenu) {
			return true;
		}
		else {
			menuOn[i] = false;
			timer[i] = setTimeout('hideMenu(' + i + ')', intHidMenuTimeout);
			return true;
		}
	}
	else {
		if (debug) {
			alert("menuMouseOut() - initialize failed.");
		}
		return false;
	}
} // menuMouseOut()

// Clears all top Nav highlights
function clearMenus() {
	var stillMenu = false;
	var curMenu = defaultMenu;
	
	if (initialized) {
		for (var i = 1; i <= mainMenuCount; i++) {
			if (menuOn[i] == false) {
				if (boolMenuIsImage) {
					changeImages(menuImgName[i], menuImgOffSrc[i]);
				}
			}
			else {
				stillMenu = true;
				curMenu = i;
			}
		}
		
		if (! stillMenu) {
			if (defaultMenu != -1) {
				if (boolMenuIsImage) {
					changeImages(menuImgName[defaultMenu], menuImgOnSrc[defaultMenu]);
				}
				if (boolLeaveMenuOn && defaultMenu != -1 && ! menuOn[defaultMenu]) {
					showMenu(defaultMenu);
				}
			}
		}
		else {
			if (boolLeaveMenuOn && defaultMenu != -1 && curMenu != defaultMenu) {
//				menu[defaultMenu].style.position = hidden_postition;
				MM_showHideLayers(menu[defaultMenu], '', 'hide');
			}
		}
		return true;
	}
	else {
		if (debug) {
			alert("clearMenus() - initialize failed.");
		}
		return false;
	}
} // clearMenus()

// hide menu
function hideMenu(i) {
	clearTimeout (timer[i])
	if (menuOn[i]) {
		// menu now showing again - return
		return true;
	}
	else {
		clearMenus();
		if (menu[i]) {
			MM_showHideLayers(menu[i], '', 'hide');
		}
		return true;
	}
} // hideMenu()

function showMenu(i) {
	// first thing - clear the timer
	clearTimeout (timer[i]);
	if (menuOn[i] == false) {
		if (i != defaultMenu && boolLeaveMenuOn && defaultMenu != -1) {
			menuOn[defaultMenu] = false;
			MM_showHideLayers(menu[defaultMenu], '', 'hide');
			if (boolMenuIsImage) {
				changeImages(menuImgName[defaultMenu], menuImgOffSrc[defaultMenu]);
			}
		}

		if (menu[i]) {
			MM_showHideLayers(menu[i], '', 'show');
			if (boolMenuIsImage) {
				if (boolMenuImageOverState && i != defaultMenu) {
					// show roll if avaliable and not default menu
					changeImages(menuImgName[i], menuImgOverSrc[i]);
				}
				else {
					changeImages(menuImgName[i], menuImgOnSrc[i]);
				}
			}
		}
		menuOn[i] = true;
		clearMenus();
	}
	return true;
} // showMenu()
