var Scroller = {
  
  controls:'#product_slider a.slider_control',
  targets:'#slider_wheel > li',
  wheel:'#slider_wheel',
  
  init:function() {
    
    // Ride the carousel...
    $('#slider_wheel').jcarousel({
        scroll: 5,
        initCallback: Scroller.carousel_callback,
        // This tells jCarousel NOT to autobuild prev/next buttons
        buttonNextHTML: null,
        buttonPrevHTML: null,
        itemFirstInCallback: Scroller.updateChrome
    });
  },
  
  updateChrome: function(carousel, li, index, state) {
    if(index == 1) {
      $('.back_btn').addClass('inactive');
    }
    if(index > 1) {
      $('.back_btn').removeClass('inactive');
    }
    if(index > $('#slider_wheel > li').length-5) {
      $('.forward_btn').addClass('inactive');
    }
    if(index < $('#slider_wheel > li').length-5) {
      $('.forward_btn').removeClass('inactive');
    }
    
    var dots = $('.slider_pagination a');
    var rel_targets = [];
    dots.each(function(){
      $(this).parent().removeClass('current');
      rel_targets.push( [ $(this).attr('rel'), $(this) ] );
    });
    for(var i=0; i < rel_targets.length; i++) {
      if( rel_targets[i][0] == index || (i==rel_targets.length-1) || ( (rel_targets[i][0] < index) && (index < rel_targets[i+1][0]) ) ) {
        rel_targets[i][1].parent().addClass('current');
        break;
      }
    }
    
    var tabs = $('.slider_tabs a');
    var rel_targets = [];
    tabs.each(function(){
      $(this).parent().removeClass('current');
      rel_targets.push( [ $(this).attr('rel'), $(this) ] );
    });
    for(var i=0; i < rel_targets.length; i++) {
      if( rel_targets[i][0] == index || (i==rel_targets.length-1) || ( (rel_targets[i][0] < index) && (index < rel_targets[i+1][0]) ) ) {
        rel_targets[i][1].parent().addClass('current');
        break;
      }
    }
  },
  
  carousel_callback: function(carousel) {
    $('.slider_tabs a').bind('click', function() {
      var target = $(this).attr('rel');
      
      $('.slider_tabs a').each(function(){ $(this).parent().removeClass('current'); });
      $(this).parent().addClass('current');
      carousel.scroll(jQuery.jcarousel.intval( target ));
      
      return false;
    });
    
    $('.slider_pagination a').bind('click', function() {
      var target = $(this).attr('rel');
      
      $('.slider_pagination a').each(function(){ $(this).parent().removeClass('current'); });
      $(this).parent().addClass('current');
      carousel.scroll(jQuery.jcarousel.intval( target ));
      
      return false;
    });
    
    $('.forward_btn').bind('click', function() {
      carousel.next();
      return false;
    });
    
    $('.back_btn').bind('click', function() {
      carousel.prev();
      return false;
    });
  }
  
} // carousel_callback

$(document).ready(function(){
  Scroller.init();
});