<!--


/* Fonctions Trim ! */
// Removes leading whitespaces
function LTrim( value ) {
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
}
// Removes ending whitespaces
function RTrim( value ) {
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
}
// Removes leading and ending whitespaces
function ALLTrim( value ) {
	return LTrim(RTrim(value));
}

/*********************
* CONTROLE EMAIL
*/
re = /^[a-z0-9][a-z0-9_\.-]+@[a-z0-9][a-z0-9_\.-]+\.{1}[a-z]{2,5}$/;

function ControlEmail(ObjTxt,Lib,EnableAlert)
{
	var message="";
	var val,newval;
	var isValid=true;
	var txtErr="Email non valide";
	var ret;	//valeur de retour

	val=ObjTxt.value;

	if (val!="")
	{
	  OK = re.exec(val);
	  if (!OK){
	    isValid=false;
	    message+=(Lib+" "+txtErr);
	  }
	}

	//affichage message & valeur de retour
	if (EnableAlert){
	   if (message!="") alert(message);	//affichage alerte géré en local
	   ret=isValid;
	}
	else ret=message;			//alerte gérée par la fonction appelante

	return ret;
}

re21 = /^[\(\[]\d{1,3}[\]\)][\s\-\\.\/]?\d{2,4}([\s-\\.\/]?)\d{2,4}\1\d{2,4}\1\d{2,4}\1\d{2,4}$/;
re11 = /^\d{2,4}([\s\-\\.\/]?)\d{2,4}\1\d{2,4}\1\d{2,4}\1\d{2,4}$/;

/*********************
* CONTROLE NUM TEL
*/
function ControlTelNum(ObjTxt,Lib,EnableAlert)
{
	var message="";
	var val,newval;
	var isValid=true;
	var txtErr="Numéro de téléphone non valide";
	var ret;	//valeur de retour


	val=ObjTxt.value;

	if (val!="")
	{
		OK = re11.exec(val);
		if (!OK) OK = re21.exec(val);

		if (!OK){
		    isValid=false;
		    message+=(Lib+" "+txtErr);
		}
		else {
		   reSep = /[\s\-\\.\/]/g;
		   newval=val.replace(reSep," ");
		   ObjTxt.value=newval;
		}
	}


	//affichage message & valeur de retour
	if (EnableAlert){
	   if (message!="") alert(message);	//affichage alerte géré en local
	   ret=isValid;
	}
	else ret=message;			//alerte gérée par la fonction appelante

	return ret;
}

/*********************
* REMPLACt SOUS CHAINES
*/
function replaceString(oldS,newS,fullS) {
   // Replaces oldS with newS in the string fullS
   for (var i=0; i<fullS.length; i++) {
      if (fullS.substring(i,i+oldS.length) == oldS) {
         fullS = fullS.substring(0,i)+newS+fullS.substring(i+oldS.length,fullS.length)
      }
   }
   return fullS
}

