/************************************************************************************************/
/*												*/
/*								MODULES DE CONTROLE		*/
/*								-------------------		*/
/*												*/
/*	Auteur : Loic LAVOUE									*/
/*	UNILOG											*/
/*	Modification :Julien FEZARD 02/2001							*/
/*	Objet : Interdiction des " et ; pour les champs Txt dans le CheckFilledFields		*/
/*  Modification du 24/03/2001 par Antony PUIRAVEAUD : certains champs doivent 			*/
/*                        accepter les tirets -> création de CheckSpecialNames			*/
/*                        et de CheckSpecialExtendedNames					*/
/*  Modification du 20/07/2001 par Antony PUIRAVEAUD : création de la fonction			*/
/*                        CheckRelativeNumberConsistency pour pouvoir insérer des  		*/
/*                        gains de PP négatifs (désactivée pour l'instant)			*/
/*  Modification du 14/09/2001 par David DA SILVA : création dans le CheckFilledFields	        */
/*                        d'une vérification si le type est 'MLt' (liste à choix multiples)	*/
/*  Modification du 04/02/2002 par Josselin JOUANNY : activation de la fonction 		*/
/*                        CheckRelativeNumberConsistency et ajout de cette fonction dans le     */
/*                        CheckFilledFields (type 'r')						*/
/*  Modification du 10/07/2002 par Julien HILAIRE : modif de la fonction verifSaisonDate        */
/*                        --> on en lance pas de vérification de date pour les champs qui       */
/*                        sont en 'disabled'	                                                */
/*  Modification du 07/01/2003 par Sylvie TANG : modif de la fonction CheckDateConsistency      */
/*                        --> on en lance pas de vérification du format de date si pas de saisie*/
/*                        facultatifs  	                                                        */
/*  Modification du 20/04/2004 par Stéphanie meite : modif de toutes les fonctions pour l'utilisation  */
/*                        sur le site public et le site d egestion : on gère le decoupage       */
/*                        en frame ou non                                                       */
/************************************************************************************************/

function CheckDateConsistency(numeroChamp,numeroFrame,TypeDeChamp)	// on vérifie que la date est bien une date du type jj/mm/aaaa
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
	var objForm = "window.parent.frames[numeroFrame].document.forms[0].";
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
	var objForm = "document.forms[0].";
}
//on sait que la date est sous forme jj/mm/aaaa
var tab=obj.value.split("/");
var tab2=obj.name.split("_");
var taille=tab2.length;
var nom="";
var nomChamp=obj.name;
var tab_mois = new Array(31,28,31,30,31,30,31,31,30,31,30,31);


// Génération du nom du champ
for(j=2;j<taille;j++)
	{
	nom +=tab2[j]+" ";
	}

// Génération du nom de champ détail, format : 'o'n_Txt_'Nom_Champ_'jour/mois/annee
nomChamp = tab2[0].charAt(0);


nomChamp += "n_Txt_";

for(j=2;j<taille;j++)
	{
	nomChamp +=tab2[j]+"_";
	}


var erreur=false;

// on effectue les controles de saisie si et seulement si une valeur a été saisie
if (obj.value != '') {

if (tab.length!=3)	// on vérifie qu'il y a bien 2 / et trois champs dans la date
	{
	erreur=true;
	alert("Le format de date que vous avez saisi dans le champ " + nom + " n'est pas valide (jj/mm/aaaa)");
	if (TypeDeChamp != "Hid")
		{
		obj.focus();
		}
	return erreur;
	}
else
	{
	var jour=tab[0];
	var mois=tab[1];
	var annee=tab[2];

	if(isNaN(jour))	// le jour doit être numérique...
		{
		alert("Le jour doit être saisi sous forme numérique dans le champ " + nom);
		erreur=true;
		if (TypeDeChamp != "Hid")
			{
			obj.focus();
			}
		else
			{
			eval(objForm + nomChamp + "Jour.focus();");
			}
		return erreur;
		}
	if (mois == 2) // gestion des années bissextile
		{
		if (annee%4 == 0 && annee%100 !=0 || annee%400 == 0)
			{
			tab_mois[1]=29;
			}
		}	
	if ((jour<1)||(jour>tab_mois[mois-1]))	// ... et compris entre 1 et le nombre maximum de jours du mois saisi
		{
		erreur=true;
		alert("Le jour doit être compris entre 1 et " + tab_mois[mois-1] + " dans le champ " + nom);
		if (TypeDeChamp != "Hid")
			{
			obj.focus();
			}
		else
			{
			eval(objForm + nomChamp +"Jour.focus();");
			}
		return erreur;
		}
	if(isNaN(mois))	// le mois doit être numérique...
		{
		alert("Le mois doit être saisi sous forme numérique dans le champ " + nom);
		erreur=true;
		if (TypeDeChamp != "Hid")
			{
			obj.focus();
			}
		else
			{
			eval(objForm + nomChamp +"Mois.focus();");
			}
		return erreur;
		}
	if ((mois<1)||(mois>12))	//... et compris entre 1 et 12
		{
		erreur=true;
		alert("Le mois doit être compris entre 1 et 12 dans le champ " + nom);
		if (TypeDeChamp != "Hid")
			{
			obj.focus();
			}
		else
			{
			eval(objForm + nomChamp +"Mois.focus();");
			}
		return erreur;
		}
	if(isNaN(annee))	// l'année doit être numérique
		{
		alert("L'année doit être saisie sous forme numérique dans le champ " + nom);
		erreur=true;
		if (TypeDeChamp != "Hid")
			{
			obj.focus();
			}
		else
			{
			eval(objForm + nomChamp +"Annee.focus();");
			}
		return erreur;
		}
	if(tab[2].length!=4)	// l'année doit être saisie sur 4 caractères
		{
		alert("L'année doit être saisie sur 4 chiffres dans le champ " + nom);
		erreur=true;
		if (TypeDeChamp != "Hid")
			{
			obj.focus();
			}
		else
			{
			eval(objForm + nomChamp +"Annee.focus();");
			}
		return erreur;
		}
	if(annee<1815)    // l'année doit être supérieure à 1815
		{
		alert("L'année doit être supérieure à 1815 dans le champ " + nom);
		erreur=true;
		if (TypeDeChamp != "Hid")
			{
			obj.focus();
			}
		else
			{
			eval(objForm + nomChamp +"Annee.focus();");
			}
		return erreur;
		}
	}
}
return erreur;
}

