var ListLimit = Class.create();

ListLimit.prototype = {

    initialize: function(elements) {

        this.elements = $$(elements);

        this.settings = {
            limit: 10,
            showLabel: 'Alle zeigen',
            hideLabel: 'Ausblenden'
        };

        this.elements.each(function(element) {
            var items = $$('#' + element.identify() + ' > li');
            var totalItems = items.size();
            items.each(function(item, i) {
                if ((i + 1) > this.settings.limit) {
                    if ((i + 1) == totalItems) {
                        var toogleLink = new Element(item.tagName);
                        element.insert(toogleLink);
                        toogleLink.update('<span>' + this.settings.showLabel + '</span>');
                        toogleLink.addClassName('limit-menu').observe('click', function(event) {
                            var link = event.target;
                            if (link.hasClassName('click-to-hide')) {
                                link.up('ul').select('.more').invoke('hide');
                                link.removeClassName('click-to-hide').addClassName('click-to-show');
                                link.update(this.settings.showLabel);
                            } else {
                                link.up('ul').select('.more').invoke('show');
                                link.removeClassName('click-to-show').addClassName('click-to-hide');
                                link.update(this.settings.hideLabel);
                            }
                        }.bind(this));
                    }
                    item.addClassName('more').hide();
                }
            }.bind(this));
        }.bind(this));
    }
}

