function filtre1(chaine,Elem,Msg)
    {
/*chaine=la chaine a interdire ou a autoriser(filtre2) 
elem=l'element sur lequel on applique cette fonction
msg:message a afficher
*/      
   strValidChars= chaine//+"'\"";
      //if (kk==0)  strValidChars+= "'\"";
      ElemV   = Elem.value.toUpperCase();
      //alert(strValidChars);
      var blnResult= true;
          for (i = 0; i < ElemV.length && blnResult == true; i++)
          {
                strChar = ElemV.charAt(i);
                  if (strValidChars.indexOf(strChar) >=0)              
                    {    blnResult = false;
                     //alert(Msg + "\n" + strValidChars);
                      Elem.value = Elem.value.substr(0,i);          
                    }
          }//fin for
     } 

function filtre2(chaine,Elem,Msg)
    {
      strValidChars= chaine//+"'\"";
      //if (kk==0)  strValidChars+= "'\"";
      ElemV   = Elem.value.toUpperCase();
      //alert(strValidChars);
      var blnResult= true;
      if (ElemV.length==0) {
      Elem.value="0"; }
  for (i = 0; i < ElemV.length && blnResult == true; i++)
          {
                strChar = ElemV.charAt(i);
                     if (strValidChars.indexOf(strChar) <0)              
                    {
                      blnResult = false;
                      //alert(Msg + "\n" + strValidChars);
                     Elem.value = Elem.value.substr(0,i);
                     Elem.value="0";       
                    } 
                 
          }//fin for
     } 

// Fonction de blocage de la saisie si elle n'est pas conforme
function bloque(formulaire,champ) {
// Creation d'un raccourci pour manipuler le champ
    var controle = eval('document.' + formulaire + '.' + champ);

// On se place sur le champ incrimine
    controle.focus();

// On selectionne le contenu pour faciliter la reprise de la saisie
    controle.select();
    }


// Fonction de controle des champs vides

// Debut du message qui sera affiche en cas d'un ou plusieurs champ(s) vide(s)
var mess = "Les champs suivants sont necessaires au traitement de votre demande :\n\n";

// Copie pour reinitialisation
var mess_init = "Les champs suivants sont necessaires au traitement de votre demande :\n\n";

// Variable marquant l'erreur (0 : tout va bien, 1 : blocage demande)
var necessaire = 0;

function vide(formulaire,champ,alerte) {

// Creation d'un raccourci pour manipuler le champ a tester
    var controle = eval('document.' + formulaire + '.' + champ);

// Si c'est un champ 'text'
    if ( controle.type == 'text' ) {

// Et que la valeur du champ comporte moins de 1 caractere (vide)
        if ( trimAll(controle.value)=="" ) {

// On ajoute l'intitule du champ dans le message d'erreur
            mess += alerte;
            mess += "\n";

// On marque qu'il ne faut pas valider le formulaire
            necessaire = 1;
            }
        if ( trimAll(controle.value)=="0" ) {

// On ajoute l'intitule du champ dans le message d'erreur
            mess += alerte;
            mess += "\n";

// On marque qu'il ne faut pas valider le formulaire
            necessaire = 1;
            }    
            
        }

// Si c'est un champ de type mot de passe
    if ( controle.type == 'password' ) {
        if ( controle.value.length < 1 ) {
            mess += alerte;
            mess += "\n";
            necessaire = 1;
            }
        }

// Si c'est un champ de type texte multilignes
    if ( controle.type == 'textarea' ) {
        if ( controle.value.length < 1 ) {
            mess += alerte;
            mess += "\n";
            necessaire = 1;
            }
        }

// Si c'est une liste
    if ( controle.type == 'select-one' ) {

// Si c'est le premier element qui est selectionne (element vide a indiquer dans le HTML)
        if ( controle.options[0].selected ) {
            mess += alerte;
            mess += "\n";
            necessaire = 1;
            }
        }

// Si c'est une case a cocher
    if ( controle.type == 'checkbox' ) {

// Quand elle est cochee, l'etat est 'true', ici on cherche l'inverse (false)
        if (!controle.checked) {
            mess += alerte;
            mess += "\n";
            necessaire = 1;
            }
        }
    }

// Fonction pour le test des boutons radio
function vide_radio(formulaire,champ,alerte) {

// Creation d'un raccourci pour manipuler le champ a tester
    var controle = eval('document.' + formulaire + '.' + champ);
// On declare par defaut que les champs ne sont pas coches,
    var non = "hs";
    for ( i = 0; i < controle.length; i++ ) {

// Si on trouve un bouton coche, on le marque
        if (controle[i].status) {
            non = "ok";
            }
        }

// Si on n'a pas marque un champ comme 'coche' (ok)
    if ( non != "ok" ) {
        mess += alerte;
        mess += "\n";
        necessaire = 1;
        }
    }


// Fonction de validation du formulaire
function resultat(formulaire) {

// Si on a marque qu'au moins un champ etait vide
    if ( necessaire == 1 ) {

// Affichage du message d'erreur avec tous les champs en erreur
        alert(mess);
        }

// Si aucun champ n'est vide
    if ( necessaire == 0 ) {
        var formu = eval('document.' + formulaire);

// Validation du formulaire
        formu.submit();
        }

// Quoi qu'il arrive, on re-initialise le message d'erreur pour permettre un autre passage des tests
    mess = mess_init;
    necessaire = 0;
    }


