/**
 * Copyright (c) 2000 Nimbus Partners Ltd.
 * http://www.nimbuspartners.com
 */

var defaultMenuZIndex = 1000;

function Container(id, left, top, z, width, height, visibility) {
    this.id = id;
    this.left = left;
    this.top = top;
    this.z = defaultMenuZIndex;
    if (z)
      this.z += z;
    this.width = width;
    this.height = height;
    this.visibility = visibility;

    this.setParent = Container_setParent;
    if (is.nav5up) {
      this.generateContent = Container_generateContentNav5;
    } else {
      this.generateContent = Container_generateContent;
    }

    this.children = new Array();
    return this;
}

function Container_setParent(parent) {
    parent.children[parent.children.length] = this;
    this.container = parent;
}

function Container_generateContent() {
    var result = this.content ? this.content : '';
    for (var i = 0; i < this.children.length; i++) 
        result += this.children[i].generateContent();

    if (is.nav4up) {
        if (this.visibility && (this.visibility!='')) {
            if (this.visibility=="hidden") 
                this.visibility = "hide";
            else if (this.visibility=="visible") 
                this.visibility = "show";
        }
        result = 
            '<LAYER ID="' + this.id + '"' +  
            ((this.left)?' LEFT="' + this.left + '"':'') + 
            ((this.top)?' TOP="' + this.top + '"':'') + 
            ((this.width)?' WIDTH="' + this.width + '"':'') + 
            ((this.height)?' HEIGHT="' + this.height + '"':'') + 
            ((this.visibility && (this.visibility!='')) ? ' VISIBILITY="' + this.visibility + '"' : '') + 
            ((this.z)?' Z-INDEX="' + this.z + '"':'') + 
            '>' + result + '</LAYER>';
    } else if (is.ie4up) {
        result = 
            '<DIV ID="' + this.id + '"' +  
            ' STYLE="font-family:Verdana,Arial,Helvetica;font-weight:bold;font-size:9pt;position:absolute;' + 
            ' overflow:none;' + 
            ((this.left)?' left:' + this.left + 'px;':'') + 
            ((this.top)?' top:' + this.top + 'px;':'') + 
            ((this.height)?' height:' + this.height + 'px;':'') + 
            ((this.width)?' width:' + this.width + 'px;':'') + 
            ((this.visibility && (this.visibility!='')) ? ' visibility:' + this.visibility + ';' : '') + 
            ((this.z)?' z-index:' + this.z + ';':'') + 
            '">' + result + '</DIV>';
    } else {
        result = '';
    }
    return result;
}

function Menu() {
    this.items = new Array();
    this.images = new Array();
    this.actions = new Array();
    this.targets = new Array();

    this.addMenuItem = addMenuItem;
    this.addMenuSeparator = addMenuSeparator;
    this.setMouseTracker = setMouseTracker;

    this.clText        = "#000000";
    this.clTextLight   = "#FFFFFF";
    this.clMenu        = "#D4D0C8";
    this.clMenuLight   = "#0A246A";
    this.clShadowDark  = "#404040";
    this.clShadow      = "#808080";
    this.clShadowLight = "#FFFFFF";

    if (!window.menus) window.menus = new Array();
    window.menus[window.menus.length] = this;
}

function addMenuItem(label, image, action, target) {
    this.items[this.items.length] = label;
    this.images[this.images.length] = image;
    this.actions[this.actions.length] = action;
    this.targets[this.targets.length] = target;
}

function addMenuSeparator() {
    this.items[this.items.length] = "separator";
    this.images[this.images.length] = null;
    this.actions[this.actions.length] = null;
    this.targets[this.targets.length] = null;
}

