

// Vérification d'un date
function isDate(d) {
  // Cette fonction permet de vérifier la validité d'une date au format jj/mm/aa ou jj/mm/aaaa
  // Par Romuald
  
  if (d == "") // si la variable est vide on retourne faux
    return false;
  
  e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$");
  
  if (!e.test(d)) // On teste l'expression régulière pour valider la forme de la date
    return false; // Si pas bon, retourne faux

  // On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
  j = parseInt(d.split("/")[0], 10); // jour
  m = parseInt(d.split("/")[1], 10); // mois
  a = parseInt(d.split("/")[2], 10); // année

  // Si l'année n'est composée que de 2 chiffres on complète automatiquement
  if (a < 1000) {
    if (a < 89)  a+=2000; // Si a < 89 alors on ajoute 2000 sinon on ajoute 1900
    else a+=1900;
  }

  // Définition du dernier jour de février
  // Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
  if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
  else fev = 28;

  // Nombre de jours pour chaque mois
  nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);

  // Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
  return ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] );
}


function emailValidation(entered, alertbox){
	with (entered){
		apos=value.indexOf("@"); 
		dotpos=value.lastIndexOf(".");
		lastpos=value.length-1;
		if (apos < 1 || dotpos-apos < 2 || lastpos-dotpos > 3 || lastpos-dotpos < 2 || lastpos>49) 
		{
			if (alertbox) {alert(alertbox);}
			return false;
		}else {
			return true;
		}
	} 
}

// Vérifié qu'il s'agit bien d'une date
// entered : objet contenant la date
// alertbox : le mesage en cas d'erreur
function dateValidation(entered, alertbox){

	with (entered){
		if (isDate(entered.value) == false){
			if (alertbox!="") {alert(alertbox+"\n"+"Le format est (JJ/MM/AAAA) ou (JJ/MM/AA)");} 
			return false;
		}
		else {return true;}
	}	
}

// Vérifie que l'Objet donné est bien renseigné TRUE si c'est rempli
// entered : l'objet a vérifier
// alertbox : le message en cas d'erreur
function emptyValidation(entered, alertbox){
	with (entered){
		if (value==null || value==""){
			if (alertbox!="") {alert(alertbox);} 
			return false;
		}
		else {return true;}
	}
}

// Vérifie que la valeur se trouve bien dans l'interval entre min et max
function digitValidation(entered, min, max, alertbox){
	with (entered){

		checkValue = "";
		// On enleve tous les caractères non numériques
		for (i = 0; i<value.length ; i = i+1){
			caractere = value.charAt(i);
			if ((isNaN(caractere) == false) && (caractere != " ")){
				checkValue = checkValue+value.charAt(i);
			}
			
		}
		
		if ((checkValue.length < min) || (checkValue.length > max) || isNaN(checkValue)){
			if (min != max){
				if (alertbox!="") {alert(alertbox+"\n"+"Le champ doit comporter entre "+min+" et "+max+" chiffres");} 
				return false;
			}
			else{
				if (alertbox!="") {alert(alertbox+"\n"+"Le champ doit comporter exactement "+min+" chiffres");} 
				return false;
			}
			
		}
		else {return true;}
	}
} 


// Fonction permettant de vérifier une valeur numérique
// ----------------------------------------------------
// - Si min != max : vérifie que le nombre est bien dans la fourchette donnée
// - Si la valeur contient un ',' il est remplacé par '.'
// - vérifcation qu'il ne s'agit pas d'un NaN, avec datatype non renseigné
// ----------------------------------------------------
// entered : l'OBJET contenant la valeur
// min : la valeur minimal
// max : la valeur maximale
// alertbox : est le texte retourné en cas d'erreur
// datatype : une vérification au niveau du type
// 
function valueValidation(entered, min, max, alertbox, datatype){
	
	
	
	with (entered){
	
		valeur = value.replace(/\,/g,".");
				
		if (isNaN(valeur) == true) {
					
				if (alertbox != "") {
					
						alert(alertbox);
						return false;
						
				} 
					
		}
		checkvalue=parseFloat(valeur);
		if (datatype){
			
			smalldatatype=datatype.toLowerCase();
			
			if (smalldatatype.charAt(0)=="i") {
				checkvalue=parseInt(valeur);
			}
			
			if (min != max) {
				if ((parseFloat(min)==min && checkvalue < min) || (parseFloat(max)==max && checkvalue > max) || value!=checkvalue){
					if (alertbox!="") {
						alert(alertbox+"\n"+"Le champ doit être compris entre "+min+" et "+max);
					} 
					return false;
				}
				return true;
			
			}
			else return true;
			
			
		}
		else {return true;}
	}
	
} 