/***********************************************************************************/

function CheckTimeConsistency(numeroChamp,numeroFrame)	// on vérifie que l'heure est bien entree sous le format hh(h)mm
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
var str=new String(obj.value);
var tab=obj.value.split("h");
var erreur=false;
var tab2=obj.name.split("_");
var taille=tab2.length;
var nom="";
// Récupération du nom du champ
for(j=2;j<taille;j++) 
	nom +=tab2[j]+" ";

if (tab.length!=2)	// on vérifie qu'il y a bien deux champs dans l'heure saisie
	{
	erreur=true;
	alert("L'heure que vous avez saisie dans le champ " + nom + " n'est pas valide. Le format est : ..h..");
	obj.focus();
	return erreur;
	}
else
	{
	var heure=tab[0];
	var minute=tab[1];

	if(isNaN(heure))	// l'heure doit être numérique...
		{
		alert("L'heure doit être saisie sous forme numérique dans le champ " + nom);
		erreur=true;
		obj.focus();
		return erreur;
		}
	if ((heure<0)||(heure>23))	// ... et comprise entre 0 et 23...
		{
		erreur=true;
		alert("L'heure doit être comprise entre 0 et 23 dans le champ " + nom);
		obj.focus();
		return erreur;
		}
	if(heure.length!=2)	//... et ecrite sur 2 chiffres exactement
		{
		erreur=true;
		alert("L'heure doit être saisie dans le champ " + nom + " avec 2 chiffres exactement");
		obj.focus();
		return erreur;
		}
	if(isNaN(minute))	// Les minutes doivent etre saisies sous forme numerique...
		{
		alert("Les minutes doivent être saisies sous forme numérique dans le champ " + nom);
		erreur=true;
		obj.focus();
		return erreur;
		}
	if ((minute<0)||(minute>59))	// ... et comprises entre 0 et 59...
		{
		erreur=true;
		alert("Les minutes doivent être comprises entre 0 et 59 dans le champ " + nom);
		obj.focus();
		return erreur;
		}
	if(minute.length!=2)		//...et ecrite sur 2 chiffres exactement
		{
		erreur=true;
		alert("Les minutes doivent être saisies dans le champ " + nom + " avec 2 chiffres exactement");
		obj.focus();
		return erreur;
		}
	}
return erreur;
}

/***********************************************************************************/
function CheckNumberConsistency(numeroChamp,numeroFrame)	// vérifie que les champs de type numérique entier ne contiennent bien que des nombres entiers
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
var erreur=false;
// Récupération du champ pour tester chaque élément.
var tab = obj.value;
var taille=tab.length;

var tab2=obj.name.split("_");
var taille2=tab2.length;
// Récupération du nom du champ
var nom="";
for(j=2;j<taille2;j++)
	nom +=tab2[j]+" ";

if (obj.value=="")
	{
	alert("Vous devez entrer une valeur numérique pour le champ " + nom);
	erreur=true;
	obj.focus();
	return erreur;
	}
else
	{
	for(k=0;k<taille;k++)
		{
		if ((tab.charCodeAt(k)<48)||(tab.charCodeAt(k)>57))
			{
			alert("Vous devez entrer une valeur numérique pour le champ " + nom);
			erreur=true;
			obj.focus();
			return erreur;
			}
		}
	}

return erreur;
}

/***********************************************************************************/
function CheckRelativeNumberConsistency(numeroChamp,numeroFrame)	// vérifie que les champs de type numérique entier ne contiennent bien que des nombres entiers, et éventuellement un - ("moins")
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
var erreur=false;
// Récupération du champ pour tester chaque élément.
var tab = obj.value;
var taille=tab.length;

var tab2=obj.name.split("_");
var taille2=tab2.length;
// Récupération du nom du champ
var nom="";
for(j=2;j<taille2;j++)
	nom +=tab2[j]+" ";

if (obj.value=="")
	{
	alert("Vous devez entrer une valeur numérique relative pour le champ " + nom);
	erreur=true;
	obj.focus();
	return erreur;
	}
else
	{
	for(k=0;k<taille;k++)
		{
		if (k==0)
		// Le premier caractère peut être soit un chiffre soit un signe "moins"
			{
			if (((tab.charCodeAt(k)<48)||(tab.charCodeAt(k)>57))&&(tab.charCodeAt(k)!=45))
				{
				alert("Vous devez entrer une valeur numérique relative pour le champ " + nom);
				erreur=true;
				obj.focus();
				return erreur;
				}
			}		
		else
			{
			if ((tab.charCodeAt(k)<48)||(tab.charCodeAt(k)>57))
				{
				alert("Vous devez entrer une valeur numérique relative pour le champ " + nom);
				erreur=true;
				obj.focus();
				return erreur;
				}
			}
		}
	}

return erreur;
}
// En attendant de la réactiver on remplace par CheckNumberConsistency
//{
//var erreur=false;
// Récupération du champ pour tester chaque élément.
//var tab = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp].value;
//var taille=tab.length;
//
//var tab2=window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp].name.split("_");
//var taille2=tab2.length;
// Récupération du nom du champ
//var nom="";
//for(j=2;j<taille2;j++)
//	nom +=tab2[j]+" ";
//
//if (window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp].value=="")
//	{
//	alert("Vous devez entrer une valeur numérique pour le champ " + nom);
//	erreur=true;
//	window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp].focus();
//	return erreur;
//	}
//else
//	{
//	for(k=0;k<taille;k++)
//		{
//		if ((tab.charCodeAt(k)<48)||(tab.charCodeAt(k)>57))
//			{
//			alert("Vous devez entrer une valeur numérique pour le champ " + nom);
//			erreur=true;
//			window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp].focus();
//			return erreur;
//			}
//		}
//	}
//
//return erreur;
//}

/***********************************************************************************/
function CheckDecimalConsistency(numeroChamp,numeroFrame)	// vérifie que les champs de type numérique ne contiennent bien que des nombres
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
var erreur=false;
var tab2=obj.name.split("_");
var taille=tab2.length;
var nom="";
for(j=2;j<taille;j++) nom +=tab2[j]+" ";

if ((isNaN(obj.value))||(obj.value==""))
	{
	alert("Vous devez entrer une valeur numérique pour le champ " + nom);
	erreur=true;
	obj.focus();
	return erreur;
	}