function writeMenus() {
    if (is.nav5up) {
        return writeMenusNav5();
    }
    var container = null;
    if (is.nav4up) {
        // wait while document loading
        if (eval("document.width")) 
            container = new Layer(1000);
    } else if (is.ie4up) {
        if (!document.all["menuContainer"]) 
            document.writeln('<SPAN ID="menuContainer"></SPAN>');
        container = document.all["menuContainer"];
    } else {
        return;
    }
    if (!container && !window.delayWriteMenus) {
        window.delayWriteMenus = this.writeMenus;
        setTimeout('delayWriteMenus()', 3000);
        return;
    }

    container.menus = new Array();
    for (var i=0; i<window.menus.length; i++) 
        container.menus[i] = window.menus[i];
    window.menus.length = 0;

    var menuIdent = 0;
    if (is.ie4up)
        menuIdent = -500;

    var content = '';
    var itemCount = 0;
    var menuCount = 0;
    for (var i = 0; i < container.menus.length; i++, menuCount++) {
        var menu = container.menus[i];
        var menuLayer = new Container("menuLayer" + menuCount, menuIdent, menuIdent, null, null, null, "hidden");
        var menuBg = new Container("menuBg" + menuCount, 0, 0, null, null, null, "inherit");
        menuBg.setParent(menuLayer);
        var menuShadow = new Container("menuShadow" + menuCount, 1, 1, null, null, null, "inherit");
        menuShadow.setParent(menuBg);
        var menuLight = new Container("menuLight" + menuCount, 0, 0, null, null, null, "inherit");
        menuLight.setParent(menuShadow);
        var menuFg = new Container("menuFg" + menuCount, 1, 1, null, null, null, "inherit");
        menuFg.setParent(menuLight);

        var itemTop = 1;
        for (var x = 0; x < menu.items.length; x++, itemCount++) {
            var height = menu.items[x] == "separator" ? 8 : menu.images[x] ? 35 : 20;
            var menuItem = new Container("menuItem" + itemCount, 1, itemTop, null, null, height, "inherit");
            menuItem.setParent(menuFg);

            // create containers for image
            if (menu.images[x]) {
                var imageBg = new Container("menuItemImageBg" + itemCount, 0, 0, null, 36, 35, "inherit");
                imageBg.setParent(menuItem);
                var imageShadow = new Container("menuItemImageShadow" + itemCount, 0, 0, null, 35, 35, "inherit");
                imageShadow.setParent(imageBg);
                var imageLight = new Container("menuItemImageLight" + itemCount, 0, 0, null, 34, 34, "inherit");
                imageLight.setParent(imageShadow);
                var image = new Container("menuItemImage" + itemCount, 1, 1, null, 33, 33, "inherit");
                image.setParent(imageLight);
                image.content = '<IMG SRC="' + menu.images[x] + '" WIDTH=32 HEIGHT=32>';
            }

            if (menu.items[x] == "separator") {
                var menuSepUp = new Container("menuSepUp" + itemCount, 1, 4, null, null, 2, "inherit");
                menuSepUp.setParent(menuItem);
                var menuSepDown = new Container("menuSepDown" + itemCount, 0, 1, null, null, 1, "inherit");
                menuSepDown.setParent(menuSepUp);
            } else {
                var textTop = menu.images[x] ? 7 : 0;
                var text = new Container("menuItemText" + itemCount, 38, textTop, null, null, 20, "inherit");
                text.setParent(menuItem);
                text.content = '<FONT COLOR="' + menu.clText + '">' + menu.items[x] + '</FONT>'; 
                var textLight = new Container("menuItemTextLight" + itemCount, 38, textTop, null, null, 20, "hidden");
                textLight.setParent(menuItem);
                textLight.content = '<FONT COLOR="' + menu.clTextLight + '">' + menu.items[x] + '</FONT>'; 
                var glass = new Container("menuItemGlass" + itemCount, 38, textTop, 2, null, 20, "inherit");
                glass.setParent(menuItem);
            }
            itemTop += height;
        }
        content += menuLayer.generateContent();
        menuLayer.container = container;
    }

    if (!container) return;
    if (container.innerHTML) {
        container.innerHTML=content;
    } else {
        container.document.open("text/html");
        container.document.writeln(content);
        container.document.close();
    }

    if (is.nav4up) {
        container.clip.width = window.innerWidth;
        container.clip.height = window.innerHeight;
        for (var i=0; i<container.document.layers.length; i++) {
            var menuLayer = container.document.layers[i];
            var menuBg = menuLayer.document.layers[0];
            var menuShadow = menuBg.document.layers[0];
            var menuLight = menuShadow.document.layers[0];
            var menuFg = menuLight.document.layers[0];

            container.menus[i].menuLayer = menuLayer;
            container.menus[i].menuLayer.Menu = container.menus[i];
            container.menus[i].menuLayer.Menu.container = container;

            menuLayer.document.bgColor = menuLayer.Menu.clShadowDark;
            menuBg.document.bgColor = menuLayer.Menu.clMenu;
            menuShadow.document.bgColor = menuLayer.Menu.clShadow;
            menuLight.document.bgColor = menuLayer.Menu.clShadowLight;
            menuFg.document.bgColor = menuLayer.Menu.clMenu;

            menuFg.clip.height += 1;
            menuLight.clip.height += 1;
            menuShadow.clip.height += 1;
            menuBg.clip.height += 1;
            menuLayer.clip.height += 1;

            menuFg.clip.width += 20;
            menuLight.clip.width += 20;
            menuShadow.clip.width += 20;
            menuBg.clip.width += 20;
            menuLayer.clip.width += 20;

            for (var x=0; x < menuFg.document.layers.length; x++) {
                var menuItem = menuFg.document.layers[x];
                menuItem.menuLayer = menuLayer;
                menuItem.isSeparator = menuLayer.Menu.items[x] == "separator";
                if (!menuItem.isSeparator) {
                    menuItem.imageLayer = menuLayer.Menu.images[x] ? menuItem.document.layers[0] : null;
                    var textIndex = menuItem.imageLayer ? 1 : 0;
                    menuItem.textLayer = menuItem.document.layers[textIndex++];
                    menuItem.textLightLayer = menuItem.document.layers[textIndex++];
                    menuItem.textLightLayer.isLight = true;
                    menuItem.glassLayer = menuItem.document.layers[textIndex];
                } else {
                    menuItem.sepLayer = menuItem.document.layers[0];
                }
                menuItem.action = menuLayer.Menu.actions[x];
                menuItem.target = menuLayer.Menu.targets[x];

                // setup colors
                if (menuItem.isSeparator) {
                    menuItem.sepLayer.document.bgColor = menuLayer.Menu.clShadow;
                    menuItem.sepLayer.document.layers[0].document.bgColor = menuLayer.Menu.clShadowLight;
                }

                // setup dimensions
                menuItem.clip.width = menuFg.clip.width;
                if (menuItem.isSeparator) {
                    menuItem.clip.height = 8;
                    var sepLayer = menuItem.sepLayer;
                    sepLayer.clip.height = 2;
                    sepLayer.clip.width = menuItem.clip.width - 2;
                    sepLayer = sepLayer.document.layers[0];
                    sepLayer.clip.height = 1;
                    sepLayer.clip.width = menuItem.clip.width - 2;
                } else {
                    menuItem.textLayer.clip.width = menuFg.clip.width - menuItem.textLayer.clip.left;
                    menuItem.textLightLayer.clip.width = menuItem.textLayer.clip.width;
                    menuItem.glassLayer.clip.width = menuItem.textLayer.clip.width;
                }

                menuItem.onmouseover = onMenuItemOver;
                menuItem.onmouseout = onMenuItemOut;
            }
            menuShadow.clip.height += 1;
            menuBg.clip.height += 1;
            menuLayer.clip.height += 2;

            menuFg.clip.width += 2;
            menuLight.clip.width += 2;
            menuShadow.clip.width += 3;
            menuBg.clip.width += 3;
            menuLayer.clip.width += 4;
        }
    } else if (is.ie4up) {
        var itemCount = 0;
        for (var i=0; i<container.menus.length; i++) {
            var menuLayer = container.document.all["menuLayer" + i];
            var menuBg = container.document.all["menuBg" + i];
            var menuShadow = container.document.all["menuShadow" + i];
            var menuLight = container.document.all["menuLight" + i];
            var menuFg = container.document.all["menuFg" + i];

            container.menus[i].menuLayer = menuLayer;
            container.menus[i].menuLayer.Menu = container.menus[i];
            container.menus[i].menuLayer.Menu.container = container;

            menuLayer.style.backgroundColor = menuLayer.Menu.clShadowDark;
            menuBg.style.backgroundColor = menuLayer.Menu.clMenu;
            menuShadow.style.backgroundColor = menuLayer.Menu.clShadow;
            menuLight.style.backgroundColor = menuLayer.Menu.clShadowLight;
            menuFg.style.backgroundColor = menuLayer.Menu.clMenu;

            var textWidth = 0;
            var textHeight = 0;
            var charCount = 0;
            var saveItemCount = itemCount;
            for (var x=0; x < container.menus[i].items.length; x++, itemCount++) {
                var menuItem = container.document.all["menuItem" + itemCount];
                menuItem.menuLayer = menuLayer;
                menuItem.itemIndex = itemCount;
                menuItem.isSeparator = menuLayer.Menu.items[x] == "separator";
                if (!menuItem.isSeparator) {
                    menuItem.imageLayer = menuLayer.Menu.images[x] ? container.document.all["menuItemImageBg" + itemCount] : null;
                    menuItem.textLayer = container.document.all["menuItemText" + itemCount];
                    menuItem.textLightLayer = container.document.all["menuItemTextLight" + itemCount];
                    menuItem.textLightLayer.isLight = true;
                    menuItem.glassLayer = container.document.all["menuItemGlass" + itemCount];
                } else {
                    menuItem.sepLayer = container.document.all["menuSepUp" + itemCount];
                    menuItem.sepLayer2 = container.document.all["menuSepDown" + itemCount];
                }
                menuItem.action = menuLayer.Menu.actions[x];
                menuItem.target = menuLayer.Menu.targets[x];

                // setup colors
                if (menuItem.isSeparator) {
                    menuItem.sepLayer.style.backgroundColor = menuLayer.Menu.clShadow;
                    menuItem.sepLayer2.style.backgroundColor = menuLayer.Menu.clShadowLight;
                }

                // setup dimensions - find widest menu item
                if (!menuItem.isSeparator) { 
                    textWidth = textWidth < menuItem.textLayer.clientWidth ? 
                        menuItem.textLayer.clientWidth : 
                        textWidth;
                    charCount = charCount < menuLayer.Menu.items[x].length ?
                        menuLayer.Menu.items[x].length :
                        charCount;
                }
                textHeight += menuItem.style.pixelHeight;

                menuItem.onmouseover = onMenuItemOver;
                menuItem.onmouseout = onMenuItemOut;
            }
            if (is.ie4 || textWidth == 0)
                textWidth = charCount * 8;
            textWidth += 20;

            // setup dimensions - second pass
            var itemCount = saveItemCount;
            for (var x=0; x < container.menus[i].items.length; x++, itemCount++) {
                var menuItem = container.document.all["menuItem" + itemCount];

                menuItem.style.pixelWidth = 38 + textWidth;
                if (menuItem.isSeparator) {
                    menuItem.style.pixelHeight = 8;
                    menuItem.sepLayer.style.pixelHeight = 2;
                    menuItem.sepLayer.style.pixelWidth = menuItem.style.pixelWidth - 2;
                    menuItem.sepLayer2.style.pixelHeight = 1;
                    menuItem.sepLayer2.style.pixelWidth = menuItem.style.pixelWidth - 2;
                    menuItem.sepLayer2.style.clip = "rect(0 " + (menuItem.style.pixelWidth - 2) + " 1 0)";
                } else {
                    menuItem.textLayer.style.pixelWidth = textWidth;
                    menuItem.textLightLayer.style.pixelWidth = menuItem.textLayer.style.pixelWidth;
                    menuItem.glassLayer.style.pixelWidth = menuItem.textLayer.style.pixelWidth;
                }
            }
            textWidth += 38;

            menuFg.style.pixelHeight = textHeight + 2;
            menuLight.style.pixelHeight = textHeight + 3;
            menuShadow.style.pixelHeight = textHeight + 4;
            menuBg.style.pixelHeight = textHeight + 5;
            menuLayer.style.pixelHeight = textHeight + 6;

            menuFg.style.pixelWidth = textWidth + 2;
            menuLight.style.pixelWidth = textWidth + 3;
            menuShadow.style.pixelWidth = textWidth + 4;          
            menuBg.style.pixelWidth = textWidth + 5;              
            menuLayer.style.pixelWidth = textWidth + 6;           
        }
    }
    setMouseTracker();
}


