/**SlideShow**/

jQuery.fn.slideshow = function() {
	// SETTINGS
	var settings = {
		timeout: 0,
		autoplay: this.is(".autoplay"),
		controls: 'none',
		randomfirstslide: this.is(".randomfirstslide"),
		pauselink: this.attr('id') + "_pause",
		forwardlink: this.attr('id') + "_forward",
		backwardlink: this.attr('id') + "_backward"
	};

	if (this.is(".bigcontrols")) {
	  settings.controls = 'big';
	} else if (this.is(".smallcontrols")) {
	  settings.controls = 'small';
	};

  var m = new RegExp('[0-9]+secondintervals').exec(this.attr("class"));
  if (m == null) {
    settings.timeout = 5000;
  } else {
    settings.timeout = m[0].split("secondintervals")[0]*1000;
  };
	
	// VARIABLES
	var isPaused = true;
	var next = 0;
	var current = 0;
	var last;
	var timer;
	
	// SETUP  
  var slides = this.find('div.sustain-slide').get();
	jQuery.each(slides, function(i){
		jQuery(slides[i]).css('zIndex', slides.length - i).css('position', 'absolute').css('top', '0').css('left', '0').css('float', 'none');
	});

	if (settings.randomfirstslide == true ) {  
    current = Math.floor(Math.random()*slides.length);
	};
	
	/*
	if (settings.controls == 'big' ) {  
    this.append('<a href="#" id="'+settings.pauselink+'" class="pause"><span>Pause</span></a>');
		jQuery('#'+settings.pauselink).click(function() { playpause();return false; });
	} else if (settings.controls == 'small' ) {  
    this.append('<a href="#" id="'+settings.backwardlink+'" class="backward"><span>Backward</span></a>');
		jQuery('#'+settings.backwardlink).click(function() { backward();return false; });
	  this.append('<a href="#" id="'+settings.forwardlink+'" class="forward"><span>Forward</span></a>');
		jQuery('#'+settings.forwardlink).click(function() { forward();return false; });
  };
	*/
	
	var slidecontrols = this.find('ul li a').get();
  jQuery.each(slidecontrols, function(j){
		jQuery(slidecontrols[j]).click(function() { jumpto(j);return false; });
	});
	
  // FUNCTIONS	
	var jumpto  = function(next) {		
	  last = current;
	  current = next;
	  // alert(last+' --> '+current);
		for (var i = 0; i < slides.length; i++) {
			jQuery(slides[i]).css('display', 'none');
		}
		jQuery(slides[last]).css('display', 'block').css('position', 'absolute').css('zIndex', '8');
		jQuery(slides[current]).css('position', 'absolute').css('zIndex', '9').fadeIn('slow');
		if (settings.controls == 'big' ) {
		  jQuery(slidecontrols[last]).removeClass('active');
		  jQuery(slidecontrols[current]).addClass('active');
		}
    if (settings.autoplay == true && isPaused == false) { 
		  clearTimeout(timer);
		  timer = setTimeout(forward, settings.timeout);	
		}
  };
  
	var playpause = function() {
		if ( isPaused == false ) {
      pause();
		}
		else {
      play();
		}
	};
	
	var pause = function() {	
		isPaused = true;
		clearTimeout(timer);
		jQuery('#' + settings.pauselink + ' span').html('Play');
		jQuery('#' + settings.pauselink).attr("class","play");
	};
	
	var play = function() {
		isPaused = false;
		forward();
		jQuery('#' + settings.pauselink + ' span').html('Pause');
		jQuery('#' + settings.pauselink).attr("class","pause");
  };
  
  var forward = function () {
		if ( ( current + 1 ) < slides.length ) {
		  next = current + 1;
		}
		else {
		  next = 0;
		}
    jumpto(next);
	};
	
	var backward = function () {
		if ( ( current - 1 ) <= -1 ) {
		  next = slides.length - 1;
		}
		else {
		  next = current - 1;
		}
    jumpto(next);
	};
		
	// KICKOFF!
	jQuery(slides[current]).css('zIndex', '99');
	if (settings.controls == 'big' ) {
	  jQuery(slidecontrols[current]).addClass('active');
	}
	if (settings.autoplay == true ) { 
	  timer = setTimeout(play, settings.timeout);
	}
	return this;
};

$(document).ready(function() {
  $('.sustain-slideshow').each(function(i){
   $(this).slideshow();
  });
});

