
// ******************************************************
// ******************************************************

// VALIDATIONS (EN JAVASCRIPT) DES TEXT FIELDS DES PAGES SUIVANTES:
//
//     -- login
//     -- update profile
//     -- confirm your password

// ******************************************************
// ******************************************************


// -------------------------------------------------------------------
// REMPLACE LES ESPACES BLANCS PAR UN %20 MAIS SEULEMENT POUR LES 
// APPELS AU CGI.
// -------------------------------------------------------------------

function BlancDansCgi(chaine)
   {
   return chaine.replace(/\s/g,"%20");
   }


// -------------------------------------------------------------------
// ENLEVER LES ESPACES (AVANT ET APRES).
// -------------------------------------------------------------------

function stripSpacesBeforeAfter(x) 
   {
   // Remove spaces at the end:   
   var i = x.length - 1;
   var j = 0;
   var tab;
   for ( ; i >= 0 && x.charAt(i) == ' '; i-- );

   // i now points to last non-blank character:
   x = x.substring(0, i+1);

   // Remove spaces at the beginning:
   while (x.substring(0,1) == ' ')
      {
      x = x.substring(1);
      }

   return x;
   }


// -------------------------------------------------------------------
// LAISSER UN SEUL ESPACE ENTRE LES MOTS.
// -------------------------------------------------------------------

function enleverEspacesEnTrop( contenuTextBox )
   {
   var nouvelleChaine = ""; 
  
   tab = contenuTextBox.split(" ");

   for ( var i = 0; i < tab.length; i++ )
      {
      if ( tab[i].length > 0 )
         {
         nouvelleChaine = nouvelleChaine + tab[i] + " ";
         }
      }  
   nouvelleChaine = nouvelleChaine.substring(0, nouvelleChaine.length - 1);
   return nouvelleChaine;
   }

 
// ------------------------------------------
// FONCTION VISANT A VERIFIER 
//   --> SI LE MOT DE PASSE CONTIENT DES ALPHANUMERIQUES
//       SEULEMENT (A-Z; a-z; 0-9);
//       PAS D'ESPACE, PAS DE CARACTERES SIGNES, PAS DE TIRETS
//       SUITE DE SAT USER'S PROFILE DU 13 AOUT 2001. MFT
// ------------------------------------------

function verifierAlphaNumeriquePwd(x)
   {
   var valid="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";

   for ( var i=0; i< x.length; i++ ) 
      {
      if ( valid.indexOf(x.charAt(i)) < 0 )
         {
         return false;
         }
      }

   return true;
   }


function isNumeric(x)
   {
   var valid="1234567890";
   for ( var i=0; i< x.length; i++ ) 
      {
      if ( valid.indexOf(x.charAt(i)) < 0 )
         {
         return false;
         }
      }

   return true;
   }


// -------------------------------------------------------------------
// VERIFIER SI LA CHAINE CONTIENT SEULEMENT DES 
// CARACTERES ALPHA-NUMERIQUES.
// -------------------------------------------------------------------

function verifierAlphaNumerique(x)
   {
   var valid="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890éÉèÈêÊàÀâÂçÇôÔùÙûÛîÎïÏëË-' .";

   for ( var i=0; i< x.length; i++ ) 
      {
      if ( valid.indexOf(x.charAt(i)) < 0 )
         { 
         return false;
         }
      }

   return true;
   }


// -------------------------------------------------------------------
// VERIFIER SI LA CHAINE CONTIENT SEULEMENT DES 
// CARACTERES ALPHABETIQUES.
// -------------------------------------------------------------------

function verifierCaracteres(x)
   {
   var valid="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZéÉèÈêÊàÀâÂçÇôÔùÙûÛîÎïÏëË'-. ";

   for ( var i=0; i< x.length; i++ ) 
      {
      if ( valid.indexOf(x.charAt(i)) < 0 )
         { 
         return false;
         }
      }

   return true;
   }


// -------------------------------------------------------------------
// VERIFIER SI LE PASSWORD CONTIENT SEULEMENT
// DES CARACTERES ALPHA-NUMERIQUES.
// PAS DE BLANC NI DE CARACTERES SIGNES. SUITE DE LA 
// REUNION AVEC NAVCANADA DU 13 AOUTE 2001. 
// EN FAIT LE SAT DU USER'S PROFILE.  -- MFT
// -------------------------------------------------------------------

