// Global variables
var carousel_paused = false;
var carousel_currentPage = 0;
var carousel_container = 0;
var carousel_pages = 0;
var carousel_pageCount = 0;
var carousel_readMore = 0
var carousel_active = false;
var carousel_imageCount = 1;
var carousel_imagesLoaded = 0;
var carousel_allImagesPreLoaded = false;
var carousel_imagePreLoader = new Array();
var carousel_timer = 0;
var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;

// Initial setup
function carousel_setupControls(carouselContainer, readMoreImageSrc)
{
	// Hide for IE6
	if (IE6)
	{
		document.getElementById("carousel_page" + carousel_pageCount).style.display = 'inline';
	}
	else
	{

		// Count pages
		carousel_container = document.getElementById(carouselContainer);
		carousel_pages = carousel_container.getElementsByTagName("div");
		carousel_pageCount = 0;
		for (var i = 0; i < carousel_pages.length; i++)
		{
			if (carousel_pages[i].className = "page")
			{
				$("#carousel_page" + carousel_pageCount).fadeOut("fast");
				carousel_pageCount++;
			}
		}

		// Render controls
		var controlsHTML = "<div id=\"carousel_controls\">";
		// ---Read more
		controlsHTML += "<a class=\"readMore\" href=\"#\" onclick=\"return carousel_readMore_click();\" id=\"carousel_readMore\"><img alt=\"Read more\" src=\"" + readMoreImageSrc + "\" /></a>";
		// ---Checkboxes
		for (var c = 0; c < carousel_pageCount; c++)
		{
			if (c == 0)
			{
				controlsHTML += "<a class=\"checkBox selected\" href=\"\" id=\"carousel_checkBox" + c + "\" onclick=\"return carousel_checkBox_click(" + c + ");\"></a>";
			}
			else
			{
				controlsHTML += "<a class=\"checkBox\" href=\"\" id=\"carousel_checkBox" + c + "\" onclick=\"return carousel_checkBox_click(" + c + ");\"></a>";
			}
		}
		// ---Previous/next
		controlsHTML += "<a href=\"\" id=\"carousel_previous\" onclick=\"return carousel_previousPage_click();\"></a>";
		controlsHTML += "<a href=\"\" id=\"carousel_pause\" onclick=\"return carousel_pause_click();\"></a>";
		controlsHTML += "<a href=\"\" id=\"carousel_next\" onclick=\"return carousel_nextPage_click();\"></a>";
		controlsHTML += "</div>";
		carousel_container.innerHTML += controlsHTML;
		
		// Fade out controls
		$("#carousel_controls").fadeOut("fast");
		
		// Preload images
		var tempString = "";
		var arrayPosition = 0;
		for (var n = 0; n < carousel_pageCount; n++)
		{
			carousel_imagePreLoader[arrayPosition] = new Image();
			tempString = document.getElementById("carousel_page" + n).style.backgroundImage;
			carousel_imagePreLoader[arrayPosition].onload = function() { carousel_imageLoaded(); }
			carousel_imagePreLoader[arrayPosition].src = tempString.substring(4, tempString.length - 1);
			arrayPosition++;
			carousel_imageCount++;
		}
		carousel_imagePreLoader[arrayPosition] = new Image();
		carousel_allImagesPreLoaded = true;
		carousel_imagePreLoader[arrayPosition].onload = function() { carousel_imageLoaded(); }
		carousel_imagePreLoader[arrayPosition].src = readMoreImageSrc;
		/*
		arrayPosition++;
		carousel_imageCount++;
		carousel_imagePreLoader[arrayPosition] = new Image();
		carousel_allImagesPreLoaded = true;
		tempString = document.getElementById("carousel_checkBox0").style.backgroundImage;
		carousel_imagePreLoader[arrayPosition].onload = function() { carousel_imageLoaded(); }
		carousel_imagePreLoader[arrayPosition].src = tempString.substring(4, tempString.length - 1);
		*/

		// Hide read more link if no rel attribute
		if (document.getElementById("carousel_page" + carousel_currentPage).getAttribute("rel") == "null" || document.getElementById("carousel_page" + carousel_currentPage).getAttribute("rel") == "")
		{
			document.getElementById("carousel_readMore").style.display = "none";
		}
		else
		{
			document.getElementById("carousel_readMore").style.display = "inline";
		}
		
		// Auto scroll through
		carousel_timer = setTimeout(carousel_autoPlay, 6000);
		
	}
}

// Handle 'read more' click
function carousel_readMore_click()
{
	// Redirect to the current page's redirect
	var redirectURL = document.getElementById("carousel_page" + carousel_currentPage).getAttribute("rel");
	window.location.href = redirectURL;
	return false;
}

// Handle checkbox clicks
function carousel_checkBox_click(id)
{
	// Check the carousel is active
	if (carousel_active)
	{
		// Cancel the auto play
		clearTimeout(carousel_timer);
		// Stop clicking through too quickly!
		carousel_active = false;
		// Fade out old page
		$("#carousel_page" + carousel_currentPage).fadeOut("slow");
		// Un-highlight correct checkbox
		$("#carousel_checkBox" + carousel_currentPage).removeClass("selected");
		// Fade in new page
		carousel_currentPage = id;
		$("#carousel_page" + carousel_currentPage).fadeIn("slow", function() { carousel_active = true; });
		// Highlight correct checkbox
		$("#carousel_checkBox" + carousel_currentPage).addClass("selected");
		// Hide read more link if no rel attribute
		if (document.getElementById("carousel_page" + carousel_currentPage).getAttribute("rel") == "null" || document.getElementById("carousel_page" + carousel_currentPage).getAttribute("rel") == "")
		{
			document.getElementById("carousel_readMore").style.display = "none";
		}
		else
		{
			document.getElementById("carousel_readMore").style.display = "inline";
		}
		// Restart auto play
		if (!carousel_paused)
		{
			carousel_timer = setTimeout(carousel_autoPlay,6000);
		}
	}
	// Stop redirect
	return false;
}

