/* Menu 990702
 * by gary smith, July 1997
 * Copyright (c) 1997-1999 Netscape Communications Corp.
 * Netscape grants you a royalty free license to use or modify this
 * software provided that this copyright notice appears on all copies.
 * This software is provided "AS IS," without a warranty of any kind.
 * Note: This File Has been modified extensively
 * by Mike Freni, may 2002 eiol.com
 */

var menus = new Array();
var menuLeft;
var menuTop;
var defaultWidth = 180;
var bhideMenus = false;
var timMoveID;
function menuTableMouseOut(e,w){
    if (document.all){

	var bitemInMenu = false;
	var p;
	var activeMenus = new Array();
		
	window.event.cancelBubble = true;

	//Check to see if the menu to event is an object in the menu
	if (window.event.toElement){
	
		if (window.event.toElement.id == "menutable") bitemInMenu = true;
	
		for (j = 0; ( j < window.menus.length) && (!bitemInMenu); j++){
			p = menus[j];
			if (p.menuVisible) activeMenus[activeMenus.length] = p;
			if (p.divName == window.event.toElement.id) bitemInMenu = true;
			for (var i = 0; (i < p.items.length) && (!bitemInMenu); i++)
				if (p.items[i].divName == window.event.toElement.id)
		  			bitemInMenu = true;
		}
	}
	if (!bitemInMenu)
	    for (j = 0; j < activeMenus.length; j++)
		hideMenu(activeMenus[j],true);			
	return;
    }
    if (document.layers) {
	if (e.target.toString()!="[object Layer]" && (e.type = "onmouseout")){
		window.clearInterval(timMoveID);
		timMoveID = window.setInterval("hideActiveMenus(window.ActiveMenu)",250);
    	} else {
    		document.routeEvent(e);
    	}

    }
}
function menuMouseOver(menulink,activeMenu,x,y)
{
	if (!PageLoaded) return;
	if (document.all)
	{
		var msg
		var tdt;
		var tdoh;
		var tdh;
		var tdop;
		var tbpxh;
		var tbpoh;
		var tdx;
		var tdy;

		msg = "";

//
// The modification to y is to take into account user resized fonts
//
		y = mytable.offsetTop + 20;

		menulink.style.color = activeMenu.fontColorHilite;
		showMenu(activeMenu,x,y,null);
	}
	else if (document.layers)
	{
//
// Make adjustemnts for font resizing
//
		y = y + (document.onepix.y - 96);

		window.clearInterval(timMoveID);
		showMenu(activeMenu,x,y,null);
	}	
}

function menuMouseOut(menulink,activeMenu){
	if (document.all){
		menulink.style.color = activeMenu.fontColor;
		window.event.cancelBubble = true;
	}
}

function Menu(label,alignment,width) {
    this.version = "990702 [Menu; menu.js]";
    this.type = "Menu";
    this.fontSize = 10;
    this.fontWeight = "bold";
    this.fontFamily = "Verdana,Geneva,Lucida,Arial";
    this.fontColor = "#ffffff";
    this.fontColorHilite = "#FFFF66";
    this.bgColor = "#336699";
    this.menuBorder = 1;
    this.itemIndent = 10;		//IE Only
    this.menuItemBorder = 0;
    this.menuItemBgColor = "#336699";
    this.menuLiteBgColor = "#336699";
    this.menuBorderBgColor = "#336699";
    this.menuHiliteBgColor = "#336699";
    this.menuContainerBgColor = "#336699";
    this.childMenuIcon = "images/arrows.gif";
    this.childMenuIconHilite = "images/arrows2.gif";
    this.menuAlignment = alignment || 'left';
    this.menuWidth =  width || defaultWidth;
    this.items = new Array();
    this.actions = new Array();
    this.colors = new Array();
    this.mouseovers = new Array();
    this.mouseouts = new Array();
    this.childMenus = new Array();
    this.menuLeft = menuLeft;
    this.menuTop = menuTop;
    this.addMenuItem = addMenuItem;
    this.writeMenus = writeMenus;
    this.showMenu = showMenu;
    this.onMenuItemOver = onMenuItemOver;
    this.onMenuItemOut = onMenuItemOut;
    this.onMenuItemAction = onMenuItemAction;
    this.onMenuItemDown = onMenuItemDown;
    this.mouseTracker = mouseTracker;
    this.setMouseTracker = setMouseTracker;
    this.hideMenu = hideMenu;
    this.menuName = label;				//IE Only
    this.divName = "div" + label;		//IE Only
    this.inMenu = false;				//IE Only
    this.menuVisible = false;			//IE Only
    this.itemHeight = 15;				//IE Only
    this.setMouseTracker();
    this.label = label || "menuLabel" + window.menus.length;
    window.menus[this.label] = this;
    window.menus[window.menus.length] = this;
    if (!window.activeMenus) window.activeMenus = new Array();
    if (!window.menuContainers) window.menuContainers = new Array();
    if (window.MenuAPI) MenuAPI(this);

}

