var imagedir = "images/menu2/";
var imagetype = ".gif";
var menuReady = false;
var timer;
var menus = new Array();
var menuPan = new Array();
var menuBars = new Array();

// precache the images 
if (document.images) {
	var imagesOn = new Array();
	var imagesOff = new Array();
	for (var i = 0; i < menus.length; i++) {
		menuImg = menus[i].name;
		// the default (off) images
		imagesOff[menuImg] = new Image();
		imagesOff[menuImg].src = pict(menuImg);
		// the hilited (on) images
		imagesOn[menuImg] = new Image();
		imagesOn[menuImg].src = pict(menuImg+"_on");
	}
}

function pict(name) {
	return imagedir+name+imagetype;
}
function createMenuBars(loc) {
	var menuLoc = document.getElementById(loc);
	for (var i = 0; i < menus.length; i++) {
		var barAnchor = document.createElement("a");
		var t = menus[i].type;
		var n = menus[i].name;
		var c = menus[i].child;
		var h = menus[i].href;
		barAnchor.id = n+"_link";
		if (h != "") {
			barAnchor.href = h;
		}
		var pic = document.createElement("img");
		pic.id = n;
		pic.className = "menuImg";
		pic.src = pict(n);
		pic.border = 0;
		pic.onmouseover = swap;
		pic.onmouseout = swap;
		barAnchor.appendChild(pic);
		menuLoc.appendChild(barAnchor);
	}
}

function createMenuPans() {
	var menuPan, MenuItem, itemLink, mbarImg, textNode, offsetLeft, offsetTop;
	var menuItemH = 0;
	var bodyFontSize = parseInt(getElementStyle(document.body, "fontSize", "font-size"));
	if (bodyFontSize == parseInt(menuGlobal.defualtBodyFontSize)) {
		menuItemH = (parseFloat(menuGlobal.ItemHeight));
	} else {
		menuItemH = parseInt(parseFloat(menuGlobal.ItemLineHeight) * bodyFontSize);
	}
	var heightAdjust = parseInt(menuGlobal.Padding) +
		parseInt(menuGlobal.BorderWidth);

	if (navigator.appName == "Microsoft Internet Explorer" &&
		navigator.userAgent.indexOf("Win") != -1 &&
		(typeof document.compatMode == "undefined" ||
		document.compatMode == "BackCompat")) {
		heightAdjust = -heightAdjust;
	}

	// use menus array to drive div creation loop
	for (var i = 0; i < menus.length; i++) {
		menuPan = document.createElement("div");
		menuPan.id = "menupan_" + menus[i].name;
		
		// preserve menu's ID as property of the menus array item
		menus[i].elemId = "menupan_" + menus[i].name;
		menuPan.style.position = "absolute";
		menuPan.style.border = menuGlobal.borderwidth+" "+menuGlobal.bordercolor+" "+menuGlobal.bordertype;
		menuPan.style.left = "0px";
		menuPan.style.visibility = "hidden";
		// define event handlers
		menuPan.onmouseover = keepMenu;
		menuPan.onmouseout  = requestHide;
		menuPan.style.zIndex = 1000;
		if (  (typeof menus[i].menuItems != "undefined") && (menus[i].menuItems.length > 0)  ) {
			// assemble menu item elements for inside menu div
			//alert ("assembling menu for "+menus[i].name);
			menuTable = document.createElement("table");
			menuTable.style.backgroundColor="#faf0ef";
			menuTable.setAttribute('cellSpacing', 5);
			menuTable.setAttribute('width', 118);
			menuTableBody = document.createElement("tbody");
			for (var j = 0; j < menus[i].menuItems.length; j++) {
				//alert ("creating menuItem: "+menus[i].name);
				menuRow = document.createElement("tr");
				menuCell = document.createElement("td");
				menuCell.noWrap = true;
				if (  (typeof menuGlobal.bullet != "undefined") && (menuGlobal.bullet != "")  ) {
					//alert ("adding bullet for "+menus[i].name);
					menuBullet = document.createElement("img");
					menuBullet.src = pict(menuGlobal.bullet);
					menuBullet.border = 0;
					menuCell.appendChild(menuBullet);
				}
				itemLink = document.createElement("a");
				itemLink.href = menus[i].menuItems[j].href;
				textNode = document.createTextNode(menus[i].menuItems[j].text);
				itemLink.appendChild(textNode);
				menuCell.appendChild(itemLink);
				menuRow.appendChild(menuCell);
				menuTableBody.appendChild(menuRow);
			}
			menuTable.appendChild(menuTableBody);
			menuPan.appendChild(menuTable);
		} else {
			menuPan.style.display = "none";
		}
		// append each menu div to the body
		document.body.appendChild(menuPan);
	}
	assignLabelEvents();
	menuReady = true;
}
	
function showMenu(menuID) {
	document.getElementById(menuID).src = pict(menuID+"_on");
	var MenuImg = document.getElementById(menuID);
	var offsetTrail = MenuImg;
	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 += parseInt(document.body.leftMargin);
		offsetTop += parseInt(document.body.topMargin);
	}

	var menuDiv = document.getElementById("menupan_"+menuID);
	menuDiv.style.left = offsetLeft + menuGlobal.offx + "px";
	menuDiv.style.top = offsetTop + MenuImg.height + menuGlobal.offy + "px";
	menuDiv.style.visibility = "visible";
	menuDiv.onmouseover = keepMenu;
	menuDiv.onmouseout  = requestHide;
	clearTimeout(timer);
}

// inovked from mouseovers inside menus to cancel hide
// request from mouseout of menu bar image et al.
function keepMenu() {
	clearTimeout(timer);
}

// invoked from mouseouts to request hiding all menus
// in 1/4 second, unless cancelled
function requestHide() {
	timer = setTimeout("hideMenus()", 50);
}

// "brute force" hiding of all menus and restoration
// of normal menu bar images
function hideMenus() {
	for (var i = 0; i < menus.length; i++) {
		var menuID = menus[i].name;
		var offImg = imagedir + menuID + imagetype;
		document.getElementById(menuID).src = offImg;
		var menu = document.getElementById('menupan_'+menuID);
		menu.style.visibility = "hidden";
	}
}

// create hash table-like lookup for menu objects with id string indexes
function makeHashes() {
	for (var i=0; i < menus.length; i++) {
		menus[menus[i].elemId] = menus[i];
		menus[menus[i].mBarImgId] = menus[i];
	}
}

function assignLabelEvents() {
	var elem;
	for (var i = 0; i < menus.length; i++) {
		var n = menus[i].name;
		elem = document.getElementById(n);
		elem.onmouseover = swap;
		elem.onmouseout = swap;
	}
}

function writeLayer(layerID,txt) {
        if(document.getElementById) {
                document.getElementById(layerID).innerHTML=txt;
        } else if(document.all) {
                document.all[layerID].innerHTML=txt;
        } else if(document.layers) {
                with(document.layers[layerID].document) {
                     open();
                     write(txt);
                     close();
                }
        }
}

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") {
					hideMenus();
					showMenu(elem.id);
					elem.src = pict(elem.id+"_on");
				} else if (evt.type == "mouseout") {
					requestHide();
				}
				evt.cancelBubble = true;
			}
		}
	}
}

// menu bar image swapping, invoked from mouse events in menu bar
// swap style sheets for menu items during rollovers
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();
			} else {
				requestHide();
			}
			evt.cancelBubble = true;
		}
	}
}

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 "";
}
