$(document).ready(function() {
   
   setupExternalLinks();
   setupScrollGallery();
   setupPageGallery();
});

function setupExternalLinks() {
   
   $('a.external-link').attr("target", "_blank");
}

var scrollVelocity = 0;
var scrollInterval = -1;

function scrollAnimate(acceleration) {
   
   if (acceleration > 0)
      scrollVelocity = Math.min(scrollVelocity + acceleration, 15);
   else
      scrollVelocity = Math.max(scrollVelocity + acceleration, -15);
   
   scrollGallery(scrollVelocity);
}

function setupScrollGallery() {
   
   $('.scroll_gallery a.left_arrow').bind('mousedown', function() {
      
      scrollVelocity = 0;
      if (scrollInterval >= 0)
         clearInterval(scrollInterval);
      scrollInterval = setInterval('scrollAnimate(1);', 33);
      
      $('body').bind('mouseup', function() {
         
         clearInterval(scrollInterval);
         scrollInterval = -1;
         $('body').unbind('mouseup');
      });
   });
   $('.scroll_gallery a.left_arrow').click(function() { return false; });
   
   $('.scroll_gallery a.right_arrow').bind('mousedown', function() {
      
      scrollVelocity = 0;
      if (scrollInterval >= 0)
         clearInterval(scrollInterval);
      scrollInterval = setInterval('scrollAnimate(-1);', 33);
      
      $('body').bind('mouseup', function() {
         
         clearInterval(scrollInterval);
         scrollInterval = -1;
         $('body').unbind('mouseup');
      });
   });
   $('.scroll_gallery a.right_arrow').click(function() { return false; });
}

function scrollGallery(amount) {
   var ul = $('.scroll_gallery ul');
   var pos = parseInt(ul.css('left'));
   pos += amount;
   
   if (pos > 0)
      pos = 0;
   else if (pos < -(ul.width() - 588))
      pos = -(ul.width() - 588);
   
   ul.css('left', pos + "px");
}

var pageGalleryCurrent = 0;

function setupPageGallery() {
   
   $('.page_gallery a.left_arrow').click(function() {
      
      if (pageGalleryCurrent == 0) {
         window.location = $('.breadcrumbs a.prev').attr("href");
         return false;
      }
      
      pageGalleryCurrent = (pageGalleryCurrent - 1) % pageGalleryImages.length;
      if (pageGalleryCurrent < 0)
         pageGalleryCurrent += pageGalleryImages.length;
      
      swapPageGallery(pageGalleryCurrent);
      return false;
   });
   
   $('.page_gallery a.right_arrow').click(function() {
      
      if (pageGalleryCurrent == (pageGalleryImages.length - 1)) {
         window.location = $('.breadcrumbs a.next').attr("href");
         return false;
      }
      
      pageGalleryCurrent = (pageGalleryCurrent + 1) % pageGalleryImages.length;
      swapPageGallery(pageGalleryCurrent);
      return false;
   });
}

function swapPageGallery(index) {
   
   $('.page_gallery .image img').attr('src', pageGalleryImages[index].src);
   $('.page_gallery .image p').html(pageGalleryImages[index].caption);
}
