var Menu = new Object();

Menu.Repository = new Array();
Menu.Current = 0;
Menu.CurrentSelected = false;
Menu.Timer = 0;
Menu.Animation = 0;
Menu.Height = 0;
Menu.Desired = 0;

Menu.Mouseover = function(nMenu, bSelected, nSubmenu) {
    if (nMenu && nMenu != this.Current) {
        var pLink = document.getElementById("MenuLink"+nMenu);
        var pTop = document.getElementById("MenuTop"+nMenu);
        var pMiddle = document.getElementById("MenuMiddle"+nMenu);
        var pBottom = document.getElementById("MenuBottom"+nMenu);
        
        if (pLink && pTop && pMiddle && pBottom) {
            pLink.className = "menu_hover";
            pTop.className = "menu_top_hover";
            pMiddle.className = "menu_middle_hover";
            pBottom.className = "menu_bottom_hover";
            
            this.Open(nMenu, bSelected, nSubmenu);
        }
    } else this.Focus();
}

Menu.Mouseout = function(nMenu, bSelected) {
    if (nMenu && nMenu != this.Current) {
        var pLink = document.getElementById("MenuLink"+nMenu);
        var pTop = document.getElementById("MenuTop"+nMenu);
        var pMiddle = document.getElementById("MenuMiddle"+nMenu);
        var pBottom = document.getElementById("MenuBottom"+nMenu);
        
        if (pLink && pTop && pMiddle && pBottom) {
            pLink.className = "menu"+(bSelected ? "_selected" : "");
            pTop.className = bSelected ? "menu_top" : "";
            pMiddle.className = bSelected ? "menu_middle" : "";
            pBottom.className = "menu_bottom"+(bSelected ? "_selected" : "");
        }
    } else this.Detach();
}

Menu.Open = function(nMenu, bSelected, nSubmenu) {
    var pPopup = document.getElementById("MenuPopup");
    
    if (pPopup && this.Repository && this.Repository.length) {
        if (this.Timer) {
            window.clearTimeout(this.Timer);
            
            this.Timer = 0;
        }
        
        if (this.Animation) {
            window.clearInterval(this.Animation);
            
            this.Animation = 0;
        }

        if (this.Current > 0) {
            var nOld = this.Current;
            var bOld = this.CurrentSelected;
            
            this.Current = 0;
            this.CurrentSelected = false;
            
            pPopup.innerHTML = "";
            pPopup.style.visibility = "hidden";
            pPopup.style.height = "0px";

            this.Mouseout(nOld, bOld);
        }
        
        if (nSubmenu >= 0 && nSubmenu < this.Repository.length && this.Repository[nSubmenu].length > 0) {
            var pParent = document.getElementById("MenuLink"+nMenu);
            var sPopup = "<div style=\"padding-left: "+(pParent ? pParent.offsetWidth+16 : 0)+"px;\"><div class=\"menu-popup-border\"><img src=\""+sPageBase+"/images/trans.gif\" width=\"1\" height=\"1\" border=\"\" alt=\"\" /></div></div>";
            var nX = 0;
            var nY = 0;

            while(pParent) {
                nX += typeof(pParent.offsetLeft) == "number" ? pParent.offsetLeft : 0;
                nY +=typeof(pParent.offsetTop) == "number" ? pParent.offsetTop : 0;
                
                pParent = pParent.parentNode;
            }            
            
            for(var nPopup = 0;nPopup < this.Repository[nSubmenu].length;nPopup ++) {
                var sName = unescape(this.Repository[nSubmenu][nPopup][0]);
                
                while(sName.indexOf(" ") != -1)
                    sName = sName.replace(" ", "&nbsp;");
                    
                sPopup += "<div class=\"menu-popup-item\"><a href=\""+unescape(this.Repository[nSubmenu][nPopup][1])+"\" class=\"banner\">"+sName+"</a></div>";
            }
            
            sPopup += "";
            
            this.Current = nMenu;
            this.CurrentSelected = bSelected;
            this.Height = 0;

            pPopup.innerHTML = sPopup;
            pPopup.style.left = (nX-8)+"px";
            pPopup.style.top = (nY+22)+"px";
            pPopup.style.visibility = "visible";
            
            this.Animation = window.setInterval("Menu.Animate();", 20);
        }
    }
}

Menu.Focus = function() {
    if (this.Current > 0 && this.Timer) {
        window.clearTimeout(this.Timer);
    
        this.Timer = 0;
    }
}

Menu.Detach = function() {
    if (this.Current > 0 && !this.Timer)
        this.Timer = window.setTimeout("Menu.Timer=0;Menu.Open(0, false, -1);", 2000);
}

Menu.Animate = function() {
    var pPopup = document.getElementById("MenuPopup");
    
    if (pPopup && pPopup.style.visibility == "visible") {
        var nDesired = this.Height ? this.Desired : parseInt(pPopup.scrollHeight)+1;
        
        this.Desired = nDesired;

        if (this.Height < nDesired) {
            this.Height += (nDesired-this.Height)/5;
            
            pPopup.style.height = this.Height+"px";
        } else if (this.Animation) {
            window.clearInterval(this.Animation);
            
            this.Animation = 0;
        }
    }
}

Menu.Close = function() {
    if (this.Timer)
        Menu.Open(0, false, -1);
}


