jQuery(document).ready(function(){
	//Configuration
	var tempsTransition = 1000;
	var lectureAutomatique = true;
	var tempsAttente = 10000;	
	var currentPosition = 1;
	var slideWidth = 665;
			
	// On récupère le bloc principal
	var blocDiapo = jQuery('#slidesContainer');

	// On duplique le premier et le dernier élément pour permettre la rotation infinie avant de declarer la variable numberofslides pour les inclure dedans
	var first = blocDiapo.children(':first');
	var firstNode = first.get(0).nodeName;
	var last = blocDiapo.children(':last');
	var lastNode = first.get(0).nodeName;
	
	blocDiapo.prepend('<'+lastNode+' class="slide" id="slide'+jQuery('.slide').length+'">'+last.html()+'</'+lastNode+'>');
	blocDiapo.append('<'+firstNode+' class="slide" id="slide1">'+first.html()+'</'+firstNode+'>');
    		
	var slides = jQuery('.slide');
	var numberOfSlides = slides.length;
	var interval;
	var currentPositionMan;
	var currentPositionAuto;
	var lectureEnCours = false;
	var TempPauseLecture = false;
	var TempMarginLeft;
 	// Supprime les scrollbar en JS
 	jQuery('#slidesContainer').css('overflow', 'hidden');
 
 	// Attribue  #slideInner  à toutes les div .slide
 	slides
	    .wrapAll('<div id="slideInner"></div>')
	    // Float left pour alignerles slides horizontallement, readjust .slides width
		.css({
	    	'float' : 'left',
			'width' : slideWidth
		});

 	// Longueur de #slideInner égale au total de la longueur de tous les slides
	jQuery('#slideInner')
		.css('width', slideWidth * numberOfSlides)
		.css('marginLeft', -slideWidth);
 
	// Insert les controles droite gauche dans le DOM
	jQuery('#slideshow')
		.prepend('<span class="control" id="leftControl">Précédent</span>')
		.append('<span class="control" id="rightControl">Suivant</span>');
		
 
 	//active le premier slidemini
	jQuery('div.slidemini').eq(0)
		.css({
			'opacity' : '1.0'
		});

 	//Crée un écouteur d'évènement de type clic sur les classes .control
 	jQuery('.control')
		.bind('click', function(){
			//Recupérer la valeur numerique de marginleft
			TempMarginLeft = jQuery('#slideInner').css('marginLeft');
			TempMarginLeft = String(TempMarginLeft).substring(0,String(TempMarginLeft).length-2);
			//Lancer seulement si aucune animation est en cours
			if(TempMarginLeft%slideWidth == 0){
				//Arreter temporairement le defilement auto
				if(lectureEnCours == true){
					TempPauseLecture = true;
					pause();
					jQuery('#slideInner')
  						.stop(true,false);		
				}
				// Determine la nouvelle position
				currentPositionMan = currentPosition;
				currentPositionMan = (jQuery(this).attr('id')=='rightControl') ? currentPositionMan+1 : currentPositionMan-1;
    
				//gerer le passage du dernier au premier slide
				if(currentPositionMan == numberOfSlides-1 && jQuery(this).attr('id')=='rightControl'){
					currentPositionMan = 1;
					jQuery('#slideInner')
  						.css('marginLeft', '0');
				}
				//gerer le passage du premier au dernier slide
				if(currentPositionMan == 0 && jQuery(this).attr('id')=='leftControl'){
					currentPositionMan = numberOfSlides-2;
					jQuery('#slideInner')
  						.css('marginLeft', (slideWidth*(-(numberOfSlides-1))));
				}
		
				// Fais bouger le slide
    			jQuery('#slideInner').animate({
    				'marginLeft' : slideWidth*(-currentPositionMan)
    			},tempsTransition);
	
				//Relancer le defilement auto s'il etait actif
				if(TempPauseLecture == true){
					TempPauseLecture = false;
					start();		
				}
	
				//desactive le slidemini precedent
				jQuery('div.slidemini').eq(currentPosition-1)
					.animate({
						'opacity' : '0.4'
					}, "slow");
		
				//active le slidemini suivant
				jQuery('div.slidemini').eq(currentPositionMan-1)
					.animate({
						'opacity' : '1.0'
					}, "slow");
	
				currentPosition = currentPositionMan;
 			}
 		});
	function suivant(){
		// Determine la nouvelle position
		currentPositionAuto = currentPosition;
		currentPositionAuto = currentPositionAuto+1;
   
		//gerer le passage du dernier au premier slide
		if(currentPositionAuto == numberOfSlides-1){
			currentPositionAuto = 1;
			jQuery('#slideInner')
 					.css('marginLeft', '0');
		}
	
		// Fais bouger le slide
   		jQuery('#slideInner').animate({
   			'marginLeft' : slideWidth*(-currentPositionAuto)
   		},tempsTransition);

		//desactive le slidemini precedent
		jQuery('div.slidemini').eq(currentPosition-1)
			.animate({
				'opacity' : '0.4'
			}, "slow");
	
		//active le slidemini suivant
		jQuery('div.slidemini').eq(currentPositionAuto-1)
			.animate({
				'opacity' : '1.0'
			}, "slow");

		currentPosition = currentPositionAuto;
	}
	function start() {
		lectureEnCours = true;
  		interval = setInterval(suivant, tempsAttente );
	}
	function pause() {
		lectureEnCours = false;
 		clearInterval(interval);
	}

	//Si le diapo est activé 
	if(lectureAutomatique == true){
		start();
	}
	jQuery('#slidesMenuContainer').hover(function(){  
 		// Fais apparaitre le slidesMenu
		jQuery('#slidesMenu').animate({
    		'top' : '73'
   		},200);
	},function(){ 
  		jQuery('#slidesMenu').animate({
    		'top' : '148'
   		},200);
	});

	// ON MOUSE OVER
	jQuery('.slidemini').hover(function () {
		// SET OPACITY TO 100%
		jQuery(this).stop().animate({
			'opacity' : '1.0'
		}, "slow");
	},
	// ON MOUSE OUT
	function () {
		// SET OPACITY BACK TO 40%
		jQuery(this).stop().animate({
			'opacity' : '0.4'
		}, "slow");
	});
	//Crée un écouteur d'évènement de type clic sur les classes .slidemini
 	jQuery('.slidemini')
  		.bind('click', function(){
			if(lectureEnCours == true){
				TempPauseLecture = true;
				pause();
				jQuery('#slideInner')
 					.stop(true,false);		
			}

			//desactive le slidemini precedent
			jQuery('div.slidemini').eq(currentPosition-1)
				.animate({
					'opacity' : '0.4'
				}, "slow");

			currentPosition = eval(jQuery(this).attr('id'));

			//Fait bouger le slide
			jQuery('#slideInner').animate({
   	  			'marginLeft' : slideWidth*(-currentPosition)
   			},tempsTransition);

			//active le slidemini suivant
			jQuery('div.slidemini').eq(currentPosition-1)
				.animate({
					'opacity' : '1.0'
				}, "slow");

			if(TempPauseLecture == true){
				TempPauseLecture = false;
				start();		
			}
		});
});
