/*  Fonctions de manipulation des objets HTML */

// Se positionne sur une option d'un select en fonction d'une valeur
function setSelectValue(objSource, objValue) {
	for (var iSource = 0; iSource < objSource.options.length; iSource++) {
		if (objSource.options[iSource].value == objValue) {
			objSource.selectedIndex = iSource;
			break;
		}
	}
}


// Focus automatique sur le champ suivant (date de naissance)
function autoFocus(aEvent, obj, objNext) {
	var numTouche = 0;
	var myEvent = aEvent ? aEvent : window.event;
	numTouche = myEvent.keyCode;
  
	// keyCode de Tab et Crtl+Tab 
	if (numTouche != 16 && numTouche != 9) {
		if (obj.maxLength == obj.value.length) {
			objNext.focus();
		}
	}
}

// Cocher tout/Décocher tout
function checkAll (chk, on) {
	formElements = document.getElementsByName(chk);
	for(i=0; i<formElements.length; i++)
	  	formElements[i].checked = on;
}


// sélectionne le bouton radio associé
// objElement est la concaténation de l'id et value du bouton radio
function radioOnClick(objForm, objElement) {
	for (var iElement = 0; iElement < objForm.elements.length; iElement++) {
	  if (objForm.elements[iElement].name + "_" + objForm.elements[iElement].value == objElement)
    	objForm.elements[iElement].checked = true;
	}
}


// Suppression des espaces dans une chaîne
function trimString(str) {
	return str.replace(/ /g, "");
}


/* ajouterListeErreurs V2.1
 * Création d'une liste d'erreurs HTML. 
 * Obligé de passer le "div" en paramètre car la fonction n'étant pas dans le HTML, l'objet document
 * n'est pas reconnu et un "document.getElementById" planterait...
 * Nouveauté : on peut passer des listes en paramètre, ou juste des String
 */
function ajouterListeErreurs(divErreur, listeTitres, listeListes) {
	// On ajoute la liste des erreurs dans le divErreur
	if ( (divErreur) && (listeListes.length!=0) ) {

		var i = 0;
		var nbListes = 1;
		
		/*  Si listeTitres n'est pas une liste mais juste une String, on va la faire se comporter
		 *  comme une liste d'un seul élément, pour avoir un comportement homogène */ 
		if ( (typeof(listeTitres) == "string") || (typeof(listeTitres) == "String") ) {
			var liste = new Array();
			liste[0] = listeTitres;
			listeTitres = liste;
		}
		else
			nbListes = listeTitres.length;
		
		for (i=0; i<nbListes; i++) {
			// Création du titre en h4 si la liste d'erreurs n'est pas vide
			if (listeListes[i] != "") {
				var monTitre = document.createElement("h4");
				var monTexte = document.createTextNode(listeTitres[i]);
				monTitre.appendChild(monTexte);
				divErreur.appendChild(monTitre);
		
				// Création de la liste en ul/li
				var tabErreurs = "";
				if(nbListes != 1)
					tabErreurs = listeListes[i].split("\n");
				else
					tabErreurs = listeListes.split("\n");
				var j = 0;
				var maListe = document.createElement("ul");
				maListe.setAttribute("class", "listeErreurs");
				while (tabErreurs[j]) {
					monItem = document.createElement("li");
					monTexte = document.createTextNode(tabErreurs[j]);
					monItem.appendChild(monTexte);
					maListe.appendChild(monItem);
					j++;
				}
				divErreur.appendChild(maListe);
			}
		}
		divErreur.style.display = "block";
		
		//divErreur.innerHTML = divErreur.innerHTML;
	}
}

// Vider la liste d'erreurs HTML
function viderListeErreurs(divErreur) {
	// On ajoute la liste des erreurs dans le divErreur
	if (divErreur) {
		// Réinitialiser le contenu du divErreur
		divErreur.innerHTML = "";
	}
}

// Création d'une erreur HTML
function afficherErreur(divErreur, titre, lib) {
	if (divErreur) {
		divErreur.innerHTML = "<h4>" + titre + "</h4>" + lib;
		divErreur.style.display = "block";
	}
}

function showHide(id) {
	if (document.getElementById(id)) {
		var obj = document.getElementById(id);
		if (obj.style.display == "none")
			obj.style.display = "block";
		else
			obj.style.display = "none";
	}
}