// Sliding slideshow script
// Modified March 15, 2010, by Rob Watts, Traction Systems LLC 
//
// NOTE: Currently assumes all slides are the same width

$(document).ready(function() {

    var slideSpeed = 2000;    // Speed to transition from one slide to the next (ms)
    var fadeSpeed = 0;        // How fast to fade when transitioning (ms). Set to 0 for no fading.
    var autoPlay = true;      // Set to false to disable auto scrolling
    var clickToScroll = false; // Enable clicking to scroll slides
    var autoInterval = 8000;  // Interval to automatically scroll to next slide (ms)
    var opacity = 0.1;        // Opacity of unselected slides

    var slideWidth = 0;
    var showWidth = 0;
    var numDuplicates = 0;
    var maxHeight = 0;
    var slideHeight = 0;
    var currentSlide = 0;
    var positions = [];
    var leftMargin = 0;
    var currentLeftMargin = 0;
    var slideInterval = "";
    var numSlides = $(".slide").length;
    var i = 0;
    
    function selectSlide(index) {
      
      // Jump to duplicate slide prior to sliding animation
      if (index > (numSlides-1)) {
	index -= numSlides;
	if (numDuplicates > 0)
	  $(".items").css("margin-left", currentLeftMargin+showWidth);
      }
      if (index < 0) {
	index += numSlides;
	$(".items").css("margin-left", currentLeftMargin-showWidth);
      }

      if ( fadeSpeed > 0 ) {
	$(".slideNumber_" + (currentSlide+1)).fadeTo(fadeSpeed, opacity, function() {
	    $(this).css("filter", ""); // Remove nasty black edges on transparent PNGs on IE
	  });
      
	$(".slideNumber_" + (index+1)).fadeTo(slideSpeed, 1, function() {
	    $(this).css("filter", ""); // Remove nasty black edges on transparent PNGs on IE
	  });
      }
      
      $(".slideNav li a").removeClass("current");
      $(".slideNav li:eq(" + index + ") a").addClass("current");

      currentLeftMargin = leftMargin-positions[index];
      $(".items").stop().animate({marginLeft:currentLeftMargin},slideSpeed);
      
      currentSlide = index;
      return false;
    }
    
    function autoScroll() {
      selectSlide(currentSlide + 1);
    }

    // Center the slide
    leftMargin = (($(".scrollable").width() - $(".slide:first").width())/2) - parseInt($(".slide:first").css("margin-left").replace("px", ""));
    
    $(".slide").each(function(i) {
	slideHeight = $(".slideContent-wrap", this).height();
	if ( slideHeight > maxHeight ) maxHeight = slideHeight;
	positions[i] = $(this).position().left;
	$(this).addClass("slideNumber_" + (i+1));
      });
    
    $(".slideContent-wrap").css("height", maxHeight);
    
    // Get size of individual slide with respect to the viewport
    if (numSlides > 1) 
      slideWidth = positions[1]-positions[0]; // Assume all widths equal... get first
    else slideWidth = $(".slide").width();
    numDuplicates = Math.ceil($(".scrollable").width()/slideWidth);
    showWidth = slideWidth*numSlides;
    
    if ($(".scrollable").width() > showWidth) {
      numDuplicates = 0;
      if (numSlides>1) leftMargin = ($(".scrollable").width() - showWidth)/2;
      $(".slideNav").remove();
    }
    else {
      if (autoPlay) slideInterval = setInterval(autoScroll, autoInterval);
      
      // Add extra slides to the beginning
      for (i=0; i<numDuplicates; i++) {
	$(".slideNumber_" + (numSlides-i)).clone().prependTo(".items");
	leftMargin -= slideWidth;
      } 
      // Add extra slides to the end
      for (i=0; i<numDuplicates; i++) {
	$(".slide:eq(" + (numDuplicates+i) + ")").clone().appendTo(".items");
      }

      if ( fadeSpeed > 0 ) {
	$(".slide").each(function(i) {
	    if (i != (numDuplicates)) $(this).fadeTo(0, opacity);
	  });
      }
      
      $(".slideNav li:first a").addClass("current");
      
      $(".slideNav li a").click(function(e) {
	  if (autoPlay) clearInterval(slideInterval);
	  var item = $(this).parent().prevAll("li").length;
	  selectSlide(item);
	  e.preventDefault();
	});

      if ( clickToScroll )
	$(".items .slide").live("click", function() {
	    if (autoPlay) clearInterval(slideInterval);
	    var item = $(this).prevAll(".slide").length - numDuplicates;
	    selectSlide(item);
	  });
      
    }
    
    $(".items").css("margin-left", leftMargin);
    currentLeftMargin = leftMargin;
  
  });

