/* Validation de l'écran 4 par javascript*/
function validationForm(onglet){
	
	var bValid = true;
	
	if (onglet == "vousB") {
		bValid = validerVous();
		
	} else if (onglet == "conjointB") {
		bValid = validationConjoint();
		
	} else if (onglet == "enfantB") {
		bValid = validationEnfant();
		
	} else if (onglet == "banqueB") {
		bValid = validationBanque();
		
	} else {
		bValid = false;
	}
	
	return bValid;
}

/* --- validation de l'onglet Adherent de l'écran 4 */
function validerVous(){
	
	var bValid = true;
    var focusField = null;
	var idSituation = document.getElementById("situationAdherent").selectedIndex;	
	var regimeAdherent = document.getElementById("roAdherent").selectedIndex;
	
	var nniValue = document.getElementById("nniAdherent").value;
	var cleValue =  document.getElementById("cleAdherent").value;
	
	if(document.getElementById("nomAdherent").value == "") {
		alert("Le nom de l'adh\u00e9rent est obligatoire.");
		focusField = document.getElementById("nomAdherent");
    	focusField.focus();
		bValid = false;
		
	} else if(document.getElementById("prenomAdherent").value == "") {
		
		alert("Le pr\u00e9nom de l'adh\u00e9rent est obligatoire.");
		focusField = document.getElementById("prenomAdherent");
    	focusField.focus();
		bValid = false;
		
	} else if((document.getElementById("jrDateAdherent").value == "") || !(isDayValid(document.getElementById("jrDateAdherent").value))) {
		if (document.getElementById("jrDateAdherent").value == "") {
			alert("Le jour de naissance de l'adh\u00e9rent est obligatoire.");
		} else {
			alert("Le jour de naissance de l'adh\u00e9rent est invalide");
		}
		
		focusField = document.getElementById("jrDateAdherent");
    	focusField.focus();
		bValid = false;
		
	} else if ((document.getElementById("moisDateAdherent").value == "")|| !(isMonthValid(document.getElementById("moisDateAdherent").value))) {
		if (document.getElementById("moisDateAdherent").value == "") {
			alert("Le Mois de naissance de l'adh\u00e9rent est obligatoire.");
		} else {
			alert("Le Mois de naissance de l'adh\u00e9rent est invalide");
		}

		focusField = document.getElementById("moisDateAdherent");
    	focusField.focus();
		bValid = false;
		
	} else if ((document.getElementById("anneeDateAdherent").value == "")|| !(isYearValid(document.getElementById("anneeDateAdherent").value))) {
		if (document.getElementById("anneeDateAdherent").value == "") {
			alert("Ann\u00e9e de naissance de l'adh\u00e9rent est obligatoire.");
		} else {
			alert("Ann\u00e9e de naissance de l'adh\u00e9rent est invalide");
		}

		focusField = document.getElementById("anneeDateAdherent");
    	focusField.focus();
		bValid = false;
		
	}  else if(document.getElementById("situationAdherent").options[idSituation].value == "") {
		
		alert("La situation de l'adh\u00e9rent est obligatoire.");
		focusField = document.getElementById("situationAdherent");
    	focusField.focus();
		bValid = false;
		
	} else if(document.getElementById("roAdherent").options[regimeAdherent].value == "") {
		
		alert("Le r\u00e9gime RO de de l'adh\u00e9rent est obligatoire.");
		bValid = false;
		

	} else if (!(isSecurityNumberValid(nniValue, cleValue))){
		alert("Le num\u00e9ro de s\u00e9curit\u00e9 sociale est invalide");
		focusField = document.getElementById("nniAdherent");
		focusField.focus();
		bValid = false;
	
	} else if(document.getElementById("telephoneAdherent").value == "") {
		
		alert("Le num\u00e9ro de t\u00e9l\u00e9phone de l'adh\u00e9rent est obligatoire.");
		focusField = document.getElementById("telephoneAdherent");
		focusField.focus();
		bValid = false;	



	} else if (!validateZIP(document.getElementById("codePostalAdherent").value)){
           focusField = document.getElementById("codePostalAdherent");
		   focusField.focus();
           bValid = false;		

	} else if(document.getElementById("emailAdherent").value != "") {
		
        if (!validerAdrMail(document.getElementById("emailAdherent").value)){
           alert("Adresse Mail non valide");
           focusField = document.getElementById("emailAdherent");
		   focusField.focus();
           bValid = false;		
		}

	} else if(document.getElementById("emailAdherent").value == "") {
		
		alert("Adresse Mail de l'adh\u00e9rent est obligatoire.");
		focusField = document.getElementById("emailAdherent");
		focusField.focus();
		
		bValid = false;		
	} 
	
	//focusField.focus();
	return bValid;
}

