//*******************************************************************************
// FONCTION : show_hide(calque)
// DESCRIPTION : Affiche ou cache le calque
// PARAMETRE EN ENTREE :
// calque : Contient le nom du calque
function show_hide(calque)
{
	if (document.getElementById(calque).style.display=='block')
	{
		document.getElementById(calque).style.display='none';
	}
	else
	{
		document.getElementById(calque).style.display='block';
	}
}

//*******************************************************************************
// FONCTION : centerPopup(element)
// DESCRIPTION : centre dans la fenetre l'element
// PARAMETRE EN ENTREE :
// element : nom du div
function centerPopup(element) {			
	var height=document.getElementById(element).offsetHeight;//hauteur de l'élément à positionner
	var width=document.getElementById(element).offsetWidth;//largeur de l'élément à positionner
	myParent=document.getElementById(element).parentNode;
	var pHeight=myParent.offsetHeight;//Hauteur de l'élément parent
	var pWidth=myParent.offsetWidth;//Largeur de l'élément parent
	var sTop = document.documentElement.scrollTop;
	
	var sLeft=myParent.scrollLeft;//Longueur de défilement de l'élément parent
	var largsite = 1000;
	// ma façon, celle qui fonctionne le moins mal ...
	if(element=='attente_sablier'){
		var largeur=32;
		var hauteur=32;
	}else{
		var largeur=300;
		var hauteur=250;
	}
	var posY=sTop+(screen.height/2)-(hauteur/2);
	var posX=(largsite/2)-(largeur/2)+sLeft;
	
	// vrai calcul
	//var posY=(pHeight/2)-(height/2)+sTop;//Calcul de la position en Y
	//var posX=(pWidth/3)-(width/2)/*+sLeft*/;//Calcul de la position en X
	document.getElementById(element).style.top=posY+"px";
	document.getElementById(element).style.left=posX+"px";
	document.getElementById(element).style.display= "block";
	return true;
}

//*******************************************************************************
// FONCTION : affiche_sablier()
// DESCRIPTION : affiche le sablier d'attente centré sur l'écran
// PARAMETRE EN ENTREE :
// element : nom du div
function affiche_sablier(){
	if(document.getElementById('attente_sablier')){
		if(document.getElementById("filtre_ajout")){
			var filtre_ajout = document.getElementById("filtre_ajout");
			filtre_ajout.style.display = "block";
			filtre_ajout.style.height = parseInt(document.documentElement.scrollHeight)+"px";
		}
		
		centerPopup('attente_sablier');
		document.getElementById('attente_sablier').focus(); // pour IE
		document.getElementById('ancre_sablier').focus(); // pour firefox
		affiche_ajouter('attente_sablier');
	}
}
//*******************************************************************************
// FONCTION : cache_sablier()
// DESCRIPTION : affiche le sablier d'attente centré sur l'écran
// PARAMETRE EN ENTREE :
// element : nom du div
function cache_sablier(){
	if(document.getElementById('attente_sablier')){
		if(document.getElementById("filtre_ajout")){
			document.getElementById("filtre_ajout").style.display = "none";
		}
		document.getElementById('attente_sablier').style.display='none';
	}
}


//*******************************************************************************
// FONCTION : validemail(item)
// DESCRIPTION : Teste si un email est valide
// PARAMETRE EN ENTREE :
// item : qui contient l'email

function validemail(item)
{
	if (!(item.length >= 5)) return(false);
	if (item.indexOf ('@', 0) == -1) return(false);
	if (item.indexOf ('.', 0) == -1) return(false);
	interdit = "~&#'(){}[]|`/çàäâéèëêïîöôùüû?;:;!§$£+=,°%¤*µ\"\\ ";
	for (i=0;i<item.length;i++)
	{
		for (j=0;j<interdit.length;j++)
		{
			if (item.substr(i,1) == interdit.substr(j,1))
			{
				return(false);
			}
		}
	}
	return(true);
}

