
function masqueSaisieDate(obj) {
  var ch;
  var ch_gauche, ch_droite;
  
  
  
  ch = obj.value;
  ch.toString();
  
  if ( ( (ch.slice(2,3)) != ("/") ) && (ch.length >= 3) ){
   ch_gauche = ch.slice(0,2);
   ch_droite = ch.slice(2);
   obj.value = ch_gauche + "/" + ch_droite;
  }
  if ( ( (ch.slice(5,6)) != ("/") ) && (ch.length >= 6) ){
   ch_gauche = ch.slice(0,5);
   ch_droite = ch.slice(5);
   obj.value = ch_gauche + "/" + ch_droite;
  }
   
   return;
 }


function isDateValid(chaineDate,obligatoire) {

if (obligatoire)
	{
// Je regarde tout d'abord si la chaîne n'est pas vide, sinon pas la peine d'aller plus loin
   	if (chaineDate == "") return false
	}
//J'utilise split pour créer un tableau dans lequel je récupère les jour mois année
// J'attends bien sûr une date formatée en JJ/MM/AAAA
   var ladate = (chaineDate).split("/")

// Si je n'ai pas récupéré trois éléments ou bien s'il ne s'agit pas d'entiers, pas la peine non plus d'aller plus loin
   if ((ladate.length != 3) || isNaN(parseInt(ladate[0])) || isNaN(parseInt(ladate[1])) || isNaN(parseInt(ladate[2]))) return false

// Sinon, c'est maintenant que je crée la date correspondante. Attention, les mois sont étalonnés de 0 à 11
   var unedate = new Date(eval(ladate[2]),eval(ladate[1])-1,eval(ladate[0]))

// Bug de l'an 2000 oblige, lorsque je récupère l'année, je n'ai pas toujours 4 chiffres selon les navigateurs, je rectifie donc ici le tir.
   var annee = unedate.getYear()
   if ((Math.abs(annee)+"").length < 4) annee = annee + 1900

// Il ne reste plus qu'à vérifier si le jour, le mois et l'année obtenus sont les mêmes que ceux saisis par l'utilisateur.
   return ((unedate.getDate() == eval(ladate[0])) && (unedate.getMonth() == eval(ladate[1])-1) && (annee == eval(ladate[2])))
}





function masqueSaisiechiffre(obj,nblimit) {

obj.value=obj.value.replace(/[^0-9]/g,"");
if (obj.value.length > nblimit)
	{
	obj.value = obj.value.substring(0,nblimit);
	}
return 
}


function masqueSaisiechiffreVirgule(d,nblimit)
{ //Fonction prenant nu nombre dans une zone de texte : test si c'est un chiffre si oui le convertit en decimal(10e-2) sinon tante de le convertir en decimal
// efface le contenu de la zone de saisie si convertion impossible
// arrondit a 2 chiffres si il s'agit deja d'un decimal
d.value=d.value.replace(/[^0-9,\.]/g,"");
if (d.value.length-1 < nblimit)	
	{	
		if (d.value!='')
		{
	
			if (isNaN(d.value)==true)//si on tombe sur une virgule la valeur n'est pas considérée comme un nombre
			{
			Num=d.value.indexOf(',');
			Resultat=d.value.substring(0,Num)+'.'+d.value.substring(Num+1,d.value.length);
			d.value=Resultat;
			d.value=Math.round(d.value*100)/100;
				if (isNaN(d.value)==true)
				{
				d.value='';
				alert('VOUS DEVEZ SAISIR UN NOMBRE DECIMAL OU ENTIER');
				return false;
					}
			}
			else
			{
			
			if (d.value.indexOf('.') != d.value.length - 1)
				{
				d.value=Math.round(d.value*100)/100;
				}
			}	
		}
	}
	else
	{
	d.value = d.value.substring(0,nblimit+1);
	}
}




// Début de fonction : testAdrMail
// Entrée : adrMail - (String) - Email à analysé.
// Renvoyé : true ou false - (Boolean) - Vrai si l'email est correct sinon Faux
 
