<!--
function twValide(nForm,varValid) {
  var CbMess = "";
  var CbCkOk = false;
  var msg = "";
  for (fieldToValid in varValid) {
    switch (nForm.elements[fieldToValid].type) {
      case 'select-one' :
        if (nForm.elements[fieldToValid].selectedIndex == 0) {
          msg += "<br>" + varValid[fieldToValid];
        }
		break;
      case 'select-multiple' :
        if (nForm.elements[fieldToValid].selectedIndex < 0) {
          msg += "<br>" + varValid[fieldToValid];
        }
        break;
      case 'text' :
        if (nForm.elements[fieldToValid].value == '') {
          msg += "<br>" + varValid[fieldToValid];
        }
        break;
      case 'hidden' :
        if (nForm.elements[fieldToValid].value == '') {
          msg += "<br>" + varValid[fieldToValid];
        }
        break;
      case 'textarea' :
        if (nForm.elements[fieldToValid].value == '') {
          msg += "<br>" + varValid[fieldToValid];
        }
        break;
      case 'password' :
        if (nForm.elements[fieldToValid].value == '') {
          msg += "<br>" + varValid[fieldToValid];
        }
        break;
      case 'checkbox' :
	    if (CbCkOk == false) {
          if (nForm.elements[fieldToValid].checked) {
            CbCkOk = true;
            CbMess = "";
          }
          if (CbCkOk == false) {
            CbMess = "<br>" + varValid[fieldToValid];
          }
		}
    } 	
  }
  
  return msg + CbMess;
} // twValide()

function twValide_radio(nForm,rbValid) {
  var radioGroup = nForm.elements[rbValid["nom"]];
  var nbButtons  = radioGroup.length;
  var ret        = "<br>" + rbValid["msg"];
  for (var i = 0 ; i < nbButtons ; i++) {
    if (radioGroup[i].checked) {
	  ret = "" ;
	  break ;
	}
  }
  return(ret);
}

function twCompare_password(nPass1,nPass2) {
  // Ajouter ce code dans la saisie du deuxième mot de passe
  // onChange="twCompare_password(this.form.pass1,this);"
  // Noter que le premier mot de passe doit avoir le nom "pass1"
  if (nPass1.value != nPass2.value) {
    nPass1.value = "";
    nPass2.value = "";
    nPass1.focus();
    return "Vous n'avez pas entré le même mot de passe deux fois.<br>Veuillez entrer à nouveau le mot de passe..";
  } else return "";
} // twCompare_password

function twValide_char(nChamp,nAccepte) {
  // Ajouter ce code dans la saisie du champs
  //  onBlur="twValide_char(this,'()-0123456789')"
  // Les caractères acceptés peuvent être changés
  var ok = "oui";
  var nChar;
  for (var i=0; i<nChamp.value.length; i++) {
    nChar = "" + nChamp.value.substring(i, i+1);
    if (nAccepte.indexOf(nChar) == "-1") ok = "non";
  }
  if (ok == "non") {
    nChamp.focus();
    return "Saisie invalide!<br>Seul ces caractères sont valide:<br> "+nAccepte;
  } else return "";
} // twValide_char

function twValide_nbCar(nChamp,nbCar,typeValid) {
  if (nChamp.value != "") {
    if (typeValid == "min") {
      if(nChamp.value.length < nbCar) {
        nChamp.focus();
	    return "Saisie invalide !<br>Ce champ doit contenir au moins "+nbCar+" caractères.";
	  } else return "";
    } else {
      if(nChamp.value.length > nbCar) {
        nChamp.focus();
	    return "Saisie invalide !<br>Ce champ doit contenir au plus "+nbCar+" caractères.";
	  } else return "";
    }
  } else return "";
}

function twCompteur_Texte(nTexte, nCompteur, nLimite) {
  // Ajouter ce code dans la saisie du champ "textarea"
  // onKeyDown="twCompteur_Texte(this,this.form.compte,2000);"
  // onKeyUp="twCompteur_Texte(this,this.form.compte,2000);"
  // 2000 représente le nombre maximum de caractères accepté
  // Vous devez aussi ajouter une boîte de saisie qui
  // indique le nombre de caractères restant.
  // <input readonly="readonly" type="text" name="compte" value="2000">
  if (nTexte.value.length > nLimite)
    nTexte.value = nTexte.value.substring(0, nLimite);
  else 
    nCompteur.value = nLimite - nTexte.value.length;
} // twCompteur_Texte

function twValide_Email(nChamp) {
  if (nChamp.value != "") {
	if(!nChamp.value.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi)) {
	  nChamp.focus();
	  return "Adresse email invalide.";
	} else {
	  return "";
	}
  } else return "";
} //twValide_Email

var max_mois  = new Array();
for (n=1;n<12;n++) {
  if (n==4 || n==6 || n==9 || n==11) max_mois[n] = 30; else max_mois[n] = 31;
}

function twValide_date(nChamp) {
  // vérification de base 99/99/9999
  t_date  = nChamp.value.match(/^\d{1,2}\/\d{1,2}\/\d{4}$/);
  t_date2 = nChamp.value.match(/^\d{4}\/\d{1,2}\/\d{1,2}$/);
  // vérification totale
  if (t_date) {
    t_date = t_date && analyse(nChamp.value,1,2,3);
  } else {
    if (t_date2) {
      t_date = t_date2 && analyse(nChamp.value,3,2,1);
      if (t_date) nChamp.value = inverse (nChamp.value);
	}
  }

  if (!t_date) {
    return "la date est incorrecte";
  } else return "";
} // twValide_date

function analyse(quoi,p_jour,p_mois,p_an) {
  var tempo     = new Array();

  tempo = quoi.split('/') 
  jour  = eval(tempo[(p_jour-1)]);
  mois  = eval(tempo[(p_mois-1)]);
  an    = eval(tempo[(p_an-1)]);
  if (bisx(an)) max_mois[2] = 29; else max_mois[2] = 28;
  
  if (mois>12 || mois<1)   { return false; }
  if (jour>max_mois[mois]) { return false; }
  return true;
} // analyse

function bisx(quoi) {
  if ((quoi % 100 == 0) && (quoi % 400 == 0)) return true;
  else if ((quoi % 4) == 0) return true;
  return false;
} // bisx

function inverse(quoi) {
  return quoi.replace(/^(\d{4})\/(\d{1,2})\/(\d{1,2})$/, "$3/$2/$1");
} // inverse
// -->