return erreur;
}

/***********************************************************************************/

function CompareDateToCurrentDate(numeroChamp,numeroFrame)  // on vérifie que la date rentrée par l'utilisateur est bien inférieure à la date du jour (ex : date de naissance)
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
var d=new Date();
var erreur=false;
var tab=obj.value.split("/");	// on récupère sous forme de tableau les éléments de la date rentrée par l'utilisateur
var tab2=obj.name.split("_");
var taille=tab2.length;
var nom="";
for(j=2;j<taille;j++) nom +=tab2[j]+" ";

erreur=CheckDateConsistency(numeroChamp,numeroFrame,"")	// on vérifie que l'utilisateur a rentré une date valide
if (!erreur)
	{
	var jour=tab[0];
	var mois=tab[1];
	var annee=tab[2];
	var year=d.getFullYear();
	var month=d.getMonth()+1;
	var day=d.getDate();
			
	if ((year<annee)||((year==annee)&&(month<mois))||((year==annee)&&(month==mois)&&(day<jour)))
		{
		alert("La date que vous avez entrée dans le champ " + nom + " est supérieure à la date du jour");
		erreur=true;
		obj.focus();
		return erreur;
		}
	}
return erreur;
}

/***********************************************************************************/

function CompareDateToDate(numero1,numero2,numeroFrame)  // on vérifie que la date rentrée par l'utilisateur est bien inférieure à la 2eme date rentree
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0];
}
catch(ex)
{
	var obj = document.forms[0];
}
var erreur=false;
var tab=obj.elements[numero1].value.split("/");	// on récupère sous forme de tableau les éléments de la date rentrée par l'utilisateur
var tab2=obj.elements[numero2].value.split("/");	// on récupère sous forme de tableau les éléments de la date rentrée par l'utilisateur
var tab3=obj.elements[numero1].name.split("_");
var taille=tab3.length;
var nom="";
for(j=2;j<taille;j++) nom +=tab3[j]+" ";

var numeroChamp=numero1;
erreur=CheckDateConsistency(numeroChamp,numeroFrame,"")	// on vérifie que l'utilisateur a rentré une date valide
if(erreur) return;
erreur=CompareDateToCurrentDate(numeroChamp,numeroFrame);
if(erreur) return;
var numeroChamp=numero2;
erreur=CheckDateConsistency(numeroChamp,numeroFrame,"")	// on vérifie que l'utilisateur a rentré une date valide
if(erreur) return;
if (!erreur)
	{
	var jour=tab[0];
	var mois=tab[1];
	var annee=tab[2];
	var year=tab2[2];
	var month=tab2[1];
	var day=tab2[0];
			
	if ((year<annee)||((year==annee)&&(month<mois))||((year==annee)&&(month==mois)&&(day<jour)))
		{
		alert("La date de début que vous avez entrée dans le champ " + nom + " est supérieure à la date de fin");
		erreur=true;
		obj.elements[numero1].focus();
		obj.elements[numero2].focus();
		return erreur;
		}
	}
return erreur;
}

/***********************************************************************************/

function CheckNames(numeroChamp,numeroFrame)	// vérifie que l'utilisateur a bien rentre un nom dans le formulaire (i.e. seulement des caractères accentués ou non, des espaces, des apostrophes ou des tirets)
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
var size=obj.value.length;
var codeLettre=0;
var erreur=false;
var tab2=obj.name.split("_");
var taille=tab2.length;
var nom="";
for(j=2;j<taille;j++)
	nom +=tab2[j]+" ";

WriteInUpperCase(numeroChamp,numeroFrame);	// on ne fait la vérif que sur le champ mis en majuscule (moins de valeurs à vérifier)
for (i=0; i<size; i++)
	{
	codeLettre=obj.value.charCodeAt(i);
	if (((codeLettre<65)||(codeLettre>90))&&(codeLettre!=39)&&(codeLettre!=32) // 32 code l'espace et 39 l'apostrophe
		&&((codeLettre<192)||(codeLettre>197))
		&&((codeLettre<200)||(codeLettre>207))
		&&((codeLettre<210)||(codeLettre>214))
		&&((codeLettre<217)||(codeLettre>221))
		&&(codeLettre!=199)
		&&(codeLettre!=45)
		&&((codeLettre<224)||(codeLettre>239))
		&&((codeLettre<242)||(codeLettre>246))
		&&((codeLettre<249)||(codeLettre>253))
		&&(codeLettre!=255))
		{
		alert("Vous ne pouvez saisir que des lettres, des apostrophes, des espaces ou des tirets dans le champ " + nom);
		erreur=true;
		obj.focus();
		return erreur;
		}
	}
return erreur;
}
	
/***********************************************************************************/

function CheckExtendedNames(numeroChamp,numeroFrame)		//cette fonction est l'identique de la précédente, sauf qu'elle autorise également à l'utilisateur la saisie de chiffres de 0 à 9
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
var size=obj.value.length;
var codeLettre=0;
var erreur=false;
var tab2=obj.name.split("_");
var taille=tab2.length;
var nom="";
for(j=2;j<taille;j++)
	nom +=tab2[j]+" ";

//WriteInUpperCase(numeroChamp,numeroFrame);	// on ne fait la vérif que sur le champ mis en majuscule (moins de valeurs à vérifier)
for (i=0; i<size; i++)
	{
	codeLettre=obj.value.charCodeAt(i);
	if (((codeLettre<65)||(codeLettre>90))&&(codeLettre!=39)&&(codeLettre!=32) // 32 code l'espace et 39 l'apostrophe
		&&((codeLettre<192)||(codeLettre>197))
		&&((codeLettre<200)||(codeLettre>207))
		&&((codeLettre<210)||(codeLettre>214))
		&&((codeLettre<217)||(codeLettre>221))
		&&(codeLettre!=199)
		&&(codeLettre!=45)
		&&(codeLettre!=46)
		&&((codeLettre<97)||(codeLettre>122))
		&&((codeLettre<224)||(codeLettre>239))
		&&((codeLettre<242)||(codeLettre>246))
		&&((codeLettre<249)||(codeLettre>253))
		&&(codeLettre!=255)
		&&((codeLettre<48)||(codeLettre>57)))
		{
		alert("Vous ne pouvez saisir que des lettres, des apostrophes, des espaces, des tirets ou des chiffres dans le champ " + nom);
		erreur=true;
		obj.focus();
		return erreur;
		}
	}
