/*
 * torSlide jQuery Plugin
 * Tor Løkken
 * http://www.enonic.com
 */

(function($) {
    $.fn.torSlide = function(options) {
        var opts = $.extend({}, $.fn.torSlide.defaults, options);
        
        return this.each(function() {
            var slideshow = $(this);
            slideshow.find('.current').fadeOut(0).fadeIn(0);
            slideshow.find('a.prev, a.next').click(function(e) {
                var currentIndex = $(this).closest('ul').find('li.current').index();
                slideToShow = $(this).hasClass('next') ? ++currentIndex : --currentIndex;
                $.fn.torSlide.showSlide(slideshow, slideToShow, opts);
                e.preventDefault();
            });
            
            if (opts.play) {
                $.fn.torSlide.play(slideshow, opts);
            }
        });
    };
    
    $.fn.torSlide.play = function(slideshow, opts) {
        setInterval(function() {
            var slideToShow = slideshow.find('.next').is(':hidden') ? 0 : slideshow.find('.current').index() + 1;
            $.fn.torSlide.showSlide(slideshow, slideToShow, opts);
        },
        opts.slideDuration);
    };
    
    $.fn.torSlide.showSlide = function(slideshow, slide, opts) {
        var current = slideshow.find('li.current');
        var numOfItems = slideshow.find('li.item').length;
        var prevButton = slideshow.find('.prev');
        var nextButton = slideshow.find('.next');
        var slideToShow = slideshow.find('.item:eq(' + slide + ')');
        
        if (opts.effect == 'fade') {
            current.fadeOut(opts.transitionTime).removeClass('current');
            slideToShow.fadeIn(opts.transitionTime).addClass('current');
            //slideshow.find('.item:eq(' + slide + ')').fadeIn(opts.transitionTime).addClass('current');
        }
        else {
            current.hide().removeClass('current');
            slideToShow.show().addClass('current');
            
            //slideshow.find('.item:eq(' + slide + ')').show().addClass('current');
        }
        /*
        if (!animationSpeed) {
            animationSpeed = 0;
        }
        
        current.fadeOut(animationSpeed).removeClass('current');
        
        parent.find('.item:eq(' + slide + ')').fadeIn(animationSpeed).addClass('current');
        */
        
        //$(this).closest('ul').css('height', elementToUpdate.height() + 'px');
        
        slideToShow.is(':nth-child(' + numOfItems + ')') ? nextButton.hide() : nextButton.show();
        slideToShow.is(':first-child') ? prevButton.hide() : prevButton.show();
        //slideshow.find('li.current').is(':nth-child(' + numOfItems + ')') ? nextButton.hide() : nextButton.show();
        //slideshow.find('li.current').is(':first-child') ? prevButton.hide() : prevButton.show();
    }

    $.fn.torSlide.defaults = {
        effect: 'none',
        play: false,
        slideDuration: 6000,
        transitionTime: 2000
    };

})(jQuery);