// Next page
function carousel_autoPlay()
{
	// Check the carousel is active
	if (carousel_active)
	{
		// Stop clicking through too quickly!
		carousel_active = false;
		// Fade out old page
		$("#carousel_page" + carousel_currentPage).fadeOut("slow");
		// Un-highlight correct checkbox
		$("#carousel_checkBox" + carousel_currentPage).removeClass("selected");
		// Fade in new page
		carousel_currentPage++;
		if (carousel_currentPage == carousel_pageCount)
		{
			carousel_currentPage = 0;
		}
		$("#carousel_page" + carousel_currentPage).fadeIn("slow", function() { carousel_active = true; });
		// Highlight correct checkbox
		$("#carousel_checkBox" + carousel_currentPage).addClass("selected");
		// Hide read more link if no rel attribute
		if (document.getElementById("carousel_page" + carousel_currentPage).getAttribute("rel") == "null" || document.getElementById("carousel_page" + carousel_currentPage).getAttribute("rel") == "")
		{
			document.getElementById("carousel_readMore").style.display = "none";
		}
		else
		{
			document.getElementById("carousel_readMore").style.display = "inline";
		}
	}
	// Restart auto play
	if (!carousel_paused)
	{
		carousel_timer = setTimeout(carousel_autoPlay,6000);
	}
	// Stop redirect
	return false;
}

// Next page
function carousel_nextPage_click()
{
	// Check the carousel is active
	if (carousel_active)
	{
		// Cancel the auto play
		clearTimeout(carousel_timer);
		// Stop clicking through too quickly!
		carousel_active = false;
		// Fade out old page
		$("#carousel_page" + carousel_currentPage).fadeOut("slow");
		// Un-highlight correct checkbox
		$("#carousel_checkBox" + carousel_currentPage).removeClass("selected");
		// Fade in new page
		carousel_currentPage++;
		if (carousel_currentPage == carousel_pageCount)
		{
			carousel_currentPage = 0;
		}
		$("#carousel_page" + carousel_currentPage).fadeIn("slow", function() { carousel_active = true; });
		// Highlight correct checkbox
		$("#carousel_checkBox" + carousel_currentPage).addClass("selected");
		// Hide read more link if no rel attribute
		if (document.getElementById("carousel_page" + carousel_currentPage).getAttribute("rel") == "null" || document.getElementById("carousel_page" + carousel_currentPage).getAttribute("rel") == "")
		{
			document.getElementById("carousel_readMore").style.display = "none";
		}
		else
		{
			document.getElementById("carousel_readMore").style.display = "inline";
		}
		// Restart auto play
		if (!carousel_paused)
		{
			carousel_timer = setTimeout(carousel_autoPlay,6000);
		}
	}
	// Stop redirect
	return false;
}

// Previous page
function carousel_previousPage_click()
{
	// Check the carousel is active
	if (carousel_active)
	{
		// Cancel the auto play
		clearTimeout(carousel_timer);
		// Stop clicking through too quickly!
		carousel_active = false;
		// Fade out old page
		$("#carousel_page" + carousel_currentPage).fadeOut("slow");
		// Un-highlight correct checkbox
		$("#carousel_checkBox" + carousel_currentPage).removeClass("selected");
		// Fade in new page
		carousel_currentPage--;
		if (carousel_currentPage == -1)
		{
			carousel_currentPage += carousel_pageCount;
		}
		$("#carousel_page" + carousel_currentPage).fadeIn("slow", function() { carousel_active = true; });
		// Highlight correct checkbox
		$("#carousel_checkBox" + carousel_currentPage).addClass("selected");
		// Hide read more link if no rel attribute
		if (document.getElementById("carousel_page" + carousel_currentPage).getAttribute("rel") == "null" || document.getElementById("carousel_page" + carousel_currentPage).getAttribute("rel") == "")
		{
			document.getElementById("carousel_readMore").style.display = "none";
		}
		else
		{
			document.getElementById("carousel_readMore").style.display = "inline";
		}
		// Restart auto play
		if (!carousel_paused)
		{
			carousel_timer = setTimeout(carousel_autoPlay,6000);
		}
	}
	// Stop redirect
	return false;
}

// Carousel pause
function carousel_pause_click()
{
	// Pause carousel
	if (carousel_paused)
	{
		carousel_paused = false;
		document.getElementById('carousel_pause').style.backgroundPosition = '0 0';
	}
	else
	{
		carousel_paused = true;
		clearTimeout(carousel_timer);
		document.getElementById('carousel_pause').style.backgroundPosition = '0 -17px';
	}
	// Stop redirect
	return false;
}

// Update as each background image is loaded
function carousel_imageLoaded()
{
	// Decrease images to load counter
	carousel_imagesLoaded++;
	
	// Start the carousel if all are loaded
	if (carousel_imageCount == carousel_imagesLoaded && carousel_allImagesPreLoaded)
	{
		carousel_active = true;
		$("#carousel_controls").fadeIn("fast");
		$("#carousel_page" + carousel_currentPage).fadeIn("fast");
	}
}