function createContainer(id, left, top, z, width, height, visibility) {
    var result = document.createElement('DIV');
    result.id = id;
    result.setAttribute('STYLE',
        'position:absolute;'+
        ' overflow:none;'+
        (left?' left:'+left+'px;':'')+
        (top?' top:'+top+'px;':'')+
        (height?' height:'+height+'px;':'')+
        (width ?' width:'+width+'px;':'')+
        ((visibility&&(visibility!=''))?' visibility:'+visibility+';':'') + 
        (z?' z-index:'+z+';':''));
    return result;
}


function writeMenusNav5() {
    var container = document.createElement('SPAN');
    container.id = 'menuContainer';


    container.menus = new Array();
    for (var i=0; i<window.menus.length; i++) 
        container.menus[i] = window.menus[i];
    window.menus.length = 0;

    menuIdent = -500;

    var content = '';
    var itemCount = 0;
    var menuCount = 0;
    for (var i = 0; i < container.menus.length; i++, menuCount++) {
        var menu = container.menus[i];
        var menuLayer = createContainer("menuLayer" + menuCount, menuIdent, menuIdent, null, null, null, "hidden");
        container.appendChild(menuLayer);

        var menuBg = createContainer("menuBg" + menuCount, 0, 0, null, null, null, "inherit");
        menuLayer.appendChild(menuBg);

        var menuShadow = createContainer("menuShadow" + menuCount, 1, 1, null, null, null, "inherit");
        menuBg.appendChild(menuShadow);

        var menuLight = createContainer("menuLight" + menuCount, 0, 0, null, null, null, "inherit");
        menuShadow.appendChild(menuLight);

        var menuFg = createContainer("menuFg" + menuCount, 1, 1, null, null, null, "inherit");
        menuLight.appendChild(menuFg);

        var itemTop = 1;
        for (var x = 0; x < menu.items.length; x++, itemCount++) {
            var height = menu.items[x] == "separator" ? 8 : menu.images[x] ? 35 : 20;
            var menuItem = createContainer("menuItem" + itemCount, 1, itemTop, null, null, height, "inherit");
            menuFg.appendChild(menuItem);

            // create containers for image
            if (menu.images[x]) {
                var imageBg = createContainer("menuItemImageBg" + itemCount, 0, 0, null, 36, 35, "inherit");
                menuItem.appendChild(imageBg);
                var imageShadow = createContainer("menuItemImageShadow" + itemCount, 0, 0, null, 35, 35, "inherit");
                imageBg.appendChild(imageShadow);
                var imageLight = createContainer("menuItemImageLight" + itemCount, 0, 0, null, 34, 34, "inherit");
                imageShadow.appendChild(imageLight);
                var image = createContainer("menuItemImage" + itemCount, 1, 1, null, 33, 33, "inherit");
                imageLight.appendChild(image);

                var imageSrc = document.createElement('IMG');
                image.appendChild(imageSrc);
                imageSrc.setAttribute('SRC', menu.images[x]);
                imageSrc.setAttribute('WIDTH', 32);
                imageSrc.setAttribute('HEIGHT', 32);
            }

            if (menu.items[x] == "separator") {
                var menuSepUp = createContainer("menuSepUp" + itemCount, 1, 4, null, null, 2, "inherit");
                menuItem.appendChild(menuSepUp);
                var menuSepDown = createContainer("menuSepDown" + itemCount, 0, 1, null, null, 1, "inherit");
                menuSepUp.appendChild(menuSepDown);
            } else {
                var textTop = menu.images[x] ? 7 : 0;
                var text = createContainer("menuItemText" + itemCount, 38, textTop, null, null, 20, "inherit");
                menuItem.appendChild(text);
                var font = document.createElement('FONT');
                font.setAttribute('COLOR', menu.clText);
                var textEl = document.createTextNode(menu.items[x]);
                font.appendChild(textEl);
                text.appendChild(font);

                var textLight = createContainer("menuItemTextLight" + itemCount, 38, textTop, null, null, 20, "hidden");
                menuItem.appendChild(textLight);
                font = document.createElement('FONT');
                font.setAttribute('COLOR', menu.clTextLight);
                textEl = document.createTextNode(menu.items[x]);
                font.appendChild(textEl);
                textLight.appendChild(font);

                var glass = createContainer("menuItemGlass" + itemCount, 38, textTop, 2, null, 20, "inherit");
                menuItem.appendChild(glass);
            }
            itemTop += height;
        }
        menuLayer.container = container;
    }
    document.documentElement.appendChild(container);

    var itemCount = 0;
    for (var i=0; i<container.menus.length; i++) {
        var menuLayer = document.getElementById("menuLayer" + i);
        var menuBg = document.getElementById("menuBg" + i);
        var menuShadow = document.getElementById("menuShadow" + i);
        var menuLight = document.getElementById("menuLight" + i);
        var menuFg = document.getElementById("menuFg" + i);

        container.menus[i].menuLayer = menuLayer;
        container.menus[i].menuLayer.Menu = container.menus[i];
        container.menus[i].menuLayer.Menu.container = container;

        menuLayer.style.backgroundColor = menuLayer.Menu.clShadowDark;
        menuBg.style.backgroundColor = menuLayer.Menu.clMenu;
        menuShadow.style.backgroundColor = menuLayer.Menu.clShadow;
        menuLight.style.backgroundColor = menuLayer.Menu.clShadowLight;
        menuFg.style.backgroundColor = menuLayer.Menu.clMenu;

        var textWidth = 0;
        var textHeight = 0;
        var charCount = 0;
        var saveItemCount = itemCount;
        for (var x=0; x < container.menus[i].items.length; x++, itemCount++) {
            var menuItem = document.getElementById("menuItem" + itemCount);
            menuItem.menuLayer = menuLayer;
            menuItem.itemIndex = itemCount;
            menuItem.isSeparator = menuLayer.Menu.items[x] == "separator";
            if (!menuItem.isSeparator) {
                menuItem.imageLayer = menuLayer.Menu.images[x] ? document.getElementById("menuItemImageBg" + itemCount) : null;
                menuItem.textLayer = document.getElementById("menuItemText" + itemCount);
                menuItem.textLightLayer = document.getElementById("menuItemTextLight" + itemCount);
                menuItem.textLightLayer.isLight = true;
                menuItem.glassLayer = document.getElementById("menuItemGlass" + itemCount);
            } else {
                menuItem.sepLayer = document.getElementById("menuSepUp" + itemCount);
                menuItem.sepLayer2 = document.getElementById("menuSepDown" + itemCount);
            }
            menuItem.action = menuLayer.Menu.actions[x];
            menuItem.target = menuLayer.Menu.targets[x];

            // setup colors
            if (menuItem.isSeparator) {
                menuItem.sepLayer.style.backgroundColor = menuLayer.Menu.clShadow;
                menuItem.sepLayer2.style.backgroundColor = menuLayer.Menu.clShadowLight;
            }

            // setup dimensions - find widest menu item
            menuItem.style.width = 1000;
            var h = 0;
            if (!menuItem.isSeparator) { 
                textWidth = textWidth < menuItem.textLayer.offsetWidth ? 
                    menuItem.textLayer.offsetWidth : 
                    textWidth;
                charCount = charCount < menuLayer.Menu.items[x].length ?
                    menuLayer.Menu.items[x].length :
                    charCount;
                h = menuItem.textLayer.offsetHeight;
                if (menuItem.imageLayer) {
                    h = menuItem.imageLayer.offsetHeight;
                }
            } else {
                h = 8;
            }

//            textHeight += menuItem.style.pixelHeight;
            menuItem.style.height = h;
            textHeight += h;

            menuItem.onmouseover = onMenuItemOver;
            menuItem.onmouseout = onMenuItemOut;
        }
        textWidth += 20;

        // setup dimensions - second pass
        var itemCount = saveItemCount;
        for (var x=0; x < container.menus[i].items.length; x++, itemCount++) {
            var menuItem = document.getElementById("menuItem" + itemCount);

            menuItem.style.width = 38 + textWidth;
            if (menuItem.isSeparator) {
                menuItem.style.height = 8;
                menuItem.sepLayer.style.height = 2;
                menuItem.sepLayer.style.width = 38 + textWidth - 2;
                menuItem.sepLayer2.style.height = 1;
                menuItem.sepLayer2.style.width = 38 + textWidth - 2;
                menuItem.sepLayer2.style.clip = "rect(0 " + (38 + textWidth - 2) + " 1 0)";
            } else {
                menuItem.textLayer.style.width = textWidth;
                menuItem.textLightLayer.style.width = textWidth;
                menuItem.glassLayer.style.width = textWidth;
            }
        }
        textWidth += 38;

        menuFg.style.height = textHeight + 2;
        menuLight.style.height = textHeight + 3;
        menuShadow.style.height = textHeight + 4;
        menuBg.style.height = textHeight + 5;
        menuLayer.style.height = textHeight + 6;

        menuFg.style.width = textWidth + 2;
        menuLight.style.width = textWidth + 3;
        menuShadow.style.width = textWidth + 4;          
        menuBg.style.width = textWidth + 5;              
        menuLayer.style.width = textWidth + 6;           
    }

    setMouseTracker();
}

