 var pause = 0;
 var elementTimer;
 var carouselIds = ["#carousel", "#carousel_2", "#carousel_3"];
 var carouselData = ["","",""];
 
 $(document).ready(function(){
	storeCarouselData();
	initCarousel(0);
 });
 
 function storeCarouselData()
 {	
	for (var i=0; i<carouselIds.length; i++)
	{
		carouselData[i] = $(carouselIds[i]).html();
		$(carouselIds[i]).empty();
	}
 }
 
 function initCarousel(what)
 {
	//change the colour of the tabs
	$("#carouselTabs a").removeClass("on");
	$("#carouselTabs a:eq(" + what + ")").addClass("on");
	
	//reset the element counter
	currentElement = 0; //0 to skip heading li
	
	//clear the current contents
	$("#carousel").empty();
		
	//copy the new contents into the container object
	$("#carousel").html(carouselData[what]);
	addCornersToElement("carousel");
	
	//Add the top level style to the first <ul>
	$("#carousel ul").addClass("backgroundHolder");
	
	//Duplicate the list items and set the styles
	var onStates = $("#carousel .backgroundHolder").clone(true)[0];
	onStates.className = "sectionHolder on";
	$(onStates).insertAfter("#carousel .backgroundHolder");
	
	var offStates = $("#carousel .backgroundHolder").clone(true)[0];
	offStates.className = "sectionHolder off";
	$(offStates).insertAfter(".sectionHolder.on");
	
	$("#carousel p").wrap("<div class=\"boxMid\"></div>");
	$("#carousel .backgroundHolder .boxMid").wrap("<div class=\"infoBox\"></div>");
	$("#carousel .boxMid").before("<div class=\"boxTop\"></div>");
	$("#carousel .boxMid").after("<div class=\"boxBottom\"></div>");
	
	//Truncate the text in the right hand panels
	var maxLength = 65;
	var allParas = $("#carousel .sectionHolder a");
	for (var i=0; i<allParas.length; i++)
	{
		var toTrunc = allParas[i].innerHTML;
		//Offset the start at the end of the title
		allParas[i].innerHTML = truncate(toTrunc, toTrunc.toLowerCase().indexOf("</strong>"), maxLength);
	}
	
	$("#carousel .sectionHolder.off li:not(:first)").bind("mouseenter", over).bind("mouseleave", out);
	
	//Turn everything on
	$(".carousel").css({display:"block"});
	
	//Fade everything out ready to go
	$("#carousel .on li").fadeTo(10,0);
	$("#carousel .off li").fadeTo(10,1);
	$("#carousel .backgroundHolder li").fadeTo(10,0).css("display", "none");
	
	clearTimeout(elementTimer);
	changeElement(10000);
 }
 
 over = function()
 {
	pause = 1;
	//Get the index of the element
	var theElements = $("#carousel .sectionHolder.off li");
	for (var i=0; i<theElements.length; i++)
	{
		if (this == theElements[i])
		{
			jumpToElement(i);
		}
	}
 }
 
 out = function()
 {
	pause = 0;
 }
 
 function truncate(toTrunc, start, chars)
 {
	chars = chars + start;
	if (toTrunc.length > chars)
	{
		while (toTrunc.charCodeAt(chars) != 32 && chars > 0)
		{
			chars--;
		}
		toTrunc = toTrunc.substring(0, chars) + "&#133;";
	}
	return(toTrunc);
 }
 
 function changeElement(nextChange)
 {	
	if (pause != 1)
	{
		var x = $("#carousel .on li");
		var y = $("#carousel .off li");
		var z = $("#carousel .backgroundHolder li");
		var spd = 1000;
		
		
		$(x[currentElement]).fadeTo(spd,0);
		$(y[currentElement]).fadeTo(spd,1);
		$(z[currentElement]).fadeTo(spd,0);
		$(z[currentElement]).css("display", "none");
		
		currentElement ++;
		if (currentElement >= x.length)
		{
			currentElement = 1;
		}
		
		$(x[currentElement]).fadeTo(spd,1);
		$(y[currentElement]).fadeTo(spd,0);
		$(z[currentElement]).css("display", "block");
		$(z[currentElement]).fadeTo(spd,1);
	}
	elementTimer = setTimeout("changeElement(" + nextChange + ")",nextChange);
 }
 
 function jumpToElement(what)
 {	
	var x = $("#carousel .on li");
	var y = $("#carousel .off li");
	var z = $("#carousel .backgroundHolder li");
	var spd = 150;
	
	currentElement = what;
	
	$(x).fadeTo(spd,0);
	$(y).fadeTo(spd,1);
	$(z).fadeTo(spd,0);
	$(z).css("display", "none");
		
	$(x[currentElement]).fadeTo(spd,1);
	$(y[currentElement]).fadeTo(spd,0);
	$(z[currentElement]).fadeTo(spd,1);
	$(z[currentElement]).css("display", "block");
 }