//******************************************************************************************************************//
//						test.js
//
//	09/02/2007	v1	Version initiale
//	06/04/2007	v2	Nouvelles fonctions test_numérique et test_radio
//	13/04/2007	v3	Ajout da la fonction test_date_null pour la saise d'une date non obligatoire
//	17/04/2007	v4	Ajout de la fonction test_numérique_null pour la saisie d'un numérique non obligatoire
//	21/08/2007	v5	Test de l'extension d'un nom de fichier
//******************************************************************************************************************//

function test_texte(pchamp,plibellé) {
//Fonction pour vérifier la saisie d'un champ texte
//Entrée : pchamp : le nom du champ à tester
//	   plibellé : le message à intégrer dans les message d'erreur
//Sortie : rien si c'est bon, une boite alerte et false si c'est pas bon

	if(document.getElementById(pchamp).value == ""){
		alert ("La saisie " +plibellé + " est obligatoire!");
		document.getElementById(pchamp).focus();
		return true;
	}
}//fin de test_texte

//-------------------------------------------------------------------------------------------------------------------------//
function test_select(pchamp,plibellé) {
//Fonction pour vérifier la saisie d'un champ liste déroulante sélect
//Entrée : pchamp : le nom du champ à tester
//	   plibellé : le message à intégrer dans les message d'erreur
//Sortie : rien si c'est bon, une boite alerte et false si c'est pas bon

	if(document.getElementById(pchamp).value == "*"){
		alert ("La saisie " +plibellé + " est obligatoire!");
		document.getElementById(pchamp).focus();
		return true;
	}

}//fin de test_texte

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

function test_date(pdate,plibellé) {
//Fonction pour vérifier la validité d'une date
//Entrée : pdate : la date à vérifier
//	   plibellé : le message à intégrer dans les message d'erreur
//Sortie : false -> la date est valide;  true : il y a une erreur

//si la variable est vide     
if (document.getElementById(pdate).value == "") { 
	alert ("La saisie de la date " + plibellé + " est obligatoire!");
	document.getElementById(pdate).focus();
	return true;
} 

//Vérification de la validité de la date
if (test_date_null(pdate,plibellé)) return true;

//si tout est bon
return false;

}//fin de test_date()


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

function test_date_null(pdate,plibellé) {
//Fonction pour vérifier la validité d'une où la saisie n'est pas obligatoire
//Entrée : pdate : la date à vérifier
//	   plibellé : le message à intégrer dans les message d'erreur
//Sortie : false -> la date est valide;  true : il y a une erreur

//si la variable est vide on ne fait aucun test     
if (document.getElementById(pdate).value == "") { 
	return false;
} 


//création de l'expression régulière pour masquer la date     
e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$"); 
     
//on vérifie que la date est au format jj/mm/aaaa
if (!e.test(document.getElementById(pdate).value)) {
	alert ("La date " + plibellé + " doit être au format jj/mm/aaaa!");
	document.getElementById(pdate).focus();
	return true;
    }

//On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier 
j = parseInt(document.getElementById(pdate).value.split("/")[0], 10); // jour 
m = parseInt(document.getElementById(pdate).value.split("/")[1], 10); // mois 
a = parseInt(document.getElementById(pdate).value.split("/")[2], 10); // année 
  
// 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); 
  
//vérifie si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux 
if (( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] )==false) {
	alert ("La date " + plibellé + " n'est pas valide");
	document.getElementById(pdate).focus();
	return true;
}

//si tout est bon
return false;

}//fin de test_date_null()


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

function test_numérique(pchamp,plibellé,pmini,pmaxi) {
//Fonction pour vérifier la saisie d'un champ numérique
//Entrée : pchamp : le nom du champ à tester
//	   plibellé : le message à intégrer dans les message d'erreur
//	   pmini : la valeur mini admissible pour la valeur saisie
//	   pmaxi : la valeur maxi admissible pour la valeur saisie
//Sortie : rien si c'est bon, une boite alerte et false si c'est pas bon

	if(document.getElementById(pchamp).value == ""){
		alert ("La saisie " +plibellé + " est obligatoire!");
		document.getElementById(pchamp).focus();
		return true;
	}

	//Vérification de la validité du numérique
	if (test_numérique_null(pchamp,plibellé,pmini,pmaxi)) return true;

	//si tout est bon
	return false;

}//fin de test_numérique

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

