var Menu = function(navlistid) {


    /** instance stuff */
    this.navlistid = navlistid;
    this.submenu = null;


    this.__init__ = function() {
        this.menulabel = document.getElementById('mnu' + this.navlistid.toString());
        this.submenu = document.getElementById('submnu' + this.navlistid.toString());
    }

    this.open = function() {
        Menu.closeall();
        labelX = findPosX(this.menulabel);
        this.submenu.style.left = labelX;
        this.submenu.style.visibility = 'visible';
        Menu.visibleMenu = this;
        document.getElementsByTagName('html')[0].onmouseup = function() { Menu.visibleMenu.close() };
    }

    this.close = function() {
        Menu.visibleMenu = null;
        this.submenu.style.visibility = 'hidden';
        document.getElementsByTagName('html')[0].onmouseup = null;
    }

    this.focused = function() {
        if(Menu.visibleMenu) {
            this.open();
        }
    }



    this.__init__();
}

/** static stuff **/

Menu.instances = new Array();
Menu.visibleMenu = null;

Menu.get = function(navlistid) {
    if(!Menu.instances[navlistid]) {
        Menu.instances[navlistid] = new Menu(navlistid);
    }
    return Menu.instances[navlistid];
}

Menu.closeall = function() {
    for(navlistid in Menu.instances) {
        Menu.instances[navlistid].close();
    }
}


function findPosX(obj) {
    var curleft = 0;
    if(obj.offsetParent) {
        while(true) {
            curleft += obj.offsetLeft;
            if(!obj.offsetParent) {
                break;
            }
            obj = obj.offsetParent;
        }
    } else if(obj.x) {
        curleft += obj.x;
    }
    return curleft;
}