function lightMenuItem(menuItem, light) {
    if (menuItem.isSeparator) return;
    var menu = menuItem.menuLayer.Menu;
    if (is.nav5up) {
        if (light) {
            menuItem.style.backgroundColor = menu.clMenuLight;
            var imageLayer = menuItem.imageLayer;
            if (imageLayer) {
                imageLayer.style.backgroundColor = menu.clMenu;
                imageLayer = document.getElementById("menuItemImageShadow" + menuItem.itemIndex);
                imageLayer.style.backgroundColor = menu.clShadow;
                imageLayer = document.getElementById("menuItemImageLight" + menuItem.itemIndex);
                imageLayer.style.backgroundColor = menu.clShadowLight;
                imageLayer = document.getElementById("menuItemImage" + menuItem.itemIndex);
                imageLayer.style.backgroundColor = menu.clMenu;
            }
            menuItem.textLightLayer.style.zIndex = defaultMenuZIndex + 1;
            menuItem.textLightLayer.style.visibility = "inherit";
        } else {
            menuItem.style.backgroundColor = menu.clMenu;
            var imageLayer = menuItem.imageLayer;
            if (imageLayer) {
                imageLayer.style.backgroundColor = menu.clMenu;
                imageLayer = document.getElementById("menuItemImageShadow" + menuItem.itemIndex);
                imageLayer.style.backgroundColor = menu.clMenu;
                imageLayer = document.getElementById("menuItemImageLight" + menuItem.itemIndex);
                imageLayer.style.backgroundColor = menu.clMenu;
                imageLayer = document.getElementById("menuItemImage" + menuItem.itemIndex);
                imageLayer.style.backgroundColor = menu.clMenu;
            }
            menuItem.textLightLayer.style.zIndex = defaultMenuZIndex;
            menuItem.textLightLayer.style.visibility = "hidden";
        }
    } else if (is.ie4up) {
        if (light) {
            menuItem.style.backgroundColor = menu.clMenuLight;
            var imageLayer = menuItem.imageLayer;
            if (imageLayer) {
                imageLayer.style.backgroundColor = menu.clMenu;
                imageLayer = document.all["menuItemImageShadow" + menuItem.itemIndex];
                imageLayer.style.backgroundColor = menu.clShadow;
                imageLayer = document.all["menuItemImageLight" + menuItem.itemIndex];
                imageLayer.style.backgroundColor = menu.clShadowLight;
                imageLayer = document.all["menuItemImage" + menuItem.itemIndex];
                imageLayer.style.backgroundColor = menu.clMenu;
            }
            menuItem.textLightLayer.style.zIndex = defaultMenuZIndex + 1;
            menuItem.textLightLayer.style.visibility = "inherit";
        } else {
            menuItem.style.backgroundColor = menu.clMenu;
            var imageLayer = menuItem.imageLayer;
            if (imageLayer) {
                imageLayer.style.backgroundColor = menu.clMenu;
                imageLayer = document.all["menuItemImageShadow" + menuItem.itemIndex];
                imageLayer.style.backgroundColor = menu.clMenu;
                imageLayer = document.all["menuItemImageLight" + menuItem.itemIndex];
                imageLayer.style.backgroundColor = menu.clMenu;
                imageLayer = document.all["menuItemImage" + menuItem.itemIndex];
                imageLayer.style.backgroundColor = menu.clMenu;
            }
            menuItem.textLightLayer.style.zIndex = defaultMenuZIndex;
            menuItem.textLightLayer.style.visibility = "hidden";
        }
    } else if (is.nav4up) {
        if (light) {
            menuItem.document.bgColor = menu.clMenuLight;
            var imageLayer = menuItem.imageLayer;
            if (imageLayer) {
                imageLayer.document.bgColor = menu.clMenu;
                imageLayer = imageLayer.document.layers[0];
                imageLayer.document.bgColor = menu.clShadow;
                imageLayer = imageLayer.document.layers[0];
                imageLayer.document.bgColor = menu.clShadowLight;
                imageLayer = imageLayer.document.layers[0];
                imageLayer.document.bgColor = menu.clMenu;
            }
            menuItem.textLightLayer.zIndex = defaultMenuZIndex + 1;
            menuItem.textLightLayer.visibility = "inherit";
        } else {
            menuItem.document.bgColor = null;
            var imageLayer = menuItem.imageLayer;
            if (imageLayer) {
                imageLayer.document.bgColor = null;
                imageLayer = imageLayer.document.layers[0];
                imageLayer.document.bgColor = null;
                imageLayer = imageLayer.document.layers[0];
                imageLayer.document.bgColor = null;
                imageLayer = imageLayer.document.layers[0];
                imageLayer.document.bgColor = null;
            }
            menuItem.textLightLayer.zIndex = defaultMenuZIndex;
            menuItem.textLightLayer.visibility = "hidden";
        }
    }
}

