// Config
var slideWidth = 940;
var animationSpeed = 750;
var rotationSpeed = 10000;

// Global Variables
var currentPosition;
var slides;
var numberOfSlides;
var timerID;

$(function() {		
	slides = $('.slide');
	numberOfSlides = slides.length;

	/* Add control buttons */
	$('#slides').prepend('<a href="#" class="controller" id="slidePrev">&laquo;</a><a href="#" class="controller" id="slideNext">&raquo;</a>');

	/* Adjust slide widths/positioning and hide all but a random slide */
	currentPosition = Math.floor(Math.random()*numberOfSlides);
	
	slides
		.css({
			'width' : slideWidth + 'px', 
			'top'   : '0px',
			'left'  : '0px',
			'position' : 'absolute'
		}).not(':eq(' + currentPosition + ')').hide();
		
	/* Adjust overflow */
	$('#slides').css('overflow', 'visible');

	/* Create event listeners for controls */
	$('.controller').bind('click', changeSlide);
	timerID = setInterval('changeSlide()', rotationSpeed);
});


// Fade out current slide and fade in new one
function changeSlide() {
	clearInterval(timerID); // clear the timer to prevent premature flipping

	slides.filter(':eq(' + currentPosition + ')').fadeOut(animationSpeed);
	currentPosition = ($(this).attr('id')=='slidePrev') ? currentPosition - 1 : currentPosition +1;
	
	// Wrap slide counter around if at beginning or end
	if (currentPosition < 0) 
		currentPosition = numberOfSlides - 1
	else if (currentPosition + 1 > numberOfSlides )
		currentPosition = 0;
	slides.filter(':eq(' + currentPosition + ')').fadeIn(animationSpeed);

	timerID = setInterval('changeSlide()', rotationSpeed); // Restart timer
}