return erreur;
}

/***********************************************************************************/
//Ajout du 24/03/2001
 
function CheckSpecialNames(numeroChamp,numeroFrame)	// identique à la précédente, accepte en plus des tirets
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
var size=obj.value.length;
var codeLettre=0;
var erreur=false;
var tab2=obj.name.split("_");
var taille=tab2.length;
var nom="";
for(j=2;j<taille;j++) nom +=tab2[j]+" ";

WriteInUpperCase(numeroChamp,numeroFrame);	// on ne fait la vérif que sur le champ mis en majuscule (moins de valeurs à vérifier)
for (i=0; i<size; i++)
	{
	codeLettre=obj.value.charCodeAt(i);
	if (((codeLettre<65)||(codeLettre>90))&&(codeLettre!=39)&&(codeLettre!=32)&&(codeLettre!=45))	// 32 code l'espace et 39 l'apostrophe
		{
		alert("Vous ne pouvez saisir que des lettres non accentuées, des apostrophes ou des tirets dans le champ " + nom);
		erreur=true;
		obj.focus();
		return erreur;
		}
	}
return erreur;
}
		
/***********************************************************************************/

function CheckExtendedNames(numeroChamp,numeroFrame)		//cette fonction est l'identique de la précédente, sauf qu'elle autorise également à l'utilisateur la saisie de chiffres de 0 à 9
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
var size=obj.value.length;
var codeLettre=0;
var erreur=false;
var tab2=obj.name.split("_");
var taille=tab2.length;
var nom="";
for(j=2;j<taille;j++) nom +=tab2[j]+" ";

WriteInUpperCase(numeroChamp,numeroFrame);
for (i=0; i<size; i++)
	{
	codeLettre=obj.value.charCodeAt(i);
	if(((codeLettre<65)||(codeLettre>90))&&(codeLettre!=39)&&(codeLettre!=32)&&((codeLettre<48)||(codeLettre>57)))
		{
		alert("Vous ne pouvez saisir que des caractères non accentués, des apostrophes ou des chiffres dans le champ " + nom);
		erreur=true;
		obj.focus();
		return erreur;
		}
	}
return erreur;
}

/***********************************************************************************/
// Ajout du 24/03/2001 : création de cette fonction (identique à la précédente) pour accepter en plus les tirets 

function CheckSpecialExtendedNames(numeroChamp,numeroFrame)		//cette fonction est l'identique de la précédente, sauf qu'elle autorise également à l'utilisateur la saisie de chiffres de 0 à 9
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
var size=obj.value.length;
var codeLettre=0;
var erreur=false;
var tab2=obj.name.split("_");
var taille=tab2.length;
var nom="";
for(j=2;j<taille;j++) nom +=tab2[j]+" ";

WriteInUpperCase(numeroChamp,numeroFrame);
for (i=0; i<size; i++)
	{
	codeLettre=obj.value.charCodeAt(i);
	if(((codeLettre<65)||(codeLettre>90))&&(codeLettre!=39)&&(codeLettre!=32)&&(codeLettre!=45)&&((codeLettre<48)||(codeLettre>57)))
		{
		alert("Vous ne pouvez saisir que des caractères non accentués, des apostrophes, des tirets ou des chiffres dans le champ " + nom);
		erreur=true;
		obj.focus();
		return erreur;
		}
	}
return erreur;
}

/***********************************************************************************/

function CheckHTMLNames(numeroChamp,numeroFrame)		//cette fonction est l'identique de la précédente, sauf qu'elle n'autorise que les lettres non accentuées, les chiffres, les _ ou les tirets
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
var size=obj.value.length;
var codeLettre=0;
var erreur=false;
var tab2=obj.name.split("_");
var taille=tab2.length;
var nom="";
for(j=2;j<taille;j++) nom +=tab2[j]+" ";

//WriteInUpperCase(numeroChamp,numeroFrame);	// on ne fait la vérif que sur le champ mis en majuscule (moins de valeurs à vérifier)
for (i=0; i<size; i++)
	{
	codeLettre=obj.value.charCodeAt(i);
	if(((codeLettre<65)||(codeLettre>90))&&((codeLettre<48)||(codeLettre>57))&&((codeLettre<97)||(codeLettre>122))&&(codeLettre!=95)&&(codeLettre!=45)&&(codeLettre!=46))
		{
		alert("Vous ne pouvez saisir que des lettres non accentuées, des chiffres, des tirets ou des _ dans le champ " + nom);
		erreur=true;
		obj.focus();
		return erreur;
		}
	}
return erreur;
}

/***********************************************************************************/

function CheckAddressNumberConsistency(numeroChamp,numeroFrame)		// on vérifie que l'adresse saisie par l'utilisateur commence bien par un chiffre
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
var erreur=false;


var tab2=obj.name.split("_");


var taille=tab2.length;
var nom="";
for(j=2;j<taille;j++) nom +=tab2[j]+" ";

if(obj.value=="")
	{
	return erreur;
	}
if (isNaN(obj.value.charAt(0)))
	{
	alert("Le numéro de voie doit commencer par un chiffre");
	erreur=true;
	obj.focus();
	return erreur;
	}

return erreur;
}

/***********************************************************************************/

function CheckAddress(num_voie, typ_voie, libelle_voie, complement_adresse, code_postal, ville, numeroFrame)
{
// Test la cohérence dans la saisie de l'adresse
var message="Veuillez saisir"; 
var erreur=false;

// Tout comme la fonction CheckAddressNumberConsistency, on teste que le n° de voie commence par un chiffre
if (isNaN(num_voie.charAt(0)))
	{
	alert("Le numéro de voie doit commencer par un chiffre");
	erreur=true;
	return erreur;
	}

if ( (num_voie != "") || (typ_voie != "") || (libelle_voie != "") ) // on teste si l'adresse est incomplète
	{
	if ( (num_voie == "") || (typ_voie == "") || (libelle_voie == "") ) // test du libelle de voie
		{
		alert("Veuillez saisir une adresse complète.");
		erreur=true;
		return erreur;
		}
	}
else
	{
	if (complement_adresse == "") // si l'adresse et le complément d'adresse sont vides -> erreur
		{
		alert("Veuillez saisir une adresse complète ou un complément d'adresse.");
		erreur=true;
		}
	}

return erreur;
}