function pwdCaracteres( pwd, type, langue )
   {
   if ( !verifierAlphaNumeriquePwd(pwd) )  
      {
      if ( langue == 'anglais' )
         {
         if ( type == 'password' )
            {
            alert('Only alphanumeric characters are valid for a password.');
            return false;
            }

         if ( type == 'confirmation' )
            {
            alert('Only alphanumeric characters are valid to confirm password.');
            return false;
            }
         }

      else
         {
         if ( type == 'password' )
            {
            alert('Seuls les caractères alphanumériques sont valides pour un mot de passe.');
            return false;
            }

         if ( type == 'confirmation' )
            {
            alert('Seuls les caractères alphanumériques sont valides pour confirmer le mot de passe.');
            return false;
            }
         }
      }

   return true;
   }


// -------------------------------------------------------------------
// VERIFIER SI LE HINT DU PASSWORD CONTIENT SEULEMENT
// DES CARACTERES ALPHA-NUMERIQUES.
// SEPAREE DE PWDCARACTERES CAR ON NE PERMET PAS LES MEMES CHOSES
// ENTRE LES PASSWORD ET LES HINT.
// -------------------------------------------------------------------

function hintCaracteres( hint, type, langue )
   {
   if ( !verifierAlphaNumerique(hint) )  
      {
      if ( langue == 'anglais' )
         {
         if ( type == 'hint' )
            {
            alert('Only alphanumeric characters are valid for a password hint.');
            return false;  
            }
         }

      else
         {
         if ( type == 'hint' )
            {
            alert('Seuls les caractères alphanumériques sont valides pour un indice de mot de passe.');
            return false; 
            }
         }
      }

   return true;
   }


// -------------------------------------------------------------------
// VERIFIER SI LE CONTENU EST VIDE.
// -------------------------------------------------------------------

function empty(x) 
   { 
   x = stripSpacesBeforeAfter(x);
   x = enleverEspacesEnTrop(x);

   if ( x.length > 0 )
      { 
      return false; 
      }
  else
      { 
      return true; 
      }
   }


// -------------------------------------------------------------------
// Checks if email_address is a valid email address
// -------------------------------------------------------------------

function verifier_email( email_address, taille_max )
   {
   if ( email_address.length > taille_max )
      {
      return false;
      }

   // check that there are characters before and after @
   // check that there is a "."
   if ( ((email_address.indexOf('@',1))==-1)||(email_address.indexOf('.',1))==-1 )
      {
      return false;  
      }

   // allow only permitted characters:
   // alphanumeric and "-", "_" and "."
   else
      {
      var filter=/^([a-zA-Z0-9\-\.\_])+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z0-9]{2,})(\]?)$/;
      if ( filter.test(email_address) )
         {  
         return true;
         }
      else
         {
         return false;
         }
      }
   }


// -------------------------------------------------------------------
// VERIFIER L'EXISTENCE DU MOT DE PASSE (CHOOSE) DANS LA SECTION
//   NON-REGISTERED USER DE LA PAGE LOGIN
// -------------------------------------------------------------------

function pwdPresentLoginChoose( choose, langue )
   {
   if ( choose == "" )
      {
      if ( langue == 'anglais' )
         {
         alert('Please choose a password.');
         return false;
         }
      else
         {
         alert('Veuillez choisir un mot de passe.');
         return false;
         }
      }

   return true;  
   }


// -------------------------------------------------------------------
// VERIFIER L'EXISTENCE DU MOT DE PASSE (CONFIRM) DANS LA SECTION
//   NON-REGISTERED USER DE LA PAGE LOGIN
// -------------------------------------------------------------------

function pwdPresentLoginConfirm( confirm, langue )
   {
   if ( confirm == "" )
      {
      if ( langue == 'anglais' )
         {
         alert('Please confirm your password.');
         return false;
         }
      else
         {
         alert('Veuillez valider votre mot de passe.');
         return false;
         }
      }

   return true;  
   }


// -------------------------------------------------------------------
// VERIFIER LE MOT DE PASSE DANS LA SECTION
//   REGISTERED USER DE LA PAGE LOGIN
// -------------------------------------------------------------------

function pwdPresent( pwd, langue )
   {
   if ( pwd == "" )
      {
      if ( langue == 'anglais' )
         {
         alert('Please enter a password.');
         return false;
         }
      else
         {
         alert('Veuillez entrer un mot de passe.');
         return false;
         }
      }

   return true;
   }


// -------------------------------------------------------------------
// VERIFIER LE PASSWORD COURANT DANS LA PAGE UPDATE PROFILE
// -------------------------------------------------------------------

function pwdPresentUpdateCurrent( current, langue )
   {
   // LE PASSWORD COURANT EST VIDE: ERREUR
   if ( current == "" )
      {
      if ( langue == 'anglais' )
         {
         // alert('current vaut.' + current);
         alert('Please enter your current password.');
         return false;
         }
      else
         {
         // alert('current vaut.' + current);
         alert('Veuillez entrer votre mot de passe actuel.');
         return false;
         }
      }

   return true;
   }


