// global menu state
var MenuReady = false;

// precache menubar image pairs
if (document.images) {
	var imagesNormal = new Array();
	imagesNormal["masg"] = new Image(32,80);
	imagesNormal["masg"].src = "images/txt_massage5_off.gif";
	imagesNormal["cont"] = new Image(32,130);
	imagesNormal["cont"].src = "images/txt_contact5_off.gif";
	imagesNormal["emil"] = new Image(32,130);
	imagesNormal["emil"].src = "images/txt_email5_off.gif";
	imagesNormal["link"] = new Image(32,70);
	imagesNormal["link"].src = "images/txt_links5_off.gif";
	imagesNormal["home"] = new Image(32,70);
	imagesNormal["home"].src = "images/txt_home5_off.gif";

	var imagesHilite = new Array();
	imagesHilite["masg"] = new Image(32,80);
	imagesHilite["masg"].src = "images/txt_massage5_on.gif";
	imagesHilite["cont"] = new Image(32,130);
	imagesHilite["cont"].src = "images/txt_contact5_on.gif";
	imagesHilite["emil"] = new Image(32,130);
	imagesHilite["emil"].src = "images/txt_email5_on.gif";
	imagesHilite["link"] = new Image(32,70);
	imagesHilite["link"].src = "images/txt_links5_on.gif";
	imagesHilite["home"] = new Image(32,70);
	imagesHilite["home"].src = "images/txt_home5_on.gif";
}

function getElementStyle(elem, IEStyleProp, CSSStyleProp) {
	if (elem.currentStyle) {
		return elem.currentStyle[IEStyleProp];
	} else if (window.getComputedStyle) {
		var compStyle = window.getComputedStyle(elem,"");
		return compStyle.getPropertyValue(CSSStyleProp);
	}
	return "";
}

// carry over some critical menu style sheet attribute values
var CSSRuleValues = {menuItemHeight:"18px", menuItemLineHeight:"1.4em", menuWrapperBorderWidth:"2px", menuWrapperPadding:"3px", defaultBodyFontSize:"12px"};

// specifications for menu contents
var menus = new Array();
menus[0] = {mBarImgId:"menuImg_1",
		mBarImgNormal:imagesNormal["masg"],
		mBarImgHilite:imagesHilite["masg"],
		menuItems:[],
		elemId:""
	   };
menus[1] = {mBarImgId:"menuImg_2",
		mBarImgNormal:imagesNormal["cont"],
		mBarImgHilite:imagesHilite["cont"],
		menuItems:[],
		elemId:""
	   };
menus[2] = {mBarImgId:"menuImg_3",
		mBarImgNormal:imagesNormal["emil"],
		mBarImgHilite:imagesHilite["emil"],
		menuItems:[], 
		elemId:""
	    };
menus[3] = {mBarImgId:"menuImg_4",
		mBarImgNormal:imagesNormal["link"],
		mBarImgHilite:imagesHilite["link"],
		menuItems:[],
		elemId:""
	   };
menus[4] = {mBarImgId:"menuImg_5",
		mBarImgNormal:imagesNormal["home"],
		mBarImgHilite:imagesHilite["home"],
		menuItems:[],
		elemId:""
	   };

// create hash table-like lookup for menu objects
function makeHashes() {
	for (var i=0; i < menus.length; i++) {
	menus[menus[i].elemId] = menus[i];
	menus[menus[i].mBarImgId] = menus[i];
	}
}

// assign menu label 
function assignLabelEvents() {
	var elem;
	for (var i=0; i <menus.length; i++) {
	elem = document.getElementById(menus[i].mBarImgId);
	elem.onmouseover = swap;
	elem.onmouseout = swap;
	}
}