// --- Valider de cohérence du numero de sécurité social(nni + cle) 
function isSecurityNumberValid(nni,cle){	
	return callAjax(nni,cle);
}

// --- Valider de cohérence du mois saisie 1<mois<12 
function isMonthValid(vmois){

	if (((isNaN(vmois))||(vmois<1)||(vmois>12))) {
		return false;
	} else {
		return true;
	}
}

function isDayValid(vjour){

	if (((isNaN(vjour))||(vjour<1)||(vjour>31))) {
		return false;
	} else {
		return true;
	}
}

function isYearValid(vannee){

    var amin=1900; // année mini
    var amax=2008; // année maxi

	if (((isNaN(vannee))||(vannee<amin)||(vannee>amax))) {
		return false;
	} else {
		return true;
	}
}

// --- Fonction pour valider un champs mail
function validerAdrMail(mailteste)
{
	var reg = new RegExp('^[A-z0-9._%-]+@[A-z0-9.-]+\.[A-z]{2,4}$', 'i');
	if(reg.test(mailteste))
	{
		return(true);
	}
	else
	{
		return(false);
	}
}
	
// --- Fonction pour valider les champs obligatoire de l'onglet Conjoint de l'ecran saisie des informations
function validationConjoint(){
	var bValid = true;
	
    var focusField = null;
 
    // Récupération de l'index de la liste des régimes obligatoires pour un conjoint 
    //var conjointRO = document.getElementById("conjointro").selectedIndex;	
  
    if(document.getElementById("nomConjoint").value == "") {
		alert("Le nom du conjoint est obligatoire.");
		focusField = document.getElementById("nomConjoint");
    	focusField.focus();
		bValid = false;
		
	} else if (document.getElementById("prenomConjoint").value == "") {
	
		alert("Le pr\u00e9nom du conjoint est obligatoire.");
		focusField = document.getElementById("prenomConjoint");
    	focusField.focus();
		bValid = false;
	} else if ((document.getElementById("jrsNaissanceConjoint").value == "") || (document.getElementById("moisNaissanceConjoint").value == "") || (document.getElementById("anneeNaissanceConjoint").value == "") ) {
	
		alert("La date de naissance du conjoint est obligatoire.");
		focusField = document.getElementById("jrsNaissanceConjoint");
    	focusField.focus();
		bValid = false;
	} else if (document.getElementById("situationConjoint").value == "") {
	
		alert("La situation du conjoint est obligatoire.");
		focusField = document.getElementById("situationConjoint");
    	focusField.focus();
		bValid = false;
	} else if ((document.getElementById("conjointnni").value == "")&&((!document.getElementById('rattachementAdherent').checked))) {
	
		alert("Le num\u00e9ro de s\u00e9curit\u00e9 social du conjoint est obligatoire.");
		focusField = document.getElementById("conjointnni");
    	focusField.focus();
		bValid = false;
	} else if((document.getElementById("conjointro").value == "")&&((!document.getElementById('rattachementAdherent').checked))) {
	
		alert("Le r\u00e9gime obligatoire du conjoint est obligatoire.");
		focusField = document.getElementById("conjointro");
    	focusField.focus();
		bValid = false;
	} 
	
	return bValid;
}

// --- Fonction pour valider les champs obligatoire de l'onglet Enfant de l'ecran saisie des informations
function validerEnfant(){
	var bValid = true;
    var focusField = null;
	return true
}

// --- Fonction pour valider les champs obligatoire de l'onglet Banque de l'ecran saisie des informations
function validationBanque(){
	var bValid = true;
    var focusField = null;

 if (!document.getElementById('titulaireCompte').checked) {	
	if (document.getElementById("nomTitulaireCompte").value == "") {
		alert("Le Nom du titulaire du compte est obligatoire.");
		focusField = document.getElementById("nomTitulaireCompte");
    	focusField.focus();
		bValid = false;

    } else if (document.getElementById("prenomTitulaireCompte").value == "") {
	
		alert("Le Pr\u00e9nom du titulaire du compte est obligatoire.");
		focusField = document.getElementById("prenomTitulaireCompte");
    	focusField.focus();
		bValid = false;
	
	} 
		
  }	
	return bValid
}