function Menu_parentAbsLeft(obj) {
  var r = 0
  obj = obj.offsetParent
  while (obj) {
    r += obj.offsetLeft
    obj = obj.offsetParent
  }
  return r
}

function Menu_parentAbsTop(obj) {
  var r = 0
  obj = obj.offsetParent
  while (obj) {
    r += obj.offsetTop
    obj = obj.offsetParent
  }
  return r
}

function showMenu(menu, x, y, child) {
    if (is.nav5up) {
        var l = menu.menuLayer || menu;
        hideActiveMenu(l);
        window.activeMenu = l;
        l.style.visibility = "inherit";
        l.Menu.container.style.visibility = "inherit";
        if (x != "relative") 
//            l.style.left = x || (window.pageX + document.body.scrollLeft) || 0;
            l.style.left = x || (window.pageX) || 0;
        if (y != "relative") 
//            l.style.top = y || (window.pageY + document.body.scrollTop) || 0;
            l.style.top = y || (window.pageY) || 0;
        l.Menu.xOffset = document.body.scrollLeft;
        l.Menu.yOffset = document.body.scrollTop;
    } else if (is.ie4up) {
        var l = menu.menuLayer || menu;
        hideActiveMenu(l);
        window.activeMenu = l;
        l.style.visibility = "inherit";
        if (x != "relative") {
            var mx = (x || (window.pageX + l.offsetParent.scrollLeft) || 0) - Menu_parentAbsLeft(l);
            if (((mx + l.offsetWidth) >= l.offsetParent.scrollLeft + l.offsetParent.clientWidth) && 
                 (mx >= l.offsetParent.scrollLeft + l.offsetWidth)){
                mx -= l.offsetWidth;
            }
            l.style.pixelLeft = mx;
        }
        if (y != "relative") { 
            var my = (y || (window.pageY + l.offsetParent.scrollTop) || 0)  - Menu_parentAbsTop(l);
            if (((my + l.offsetHeight) >= l.offsetParent.scrollTop + l.offsetParent.clientHeight) && 
                 (my >= l.offsetParent.scrollTop + l.offsetHeight)){
                my -= l.offsetHeight;
            }
            l.style.pixelTop = my;
        }
        l.Menu.xOffset = l.offsetParent.scrollLeft;
        l.Menu.yOffset = l.offsetParent.scrollTop;
    } else if (is.nav4up) {
        if (menu) {
            var l = menu.menuLayer || menu;
            l.Menu.container.document.bgColor = null;
            l.left = 1;
            l.top = 1;
            hideActiveMenu();
            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].isLight) 
                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) {
                var left = window.innerWidth - l.clip.width;
                left = left < 0 ? 0 : left;
                l.parentLayer.left = left;
            }
            if (y != "relative") 
                l.parentLayer.top = y || window.pageY || 0;
            if (l.parentLayer.top + l.clip.height > window.innerHeight) {
                var top = window.innerHeight - l.clip.height;
                top = top < 0 ? 0 : top;
                l.parentLayer.top = top;
            }
            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";
            l.Menu.container.clip.width = window.activeMenu.clip.width +2;
            l.Menu.container.clip.height = window.activeMenu.clip.height +2;
        }
    }
}

