	function eacute(){
		return String.fromCharCode(233);
	}
	function egrave(){
		return String.fromCharCode(232);
	}
	
	function ecirc(){
		return String.fromCharCode(234);
	}
	function agrave(){
		return String.fromCharCode(224);
	}
	function isDateJMA(dateStr,fieldname) {
		if(dateStr=="")
			return true;
		var prefixe="Pour le champ " + DisplayName(fieldname)+": ";
		var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
		var matchArray = dateStr.match(datePat); // is the format ok?

		if (matchArray == null) {
			alert(prefixe + "entrez une date sous le format dd/mm/yyyy!");
			return false;
		}

		month = matchArray[3]; // parse date into variables
		day = matchArray[1];
		year = matchArray[5];

		if (month < 1 || month > 12) { // check month range
			alert(prefixe +"le num"+ eacute() +"ro du mois doit "+ ecirc() +"tre compris entre 1 et 12.");
			return false;
		}

		if (day < 1 || day > 31) {
			alert(prefixe +"le num"+ eacute() +"ro du jour doit "+ ecirc() +"tre entre  1 et 31.");
			return false;
		}

		if ((month==4 || month==6 || month==9 || month==11) && day==31) {
			alert(prefixe +"le mois mentionne ne comporte pas 31 jours")
			return false;
		}

		if (month == 2) { // check for february 29th
			var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
			if (day > 29 || (day==29 && !isleap)) {
				alert(prefixe +"le mois de f"+ eacute() +"vrier de l'ann"+ eacute() +"e " + year + " ne comprend pas  " + day + " jours!");
				return false;
			}
		}
		return true; // la date est valide mais peut "+ ecirc() +"tre posterieur a la date d'aujourd'hui!!!
	}
	function Initialise(url){
		window.location=url;
	}
		
	function isDateMA(dateStr,fieldname){
		var prefixe="Pour le champ " + DisplayName(fieldname)+": ";
		var Str=new String(dateStr);
		if(Str.length!=7){
			alert(prefixe + "entrez une date sous le format mm/yyyy!");
			return false;
		}else{
			if(isNaN(Str.substr(0,2))){
				alert(prefixe + "entrez une date sous le format mm/yyyy!.");
				return false;
				}
			if(Str.substr(0,2)>12){
				alert(prefixe +"le numero du mois doit "+ ecirc() +"tre compris entre 1 et 12.");
				return false;
			}else{
				if(Str.indexOf('/')!=-1){
					if(isNaN(Str.substr(3,7))){
						alert(prefixe + "entrez une date sous le format mm/yyyy!");
						return false;
					}else{
						return true;
					}		
				}else{
					alert(prefixe + "entrez une date sous le format mm/yyyy!");
					return false;
				}			
			}			
		}
	}

	function isDateJM(dateStr,fieldname){
		var prefixe="Pour le champ " + DisplayName(fieldname)+": ";
		var Str=new String(dateStr);
		if(Str.length!=5){
			alert(prefixe + "entrez une date sous le format jj-mm!");
			return false;
		}else{
			if(isNaN(Str.substr(0,2))){
				alert(prefixe + "entrez une date sous le format jj-mm!.");
					return false;
				}
			if(Str.substr(0,2)>31|Str.substr(0,2)<0){
				alert(prefixe +"le numero du jour doit "+ ecirc() +"tre compris entre 1 et 31.");
				return false;
			}else{
				if(Str.indexOf('-')!=-1){
					if(isNaN(Str.substr(3,5))){
						alert(prefixe + "entrez une date sous le format mm-yyyy!");
						return false;
					}else{
						if(Str.substr(3,5)>12|Str.substr(3,5)<0){
							alert(prefixe +"le numero du jour doit "+ ecirc() +"tre compris entre 1 et 12.");
							return false;
						}
						return true;
					}		
				}else{
					alert(prefixe + "entrez une date sous le format mm-yyyy!");
					return false;
				}			
			}			
		}
	}
	function ReplaceSlashToIndent(dateStr){
		var Str=new String(dateStr);
		var temp=Str.replace("/","-");
		return temp;
	}
	function Compare_DateMA(firstdate,snddate){
		var date1=new String(firstdate.value);
		var date2=new String(snddate.value);
		if (date2=="")
			return true;
			
		var annee1=date1.substr(3,4);
		var annee2=date2.substr(3,4);
		
		if(annee2>annee1)
			return true;
		else{
			if(annee2==annee1){
				var mois1=date1.substr(0,2);
				var mois2=date2.substr(0,2);
				if(mois2>mois1)
					return true;
				else
					return false;
			}else
				return false;
		}
	}

	function Compare_Date(firstdate,snddate){
		var date1=new String(firstdate.value);
		var date2=new String(snddate.value);
		if (date2=="")
		{
			return true;
		}
		var annee1=date1.substr(6,4);
		var annee2=date2.substr(6,4);
		
		if(annee2>annee1){
			return true;
		}
		else{
			if(annee2==annee1){
				var mois1=date1.substr(3,2);
				var mois2=date2.substr(3,2);
				if(mois2>mois1)
					return true;
				else{
					if(mois2==mois1){
						var jour1=date1.substr(0,2);
						var jour2=date2.substr(0,2);
						if(jour2>jour1){
							return true;

						}else{
							return false;
						}
					}else{
						
						return false;
					}


				}
			}else{
				
				return false;
			}
		}
	}
	
	function Compare_DateStr(firstdate,snddate){
		var date1=new String(firstdate);
		var date2=new String(snddate);
		if (date2=="")
		{
			return true;
		}
		var annee1=date1.substr(6,4);
		var annee2=date2.substr(6,4);
		
		if(annee2>annee1){
			return true;
		}
		else{
			if(annee2==annee1){
				var mois1=date1.substr(3,2);
				var mois2=date2.substr(3,2);
				if(mois2>mois1)
					return true;
				else{
					if(mois2==mois1){
						var jour1=date1.substr(0,2);
						var jour2=date2.substr(0,2);
						if(jour2>jour1){
							return true;

						}else{
							return false;
						}
					}else{
						
						return false;
					}


				}
			}else{
				
				return false;
			}
		}
	}
	function Checkform(the_form,URL){
		if(CheckData(the_form)){
			the_form.action=URL;
			the_form.submit();
		}
	}

	function CountChar(box,limite){
		var str=new String(box.value);
		if(str.length>limite){
			str=str.substr(0,limite);
			box.value=str;
			window.alert("Ce champ par des raisons de s"+ eacute() +"curite est limit"+ eacute() +" "+ agrave() +" "+ limite + " caract"+ egrave() +"res !!'");
		}
	}


	function CheckData(this_form){
		for(x=0;x<this_form.length;x++){
			switch(this_form.elements[x].className){
				case "obligatoire":
					if(this_form.elements[x].value==""){
							window.alert("le champ " + DisplayName(this_form.elements[x].name)+ " doit "+ ecirc() +"tre renseign"+ eacute() +"!!");
							this_form.elements[x].focus();
							return false;	
					}
					break;
				case "obli_liste":
					if(this_form.elements[x].options.length==0){
							window.alert("le champ " + DisplayName(this_form.elements[x].name)+ " doit "+ ecirc() +"tre renseign"+ eacute() +"!!");
							this_form.elements[x].focus();
							return false;	
					}
					break;
				case "miniobli_liste":
					if(this_form.elements[x].options.length==0){
							window.alert("le champ " + DisplayName(this_form.elements[x].name)+ " doit "+ ecirc() +"tre renseign"+ eacute() +"!!");
							this_form.elements[x].focus();
							return false;	
					}
					break;
				case "numeric_type":
					
					if(isNaN(this_form.elements[x].value)){
							window.alert("le champ " + DisplayName(this_form.elements[x].name)+ " doit "+ ecirc() +"tre de type num"+ eacute() +"rique!!");
							this_form.elements[x].focus();
							return false;
					}
					break;
				case "date_typeMA":
					if(this_form.elements[x].value=="") 
						break;
					if(!isDateMA(this_form.elements[x].value,DisplayName(this_form.elements[x].name))){
						this_form.elements[x].focus();
						return false;
					}
					break;

				case "date_type":
					if(this_form.elements[x].value=="") 
						break;
					if(!isDateJMA(this_form.elements[x].value,DisplayName(this_form.elements[x].name))){
						this_form.elements[x].focus();
						return false;
					}
					break;

				case "obli_date_type":
					if(this_form.elements[x].value==""){
						window.alert("le champ " + DisplayName(this_form.elements[x].name)+ " doit "+ ecirc() +"tre renseign"+ eacute() +"!!");
						this_form.elements[x].focus();
						return false;
					}
						
					if(!isDateJMA(this_form.elements[x].value,DisplayName(this_form.elements[x].name))){
						this_form.elements[x].focus();
						return false;
					}
					break;	

				case "obli_numeric_type":
					if(this_form.elements[x].value!=""){
						if(isNaN(this_form.elements[x].value)){
								window.alert("le champ " + DisplayName(this_form.elements[x].name)+ " doit "+ ecirc() +"tre de type num"+ eacute() +"rique!!");
								this_form.elements[x].focus();
								return false;
						}
					}else{
						window.alert("le champ " + DisplayName(this_form.elements[x].name)+ " doit "+ ecirc() +"tre renseign"+ eacute() +"");
						this_form.elements[x].focus();
						return false;
					}
					

					break;				
				case "integer":
					if(isNaN(this_form.elements[x].value)|| this_form.elements[x].value%1!=0){
						window.alert("le champ " + DisplayName(this_form.elements[x].name)+ " doit "+ ecirc() +"tre de type entier!!");
						this_form.elements[x].focus();
						return false;
					}
					break;
				case "obli_integer":
					if(this_form.elements[x].value==""){
						window.alert("le champ " + DisplayName(this_form.elements[x].name)+ " doit "+ ecirc() +"tre renseign"+ eacute() +"!!");
						this_form.elements[x].focus();
						return false;
					}

					if(isNaN(this_form.elements[x].value)||this_form.elements[x].value%1!=0){
						window.alert("le champ " + DisplayName(this_form.elements[x].name)+ " doit "+ ecirc() +"tre de type entier!!");
						this_form.elements[x].focus();
						return false;
					}
					
					break;

				case "obli_dateMA_type":
					if(this_form.elements[x].value!=""){
						if(!isDateMA(this_form.elements[x].value,DisplayName(this_form.elements[x].name))){
							this_form.elements[x].focus();
							return false;
						}
					}else{
						window.alert("le champ " + DisplayName(this_form.elements[x].name)+ " doit "+ ecirc() +"tre renseigne");
						this_form.elements[x].focus();
						return false;
					}
					break;
				
				case "dateJM_type":
					if(this_form.elements[x].value!=""){
						if(!isDateJM(this_form.elements[x].value,DisplayName(this_form.elements[x].name))){
							this_form.elements[x].focus();
							return false;
						}
					}
					break;
				case "obli_dateJM_type":
					if(this_form.elements[x].value!=""){
						if(!isDateJM(this_form.elements[x].value,DisplayName(this_form.elements[x].name))){
							this_form.elements[x].focus();
							return false;
						}
					}else{
						window.alert("le champ " + DisplayName(this_form.elements[x].name)+ " doit "+ ecirc() +"tre renseigne");
						this_form.elements[x].focus();
						return false;
					}
					break;
				
				case "obli_email":
					if(this_form.elements[x].value!=""){
						var my_email=new String(this_form.elements[x].value);
						if(my_email.indexOf("@")!=-1){
							var domaine=new String(my_email.substring(my_email.indexOf("@")));
							if(domaine.indexOf(".")==-1){
								window.alert("le champ " + DisplayName(this_form.elements[x].name)+ " ne semble pas "+ ecirc() +"tre correct");
								this_form.elements[x].focus();
								return false;
							}
						}else{
							window.alert("le champ " + DisplayName(this_form.elements[x].name)+ " ne semble pas "+ ecirc() +"tre correct");
							this_form.elements[x].focus();
							return false;
						}
					}else{
						window.alert("le champ " + DisplayName(this_form.elements[x].name)+ " doit "+ ecirc() +"tre renseign"+ eacute() +"!!");						
						this_form.elements[x].focus();
						return false;
					}
					break;
			}
		}
		return true;
	}
	function DisplayName(name_){
		var MyName=new String(name_);
		while(MyName.indexOf("_d_")!=-1){
			MyName= MyName.replace("_d_"," d'");
		}
		MyName= MyName.replace("[","");
		MyName= MyName.replace("]","");

		while(MyName.indexOf("_l_")!=-1){
			MyName= MyName.replace("_l_"," l'");
		}

		while(MyName.indexOf("_",0)!=-1){
			MyName= MyName.replace("_"," ");
		}
		
		return MyName;
		
	}

	function checkInvalidChar(object_){

		var Mystr=new String(object_.value);
		if(Mystr.indexOf("'",0)!=-1){
			window.alert("Le champ " +  DisplayName(object_.name) + " ne peut comporter de cotes ou de guillements !");
			object_.value="";
			object_.focus();
		}

	}

	function FormatNumber(nombre,param){
		var numb=new String(nombre);

		var pos=numb.indexOf(".")
		if(pos!=-1){
			numb=numb.substring(0,param + 1 +pos);
			if(numb.length<param + 1 +pos)
				numb=numb+"0";
		}else
			numb+=".00";
		return numb;
	}