/***********************************************************************************/

function CheckMail(numeroChamp,numeroFrame)	// vérifie que l'utilisateur a bien rentre un e-mail (format : xxxx@xxx.xx)
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
var tab=obj.value.split("@");
var taille=tab.length;
var erreur = false;
var codeLettre="";
var i=0;
var j=0;
var nom="";
for(j=2;j<taille;j++) nom +=tab2[j]+" ";

// Vérification du format xx@xx.xx
if (tab[0] == "" || tab[1] == "" || taille != 2)
	{
	erreur = true;
	}
else
	{
	var tab2=tab[1].split(".");
	var taille2=tab2.length;
	if (tab2[0] == "" || tab2[1] == "" || taille2 < 2)
		{
		erreur = true;
		}
	}

// Test de cohérences des caractères saisis 
for (i=0; i<taille; i++)
	{
	for (j=0; j<tab[i].length; j++)
		{
		codeLettre=tab[i].charCodeAt(j);
		if(((codeLettre<65)||(codeLettre>90))&&((codeLettre<48)||(codeLettre>57))&&((codeLettre<97)||(codeLettre>122))&&(codeLettre!=95)&&(codeLettre!=46)&&(codeLettre!=45))
			{
			erreur = true;
			}
		}
	}

if (erreur)
	{
	alert("L'adresse e-mail saisie dans le champ " + nom + " n'est pas valide.");
	obj.focus();
	}
return erreur;
}

/***********************************************************************************/

function WriteInUpperCase(numeroChamp,numeroFrame)	// formate un champ en le passant automatiquement en majuscule avant submit (ex : nom de famille)
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
obj.value=obj.value.toUpperCase();
}

/***********************************************************************************/

function WriteInLowerCase(numeroChamp,numeroFrame)	// formate un champ en le passant automatiquement en minuscule avant submit (ex : email)
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
obj.value=obj.value.toLowerCase();
}

/***********************************************************************************/
	
