var OverlayManager = new YAHOO.widget.OverlayManager();
var g_nTimeoutId;

// "mouseover" event handler for the root menu in the left nav
function onRootMenuMouseOver(p_sType, p_aArguments, p_oMenu) {
    if(g_nTimeoutId) {
        window.clearTimeout(g_nTimeoutId);
    }
}


// "mouseover" event handler for each submenu
function onSubmenuMouseOver(p_sType, p_aArguments, p_oMenu) {
    if(g_nTimeoutId) {
        window.clearTimeout(g_nTimeoutId);
    }
}


// "mouseout" event handler for each submenu

function onSubmenuMouseOut(p_sType, p_aArguments, p_oMenu) {
    function hideMenu() {
        p_oMenu.hide();
    }
    if(g_nTimeoutId) {
        window.clearTimeout(g_nTimeoutId);
    }
    g_nTimeoutId = window.setTimeout(hideMenu, 750);
}


// "mousedown" handler for the document
function onDocumentMouseDown(p_oEvent) {
    OverlayManager.hideAll();
}


function onWindowLoad2() {
    var oMenu = new YAHOO.widget.Menu("MainMenu", { position: "static" });

    var i = oMenu.getItemGroups()[0].length - 1,  oMenuItem, oSubmenu, aSubmenuItems, nSubmenuItems;

    do {
        oMenuItem = oMenu.getItem(i);
        aSubmenuItems = SubMenuItems[oMenuItem.element.id];
        if(aSubmenuItems) {
            // Create a submenu
            oSubmenu = new YAHOO.widget.Menu((oMenuItem.element.id + "menu"));

            // Add a "mouseover" event handler to the submenu
            oSubmenu.mouseOverEvent.subscribe(onSubmenuMouseOver, oSubmenu, true);

            // Add a "mouseout" event handler to the submenu
            oSubmenu.mouseOutEvent.subscribe(onSubmenuMouseOut, oSubmenu, true);

            // Add items to the submenu
            nSubmenuItems = aSubmenuItems.length;
            for(var n=0; n<nSubmenuItems; n++) {
                oSubmenu.addItem(new YAHOO.widget.MenuItem(aSubmenuItems[n].text, { url: aSubmenuItems[n].url}));
            }

            // Add the submenu to its parent item in the main menu
            oMenuItem.cfg.setProperty("submenu", oSubmenu);
            OverlayManager.register(oSubmenu);
        }
    }
    while(i--);

    // Render the root menu and corresponding submenus
    oMenu.render();

    // Add a "mouseover" handler to the root menu
    oMenu.mouseOverEvent.subscribe(onRootMenuMouseOver, oMenu, true);

    // Add a "mousedown" handler to the document
    YAHOO.util.Event.addListener(document, "mousedown", onDocumentMouseDown);
}
YAHOO.util.Event.addListener(window, "load", onWindowLoad2);