// -------------------------------------------------------------------
// VERIFIER LA TAILLE
//    ( MOT DE PASSE, PRENOM, NOM, NOM D'USAGER )
// -------------------------------------------------------------------

function tailleValide( mot, inf, sup, type, langue )
   {
   var taille = mot.length;

   if ( !empty(mot) && taille < inf && type == 'password' )
      {
      if ( langue == 'anglais' )
         {
         // alert('Function tailleValide E');
         alert('Minimum size of the password: ' + inf);
         return false;
         }
      else
         {
         // alert('Function tailleValide F');
         alert('Taille minimum du mot de passe: ' + inf);
         return false;
         }
      }
 
   if ( taille > sup )
      {
      if ( langue == 'anglais' )
         {
         if ( type == 'password' )
            {
            alert('Maximum size of the password: ' + sup);
            return false;
            }
      
         if ( type == 'prenom' )
            {
            alert('Maximum size of the first name: ' + sup);
            return false;
            }

         if ( type == 'nom' )
            {
            alert('Maximum size of the last name: ' + sup);
            return false;
            }

         if ( type == 'user' )
            {
            alert('Maximum size of the username: ' + sup);
            return false;
            }
    
         if ( type == 'hint' )
            {
            alert('Maximum size of the password hint: ' + sup);
            return false;
            }
         }

      else
         {
         if ( type == 'password' )
            {
            alert('Taille maximum du mot de passe: ' + sup);
            return false;
            }

         if ( type == 'prenom' )
            {
            alert('Taille maximum du prénom: ' + sup);
            return false;        
            }

         if ( type == 'nom' )
            {
            alert('Taille maximum du nom: ' + sup);
            return false;        
            }

         if ( type == 'user' )
            {
            alert('Taille maximum du nom d\'usager: ' + sup);
            return false;        
            }

         if ( type == 'hint' )
            {
            alert('Taille maximum de l\'indice de mot de passe: ' + sup);
            return false;        
            }
         }
      }

   return true;
   }


// -------------------------------------------------------------------
// VERIFIER SI LE PASSWORD ENTRE EST VALIDE
//   (EN LE COMPARANT AVEC LE CONFIRM PASSWORD)
// -------------------------------------------------------------------

function pwdIdentique( pwd, confirm, langue )
   {
   if ( !empty(pwd) && !empty(confirm) && pwd != confirm )
      {
      if ( langue == 'anglais' )
         {
         alert('Your confirm password is different from your password.');
         return false;
         }
      else
         {
         alert('Votre mot de passe n est pas validé.');
         return false;
         }
      }

   return true;
   }


// -------------------------------------------------------------------
// VERIFIER SI:
//   --> LE CURRENT PASSWORD & LE NEW PASSWORD SONT DIFFERENTS.
//       POUR LA SECTION: "Update your profile"
//   --> old     : CURRENT PASSWORD
//   --> nouveau : NEW PASSWORD
//  NOTE: pas utilise car on peut donner le même mot de passe (utilite?)
// -------------------------------------------------------------------
 
function pasPareils( old, nouveau, langue )
   {
   if ( old == nouveau )
      {
      if ( langue == 'anglais' )
         {
         alert('Your new password must be different from your current password.'); 
         return false;
         }
      else
         {
         alert('Votre nouveau mot de passe doit être différent du mot de passe actuel.');
         return false;
         }
      }
  
   return true;
   }


// -------------------------------------------------------------------
// VALIDER LE NOM
// -------------------------------------------------------------------

function testerNom( nom, langue )
   {
   // NOM OBLIGATOIRE
   if ( nom == "" )
      {
      if ( langue == 'anglais' )
         {
         alert('Please enter your last name.');
         return false;
         }
      else
         {
         alert('Veuillez entrer votre nom.');
         return false;
         }
      }    

   // CARACTERES ALPHABETIQUES SEULEMENT
   if ( !verifierCaracteres(nom) )
      {
      if ( langue == 'anglais' )
         {
         alert('Only alphabetic characters are valid for the last name.');
         return false;
         }
      else
         {
         alert('Seuls les caractères alphabétiques sont valides pour le nom.');
         return false;
         }
      }

   // TAILLE MINIMALE: 1
   // TAILLE MAXIMALE: 30
   if ( !tailleValide(nom, 1, 30, 'nom', langue) )
      {
      return false;
      }

   return nom;
   }


// -------------------------------------------------------------------
// VALIDER LE PRENOM
// -------------------------------------------------------------------

