function llx3_Menu() {
    var MainMenu = new MenuItem();
    var MenuManager = this;
    var allMenuItems = new Array();
    this.staticDepth = 1;

    this.add = function (element, parentMenuItem) {
        if (parentMenuItem == undefined) parentMenuItem = MainMenu;
        for (var i = 0; i < element.children.length; i++) {
            if (element.children[i].tagName == "UL") {
                var mc = new MenuContainer();
                mc.element = element.children[i];
                mc.parentItem = parentMenuItem;
                if (parentMenuItem.depth >= MenuManager.staticDepth) {
                    mc.element.style.position = "absolute";
                    mc.element.style.display = "none";
                }
                for (var j = 0; j < element.children[i].children.length; j++) {
                    var mi = new MenuItem();
                    mi.element = element.children[i].children[j];
                    mi.depth = parentMenuItem.depth + 1;
                    if (mi.depth >= MenuManager.staticDepth) { mi.element.onmouseover = OnMouseOver; mi.element.onmouseout = OnMouseOut }
                    mc.items.push(mi);
                    allMenuItems.push(mi);
                    MenuManager.add(mi.element, mi);
                }
                parentMenuItem.submenus.push(mc);
            }

        }


    }

    function OnMouseOver() {
        mi = getMenuItem(this);
        for (var i = 0; i < mi.submenus.length; i++) {
            mi.submenus[i].show();
        }

    }
    function OnMouseOut() {
        mi = getMenuItem(this);
        for (var i = 0; i < mi.submenus.length; i++) {
            mi.submenus[i].hide();
        }

    }

    function getMenuItem(element) {
        for (var i = 0; i < allMenuItems.length; i++) { if (allMenuItems[i].element == element) return allMenuItems[i]; }
    }

    function MenuContainer() {
        var This = this;
        this.element;
        this.items = new Array();
        this.parentItem = null;
        var hideTout = 0;

        this.show = function () {
            clearTimeout(hideTout);
            This.element.style.display = "block";
            This.element.style.top = This.parentItem.element.offsetHeight + This.parentItem.element.offsetTop + "px";
            This.element.style.left = (This.parentItem.element.offsetWidth) / 2 - (This.element.offsetWidth)/2 + "px";

        }
        this.hide = function () { hideTout = setTimeout(function () { This.element.style.display = "none" }, 300); }
    }
    function MenuItem() {
        this.element;
        this.submenus = new Array();
        this.depth = 0;
    }

 }
