$.menu = {
    actual_menuitem:0,

    open: function (self) {
        var item=$('ul.level2',self);
        if (!item || item.is(':visible') || $.menu.actual_menuitem==item) return;
        $.menu.close();
        $.menu.actual_menuitem=item;
        $.menu.actual_menuitem.slideDown();
    },

    close: function (self) {
        if ($.menu.actual_menuitem) {
            $.menu.actual_menuitem.slideUp();
        }
    },

    buildHMenu: function(requiresClick) {
        $('ul.level2',this).css('position','absolute');
        $('li.level1 span',this).css('cursor','pointer');
        $('li.level1 a',this).bind('focus',function() {this.blur();})
        if (typeof(requiresClick)=='undefined') {
            requiresClick=true;
        }
        if (requiresClick) {
            $('li.level1',this).click(function() {$.menu.open(this);});
            $('li.level1',this).hover(function() {},function() {$.menu.close(this);});
        } else {
            $('li.level1',this).hover(
                function() {
                    $.menu.open(this);
                },
                function() {
                    $.menu.close(this);
                }
            );
        }
        return this;
    },

    buildVMenu: function(requiresClick) {
        $('li.level1 span',this).css('cursor','pointer');
        $('li.level1 a',this).bind('focus',function() {this.blur();})
        $('li.level1',this).css('clear','both');
        if (typeof(requiresClick)=='undefined') {
            requiresClick=true;
        }
        if (requiresClick) {
            $('li.level1',this).click(function() {$.menu.open(this);});
        } else {
            $('li.level1',this).hover(function() {$.menu.open(this);},function() {$.menu.close(this);});
        }
        return this;
    }

}

$.fn.extend({
    hmenu : $.menu.buildHMenu,
    vmenu : $.menu.buildVMenu
});