//*******************************************************************************
// FONCTION : Date1InfDate2(date1,date2)
// DESCRIPTION : Retourne faux si un date1 est inferieure à date2 sinon vrai
// PARAMETRE EN ENTREE :
// date1 : contient une date
// date2 : contient une date
function Date1InfDate2(date1,date2){
	var madate1 = parseInt(date1.slice(6,10)+date1.slice(3,5)+date1.slice(0,2));
	var madate2 = parseInt(date2.slice(6,10)+date2.slice(3,5)+date2.slice(0,2));
	if (madate1>madate2){
		return(true);
	}else{
		return(false);
	}
}

//*******************************************************************************
// FONCTION : Date1InfouEgalDate2(date1,date2)
// DESCRIPTION : Retourne faux si un date1 est inferieure ou égale à date2 sinon vrai
// PARAMETRE EN ENTREE :
// date1 : contient une date
// date2 : contient une date
function Date1InfouEgalDate2(date1,date2)
{
	var madate1 = parseInt(date1.slice(6,10)+date1.slice(3,5)+date1.slice(0,2));
	var madate2 = parseInt(date2.slice(6,10)+date2.slice(3,5)+date2.slice(0,2));
	
	if (madate1>=madate2)
	{
		return(true);
	}
	else
	{
		return(false);
	}
}

//*******************************************************************************
// FONCTION : nb_jour_entre_date(date1,date2)
// DESCRIPTION : Retourne le nombre de jour entre deux dates
// PARAMETRE EN ENTREE :
// date1 : contient une date
// date2 : contient une date
function nb_jour_entre_date(date1,date2)
{
	var split_date1 = date1.split('/');
	var split_date2 = date2.split('/');
		
	var new_date1 = new Date(split_date1[2],split_date1[1]*1 - 1,split_date1[0]*1);
	var new_date2 = new Date(split_date2[2],split_date2[1]*1 - 1,split_date2[0]*1);
	if (new_date1.getTime() > new_date2.getTime())
	{
		var test = Math.floor((new_date1.getTime() - new_date2.getTime()) / 1000 / 60 / 60 / 24);
	}
  	else
  	{
  		var test = Math.floor((new_date2.getTime() - new_date1.getTime()) / 1000 / 60 / 60 / 24);
  	}
  	return test;
}

//*******************************************************************************
// FONCTION : addDaysToDate(old_date,nb_jour)
// DESCRIPTION : Retourne l'ancienne date à laquelle on a ajouté nb_jour
// PARAMETRE EN ENTREE :
// old_date : contient une date
// nb_jour : contient le nombre de jour à ajouter à la date
function addDaysToDate(old_date, nb_jour)
{
  // Date plus nb_jour
  var split_date = old_date.split('/');
  // Les mois vont de 0 a 11 donc on enleve 1, cast avec *1
  var new_date = new Date(split_date[2], split_date[1]*1 - 1 , split_date[0]*1 + parseInt(nb_jour) ); //parseInt nb_jour pour typer la variable pour l'opération
  var new_day = new_date.getDate();
      new_day = ((new_day < 10) ? '0' : '') + new_day; // ajoute un zéro devant pour la forme
  var new_month = new_date.getMonth() + 1;
      new_month = ((new_month < 10) ? '0' : '') + new_month; // ajoute un zéro devant pour la forme
  var new_year = new_date.getYear();
      new_year = ((new_year < 200) ? 1900 : 0) + new_year; // necessaire car IE et FF retourne pas la meme chose
  var new_date_text = new_day + '/' + new_month + '/' + new_year;
  return new_date_text;
}


//*******************************************************************************
// FONCTION : is_numeric(x)
// DESCRIPTION : Teste si un email est valide
// PARAMETRE EN ENTREE :
// x : valeur à tester
function numerique(x)
{
	for(i=0; i<x.length; i++)
	{
		if (x.substring(i, i+1)<"0" || x.substring(i, i+1)>"9")
		{
			return(false)
		}
	}
	return(true)
}

//*******************************************************************************
// FONCTION : champs_vide(nom_formulaire,nom_champ,message,test)
// DESCRIPTION : Teste si un champs est vide
// PARAMETRE EN ENTREE :
// nom_formulaire : qui contient le nom du formulaire
// nom_champ : qui contient le nom du champs à tester
// message : qui contient le texte à afficher
// test : qui contient le type de champs à tester

