/*

Permet de vérifier tous les formulaires du site (fonction validate). Si un champ n'a pas une valeur attendue, il deviendra rouge.

Pour utiliser le script, il faut :

1) rajouter en entête (<head>) de la page la ligne suivante :
   <script src="(../)js/validate_forms.js" type="text/javascript"></script>

2) dans l'élément <form>, rajouter l'attribut suivant :
   onsubmit="return validate(this);"

3) dans chaque élément des formulaires, rajouter le type de données qu'on attend, au moyen de l'attribut class. Les différents types possibles sont :
   - "string"
   - "number"
   - "email"
   Si une valeur ne peut pas être vide, alors on peut lui rajouter la classe "required"
   Exemple : <input type="text" class="string required" value="" name="Titre">

***************

Pour vérifier un "Agree" coché pour les termes et conditions, utiliser la fonction validateAgree. Pour ce faire, dans l'élément <form>, rajouter l'attribut suivant :
  onsubmit="return validateAgree(this, 'EN');"

Remplacer le EN par FR ou NL pour les autres langues. Les messages sont modifiables dans ce fichier, ci-dessous (var msg = "").

***************

Pour les questions : Laurent Lasudry - lasudry@gmail.com

*/


function isNotEmpty(str) {
 return ((str != '') && (str != '...'));
}

function isEmpty(str) {
 return (!(isNotEmpty(str)));
}

function isString(str) { 
 return (typeof str == 'string' && isNaN(str) || isEmpty(str));
}

function isNumber(str) {
  return (!isNaN(str) || isEmpty(str));
}

function isEmail(str) {
  var pattern = /^[\w-\.\']{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,}$/;
  return (pattern.test(str) || isEmpty(str));
}



function validateAgree(objForm, lang)
{
 if (lang=="FR")      {var msg = "Il faut accepter nos termes et conditions avant de continuer !";}
 else if (lang=="NL") {var msg = "Please note that you must accept our terms of services !";}
 else                 {var msg = "Please note that you must accept our terms of services !";}

 if (!objForm.Agree.checked){
  alert (msg);
  return false;
 }
 return true;
}


function validate(objForm)
{
  var arClass, bValid;
  var objField = objForm.getElementsByTagName('*');

  for (var iFieldCounter=0; iFieldCounter<objField.length; iFieldCounter++)
  {
    arClass = objField[iFieldCounter].className.split(' ');
    for (var iClassCounter=0; iClassCounter<arClass.length; iClassCounter++)
    {
      switch (arClass[iClassCounter])
      {
        case 'required':
           bValid = isNotEmpty(objField[iFieldCounter].value.replace(/^\s*|\s*$/g, ''));
           break;
        case 'string':
           bValid = isString(objField[iFieldCounter].value.replace(/^\s*|\s*$/g, ''));
           break;
        case 'number' :
           bValid = isNumber(objField[iFieldCounter].value);
           break;
        case 'email' :
           bValid = isEmail(objField[iFieldCounter].value);
             break;
        default:
           bValid = true;
      }

      if (bValid == false)
      {
// TESTS
//        alert(objField[iFieldCounter].className);
//        alert('Mauvaise valeur de ' + objField[iFieldCounter].name);
//        objField[iFieldCounter].select();

        objField[iFieldCounter].focus();
        objField[iFieldCounter].style.background='Red';
        return false;
      }
    }
  }
 return true;
}
