// JavaScript Document

/***********************************************
* TDMenu- Controls a two level navigation menu
***********************************************/

function displayHeader(headerLocation, headerDiv) {
	var pars = 'dummyParameter=ABC'; // Prototype throws an error without parameters field containing something
	var theAjaxMenu = new Ajax.Updater(headerDiv, headerLocation, {method: 'get', parameters: pars, evalScripts: true});	
	return true;
}

function initMenu(menuCellPrefix, subMenuPrefix, subMenuCellPrefix, initialMenuCellIndex, initialSubMenuCellIndex) {
	// parameters expect that the divs for each cell of the top level menu (menuCells) and their subMenus are named with the same prefix appended by an index number.
	menuCell = new Array(); // holds div ids of menuCells top level menu
	subMenu = new Array(); // holds div ids of container of subMenus for each menuCell
	subMenuCell = new Array(); // holds div ids of subMenuCells for each subMenu
	menuCellDefaultClass = menuCellPrefix; // Class name in stylesheet that defines formating for unselected menuCells
	subMenuCellDefaultClass = subMenuCellPrefix; // Class name in stylesheet that defines formating for unselected subMenuCells 
	selectedMenuCellIndex = initialMenuCellIndex; // the selectedMenuCellIndex represents the last selected menuCell
	selectedSubMenuCellIndex = initialSubMenuCellIndex; // the selectedMenuCellIndex represents the last selected subMenuCell
	var i = 0;
	var menuCellDivID = menuCellPrefix + '_' + i;
	var subMenuDivID;
	var subMenuCellDivID;
	while ($(menuCellDivID)) { //keep incrementing i until we've exhausted all menuCells with the menuCellDivIDprefix
		menuCell[i] = menuCellDivID;
		subMenuDivID = subMenuPrefix + '_' + i;
		if ($(subMenuDivID) != null) { //if there is a subMenu defined for this menuCell, store in subMenu array
			subMenu[i] = subMenuDivID;
			var j = 0;
			subMenuCell[i] = new Array();
			subMenuCellDivID = subMenuCellPrefix + '_' + i + '_' + j;
			while ($(subMenuCellDivID)) { //keep incrementing j until we've exhausted all subMenuCells for this subMenu
				subMenuCell[i][j] = subMenuCellDivID;
				j++;
				subMenuCellDivID = subMenuCellPrefix + '_' + i + '_' + j;
			}
		}
		else {
			subMenu[i] = -1; // if there is no subMenu for this menuCell, store a flag indicating so
		}
		i++; // increment i and check for more menuCells of top level menu...
		menuCellDivID = menuCellPrefix + '_' + i;
	}
	if (menuCell.length == 0) {
		return false;
	}
	else {
		setMenuState(initialMenuCellIndex, initialSubMenuCellIndex); // hilight appropriate menu and submenu cells
		return true;
	}
}

function setMenuState(menuCellIndex, subMenuCellIndex) {
	// deselect menuCells and turn off subMenus
	for (i=0; i < menuCell.length; i++) {
		$(menuCell[i]).className = menuCellDefaultClass; // turn off any state indicators of previous subMenu traversal
		if ($(subMenu[i]) && (subMenu[i] != -1)) {
			$(subMenu[i]).style.display = 'none'; // turn off display of all existing subMenus
			for (j=0; j < subMenuCell[i].length; j++) {
				$(subMenuCell[i][j]).className = subMenuCellDefaultClass; // turn off any state indicators of previous subMenu traversal
			}
		}
	}
	// everything is deselected, now display and select the appropriate menuCell, subMenu (if any), and subMenuCell
	if ($(menuCell[menuCellIndex])) {
		$(menuCell[menuCellIndex]).className = menuCellDefaultClass + '_selected';
		selectedMenuCellIndex = menuCellIndex; // the selectedMenuCellIndex represents the last selected menuCell
		if ($(subMenu[menuCellIndex]) && (subMenu[menuCellIndex] != -1)) {
			$(subMenu[menuCellIndex]).style.display = 'block'; // turn on display of appropriate subMenu
			if ($(subMenuCell[menuCellIndex][subMenuCellIndex])) {
				$(subMenuCell[menuCellIndex][subMenuCellIndex]).className = subMenuCellDefaultClass + '_selected';
				selectedSubMenuCellIndex = subMenuCellIndex; // the selectedMenuCellIndex represents the last selected subMenuCell
			}
		}
	}
}


function menuCellMouseOver(menuCellIndex) {
	for (i=0; i < menuCell.length; i++) {
		$(menuCell[i]).className = menuCellDefaultClass; // turn off any state indicators of previous subMenu traversal
		if (subMenu[i] != -1) {
			$(subMenu[i]).style.display = 'none'; // turn off display of all existing subMenus
		}
	}
	if (subMenu[menuCellIndex] != -1) {
		//currentSubMenuIndex = menuCellIndex;
		$(subMenu[menuCellIndex]).style.display = 'block'; // turn on display of appropriate subMenu
	}
	return true;
}

/*function menuCellMouseOut(menuCellIndex) {
}*/

function subMenuMouseOver(theLink, menuCellIndex) {
    var theOriginatingTarget =  theLink; 
    if (theOriginatingTarget.id != subMenu[selectedMenuCellIndex]) { // multiple child nodes to the subMenu div will throw events that call this script, but we only care about the 1st one
		selectedMenuCellIndex = menuCellIndex; // update the menu state, further events will now be ignored
		for (var i=0; i < menuCell.length; i++) {
			$(menuCell[i]).className = menuCellDefaultClass; // de-select all main level menuCells by setting class to default value
		}	
		$(menuCell[menuCellIndex]).className = menuCellDefaultClass + '_selected'; // hilight the subMenu's parent menuCell  by altering its CSS class name
	}
}


function subMenuMouseOut(subMenuIndex) {
	$(subMenu[subMenuIndex]).style.display = 'none'
}