function testerPrenom( prenom, langue )
   {
   // PRENOM OBLIGATOIRE
   if ( prenom == "" )
      {
      if ( langue == 'anglais' )
         {
         alert('Please enter your first name.');
         return false;
         }
      else
         {
         alert('Veuillez entrer votre prénom.');
         return false;
         }
      }    

   // CARACTERES ALPHABETIQUES SEULEMENT
   if ( !verifierCaracteres(prenom) )
      {
      if ( langue == 'anglais' )
         {
         alert('Only alphabetic characters are valid for the first name.');
         return false;
         }
      else
         {
         alert('Seuls les caractères alphabétiques sont valides pour le prénom.');
         return false;
         }
      }

   // TAILLE MINIMALE: 1
   // TAILLE MAXIMALE: 30
   if ( !tailleValide(prenom, 1, 30, 'prenom', langue) )
      {
      return false;
      }

   return prenom;
   }


// -------------------------------------------------------------------
// VALIDER LE NOM D'USAGER
// -------------------------------------------------------------------

function testerNomUsager( nomUsager, langue )
   {
   // NOM D'USAGER OBLIGATOIRE
   if ( nomUsager == "" )
      {
      if ( langue == 'anglais' )
         {
         alert('Please enter your username.');
         return false;
         }
      else
         {
         alert('Veuillez entrer votre nom d\'usager.');
         return false;
         }
      }    

   // CARACTERES ALPHA-NUMERIQUES SEULEMENT
   if ( !verifierAlphaNumerique(nomUsager) )
      {
      if ( langue == 'anglais' )
         {
         alert('Only alphanumeric characters are valid for a username.');
         return false;
         }
      else
         {
         alert('Seuls les caractères alphanumériques sont valides pour un nom d\'usager.');
         return false;
         }
      }

   // TAILLE MINIMALE: 1
   // TAILLE MAXIMALE: 15
   if ( !tailleValide(nomUsager, 1, 15, 'user', langue) )
      {
      return false;
      }

   return nomUsager;
   }


// -------------------------------------------------------------------
// VERIFIER SI:
//   --> LE EMAIL CONTIENT LE CARACTÈRE SPECIAL "@".
//   --> LE EMAIL N'EST PAS OBLIGATOIRE.
// Valeurs de retour possibles:
//	Email:  Valeur entree si elle est valide
//	False:	Si valeur est invalide
//	True:	Si aucune addresse Email n'a été entree par l'usager.
// -------------------------------------------------------------------

function testerEmailAdress( Email, langue, taille_max )
   {
   if ( !empty(Email) && !verifier_email(Email, taille_max) )
      {
      if ( langue == 'anglais' )
         {
         alert('Please enter a valid email address.');
         return false;
         }
      else
         {
         alert('Veuillez entrer une adresse de courriel valide.');
         return false;
         }
      }
  
   if ( empty(Email) )
      {
      return true; 
      }

   return Email;
   } 


// -------------------------------------------------------------------
// VERIFIER SI :
//     USER TYPE est autre que DEFAULT_USERTYPE     
//
// Valid values : 
//     RECREATIONAL 
//     COMMERCIAL 
//     BUSINESS 
//     SCHEDULED
//     DISPATCHER 
//     MILITARY 
//     GLIDER
//     HOTAIR
//     OTHER
//
// 
// Valeurs de retour possibles:
//      False:  Si valeur est invalide
//      True:   Si valeur valide obtenue 
// -------------------------------------------------------------------

function testerTypeOperator( typeOp , langue )
   {
   if ( typeOp == "DEFAULT_USERTYPE" )
      {
      if ( langue == 'anglais' )
         {
         alert('Please select a user type.');
         }
      else
         {
         alert('Veuillez sélectionner le type d\'usager.');
         }
      return false;
      }
   else
      {
      return typeOp;
      }
   }


// -------------------------------------------------------------------
// VERIFIER SI:
//    -- LE MOT DE PASSE ENTRE EST PERMIS
// -------------------------------------------------------------------

function testerPasswordLoginRegistered( pwd, langue )
   {
   var present = '';
   var car     = '';
   var taille  = '';

   // LE PASSWORD EST PRESENT
   present = pwdPresent(pwd, langue);   
   if ( present == false )
      {
      return false;
      }

   // LE PASSWORD CONTIENT SEULEMENT DES CARACTERES ALPHA-NUMERIQUES  
   car = pwdCaracteres(pwd, 'password', langue);
   if ( car == false )
      {
      return false;
      }
 
   // LA TAILLE DU PASSWORD EST ENTRE 7 ET 15 CARACTERES  
   taille  = tailleValide(pwd, 7, 15, 'password', langue);
   if ( taille == false )
      {
      return false;
      }
  
   return true;
   }


// -------------------------------------------------------------------
// VERIFIER SI:
//    -- LE MOT DE PASSE CHOISI EST PERMIS
// -------------------------------------------------------------------

