var $window, window_w, window_h, $carousel, $items, $navs, carousel_speed, carousel_interval_speed, carousel_interval, carousel_pause, carousel_slide;
$(function(){
  $window = $(window);
  $carousel = $('#home-carousel');
  $items = $('li', $carousel);
  $navs = $('#carousel-nav li');
  carousel_slide = 0;
  carousel_speed = 1000;
  carousel_interval_speed = 6000;
  carousel_interval = setInterval('carouselRight()', carousel_interval_speed);
  carousel_pause = false;
  setTimeout('createHomeCarousel()', 100);
});

function createHomeCarousel() {
  resizeCarousel();

  $('#carousel-left').click(function(e){
    clearInterval(carousel_interval);
    carouselLeft();
    e.preventDefault();
  });

  $('#carousel-right').click(function(e){
    clearInterval(carousel_interval);
    carouselRight();
    e.preventDefault();
  });

  $navs.click(function(e){
    var slide = $(this).data('slide');
    slide--;
    carouselSlide( slide );
    e.preventDefault();
  });

  setTimeout('resizeCarousel()', 1500);
  $window.resize(function() {
    resizeCarousel();
  });
}

function carouselLeft( slides ) {
  if(!slides) slides = 1;
  $('#carousel-left').addClass('selected');
  $carousel.css('left', (window_width*-1)+'px');
  for(var i=0;i<slides;i++) {
    $('li:last', $carousel).prependTo($carousel);
    carousel_slide--;
  }
  $carousel.filter(':not(:animated)').animate({'left' : 0}, carousel_speed, function() {
    $('#carousel-left').removeClass('selected');
    carouselNav();
  });
}

function carouselRight(slides) {
  if(!slides) slides = 1;
  if(carousel_pause==false) {
    $('#carousel-right').addClass('selected');
    $carousel.filter(':not(:animated)').animate({'left' : (slides*window_width*-1)}, carousel_speed, function(){    
      for(var i=0;i<slides;i++) {
        $('li:first', $carousel).appendTo($carousel);        
        carousel_slide++;
      }
      $carousel.css('left', 0);
      $('#carousel-right').removeClass('selected');
      carouselNav();
    });
  }
}

function carouselSlide(slide) {
  var need_to_go = slide - carousel_slide;
  if(need_to_go > 0) {
    carouselRight( need_to_go );
  } else {
    carouselLeft( Math.abs(need_to_go) );
  }
}

function carouselNav() {
  var max_slide = $items.length;
  if(carousel_slide>=max_slide) carousel_slide = max_slide-carousel_slide;
  if(carousel_slide<0) carousel_slide = max_slide+carousel_slide;

  var slide = carousel_slide % max_slide;
  var slide_counter = 0;

  $navs.each(function() {
    $(this).removeClass('selected');
    if(slide_counter==slide) {
      $(this).addClass('selected');
    }
    slide_counter++;
  });
}

function resizeCarousel( ) {
  window_width = $window.width();
  window_height = $window.height();
  carousel_height = $carousel.height();

  $items.each(function(){
    $(this).css('width', window_width+'px');
    $img = $(this).find('img');

    image_width = $img.width();
    image_height = $img.height();
    
    image_ratio = image_height / image_width;

    potential_height = Math.floor(window_width * image_ratio);

    if(potential_height < 615){
      computed_width = Math.floor(image_height/image_ratio);
      potential_height = Math.floor(computed_width * image_ratio);
      computed_left = Math.floor((computed_width - window_width) / -2);
      computed_top = Math.floor((potential_height - 615) / -2);
    } else {
      computed_top = Math.floor((potential_height - 615) / -2);
      computed_left = 0;
      computed_width = Math.floor(window_width);
    }

    $img.css({
      top: computed_top+'px',
      left: computed_left+'px',
      width: computed_width+'px'
    });
  });
}