function champs_vide(nom_formulaire,nom_champ,message,test)
{
	// email obligatoire
	if (test == "email_obligatoire")
	{
		if  (eval("document." + nom_formulaire + "." + nom_champ + ".value") == "")
		{
			alert(message);
			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
			return false;
		}
		else
		{
			if (!validemail(eval("document." + nom_formulaire + "." + nom_champ + ".value")))
			{
				alert(message);
				eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
				return false;
			}
		}
		return(true);
	}

	// email testé si différent de vide mais pas obligatoire
	if (test == "email_non_obligatoire")
	{
		if  (eval("document." + nom_formulaire + "." + nom_champ + ".value") != "")
		{
			if (!validemail(eval("document." + nom_formulaire + "." + nom_champ + ".value")))
			{
				alert(message);
				eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
				return false;
			}
		}
		return(true);
	}


	// bouton checkbox
	if (test.indexOf ('check/', 0) != -1)
	{
		tab = test.split("/");
		tab_rep = tab[1];
		tab_rep = tab_rep.split("|");
		for (i=0;i<(tab_rep.length);i+=1)
		{
			if (eval("document." + nom_formulaire + "." + tab_rep[i] + ".checked") == true)
			{
				return(true);
			}
		}
		alert(message);
		eval("document." + nom_formulaire + "." + tab_rep[0] + ".focus()");
		return(false);
	}

	// bouton radio
	if (test.indexOf ('radio/', 0) != -1)
	{
		tab = test.split("/");
		nb_radio  = tab[1];
		for (i=0;i<=nb_radio;i+=1)
		{
			if (eval("document." + nom_formulaire + "." + nom_champ + "["+i+"].checked"))
			{
				return(true);
			}
		}
		if (message != "")
		{
			alert(message);
		}
		eval("document." + nom_formulaire + "." + nom_champ + "[0].focus()");
		return(false);
	}


	// multiselectbox

	if (test.indexOf ('multiselectbox/', 0) != -1)

	{

		tab = test.split("/");

		indice = tab[1];

		for (x = 0; x < eval("document." + nom_formulaire + "["+indice+"].options.length"); x++)

		{

			valeur = eval("document." + nom_formulaire + "["+indice+"]["+x+"].value");

			index = eval("document." + nom_formulaire + "["+indice+"]["+x+"].index");

			SelectedIndex = eval("document." + nom_formulaire + "["+indice+"].options["+x+"].selected");

			if (SelectedIndex == true)

			{

				return(true);

			}

		}

		alert(message);

		eval("document." + nom_formulaire + "["+indice+"].focus()");

		return(false);

	}



	// selectbox

	if (test == "selectbox")

	{

		if ((eval("document." + nom_formulaire + "." + nom_champ + "[document." + nom_formulaire + "." + nom_champ + ".selectedIndex].value") == "" || eval("document." + nom_formulaire + "." + nom_champ + "[document." + nom_formulaire + "." + nom_champ + ".selectedIndex].value") == "undefined" || eval("document." + nom_formulaire + "." + nom_champ + "[document." + nom_formulaire + "." + nom_champ + ".selectedIndex].value") == 0) && (eval("document." + nom_formulaire + "." + nom_champ + "[document." + nom_formulaire + "." + nom_champ + ".selectedIndex].value") != "00") ) 

		{

			alert(message);

			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");

			return(false);

		}

		else

		{

			return(true);

		}

	}



	// input

	if (test == "")
	{
		if (eval("document." + nom_formulaire + "." + nom_champ + ".value") == "")
		{

			if (message != "")
			{
				alert(message);
			}

			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");

			return(false);

		}

		else

		{

			return(true);

		}

	}



	// on teste si different de vide alors ca doit etre un numérique

	if (test == "vide_numerique")

	{

		return(champs_num(nom_formulaire,nom_champ,message));

	}



	// on teste si different de vide alors ca doit etre un décimale

	if (test == "vide_decimale")

	{

		return(champs_num_virgule(nom_formulaire,nom_champ,message));

	}



	// on teste si numérique

	if (test == "numerique")

	{

		if (eval("document." + nom_formulaire + "." + nom_champ + ".value") == "")

		{

			alert(message);

			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");

			return(false);

		}

		else

		{

			return(champs_num(nom_formulaire,nom_champ,message));

		}

	}



	// on teste si décimale

	if (test == "decimale")

	{

		if (eval("document." + nom_formulaire + "." + nom_champ + ".value") == "")

		{

			alert(message);

			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");

			return(false);

		}

		else

		{

			return(champs_num_virgule(nom_formulaire,nom_champ,message));

		}

	}

	if(test == "alphanumerique"){
		if (eval("document." + nom_formulaire + "." + nom_champ + ".value") == "")

		{

			alert(message);

			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");

			return(false);

		}

		else
		{
			x= eval("document." + nom_formulaire + "." + nom_champ + ".value");
			var comp = /^[a-zA-Z0-9 ]+$/;
			if(comp.test(x)){
				return true;
			}else{
				alert(message);
				return false;
			}
		}
	}


	// on teste si c'est une heure correcte

	if (test == "heure")

	{

		if (eval("document." + nom_formulaire + "." + nom_champ + ".value") == "")

		{

			alert(message);

			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");

			return(false);

		}

		else

		{

			return(champs_heure(nom_formulaire,nom_champ,message));

		}

	}



	// on teste si c'est une heure correcte

	if (test == "minute")

	{

		if (eval("document." + nom_formulaire + "." + nom_champ + ".value") == "")

		{

			alert(message);

			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");

			return(false);

		}

		else

		{

			return(champs_minute(nom_formulaire,nom_champ,message));

		}

	}



	// on teste si c'est un jour correct

	if (test == "jour")

	{

		if (eval("document." + nom_formulaire + "." + nom_champ + ".value") == "")

		{

			alert(message);

			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");

			return(false);

		}

		else

		{

			return(champs_jour(nom_formulaire,nom_champ,message));

		}

	}



	// on teste si c'est un mois correct

	if (test == "mois")

	{

		if (eval("document." + nom_formulaire + "." + nom_champ + ".value") == "")

		{

			alert(message);

			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");

			return(false);

		}

		else

		{

			return(champs_mois(nom_formulaire,nom_champ,message));

		}

	}

	return(true);

}