// Fonction de controle de validite de la saisie
// Creation d'une variable pour marquer s'il y a incoherence de saisie ou pas
var probleme = 0;

function validite(formulaire,champ,format,mini,maxi) {

// Initialisation de la variable
    probleme = 0;

// Les differents tests possibles :
// On affecte a la variable 'RE' le test d'expression reguliere souhaite
//  A   : alphabetique
    if ( format == "A" ) { RE = /^([A-Za-z]+[ ]*[-]*[A-Za-z]*)+$/;}

//  AN  : alphanumerique
    if ( format == "AN" ) { RE = /^[A-Za-zàâäéèêëîïôùûç\s,'0-9\-]+$/;}

//  N   : numerique
    if ( format == "N" ) { RE = /^\d+$/;}

//  CP  : code postal francais (5 chiffres)
    if ( format == "CP" ) { RE = /^\d{5}$/;}

//  D   : Date (xx/xx/xx ou xx/xx/xxxx ou xx-xx-xx ou xx-xx-xxxx)
    if ( format == "D" ) { RE = /^\d{2}([\/]|[\-])+\d{2}([\/]|[\-])+\d{2}(\d{2})*$/;}

//  EMAIL   : email
    if ( format == "EMAIL" ) { RE = /^[A-Za-z0-9\.\-_]+[@][A-Za-z0-9\-\.]+[\.][A-Za-z][A-Za-z][A-Za-z]?$/;}

// Creation d'un raccourci pour manipuler le champ a tester
    var controle = eval('document.' + formulaire + '.' + champ);

// On ne fera les tests que si le champ est rempli d'au moins un caractere (pas vide)
    if (controle.value.length > 0) {

// Si on ne trouve pas dans le champ l'expression reguliere recherchee
        if (!RE.test(controle.value)) {

// Envoi d'une alerte
            alert('Votre saisie est incorrecte.');

// On marque que la saisie n'est pas coherente
            probleme = 1;
            }

// Tests de longueur du champ (nombre de caracteres saisis)
// Si il a ete specifie '0', le test n'est pas effectue
        if ( mini != 0 ) {

// Si la longueur de la saisie est inferieure au minimum demande
            if ( controle.value.length < mini ) {

// Envoi d'une alerte
                alert('Vous devez saisir exactement ' + mini + ' chiffres.');
                probleme = 1;
                }
            }

// Si la longueur de la saisie est superieure au maximum demande
        if ( maxi != 0 ) {
            if ( controle.value.length > maxi ) {
                alert('Vous ne devez pas saisir plus de ' + maxi + ' chiffres.');
                probleme = 1;
                }
            }

// Si on a marque qu'il y avait un probleme
        if ( probleme == 1 ) {

// On active le blocage du champ
            necessaire=1;
            bloque(formulaire,champ);
            }
        }
    }


// Fonction de verification d'une plage de nombres (entre X et Y)
function check_num(formulaire,champ,plancher,plafond) {

// Creation d'un raccourci pour manipuler le champ a tester
    var controle = eval('document.' + formulaire + '.' + champ);

// Si la valeur de la saisie est inferieure au plancher demande
    if ( controle.value < plancher ) {

// Envoi d'une alerte
        alert('Votre saisie ne doit pas etre inferieure a ' + plancher + '.');

// On active le blocage du champ
        bloque(formulaire,champ);
        }

// Si la valeur de la saisie est superieure au plafond demande
    if ( controle.value > plafond ) {
        alert('Votre saisie ne doit pas etre superieure a ' + plafond + '.');
        bloque(formulaire,champ);
        }
    }

   
// Fonction pour verifier la coherence de deux saisies de mot de passe
// Cette fonction se declenche a partir du second champ uniquement
function check_pw(formulaire,champ1,champ2) {
// Creation de deux raccourcis pour manipuler les champ a comparer
    var prems = eval('document.' + formulaire + '.' + champ1);
    var deuze = eval('document.' + formulaire + '.' + champ2);

// Si le premier champ n'est pas rempli
    if (!prems.value) {

// Envoi d'une alerte
        alert('Vous n\'avez pas saisi votre mot de passe');

// On active le blocage du champ
        bloque(formulaire,champ1);
        }

// Si le premier champ est rempli
    else {

// Si la saisie des deux champ est differente
        if ( prems.value != deuze.value ) {

// Envoi d'une alerte
            alert('La confirmation de votre mot de passe n\'est pas exacte.');

// Reinitialisation des deux champs
            deuze.value = "";
            prems.value = "";

// On active le blocage du champ
            bloque(formulaire,champ1);
            }
        }
    }

function leftTrim(sString)
{
while (sString.substring(0,1) == ' ')
{
sString = sString.substring(1, sString.length);
}
return sString;
}
function rightTrim(sString)
{
while (sString.substring(sString.length-1, sString.length) == ' ')
{
sString = sString.substring(0,sString.length-1);
}
return sString;
}


function trimAll(sString)
{
while (sString.substring(0,1) == ' ')
{
sString = sString.substring(1, sString.length);
}
while (sString.substring(sString.length-1, sString.length) == ' ')
{
sString = sString.substring(0,sString.length-1);
}
return sString;
}    

function getCheckedValue(formulaire,champ) {
    var radioObj = eval('document.' + formulaire + '.' + champ);
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}
