
var fSlider = {

  /*
   * The sliding direction
   */
  direction: 'l',

  /**
   * Size of a single item
   */
  size: 130,

  /*
   * Internal var referencing the speed value in the array
   */
  speed: 0,

  /*
   * Different speeds
   */
  durations: [1500,1000,500],

  /*
   * Internal var for pause statement
   */
  remainder: 0,

  /*
   * The sliding div
   */
  holder: $('.slides'),

  /*
   * init
   */
  init: function() {

    var width = parseInt( $('.slides').find('a').length ) * 150;

    $('.slides').css('width',width + 'px');

    fSlider.play();

  },

  /*
   * loop
   */
  loop: function() {
    fSlider.play();
  },

  /*
   * Change the speed of the slider
   */
  changeSpeed: function() {
    if( fSlider.speed == 0 ) {
      fSlider.speed = 1;
    } else if( fSlider.speed == 1 ) {
      fSlider.speed = 2;
    } else {
      fSlider.speed = 0;
    }
    fSlider.play();
  },

  /*
   * Change the direction of the sliding
   */
  changeDirection: function( direction ) {

    fSlider.speed = 0; // reset speed

    fSlider.direction = direction;

    fSlider.play();

  },

  /*
   * Pause the slider
   */
  pause: function( direction ) {
    fSlider.holder.stop();
    var left = parseInt( fSlider.holder.css('left').replace('px','').replace('-','') );
    if( direction == 'r' ) {
      fSlider.remainder = fSlider.size - left;
    } else {
      fSlider.remainder = left;
    }
  },

  /*
   * Play the slider
   */
  play: function() {
    var duration = fSlider.durations[ fSlider.speed ];
    if( fSlider.remainder > 0 ) {
      duration = ( fSlider.remainder * duration ) / fSlider.size;
      fSlider.remainder = 0;
    }
    if( fSlider.direction == 'l' ) {
      fSlider.holder.animate({
        left: '-130px'
      },duration,'linear',function() {
        fSlider.holder.css('left',0);
        $('.slides a:last').after( $('.slides a:first') );
        fSlider.loop();
      });
    } else {
      fSlider.holder.animate({
        left: '0'
      },duration,'linear',function() {
        fSlider.holder.css('left','-130px');
        $('.slides a:first').before( $('.slides a:last') );
        fSlider.loop();
      });
    }
  }  ,

  /*
   * popup on image click
   */
  popup: function( id ) {

    Gallery.current = parseInt( id );

    if( fSlider.direction == 'l' ) {
      fSlider.pause( 'r' );
    } else {
      fSlider.pause( 'l' );
    }

    $('#overlay').fadeIn();
    $('.person').hide();
    $('#p' + id ).fadeIn();

    $('#close').unbind('click');
    $('#close').bind('click',function() {
      fSlider.stopUp();
      return false;
    });

  },

  stopUp: function() {
    $('#overlay').fadeOut();
    fSlider.changeDirection( fSlider.direction );
  }
}

var Gallery = {
  current: 1,
  max: 0,
  init: function( max ) {
    Gallery.max = parseInt( max );
    $('#leftt').bind('click',function() {
      Gallery.prev();
      return false;
    });
    $('#rightt').bind('click',function() {
      Gallery.nextt();
      return false;
    });
  },
  nextt: function() {
    $('.person').hide();
    var next = Gallery.current + 1;
    if( next > Gallery.max ) {
      $('#p1').fadeIn();
      Gallery.current = 1;
    } else {
      $('#p' + next).fadeIn();
      Gallery.current = next;
    }
  },
  prev: function() {
    $('.person').hide();
    var prev = Gallery.current - 1;
    if( prev < 1 ) {
      $('#p' + Gallery.max).fadeIn();
      Gallery.current = Gallery.max;
    } else {
      $('#p' + prev ).fadeIn();
      Gallery.current = prev;
    }
  }
}

$(document).ready(function() {

  $('#menu a').bind('click',function(){
    fSlider.pause();
  });
  $('#dropdown a').bind('click',function(){
    fSlider.pause();
  });
  
  fSlider.init();

  Gallery.init( $('.person:last').attr('id').replace('p','') );

  $('.slides a').bind('click',function() {
    fSlider.popup( $(this).attr('rel') );
    return false;
  });

  $('.control').bind('click',function() {
    if( $(this).attr('id') == 'left' ) {
      fSlider.pause('r');
      if( fSlider.direction == 'r' ) {
        fSlider.changeDirection('l');
      } else {
        fSlider.changeSpeed();
      }
    } else {
      fSlider.pause('l');
      if( fSlider.direction == 'l' ) {
        fSlider.changeDirection('r');
      } else {
        fSlider.changeSpeed();
      }
    }
    return false;
  });

});