function CheckFilledFields(numeroFrame)	// cette procédure parcourt l'ensemble d'un formulaire et analyse les noms des champs et leur applique le bon controle le cas echeant
{
var erreur=false;
var TypeDeSaisie;
var TypeDeFormat;
var TypeDeChamp;
var numeroChamp=0;
try{
var size=window.parent.frames[numeroFrame].document.forms[0].elements.length;
}
catch(ex)
{
var size=document.forms[0].elements.length;
}
for (i=0;i<size;i++)
	{
	numeroChamp=i;
	try{
		var tab = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp].name.split("_");
		var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
	}
	catch(ex)
	{
		var tab=document.forms[0].elements[numeroChamp].name.split("_");
		var obj = document.forms[0].elements[numeroChamp];
	}

	//en position 2, on va trouver le type de champ (numerique, booleen, etc...)
	TypeDeChamp=tab[1];
	TypeDeSaisie=obj.name.charAt(0);	// la première lettre d'un nom de champ indique sa nécessité
	TypeDeFormat=obj.name.charAt(1);	// la deuxième lettre indique le type de données attendues dans le champ
	var taille=tab.length;
	var nom="";
	for(j=2;j<taille;j++) nom +=tab[j]+" ";
	if ((TypeDeFormat=="h")||(TypeDeSaisie=="h"))		//h indique un champ cache -> on ne fait aucun controle
		{
		continue;
		}
	if (TypeDeFormat=="b")		// b indique que l'on attend un booléen -> c'est soit un radiogroup, soit une checkbox et il faudra alors implementer un controle plus specifique
		{
		continue;
		}
	if (TypeDeFormat=="o")		// o indique que l'on attend un objet
		{
		if ((TypeDeSaisie=="o")&&((obj.value=="")||(obj.value=="*****")||(obj.value==" ")))	// o indique un champ obligatoire -> on teste qu'il a bien été rempli
			{
			alert("La saisie du champ " + nom + " est obligatoire");
			obj.focus();
			erreur=true;
			return erreur;
			}
		else
			{	
			continue;
			}
		}
// Traitement des champs String avec doublement des quotes
	if(TypeDeFormat=="q")
		{	  
	  	var avant="";
		avant=obj.value;
      	var apres="";
     	var taille=avant.length
      	for(j=0;j<taille;j++)
		   {
		   if(avant.charAt(j)=="\'")
				apres+="\'\'"
		   else
				apres += avant.charAt(j);
	   	   }
	  	obj.value=apres;
	 	}	
// Interdiction des guillements et des ;
	if (TypeDeChamp=="Txt")
		{
		var strChamp ="";
		var reG = new RegExp(String.fromCharCode(34),"g"); 
		var rePV = new RegExp(";","g"); 
		
		strChamp = obj.value;
		
		if (reG.test(strChamp))
		{
		alert("Vous ne pouvez pas saisir de guillemet dans le champ " + nom);
		erreur = true;		
		return erreur;
		}
		else if (rePV.test(strChamp))
		{
		alert("Vous ne pouvez pas saisir de point virgule dans le champ " + nom);
		erreur = true;		
		return erreur;
		}
		else {}
		}
//on va d'abord effectuer les controles si la zone selectionnee est une zone texte
	if(TypeDeChamp=="Txt" || TypeDeChamp=="TxA") 
		{
// si typedechamp=Txt, on vérifie qu'il n'y a pas de parenthèses dans la zone de saisie	
		if (TypeDeChamp=="Txt")
			{
			taille= obj.size;
			for(j=0;j<taille;j++)
				{
				if((obj.value.charCodeAt(j)==40)||(obj.value.charCodeAt(j)==41))
					{
					alert("Vous ne pouvez pas saisir de parenthèses dans le champ " + nom);
					obj.focus();
					return true;
					}
				}
			}
//zone de saisie obligatoire non remplie
		if ((TypeDeSaisie=="o")&&((obj.value=="")||(obj.value=="*****")||(obj.value==" ")))	// o indique un champ obligatoire -> on teste qu'il a bien été rempli
			{
			alert("La saisie du champ " + nom + " est obligatoire");
			obj.focus();
			erreur=true;
			return erreur;
			}
//zone de date obligatoire
		if ((TypeDeFormat=="d")&&(TypeDeSaisie=="o"))	// d indique qu'un format de type date est attendu
			{
			erreur=CheckDateConsistency(numeroChamp,numeroFrame,TypeDeChamp);
			if(erreur)
				{
				return erreur;
				}
			}
//zone date facultative -> on ne fait un controle qu s'il y a qqc de saisi
		if ((TypeDeFormat=="d")&&(TypeDeSaisie=="f"))
			{
			if(window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp].value!="")
				{
				erreur=CheckDateConsistency(numeroChamp,numeroFrame,TypeDeChamp);
				if(erreur)
					{
					return erreur;
					}
				}
			}
//zone numerique obligatoire
		if ((TypeDeFormat=="n")&&(TypeDeSaisie=="o"))		// n indique qu'un type numérique est attendu
			{
			erreur=CheckNumberConsistency(numeroChamp,numeroFrame);
			if(erreur)
				{
				return erreur;
				}
			}
//zone numerique facultative -> on ne fait un controle que s'il y a qqc de saisi
		if ((TypeDeFormat=="n")&&(TypeDeSaisie=="f")&&(obj.value!=""))
			{
			erreur=CheckNumberConsistency(numeroChamp,numeroFrame);
			if(erreur)
				{
				return erreur;
				}
			}
//zone décimale obligatoire
		if ((TypeDeFormat=="v")&&(TypeDeSaisie=="o"))		// v indique qu'un type décimal est attendu
			{
			erreur=CheckDecimalConsistency(numeroChamp,numeroFrame);
			if(erreur)
				{
				return erreur;
				}
			}
//zone décimale facultative -> on ne fait un controle que s'il y a qqc de saisi
		if ((TypeDeFormat=="v")&&(TypeDeSaisie=="f")&&(obj.value!=""))
			{
			erreur=CheckDecimalConsistency(numeroChamp,numeroFrame);
			if(erreur)
				{
				return erreur;
				}
			}


// Modif du 04/02/2002 : ajout de la vérif de nombre relatif
//zone nb relatif obligatoire
		if ((TypeDeFormat=="r")&&(TypeDeSaisie=="o"))		// r indique qu'un type nb relatif est attendu
			{
			erreur=CheckRelativeNumberConsistency(numeroChamp,numeroFrame);
			if(erreur)
				{
				return erreur;
				}
			}
//zone nb relatif facultative -> on ne fait un controle que s'il y a qqc de saisi
		if ((TypeDeFormat=="r")&&(TypeDeSaisie=="f")&&(obj.value!=""))
			{
			erreur=CheckRelativeNumberConsistency(numeroChamp,numeroFrame);
			if(erreur)
				{
				return erreur;
				}
			}
// Fin de la modif du 04/02/2002


//zone d'heure obligatoire
		if ((TypeDeFormat=="t")&&(TypeDeSaisie=="o"))	// t indique qu'un format de type heure est attendu
			{
			erreur=CheckTimeConsistency(numeroChamp,numeroFrame);
			if(erreur)
				{
				return erreur;
				}
			}
//zone d'heure facultative -> on ne fait un controle qu s'il y a qqc de saisi
		if ((TypeDeFormat=="t")&&(TypeDeSaisie=="f"))
			{
			if(obj.value!="")
				{
				erreur=CheckTimeConsistency(numeroChamp,numeroFrame);
				if(erreur)
					{
					return erreur;
					}
				}
			}
//zone d'identifiant obligatoire
		if ((TypeDeFormat=="i")&&(TypeDeSaisie=="o"))	// i indique qu'un format de type identifiant est attendu
			{
			erreur=CheckNames(numeroChamp,numeroFrame);
			if(erreur)
				{
				return erreur;
				}
			}
//zone d'identifiant facultative -> on ne fait un controle qu s'il y a qqc de saisi
		if ((TypeDeFormat=="i")&&(TypeDeSaisie=="f"))
			{
			if(obj.value!="")
				{
				erreur=CheckNames(numeroChamp,numeroFrame);
				if(erreur)
					{
					return erreur;
					}
				}
			}
//zone d'email obligatoire
		if ((TypeDeFormat=="e")&&(TypeDeSaisie=="o"))	// e indique qu'un format de type e-mail
			{
			erreur=CheckMail(numeroChamp,numeroFrame);
			if(erreur)
				{
				return erreur;
				}
			}
//zone de email facultative -> on ne fait un controle qu s'il y a qqc de saisi
		if ((TypeDeFormat=="e")&&(TypeDeSaisie=="f"))
			{
			if(obj.value!="")
				{
				erreur=CheckMail(numeroChamp,numeroFrame);
				if(erreur)
					{
					return erreur;
					}
				}
			}		
		}


// c'est une drop down
	if(TypeDeChamp=="DDn")
		{
//selection d'une valeur obligatoire
		if((TypeDeSaisie=="o")&&(Number(obj.selectedIndex)==-1))
			{
			alert("Vous devez sélectionner une valeur dans la liste " + nom);
			//window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp].selectedIndex=window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp].length-1;
			erreur=true;
			return erreur;
			}
		else
			{
			if((TypeDeSaisie=="o")&&(obj.options[obj.selectedIndex].text==""))
				{
				alert("Vous devez sélectionner une valeur dans la liste " + nom);
				//window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp].selectedIndex=window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp].length-1;
				erreur=true;
				return erreur;
				}
			}
		}

// Début de la modif du 14/09/2001 par DDAS
	// c'est une liste à choix multiple
	if(TypeDeChamp=="MLt")
		{
		//selection d'une valeur obligatoire
		if((TypeDeSaisie=="o")&&(Number(obj.selectedIndex)==-1))
			{
			alert("Vous devez sélectionner une valeur dans la liste à choix multiple " + nom);
			erreur=true;
			return erreur;
			}
		else
			{
     			if((TypeDeSaisie=="o")&&(obj.options[obj.selectedIndex].text==""))
				{
				alert("Vous devez sélectionner une valeur dans la liste à choix multiple " + nom);
				erreur=true;
				return erreur;
				}
			}
		}
// Fin de la modif du 14/09/2001 par DDAS
	}
return erreur;
}

/***********************************************************************************/

function CheckSingleCheckBox(numero1,numero2,numeroFrame)	// cette fonction va permettre de tester qu'une seule check box est sélectionnée (cas de la validation des licences)
{
var erreur=false;
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0];
}
catch(ex)
{
	var obj = document.forms[0];
}
var tab2=obj.elements[numero1].value.split("@");

