var slideshowSlideDuration = 7500
  , slideshowFadeDuration = 1000;

$(function(){
 
  $('.bb-slideshow .bb-hidden').removeClass('bb-hidden');
  $('.bb-slideshow-slides .bb-slideshow-slide').hide().first().show();
  $('.bb-slideshow').hover(function(){
    window.clearTimeout( $(this).data('timeout') );
    $(this).data('slide',false);
  },function(){
    $(this).data('timeout', window.setTimeout( slide , slideshowSlideDuration ) );
    $(this).data('slide',true);
  }).each(function(){
    $(this).data('timeout', window.setTimeout( slide , slideshowSlideDuration ) );
    $(this).data('slide',true);
  });
  
  $('.bb-slideshow-navigation a').click(function(){
    if( !$(this).parent().hasClass('bb-current') )
      slide( $( $(this).attr('href') ) , true );   
    return false;
  });
  
});

function slide( $nextSlide , click )
{
  $('.bb-slideshow').each(function(){
    
    if( $(this).data('slide') !== false || ( click != undefined && click == true ) )
    {
      
      var $this = $(this)
        , $currSlide = $this.find('.bb-slideshow-slides .bb-slideshow-slide.bb-current').first();
  
      if( $currSlide.length <= 0 )
        $currSlide = $this.find('.bb-slideshow-slides .bb-slideshow-slide').first();
      
      if( $nextSlide == undefined || !$nextSlide.attr )
        $nextSlide = $currSlide.next();
      if( $nextSlide.length <= 0 )
        $nextSlide = $this.find('.bb-slideshow-slides .bb-slideshow-slide').first();
      
      $this.find('a[href="#'+$currSlide.attr('id')+'"]').parent().removeClass('bb-current');
      $this.find('a[href="#'+$nextSlide.attr('id')+'"]').parent().addClass('bb-current');
      
      $('.bb-slideshow-slides .bb-slideshow-slide').stop(true,true);
      $currSlide.removeClass('bb-current').fadeOut(slideshowFadeDuration);
      $nextSlide.addClass('bb-current').fadeIn(slideshowFadeDuration);
      window.clearTimeout( $this.data('timeout') );
      $this.data('timeout', window.setTimeout( slide , slideshowSlideDuration ) );
    
    }
      
  });
}