/*********************
* VALIDATION FORMULAIRE
*/
function validateForm() {
  //Fonction de controle de formulaire les arguments ont la forme ('form_name','form_label','isR','field_name1','isN','field_name2',....)
  //la fonction permet de traiter le cas 1 champ au moins requis parmi plusieurs (expressions OU)
  // les expressions OU sont de la forme : 'isR','txtCHAMP1|txtCHAMP2'

  var args=validateForm.arguments;
  var formname=args[0];
  var formlib=args[1]; if (formlib!="") formlib+=" ";
  var tOr,op="",val="",expr="";
  var isValidForm,isExprArg;
  var tmp="",msg="";

  isValidForm=true;

  for (var i=2; i<args.length; i+=2){

    isExprArg=false; //indicateur controle de validité de type expression
    //____________________________
    //controle champ requis
    if ( args[i].indexOf('isR')>-1)
    {
	  tOr=args[i+1].split("|"); //tableau de traitement des expressions OU
	  if (tOr.length>1) isExprArg=true;

	  expr=""; op ="";
	  for (var j=0; j<tOr.length; j++){
	    expr+= op + " document."+formname+"."+tOr[j]+".value !='' ";
	    op="||";
	  }

	  if (!eval(expr)){
		tmp=replaceString("|"," ou ",args[i+1]);
		msg+= "\n" + tmp;
		if (args[i].indexOf('isR')>-1) msg+=" est requis";
	  }
    }

    //à ce stade si c'est un champ obligatoire manquant, il a été traité

    //______________________________________
    //controle de validité (champ non vide)

    val=""; 
    // on ne traite pas les expressions OU : (isR,xxx1|xxx2|xxx3)
    if (!isExprArg)  
	  val = eval("document."+formname+"."+args[i+1]+".value");
	
    if (val!='')
    {
	//controle email
	if ( args[i].indexOf('Em')>-1 )
	{
	  var obj=eval("document."+formname+"."+args[i+1]);
	  msg+=ControlEmail(obj,'',false);
	}

	//controle numériques
	if ( args[i].indexOf('N')>-1 )
	{
	 var x=(parseInt("1"+val)).toString();
	 x=x.substring(1,x.length);

	 //alert("val="+val+" ; x="+x);
	 
	 if ( val.length!=x.length )
	 {
	  msg+="\n"+args[i+1]+" doit être numérique";
	 }
	}

	//controle numéros tél
	if ( args[i].indexOf('Tn')>-1 )
	{
	 var obj=eval("document."+formname+"."+args[i+1]);
	 msg+=ControlTelNum(obj,'',false);
	}

    }

  } // FIN boucle FOR


  //affichage message alerte
  if (msg!=""){
  	isValidForm=false
	msg=replaceString("txt","",msg);
	msg=replaceString("_"," ",msg);
	alert("Formulaire "+formlib+"non valide \n"+msg);
  }

  return isValidForm;
}

	/******************************************************************
	* FONCTIONS DE CONTROLE MOT DE PASSE ET LONGUEUR MINI CHAMP
	*******************************************************************/

function clearConfirmPasswd(){
 document.mainform.txtPasswd2.value="";
}

function isEmptyField(fdname){ 
 //alert("isEmptyField()");
 var expr="document.mainform."+fdname+".value.length==0";
 //alert("expr="+expr);
 if (eval(expr)) return true;
 else return false;
}

function verifyFieldLength(fdname,fdlen,EnableAlert){
 //alert("verifyFieldLength()"); 	
 var expr="document.mainform."+fdname+".value.length<"+fdlen;
 if (eval(expr)) {
    if (EnableAlert){
     alert("le champ "+replaceString("txt","",fdname)+" doit contenir au moins "+fdlen+" caractères");
     eval("document.mainform."+fdname+".focus()");
    }
    return false;
 } else
    return true;
}
 
function verifyConfirmPasswd() {
 var len=verifyConfirmPasswd.arguments[0];
 if (len==null) len=6;
 if ( verifyFieldLength('txtPasswd',len,true) ) {
   if (document.mainform.txtPasswd.value != document.mainform.txtPasswd2.value) {
     alert("Mot de passe et confirmation non identiques");
     clearConfirmPasswd();
     //document.mainform.txtPasswd2.focus();
	 //alert("new JS (focus par eval...)");
	 //eval("document.mainform.txtPasswd2.focus()");  NE MARCHE PAS ici AVEC FIREFOX & NETSCAPE (ça marche sur la page de login ?)
     return false;
   }
   else
     return true;
 } else {
     return false;
 }
}
function validatePaswdChanges(){
 if (document.mainform.txtPasswd.value != document.mainform.txtPasswd2.value) {
    alert("L\'opération de saisie/modification du mot de passe a été annulée");
    //document.mainform.txtPasswd.value='UNCHANGED';
    //document.mainform.txtPasswd2.value='UNCHANGED';
    document.mainform.txtPasswd.value='';
    document.mainform.txtPasswd2.value='';	
    return false;
   }
}

	/******************************************************************
	* FONCTIONS UTILITAIRES FORMULAIRES DIVERSES
	*******************************************************************/

//Focus initial formulaire
function setInitFocus(formname,fdname){
  eval("document."+formname+"."+fdname+".focus()");
}


//-->

