﻿(function ($) {
    $.fn.hideextra = function (options) {
        var defaults = {
            extraElement: 'li',
            extraClass: 'Extra',
            buttonClass: 'ShowMore',
            maxItems: 5,
            moreText: "more...",
            lessText: "less..."
        };

        var options = $.extend(defaults, options);

        this.each(function (listIndex, listInstance) {
            var listItems = $(listInstance).children(options.extraElement);

            for (i = 0; i < listItems.length; i++) {
                if (i >= (options.maxItems)) {
                    $(listItems[i]).hide();
                    $(listItems[i]).addClass(options.extraClass);
                }
            }

            var hiddenList = $(options.extraElement + '.' + options.extraClass, $(listInstance));

            // Add More/Less Link
            if (listItems.length > options.maxItems) {
                $(listInstance).append('<li><a href="#" class="' + options.buttonClass + '">' + hiddenList.length + ' ' + options.moreText + '</a></li>');
            }

            // Add the click events
            var moreLink = $('.' + options.buttonClass, $(listInstance));
            moreLink.click(function () {

                if (moreLink.text().indexOf(options.moreText) > 0) {
                    hiddenList.show();
                    moreLink.text(options.lessText);
                } else {
                    hiddenList.hide();
                    moreLink.text(hiddenList.length + ' ' + options.moreText);
                }
            });
        });
    };
})(jQuery);
