// JavaScript Document
// Plugin JQUERY maison de carousel pour Nestlé
// Auteur : Cédric Magnin / Digitas France
// Dernière version : 18/03/2008

/*********************** HISTORIQUE DES VERSIONS

V1 18/03/2008 : release
*/

/*********************** NOTICE

//Appeler $("#id_du_carousel").nestleCarousel() dans la page où se situe le carousel
$(document).ready( function() {	
	$("#id_du_carousel").nestleCarousel({ // > Appel du plugin
		scrollingTime: 2000, // > Temps entre chaque slide, ôter cette ligne si on ne veut pas de slide automatique
		//scrollingDelay: 10000, // > Temps de redémarrage du slide auto après un click, par défaut à 5000
		//scrollingDirection: "next", // > Direction du slide auto, par défaut à "next"
		//autoFade: 500, // > Vitesse de fadeIn&Out en slide auto
		//manualFade: 200, // > Vitesse de fadeIn&Out en slide au click
		leftArrow: "img/skin.nesquik/btn_leftarrow.gif", // > Image de la flèche gauche, chemin relatif à la page HTML
		rightArrow: "img/skin.nesquik/btn_rightarrow.gif" // > Image de la flèche droite, chemin relatif à la page HTML
	});
});
*/

function navigateCarousel( theCarousel , direction , fadeSpeed ) {
	if(direction == "next") {
		$(theCarousel).children("li.active").fadeOut(fadeSpeed, function() {
			if($(this).attr("class").indexOf("lastProduct") == -1) {
				$(this).next("li.carouselProducts").fadeIn(fadeSpeed).addClass("active");
			} else {
				$("li.carouselProducts").eq(0).fadeIn(fadeSpeed).addClass("active");
			}
		}).removeClass("active");
	}
	if(direction == "back") {
		$(theCarousel).children("li.active").fadeOut(fadeSpeed, function() {
			if($(this).attr("class").indexOf("firstProduct") == -1) {
				$(this).prev("li.carouselProducts").fadeIn(fadeSpeed).addClass("active");
			} else {
				$("li.carouselProducts").eq(theCarousel.children("li.carouselProducts").length-1).fadeIn(fadeSpeed).addClass("active");
			}
		}).removeClass("active");
	}
}

function timer( elmt , direction , fadeSpeed , time) {
	if(carouselDelay!=0)clearTimeout(carouselDelay);
	felmt = elmt;
	fdirection = direction;
	ffadeSpeed = fadeSpeed;
	carouselTimer = setInterval( "navigateCarousel(felmt,fdirection,ffadeSpeed);" , time );	
}

(function() {	
    jQuery.fn.nestleCarousel = function(settings) {
		
		theCarousel = this; //THE jquery object
        
		settings = jQuery.extend({
			scrollingTime: false,
			scrollingDelay: 5000,
			scrollingDirection: "next",
			autoFade: 200,
			manualFade: 200,
			leftArrow: "img/btn_leftarrow.gif",
			leftArrowWidth: 13,
			leftArrowHeight: 21,
			rightArrow: "img/btn_leftarrow.gif",
			rightArrowWidth: 13,
			rightArrowHeight: 21
        }, settings);
		
		theCarousel.css({
			overflow: "hidden"
		});		
		var highZIndex = theCarousel.children("li").length;
		theCarousel.children("li").each( function(){
			$(this)	.css({
						position: "absolute",
						display: "none",
						top: 0,
						left: 0
					})
					.addClass("carouselProducts");
			highZIndex--;
		});
		var highZIndex = theCarousel.children("li").length;
		theCarousel.children("li").eq(highZIndex-1).addClass("lastProduct");
		theCarousel.children("li").eq(0).show().addClass("active").addClass("firstProduct");
		
		theCarousel.prepend("<li id='backButton' class='carouselButtons'><a href='#precedent' id='backLink'><img src='"+settings.leftArrow+"' alt='précedent' id='backImg' /></a></li>");
		theCarousel.append("<li id='nextButton' class='carouselButtons'><a href='#suivant' id='nextLink'><img src='"+settings.rightArrow+"' alt='suivant' id='nextImg' /></a></li>");
		$(".carouselButtons").css({
			position: "absolute",
			zIndex: highZIndex+1
		});
		$("#backButton").css({
			left: settings.leftArrowWidth/2,
			top: ($(theCarousel).height())/2 - settings.leftArrowWidth,
			width: settings.leftArrowWidth
		});
		$("#nextButton").css({
			right: settings.leftArrowWidth/2,
			top: ($(theCarousel).height())/2 - settings.rightArrowWidth,
			width: settings.rightArrowWidth
		});
		
		theDirection = settings.scrollingDirection;
		theAutoFade = settings.autoFade;
		theScrollingTime = settings.scrollingTime;
		theScrollingDelay = settings.scrollingDelay;
		carouselTimer = 0;
		carouselDelay = 0;
		
		if(settings.scrollingTime!=false) {
			timer(theCarousel,theDirection,theAutoFade,theScrollingTime);
		}
		
		$("#backButton a").bind("click", function() {												  
			if(carouselTimer!=0)clearInterval(carouselTimer);			
			navigateCarousel(theCarousel,"back",settings.manualFade);
			if(settings.scrollingDelay!=false) {
				carouselDelay = setTimeout("timer(theCarousel,theDirection,theAutoFade,theScrollingTime)", theScrollingDelay);
			}
			return false;
		});
		$("#nextButton a").bind("click", function() {												  
			if(carouselTimer!=0)clearInterval(carouselTimer);			
			navigateCarousel(theCarousel,"next",settings.manualFade);
			if(settings.scrollingDelay!=false) {
				carouselDelay = setTimeout("timer(theCarousel,theDirection,theAutoFade,theScrollingTime)", theScrollingDelay);
			}
			return false;
		});
    };
})(jQuery);