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

