//Retourne la correspondance chiffrée d'une lettre
function return_correspondance(lettre){
	lettre = lettre.toLowerCase();
	var correspondances = {
								"2": ["a","b","c"],	"3": ["d","e","f"],
		"4": ["g","h","i"], 	"5": ["j","k","l"], "6": ["m","n","o"],
		"7": ["p","q","r","s"], "8": ["t","u","v"], "9": ["w","x","y","z"]
	};
	for (var cle in correspondances){
		var valeur = correspondances[cle];
		for(var i=0; i<correspondances[cle].length; i++){//On scan les lettres du chiffre en cours
			if(correspondances[cle][i]==lettre)return cle;
		}
	}
	return lettre;
}
function anim_champ(id,value,numberMax){//identifiant différencie les différentes occurences sur la page, value la correspondant lettré du numero
	//Initialisations
	var time_inter_step = 100; //temps entre deux étapes
	var time_aller = 1500; //temps d'arret au début de l'aller
	var time_retour = 1500; //temps d'arret au début du retour
	var new_value = "";
	var champ = document.getElementById(id); //Element affecté par la value
	var i = 0;
	var lettre = "";
	var chiffre = "";
	var timeLaps = 0;
	if(this["stepsArray_"+id] != undefined)var tableau_en_cours = this["stepsArray_"+id]; //dependant de l'id
	if(this["step_"+id] == undefined)this["step_"+id]=0; //Initialisation de l'étape
	champ.innerHTML = value; //On remplit deja l'element avec la valeur
	
	if(tableau_en_cours == undefined){ //Si le tableau d'étapes n'a pas encore été généré => premiere initialisations
		this["stepsArray_"+id] = new Array(); //Le tableau qui contiendra les steps
		var tableau_en_cours = this["stepsArray_"+id];
		tableau_en_cours[0] = value; //Premiere etape = value
		for(i=0;i<value.length;i++){ //Transformation en chiffre
			lettre = value.substr(i,1); //Lettre en cours
			if(i+1 <= numberMax || numberMax == undefined || numberMax == '')chiffre = return_correspondance(lettre); //Correspondance chiffrée
			else chiffre = " "; //Si le numero depasse le maximum demandé			
			//Remplacement du caractère
			tableau_en_cours[i+1] = changeCaractere(tableau_en_cours[i],i,chiffre); //on remplace le caratère
		}
		for(i=0;i<value.length;i++){ //Transformation en lettre
			lettre = value.substr(i,1); //Correspondance chiffrée
			//Remplacement du caractère
			tableau_en_cours[value.length+1+i] = changeCaractere(tableau_en_cours[value.length+i],i,lettre); //on remplace le caratère
		}
		setTimeout("anim_champ('"+id+"','')",time_aller); //On relance la fonction avec le temps de pause définit
	}
	else{
		this["step_"+id]++; //Step suivante		
		new_value = tableau_en_cours[this["step_"+id]]; //définition de la nouvelle valeur
		champ.innerHTML = new_value; //On change la valeur du champ

		if(!isNaN(tableau_en_cours[this["step_"+id]]))timeLaps = time_retour; //On marque une pause sur le chiffre
		else if(this["step_"+id]+1 == tableau_en_cours.length){ //on est a la derniere étape
			this["step_"+id]=0; //on remet les compteurs a zero !
			timeLaps = time_aller; //Définition du temps de pause
		}
		else timeLaps = time_inter_step; //temps standard entre deux étapes		
		setTimeout("anim_champ('"+id+"','')",timeLaps); //On relance la fonction  avec le temps de pause définit
	}
}
//Remplace un caractère par un autre dans une chaine
function changeCaractere(string,caraToChange,toCara){ //la string a modifier, la caractère a changer, le caractère de remplacement
	var debutChaine = "";
	var finChaine = "";
	var chaineFinal = "";
	
	debutChaine = string.substring(0,caraToChange); //Retourne le début de la chaine
	finChaine = string.substring(caraToChange+1,string.length); //Retourne la fin de la chaine
	chaineFinal = debutChaine+toCara+finChaine; //Formate la chaine finale
	
	return chaineFinal; //retourne la chaine
}
//Fonction de surcharge de l'évenement window.onload
function addLoadEvent(func)
{
   var oldonload = window.onload;
   if(typeof window.onload != 'function')
   {
      window.onload = func;
   }
   else
   {
      window.onload = function()
      {
         oldonload();
         func();
      }
   }
}