/*
  Global init
*/

$(document).ready(function() {
  wireHotDeals();
  wireCarousel();
  wireResortMedia();
});

/*
  Hot Deals (homepage)
*/

// timings are in milliseconds (1000 = 1s)
var hotDealsAnimationSpeed = 350;
var hotDealsTimer = 4000;

function wireHotDeals() {

  var deals = $('div.deals');
  if (deals.size() == 0) return;

  var wrapper = deals.find('#hotDealsWrapper');
  var container = wrapper.find('ul');
  var pages = container.find('li');

  deals.data('index', 0);
  container.css('position', 'relative');

  deals.data('timer', setTimeout(function() { deals.find('.next').click(); }, hotDealsTimer));

  deals.find('.prev').click(function(e) {
    e.preventDefault();

    // reset timer
    var t = deals.data('timer');
    if (typeof(t) != 'undefined' && t != null) clearTimeout(t);

    var index = deals.data('index') - 1;
    if (index < 0) index = pages.size() - 1;

    deals.data('index', index); // save current page index

    var page = $(pages.get(index));
    var horizOffset = 0 - (page.offset().left - container.offset().left);

    container.animate({left: horizOffset}, hotDealsAnimationSpeed);
  });

  deals.find('.next').click(function(e) {
    e.preventDefault();

    // reset timer
    var t = deals.data('timer');
    if (typeof(t) != 'undefined' && t != null) clearTimeout(t);

    deals.data('timer', setTimeout(function() { deals.find('.next').click(); }, hotDealsTimer));

    var index = deals.data('index') + 1;
    if (index >= pages.size()) index = 0;

    deals.data('index', index); // save current page index

    var page = $(pages.get(index));
    var horizOffset = 0 - (page.offset().left - container.offset().left);
    
    container.animate({left: horizOffset}, hotDealsAnimationSpeed);
  });
}

/*
  Carousel (resort page)
*/

// timings are in milliseconds (1000 = 1s)
var carouselTimer = 4000;
var carouselAnimationSpeed = 350;

var carouselPhotosVisible = 3;

function wireCarousel() {
  var carousel = $('div.carousel');
  if (carousel.size() == 0) return;
  carousel.data('index', 0);
  carousel.data('direction', 'up');
  carousel.find('ul').css('position', 'relative');
  carousel.data('timer', setTimeout("carouselNext()", carouselTimer));
}

function carouselNext() {

  var carousel = $('div.carousel');
  var container = carousel.find('ul');
  var pages = container.find('li');

  var index = carousel.data('index');

  if (index >= pages.size() - carouselPhotosVisible && carousel.data('direction') == 'up')
    carousel.data('direction', 'down');

  if (index <= 0 && carousel.data('direction') == 'down')
    carousel.data('direction', 'up');


  if (carousel.data('direction') == 'up') {
    index = Math.min(pages.size() - carouselPhotosVisible, index + carouselPhotosVisible);
  }
  else {
    index = Math.max(0, index - carouselPhotosVisible);
  }

  carousel.data('index', index); // save current page index

  var page = $(pages.get(index));
  var horizOffset = 0 - (page.offset().left - container.offset().left);
  container.animate({left: horizOffset}, carouselAnimationSpeed);

  carousel.data('timer', setTimeout("carouselNext()", carouselTimer));

}


/*
 Resort Media switching (resort page)
*/
function wireResortMedia() {

  $('h2.resortMedia a').click(function(e) {
    e.preventDefault();
    var a = $(this);
    a.siblings('a').each(function() {
      var a = $(this);
      a.removeClass('current');
      $(a.attr('href').replace('#', 'div.')).hide();
    });
    a.addClass('current');
    $(a.attr('href').replace('#', 'div.')).show();
  });

  $('h2.resortMedia a:first').click();
}
