/*-------------------------------------------------
 * This script provides dynamic layer-based menu
 *
 * author DANNZON
 * version 1.0
 * created 05-02-2001
 * last modified 05-02-2001 by DANNZON
 *-----------------------------------------------*/
 
 /*----------------------------------------------
  * Initialises the menu
  * Sets up browser-dependent property value names,
  * loads the menu arrays for the multi-level menus
  *----------------------------------------------*/
function initMenu() {
	if(document.all) {
		// MSIE
		strHide = "hidden";
		strShow = "visible";
		document.body.onclick = activateMenu;
	} else if(document.layers) {
		// Netscape
		strHide = "hide";
		strShow = "show";
		window.captureEvents(Event.MOUSEUP);
		window.onmouseup = activateMenu;
	}
	
	// keep the index of the currently open menu item
	intActiveMenu = 0;	
	
	// Arrays contain the list of open items (for multi-level)
	arMenu1List = new Array("menu1");
	arMenu2List = new Array("menu2");
	arMenu3List = new Array("menu3");
	arMenu4List = new Array("menu4");
	arMenu5List = new Array("menu5");
	arMenu6List = new Array("menu6");
	arMenu7List = new Array("menu7");
	arMenu8List = new Array("menu8");
	
}

/*----------------------------------------------------
 * Utility function. Returns a browser-independent 
 * reference to the layer's style object
 *----------------------------------------------------*/
function styleRef(layerID) {
	if(document.layers) {
		// Netscape
		return document.layers[layerID];
	}
	else if(document.all) {
		// MSIE
		return document.all[layerID].style;
	}
}

/*----------------------------------------------------
 * Clears a menu item chain
 *--------------------------------------------------*/
function clearMenu(intItem) {
	if(intItem == intActiveMenu) {
	// if this item is open..

		// get the list of menu layers
		arMenuList = eval("arMenu" + intItem + "List");

		// traverse the entire open chain		
		for(var i=0; i < arMenuList.length; i++) {
			strCurrLayer = arMenuList[i];
			styleRef(strCurrLayer).visibility = strHide;
			intActiveMenu = 0;
		}
	}
}

/*-----------------------------------------------------
 * Shows a single menu item
 *----------------------------------------------------*/
function activateMenu(intItem) {
	if(intItem != intActiveMenu) {
	// If it is not open already..
		if((!intItem) || (typeof intItem == "object")) {
		// if it does not exist or not a number, chose the one already open
			intItem = intActiveMenu;
		}
	
		if(intActiveMenu != 0) {
		// If anything is open..
			//.. close it
			clearMenu(intActiveMenu);
			if(intItem == intActiveMenu) {
			// Double select closes the item
				intActiveMenu = 0;
				intItem = 0;
			}
		}

		if(intItem != intActiveMenu) {		
		// If it not open already..
			// get the refernce to the layer to open
			element = styleRef("menu" + intItem);
			
			// Determine location of the layer dependiing on the browser
			if (document.all) {
			// MSIE
				if (navigator.appVersion.indexOf('MSIE 5') == -1) {
				// Before MSIE 5.0
					element.pixelLeft = document.images.menuimg.offsetParent.offsetParent.offsetParent.offsetLeft + document.images.menuimg.offsetWidth;
				}
				else {
				// MSIE 5.0	
					element.pixelLeft = document.images.menuimg.offsetParent.offsetParent.offsetLeft + document.images.menuimg.offsetWidth;
				}
			}
			else {
			// Netscape
				element.left = document.anchors.menulink.x + document.images.menuimg.width;
			}
			
			// Open the item
			element.visibility = strShow;		
			intActiveMenu = intItem;
		}
	}
}