function testerPasswordLoginChoose( pwd, langue )
   {
   var present = '';
   var car     = '';
   var taille  = '';

   // LE PASSWORD (CHOOSE) EST  PRESENT
   present = pwdPresentLoginChoose(pwd, langue);
   if ( present == false )
      {
      return false;
      }

   // LE PASSWORD (CHOOSE) CONTIENT SEULEMENT DES CARACTERES ALPHA-NUMERIQUES  
   car = pwdCaracteres(pwd, 'password', langue);
   if ( car == false )
      {
      return false;
      }

   // LA TAILLE DU PASSWORD EST ENTRE 7 ET 15 CARACTERES   
   taille = tailleValide(pwd, 7, 15, 'password', langue);  
   if ( taille == false )
      {
      return false;
      }

   return true;
   }


// -------------------------------------------------------------------
// VERIFIER SI:
//    -- LE MOT DE PASSE CHOISI EST CONFIRME
// -------------------------------------------------------------------

function testerPasswordLoginConfirm( choose, confirm, langue )
   {
   var idem    = '';  

   // NOTE: Il n'est pas necessaire de valider le confirm password car
   //       il est compare avec le password choisi.

   // LE PASSWORD (CONFIRM) EST PRESENT
   present = pwdPresentLoginConfirm(confirm, langue);
   if ( present == false )
      {
      return false;
      }

   // LE PASSWORD (CONFIRM) CONTIENT SEULEMENT DES CARACTERES ALPHA-NUMERIQUES  
   car = pwdCaracteres(confirm, 'confirmation', langue);
   if ( car == false )
      {
      return false;
      }

   // VERIFIER SI LE PASSWORD ET LE CONFIRM PASSWORD SONT IDENTIQUES
   idem = pwdIdentique(choose, confirm, langue);
   if ( idem == false )
      {
      return false;
      }

   return true;
   }


// -------------------------------------------------------------------
// VERIFIER SI:
//    -- LE MOT DE PASSE COURANT EST PERMIS
// -------------------------------------------------------------------

function testerPasswordUpdateCurrent( current, langue )
   {
   var present = '';
   var car     = '';
   var taille  = '';

   // LE PASSWORD COURANT EST PRESENT.
   present = pwdPresentUpdateCurrent(current, langue);
   if ( present == false )
      {
      return false;
      }

   // LE PASSWORD COURANT CONTIENT SEULEMENT DES CARACTERES ALPHA-NUMERIQUES  
   car = pwdCaracteres(current, 'password', langue);
   if ( car == false )
      {
      return false;
      }

   // LA TAILLE DU PASSWORD COURANT EST ENTRE 7 ET 15 CARACTERES
   taille = tailleValide(current, 7, 15, 'password', langue);  
   if ( taille == false )
      {
      return false;
      }

   return true;
   }


// -------------------------------------------------------------------
// VERIFIER SI:
//    -- LE NOUVEAU PASSWORD EST PERMIS
// -------------------------------------------------------------------

function testerPasswordUpdateNouveau( nouveau, langue )
   {
   var present = '';
   var car     = '';
   var taille  = '';
  
   // NOTE: UN NOUVEAU PASSWORD N'EST PAS OBLIGATOIRE
   if ( nouveau != "" )
      {
      // NOUVEAU PASSWORD CONTIENT SEULEMENT DES CARACTERES ALPHA-NUMERIQUES  
      car = pwdCaracteres(nouveau, 'password', langue);
      if ( car == false )
         {
         return false;
         }

      // LA TAILLE DU NOUVEAU PASSWORD EST ENTRE 7 ET 15 CARACTERES   
      taille = tailleValide(nouveau, 7, 15, 'password', langue);  
      if ( taille == false )
         {
         return false;
         }
      }

   return true;
   }


// -------------------------------------------------------------------
// VERIFIER SI:
//    -- LE NOUVEAU MOT DE PASSE EST CONFIRME
//    -- NOTE: Un nouveau mot de passe n'est pas obligatoire. Par contre, s'il
//             est present, il doit être valide et confirme.
// -------------------------------------------------------------------

