//send any questions/bugs/issues to sdailey@schoolfusion.com
//please only change options where this plugin is called - not directly in this file.
(function($){
    $.fn.fadeGallery = function(options){
        var defaults = {
                delay: 5000,
                fade: 500,
                controls: true,
                auto: true,
                hover: this
            },         
            settings = $.extend(defaults, options);
    
        var $container = $(this), next, $controls, startFade,
            $slides = $container.children('li'),
            current = 0,
            last = $slides.length - 1;

        $slides.hide();
        $($slides[0]).fadeIn(settings.fade);
            
        function nextSlide() {
            if (current === last) {
                next = 0;
            } else if (current > last) {
                current = 0;
                next = 1;
            } else {
                next = current + 1;
            }
            $($slides[current]).css('zIndex', '5').fadeOut(settings.fade);
            $($slides[next]).show().css('zIndex', '0');
                    
            if (settings.controls === true) {
                $controls.children().removeClass('selected');
                $controls.children().eq(next).addClass('selected');
            }
            
            if (current === last) {
                current = 0;
            } else {
                current ++;
            }
        }
        
        $.fn.hoverPause = function() {
            $(this).hover(function(){
                clearInterval(startFade);
            }, function() {
               startFade = setInterval(function() {
                    nextSlide();
                }, settings.delay);
            });
        };

        if ($slides.length > 1) {
            if (settings.controls === true) {
                $container.parent('div').append('<ul id="galleryControls"></ul>');
                $controls = $('#galleryControls');
                
                for (var i = 0, ii=$slides.length; i < ii; i++) {
                    $controls.append('<li><a href="#">' + (i + 1) + '</a></li>');
                }
        
                $controls.children().eq(0).addClass('selected');
                $controls.find('a').bind('click', function(){
                    var $li = $(this).parent(),
                        liIndex = $li.parent().children().index($li);
                    
                    if (current !== liIndex && !$slides.is(':animated')) {
                        $controls.children().removeClass('selected');
                        $($slides[current]).css('zIndex', '5').fadeOut(settings.fade);
                        $($slides[liIndex]).show().css('zIndex', '0');
                        $li.addClass('selected');
                        current = liIndex;
                    }
                    return false;
                });
            }
        
            if (settings.auto === true) {
                startFade = setInterval(function() {
                        nextSlide();
                    }, settings.delay);
        
                $(settings.hover).hoverPause();
                if (settings.controls === true) {
                    $controls.hoverPause();
                }
            }
        }        
    };
})(jQuery);