function hideActiveMenu() {
    if (is.nav5up) {
        if (window.activeMenu) {
            activeMenu.style.left = -500;
            activeMenu.style.top = -500;
            activeMenu.style.visibility = "hidden";
            activeMenu.Menu.container.style.visibility = "hidden";
            window.activeMenu = null;
        }
    } else if (is.ie4up) {
        if (window.activeMenu) {
            activeMenu.style.pixelLeft = -500;
            activeMenu.style.pixelTop = -500;
            activeMenu.style.visibility = "hidden";
            activeMenu.Menu.container.style.visibility = "hidden";
            window.activeMenu = null;
        }
    } else if (is.nav4up) {
        if (window.activeMenu) {
            activeMenu.visibility = "hidden";
            activeMenu.Menu.container.visibility = "hidden";
            window.activeMenu = null;
        }
    } 
}


function onMenuItemUp() {
    if (document._menu_prevmouseup) {
        document._menu_prevmouseup();
    }
    if (window.activeMenuItem) {
        hideActiveMenu();
        var action = window.activeMenuItem.action;
        var target = window.activeMenuItem.target;
        if (!target) target = "_self";
        if (is.nav5up) {
            if (action.substr(0, 10) == 'javascript') {
                eval('action="' + action + '"')
                eval(action);
                return;
            }
        }
        eval('window.open("' + action + '", "' + target + '")');
    } else {
        hideActiveMenu();
    }
}