function MenuItem(menu,action,text,index){
	this.itemName = menu.menuName + 'Item' + index;
	this.ParentMenu = menu;
	this.divName = menu.divName + 'Item' + index;
 	this.action = action;
	this.item = text;
}
function addMenuItem(label, action, color, mouseover, mouseout) {
	if (document.all) {
		var li = new MenuItem(this,action,label,this.items.length);
		this.items[this.items.length] = li;			
	} else if (document.layers) {
	    this.items[this.items.length] = label;
		this.actions[this.actions.length] = action;
	    this.colors[this.colors.length] = color;
	    this.mouseovers[this.mouseovers.length] = mouseover;
	    this.mouseouts[this.mouseouts.length] = mouseout;
	}	
}
function writeMenus(container) {
	if (document.all){
		document.writeln('<SPAN ID="menuContainer"></SPAN>');
	        container = document.all["menuContainer"];
		var content = '';
		var l;
		var iCurLen = document.all.length;
		var eleCount = 0; 
		for(var i = 0;i < menus.length;i++){
			l = menus[i];
			l.id = document.all.length + eleCount;
			eleCount++;
			content += '<DIV id=' + l.divName + ' style="position: absolute; z-index:103; visibility: hidden; top: 0; left: 0; width: ' + 
				l.menuWidth + '; height: ' + (l.items.length * l.itemHeight + 2 * l.menuBorder) + ';background: ' + l.bgColor + ';"';
			content += ' onmouseout="hideMenu(' + l.menuName + ');">\n';
			for (var j = 0; j < l.items.length; j++){
				li = l.items[j];
				li.id = document.all.length + eleCount;
				eleCount++;

				content += '<DIV name =' + li.divName + ' id=' + li.divName + ' style="position: absolute; visibility: inherit; cursor: hand; text-align: ' + 
					l.menuAlignment + '; top: ' + (l.menuBorder + l.itemHeight * j) + '; left: ' + (l.menuBorder + l.itemIndent) + '; width: ' + 
					(l.menuWidth - 2 * l.menuBorder - l.itemIndent) + '; height: ' + l.itemHeight + '; background: ' +
					 l.bgColor + '; font-family: ' + l.fontFamily + '; font-size: ' + l.fontSize + 
					 '; font-weight: ' + l.fontWeight +'; color: ' + l.fontColor + ';" ' +
					 'onMouseOver="onMenuItemOver('+ l.menuName + '.items[' + j +
					 ']);" onClick="onMenuItemAction('+ l.menuName + '.items[' + j +']);" onmouseout="onMenuItemOut('+ l.menuName + '.items[' + j +']);">';
				content += l.items[j].item;
				content += '</DIV>\n';
			}
 			content += '</DIV>\n';
		    if (container.innerHTML) {
        		container.innerHTML=content;
		    } else {
	      		container.document.open("text/html");
		        container.document.writeln(content);
        		container.document.close();
		    }
		}
		return;
	}

    if (!container && document.layers) {
        if (eval("document.width")) 
            container = new Layer(1000);
    if (!container && !window.delayWriteMenus) {
        window.delayWriteMenus = this.writeMenus;
        window.menuContainerBgColor = this.menuContainerBgColor;
        setTimeout('delayWriteMenus()', 2);
        return;
    }
    container.isContainer = "menuContainer" + menuContainers.length;
    menuContainers[menuContainers.length] = container;
    container.menus = new Array();
    for (var i=0; i<window.menus.length; i++) 
        container.menus[i] = window.menus[i];
    window.menus.length = 0;
    var countMenus = 0;
    var countItems = 0;
    var top = 0;
    var content = '';
    var proto;
    for (var i=0; i<container.menus.length; i++, countMenus++) {
        var menu = container.menus[i];
        proto = menu.prototypeStyles || this.prototypeStyles || menu;
        content += ''+
        '<DIV align="center" id="menuLayer'+ countMenus +'" STYLE="position:absolute;left:10;top:'+ (i * 100) +';visibility:hidden;z-index:99; ">\n'+
        '  <DIV align="center" id="menuLite'+ countMenus +'" STYLE="position:absolute;left:'+ proto.menuBorder +';top:'+ proto.menuBorder +';visibility:hide;" onMouseOut="hideMenu(this);">\n'+
        '    <DIV id="menuFg'+ countMenus +'" STYLE="position:absolute;left:1;top:1;visibility:hide;">\n'+
        '';
        var x=i;
        for (var i=0; i<menu.items.length; i++) {
            var item = menu.items[i];
            var childMenu = false;
            var defaultHeight = 15;
            var defaultIndent = 15;
            if (item.label) {
                item = item.label;
                childMenu = true;
            } else if (item.indexOf(".gif") != -1 && item.indexOf("<IMG") == -1) {
                item = '<IMG SRC="' + item + '" NAME="menuItem'+ countItems +'Img">';
                defaultIndent = 0;
                if (document.layers) {
                    defaultHeight = null;
                }
            }
            proto.menuItemHeight = proto.menuItemHeight || defaultHeight;
            proto.menuItemIndent = proto.menuItemIndent || defaultIndent;
            var itemProps = 'visibility:hide;font-Family:' + proto.fontFamily +';font-Weight:' + proto.fontWeight + ';fontSize:' + proto.fontSize + ';text-align:' + proto.menuAlignment;
            if (document.all) 
                itemProps += 'font-size:' + proto.fontSize + ';" onMouseOver="onMenuItemOver(null,this);" onMouseOut="onMenuItemOut(null,this);" onClick="onMenuItemAction(null,this);';
            var dTag    = '<DIV ID="menuItem'+ countItems +'" STYLE="position:absolute;left:0;top:'+ (i * proto.menuItemHeight) +';'+ itemProps +'">';
            var dText   = '<DIV ID="menuItemText'+ countItems +'" STYLE="cursor:hand;position:absolute;left:' + proto.menuItemIndent + ';top:0;color:'+ proto.fontColor +';text-align:'+ proto.menuAlignment + ';width:' + (proto.menuItemWidth || (proto.menuWidth-25)) + ';">'+ item +'</DIV>\n<DIV ID="menuItemHilite'+ countItems +'" STYLE="cursor:hand;position:absolute;left:' + proto.menuItemIndent + ';top:0;color:'+ proto.fontColorHilite +';text-align:'+ proto.menuAlignment + ';width:' + (proto.menuItemWidth || (proto.menuWidth-25)) + ';visibility:hidden;">'+ item +'</DIV>';
            if (item == "separator") {
                content += ( dTag + '<DIV ID="menuSeparator'+ countItems +'" STYLE="position:absolute;left:1;top:2;"></DIV>\n<DIV ID="menuSeparatorLite'+ countItems +'" STYLE="position:absolute;left:1;top:2;"></DIV>\n</DIV>');
            } else if (childMenu) {
                content += ( dTag + dText + '<DIV ID="childMenu'+ countItems +'" STYLE="position:absolute;left:0;top:3;'+ itemProps +'"><IMG SRC="'+ proto.childMenuIcon +'"></DIV>\n</DIV>');
            } else {
                content += ( dTag + dText + '</DIV>');
            }
            countItems++;
        }
        content += '      <DIV ID="focusItem'+ countMenus +'" STYLE="position:absolute;left:0;top:0;visibility:hide;" onClick="onMenuItemAction(null,this);">&nbsp;</DIV>\n';
        content += '   </DIV>\n  </DIV>\n</DIV>\n';
        i=x;
    }
    if (!container) return;
    if (container.innerHTML) {
        container.innerHTML=content;
    } else {
        container.document.open("text/html");
        container.document.writeln(content);
        container.document.close();
    }
    proto = null;
    if (container.document.layers) {
        container.clip.width = window.innerWidth;
        container.clip.height = window.innerHeight;
        container.onmouseout = this.hideMenu;
        container.menuContainerBgColor = this.menuContainerBgColor;
        for (var i=0; i<container.document.layers.length; i++) {
            proto = container.menus[i].prototypeStyles || this.prototypeStyles || container.menus[i];
            var menu = container.document.layers[i];
            container.menus[i].menuLayer = menu;
            container.menus[i].menuLayer.Menu = container.menus[i];
            container.menus[i].menuLayer.Menu.container = container;
            var body = menu.document.layers[0].document.layers[0];
            body.clip.width = proto.menuWidth || body.clip.width;
            body.clip.height = proto.menuHeight || body.clip.height;
            for (var n=0; n<body.document.layers.length-1; n++) {
                var l = body.document.layers[n];
                l.Menu = container.menus[i];
                l.menuHiliteBgColor = proto.menuHiliteBgColor;
                l.document.bgColor = proto.menuItemBgColor;
                l.saveColor = proto.menuItemBgColor;
                l.mouseout  = l.Menu.mouseouts[n];
                l.mouseover = l.Menu.mouseovers[n];
                l.onmouseover = proto.onMenuItemOver;
                l.onclick = proto.onMenuItemAction;
                l.action = container.menus[i].actions[n];
                l.focusItem = body.document.layers[body.document.layers.length-1];
                l.clip.width = proto.menuItemWidth || proto.menuWidth;
                l.clip.height = proto.menuItemHeight || l.clip.height;
                if (n>0) l.top = body.document.layers[n-1].top + body.document.layers[n-1].clip.height + proto.menuItemBorder;
                l.hilite = l.document.layers[1];
                l.document.layers[1].isHilite = true;
                if (l.document.layers[0].id.indexOf("menuSeparator") != -1) {
                    l.hilite = null;
                    l.clip.height -= l.clip.height / 2;
                    l.document.layers[0].document.bgColor = proto.bgColor;
                    l.document.layers[0].clip.width = l.clip.width -2;
                    l.document.layers[0].clip.height = 1;
                    l.document.layers[1].document.bgColor = proto.menuLiteBgColor;
                    l.document.layers[1].clip.width = l.clip.width -2;
                    l.document.layers[1].clip.height = 1;
                    l.document.layers[1].top = l.document.layers[0].top + 1;
                } else if (l.document.layers.length > 2) {
                    l.childMenu = container.menus[i].items[n].menuLayer;
                    l.icon = proto.childMenuIcon;
                    l.iconHilite = proto.childMenuIconHilite;
                    l.document.layers[2].left = l.clip.width -13;
                    l.document.layers[2].top = (l.clip.height / 2) -4;
                    l.document.layers[2].clip.left += 3;
                    l.Menu.childMenus[l.Menu.childMenus.length] = l.childMenu;
                }
            }
            body.document.bgColor = proto.bgColor;
            body.clip.width  = l.clip.width +1;
            body.clip.height = l.top + l.clip.height +1;
            body.document.layers[n].clip.width = body.clip.width;
            body.document.layers[n].captureEvents(Event.MOUSEDOWN);
            body.document.layers[n].onmousedown = proto.onMenuItemDown;
            body.document.layers[n].onmouseout = proto.onMenuItemOut;
            body.document.layers[n].Menu = l.Menu;
            body.document.layers[n].top = -30;
            menu.document.bgColor = proto.menuBorderBgColor;
            menu.document.layers[0].document.bgColor = proto.menuLiteBgColor;
            menu.document.layers[0].clip.width = body.clip.width +1;
            menu.document.layers[0].clip.height = body.clip.height +1;
            menu.clip.width = body.clip.width + (proto.menuBorder * 2) +1;
            menu.clip.height = body.clip.height + (proto.menuBorder * 2) +1;
        }
    }
    window.wroteMenu = true;
	}
}
function onMenuItemOver(e, l, a) {

	if (document.all) {
		window.event.cancelBubble = true;
		document.all(e.id).style.color = e.ParentMenu.fontColorHilite;
		e.ParentMenu.inMenu = true;
		return;
	} 
	
    l = l || this;
    a = a || window.ActiveMenuItem;

    if (document.layers) {
	window.clearInterval(timMoveID);

        if (a) {
            a.document.bgColor = a.saveColor;
            if (a.hilite) a.hilite.visibility = "hidden";
            if (a.childMenu) a.document.layers[1].document.images[0].src = a.icon;
        } else {
            a = new Object();
        }
        if (this.mouseover && this.id != a.id) {
            if (this.mouseover.length > 4) {
                var ext = this.mouseover.substring(this.mouseover.length-4);
                if (ext == ".gif" || ext == ".jpg") {
                    this.document.layers[1].document.images[0].src = this.mouseover;
                } else {
                    eval("" + this.mouseover);
                }
            }
        }
        if (l.hilite) {
            l.document.bgColor = l.menuHiliteBgColor;
            l.zIndex = 1;
            l.hilite.visibility = "inherit";
            l.hilite.zIndex = 2;
            l.document.layers[1].zIndex = 1;
            l.focusItem.zIndex = this.zIndex +2;
        }
        l.focusItem.top = this.top;
    }
    window.ActiveMenuItem = l;
}
function onMenuItemOut(e, l, a) {

	if (document.all) {
		document.all(e.id).style.color = e.ParentMenu.fontColor;
		e.ParentMenu.inMenu = true;

		var bitemInMenu = false;
		var p = e.ParentMenu;
		window.event.cancelBubble = true;
		//Check to see if the menu to event is an object in the menu
		if (p.divName == window.event.toElement.id) bitemInMenu = true;
		for (var i = 0; (i < p.items.length) && (!bitemInMenu); i++)
			if (p.items[i].divName == window.event.toElement.id)
				bitemInMenu = true;
		if (!bitemInMenu)
			hideMenu(p);
			
		
		return;
	} 

	bhideMenus = true;
	
    l = l || this;
	a = a || window.ActiveMenuItem;
    if (l.id.indexOf("focusItem")) {
        if (a && l.top) {
            l.top = -30;
			if (a.mouseout && a.id != l.id) {
				if (a.mouseout.length > 4) {
					var ext = a.mouseout.substring(a.mouseout.length-4);
					if (ext == ".gif" || ext == ".jpg") {
						a.document.layers[1].document.images[0].src = a.mouseout;
					} else {
						eval("" + a.mouseout);
					}
				}
			}
        }
    }
}
function onMenuItemAction(e, l) {
    if (document.all) {
    	eval(e.action);
	return;
    }
    l = window.ActiveMenuItem;
    if (!l) return;
    if (!ActiveMenu.Menu.disableHide) hideActiveMenus(ActiveMenu.menuLayer);
    if (l.action) {
        eval("" + l.action);
    }
}
function showMenu(menu, x, y, child) {
	if (!PageLoaded) return;
//	if (!x > 0) return;
	if (!x > 0) x = 1;
	if (document.all)
	{
		for (var i = 0;i<window.menus.length;i++)
		{
			proto = window.menus[i];
			if (proto)
			{
				if (proto.menuVisible)
				{
					hideMenu(proto,true);
				}
			}
		}
		document.all(menu.id).style.top = y;
		document.all(menu.id).style.left = x;
		document.all(menu.id).style.visibility = "visible";
		menu.menuVisible = true;
		return;
	}

	bhideMenus = false;

    if (!window.wroteMenu) return;
	
    if (document.layers) {

        if (menu) {
            var l = menu.menuLayer || menu;
            if (typeof(menu) == "string") {
                for (var n=0; n < menuContainers.length; n++) {
                    l = menuContainers[n].menus[menu];
                    for (var i=0; i<menuContainers[n].menus.length; i++) {
                        if (menu == menuContainers[n].menus[i].label) l = menuContainers[n].menus[i].menuLayer;
                        if (l) break;
                    }
                }
				if (!l) return;
            }
            l.Menu.container.document.bgColor = null;
            l.left = 1;
            l.top = 1;
            hideActiveMenus(l);
            if (this.visibility) l = this;
            window.ActiveMenu = l;
            window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);
            setTimeout('if(window.ActiveMenu)window.ActiveMenu.Menu.setMouseTracker();', 300);
            } else {
            var l = child;
        }
        if (!l) return;
        for (var i=0; i<l.layers.length; i++) {                
            if (!l.layers[i].isHilite) 
                l.layers[i].visibility = "inherit";
            if (l.layers[i].document.layers.length > 0) 
                showMenu(null, "relative", "relative", l.layers[i]);
        }
        if (l.parentLayer) {
            if (x != "relative") 
                l.parentLayer.left = x; //|| window.pageX || 0;
            if (l.parentLayer.left + l.clip.width > window.innerWidth) 
                l.parentLayer.left -= (l.parentLayer.left + l.clip.width - window.innerWidth);
            if (y != "relative") 
                l.parentLayer.top = y; // || window.pageY || 0;
            if (l.parentLayer.isContainer) {
                l.Menu.xOffset = window.pageXOffset;
                l.Menu.yOffset = window.pageYOffset;
                l.parentLayer.clip.width = window.ActiveMenu.clip.width +2;
                l.parentLayer.clip.height = window.ActiveMenu.clip.height +2;
                if (l.parentLayer.menuContainerBgColor) l.parentLayer.document.bgColor = l.parentLayer.menuContainerBgColor;
            }
        }
        l.visibility = "inherit";
        if (l.Menu) l.Menu.container.visibility = "inherit";
    }
	if (menu) {
        window.activeMenus[window.activeMenus.length] = l;
	menu.menuVisible = true;

    }
}

