
var __nav_menus    = new Array();
var __current_menu = null;
var __menu_timer   = null;

//just in case we decide to add an onclick elsewhere...
function globalMenuClickHandler() {
    if (__current_menu) {
        var obCurMenu = document.getById(__current_menu);
        if (obCurMenu)
            hideNavMenu(obCurMenu);
    }
}

var __base_fn = document.onclick;
document.onclick = function() {
    globalMenuClickHandler();
    if (__base_fn)
        __base_fn();
}

function navMenuClicked(e, strMenuId) {
    if (!e)
        e = window.event;
    e.cancelBubble = true;
    if (e.stopPropagation)
        e.stopPropagation();
    var obMenu = document.getById(strMenuId);
    if (obMenu) {
        __current_menu = strMenuId;
        showNavMenu(obMenu);
    }
}

function navMenuMouseOver(strMenuId) {
    var obMenu = document.getById(strMenuId);
    if (obMenu) {
        __current_menu = strMenuId;
        showNavMenu(obMenu);
    }
}

function navMenuMouseOut() {
    if (__current_menu) {
        __menu_timer = setTimeout("hideNavMenu(document.getById('" + __current_menu + "'));", 500);
    }
}

function cancelMenuTimer(strMenuId) {
    if (__menu_timer) {
        clearTimeout(__menu_timer);
        __menu_timer = null;
    }
}

function showNavMenu(obMenu) {
    if (__menu_timer) {
        clearTimeout(__menu_timer);
        __menu_timer = null;
    }
    var strShow = "visible";
    if (!obMenu.style) {
        obMenu.style = obMenu;
        strShow = "show";
    }

    hideAllNavMenusExcept(obMenu);
    obMenu.style.visibility = strShow;
}

function hideAllNavMenusExcept(obMenu) {
    for (var i = 0; i < __nav_menus.length; ++i) {
        obOtherMenu = document.getById(__nav_menus[i]);
        if (obMenu != obOtherMenu) {
            hideNavMenu(obOtherMenu);
        }
    }
}

function hideNavMenu(obMenu) {
    if (!obMenu.style)
        obMenu.style = obMenu;
    obMenu.style.visibility = "hidden";
    if (__menu_timer) {
        clearTimeout(__menu_timer);
        __menu_timer = null;
    }
}
