﻿var lastMainMenuItem = null;

jqnc(function() {
    // Adding menu item mouse handlers.
    // [MB]
    jqnc("#MainMenu .Item").mouseover(function(e) {
        var currentMenuItem = findParentOrSelfByClassName(e.target, "Item");

        if (currentMenuItem) {
            mainMenuHandler.SelectMenuItem(currentMenuItem);
        }
    });
    jqnc("#MainMenu .Submenu").mouseover(function(e) {
        var currentSubMenuItem = findParentOrSelfByClassName(e.target, "Submenu");

        if (currentSubMenuItem) {
            mainMenuHandler.CheckSubmenuClosing(currentSubMenuItem);
        }
    });
    jqnc("#MainMenu .Item").mouseout(function(e) {
        var currentMenuItem = findParentOrSelfByClassName(e.target, "Item");

        if (currentMenuItem) {
            mainMenuHandler.BeginClosingMenuItem();
        }
    });
    jqnc("#MainMenu .Submenu").mouseout(function(e) {
        mainMenuHandler.BeginClosingMenuItem();
    });

    // Handling highlight of sub menu items.
    // [MB]
    jqnc("#MainMenu .SubItem").mouseover(function(e) {
        var currentSubItem = findParentOrSelfByClassName(e.target, "SubItem");

        if (currentSubItem) {
            jqnc(currentSubItem).addClass("Hover");
        }
    });
    jqnc("#MainMenu .SubItem").mouseout(function(e) {
        var currentSubItem = findParentOrSelfByClassName(e.target, "SubItem");

        if (currentSubItem) {
            jqnc(currentSubItem).removeClass("Hover");
        }
    });

    // Making the menu items relative for hierachical FF bug.
    // [MB]
    if (isFF) {
        var mainMenuItems = jqnc("#MainMenu .Item");
        for (var mmNum = 0; mmNum < mainMenuItems.length; mmNum++) {
            mainMenuItems[mmNum].style.position = "relative";
        }
    }
});

function dbg(s) {
    jqnc("#log").get(0).innerHTML += s + "<br />";
}
MainMenuHandler = function() {
    this.ActiveMenuItem = null;
    this.ClosingTimer = [];
}

MainMenuHandler.prototype = {
    // Highlight main menu item.
    // [MB]
    SelectMenuItem: function(currentMenuItem) {
        if (currentMenuItem) {
            // Stop closing, if already on item.
            // [MB]
            if (mainMenuHandler.ActiveMenuItem == currentMenuItem)
                mainMenuHandler.StopClosing(currentMenuItem.id);

            // Switch selectd item to active.
            // [MB]
            mainMenuHandler.ActiveMenuItem = currentMenuItem;
            jqnc(currentMenuItem).addClass("Hover");

            // Move submenu.
            // [MB]
            var subMenuItem = Get(currentMenuItem.id + "Sub");

            if (subMenuItem) {
                var firefoxFixTop = (isFF) ? -5 : 0;
                var firefoxFixLeft = (isFF) ? -25 : 0;

                subMenuItem.style.top = (document.getElementById("MainMenu").offsetTop + currentMenuItem.offsetHeight + 25 + firefoxFixTop) + "px";
                subMenuItem.style.left = (currentMenuItem.offsetLeft + 25 + firefoxFixLeft) + "px";
                subMenuItem.style.visibility = "visible";
            }
        }
    },

    BeginClosingMenuItem: function() {
        if (mainMenuHandler.ActiveMenuItem)
            mainMenuHandler.ClosingTimer[mainMenuHandler.ActiveMenuItem.id] = window.setTimeout("mainMenuHandler.CloseMenu('" + mainMenuHandler.ActiveMenuItem.id + "');", 20);
    },

    StopClosing: function(timerToStop) {
        if (mainMenuHandler.ClosingTimer[timerToStop]) {
            window.clearTimeout(mainMenuHandler.ClosingTimer[timerToStop]);
        }
    },

    CheckSubmenuClosing: function(currentSubMenuItem) {
        if (currentSubMenuItem && mainMenuHandler.ActiveMenuItem) {
            if (currentSubMenuItem.id == mainMenuHandler.ActiveMenuItem.id + "Sub") {
                mainMenuHandler.StopClosing(mainMenuHandler.ActiveMenuItem.id);
            }
        }
    },

    // Unselect main menu item.
    // [MB]
    CloseMenu: function(itemToClose) {
        jqnc("#" + itemToClose).removeClass("Hover");

        var subMenu = jqnc("#" + itemToClose + "Sub");
        subMenu.css("visibility", "hidden");
        subMenu.css("top", "-1000px");
        subMenu.css("left", "-1000px");
    }
}

var mainMenuHandler = new MainMenuHandler();