jQuery(document).ready(function()
{
	// Get the count of all of the carousel slides
	var slideCount = jQuery("div#slider").children("ul").children("li").length -1;

	// Set the current slide
	var currentSlide = 0;

	// Position all of the carousel items
	jQuery("div#slider").children("ul").children("li").each(function()
	{
		jQuery(this).css({position: "absolute", left: (jQuery(this).index() * parseInt(jQuery(this).css("width"))) + "px"});
	});

	// Construct the carousel index string
	var indexString = "<div class=\"carouselControl\" align=\"center\">";

	// Add an icon for each index...
	while(currentSlide <= slideCount)
	{
		// Build the span markup
		indexString += "<span class=\"index\">&nbsp;&nbsp;&nbsp;</span>";

		// Increment slide
		currentSlide++;
	}

	// Reset slide variable
	currentSlide = 0;

	// Finish index string
	indexString += "</div>";

	// Insert the string into the DOM
	jQuery("div.homeStory").append(indexString);

	// Highlight the first index
	jQuery("span.index").eq(0).addClass("currentIndex");

	// Remove the right margin from the last span
	jQuery("span.index:last").css({marginRight: "0px"});

	// Position the control
	jQuery("div.carouselControl").css({left: ((parseInt(jQuery("div#slider").width()) / 2) - (parseInt(jQuery("div.carouselControl").width()) / 2)) + "px"});

	// Hide the previous button
	jQuery("span#prevBtn").css({visibility: "hidden"});

	// Previous/next button highlighting
	jQuery("span#prevBtn, span#nextBtn, span.index").mouseover(function()
	{
		// Add hover state
		jQuery(this).addClass("rollIndex");
	}).mouseout(function()
	{
		// Remove hover state
		jQuery(this).removeClass("rollIndex");
	});
	
	// Set the slide auto-start
	var slideAutoStart = setInterval(function()
	{
		// Figure out how to increment the slide count
		if(currentSlide == slideCount)
		{
			// Reset the slide count to zero
			currentSlide = 0;

			// Bring it back to the first slide
			jQuery("div#slider").children("ul").children("li").animate({left: "+=" + (parseInt(jQuery("div#slider").children("ul").children("li").css("width")) * slideCount) + "px"}, {queue: true, duration: 500});
		}
		else
		{
			// Increment the slide count;
			currentSlide++;

			// Animate the slides
			jQuery("div#slider").children("ul").children("li").animate({left: "-=" + parseInt(jQuery("div#slider").children("ul").children("li").css("width")) + "px"}, {queue: true, duration: 500});
		}

		// Highlight the current index in the spans
		jQuery("span.index").removeClass("currentIndex").eq(currentSlide).addClass("currentIndex");

		// Hide previous/next controls appropriately
		if(currentSlide == 0)
		{
			jQuery("span#prevBtn").css({visibility: "hidden"});
			jQuery("span#nextBtn").css({visibility: "visible"});
		}
		else if(currentSlide == slideCount)
		{
			jQuery("span#prevBtn").css({visibility: "visible"});
			jQuery("span#nextBtn").css({visibility: "hidden"});
		}
		else
		{
			jQuery("span#prevBtn").css({visibility: "visible"});
			jQuery("span#nextBtn").css({visibility: "visible"});
		}
	}, 5000);

	// Bind the span index events
	jQuery("span.index").click(function()
	{
		// Clear the autostart interval
		clearInterval(slideAutoStart);

		// Remove any current on states
		jQuery("span.index").removeClass("currentIndex");

		// Apply the current on state
		jQuery(this).addClass("currentIndex");

		// Animate the slide's according to the target index
		if(jQuery(this).index() != currentSlide)
		{
			// Animate slides
			jQuery("div#slider").children("ul").children("li").animate({left: "-=" + (parseInt(jQuery("div#slider").children("ul").children("li").css("width")) * (jQuery(this).index() - currentSlide)) + "px"}, {queue: false, duration: 500});

			// Set slide index
			currentSlide = jQuery(this).index();
		}
		
		// Hide previous/next controls appropriately
		if(currentSlide == 0)
		{
			jQuery("span#prevBtn").css({visibility: "hidden"});
			jQuery("span#nextBtn").css({visibility: "visible"});
		}
		else if(currentSlide == slideCount)
		{
			jQuery("span#prevBtn").css({visibility: "visible"});
			jQuery("span#nextBtn").css({visibility: "hidden"});
		}
		else
		{
			jQuery("span#prevBtn").css({visibility: "visible"});
			jQuery("span#nextBtn").css({visibility: "visible"});
		}
	});

	// Bind the previous button
	jQuery("span#prevBtn").click(function()
	{
		// Clear the autostart interval
		clearInterval(slideAutoStart);

		// Figure out how to decrement the slide count
		if(currentSlide == 0)
		{
			// Reset the slide count to maximum
			currentSlide = slideCount;

			// Bring it back to the first slide
			jQuery("div#slider").children("ul").children("li").animate({left: "-=" + (parseInt(jQuery("div#slider").children("ul").children("li").css("width")) * slideCount) + "px"}, {queue: true, duration: 500});
		}
		else
		{
			// Decrement the slide count
			currentSlide--;

			// Animate the slides
			jQuery("div#slider").children("ul").children("li").animate({left: "+=" + parseInt(jQuery("div#slider").children("ul").children("li").css("width")) + "px"}, {queue: true, duration: 500});
		}

		// Highlight the current index in the spans
		jQuery("span.index").removeClass("currentIndex").eq(currentSlide).addClass("currentIndex");
		
		// Hide previous/next controls appropriately
		if(currentSlide == 0)
		{
			jQuery("span#prevBtn").css({visibility: "hidden"});
			jQuery("span#nextBtn").css({visibility: "visible"});
		}
		else if(currentSlide == slideCount)
		{
			jQuery("span#prevBtn").css({visibility: "visible"});
			jQuery("span#nextBtn").css({visibility: "hidden"});
		}
		else
		{
			jQuery("span#prevBtn").css({visibility: "visible"});
			jQuery("span#nextBtn").css({visibility: "visible"});
		}
	});

	// Bind the next button
	jQuery("span#nextBtn").click(function()
	{
		// Clear the autostart interval
		clearInterval(slideAutoStart);

		// Figure out how to increment the slide count
		if(currentSlide == slideCount)
		{
			// Reset the slide count to zero
			currentSlide = 0;

			// Bring it back to the first slide
			jQuery("div#slider").children("ul").children("li").animate({left: "+=" + (parseInt(jQuery("div#slider").children("ul").children("li").css("width")) * slideCount) + "px"}, {queue: true, duration: 500});
		}
		else
		{
			// Increment the slide count;
			currentSlide++;

			// Animate the slides
			jQuery("div#slider").children("ul").children("li").animate({left: "-=" + parseInt(jQuery("div#slider").children("ul").children("li").css("width")) + "px"}, {queue: true, duration: 500});
		}

		// Highlight the current index in the spans
		jQuery("span.index").removeClass("currentIndex").eq(currentSlide).addClass("currentIndex");
		
		// Hide previous/next controls appropriately
		if(currentSlide == 0)
		{
			jQuery("span#prevBtn").css({visibility: "hidden"});
			jQuery("span#nextBtn").css({visibility: "visible"});
		}
		else if(currentSlide == slideCount)
		{
			jQuery("span#prevBtn").css({visibility: "visible"});
			jQuery("span#nextBtn").css({visibility: "hidden"});
		}
		else
		{
			jQuery("span#prevBtn").css({visibility: "visible"});
			jQuery("span#nextBtn").css({visibility: "visible"});
		}
	});
});
