
	//  V A L I D A T I O N   D E    D A T E S   D A N S    F O R M U L A I R E S
	//
	// copyright 2/2/2002 Le Service Informatique - CCI54
	//
	// procédure permettant de ne proposer que des dates valides dans les boites 
	// de dialogue de formulaires de saisie de dates
	//
	// appel en positionnant  onchange="valid_date(this.form, 'prefixe')" dans les
	// champs <SELECT name=prefixe_j , <SELECT name=prefixe_m  et <SELECT name=prefixe_a
	//
	//   ex : pour unde date de rdv :
	//    <SELECT name=date_rdv_j onchange="valid_date(this.form, 'date_rdv_')" >
	//			<OPTION .....
	//    <SELECT name=date_rdv_m onchange="valid_date(this.form, 'date_rdv_')" >
	//			<OPTION .....
	//    <SELECT name=date_rdv_a onchange="valid_date(this.form, 'date_rdv_')" >
	//			<OPTION .....
	//
	// ne pas oublier d'insérer ceci en début de page
	//		<script language="JavaScript1.2"  src="valid_date.js"></SCRIPT>
	//
	//
	var jourprecedent = 0;	
	function valid_date(form, prefixechamp) {
		var jours_par_mois = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
		//utilise eval() pour créer dynamiquement un pointeur vers un objet et pour référencer les propriétés de cet objet
		var jourboite	= eval("form." + prefixechamp + "j");
		var annee  	= parseInt( eval("form." + prefixechamp + "a.options[form." + prefixechamp + "a.selectedIndex].value") );
		var mois 	= parseInt( eval("form." + prefixechamp + "m.options[form." + prefixechamp + "m.selectedIndex].value") );
		var jour;
		//stocke le jour initialement sélecté par l utilisateur
		jourprecedent = jourboite.options[jourboite.selectedIndex].value;	
		//détermine quel est le nombre de jour à indiquer dans le menu déroulant, en fonction du mois et de l'année bissextile
		jour = jours_par_mois[mois - 1];
		if( (mois == 2) && (annee % 4 == 0) )
			jour = 29;
		//met à zéro la boite de dialogue des jours
		jourboite.options.length = 0;	
		//y insère les  jours en fonction du mois choisi
		for(var i = 1; i <= jour; i++){
			jourboite.options[jourboite.options.length] = new Option(i, i);
		}
		//ré-initialise le jour sélecté initialement si celui-ci n'est pas hors limites
		if( jourprecedent > jourboite.options.length )
			//met le dernier jour du mois, car hors limites
			jourboite.selectedIndex = jour - 1;		
		else
			jourboite.selectedIndex = jourprecedent - 1;	
	}	

	
function valid_date_vide(form, prefixechamp,champ) {
		var sjour  	= parseInt( eval("form." + prefixechamp + "j.options[form." + prefixechamp + "j.selectedIndex].value") );
		var smois  	= parseInt( eval("form." + prefixechamp + "m.options[form." + prefixechamp + "m.selectedIndex].value") );
		var sann  	= parseInt( eval("form." + prefixechamp + "a.options[form." + prefixechamp + "a.selectedIndex].value") );
		var vlui  	= parseInt( eval("form." + prefixechamp + champ + ".options[form." + prefixechamp + champ + ".selectedIndex].value") );
		var jboite	= eval("form." + prefixechamp + "j");
		var mboite	= eval("form." + prefixechamp + "m");
		var aboite	= eval("form." + prefixechamp + "a");
		
	if (isNaN(vlui) || vlui == 0  ) 
	//la valeur est remise à blanc : on réinitialise tout a blanc
				{
				jboite.selectedIndex = 0 ;
				mboite.selectedIndex = 0 ;
				aboite.selectedIndex = 0 ;
				return ;
				}
	else {
		if (isNaN(sjour) || isNaN(smois) || isNaN(sann) ) 
		// une des valeurs est à blanc : on passe
		{
		return ;
		}
		
		else {
		
		var jours_par_mois = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
		//utilise eval() pour créer dynamiquement un pointeur vers un objet et pour référencer les propriétés de cet objet
		var jourboite	= eval("form." + prefixechamp + "j");
		var annee  	= parseInt( eval("form." + prefixechamp + "a.options[form." + prefixechamp + "a.selectedIndex].value") );
		var mois 	= parseInt( eval("form." + prefixechamp + "m.options[form." + prefixechamp + "m.selectedIndex].value") );
		var jour;
		//stocke le jour initialement sélecté par l utilisateur
		jourprecedent = jourboite.options[jourboite.selectedIndex].value;	
		//détermine quel est le nombre de jour à indiquer dans le menu déroulant, en fonction du mois et de l'année bissextile
		jour = jours_par_mois[mois - 1];
		if( (mois == 2) && (annee % 4 == 0) )
			jour = 29;
		//met à zéro la boite de dialogue des jours
		jourboite.options.length = 0;	
		//y insère les  jours en fonction du mois choisi
		jourboite.options[0] = new Option(' ', 0);
		for(var i = 1; i <= jour; i++){
			jourboite.options[jourboite.options.length] = new Option(i, i);
		}
		//ré-initialise le jour sélecté initialement si celui-ci n'est pas hors limites

		if( jourprecedent > jourboite.options.length )
			//met le dernier jour du mois, car hors limites
			jourboite.selectedIndex = jour ;		
		else
			if ( (jourprecedent == 29) && (jourboite.options.length == 29) )
			// cas spécifique du 29 février pour lequel on change d'année
			{ jourboite.selectedIndex = jourprecedent - 1 ;	return; }  else
			{ jourboite.selectedIndex = jourprecedent ;	return;} 
	}	return;

			}return;
					} 
function testNumerique(champ) {
	var valeur=champ.value ;
	if (valeur == parseFloat(valeur)) return true ;
	else
		{champ.select();
	  champ.focus();champ.value = "" ; window.alert("La valeur saisie ne semble pas être numérique. Les nombres décimaux doivent être saisis avec un point en lieu et place de la virgule .... merci"); return false;		}
	}
function EstCeEntier(champ) {
	var valeur=champ.value ;
	if (valeur == parseInt(valeur)) return true ;
	else
		{champ.select();
	  champ.focus();champ.value = "" ; window.alert("La valeur saisie ne semble pas être numérique. .... veuillez corriger, merci"); return false;		}
	}
function daplomb(champ) {
//  problème de la touche EURO - il faut modifier au submit
  var fiel	= eval("document.forms[0]." + champ );
   var field	= fiel.value;
   estla = field.indexOf('€');
		if (estla == -1)
 		finale = field;
		else 	{
				finale = "";
 				strTmp = field ;
  				 while (estla != -1) {
  						finale = finale.concat(strTmp.substring(0,estla)).concat('&euro;') ;
   						strTmp = strTmp.substring(estla+1);
						estla = strTmp.indexOf('€') ;
 											}
				finale = finale.concat(strTmp) ;
					}
 fiel.value = finale ;   						
}