
(function($) {

    $.BB_SlideShow = function(obj, options) {

        var sl_Obj   = $(obj),
        sl_Image = $(".sl-Image", obj),
        sl_Text  = $(".sl-Text p:eq(0)", obj),
        sl_Pager = $(".sl-Pager", sl_Obj),

        sl_active = $(".sl-active", sl_Obj),

        isPlay   = false,
        nItems   = options.Images.length,
        active  = options.active,
        isLoad   = false;

        function showactive( id ) {

            isLoad = true;

            // 1. Ждем загрузки новой картинки
            jQuery.imgpreload(options.Images[id].image, {
                all: function() {
                    sl_Image.append( "<img src='" + options.Images[id].image + "' style='z-index:1;' height='" + options.Height + "' />" );

                    // 2. Прячем верхнюю картинку
                    sl_Image.find("img:eq(0)").fadeTo( 1000, 0, function(){
                        sl_Image.find("img:eq(1)").css("z-index", 2);
                        sl_Image.find("img:eq(0)").remove();

                        isLoad = false;

                        sl_Obj.stopTime();
                        sl_Obj.everyTime( options.Interval, function(){ showNext(); });
                    });

                    // 3. Подсвечиваем соответствующую цифру
                    sl_Pager.find("li").removeClass("active");
                    sl_Pager.find("li:eq("+id+")").addClass("active");

                    // 4. Показываем новую надпись
                    if ( options.Images[id].text!="" ) { 
                        sl_Text.html( options.Images[id].text ).show();
                        Cufon.replace('#SlideShow .sl-Text b', { fontFamily: 'OfficinaSansC' });
                        sl_Text.fadeTo( "slow", 1 );
                    } else { sl_Text.hide(); }
                }
            });

            sl_active.html( active + 1 );
        }

        function showNext() { if (isLoad) return false; active++; if ( nItems==active ) active = 0; showactive( active ); }

        function showPrev () { if (isLoad) return false; active--; if ( active<0 ) active = nItems - 1; showactive( active ); }

        function Start() { isPlay = true; sl_Obj.everyTime( options.Interval, function(){ showNext(); }); }

        function Stop() { isPlay = false; sl_Obj.stopTime(); }
        /* * */

        // Пейжер слайдера
        if ( nItems==0 ) return false;
        else {
            HTML_Pager = "";
            for(i=0;i<nItems;i++){HTML_Pager += '<li class="active"><a href="JavaScript:;"></a></li>';}
            
            if (options.posPager=="center") {
                Pager_Left = (1000 - (nItems*23))/2;
                sl_Pager.css("left", Pager_Left);
            }
                       
            sl_Pager.html( HTML_Pager );

            sl_Pager.find("a").click(function(){ 
                if (isLoad) return false;
                active = sl_Pager.find("a").index($(this));
                showactive(active);
            });
        }

        // Прогирывать сразу, или ждать команды
        if ( options.autoStart ) { Start(); }

        showactive( active );
    };

    $.fn.BB_SlideShow = function(options) {

        defaults = {
            Interval:  2000,
            autoStart: false,
            active:   0
        };

        var options = $.extend( defaults, options );

        this.each(function() {
            $(this).data('SlideShow', new $.BB_SlideShow(this, options));
        });

        return this;
    };

})(jQuery);