var nom=tab2[0];

if ((obj.elements[numero1].checked)&&(obj.elements[numero2].checked))
	{
	alert("Vous ne pouvez pas sélectionner les deux valeurs pour l'adhérent n°" + nom);
	obj.elements[numero1].focus();
	erreur=true;
	return erreur;
	}
return erreur;
}

/***********************************************************************************/

function CheckThreeRadioGroup(numero1,numero2,numero3,numeroFrame,nom)		// on vérifie qu'une valeur pour un radio group a bien été sélectionnée
{
var erreur=false;
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0];
}
catch(ex)
{
	var obj = document.forms[0];
}
var tab2=obj.elements[numero1].name.split("_");
var taille=tab2.length;
var nom="";
for(j=2;j<taille;j++) nom +=tab2[j]+" ";

if ((!obj.elements[numero1].checked)&&(!obj.elements[numero2].checked)&&(!obj.elements[numero3].checked))
	{
	erreur=true;
	alert("Vous devez obligatoirement cocher une des trois valeurs du champ " + nom);
	obj.elements[numero1].focus();
	return erreur;
	}
return erreur;
}

/***********************************************************************************/

function CheckTwoRadioGroup(numero1,numero2,numeroFrame)		// idem mais pour 2 radiogroups
{
var erreur=false;
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0];
}
catch(ex)
{
	var obj = document.forms[0];
}
var tab2=obj.elements[numero1].name.split("_");
var taille=tab2.length;
var nom="";
for(j=2;j<taille;j++) nom +=tab2[j]+" ";

if ((!obj.elements[numero1].checked)&&(!obj.elements[numero2].checked))
	{
	erreur=true;
	alert("Vous devez obligatoirement cocher une des deux valeurs du champ " + nom);
	obj.elements[numero1].focus();
	return erreur;
	}
return erreur;
}

/***********************************************************************************/

function CheckKey(numeroChamp,numeroFrame)		// algorithme de vérification de la clé du numéro d'adhérent
{
var erreur=false;
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
var chaine=obj.value;
var tab2=obj.name.split("_");
var taille=tab2.length;
var nom="";
var chaineZero="";
for(j=2;j<taille;j++) nom +=tab2[j]+" ";

if ((isNaN(chaine))||(chaine.charAt(0)==" "))
	{
	alert("Le numéro d'adhérent doit être saisi sous forme numérique");
	obj.focus();
	erreur=true;
	return erreur;
	}
else if (!(chaine.length==0))
	{
// On complete le numéro par des zéros s'il comporte moins de 8 chiffres et s'il est non vide
	chaine=completeZero(chaine);

// on affecte ce nouveau numéro au champ passé en entrée
	obj.value=chaine;
	
	var clef=Number(chaine.charAt(7));		// la clef est le dernier caractère du numéro
	var numero6=Number(chaine.charAt(6));
	var numero5=Number(chaine.charAt(5));
	var numero4=Number(chaine.charAt(4));
	var numero3=Number(chaine.charAt(3));
	var numero2=Number(chaine.charAt(2));
	var numero1=Number(chaine.charAt(1));
	var numero0=Number(chaine.charAt(0));
//la methode pour calculer la cle est : 2 fois les chiffres de rangs impairs + 1 fois ceux de rangs pairs. On lui soustrait la dizaine superieure, on prend la valeur absolue, c'est la cle
	var valeur=(numero6*2+numero5+numero4*2+numero3+numero2*2+numero1+numero0*2)/10;
	var seuil=Math.ceil(valeur);
	var comparaison=seuil*10-valeur*10-clef;
	
//la cle theorique est differente du 8eme chiffre du numero saisi
	if (comparaison!=0)
		{
		erreur=true;
		alert("Le numéro d'adhérent que vous avez saisi n'est pas valide");
		obj.focus();
		return erreur;
		}
	return erreur;
	}
}

/***********************************************************************************/

function CheckExtendedKey(numeroChamp,numeroFrame)		//ce prgm verife que le numero d'adherent saisi est bien un numero FFB valide ET qu'il est compris entre 09800005 et 09997993 (non scolaire) ou 06850003 et 06975992 (scolaire) pour la creation du membre
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
var erreur=false;
var tab2=obj.name.split("_");
var taille=tab2.length;
var nom="";
for(j=2;j<taille;j++) nom +=tab2[j]+" ";

erreur=CheckKey(numeroChamp, numeroFrame);
if(erreur) return erreur;
if((obj.value<006850003)||(obj.value>06976990)&&(obj.value<06978003)||(obj.value>06978996)&&(obj.value<9800005)||(obj.value>9997993))
	{
	alert("Le numéro d'adhérent que vous avez saisi n'est pas compris dans la plage autorisée");
	obj.focus();
	erreur=true;
	return erreur;
	}
}

/***********************************************************************************/

function CheckKeySeven(numeroChamp,numeroFrame)		// vérification si l'entité à 7 chiffres
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
var erreur=false;
var chaine=obj.value;
if (chaine.length!=7)		// le numéro doit comporter exactement 7 chiffres
	{
	alert("Le numéro d'entité doit comporter 7 chiffres");
	obj.focus();
	erreur=true;
	return erreur;
	}
}

/***********************************************************************************/
// On complete le numéro par des zéros s'il comporte moins de 8 chiffres et s'il est non vide

function completeZero(numero)
{
// tant qu'il ne comporte pas 8 chiffres, on ajoute des zéros devant le nombre 
	while (numero.length<8) 
		{ numero= "0" + numero; }
// on renvoie le numero complété
	return numero;
}		

/***********************************************************************************/

function CompareDateToCurrentDate(numeroChamp,numeroFrame)  // on vérifie que la date rentré par l'utilisateur est bien inférieure à la date du jour (ex : date de naissance)
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0].elements[numeroChamp];
}
catch(ex)
{
	var obj = document.forms[0].elements[numeroChamp];
}
var d=new Date();
var erreur=false;
var tab=obj.value.split("/");	// on récupère sous forme de tableau les éléments de la date rentrée par l'utilisateur
var tab2=obj.name.split("_");
var taille=tab2.length;
var nom="";
for(j=2;j<taille;j++) nom +=tab2[j]+" ";

