// JavaScript Document
//version 3 nov 2008 : certaines fonctions ont été mise à jour afin de profiter de prototype

	//permet de retirer les espaces inutiles en début ou fin de chaine --- Complete prototype
	String.prototype.trim = function() {
		return this.replace(/^\s+|\s+$/g,"");
	}
	String.prototype.ltrim = function() {
		return this.replace(/^\s+/,"");
	}
	String.prototype.rtrim = function() {
		return this.replace(/\s+$/,"");
	}
	//usage : $('myfield').value.trim() == '';


	function testeChampTexte(nomChamp, metadonnee) {
		if ($F(nomChamp).length < 1) {
			alert("Merci d'indiquer " + metadonnee + ".");
			$(nomChamp).focus();
			return false;
		}
		return true;
	}
	
	function testeTailleChamp(nomChamp, tailleMin, metadonnee) {
		if ($F(nomChamp).length < tailleMin) {
			alert("Merci d'indiquer " + metadonnee + " de plus de 5 caractères.");
			$(nomChamp).focus();
			return false;
		}
		return true;
	}
	
	//vérifie qu'au moins un champ (dont le nom est transmis via le tableau) est rempli
	//-------------- not prototype agree --------------------
	//-------------- not prototype agree --------------------
	function testeAuMoinsUnChampTexte(tabNomChamp, metadonnee) {
		var i=0;
		var auMoinsUn = false;
		while (!auMoinsUn &&  i < tabNomChamp.length) {
			if (element(tabNomChamp[i]).value.length > 2) auMoinsUn = true;
			i++;
		}
		if (!auMoinsUn) {
			alert("Merci d'indiquer " + metadonnee + ".");
			element(tabNomChamp[0]).focus();
		}
		return auMoinsUn;
	}
	
	function checkMail(nomChamp) {
		$(nomChamp).value = $(nomChamp).value.trim();		//retire les espaces aux extrémités
		var filtre  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		//ou var filtre = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$/
		if (!filtre.test($F(nomChamp)))  {
			alert('Cette adresse email est incorrecte ou incomplète.');
			$(nomChamp).focus();
			return false;
		}
		return true;
	}
	
	function testeSelect(nomChamp, valParDefaut, metadonnee) {
		if ($F(nomChamp) == valParDefaut) {
			alert("Merci d'indiquer " + metadonnee + ".");
			$(nomChamp).focus();
			return false;
		}
		return true;
	}
	
	//-------------- not prototype agree --------------------
	//-------------- not prototype agree --------------------
	//-------------- not prototype agree --------------------
	function testeCheckbox(nomChamp, metadonnee) {
		var tabCheckbox = document.forms[0].elements[nomChamp];
		var auMoinsUn = false;
		var i = 0;
		while (!auMoinsUn &&  i < tabCheckbox.length) {
			if (tabCheckbox[i].checked) auMoinsUn = true;
			i++;
		}
		if (!auMoinsUn) {
			alert("Merci d'indiquer " + metadonnee + ".");
			tabCheckbox[0].focus();
		}
		return auMoinsUn;
	}
	
	//vérifie si la valeur transmise est un tableau (et non une chaine)
	function isArray() {
		if (typeof arguments[0] == 'object') {  
			var criterion = arguments[0].constructor.toString().match(/array/i);
			return (criterion != null);  
		}
		return false;
	}
	
	//vérifie si au moins une case à cocher parmi plusieurs est cochées
	//-------------- not prototype agree --------------------
	function verfieCheckbox(tabCheckbox, metadonnee) {
		var auMoinsUn = false;
		var estTableau;
		var i = 0;
				
		while (!auMoinsUn &&  i < tabCheckbox.length) {			
			//d'abord déterminer si c'est un tableau
			var taille = tabCheckbox[i].length;
			if (tabCheckbox[i].substring(taille-1, taille) == "]") {
				//c'est un tableau
				var j = 0;
				var tabCB = document.forms[0].elements[tabCheckbox[i]];
								
				while (!auMoinsUn &&  j < tabCB.length) {
					auMoinsUn = tabCB[j].checked;
					j++;
				}
			} else	//ça n'est pas un tableau
				auMoinsUn = element(tabCheckbox[i]).checked;
				
			i++;
		}
		return auMoinsUn
	}
	
	function isNumeric(value) {
		var regExp = new RegExp(/^[-]?\d*\.?\d*$/);		//nombre à virgule
		//var regExp = new RegExp(/^\d*$/);				//entier naturel
 		if (value == null || !value.toString().match(regExp)) return false;
 		return true;
	}
	
	//vérifie s'il s'agit d'une valeur numérique
	function testeNumerique(nomChamp, metadonnee) {
		if (!isNumeric($F(nomChamp))) {
			alert("Merci d'indiquer une valeur numérique pour " + metadonnee + ".")
			$(nomChamp).focus();
			return false;
		}
		return true;
	}