$(document).ready(function(){

  var container                  = $('.pages');
  var MAXIMUM_VISIBLE_IMAGES     = 1
      ANIMATE_SPEED              = 500,
      THUMBNAIL_WIDTH            = 990,
      THUMBNAIL_CONTAINER_WIDTH  = 990;

  var position          = [],
      images            = [],
      images_length     = 0,
      current_left      = 0,
      current_right     = MAXIMUM_VISIBLE_IMAGES - 1,
      current_position  = get_container_position(),
      animating         = false,
      left_arrow        = $(".arrow.left"),
      right_arrow       = $(".arrow.right");

  function get_container_position() {
    var left = container.css('left');
    if (left == 'auto') { left = 0 };
    return parseInt(left, 10);
  };

  function fade_arrow(visibility, arrow) {
    var opacity = arrow.css('opacity');
    var new_opacity = 1;
    if (visibility == 'out') {
      new_opacity = 0.5;
    } else if (visibility == 'in') {
      new_opacity = 1;
    };
    arrow.fadeTo('fast', new_opacity);
  };

  function set_arrow_opacity(direction) {
    if (current_right < images_length) {
      fade_arrow('in', right_arrow);
    } else {
      fade_arrow('out', right_arrow);
    };
    if (current_left > 0) {
      fade_arrow('in', left_arrow);
    } else {
      fade_arrow('out', left_arrow);
    };
  };

  function initial_positions(number_of_images) {
    var offset = 0;
    for(var i = 0; i < images.length; i++) {
      position.push(THUMBNAIL_WIDTH * (i + offset));
      $(images[i]).css('left', position[i]);
    };
  };

  function set_up_click_handlers() {
    left_arrow.css('visibility', 'visible');
    left_arrow.click(thumbnails_left);
    right_arrow.css('visibility', 'visible');
    right_arrow.click(thumbnails_right);
  }

  function set_up_thumbnails(container) {
    images        = container.find('.page');
    images_length = (images.length - 1);
    initial_positions(images.length);
    if (images.length > MAXIMUM_VISIBLE_IMAGES) { set_up_click_handlers(); };
  };

  function thumbnails_left(e) {
    if(!animating) {
      if (current_left > 0) {
        current_left--;
        current_right--;
        animating = true;
        animate_container('left');
      };
    };
  };

  function thumbnails_right(e) {
    if(!animating) {
      if (current_right < images_length) {
        current_right++;
        current_left++;
        animating = true;
        animate_container('right');
      };
    };
  };

  function animate_container(direction) {
    var new_left = 0;
    switch(direction) {
      case 'right':
        new_left = current_position - THUMBNAIL_WIDTH;
        break;
      case 'left':
        new_left = current_position + THUMBNAIL_WIDTH;
        break;
      default:
        new_left = 0;
    };
    container.animate(
      { left: new_left },
      ANIMATE_SPEED,
      function() {
        current_position = get_container_position();
        set_arrow_opacity(direction);
        animating = false;
      }
    );
  };

  set_up_thumbnails(container);
  set_arrow_opacity('left'), set_arrow_opacity('right');

});
