$(document).ready(function()
{
  activateExternalLinks();
  
  Cufon.replace('.cufon');
  
  if ( $('div#slideshow').length )
  {
    var slide = Number($.query.get('slide'));
    
    if ( slide != '' )
    {
      pauseSlideshow();
      
      var $pos = $('div#slideshow div.slide').eq(slide-1);
      
      updatePosition($pos);
    }
    
    setInterval( 'slideSwitch()',5000 );
  }
  
  if ( $('div#thumbnails').length )
  {
    $('div#thumbnails').css({'right':'-250px'});
    
    if ( $('li#position span').html() == '' )
    {
      $('li#position span').html('1/'+$('div#slideshow div.slide').length);
    }
    
    $('a#thumbs').click(function()
    {
      if ( $(this).hasClass('open') )
      {
        $(this).removeClass('open');
        $('div#thumbnails').animate({'right':'-250px'},'slow');
      }
      else
      {
        $(this).addClass('open');
        $('div#thumbnails').animate({'right':'0px'},'slow'); ;
      }
      
      return false;
    });
    
    $('li#pause a').click(function()
    {
      if ( $(this).hasClass('active') )
      {
        playSlideshow();
      }
      else
      {
        pauseSlideshow();
      }
      
      return false;
    });
    
    $('li#next a').click(function()
    {
      if ( !$(this).hasClass('disabled') )
      {
        skipToNextSlide();
      }
      
      return false;
    });
    
    $('li#prev a').click(function()
    {
      if ( !$(this).hasClass('disabled') )
      {
        skipToPrevSlide();
      }
      
      return false;
    });
    
    if ( $('div#thumbnails div').length > 1 )
    {
      $('div#thumbnails ul.pagination').show();
      
      $('div#thumbnails').tabs();
    }
    
    $('div#thumbnails div li a').click(function()
    {
      if ( !$('li#next a').hasClass('disabled') )
      {
        skipToSlide( $('div#thumbnails div li a').index( $(this) )+1 );
      }
      
      return false;
    });
  }
  
  $('a#print').click(function(){ window.print(); return false; });
});

// Activate External Links - Any hyperlink with rel="external" will open in a new tab...
function activateExternalLinks()
{
  $('a[rel="external"]').click(function(){
    open($(this).attr('href'));
    return false;
  });
}

function pauseSlideshow()
{
  $('li#pause a').addClass('active').html('Play').attr('title','Play');
}

function playSlideshow()
{
  $('li#pause a').removeClass('active').html('Pause').attr('title','Pause');
}

function slideSwitch( skip,prev )
{
  var skip = (skip == null) ? false : true;
  var prev = (prev == null) ? false : true;
  
  if ( $('li#pause a').length == 0 || !$('li#pause a').hasClass('active') || skip )
  {
    disableSkipButtons();
    
    var $active = $('div#slideshow div.active');
    
    if ( prev )
    {
      if ( $active.length == 0 ) $active = $('div#slideshow div.slide:first');
      
      var $next = $active.prev().not('.latest').not('.newsletter').not('#controls').not('#thumbnails').length ? $active.prev() : $('div#slideshow div.slide:last');
    }
    else
    {
      if ( $active.length == 0 ) $active = $('div#slideshow div.slide:last');
      
      var $next = $active.next().not('.latest').not('.newsletter').not('#controls').not('#thumbnails').length ? $active.next() : $('div#slideshow div.slide:first');
    }
    
    performTransition( $active,$next );
  }
}

function performTransition( $active,$next )
{
  $active.addClass('last-active');
  
  $next.css({opacity:0.0})
    .addClass('active')
    .animate({opacity:1.0},1000,function()
    {
      $active.removeClass('active last-active');
      activateSkipButtons();
    });
  
  if ( $('li#position span').length )
  {
    updatePosition($next);
  }
}

function disableSkipButtons()
{
  $('li#prev a').addClass('disabled');
  $('li#next a').addClass('disabled');
}

function activateSkipButtons()
{
  $('li#prev a').removeClass('disabled');
  $('li#next a').removeClass('disabled');
}

function updatePosition(el)
{
  i     = $('div#slideshow div.slide').index(el)+1;
  count = $('div#slideshow div.slide').length;
  
  $('li#position span').html(i+'/'+count);
  
  $('div#thumbnails div a').removeClass('current');
  $('div#thumbnails div a').eq(i-1).addClass('current');
}

function skipToNextSlide()
{
  pauseSlideshow();
  
  slideSwitch( 'skip' );
}

function skipToPrevSlide()
{
  pauseSlideshow();
  
  slideSwitch( 'skip','prev' );
}

function skipToSlide( i )
{
  pauseSlideshow();
  disableSkipButtons();
  
  var $active = $('div#slideshow div.active');
  var $next   = $('div#slideshow div.slide').eq(i-1);
  
  $('div#slideshow div.slide').removeClass('active last-active');
  
  performTransition( $active,$next );
}