//*******************************************************************************

// FONCTION : champs_num_virgule(nom_formulaire,nom_champ,message)

// DESCRIPTION : Teste si un champs est numerique et possede une virgule ou un point

// PARAMETRE EN ENTREE :

// nom_formulaire : qui contient le nom du formulaire

// nom_champ : qui contient le nom du champs à tester

// message : qui contient le texte à afficher



function champs_num_virgule(nom_formulaire,nom_champ,message)

{

	x= eval("document." + nom_formulaire + "." + nom_champ + ".value");

	for(i=0; i<x.length; i++)

	{

		if (x.substring(i, i+1)<"0" || x.substring(i, i+1)>"9")

		{

			if (x.substring(i, i+1) !="." && x.substring(i, i+1) !=",")

			{

				alert(message);

				eval("document." + nom_formulaire + "." + nom_champ + ".focus()");

				return(false);

			}

		}

	}

	return(true);

}



//*******************************************************************************

// FONCTION : champs_num(nom_formulaire,nom_champ,message)

// DESCRIPTION : Teste si un champs est numerique

// PARAMETRE EN ENTREE :

// nom_formulaire : qui contient le nom du formulaire

// nom_champ : qui contient le nom du champs a tester

// message : qui contient le texte à afficher



function champs_num(nom_formulaire,nom_champ,message)

{

	x= eval("document." + nom_formulaire + "." + nom_champ + ".value");

	if (!numerique(x))

	{

		alert(message);

		eval("document." + nom_formulaire + "." + nom_champ + ".focus()");

		return(false);

	}

	return(true);

}



//*******************************************************************************

// FONCTION : champs_heure(nom_formulaire,nom_champ,message)

// DESCRIPTION : Teste si un champs est numerique et compris entre 0 et 23