// --- Validation de l'onglet Adherent par javascript
function validerAdherent(onglet) {
	var isValid = false;
	if (validationForm(onglet)) {
		conjointB = showParagraph('conjointB');
		isValid = true;
	} else {
		isValid = false;
	}	
	return isValid;
}	

// --- Validation de l'onglet du conjoint par javascript
function validerConjoint(onglet) {
	var isValid = false;	
	if (validationForm(onglet)) {
		enfantB = showParagraph('enfantB');
		isValid = true;
	} else {
		isValid = false;
	}	
	return isValid;
}	

// --- Validation de l'onglet de l Enfant par javascript
function validerEnfant(onglet) {
	var isValid = false;
	
	if (validationForm(onglet)) {
		banqueB = showParagraph('banqueB');
		isValid = true;
	} else {
		isValid = false;
	}	
	return isValid;
}

// --- Validation de l onglet Vos données bancaires  par javascript
function validerBanque(onglet) {
	var isValid = false;
	
	if (validationForm(onglet)) {		
		isValid = true;
	} else {
		isValid = false;
	}	
	return isValid;
}

// --- Validation du champ Jour d une date  par javascript
function validerJourAdh(vjour,idChamp) {
	var isValid = true;
	var focusField = null;
     if  ((isNaN(vjour))||(vjour<1)||(vjour>31))  {
         alert("Le jour n'est pas correct."); 
       	 focusField = document.getElementById(idChamp);
         focusField.focus();
         isValid = false;
      }	else {
      	  isValid = true;
      }	
	return isValid;
}

// --- Validation du champ Mois d une date  par javascript
function validerMoisAdh(vmois,idChamp) {
	var isValid = true;
	var focusField = null;
    if ((isNaN(vmois))||(vmois<1)||(vmois>12))  {
         alert("Le mois n'est pas correct."); 
         focusField = document.getElementById(idChamp);
         focusField.focus();
         isValid = false;
      }
	return isValid;
}

// --- Validation du champ Année d une date  par javascript
function validerAnneeAdh(vannee,idChamp) {

    var amin=1850; // année mini
    var amax=2050; // année maxi
	var focusField = null;
	var isValid = true;
		
    	if ((isNaN(vannee))||(vannee<amin)||(vannee>amax))  {
         alert("Ann\u00e9e n'est pas correcte."); 
         focusField = document.getElementById(idChamp);
         focusField.focus();
         isValid = false;
      }
	return isValid;
}

// --- fonctionpour prendre le focus au niveau d1 champs
function getFocus(zone) {
	focusField = document.getElementById(zone);
    focusField.focus();
}

// --- fonctionpour pour un format Mask de tel.
function mask(f){
	tel='';
	
	
	var val =f.value.split('');
	
	if (val.length == 10) {
		for(var i=0;i<val.length;i++){
		if(i==0){val[i]=val[i]}
		if(i==1){val[i]=val[i]+'.'}
		if(i==3){val[i]=val[i]+'.'}
		if(i==5){val[i]=val[i]+'.'}
		if(i==7){val[i]=val[i]+'.'}
		tel=tel+val[i]
		}
		f.value=tel;
	} 
	
}

// --- fonction pour passer au champs suivant apres un nbr de carrac fixe
function suivant(enCours, suivant, limite)  {
  if (enCours.value.length == limite) {
     if (document.all){
     	//IE
     	document.getElementById(suivant).focus;
     } else {
        //FireFox
        document.devisForm[suivant].focus();
     } 		
  }   
}

// --- fonction pour valider Zip Code
function validateZIP(field) {

  var valid = "0123456789-";
  var hyphencount = 0;
	
  if (field.length!=5 && field.length!=10) {
  	alert("Entrer 5 chiffres du code postal.");
	   return false;
	   this.focus();
  }
  for (var i=0; i < field.length; i++) {
	temp = "" + field.substring(i, i+1);
	if (temp == "-") hyphencount++;
	
	if (valid.indexOf(temp) == "-1") {
		alert("Caracteres non valide dans le Code Postal.");
		return false;
		this.focus();
	}
	if ((hyphencount > 1) || ((field.length==10) && ""+field.charAt(5)!="-")) {
		alert("Le caractère trait d'union doit être utilis\u00e9 avec un format ad\u00e9quat, ex :'12345-6789'.");
		return false;
		this.focus();
	}
  }
  return true;
}

 // --- VAlidation des champs d'information du conjoint : lorsque une valeur et saisie obligatoirement le autres doivent l'être 