function testAdrMail(adrMail) {
 
 // déclaration et initialisation des variables
 adrMailLength=adrMail.length; // longueur de la chaîne adrMail
 caractOk="_.-0123456789abcdefghijklmnopqrstuvwxyz"; // caratères corect d'une adresse mail
 var posArrobas=adrMail.indexOf('@',1); // position du premier Arrobas
 var posPoint=adrMail.lastIndexOf('.',adrMailLength); // position du dernier point
 var posCaractFaux=adrMail.indexOf('..',posArrobas+1); // position d'un caractère faux ('..' ou ' ')
 var caract=0; // caractère extrait de la chaîne adrMail (utilisée par les boucles while)
 var caractFaux=adrMail.charAt(0)+adrMail.charAt(posArrobas-1)+adrMail.charAt(posArrobas+1)+adrMail.charAt(posPoint-1);
 var posCaract=0; // position du caractère à extraire de la chaîne adrMail (utilisée par les boucles while)
 var posCaractOk=0; // position du caractère extrait de la chaîne adrMail (utilisée par les boucles while)
 var posCaractNon=-1;
 var retour=false; // l'adresse e-mail est considérée comme fausse au début
 
 // début du teste
 // s'il n'existe pas de caractère '..' alors on teste s'il existe un espace dans la chaîne adrMail
 if (posCaractFaux!=-1 || adrMail.indexOf(' ',0)!=-1 || adrMail.indexOf('--',0)!=-1 || adrMail.indexOf('__',0)!=-1) {
    posCaractFaux=0;
 }
 
 // Teste les points ou - ou _ au début de l'adrMail, autour de l'arrobas et autour du dernier point
 for (posCaract;posCaract<4;posCaract++) {
     caract=caractFaux.charAt(posCaract);
     posCaractNon=caractOk.lastIndexOf(caract,2);
     if (posCaractNon!=-1) {
        posCaractFaux=0;
        break;
     }
 }
 // si l'adresse mail contient au moins 1 caractère et qu'elle comporte un arrobas
 // et qu'elle comporte un point et que l'arrobas est avant le dernier point
 // et qu'elle ne contient pas de '..' ou d'espace et que après le dernier point il y est 2,3 ou 4 caractères
 // et qu'il n'y est pas de point autour de l'arrobas et que l'adresse ne commence pas par un point
 // Alors
 if (adrMailLength>0 && posArrobas!=-1 && posPoint!=-1 && posArrobas<posPoint && posCaractFaux==-1 && adrMailLength-posPoint-1>=2 && adrMailLength-posPoint-1<=4) {
 
    // extraction d'un caractère et teste s'il existe dans la chaîne "_.-0123456789abcdefghijklmnopqrstuvwxyz"
    // S'il n'existe pas alors posCaract=-1 donc au prochain 'tour' on passe aux autres boucles (qui ne s'effecturont pas)
    // Si il existe on continue la boucle jusqu'au caractère avant l'arrobas et on passe à la boucle while suivante
 
    adrMail=adrMail.toLowerCase();
    posCaract=0;
 
    while (posCaract<posArrobas && posCaractOk!=-1) {
          caract=adrMail.charAt(posCaract);
          posCaractOk=caractOk.indexOf(caract,0);
          posCaract++;
    }
    posCaract++; // on passe l'arrobas
 
    // sur le même principe qu'au dessus mais pour la partie entre l'arrobas et le dernier point
    // le test ce fait sur les caractères ".-0123456789abcdefghijklmnopqrstuvwxyz"
    // caractOk.indexOf(caract,1) on ne teste plus l'underscore
    while (posCaract<posPoint && posCaractOk!=-1) {
          caract=adrMail.charAt(posCaract);
          posCaractOk=caractOk.indexOf(caract,1);
          posCaract++;
    }
    posCaract++; // on passe le point
 
    // sur le même principe qu'au dessus mais pour la partie entre le dernier point et la fin
    // le test ce fait sur les caractères "abcdefghijklmnopqrstuvwxyz"
    // caractOk.indexOf(caract,13) on ne teste plus que des lettres
    while (posCaract<adrMailLength && posCaractOk!=-1) {
          caract=adrMail.charAt(posCaract);
          posCaractOk=caractOk.indexOf(caract,13);
          posCaract++;
    } // fin de la boucle while
    
    // durant le parcour de l'adresse mail si n'y avait pas de caractère interdit
    // posCaractOk a changer plusieurs fois de valeur mais na jamais eu la valeur -1
    // donc l'adresse est bonne
    if (posCaractOk!=-1) {
       retour=true;
    }
 }
 return retour; // renvoi le résultat (true ou false)
} // fin de la fonction

