$(init_carrousel);

var carrouselOptions = {};
carrouselOptions.WIDTH = 1306;
carrouselOptions.totalSteps = null;
carrouselOptions.currentStep = null;
carrouselOptions.currentLi = null;
carrouselOptions.flashBackupPath = "/images/frontpage/rotator/NovoRotator.swf";//change path to the flashbackup file
carrouselOptions.imagesBasePath = "/images/frontpage/rotator";//change to folder containing images

function init_carrousel(){

	if ($.browser.msie || swfobject.getQueryParamValue("flash") == "true" ) {
		if( parseInt( $.browser.version.substr(0,1) ) <= 6  || swfobject.getQueryParamValue("flash") == "true") {
			
			if ( swfobject.hasFlashPlayerVersion("9") ) {
				addFlashVersion();
				return;
			}
			
		}
	}


	var $carrousel = $("#carrousel");

	$carrousel.wrap('<div id="carrousel-container" />');

	var $carrouselContainer = $("#carrousel-container");
	var $carrouselControls = $('<div id="carrousel-controls" />').prependTo($carrouselContainer);

	$carrouselControls.append('<a id="carrousel-controls-big-left" href="javascript: void(0);"></a>');
	$carrouselControls.append('<a id="carrousel-controls-big-right" href="javascript: void(0);"></a>');
	
	var $carrouselControlsSmall = $('<div id="carrousel-controls-small" />').appendTo($carrouselControls);
	
	$carrouselControlsSmall.append('<a id="carrousel-controls-small-left" href="javascript: void(0);"></a>');
	$carrouselControlsSmall.append('<a id="carrousel-controls-small-right" href="javascript: void(0);"></a>');




	carrouselOptions.currentStep = 1;		
	$("#carrousel-container li").each(function(it, el){
		var $el = $(el);
		if ( $el.hasClass("carrousel-step-active") ) {
			carrouselOptions.currentStep = it + 1;
		}
		
		$el.addClass( "carrousel-step-" + (it + 1) );

		//wrap li content
		$("h1, p, a", $(el) ).wrapAll('<div class="carrousel-box-bottom"></div>');
		$(".carrousel-box-bottom", $(el)).wrap('<div class="carrousel-box-top" />');
	
		$carrouselControlsSmall.append('<span id="carrousel-controls-dot-' + (it + 1) + '" class="dot"></span>');

	});
	
	carrouselOptions.currentLi = carrouselOptions.currentStep;
	carrouselOptions.totalSteps = $("#carrousel-container li").length;

	$("#carrousel-controls-small").css("width", ( 44 + (carrouselOptions.totalSteps - 1) * 16 + 10 + 18 + 26 ) + "px" );


	$("#carrousel-container li").each(function(it, el){

		var $li;
		if (it == carrouselOptions.totalSteps - 1) {
			var $li = $(el).clone();
			$("#carrousel-container ul").prepend( $li );
		} else {
			var $li = $(el).clone();
			$("#carrousel-container ul").append( $li );
		}
	});
	
	//place li's
	$("#carrousel-container li").each(function(it, el){
		$(el).css("left", (it * carrouselOptions.WIDTH) + "px");
	});


	if ($.browser.msie) {
		$("div#carrousel-container a").each(function(it, el){
			$(el).get(0).hideFocus = true;
		});
	
	}
	
	//place dots
	$("div#carrousel-container span.dot").each(function(it, el){
		$(el).css("left", ( (it + 1) * 16 + 28) + "px");
	});

	$(window).resize(handleResize);
	handleResize();
	enableNavigation(false);
	
	handleAnimationDone();
	fadeBoxes();
	
	$carrousel.show();
	
	setupAuto();
}

function addFlashVersion() {

	var steps = [];
	$("ul#carrousel > li").each(function(it, el) {
		var $el = $(el);
		
		var placement;
		if ( $el.hasClass("carrousel-bottom-left") ) {
			placement = "BOTTOM_LEFT";
		} else if ( $el.hasClass("carrousel-bottom-right") ) {
			placement = "BOTTOM_RIGHT";
		} else if ( $el.hasClass("carrousel-top-right") ) {
			placement = "TOP_RIGHT";
		} else {
			placement = "TOP_LEFT";
		}
		
		steps.push(
			'{"image": "' + carrouselOptions.imagesBasePath + '/' + $("img", $el).attr("src").split("/").pop() + '", "headline": "' + encodeURIComponent( $("h1", $el).html() ) + '", "body": "' + encodeURIComponent( $("p", $el).html() ) + '", "link": "' + $("a", $el).html() + '", "url": "' + $("a", $el).attr("href") + '", "placement": "' + placement + '", "active": ' + "false" + '}'
		)
	});
	
		
	var $carrousel = $("#carrousel");
	$carrousel.wrap('<div id="carrousel-container" />');
	$("#carrousel-container").html('<div id="carrousel-flash" />');
	
	var flashvars = {
		steps: "[" + escape(steps.join(",")) + "]"
	};
	
	var params = {};
	params.wmode = "transparent";
	params.quality = "best";
	params.allowfullscreen = "true";
	params.allowscriptaccess = "always";
	params.allownetworking = "all";

	var attributes = {};
	attributes.name = "carrousel-flash";
	attributes.id = attributes.name;
		
	swfobject.embedSWF(carrouselOptions.flashBackupPath + "?cK=" + new Date().getTime(), "carrousel-flash", "100%", "452", "9.0.0", false, flashvars, params, attributes);
}

