var OldSlide;
var CurrentSlide;
var NextSlide;
var Slides, Titles;
var Delay;
var AnimationIntervalID;
var AnimationStopped;

$(window).load( function() 
	{
		InitializeSlideshow();
	}
)

function InitializeSlideshow() {
	Slides = $("#slideshow .slides .slide");
	Titles = $("#slideshow .titles .item");
	CurrentSlide = Math.floor(Math.random() * (Slides.length - 1));
	setSlideIndexValues(CurrentSlide);
	OldSlide = CurrentSlide - 1;
	if (OldSlide < 0)
		OldSlide = Slides.length;

	Delay = 10000;
	AnimationStopped = true;

	// Set the opacity of all slides
	for (x = 0; x < Slides.length; x++) {
		$(Slides[x]).css("opacity", "0");
	}

	// Set the click event handler on all titles
	for (x = 0; x < Titles.length; x++) {
		$(Titles[x]).bind("click", {slideIndex: x}, changeSlide);
	}

	// Set the event handler for the slide titles section
	$("#slideshow .titles").mouseleave(
		function () { startAnimation(); }
	);

	// Make current slide visible
	$(Slides[CurrentSlide]).css("opacity", "1").show();
	showSlide(CurrentSlide);

	// Setup interval timer
	startAnimation();
}

// Event handler for slides title click events
function changeSlide(event) {
	// Stop animation and hide old slide
	stopAnimation();

	// Hide the old slide
	$(Slides[OldSlide]).hide().css("opacity", 0);

	// Set slide index values
	setSlideIndexValues(event.data.slideIndex);

	// Show the slide the user clicked on
	showSlide(event.data.slideIndex);
	$(Slides[event.data.slideIndex]).css("opacity", 1);

	event.preventDefault();
}

function stopAnimation() {
	clearInterval(AnimationIntervalID);
	$(Slides[OldSlide]).stop(true, true);
	AnimationStopped = true;
}

function startAnimation() {
	if (AnimationStopped == true) {
		AnimationIntervalID = setInterval(function () {
			// Hide the old slide
			$(Slides[OldSlide]).hide().css("opacity", 0);
			// Fade in the next slide
			setSlideIndexValues(NextSlide);
			showSlide(CurrentSlide);
			$(Slides[CurrentSlide]).animate({ opacity: 1 }, 1500);
		}, Delay);
		AnimationStopped = false;
	}
}

// Show the slide indicated by the index value
function showSlide(slideIndex) {
	$(Slides[OldSlide]).css("z-index", "2").show();
	$(Slides[slideIndex]).css("z-index", "3").show();
	$(Titles[OldSlide]).removeClass("itemselected");
	$(Titles[slideIndex]).addClass("itemselected");
}

// Set previous, current and next slide values
function setSlideIndexValues(slideIndex) {
	OldSlide = CurrentSlide;
	CurrentSlide = slideIndex;
	NextSlide = slideIndex + 1;
	if (NextSlide >= Slides.length) {
		NextSlide = 0;
	}
}
