// SlideIO ... jQuery plugin for slide in and out slideshow
// Created March 11, 2010
//
// By Rob Watts, http://tractionsys.com
// Provided under the MIT license. Feel free to use it however you like.
//
// Example:
// $("ul.slideIO").slideIO();
//
// To override defaults, pass in a defaults object:
// $("ul.slideIO").slideIO({
//    inSpeed: 100,
//    outSpeed: 100,
//    delay: 5000
// });
var currentSlide = 0;


function swapSlide($panels, settings) {
  var count = $panels.length;
  var n = 0; // Index of new slide
  

  // Determine if on last slide, and if not, increment
  if ( currentSlide < ( count-1 ) )
    n = currentSlide + 1;
  else {
    n = 0;
  }
  
  $panels
    .eq(currentSlide)
    .removeClass("currentSlide")
    .animate({
      left: settings.left,
	  top: settings.top
	  }, settings.outSpeed, settings.easeOut, function() {
	$panels
	  .eq(n)
	  .addClass("currentSlide")
	  .delay(settings.wait)
	  .animate({
	    left: "0",
		top: "0"
		}, settings.inSpeed, settings.easeIn);
	currentSlide = n;
      });
      
}


jQuery.fn.slideIO = function(options) {
  var $panels = this.children();
  var panelWidth = $panels.slice(0).width();
  var panelHeight = $panels.slice(0).height();

  
  // Set up defaults
  settings = jQuery.extend({
    inSpeed: 500,           // Time to slide in (ms)
	outSpeed: 300,      // Time to slide out (ms)
	delay: 7000,        // How long to display each slide (ms)
	showFirst: false,   // Set whether the first slide appears immediately or slides in
	wait: 500,          // Time to wait before sliding in
	easeIn: "swing",    // Easing to use when moving the slide in
	easeOut: "swing",   // Easing to use when moving the slide out
	left: $panels.slice(0).css("left"),
	top: $panels.slice(0).css("top")
	}, options);

  if (settings.showFirst) {
    j = 0;
    
    // Position the first panel
    $panels
      .first()
      .css({
	left: "0",
	    top: "0"
	    })
      .addClass("currentSlide");
  }
  else
    currentSlide = -1;
  
  if ( !settings.showFirst )
    swapSlide($panels, settings);
  
  
  setInterval(function() {
      swapSlide($panels, settings);
    },
    settings.delay
    );
  
};