function moveRotatorLeft() {

	enableNavigation(false);

	flipContent(1);

	carrouselOptions.currentStep++;
	if (carrouselOptions.currentStep > carrouselOptions.totalSteps) {
		carrouselOptions.currentStep = 1;
	}

	carrouselOptions.currentLi++;

	fadeBoxes();	
	moveLeft();
}

function fadeBoxes() {
	$("#carrousel-container li > div.carrousel-box-top").fadeOut();
	setTimeout(function(){
		$(".carrousel-step-" + carrouselOptions.currentStep + " > div.carrousel-box-top").fadeIn(500);
	}, 500);
}

function moveLeft() {
	var left = parseInt( $("#carrousel-container ul").css("left").split("px").shift() );
	$("#carrousel-container ul").animate({"left": left - carrouselOptions.WIDTH },{duration: 1000, complete: handleAnimationDone});
}
function moveRotatorRight() {

	enableNavigation(false);

	flipContent(-1);

	carrouselOptions.currentStep--;
	if (carrouselOptions.currentStep < 1) {
		carrouselOptions.currentStep = carrouselOptions.totalSteps;
	}
	
	carrouselOptions.currentLi--;

	fadeBoxes();
	
	moveRight();
}
function moveRight() {
	var left = parseInt( $("#carrousel-container ul").css("left").split("px").shift() );
	$("#carrousel-container ul").animate({"left": left + carrouselOptions.WIDTH },{duration: 1000, complete: handleAnimationDone});
}

function flipContent(direction) {

	if (direction == -1) {
		var length = $("#carrousel-container li").length;
		$("#carrousel-container li").each(function(it, el){
			if (it == length - 1) {
				var left = parseInt($("#carrousel-container li:first").css("left").split("px").shift());
				$(el).remove().prependTo("#carrousel-container ul");
				$(el).css("left", (left - carrouselOptions.WIDTH) + "px");
			}
		});
	} else if (direction == 1) {

		$("#carrousel-container li").each(function(it, el){
			if (it == 0) {
				var left = parseInt($("#carrousel-container li:last").css("left").split("px").shift());
				$(el).remove().appendTo("#carrousel-container ul");
				$(el).css("left", (left + carrouselOptions.WIDTH) + "px");
			}
		});
	}
}
function enableNavigation(enabled){
	if (enabled) {
		$("#carrousel-controls-big-right, #carrousel-controls-small-right").click(moveRotatorLeft);
		$("#carrousel-controls-big-left, #carrousel-controls-small-left").click(moveRotatorRight);
	} else {
		$("#carrousel-controls-big-right, #carrousel-controls-small-right").unbind();
		$("#carrousel-controls-big-left, #carrousel-controls-small-left").unbind();
	}
}

function handleAnimationDone(){

	enableNavigation(true);

	$("#carrousel-container span.dot").removeClass("dot-active");
	
	$("#carrousel-container span.dot").each(function(it, el){
		if (it == carrouselOptions.currentStep - 1) $(el).addClass("dot-active");
	});
}

function handleResize(){

	var stageWidth = $(window).width();
	$("#carrousel-container ul").css("left", (-carrouselOptions.currentLi * carrouselOptions.WIDTH) + (stageWidth-carrouselOptions.WIDTH)/2);
	$("#carrousel-controls-small").css("left", ( stageWidth - $("#carrousel-controls-small").width() )/2);
	
	if (stageWidth < ( carrouselOptions.WIDTH - 2 * (44 + 70))) {
		$("#carrousel-controls-big-left, #carrousel-controls-big-right").hide();
	} else {
		$("#carrousel-controls-big-left, #carrousel-controls-big-right").show();	
	}
}

function setupAuto() {
	$("#carrousel-container").hover(stopAuto,startAuto);
	carrouselOptions.interval = setInterval(moveRotatorLeft, 5000);
}
function startAuto() {
	carrouselOptions.interval = setInterval(moveRotatorLeft, 5000);
}
function stopAuto() {
	clearInterval(carrouselOptions.interval);
}