erreur=CheckDateConsistency(numeroChamp,numeroFrame)	// on vérifie que l'utilisateur a rentré une date valide
if (!erreur)
	{
	var jour=tab[0];
	var mois=tab[1];
	var annee=tab[2];
	var year=d.getFullYear();
	var month=d.getMonth()+1;
	var day=d.getDate();
			
	if ((year<annee)||((year==annee)&&(month<mois))||((year==annee)&&(month==mois)&&(day<jour)))
		{
		alert("La date que vous avez entrée dans le champ " + nom + " est supérieure à la date du jour");
		erreur=true;
		obj.focus();
		return erreur;
		}
	}
return erreur;
}

/***********************************************************************************/

function CompareDateToDate(numero1,numero2,numeroFrame)  // on vérifie que la date rentré par l'utilisateur est bien inférieure à la 2eme date rentree
{
try{
	var obj = window.parent.frames[numeroFrame].document.forms[0];
}
catch(ex)
{
	var obj = document.forms[0];
}
var erreur=false;
var tab=obj.elements[numero1].value.split("/");	// on récupère sous forme de tableau les éléments de la date rentrée par l'utilisateur
var tab2=obj.elements[numero2].value.split("/");	// on récupère sous forme de tableau les éléments de la date rentrée par l'utilisateur
var tab3=obj.elements[numero1].name.split("_");
var taille=tab3.length;
var nom="";
for(j=2;j<taille;j++) nom +=tab3[j]+" ";

var numeroChamp=numero1;
erreur=CheckDateConsistency(numeroChamp,numeroFrame)	// on vérifie que l'utilisateur a rentré une date valide
if(erreur) return;
//erreur=CompareDateToCurrentDate(numeroChamp,numeroFrame);
//if(erreur) return;
var numeroChamp=numero2;
erreur=CheckDateConsistency(numeroChamp,numeroFrame)	// on vérifie que l'utilisateur a rentré une date valide
if(erreur) return;
if (!erreur)
	{
	var jour=tab[0];
	var mois=tab[1];
	var annee=tab[2];
	var year=tab2[2];
	var month=tab2[1];
	var day=tab2[0];
			
	if ((year<annee)||((year==annee)&&(month<mois))||((year==annee)&&(month==mois)&&(day<jour)))
		{
		alert("La date de début que vous avez entrée dans le champ " + nom + " est supérieure à la date de fin");
		erreur=true;
		obj.elements[numero1].focus();
		obj.elements[numero2].focus();
		return erreur;
		}
	}
return erreur;
}

/***********************************************************************************/
// dans javascript : mettre dans une variable la value du champs de la date a rentrer
// puis faire appel a la fonction verifChampDate avec la variable comme argument
// dans java :apres ler= debut du formulaire faire appel a la fonction verifDate 
function verifChampDate(date)  // on verifie que la date entrée est bien dans la saison en cours
{
	var erreur = false;          
	var tabDebutSaison = window.document.forms[0].hd_Hid_dt_deb.value.split("/"); 
           var tabFinSaison = window.document.forms[0].hd_Hid_dt_fin.value.split("/"); 
           var tabDate = date.split("/"); 
           if ((tabDate[2]<tabDebutSaison[2])||((tabDate[2]==tabDebutSaison[2])&&(tabDate[1]<tabDebutSaison[1]))||((tabDate[2]==tabDebutSaison[2])&&(tabDate[1]==tabDebutSaison[1])&&(tabDate[0]<tabDebutSaison[0])))
           {
               alert("Une date saisie n'est pas dans la saison en cours ");
	 	erreur = true;
           }
           else if ((tabDate[2]>tabFinSaison[2])||((tabDate[2]==tabFinSaison[2])&&(tabDate[1]>tabFinSaison[1]))||((tabDate[2]==tabFinSaison[2])&&(tabDate[1]==tabFinSaison[1])&&(tabDate[0]>tabFinSaison[0])))
           {
               alert("Une date saisie n'est pas dans la saison en cours");
		erreur = true;
           }
	return erreur;
 
}


/***********************************************************************************/
// comme  verifChampDate(date)  mais la date de fin est celle de la saison suivante
function verifChampDateOrga(date)
{
	var erreur = false;          
	var tabDebutSaison = window.document.forms[0].hd_Hid_dt_deb.value.split("/"); 
           var tabFinSaison = window.document.forms[0].hd_Hid_dt_fin_suiv.value.split("/"); 
           var tabDate = date.split("/"); 
           if ((tabDate[2]<tabDebutSaison[2])||((tabDate[2]==tabDebutSaison[2])&&(tabDate[1]<tabDebutSaison[1]))||((tabDate[2]==tabDebutSaison[2])&&(tabDate[1]==tabDebutSaison[1])&&(tabDate[0]<tabDebutSaison[0])))
           {
               alert("Une date saisie n'est pas dans la saison en cours ou la saison suivante ");
	 	erreur = true;
           }
           else if ((tabDate[2]>tabFinSaison[2])||((tabDate[2]==tabFinSaison[2])&&(tabDate[1]>tabFinSaison[1]))||((tabDate[2]==tabFinSaison[2])&&(tabDate[1]==tabFinSaison[1])&&(tabDate[0]>tabFinSaison[0])))
           {
               alert("Une date saisie n'est pas dans la saison en cours ou la saison suivante ");
		erreur = true;
           }
	return erreur;
 
}



/************************************************************/
// Cette fonction a pour but de lancer la fonction verifChampDateOrga(date)
// pour tous les champs dates contenus dans la page. On sait ains si une date n'est pas dans la saison
// en cours ou dans la saison suivante
// Attention au nombre de formulaire

function verifSaisonDate(iForm){
	
	var size = window.document.forms[iForm].length;
	var erreur = false;

	for(i=0;i<size;i++){

		if( (window.document.forms[iForm].elements[i].name.indexOf('od_Txt')==0 && window.document.forms[iForm].elements[i].value != null ) || (window.document.forms[iForm].elements[i].name.indexOf('fd_Txt')==0 && window.document.forms[iForm].elements[i].value != null) ){
			// ajout d'une condition pour le test
			if( window.document.forms[iForm].elements[i].disabled!=true) {
				erreur = erreur || verifChampDateOrga(window.document.forms[iForm].elements[i].value);
			}
		}
	}
	return erreur;
}