//invoked from initMenu(), generates the menu div elements and their contents
// all this action is invisible to user during construction
function makeMenus() {
var menuDiv, menuItem, itemLink, mbarImg, textNode, offsetLeft, offsetTop;

// determine key adjustment factors for the total height of the menu divs
var menuItemH = 0;
var bodyFontSize = parseInt(getElementStyle(document.body, "fontSize", "font-size"));
// test to see if browsers font size has been adjusted by user
// and that new size registers as an applied style property
if ((bodyFontSize + "px") == parseInt(CSSRuleValues.defaultBodyFontSize)) {
	menuItemH = (parseFloat(CSSRuleValues.menuItemHeight));
} else {
	if (CSSRuleValues.menuItemLineHeight.indexOf("em") == 1) {
		var searchStr = "em";
		var re = new RegExp(searchStr,"g");
		var mILH = CSSRuleValues.menuItemLineHeight.replace(re, "");
	} else {
		var mILH = CSSRuleValues.menuItemLineHeight;
	}
	menuItemH = parseInt(parseFloat(mILH) * bodyFontSize);
}

var heightAdjust = parseInt(CSSRuleValues.menuWrapperPadding) + parseInt(CSSRuleValues.menuWrapperBorderWidth);

if (navigator.appName == "Microsoft Internet Explorer" && navigator.userAgent.indexOf("Win") != -1 && (typeof document.compatMode == "undefined" || document.compatMode == "BackCompat")) {
heightAdjust = -heightAdjust;
}
// use menu array to drive div creation loop
for (var i=0; i < menus.length; i++) {
	menuDiv = document.createElement("div");
	menuDiv.id = "popupmenu" + i;
	// preserve menus ID as property of the menus array item
	menus[i].elemId = "popupmenu" + i;
	menuDiv.className = "menuWrapper";
	if (menus[i].menuItems.length > 0) {
		menuDiv.style.height = (menuItemH * menus[i].menuItems.length) -
		heightAdjust + "px";
	} else {
		menuDiv.style.display = "none";
	}
menuDiv.onmouseover = keepMenu;
menuDiv.onmouseout = requestHide;

menuDiv.style.zindex = 1000;

// assemble menu item elements for inside menu div
	for (var j=0; j < menus[i].menuItems.length; j++) {
		menuItem = document.createElement("div");
		menuItem.id = "popupmenuItem_" + i + "_" + j;
		menuItem.className = "menuItem";
		menuItem.onmouseover = toggleHighlight;
		menuItem.onmouseout = toggleHighlight;
		menuItem.onclick = hideMenus;
		menuItem.style.top = (menuItemH * j) + "px";
		itemLink = document.createElement("a");
		itemLink.href = menus[i].menuItems[j].href;
		itemLink.className = "menuItem";
		itemLink.onmouseover = "toggleHighlight";
		itemLink.onmouseout = "toggleHightlight";
		textNode = document.createTextNode(menus[i].menuItems[j].text);
		itemLink.appendChild(textNode);
		menuItem.appendChild(itemLink);
		menuDiv.appendChild(menuItem);
	}
	document.body.appendChild(menuDiv);
}
makeHashes();
assignLabelEvents();
// pre-position menu
for (i = 0; i < menus.length; i++) {
	positionMenu(menus[i].elemId);
}
menuReady = true;
}

//initialise global that helps manage menu hiding
var timer;

// invoked from mouseovers inside menus to cancel hide
// request from mouseout of menu bar image
function keepMenu() {
	clearTimeout(timer);
}

function cancelAll() {
	keepMenu();
	menuReady = false;
}

// invoked from mouseouts to request hiding all menus
// in 1.4 second, unless cancelled
function requestHide() {
	timer = setTimeout("hideMenus()", 250);
}

// brute force hiding of all menus and restore normal menu bar
function hideMenus() {
	for (var i=0; i < menus.length; i++) {
		document.getElementById(menus[i].mBarImgId).src = menus[i].mBarImgNormal.src;
		var menu = document.getElementById(menus[i].elemId);
		menu.style.visibility = "hidden";
	}
}

// set menu position just before displaying it
function positionMenu(menuId) {
var mBarImg = document.getElementById(menus[menuId].mBarImgId);
var offsetTrail = mBarImg;
var offsetLeft = 0;
var offsetTop = 0;
while (offsetTrail) {
	offsetLeft += offsetTrail.offsetLeft;
	offsetTop += offsetTrail.offsetTop;
	offsetTrail = offsetTrail.offsetParent;
}
if (navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined") {
	offsetLeft += document.body.leftMargin;
	offsetTop += document.body.topMargin;
}
var menuDiv = document.getElementById(menuId);
menuDiv.style.left = offsetLeft + "px";
menuDiv.style.top = offsetTop + mBarImg.height + "px";
}

function showMenu(menuId) {
if (menuReady) {
	keepMenu();
	hideMenus();
	positionMenu(menuId);
	var menu = document.getElementById(menuId);
	menu.style.visibility = "visible";
}
}

function toggleHighlight(evt) {
evt = (evt) ? evt : ((event) ? event : null);
if (typeof menuReady != "undefined") {
	if (menuReady && evt) {
		var elem = (evt.target) ? evt.target : evt.srcElement;
		if (elem.nodeType == 3) {
			elem = elem.parentNode;
		}
		if (evt.type == "mouseover") {
			keepMenu();
			elem.className = "menuItemOn";
		} else {
			elem.className = "menuItem";
			requestHide();
		}
		evt.cancelBubble = true;
	}
}
}

function swap(evt) {
evt = (evt) ? evt : ((event) ? event : null);
if (typeof menuReady != "undefined") {
	if (evt && (document.getElementById && document.styleSheets) && menuReady) {
		var elem = (evt.target) ? evt.target : evt.srcElement;
		if (elem.className == "menuImg") {
			if (evt.type == "mouseover") {
				showMenu(menus[elem.id].elemId);
				elem.src = menus[elem.id].mBarImgHilite.src;
			} else {
				requestHide();
			}
			evt.cancelBubble = true;
		}
	}
}
}

function initMenus() {
if (document.getElementById && document.styleSheets) {
	setTimeout("makeMenus()",5);
	window.onunload=cancelAll;

}
}