function test_numérique_null(pchamp,plibellé,pmini,pmaxi) {
//Fonction pour vérifier la saisie d'un champ numérique avec le null autorisé
//Entrée : pchamp : le nom du champ à tester
//	   plibellé : le message à intégrer dans les message d'erreur
//	   pmini : la valeur mini admissible pour la valeur saisie
//	   pmaxi : la valeur maxi admissible pour la valeur saisie
//Sortie : rien si c'est bon, une boite alerte et false si c'est pas bon

	//si la variable est vide on ne fait aucun test     
	if (document.getElementById(pchamp).value == "") { 
	return false;
	} 


    	if(isNaN(document.getElementById(pchamp).value)) { 
		alert ("La valeur "+plibellé+" doit être un numérique.");
		document.getElementById(pchamp).focus(); 
        	return true;
	}

    	if((document.getElementById(pchamp).value<pmini)||(document.getElementById(pchamp).value>pmaxi)) { 
		alert ("La valeur "+plibellé+" doit être comprise entre "+pmini+" et "+pmaxi);
		document.getElementById(pchamp).focus(); 
        	return true;
	}

//si tout est bon
return false;

}//fin de test_numérique_null

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

function test_radio(pchamp,plibellé) {
//Fonction pour vérifier la saisie d'un bouton radio
//Entrée : pchamp : le nom du champ à tester
//	   plibellé : le message à intégrer dans les message d'erreur
//Sortie : rien si c'est bon, une boite alerte et false si c'est pas bon

//On déclare la variable coche à 0 : rien de sélectionné par défaut
var coche = 0;

//Si on a un seul bouton, alors on le coche automatiquement
if (document.getElementsByName(pchamp).length==1)
	{
	coche=1;
	document.getElementsByName(pchamp)[0].checked=1;
	return false;
	}

//on fait ensuite un boucle sur le nombre de boutons pour les passer en revue un par un.
for (var i=0; i < (document.getElementsByName(pchamp).length); i++)
	{
	//on regarde si l'élément est "checked". Si oui, on passe la variable coche à 1
	if (document.getElementsByName(pchamp)[i].checked)
		{
		coche=1;
		}
	}

if (coche == 0)
	{
	//Aucun bouton n'est coché
	alert ("La saisie " +plibellé + " est obligatoire!");
		return true;
	}

}//fin de test_radio

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

function test_fichier(pchamp,pextension) {
//Fonction pour vérifier l'extension d'un nom de fichier
//Entrée : pchamp : le nom du champ à tester
//	   pextension : l'extension souhaitée pour le fichier
//Sortie : rien si c'est bon, une boite alerte et false si c'est pas bon

	if(document.getElementById(pchamp).value == ""){
		alert ("La saisie du nom de fichier est obligatoire!");
		document.getElementById(pchamp).focus();
		return true;
	}

    	if (document.getElementById(pchamp).value.split('.').reverse()[0] != pextension) { 
		alert ("Le fichier sélectionné doit au format *." + pextension);
		document.getElementById(pchamp).focus(); 
        	return true;
	}

//si tout est bon
return false;

}//fin de test_fichier

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

function test_fichier_null(pchamp,pextension) {
//Fonction pour vérifier l'extension d'un nom de fichier avec le null autorisé
//Entrée : pchamp : le nom du champ à tester
//	   pextension : l'extension souhaitée pour le fichier
//Sortie : rien si c'est bon, une boite alerte et false si c'est pas bon

	if(document.getElementById(pchamp).value == ""){
		return false;
	}

    	if (document.getElementById(pchamp).value.split('.').reverse()[0] != pextension) { 
		alert ("Le fichier sélectionné doit au format *." + pextension);
		document.getElementById(pchamp).focus(); 
        	return true;
	}

//si tout est bon
return false;

}//fin de test_fichier_null

