// browser detection
var uaVer = parseInt(navigator.appVersion);
var NS6 = (navigator.appName == "Netscape" && uaVer >= 5);
var NS4 = (navigator.appName == "Netscape" && uaVer >= 4 && uaVer < 5);
var IE4 = (navigator.appName == "Microsoft Internet Explorer" && uaVer >= 4);
// var NS3 = (navigator.appName == "Netscape" && uaVer < 4);
// var IE3 = (navigator.appName == "Microsoft Internet Explorer" && uaVer < 4);

// menu init
var inMenu = 0;
var curLayer = "";
var curImage = "";
var menuTimeout = null;

// mouseover image functions for menu item images
function menuItemOn(tdName) {
    clearTimeout(menuTimeout);
    inMenu = 1;
    if (IE4 || NS6) {
	if (document.getElementById) {
	    eval('document.getElementById("'+tdName+'").className = "menuCellOn"');
//	    eval('document.getElementById("'+tdName+'").style.backgroundColor = "#0487B8"');
	} else {
	    eval('document.all["'+tdName+'"].className = "menuCellOn"');
//	    eval('document.all["'+tdName+'"].style.backgroundColor = "#0487B8"');
	}
    }
}

function menuItemOff(tdName) {
    inMenu = 0;
    // time after mouse moves away from menu item before menu is hidden (ms)
    // set higher for text menu items, lower for images
    menuTimeout = setTimeout("hideMenu(curLayer,curImage)", 500);
    if (IE4 || NS6) {
        if (document.getElementById) {
		eval('document.getElementById("'+tdName+'").className = "menuCellOff"');
//	    eval('document.getElementById("'+tdName+'").style.backgroundColor = "#C9E6F0"');
        } else {
		eval('document.all["'+tdName+'"].className = "menuCellOff"');
//	    eval('document.all["'+tdName+'"].style.backgroundColor = "#C9E6F0"');
        }
    }
}

// show menu
function showMenu(layerName,imgName) {
    var topOffset = 8;  // fixed offset
    var leftOffset = 0;
    var currentTag;
    if (NS4 || IE4 || NS6) {
        if (menuTimeout != null) {
            clearTimeout(menuTimeout);
            hideMenu(curLayer,curImage);
        }
        if (navigator.appName == "Netscape" && !document.getElementById) {
            eval('currentTag = document.'+imgName+'_Shim');
            eval('document.layers.'+layerName+'.top = '+(getAbsY(currentTag)+topOffset));
            eval('document.layers.'+layerName+'.left = '+(getAbsX(currentTag)+leftOffset));
            eval('document.layers.'+layerName+'.visibility = "show"');
        } else if (document.getElementById) {
            eval('currentTag = document.getElementById("'+imgName+'_Shim")');
            eval('document.getElementById("'+layerName+'").style.top = '+(getAbsY(currentTag)+topOffset));
            eval('document.getElementById("'+layerName+'").style.left = '+(getAbsX(currentTag)+leftOffset));
            eval('document.getElementById("'+layerName+'").style.visibility = "visible"');
        } else {
            currentTag = document.all[imgName+"_Shim"];
            eval('document.all["'+layerName+'"].style.top = '+(getAbsY(currentTag)+topOffset));
            eval('document.all["'+layerName+'"].style.left = '+(getAbsX(currentTag)+leftOffset));
            eval('document.all["'+layerName+'"].style.visibility = "visible"');
        }
        curLayer = layerName;
        curImage = imgName;
    }
}

// hide menu
function hideMenu(layerName) {
    if (inMenu == 0) {
        if (NS4 || IE4 || NS6) {
            if (navigator.appName == "Netscape" && !document.getElementById){
                eval('document.layers.'+layerName+'.visibility = "hide"');
            } else if (document.getElementById) {
                eval('document.getElementById("'+layerName+'").style.visibility = "hidden"');
            } else {
                eval('document.all["'+layerName+'"].style.visibility = "hidden"');
            }
        }
    }
}

// mouse out timer
function setTimer() {
    // time after mouse moves away from menu heading before menu is hidden
    menuTimeout = setTimeout("timeUp()",700);
}

// check menu status and see if we should hide the last menu
function timeUp() {
    if (inMenu == 0) {
        hideMenu(curLayer);
    }
}

function getAbsX(elt) { return (elt.x) ? elt.x : getAbsPos(elt,"Left"); }
function getAbsY(elt) { return (elt.y) ? elt.y : getAbsPos(elt,"Top"); }

function getAbsPos(elt,which) {
	iPos = 0;
	while (elt != null) {
		iPos += elt["offset" + which];
		elt = elt.offsetParent;
	}
	return iPos;
}