// PARAMETRE EN ENTREE :

// nom_formulaire : qui contient le nom du formulaire

// nom_champ : qui contient le nom du champs a tester

// message : qui contient le texte à afficher



function champs_heure(nom_formulaire,nom_champ,message)

{

	x= eval("document." + nom_formulaire + "." + nom_champ + ".value");

	if ( !numerique(x) || (x < 0 || x >23) )

	{

		alert(message);

		eval("document." + nom_formulaire + "." + nom_champ + ".focus()");

		return(false);

	}

	return(true);

}



//*******************************************************************************

// FONCTION : champs_minute(nom_formulaire,nom_champ,message)

// DESCRIPTION : Teste si un champs est numerique et compris entre 0 et 59

// PARAMETRE EN ENTREE :

// nom_formulaire : qui contient le nom du formulaire

// nom_champ : qui contient le nom du champs a tester

// message : qui contient le texte à afficher



function champs_minute(nom_formulaire,nom_champ,message)

{

	x= eval("document." + nom_formulaire + "." + nom_champ + ".value");

	if ( !numerique(x) || (x < 0 || x >59) )

	{

		alert(message);

		eval("document." + nom_formulaire + "." + nom_champ + ".focus()");

		return(false);

	}

	return(true);

}



//*******************************************************************************

// FONCTION : champs_jour(nom_formulaire,nom_champ,message)

// DESCRIPTION : Teste si un champs est numerique et compris entre 1 et 31

// PARAMETRE EN ENTREE :

// nom_formulaire : qui contient le nom du formulaire

// nom_champ : qui contient le nom du champs a tester

// message : qui contient le texte à afficher



function champs_jour(nom_formulaire,nom_champ,message)

{

	x= eval("document." + nom_formulaire + "." + nom_champ + ".value");

	if ( !numerique(x) || (x < 1 || x >31) )

	{

		alert(message);

		eval("document." + nom_formulaire + "." + nom_champ + ".focus()");

		return(false);

	}

	return(true);

}



//*******************************************************************************

// FONCTION : champs_mois(nom_formulaire,nom_champ,message)

// DESCRIPTION : Teste si un champs est numerique et compris entre 1 et 12

// PARAMETRE EN ENTREE :

// nom_formulaire : qui contient le nom du formulaire

// nom_champ : qui contient le nom du champs a tester

// message : qui contient le texte à afficher



function champs_mois(nom_formulaire,nom_champ,message)

{

	x= eval("document." + nom_formulaire + "." + nom_champ + ".value");

	if ( !numerique(x) || (x < 1 || x >12) )

	{

		alert(message);

		eval("document." + nom_formulaire + "." + nom_champ + ".focus()");

		return(false);

	}

	return(true);

}



//*******************************************************************************

// FONCTION : champs_mois(nom_formulaire,nom_champ,message)

// DESCRIPTION : Teste si un champs est numerique et compris entre 1 et 12

// PARAMETRE EN ENTREE :

// nom_formulaire : qui contient le nom du formulaire

// nom_champ : qui contient le nom du champs a tester

// message : qui contient le texte à afficher



function test_email(nom_formulaire,email,message)

{

	if  (eval("document." + nom_formulaire + "." + email + ".value") == "")

	{

		alert(message);

		eval("document." + nom_formulaire + "." + email + ".focus()");

		return false;

	}

	else

	{

		if (!validemail(eval("document." + nom_formulaire + "." + email + ".value")))

		{

			alert(message);

			eval("document." + nom_formulaire + "." + email + ".focus()");

			return false;

		}

	}

	return(true);

}



//*******************************************************************************

// FONCTION : popup(adresse,target,largeur,hauteur,degauche,duhaut,status,varscroll,resize)

// DESCRIPTION : ouvre une fenêtre volante avec differents paramètres

// PARAMETRE EN ENTREE :

// adresse : url à acceder

// target : nom de la fenêtre

// largeur : largeur de la fenêtre

// hauteur : hauteur de la fenêtre

// degauche : position de la fenêtre à partir du bord gauche de l'écran

