$ = jQuery;

var scrollWait = false,
    slideIndex = 0,
    slideBusy  = false,
    ua = navigator.userAgent;

function bindMouseWheel(evt, delta, x, y){
  if (x === 0 && y < 0) {
    // scroll down
    slideLeft();
  } else if (x === 0 && y > 0) {
    // scroll up
    slideRight();
  } else if (y === 0 && x < 0) {
    // scroll left
    slideRight();
  } else if (y === 0 && x > 0) {
    // scroll right
    slideLeft();
  }
  return false;
}

function bindKeydown(evt){
  if (evt.keyCode === 37) {
    // left arrow
    slideRight(false);
    evt.preventDefault();
  } else if (evt.keyCode === 38) {
    // up arrow
    slideRight(false);
    evt.preventDefault();
  } else if (evt.keyCode === 39) {
    // right arrow
    slideLeft(false);
    evt.preventDefault();
  } else if (evt.keyCode === 40) {
    // down arrow
    slideLeft(false);
    evt.preventDefault();
  }
}

logoToggled = true;
function toggleLogo(){
  if (slideIndex === 0 && !logoToggled) {
    if ((ua.indexOf('MSIE') !== -1) || (ua.indexOf('Safari') !== -1)) {
      $('.logo-bg').animate({left: '+=869px' });
      $('.welcome-logo').animate({left: '+=307px'});
    } else {
      $('.logo-bg').animate({translateX: '+=869'});
      $('.welcome-logo').animate({translateX: '+=307'});
    }
    logoToggled = true;
  } else {
    if (slideIndex !== 0 && logoToggled) {
      if ((ua.indexOf('MSIE') !== -1) || (ua.indexOf('Safari') !== -1)) {
        $('.logo-bg').animate({left: '-=869px' });
        $('.welcome-logo').animate({left: '-=307px' });
      } else {
        $('.logo-bg').animate({translateX: '-=869'});
        $('.welcome-logo').animate({translateX: '-=307'});
      }
      logoToggled = false;
    }
  }
}
// slide functions
function slideCallback(){
  // active slide
  $('.pagination a').each(function(i,v) {
    if (i === slideIndex)
      $(v).addClass('active-page')
    else
      $(v).removeClass('active-page')
  });

  // pagination arrows
  if (slideIndex == ($slides.length-1))
    $('.arrow-nav-right').removeClass('arrow-nav-hover')
  else
    $('.arrow-nav-right').addClass('arrow-nav-hover')

  if (slideIndex == 0)
    $('.arrow-nav-left').removeClass('arrow-nav-hover')
  else
    $('.arrow-nav-left').addClass('arrow-nav-hover')

  if ($($slides[slideIndex]).hasClass('menu-black')){
    $mainMenu.removeClass('white-bg');
  } else {
    $mainMenu.addClass('white-bg');
  }

  // handle logo
  toggleLogo();

}

function slideSetup(wait){
  // disabled if only one slide
  if ($slides.length < 2)
    return false;

  // prevent further wheel events
  if (wait || wait === undefined) {
    if (scrollWait)
      return false;

    scrollWait = true;

    // detect scrolling
    setTimeout("scrollWait = false", 1000);
  }

  setTimeout("slideCallback()", 300);
  return true;
}

function slideLeft(wait){
  if (!slideSetup(wait) || slideIndex === ($slides.length - 1))
    return false;

  var slideWidth = $($slides[$slides.length - 1]).width();

  $slides.each(function(i,v){
    if ((ua.indexOf('MSIE') !== -1) || (ua.indexOf('Safari') !== -1)) {
      var options = (i === slideIndex) ? {width: '0px'} : {left: '-=' + slideWidth + 'px'};
    } else {
      var options = (i === slideIndex) ? {width: '0px'} : {translateX: '-=' + slideWidth};
    }

    $(v).animate(options, 300);
  });
  slideIndex += 1;
  return true;
}

function slideRight(wait){
  if (!slideSetup(wait) || slideIndex === 0)
    return false;

  var slideWidth = $($slides[$slides.length - 1]).width();

  $slides.each(function(i,v){
    if ((ua.indexOf('MSIE') !== -1) || (ua.indexOf('Safari') !== -1)) {
      var options = (i === slideIndex-1) ? {width: slideWidth + 'px'} : {left: '+=' + slideWidth + 'px'};
    } else {
      var options = (i === slideIndex-1) ? {width: slideWidth + 'px'} : {translateX: '+=' + slideWidth};
    }

    $(v).animate(options, 300);
  });
  slideIndex -= 1;
  return true;
}

function slideToIndex(slide) {
  var idx  = slide - 1,
      diff = Math.abs(slide-slideIndex-1);

  if (idx === slideIndex)
    return;

  var f = (idx < slideIndex) ? slideRight : slideLeft;
  for (var i=0; i<diff; i++){
    f(false);
  }
}

previousSlide = slideRight;
nextSlide = slideLeft;

// bind events
$(document).mousewheel(bindMouseWheel);
$(document).keydown(bindKeydown);

// cache jquery objects
$(window).load(function(){
  $mainMenu = $('.main-menu');
  $slides = $('.slide');
});

