(function($) {

jQuery.fn.slideShow = function( settings ) {
   var _slideShow = this;
   var TimeOut;
   
   _slideShow.frames = new Array();
   blocks = new Array();
   buttons = new Array();
   _slideShow.frameIndex = 0;
   _slideShow.count = 0

   
   // Насторойки
   _slideShow._settings = $.extend({
      play: false,
      speed: 3000, // Скорость плавного появления следующего кадра
      delay: 10000 // Задержка между кадрами при play: true 
      
   }, settings );

   
   // Инициализация слайдшоу
   _slideShow._init = function() {
      settings = _slideShow._settings;
      
      _slideShow.each( function() {
         _slideShow.frames.push( jQuery(this) );
      });

      $(".switch").each( function() {
         buttons.push( jQuery(this) );
      });
      
      $(".plus").each( function() {
         blocks.push( jQuery(this) );
      });

      _slideShow.each( function( n ) {
         jQuery(this).css( 'z-index', 0 );
         jQuery(this).load(function(){ 
            _slideShow.count++;
            _slideShow._check_all_load(); 
         });
         jQuery(this).attr('src', jQuery(this).attr('src') );

      });

   } // End _slideShow._init()

   
   
   // Показывает один кадр в замен другого
   _slideShow._showFrame = function( newFrameIndex, oldFrameIndex ) {
      // Если кадр реально меняется..
      if( newFrameIndex != oldFrameIndex ) {
         _slideShow.frames[ newFrameIndex ].css( 'z-index', 10 );
         _slideShow.frames[ oldFrameIndex ].css( 'z-index', 5 );
         
        blocks[ newFrameIndex ].css( 'z-index', 10 );
        blocks[ oldFrameIndex ].css( 'z-index', 0 );
         
         buttons[ newFrameIndex ].addClass("roton");
         buttons[ oldFrameIndex ].removeClass("roton");
         
         _slideShow.frames[ newFrameIndex ].fadeIn( 
            _slideShow._settings.speed, 
            function() { 
               _slideShow.frames[ oldFrameIndex ].css( 'z-index', 0 ); 
               _slideShow.frames[ oldFrameIndex ].hide(); 
               
              // blocks[ newFrameIndex ].show();
              // blocks[ oldFrameIndex ].hide();         
         
            }
         );
         
      } // End if
   
   } // End _slideShow._showFrame()

   
   
   // Показывает следующий кадр
   _slideShow._showNextFrame = function() {
      oldFrameIndex = _slideShow.frameIndex;
      _slideShow.frameIndex = ( _slideShow.frameIndex + 1 == _slideShow.frames.length ) ? 0 : _slideShow.frameIndex + 1;
      _slideShow._showFrame( 
         _slideShow.frameIndex, 
         oldFrameIndex 
      );
      
   } // End _slideShow._showNextFrame()
   
   // Показывает следующий кадр
   _slideShow._showFrameNum = function( FrameNum ) {
      oldFrameIndex = _slideShow.frameIndex;
      _slideShow.frameIndex = FrameNum;
      _slideShow._showFrame( 
         _slideShow.frameIndex, 
         oldFrameIndex 
      );
      //TimeOut = setTimeout( function() { _slideShow._showNewFrame() }, _slideShow._settings.delay );
      
   } // End _slideShow._showFrameNum()

   
   
   // Показывает предыдущий кадр
   _slideShow._showLastFrame = function() {
      oldFrameIndex = _slideShow.frameIndex;
      _slideShow.frameIndex = ( _slideShow.frameIndex == 0 ) ? ( _slideShow.frames.length - 1 ) : _slideShow.frameIndex - 1;
      _slideShow._showFrame( 
         _slideShow.frameIndex, 
         oldFrameIndex 
      );
      
   } // End _slideShow._showLastFrame()
   
   
   
   // Проверка на загрузку всех картинок
   _slideShow._check_all_load = function() {
      if( _slideShow.count == _slideShow.frames.length ) {
   
         // Подключаем кнопку "вперед"
         if( settings.forward ) {
            jQuery(settings.forward).click( function(){
               _slideShow._showNextFrame();
               return false;
            }); 
            
         } // End if
         
         // Подключаем кнопку "вперед"
         if( settings.sh ) {
         
            $(".switch").find("a").each(function( i ) {
              //buttons.push( jQuery(this) );
               $(this).click( function(){
                  clearTimeout( TimeOut );
                  _slideShow._showFrameNum( i );
                  return false;
               }); 
            });

         } // End if
         
         // Подключаем кнопку "назад"
         if( settings.back ) {
            jQuery(settings.back).click( function(){
               _slideShow._showLastFrame();
               return false;
            }); 
            
         } // End if

         // Включаем если надо автопроигрование
         if( _slideShow._settings.play ) {
            TimeOut = setTimeout( function() { _slideShow._showNewFrame() }, _slideShow._settings.delay );
            
         } // End if

      } // End if
      
   } // End _slideShow._check_all_load()
   
   
   
   // Автоматическое слайд шоу
   _slideShow._showNewFrame = function() { 
      _slideShow._showNextFrame();
      
      TimeOut = setTimeout( function() { _slideShow._showNewFrame() }, _slideShow._settings.delay );
   
   }  // End _slideShow._showNewFrame()
   
   
   _slideShow._init();
   
   return this;

};

})(jQuery);