function testerPasswordUpdateConfirm( nouveau, confirm, langue )
   {
   // LE NOUVEAU PASSWORD ET LE CONFIRM PASSWORD SONT VIDES: ACCEPTE
   if ( nouveau == '' && confirm == '' )
      {
      return true;
      }
 
   // UN NOUVEAU PASSWORD EST ENTRE SANS CONFIRMATION: ERREUR
   if ( nouveau != '' && confirm == '' )
      {
      if ( langue == 'anglais' )
         {
         alert('Please confirm your new password.');
         return false;
         }
      else
         {
         alert('Veuillez valider votre nouveau mot de passe.');
         return false;
         }     
      }

   // UN CONFIRM PASSWORD ENTRE SANS NOUVEAU PASSWORD: ERREUR
   if ( nouveau == '' && confirm != '' )
      {
      if ( langue == 'anglais' )
         {
         alert('Please enter a new password.');
         return false;
         }
      else
         {
         alert('Veuillez entrer un nouveau mot de passe.');
         return false;
         }      
      }  

   // NOTE: Il n'est pas necessaire de valider le confirm password car
   //       il est compare avec le nouveau password.
 
   // LE PASSWORD CONFIRM CONTIENT SEULEMENT DES CARACTERES ALPHA-NUMERIQUES  
   car = pwdCaracteres(confirm, 'confirmation', langue);
   if ( car == false )
      {
      return false;
      }

   // LE NOUVEAU PASSWORD ET LE CONFIRM PASSWORD DOIVENT ETRE IDENTIQUES
   idem = pwdIdentique(nouveau, confirm, langue);
   if ( idem == false )
      {
      return false;
      }

   return true;  
   }


// -------------------------------------------------------------------
// VERIFIER SI:
//   --> LE PASSWORD HINT EST BIEN INSCRIT.
//   --> LE PASSWORD HINT EST DIFFERENT DU PASSWORD
// -------------------------------------------------------------------

function testerHint( PasswordHint, pwd, langue )
   {
   var car = "";
   var taille = "";

   // HINT & MOT DE PASSE OBLIGATOIRES
   if ( PasswordHint == '' && pwd != '' )
      {
      if ( langue == 'anglais' )
         {
         alert('You must enter a password hint.');
         return false;
         }
      else
         {
         alert('Vous devez entrer un indice de mot de passe.');
         return false;
         }
      }

   // CARACTERES ALPHA-NUMERIQUES SEULEMENT
   car = hintCaracteres(PasswordHint, 'hint', langue);
   if ( car == false )
      {
      return false;
      }

   // TAILLE MAXIMALE DU HINT: 30
   taille = tailleValide(PasswordHint, 1, 30, 'hint', langue);  
   if ( taille == false )
      {
      return false;
      }

   // HINT DIFFERENT DU MOT DE PASSE
   if ( PasswordHint == pwd )
      {
      if ( langue == 'anglais' )
         {
         alert('Your password hint must be different from your password.');
         return false;
         }
      else
         {
         alert('L\'indice doit être différent du mot de passe.');
         return false;
         }
      }

   return true;
   }


// ===================================================================
// ===================================================================

// VALIDER LA SECTION "Non-Registered User" DE LA PAGE LOGIN

// ===================================================================
// ===================================================================

function testerLoginNonRegistered( langue )
   {
   var Prenom       = document.NonRegistered.Prenom.value;
   var Nom          = document.NonRegistered.Nom.value;
   var UserName     = document.NonRegistered.UserName.value;
   var Email        = document.NonRegistered.Email.value;
   var typeOpInd    = document.NonRegistered.TypeOperator.selectedIndex;
   var typeOp       = document.NonRegistered.TypeOperator.options[typeOpInd].value;
   var pwd1         = document.NonRegistered.Password.value;
   var pwd2         = document.NonRegistered.PasswordConf.value;
   var PasswordHint = document.NonRegistered.PasswordHint.value;

   var pass   = '';
   var h      = '';
 
   var validTypeOp  = false;

   // ------------------
 
   // ENLEVER TOUS LES ESPACES AVANT ET APRES.
   // ENLEVER LES ESPACES EN TROP ENTRE LES MOTS.

   Prenom       = stripSpacesBeforeAfter(Prenom);
   Prenom       = enleverEspacesEnTrop(Prenom);
   Nom          = stripSpacesBeforeAfter(Nom);
   Nom          = enleverEspacesEnTrop(Nom);
   UserName     = stripSpacesBeforeAfter(UserName);
   UserName     = enleverEspacesEnTrop(UserName);
   PasswordHint = stripSpacesBeforeAfter(PasswordHint);
   PasswordHint = enleverEspacesEnTrop(PasswordHint);
   Email        = stripSpacesBeforeAfter(Email);

   // ------------------

   Prenom = testerPrenom(Prenom, langue);
   if ( Prenom == false )
      {
      document.NonRegistered.Prenom.focus();
      return;
      }
   else
      {
      document.NonRegistered.Prenom.value = Prenom;
      }

   // ------------------

   Nom = testerNom(Nom, langue);
   if ( Nom == false )
      {
      document.NonRegistered.Nom.focus();
      return;
      }
   else
      {
      document.NonRegistered.Nom.value = Nom;
      }

   // ------------------

   UserName = testerNomUsager(UserName, langue);
   if ( UserName == false )
      {
      document.NonRegistered.UserName.focus();
      return;
      }
   else
      {
      document.NonRegistered.UserName.value = UserName;
      }

   // ------------------

   Email  = testerEmailAdress(Email, langue, 80);  
   if ( Email == false )  // Erreur dans le champs Email 
      { 
      document.NonRegistered.Email.focus();
      return;
      }
  
   if ( Email != true)  // Valeur acceptable
      {
      document.NonRegistered.Email.value = Email;
      }
 
   // ------------------

   validTypeOp = testerTypeOperator(typeOp, langue);
   if ( validTypeOp == false )  
      {
      document.NonRegistered.TypeOperator.focus();
      return;
      }

   // ------------------

   pass = testerPasswordLoginChoose(pwd1, langue);
   if ( pass == false )
      {
      document.NonRegistered.Password.focus();
      return;
      }

   // ------------------

   pass = testerPasswordLoginConfirm(pwd1, pwd2, langue);
   if ( pass == false )
      {
      document.NonRegistered.PasswordConf.focus();
      return;
      }

   // ------------------

   h = testerHint(PasswordHint, pwd1, langue);
   if ( h == false )
      {
      document.NonRegistered.PasswordHint.focus();
      return; 
      }
   
   // ------------------

   document.NonRegistered.submit();
   }


