// IE HACK ktory zabrani tomu aby selecty boli vykreslene nad vsetkym ostatnym.
// (http://dotnetjunkies.com/WebLog/jking/archive/2003/07/21/488.aspx)
if (/MSIE/.test(navigator.userAgent)) {
    var IESelectFix = {
        enable: function(item) {
            var pane = item.getElementsByTagName("ul")[0];
            var html = "";

            html = "<iframe id=\"ie_menu_fix\" src=\"javascript:false;\" frameborder=\"0\" scrolling=\"no\" ";
            html += "style=\"";
            html += "position: absolute;";
            html += "top: " + pane.offsetTop + "px;";
            html += "left: " + pane.offsetLeft + "px;";
            html += "width: " + pane.offsetWidth + "px;";
            html += "height: " + pane.offsetHeight + "px;";
            html += "z-index: -1;\"";
            html += "></iframe>";

            item.insertAdjacentHTML("afterBegin", html);
        },

        disable: function() {
            if (fix = $("ie_menu_fix")) {
                fix.remove();
            }
        }
    }
} else {
    var IESelectFix = {
        enable: function() {},
        disable: function () {}
    }
}

var MenuBar = Class.create();
MenuBar.prototype = {
    initialize : function(element) {
        var element = $(element);

        var isOpen = false;
        var items = element.immediateDescendants();

        function close() {
            items.each(function(item) {
                item.removeClassName("open");
            });

            isOpen = false;
            IESelectFix.disable();
        }

        function open(event) {
            var element = Event.element(event).parentNode;

            close();
            element.addClassName("open");
            Event.stop(event);
            isOpen = true;

            IESelectFix.enable(element);
        }

        items.each(function(item) {
            var subMenu = item.getElementsByTagName("ul")[0];

            if (subMenu) {
                var links = $A(item.getElementsByTagName("a"));
                var trigger = links[0];

                Event.observe(trigger, "mousedown", open);
                Event.observe(trigger, "mouseover", function(event) {
                    if (isOpen) {
                        open(event);
                    }
                });
                Event.observe(trigger, "click", Event.stop);

                links.slice(1).each(function(link) {
                    Event.observe(link, "mousedown", Event.stop);
                });
            }
        });

        Event.observe(document.getElementsByTagName("body")[0], "mousedown", close);
    }
}
