/**
*fonction qui à partir d'un code postal saisie déclenche l'action qui va remplir la 
*liste déroulante des villes. Seulement dans le cas où le pays sélectionné est la France
*@param en entrée :	- 	urlAction chaine de caractères correspondant à l'adresse transmise au framework
*						pour lancer l'action adéquate.
*@param en sortie : - renvoie 0 si le pays n'est pas la france
*/
function chargerListeVilleByCodePostal(nomFormulaire,urlAction){

	var objForm = eval('document.' + nomFormulaire);
	if(objForm.ddlpays.value=='FR' || objForm.ddlpays.value=='FR_France'){
		var valCodepostal = objForm.txtcodepostal.value;
		if(valCodepostal.length==5 && isNumerique(valCodepostal)){
			doUrl(objForm,urlAction);
		}
	}else{return false;}
}//fin chargerListeVilleByCodePostal

/**
*fonction qui submit le formulaire d'inscription à l'adresse pUrl
*@param en entrée :	- 	pUrl chaine de caractères correspondant à l'adresse transmise au framework
*/
function doUrl (objFormulaire,pUrl){
   objFormulaire.action = pUrl;
   objFormulaire.submit ();
}// fin doUrl


/**
*fonction qui valide si la variable transmise est un numérique.
*@param en entrée :	- email chaine de caractères correspondant à la variable à tester
*@param en sortie : - renvoie 1 si la variable est un numérique, sinon 0
*/
function isNumerique(chaine) {
    var exp=new RegExp("^[0-9]*$","g");
    return exp.test(chaine);
}//fin isNumerique

/**
*@author Franck PRADAL
*cette fonction permet de rendre disabled un champ dans un formulaire
*@param en entrée :	- String nomChamp correspond au nom du champ qu'il faut rendre inactif ou actif suivant le cas
*					- Int typeAction indique si le champ doit être rendu inactif (1) ou actif (0)
**/
function disabledChamp(nomChamp, typeAction, valDefaut){

	var objChamp = eval(nomChamp);
	//on vide le champ et on le rend inactif
	if(typeAction==1){
		objChamp.value=valDefaut;
		objChamp.disabled= true;
	}else{
		objChamp.disabled= false;
	}
}//fin disabledChamp

/**
*@author Franck Pradal
*cette fonction permet de contrôler que le nombre de caractères saisis dans un textarea en renvoyant un compteur
* et en bloquant la saisie si le nombre voulu maximum de caractères est atteint.
*@param en entrée :	- String nomFormulaire qui correspond au nom du formulaire
*					- String nomChampTextarea qui correspond au nom du texteara où est saisi le texte
*					- String nomChampCompteurCaracteres qui correspond au nom de l'input dans lequel est affché le nombre de caractères saisis
*					- Int valMaxCaracteres qui correspond à la taille maximale du texte saisi
*/
function controleNbCaracteresDansTextarea(nomFormulaire,nomChampTextarea, nomChampCompteurCaracteres,valMaxCaracteres){

	var inputTextarea = eval('document.'+ nomFormulaire + '.elements[nomChampTextarea]');
	var inputCompteur = eval('document.'+ nomFormulaire + '.elements[nomChampCompteurCaracteres]');
	
	var texte = inputTextarea.value;
	//on affiche la valeur du compteur de caractères
	inputCompteur.value=texte.length;

	//si la longueur dépasse le nombre maximum
	//on remet dans le textarea l'intégralité du texte ne dépassant pas cette limite
	if(texte.length>valMaxCaracteres){
		inputTextarea.value = texte.substring(0,valMaxCaracteres);
	}
}//fin controleNbCaracteresDansTextarea



//----------------------------------------------------------------------
// Traite la demande suivante 'compteCaracteres'
// Compte le nombre de caracteres que contient l'element 'element'
//
// Parametres :
//    - element : element ou identifiant de l'element
// Valeur retournee : entier
//----------------------------------------------------------------------
function compteCaracteres (element) {
   if (document.getElementById(element)) {
      element = document.getElementById(element);
   }
   if (element.nodeName.toLowerCase() == 'input'
         || element.nodeName.toLowerCase() == 'textarea') {
      // si l'element est un champs de formulaire
      return element.value.length;
   } else if (element.innerHTML) {
      // si l'element a un contenu (toutes les balises HTML)
      return element.innerHTML.length;
   } else {
      return 0;
   }
}//fin compteCaracteres



//----------------------------------------------------------------------
// Traite la demande suivante 'ajouteOption'
// Ajoute une option a l'element 'element' ou identifie par 'element'
//
// Parametres :
//    - element : element ou identifiant de l'element
//    - texte : texte de l'option
//    - valeur : value de l'option
// Valeur retournee : booleen
//----------------------------------------------------------------------
function ajouteOption (element, texte, valeur) {

   if (document.getElementById(element))
      element = document.getElementById(element);
   if (element.options) {
      element.options[element.options.length] = new Option(texte, valeur);
   }
}

function afficheMessBadCodPost(element, texte) {
	if (parent.document.getElementById(element)){
		parent.document.getElementById(element).style.display="block";
		parent.document.getElementById(element).innerHTML=texte;
	}
}



//----------------------------------------------------------------------
// Traite la demande suivante 'supprimeOption'
// Supprime les options de l'element 'element' ou identifie par 'element'
//
// Parametres :
//    - element : element ou identifiant de l'element
// Valeur retournee : booleen
//----------------------------------------------------------------------
function supprimeOption (element) {
   if (document.getElementById(element))
      element = document.getElementById(element);
   if (element.options) {
      for (var i = 0 ; i < element.options.length ; i++) {
         if (element.options[i].value != '') {
            element.options[i] = null;
            i--;
         }
      }
   }
}



//----------------------------------------------------------------------
// Traite la demande suivante 'chargerVilles'
// Actualise l'iframe 'idIFrame' avec en parametres les valeur des champs
// 'idElementCodePostal' et 'idElementPays'
//
// Parametres :
//    - idIFrame : identifiant de l'iframe
//    - idElementCodePostal : identifiant du code postal
//    - idElementPays : identifiant du pays
//    - idElementListeVilles : identifiant de la liste des villes
// Valeur retournee : booleen
//----------------------------------------------------------------------
function chargerVillesDansIFrame (idIFrame, idElementCodePostal, idElementPays, idElementListeVilles) {
   if (compteCaracteres(idElementCodePostal) >= 5
   		&& /^[0-9]{5}$/.test(document.getElementById(idElementCodePostal).value)
   	) {
      
      
      // Recuperation des valeurs des champs passes en parametres
      var codePostal = document.getElementById(idElementCodePostal).value;
//      var codePays = document.getElementById(idElementPays).value;
      var codePays = 'FR';
      var element = document.getElementById(idIFrame);
      var urlChargerVille = element.src;
			
      // Mise a jour de la source avec les parametres
      urlChargerVille = urlChargerVille.replace(/codePostal=[^&]*/, 'codePostal=' + codePostal);
      urlChargerVille = urlChargerVille.replace(/pays=[^&]*/, 'pays=' + codePays);
      urlChargerVille = urlChargerVille.replace(/element=[^&]*/, 'element=' + idElementListeVilles);
      element.src = urlChargerVille;      
   } else {
      supprimeOption(idElementListeVilles);
      return false;
   }
   return true;
} //fin chargerVillesDansIFrame

