var YOOAccordionMenu = new Class({
    initialize: function(togglers, elements, options) {
        this.setOptions({
            accordion: 'default',
            onActive: function(tog) {
                tog.addClass('active');
                tog.getFirst().addClass('active')
            },
            onBackground: function(tog) {
                tog.removeClass('active');
                tog.getFirst().removeClass('active')
            }
        },
        options);
        this.togs = togglers;
        this.elms = elements;
        switch (this.options.accordion) {
        case 'slide':
            this.createSlide();
            break;
        default:
            this.createDefault()
        }
    },
    createDefault: function() {
        var options = {};
        if (!$defined(this.options.display) && !$defined(this.options.show)) {
            options = {
                show: -1
            }
        }
        $ES(this.togs).each(function(tog, i) {
            if (tog.hasClass('active')) options = {
                show: i
            }
        }.bind(this));
        var accordionMenu = new Fx.Accordion(this.togs, this.elms, $extend(this.options, options))
    },
    createSlide: function() {
        $ES(this.togs).each(function(tog, i) {
            var span = tog.getElement('span');
            var ul = tog.getElement(this.elms);
            var fx = new Fx.Slide(ul, {
                transition: Fx.Transitions.linear,
                duration: 250
            });
            if (! (tog.hasClass('active') || this.options.display == 'all' || this.options.display == i)) {
                fx.hide()
            }
            span.addEvent('click',
            function() {
                fx.toggle().chain(function() {
                    tog.toggleClass('active');
                    tog.getFirst().toggleClass('active')
                })
            })
        }.bind(this))
    }
});
YOOAccordionMenu.implement(new Options);