// duhaut : position de la fenêtre à partir du haut de l'écran

// status : affiche la barre de status de la fenêtre

// varscroll : affiche les scrollbars

// resize : permet le redimmensionnement ou non de la fenêtre



function popup(adresse,target,largeur,hauteur,degauche,duhaut,status,varscroll,resize)

{

	//parametrage par defaut des variables

	if (target == "") { target = "new_window";}

	if (largeur == "") { largeur = "500";}

	if (hauteur == "") { hauteur = "400";}

	if (degauche == "") { degauche = "0";}

	if (duhaut == "") { duhaut = "0";}

	if (varscroll == "") { varscroll = "yes";}

	if (resize == "") {  resize = ",resizable=no";  } else { resize = ",resizable=yes";}

	if (status == "") { status = "yes";}

	window.open(adresse,target,"width="+largeur+",height="+hauteur+",left="+degauche+",top="+duhaut+",status="+status+",toolbar=no,menubar=no,scrollbars="+varscroll+",location=no,directories=no"+resize);

}



//*******************************************************************************

// FONCTION : limite(zone,max)

// DESCRIPTION : Fonction pour limiter un textarea

// PARAMETRE EN ENTREE :

// zone : zone de formulaire

// max : nombre max de caractère

function limite(zone,max)

{

	if(zone.value.length>=max)

	{

		zone.value=zone.value.substring(0,max);

	}

}



//*******************************************************************************

// FONCTION : coche(formulaire,bouton,numero)

// DESCRIPTION : Fonction pour cocher les checkbox et boutons radios AVEC ou SANS calque

// PARAMETRE EN ENTREE :

// formulaire : qui contient le nom du formulaire

// bouton : qui contient le nom du champs a tester

// numero : numero à cocher / il faut mettre un "X" pour les checbox



// Fonction pour cocher les checkbox et boutons radios AVEC ou SANS calque

function coche(formulaire,bouton,numero)

{

	// Detection du navigateur

	nc6 = (typeof(window.controllers) != 'undefined' && typeof(window.locationbar) != 'undefined')? true:false;

	nc4 = (document.layers)? true:false;

	ie4 = (document.all)? true:false;



	// Création d'un raccourci pour manipuler le champ visé

	var controle = eval("document." + formulaire + '.' + bouton);



	// Si le champ est de type 'checkbox' (par convention on place un 'X' si on est sur une case à cocher)

	if (numero == 'X')

	{



		// Si la case est cochée

		if (controle.status || controle.checked )

		{



			// Instruction pour Netscape 6.x

			if (nc6)

			{

				// On décoche la case

				controle.checked = false;

			}

			// Instruction équivalente pour Netscape 4.x et Internet Explorer

			else

			{

				controle.status = false;

			}

		}

		// Si la case n'est pas cochée

		else

		{

			if (nc6)

			{

				controle.checked = true;

			}

			else

			{

				controle.status = true;

			}

		}

	}

	// Si on ne trouve pas de 'X', c'est un bouton radio

	else

	{

		// Instruction pour Netscape 6.x

		if (nc6)

		{

			// On coche le bouton radio

			controle[numero].checked = true;

		}

		// Instruction équivalente pour Netscape 4.x et Internet Explorer

		else

		{

			controle[numero].status = true;

		}

	}

}

function test_date(nom_formulaire,nom_champ_date,message)
{
	if (!isDate(eval('document.'+nom_formulaire+'.'+nom_champ_date+'.value')))
	{alert(message);return false;}
	else
	{return (true);}
}


function isDate(d)
{
// Cette fonction permet de vérifier la validité d'une date au format jj/mm/aa ou jj/mm/aaaa
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 retourne faux
return ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] );
}

function format_virgule(nom_formulaire,nom_champ,valeur)
{
	// On regarde si la valeur a été saisie avec le caractère ","
	var pos_virgule = valeur.indexOf(",");
	if (pos_virgule != -1)
	{
		var reg=new RegExp("(,)", "");
		valeur = valeur.replace(reg,".");
	}
	eval("document." + nom_formulaire + "." + nom_champ + ".value = "+valeur);
	return (true);
}