if(document.addEventListener) {
	document.write('<style type="text/css">.menuCell { padding: ' + intMenuCellPadding + 'px; cursor: pointer; }</style>');
	window.addEventListener("load", initMenus, false);
	window.addEventListener("resize", positionMenus, false);
} else if(document.all) {
	document.write('<style type="text/css">.menuCell { cursor: hand; }</style>');
	window.onload = initMenus;
	window.onresize = positionMenus;
} else if(document.layers) {
	window.onload = initMenus;
	window.onresize = positionMenus;
}

strLastOver = "";
timeDoMenu = "";
boolIsOver = false;
if(document.layers) {
	strShow = "show";
	strHide = "hide";
} else {
	strShow = "visible";
	strHide = "hidden";
}

function initMenus() {
	positionMenus();
}

function positionMenus() {
	if(document.layers) {
		intDocWidth = window.innerWidth - 74;
	} else if(document.body.clientWidth) {
		intDocWidth = document.body.clientWidth;
	} else if(document.body.offsetWidth) {
		intDocWidth = document.body.offsetWidth - 1;
	}
	for(var i in arMenus) {
		document.getElementById("Menu-" + i).style.left = ((intDocWidth - intPageWidth)/2) + arMenus[i];
	}
}

function doMenu(strWhich) {
	if(strWhich) {
		strWhich = strWhich.charAt(0).toUpperCase() + strWhich.substr(1, strWhich.length);
		if((strWhich != strLastOver) && (strLastOver)) {
			showMenu(strLastOver, strHide);
		}
		strLastOver = strWhich;
		if(timeDoMenu) { clearTimeout(timeDoMenu); }
		showMenu(strWhich, strShow);
	} else {
		strWhich = strLastOver;
		if(!boolIsOver) {
			timeDoMenu = setTimeout("showMenu('" + strWhich + "','" + strHide + "')", intHideTime);
		}
	}

	if(document.addEventListener) {
		objMenu = document.getElementById("Menu-" + strWhich);
		objMenu.addEventListener("mouseover", isOver, false);
		objMenu.addEventListener("mouseout", isOver, false);
	}
	if(document.all) {
		event.cancelBubble = true;
	}
}

function isOver(e) {
	boolIsOver = (e.type == "mouseover") ? true : false;
	if(boolIsOver) {
		doMenu(strLastOver);
	} else {
		doMenu();
	}
}

function showMenu(strWhich, strState) {
	var objMenu = document.getElementById("Menu-" + strWhich);
	if(strWhich.indexOf("-") != -1) {
		var strParent = "Menu-" + strWhich.substr(0, strWhich.indexOf("-"));
		var objParent = document.getElementById(strParent);
		objParent.style.visibility = strState;
		if(objMenu.style.visibility == strHide) {
			intNewLeft = parseInt(objParent.style.left) + widthRef("Menu-" + strWhich.substr(0, strWhich.indexOf("-")));
			if(intNewLeft + widthRef("Menu-" + strWhich) > intDocWidth) {
				intNewLeft = parseInt(objParent.style.left) - widthRef("Menu-" + strWhich) + 1;
				if((!document.all) && (!document.layers)) {
					intNewLeft += 1;
				}
			} else {
				if((document.all) || (document.layers)) {
					intNewLeft -= 1;
				}
			}
			objMenu.style.left = intNewLeft;
			var intNewTop = parseInt(objParent.style.top) + (intMenuHeight * (arMenus[strWhich] - 1));
			objMenu.style.top = intNewTop;
		}

		if(imgRef(strParent, "Img-" + strWhich)) {
			if(strState == strHide) {
				imgRef(strParent, "Img-" + strWhich).src = arrow_off.src;
			} else {
				imgRef(strParent, "Img-" + strWhich).src = arrow_on.src;
			}
		}
	}
	objMenu.style.visibility = strState;
}

function imgRef(strLayer, strName) {
	if(document.layers) {
		return document.layers[strLayer].document.images[strName];
	} else if(document.all) {
		return document.all[strName];
	} else if(document.getElementsByName) {
		return document.getElementsByName(strName)[0];
	}
}

// a document.getElementById method for non-compliant browsers.
if(!document.getElementById) {
	document.getElementById = function(strId) {
		if(document.layers) {
			var objOut = document.layers[strId];
			objOut.style = objOut;
			return objOut;
		} else if(document.all) {
			return document.all[strId];
		}
	}
}

// returns the height of a layer.
function widthRef(layerID) {
	if(document.layers) {
		return document.layers[layerID].document.width;
	} else if(document.all) {
		if((navigator.appVersion.indexOf("MSIE 4") != -1) && (navigator.appVersion.indexOf("Macintosh") != -1)) { // IE4/Mac is weird.
			if((document.all[layerID].style.paddingLeft) && (document.all[layerID].style.paddingRight)) {
				return(parseInt(document.all[layerID].style.pixelWidth) + parseInt(document.all[layerID].style.paddingLeft) + parseInt(document.all[layerID].style.paddingRight));
			} else {
				return(parseInt(document.all[layerID].style.pixelWidth));
			}
		} else {
			return document.all[layerID].offsetWidth;
		}
	} else if(document.getElementById) {
		return document.getElementById([layerID]).offsetWidth;
	}
}

