﻿function slideshow(containerId, btnPreviousId, btnNextId, nb, width, vitesseMax, vitesseMin, elasticite, distance, rand) {

	this.containerId = containerId;
	this.btnPreviousId =  btnPreviousId;
	this.btnNextId = btnNextId;
	this.nbNouvelles = nb;								
	this.widthNouvelle = width;							
	this.vitesseDefault = vitesseMax;				
	this.vitesseMinDefault = vitesseMin;		
	this.elasticiteDefault = elasticite;
	this.distanceDeplacementDefault = distance;
	this.posX = 0;										
	this.posFinal = 0;								
	this.onTransition = false;						
	this.rand = rand;				
		
	if(this.rand == 1) {
		this.currentNouvelle = Math.floor(Math.random() * nb);
		if(this.currentNouvelle > (this.nbNouvelles - this.distanceDeplacementDefault)) {
			this.currentNouvelle = this.nbNouvelles - this.distanceDeplacementDefault;
		}
		this.posX = this.widthNouvelle * this.currentNouvelle * -1;
		document.getElementById(this.containerId).style.left = this.posX + "px";
	}else {
	    // this.currentNouvelle = 0; 	version classique
	        // version corroussel
	    this.currentNouvelle = 3;
	    this.posX = this.widthNouvelle * 3 * -1;
	    this.posFinal = 6;
	    // fin version carroussel
	}

	checkBtns(this.currentNouvelle, this.nbNouvelles, this.distanceDeplacementDefault, this.containerId, this.btnPreviousId, this.btnNextId, this);
};

function startSlideShow(sens, params){
	var divRef = document.getElementById(params.containerId);
	divRef.cbpParams = params;
	next(sens, params, divRef);
};

function next(sens, obj, divRef){

	var anim = false;
	var nextCurrentNouvelle = 0;
	var vitesse = obj.vitesseDefault;
	var distanceDeplacement = obj.distanceDeplacementDefault;
	var posX = obj.posX;
	var posFinal = obj.posFinal;
	var holder = obj.containerId;
	var width = obj.nbNouvelles * obj.widthNouvelle;
	divRef.style.width = width+"px";
	
	if(obj.onTransition == false){
		if(sens == -1){
			posFinal = sens * ((obj.widthNouvelle * obj.distanceDeplacementDefault) + Math.abs(posX));
			nextCurrentNouvelle = (obj.currentNouvelle + obj.distanceDeplacementDefault);
			if( (nextCurrentNouvelle + obj.distanceDeplacementDefault) > obj.nbNouvelles)
				posFinal = sens * ((obj.widthNouvelle * (obj.nbNouvelles-nextCurrentNouvelle)) + Math.abs(posX));
			if( (obj.nbNouvelles-nextCurrentNouvelle) < obj.distanceDeplacementDefault){
				vitesse = (obj.nbNouvelles-nextCurrentNouvelle) * (obj.vitesseDefault/obj.distanceDeplacementDefault);
				distanceDeplacement = obj.nbNouvelles-nextCurrentNouvelle;
			}else{
				vitesse = obj.vitesseDefault;
				distanceDeplacement = obj.distanceDeplacementDefault;
			}
			
			if(obj.currentNouvelle == (obj.nbNouvelles - obj.distanceDeplacementDefault))
				anim = false;
			else
				anim = true;
				
		}else if(sens == 1){
			var posFinal = sens * ((obj.widthNouvelle * obj.distanceDeplacementDefault) + posX);
			var nextCurrentNouvelle = (obj.currentNouvelle - obj.distanceDeplacementDefault);
			if( nextCurrentNouvelle < 0 && nextCurrentNouvelle > (obj.distanceDeplacementDefault * -1) ){
				posFinal = 0;
				distanceDeplacement = obj.distanceDeplacementDefault + nextCurrentNouvelle;
				vitesse = (obj.distanceDeplacementDefault + nextCurrentNouvelle) * (obj.vitesseDefault/obj.distanceDeplacementDefault);
				anim = true;
			}else if(obj.currentNouvelle == 0 || nextCurrentNouvelle == (obj.distanceDeplacementDefault * -1) ){
				anim = false;
			}
			else{
				distanceDeplacement = obj.distanceDeplacementDefault;
				vitesse = obj.vitesseDefault;
				anim = true;
			}
		}
		if(anim)
			slide(obj.containerId, obj.btnPreviousId, obj.btnNextId, posX, posFinal, vitesse, sens, distanceDeplacement);
	}
};

