/**
 * carousel plugin
 * @author Rocco Janse, <rocco@efocus.nl>
 * @since april 2011
 * @copyright eFocus
 */

(function ($) {

    $.fn.extend({

        carousel: function (options) {

            var defOptions = {
                slideselector: 'li',
                navprev: null,
                navnext: null,
                maxslides: 4
            }

            var options = $.extend(defOptions, options);
            var currentIndex = 0;

            return this.each(function () {

                // get slides
                var slides = $(options.slideselector, $(this));
                var container = $('#container');

                // init
                updateNav();

                // methods
                function updateNav() {

                    options.navprev.addClass('disabled');
                    options.navnext.addClass('disabled');
                    options.navprev.unbind('click');
                    options.navnext.unbind('click');

                    if (currentIndex < options.maxslides && currentIndex < slides.length-options.maxslides) {
                        options.navnext.removeClass('disabled');
                        options.navnext.click(function () {
                            showNextSlide();
                        });
                    }

                    if (currentIndex > 0) {
                        options.navprev.removeClass('disabled');
                        options.navprev.click(function () {
                            showPreviousSlide();
                        });
                    }

                }

                function showNextSlide() {
                    var nextSlide = slides[currentIndex + 1];
                    var amounttoscroll = $(nextSlide).outerWidth(true);
                    var scrolled = parseInt(container.css('margin-left'));
                    currentIndex += 1;
                    container.animate({ marginLeft: (scrolled - amounttoscroll) });
                    updateNav();
                }

                function showPreviousSlide() {
                    var prevSlide = slides[currentIndex - 1];
                    var amounttoscroll = $(prevSlide).outerWidth(true);
                    var scrolled = parseInt(container.css('margin-left'));
                    currentIndex -= 1;
                    container.animate({ marginLeft: (scrolled + amounttoscroll) });
                    updateNav();
                }
            });
        }
    });
})(jQuery);
