/***********************************************************
Scripts de gestion du scroll des familles de véhicules dans
la gamme.
Créé le 15 avril 2008 par JPA
************************************************************/

var id_interval;						// identifiant du setInterval(). Valeur déterminée par le script
var delta_dep 				= 0;		// valeur d'incrément de déplacement en pixel. déterminée par le script
var delai					= 50;		// délai d'exécution pour le setInterval (à changer pour ralentir ou accélérer le scroll
var tailleConteneur			= 570;		// taille du <div> contenant le bloc à déplacer.
var limiteIncAcceleration	= 16;		// On ne déplace pas le bloc de plus de limiteIncAcceleration pixels
var incAcceleration			= 1;		// incrément de l'accélération
var mouvement				= false;	// détermine si le bandeau est en mouvement (true) ou non (false)


// recupererStyle(idBloc)
// Cette fonction récupère et retourne l'objet style associé à un HTMLElement
// dont le nom est passé en paramètre
function recupererStyle(idBloc) { 
	if (document.getElementById) {
		return document.getElementById(idBloc).style;
	} else if (document.all) {
		return document.all[idBloc].style;
	} else if (document.layers) {
		return document.layers[idBloc];
	} else return null
}


// function initInterval()
// Cette fonction interrompt le mouvement et supprime l'information de mouvement.
function initInterval() {
	window.clearInterval(id_interval);
	delta_dep = 0;
	id_interval = undefined;
	mouvement = false;
}



// Fonctions de lancement de déplacement.
// Il s'agit des gestionnaires des événements onmouseover et onmouseout ou tout autre
// événement à utiliser.
// Chaque fonction reçoit l'identifiant du bloc à translater ainsi que le sens de translation
// - droite (true) ou gauche (false)
// La fonction deplacerBloc lance le déplacement et la fonction arreterBloc stoppe le déplacement.
// IMPORTANT : Le style 'position' du bloc à translater doit être relative ou absolute.
function deplacerBloc(idBloc, sens) {
	if(mouvement) initInterval();
	mouvement = true;
	id_interval = window.setInterval("translaterBloc('"+idBloc+"', "+sens+", true)", delai);
}

function arreterBloc(idBloc, sens) {
	window.clearInterval(id_interval);
	id_interval = window.setInterval("translaterBloc('"+idBloc+"', "+sens+", false)", delai);
}




// translaterBloc(idBloc, sens, augmentation)
// Cette fonction reçoit l'identifiant d'un bloc à translater horizontalement, le sens
// dans lequel translater le bloc - droite (true) ou gauche (false) - et l'information
// d'accélération - accélération de la translation (true) ou décélération (false)
// Elle calcule le déplacement à appliquer au bloc ad hoc et change sa position.
function translaterBloc(idBloc, sens, augmentation) {
	// Récupérer le style du bloc pour la détermination de la position
	var bs = recupererStyle(idBloc);
	var dep = 0;
	var deplacer = true;
	// Calculer la nouvelle position du bloc à translater en fonction du delta_dep
	if (sens) {
		dep = parseInt(bs.left)-delta_dep;
		// On ne déplace pas le bloc vers la gauche si la limite droite est atteinte
		if (dep <= (tailleConteneur-parseInt(bs.width))) deplacer = false;
	}else{
		dep = parseInt(bs.left)+delta_dep;
		// Inversement, on ne déplace pas le bloc vers la droite si la limite gauche est atteinte
		if (dep >= 0) deplacer = false;
	}
	// Repositionner le bloc uniquement si le bloc n'est pas arrivé à une limite (droite ou gauche)
	if (deplacer) {
		bs.left = dep+'px';
	} else {
		// Si on est à une limite, on annule le déplacement (clearInterval)
		delta_dep = 0;
		initInterval();
	}
	// Calculer la nouvelle valeur de delta_dep
	if (augmentation) {
		// Si on est en phase de déplacement (accélération du déplacement)
		// On augmente l'incrément de l'accélération de 1 jusqu'à la limite de 16
		if (delta_dep < limiteIncAcceleration) delta_dep+=incAcceleration;
	} else {
		// Si on est en phase d'arrêt du déplacement (décélération du déplacement)
		if (delta_dep > 0) {
			delta_dep-=incAcceleration;
		} else {
			initInterval();
		}
	}
}





