﻿var openSubMenuId = "";
var openMenuId = "";

/* Add menu listeners */
/* Needs jQuery JS library */
$(document).ready(function () {
    if (document.addEventListener) {
        document.addEventListener("mousedown", menuMouseDown, false);
    } else if (document.attachEvent) {
        document.attachEvent("onmousedown", function () { menuMouseDown(window.event); });
    }
})

function menuMouseDown(e) {
    var el = e.target ? e.target : e.srcElement;
    while (el != null) {
        if (el.className.substr(0, 8) == 'submenu_') return;
        el = el.offsetParent;
    }
    hideSubmenu();
}

function showSubmenu(menuItemObj) {

    /* Hide previously opened sub menu */
    hideSubmenu();

    /* open new sub menu */
    openSubMenuId = menuItemObj.id + "_submenu";
    var subMenu = document.getElementById(openSubMenuId);
    if (subMenu != null) {
        /* sub menu exists */
        var menu = document.getElementById(menuItemObj.id);
        if (menu != null) {
            openMenuId = menuItemObj.id;
            menu.className = 'selected';
        }

        /* calculate sub menu horizontal position */
        var iLeft = getX(menuItemObj);
        /* display sub menu at calculated position */
        subMenu.style.visibility = 'visible';
        subMenu.style.left = iLeft + "px";
    }
}

function hideSubmenu() {

    /* Deselect previously selected menu */
    if (openMenuId != "") {
        var menu = document.getElementById(openMenuId);
        if (menu != null) {
            /* menu exists */
            menu.className = '';
        }
        openMenuId = "";
    }
    /* Hide previously opened sub menu */
    if (openSubMenuId != "") {
        var subMenu = document.getElementById(openSubMenuId);
        if (subMenu != null) {
            /* sub menu exists */
            subMenu.style.visibility = 'hidden';
        }
    }
}

function getX(oElement) {
    var iReturnValue = 0;
    while (oElement != null) {
        iReturnValue += oElement.offsetLeft;
        oElement = oElement.offsetParent;
    }
    return iReturnValue;
}

function getY(oElement) {
    var iReturnValue = 0;
    while (oElement != null) {
        iReturnValue += oElement.offsetTop;
        oElement = oElement.offsetParent;
    }
    return iReturnValue;
}

