﻿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 = 3000;
	AnimationStopped = true;

	// Set the opacity of all slides
	for (x = 0; x < Slides.length; x++) {
		$(Slides[x]).css("opacity", "0");
	}

	// Make current slide visible
	$(Slides[CurrentSlide]).css("opacity", "1").show();
	showSlide(CurrentSlide);

	if (Slides.length > 1) {
		// 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(); }
	);

		// 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[CurrentSlide]).animate({ opacity: 0 }, 500);

	// Set slide index values
	setSlideIndexValues(event.data.slideIndex);

	// Show the slide the user clicked on
	showSlide(event.data.slideIndex);
	$(Slides[event.data.slideIndex]).animate({ opacity: 1 }, 500);

	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
			if ($.support.opacity == true) {
				$(Slides[CurrentSlide]).animate({ opacity: 0 }, 1100);
			}
			else
				$(Slides[CurrentSlide]).css( "opacity", 0);
			// Fade in the next slide
			setSlideIndexValues(NextSlide);
			showSlide(CurrentSlide);
			if ($.support.opacity == true)
				$(Slides[CurrentSlide]).animate({ opacity: 1 }, 1100);
			else
				$(Slides[CurrentSlide]).css( "opacity", 1);
		}, 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;
	}
}