// ===================================================================
// ===================================================================

// VALIDER LA SECTION "Registered User" DE LA PAGE LOGIN

// ===================================================================
// ===================================================================

function testerLoginRegistered( langue )
   {
   var Nom = document.Registered.UserName.value;
   var pwd = document.Registered.Password.value;

   var pass = '';

   // ------------------
 
   // ENLEVER TOUS LES ESPACES AVANT ET APRES.
   // ENLEVER LES ESPACES EN TROP ENTRE LES MOTS

   Nom  = stripSpacesBeforeAfter(Nom);
   Nom  = enleverEspacesEnTrop(Nom);

   // Tester si l'utilisateur se trompe de bouton ou a fait enter pour l'enregistrement
   if (Nom == "" && pwd == "" && (document.NonRegistered.Prenom.value
     + document.NonRegistered.Nom.value + document.NonRegistered.UserName.value
     + document.NonRegistered.Email.value + document.NonRegistered.Password.value
     + document.NonRegistered.PasswordConf.value + document.NonRegistered.PasswordHint.value
     + document.NonRegistered.PasswordConf.value + document.NonRegistered.PasswordHint.value)
     != "") {
      document.NonRegistered.Login.click();
      return;
   }


   // ------------------

   Nom = testerNomUsager(Nom, langue);
   if ( Nom == false )
      {
      document.Registered.UserName.focus();
      return;
      }
   else
      {
      document.Registered.UserName.value = Nom;
      }

   // ------------------

   pass = testerPasswordLoginRegistered(pwd, langue);
   if ( pass == false )
      {
      document.Registered.Password.focus();
      return;
      }
  
   document.Registered.Password.value = document.Registered.Password.value;

   // ------------------
   
   document.Registered.submit();
   }


// ===================================================================
// ===================================================================

// VALIDER LE CHAMP "Username" QUAND LE BOUTON "Forgot your password?" 
// EST ACTIVE.

// ===================================================================
// ===================================================================

function testerForgotPassword( langue , NomForme )
   {
   if ( NomForme == "Registered" )
      {
      var userName = document.Registered.UserName.value;
      var langue   = document.Registered.Langue.value;	
      }
	
   else if ( NomForme == "ewxRegistration" )
      {
      var userName = document.ewxRegistration.UserName.value;
      var langue   = document.ewxRegistration.Langue.value;
      }

   else if ( NomForme == "ewxConfirmation" )
      {
      var userName = document.ewxConfirmation.UserName.value;
      var langue   = document.ewxConfirmation.Langue.value;
      }

   else
      {
      var userName = document.Confirm.UserName.value;
      var langue   = document.Confirm.Langue.value;
      }
	
   // ------------------
 
   // ENLEVER TOUS LES ESPACES AVANT ET APRES.
   // ENLEVER LES ESPACES EN TROP ENTRE LES MOTS

   userName  = stripSpacesBeforeAfter(userName);
   userName  = enleverEspacesEnTrop(userName);

   // ------------------

   Nom = testerNomUsager(userName, langue);
   if ( NomForme == "Registered" )
      {
      if ( Nom == false )
         {
         document.Registered.UserName.focus();
         return;
         }
      else
         {
         document.Registered.UserName.value = Nom;
         }
      }

   else if ( NomForme == "ewxRegistration" )
      {
      if ( Nom == false )
         {
         document.ewxRegistration.UserName.focus();
         return;
         }
      else
         {
         document.ewxRegistration.UserName.value = Nom;
         }
      }

   else if ( NomForme == "ewxConfirmation" )
      {
      if ( Nom == false )
         {
         document.ewxConfirmation.UserName.focus();
         return;
         }
      else
         {
         document.ewxConfirmation.UserName.value = Nom;
         }
      }

   else
      {
      if ( Nom == false )
         {
         document.Confirm.UserName.focus();
         return;
         }
     else
         {
         document.Confirm.UserName.value = Nom;
         }
      }
  
   // ------------------
  
   // ajoute un appel a une fonction (BlancDansCgi) qui remplacera le blanc par un %20 
   // dans les appels aux CGI via les JavaScript.
   // Certains Browser (comme Netscape 4.5 et 4.7 Plate forme Windows 98)
   // ne font pas la substitution de facon automatique. 

   NomBrowser=BlancDansCgi(userName)

   // Apres cette fonction, ici le nom usager aura un %20 a la place
   // du blanc (si blanc il y avait)

   var vLoc = '/cgi-bin/hint.cgi?UserName=' +NomBrowser  + '&Langue=' +langue;

   cgiWindow =
     open(vLoc,'window2','resizable=no,width=350,height=250');
   
   if ( cgiWindow.opener == null ) 
      {
      cgiWindow.opener = self;      
      }
   }