function slide(containerId, btnPreviousId, btnNextId, x1, x2, vitesse, sens, distanceDeplacement) {
	
	var holder = document.getElementById(containerId);
	holder.cbpParams.onTransition = true;
	if (sens == -1 && x1 > x2) {
		x1 -= vitesse;
		var nouvVitesse = Math.round(vitesse/holder.cbpParams.elasticiteDefault);
		if(nouvVitesse <= holder.cbpParams.vitesseMinDefault)
			vitesse = holder.cbpParams.vitesseMinDefault;
		else
			vitesse = nouvVitesse;
		if(x1 > x2)
			holder.style.left = Math.round(x1)+"px";
		else
			holder.style.left = x2+"px";
		window.setTimeout("slide('"+ containerId +"','"+btnPreviousId+"','"+btnNextId+"',"+x1+","+x2+","+vitesse+","+sens+","+distanceDeplacement+")", 50);
	}
	else if (sens == 1 && x1 < x2) 
	{

		x1 += vitesse;
		var nouvVitesse = Math.round(vitesse/holder.cbpParams.elasticiteDefault);
		if(nouvVitesse <= holder.cbpParams.vitesseMinDefault)
			vitesse = holder.cbpParams.vitesseMinDefault;
		else
			vitesse = nouvVitesse;
		if(x1 < x2)
			holder.style.left = Math.round(x1)+"px";
		else
			holder.style.left = x2+"px";
 	        window.setTimeout("slide('"+ containerId +"','"+btnPreviousId+"','"+btnNextId+"',"+x1+","+x2+","+vitesse+","+sens+","+distanceDeplacement+")", 50);
    }
    else
	{
	
		holder.cbpParams.posX = x2;
		if(sens == -1)
			holder.cbpParams.currentNouvelle += distanceDeplacement;
		else
			holder.cbpParams.currentNouvelle -= distanceDeplacement;
		if(holder.cbpParams.currentNouvelle > holder.cbpParams.nbNouvelles)
			holder.cbpParams.currentNouvelle = holder.cbpParams.nbNouvelles;
		holder.cbpParams.onTransition = false;
		checkBtns(holder.cbpParams.currentNouvelle, holder.cbpParams.nbNouvelles, holder.cbpParams.distanceDeplacementDefault, containerId, btnPreviousId, btnNextId, holder.cbpParams);
	}
};

function checkBtns(currentNouvelle, nbNouvelles, distanceDeplacement, slider, btn1, btn2, cbParams ){
	
	btnPrevious = document.getElementById(btn1);
	btnNext = document.getElementById(btn2);

	var prevClass = btnPrevious.className;
	var nextClass = btnNext.className;
	
	if(slider=="decouvrir-inner") {
		if(currentNouvelle <= 0){
			btnPrevious.parentNode.style.display = "none";
			btnNext.parentNode.style.display = "inline";
		}else if(currentNouvelle >= (nbNouvelles - distanceDeplacement)){
			btnNext.parentNode.style.display = "none";
			btnPrevious.parentNode.style.display = "inline";
			// pour carroussel
			btnPrevious.parentNode.style.display = "none";
			btnNext.parentNode.style.display = "inline";
			document.getElementById(slider).style.left = "0px"
			cbParams.currentNouvelle = 0; 	// valeur était 0 ici
			cbParams.posX = 0 // nouveau pour carroussel
			cbParams.posFinal = 3;  // nouveau pour carroussel
			
			// fin carroussel
		}else {
		    //btnPrevious.parentNode.style.display = "inline"; // versin classique
			btnPrevious.parentNode.style.display = "none"; // version carroussel
			btnNext.parentNode.style.display = "inline";
		}
		
		position_text = document.getElementById("decouvrir-position");
		if(currentNouvelle >= (nbNouvelles - distanceDeplacement)){
			posNouvelle = nbNouvelles - distanceDeplacement + 1;
		}else {
			posNouvelle = parseInt(currentNouvelle) + 1;
		}
		posLastNouvelle = parseInt(currentNouvelle + distanceDeplacement);
/* Commenté par Alain pour cacher les 1 à 6 de X
		position_text.innerHTML = posNouvelle + " à " + posLastNouvelle;
		position_text.innerHTML += " de " + nbNouvelles;*/
	
	}else{
		
		if(currentNouvelle <= 0){
			btnPrevious.className = "prec-off";
			btnNext.className = "next";
		}else if(currentNouvelle >= (nbNouvelles - distanceDeplacement)){
			btnPrevious.className = "prec";
			btnNext.className = "next-off";
		}else{
			btnPrevious.className = "prec";
			btnNext.className = "next";
		}
	}
}