function hideMenu(e,forceHide) {
	if (document.all){
		if (e) {	
			if(e.inMenu || forceHide){
				document.all(e.id).style.visibility = "hidden";
				e.inMenu = false;
				e.menuVisible = false;
			}
		}
		else {
     		    for (var i = 0;i<window.menus.length;i++){
		        proto = window.menus[i];
			if (proto)
			    if (proto.menuVisible)
			        hideMenu(proto,true);
		    }

		}
		return true;
	}
    
    var l = e || window.ActiveMenu;
    if (!l) return true;
    if (!bhideMenus) return true;
    if (l.menuLayer) {
        l = l.menuLayer;
    } else if (this.visibility) {
        l = this;
    }
    if (l.menuLayer) {
        l = l.menuLayer;
    }
    var a = window.ActiveMenuItem;
    document.saveMousemove = document.onmousemove;
    document.onmousemove = mouseTracker;
        if (a && document.layers) {
        a.document.bgColor = a.saveColor;
        a.focusItem.top = -30;
        if (a.hilite) a.hilite.visibility = "hidden";
        if (a.childMenu) a.document.layers[1].document.images[0].src = a.icon;
    }
    if (window.ActiveMenu) {
        if (window.ActiveMenu.Menu) {
            if (window.ActiveMenu.Menu.disableHide) return true;
            e = window.event || e;
            if (!window.ActiveMenu.Menu.enableHideOnMouseOut && e.type == "mouseout") return true;
        }
    }
    e.inMenu = false;
    e.menuVisible = false;

    hideActiveMenus(l);
    return true;
}
function hideActiveMenus(l) {
    window.clearInterval(timMoveID);
    if (!window.activeMenus) return;
    for (var i=0; i < window.activeMenus.length; i++) {
    if (!activeMenus[i]) return;
        if (activeMenus[i].visibility && activeMenus[i].Menu) {
            activeMenus[i].visibility = "hidden";
            activeMenus[i].Menu.container.visibility = "hidden";
            activeMenus[i].Menu.container.clip.left = 0;
        } else if (activeMenus[i].style) {
            activeMenus[i].style.visibility = "hidden";
        }
    }
    document.onmousemove = mouseTracker;
    window.activeMenus.length = 0;
}
function mouseTracker(e) {
    e = e || window.Event || window.event;
    window.pageX = e.pageX || e.clientX;
    window.pageY = e.pageY || e.clientY;
    
}
function setMouseTracker() {
    if (document.captureEvents) {
        document.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP|Event.MOUSEOUT);
    }
    document.onmousemove = this.mouseTracker;
    document.onmouseup = this.hideMenu;
    window.document.onmouseout = menuTableMouseOut;
}


function onMenuItemDown(e, l) {
    l = l || window.ActiveMenuItem || this;
    if (document.all) {
	window.event.cancelBubble=true;
    } else if (document.layers) {
	onMenuItemAction(e,l);
    }    	
}
