var rAccordion = new Class({

    initialize: function(container, toggleClass, elementClass, options) {
        this.container = container;
        this.tClass = toggleClass;
        this.eClass = elementClass;
        this.options = options;
        this.selector = '.' + this.container + ' > .';
        this.makeAccordion();
    },

    makeAccordion: function() {
        new Accordion(
        $$(this.selector + this.tClass), $$(this.selector + this.eClass), this.options).addEvents({
            // The onActive and onComplete events added to the stack here to
            // attempt to address some of the css issues.
            'onActive': function(toggle) {
                if (toggle.getParent().getStyle('height') != 0) toggle.getParent().setStyle('height', '');
		
            },
            'onComplete': function(a) {
                if ($defined(a)) {
                    var height = 0;
                    a.getParent().getChildren().each(function(e) {
                        height = height + e.offsetHeight;
                    });
                    if (height != a.getParent().offsetHeight && a.getParent().offsetHeight != 0) a.getParent().setStyle('height', '');
                }
            }
        });
        this.selector += this.eClass + ' > .';
        if ($defined($$(this.selector)[0])) this.makeAccordion();
    }

});

window.addEvent('domready', function() {
    new rAccordion('accordion', 'acc_header', 'acc_collapse', {
        alwaysHide: true,
        onActive: function(toggle) {
            toggle.addClass('active');
        },
        onBackground: function(toggle) {
            toggle.removeClass('active');
        }
    });
});