function validationCoditionnel(annee,mois,jr,ro,flag) {
	var bValid = false;   
    var annee = document.getElementById(annee).value;
    var mois = document.getElementById(mois).value;
    var jours = document.getElementById(jr).value;
    var ro = document.getElementById(ro);
    /** Index de l'option selectionnée de la liste des régimes obligatoire*/
    var s1 = ro.selectedIndex;
    /** Valeur de l'option selectionnée de la liste des régimes obligatoire*/
    var value = ro.options[s1].value;
  	
  	/** Tester si tous les champs du conjoint sont renseignés alors on prcéde à la validation de ces champs sinon on 
  	*	On affiche un alert qui demande de compléter la saisie
  	*/
    if (annee != '' && mois != '' && jours != '' && value != '') {
    	bValid = validerCjt(annee,mois,jours);
    	
    	
    } else if (annee != '' || mois != '' || jours != '' || value != '') {
    	if (flag == 'enfant') {
    		alert("Compl\u00e9ter les informations de l'enfant..!");
    	} else {
    		alert('Compl\u00e9ter les informations du conjoint..!');
    	}
    	
    	bValid = false;
    }else {
    	bValid = true;
    }
    return bValid;
}

// --- Validation de la date de naissance du conjoint
function validerCjt(annee,mois,jours) {
	return validerJourAdh(jours,'jrNaissanceCjt') && validerMoisAdh(mois,'moisNaissanceCjt') && validerAnneeAdh(annee,'anneeNaissanceCjt');
}

function isDate(d) {
  // Cette fonction permet de vérifier la validité d'une date au format jj/mm/aa ou jj/mm/aaaa
   
  if (d == "") // si la variable est vide on retourne faux
    return false;
  
  e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$");
  
  if (!e.test(d)) // On teste l'expression régulière pour valider la forme de la date
    return false; // Si pas bon, retourne faux

  // On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
  j = parseInt(d.split("/")[0], 10); // jour
  m = parseInt(d.split("/")[1], 10); // mois
  a = parseInt(d.split("/")[2], 10); // année

  // Si l'année n'est composée que de 2 chiffres on complète automatiquement
  if (a < 1000) {
    if (a < 89)  a+=2000; // Si a < 89 alors on ajoute 2000 sinon on ajoute 1900
    else a+=1900;
  }

  // Définition du dernier jour de février
  // Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
  if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
  else fev = 28;

  // Nombre de jours pour chaque mois
  nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);

  // Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
  return ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] );
}

// Fonction qui n'autorize que la saisie des nombres
function test(champ) {
   if(isNaN(champ.value)) {
      alert("Seul les nombres sont autoris\u00e9s...!!!");
      champ.value='';
      champ.focus();          
      return false
   } else return true
}

// Fonction qui teste la validité du code NNI
function testNNI(champNNI,cleNNI,affectation) {
    var nb  = champNNI.value;
    var nb1 = 97 - (nb - Math.floor(nb / 97) * 97); 
      if((champNNI.value.length==13)&&(test(champNNI))){ 
         affectation.value=nb1;
       } else{
          cleNNI.value='';
          champNNI.focus();
    }
}

// Fonction d'auto-Navigation au champ suivant
function autotab(box, longueur, texte)
{
    if (texte.length > longueur-1) {
        document.getElementById(box).focus();
    }
}

// Fonction qui teste la validité du Jour
function testValidSaisiDay(champ)
{
    if ((champ.value !='')&& (test(champ))) {
        if(!isDayValid(champ.value)){
           alert('Jour invalide...!');
           champ.value='';
           champ.focus();
        } 
    }
}
// Fonction qui teste la validité du Mois
function testValidSaisiMonth(champ)
{
    if ((champ.value !='')&& (test(champ))) {
        if(!isMonthValid(champ.value)){
           alert('Mois invalide...!');
           champ.value='';
           champ.focus();
        } 
    }
}
// Fonction qui teste la validité de l'année
function testValidSaisiYear(champ)
{
    if ((champ.value !='')&& (test(champ))) {
        if(!isYearValid(champ.value)){
           alert('Ann\u00e9e invalide...!');
           champ.value='';
           champ.focus();
        } 
    }
}