// ===================================================================
// ===================================================================

// VALIDER LA PAGE "UPDATE YOUR PROFILE"

// ===================================================================
// ===================================================================

function testerUpdateProfile( langue )
   {
   var Prenom       = document.Profile.Prenom.value;
   var Nom          = document.Profile.Nom.value;
   var Email        = document.Profile.Email.value;
   var pwd          = document.Profile.Password.value;
   var pwd1         = document.Profile.NewPassword.value;
   var pwd2         = document.Profile.NewPasswordConf.value;
   var PasswordHint = document.Profile.PasswordHint.value;
 
   var pass   = '';
   var h      = '';

   // ------------------
 
   // ENLEVER TOUS LES ESPACES AVANT ET APRES.
   //   NOTE: LES ESPACES SONT PERMIS A L'INTERIEUR DU/DES MOT(S).

   Prenom       = stripSpacesBeforeAfter(Prenom);
   Prenom       = enleverEspacesEnTrop(Prenom);
   Nom          = stripSpacesBeforeAfter(Nom);
   Nom          = enleverEspacesEnTrop(Nom);
   PasswordHint = stripSpacesBeforeAfter(PasswordHint);
   PasswordHint = enleverEspacesEnTrop(PasswordHint);
   Email        = stripSpacesBeforeAfter(Email);

   // ------------------

   Prenom = testerPrenom(Prenom, langue);
   if ( Prenom == false )
      {
      document.Profile.Prenom.focus();
      return;
      }
   else
      {
      document.Profile.Prenom.value = Prenom;
      }

   // ------------------

   Nom = testerNom(Nom, langue);
   if ( Nom == false )
      {
      document.Profile.Nom.focus();
      return;
      }
   else
      {
      document.Profile.Nom.value = Nom;
      }

   // ------------------

   Email  = testerEmailAdress(Email, langue, 80);
 
   if ( Email == false )  // Valeur invalide mais non vide
      {
      document.Profile.Email.focus();
      return;
      }
   
   if ( Email != true )  // Valeur acceptable et non vide
      {
      document.Profile.Email.value = Email;  
      }
  
   // ------------------

   pass = testerPasswordUpdateCurrent(pwd, langue);
   if ( pass == false )
      {
      document.Profile.Password.focus();
      return;
      }

   pass = testerPasswordUpdateNouveau(pwd1, langue);
   if ( pass == false )
      {
      document.Profile.NewPassword.focus();
      return;
      }

   pass = testerPasswordUpdateConfirm(pwd1, pwd2, langue);
   if ( pass == false )
      {
      document.Profile.NewPasswordConf.focus();
      return;
      }  

   // ------------------

   if ( !empty(pwd1) )
      {
      h = testerHint(PasswordHint, pwd1, langue);
      if ( h == false )
         {
         document.Profile.PasswordHint.focus();
         return; 
         }
      }

   // ------------------

   document.Profile.submit();
   }


// ===================================================================
// ===================================================================

// VALIDER LE MOT DE PASSE DE LA PAGE "CONFIRM YOUR PASSWORD".

// ===================================================================
// ===================================================================

function testerConfirmPasswd()
   {
   var langue = document.Confirm.Langue.value;
   var pwd    = document.Confirm.Password.value;
 
   // NOTE: Pour tester le password, on utilise la fonction
   //       "testerPasswordLoginRegistered", meme si on est
   //       pas dans la page Login.

   pass = testerPasswordLoginRegistered(pwd, langue);
   if ( pass == false )
      {
      document.Confirm.Password.focus();
      return;
      }
  
   document.Confirm.Password.value = pwd;
   document.Confirm.submit();
   }