function mouseTracker(e) {
    e = e || window.Event || window.event;
    window.pageX = e.pageX || e.clientX;
    window.pageY = e.pageY || e.clientY;
    if (document._menu_prevmousemove) {
        return document._menu_prevmousemove();
    }
}

function setMouseTracker() {
    if (document._menu_mousetrackerset) return;
    document._menu_mousetrackerset = true;
    if (document.captureEvents) {
        document.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
    }
    document._menu_prevmousemove=document.onmousemove;
    document._menu_prevmouseup=document.onmouseup;
    document.onmousemove = mouseTracker;
    document.onmouseup = onMenuItemUp;
}

var Menu_timerID;
var Menu_saveMenuItem;

function onMenuItemOver() {
    if (is.ie4)
        clearTimeout(Menu_timerID);
    var a = window.activeMenuItem;
    if (a) {
        lightMenuItem(a, false);
    }
    lightMenuItem(this, true);
    window.activeMenuItem = this;
}

function onMenuItemOut() {
    var a = window.activeMenuItem;
    if (this == a) {
        if (is.ie4) {
            Menu_saveMenuItem = a;
            Menu_timerID = setTimeout("delayLightMenuItem()", 10);
        } else {
            lightMenuItem(a, false);
            window.activeMenuItem = null;
        }
    }
}

function delayLightMenuItem() {
    lightMenuItem(Menu_saveMenuItem, false);
    if (Menu_saveMenuItem == window.activeMenuItem)
        window.activeMenuItem = null;
}