
	function Int2Str(num, digit) {
	var	str, count;

		str=num.toString();
		count=digit-str.length;
		if (count>0) {
			while (--count>=0) str="0"+str;
		}
		return str;
	}

	function Str2Int(str) {
	var	c, cpt, count;

		count=str.length;
		if (count<=0) return 0;
		for (cpt=0; cpt<count; cpt++) {
			c=str.charAt(cpt);
			if (c>="0" && c<="9") return parseInt(str.substring(cpt, count), 10);
		}
		return 0;
	}


	//--------------------------------------------------------------------
	// Nom de la fonction : VerifierChaine
	// ------------------
	// Description : vérifie la longueur d'une chaîne
	// -----------
	//
	// Paramètres : oChamps
	// ----------	lLongueur max   Le nombre de caractère maxi de la chaîne
	//				bFixe			si vrai alors la chaîne doit faire lLongueur caractère
	// Date de création : 29/10/1999 - Stef
	// ----------------
	// Date de dermière mise à jour : 29/10/1999 - Stef
	// ----------------------------
	// -------------------------------------------------------------------
	function VerifierChaine(oChamps,sListArguments){
		var str;
		var oTest = new Array();
		oTest = sListArguments.split(',');
		if (oTest.length==1){
			if (oChamps.value.length>oTest[0]) alert("Le champ doit avoir au maximum "+oTest[0]+" caractères");
			str=oChamps.value;
			oChamps.value=str.substring(0,oTest[0]);
		}
		else {
			if (oChamps.value.length!=oTest[0]){
				alert("La longueur du champ doit être "+oTest[0]+" caractères");
				//oChamps.value="";
				return false;
			}
		}
		return true;
	}
	
	function VerifierTel(oChamps) {
		//Déclaration des variables locales + initialisation
		var c;
		var str="";
		var numero=oChamps.value;
		var count=numero.length;
		if (count<=0) return str;
		while (--count>=0) {
			c=numero.charAt(count);
			if (c<"0" || c>"9") numero=numero.substring(0, count) + numero.substring(count+1, numero.length);
		}

		for (count=0; count<numero.length; count++) {
			if (count>0 && count%2==0) str+=" ";
			str+=numero.charAt(count);
		}
		oChamps.value=str;
		return true;
	}

	function VerifierEmail(oChamps) {
		//Déclaration des variables locales
		var pos;
		var point;
		var value = oChamps.value;

		if (value != ""){
			
			pos = value.indexOf("@") + 1;
			
			if (pos > 1 ) {
			
				point = value.indexOf(".", pos);
			
				if (point > pos && point < value.length-1){
			
					return true;
			
				}		
			}		
			alert("Erreur de saisie dans le champ Adresse email");
			oChamps.value = "";
			oChamps.focus();
			return false;		
		}else{		
			return true;		
		}
	}
	
	function VerifierEntier(oChamps,sBornes){
		var verifier=true;
		var lMin, lMax, oTest;
		var numero=oChamps.value;
		str="";
		
		if (numero==''){
			return true;
		}
		
		count=numero.length;
		if (count<=0) verifier=false;
		
		while (--count>=0) {			
			c=numero.charAt(count);
			if (c>"9") 
			{
				numero=numero.substring(0, count) + numero.substring(count+1, numero.length);
			}
		}

		for (count=0; count<numero.length; count++) {
			
			str+=numero.charAt(count);
		}
		numero=str;
		if (numero=="-") 
		{
			numero='';
		}
		oChamps.value = numero;
		if (sBornes != null){
			if (sBornes!=""){
				oTest = new Array()
				oTest = sBornes.split(",")
				lMin=Str2Int(oTest[0])
				lMax=Str2Int(oTest[1])
				if (numero<lMin || numero>lMax) {
					alert("Valeur entière erronée. Elle doit être comprise entre " + lMin + " et " + lMax);
					oChamps.value="";
					oChamps.focus();
					verifier=false
				}
			}
		} 
		return verifier;
	}
	
	//--------------------------------------------------------------------
	// Nom fonction		: VerifierDate(champ)
	// -----------------
	// Description		: vérifie si une date est correcte et gère la complétion
	//
	// Date de création : 12/05/2003
	// Auteur           : FG
	//--------------------------------------------------------------------
	function VerifierDate(champ)
	{

		var dateSaisie;
		var datePourValidation;
		var moisReference;
		var anneeReference;
		var temp;
		var unedate = new Date;
		var datereference ;
		var datejour;
		if (champ.value=='')
		{ return;}
		else
		{
		// par défaut
		datePourValidation = champ.value;
		// on splitte sur le séparateur de date
		datejour = new Date; // initialisé automatiquement avec la date du jour		
		datereference = datejour.getDate() + '/' + (datejour.getMonth()+1) + '/' + datejour.getFullYear();
		temp = datereference.split("/");
		// mois de référence = mois du début de la période
		// année de référence = année du début de la période
		moisReference = temp[1];
		anneeReference = temp[2];

		
		// analyse de la saisie
		dateSaisie = champ.value.split("/")
		// saisie de la forme xx/xx
		if (dateSaisie.length==2)
		{ datePourValidation = champ.value + "/" + anneeReference};
		// saisie de la forme xx/xx/
		if (dateSaisie.length==3 && dateSaisie[2]=='')
		{ datePourValidation = champ.value + anneeReference};
		// saisie de la forme xx/
		if (dateSaisie.length==2 && dateSaisie[1]=='')
		{ datePourValidation = champ.value + moisReference + "/" + anneeReference};
		// saisie de la forme xx
		if (dateSaisie.length==1)
		{ datePourValidation = champ.value + "/" + moisReference + "/" + anneeReference};
		}
		// ici on a le code standard (légèrement aménagé) de VerifierDate
		var str;
		var verifier=true;
		var oChamps;
		
		oChamps = champ;
		str = datePourValidation;
		sFormat = "Local";
		
		dArray = str.split("/");
		if (dArray.length!=3) verifier=false
		else {
			dArray[0]=Str2Int(dArray[0]);
			dArray[1]=Str2Int(dArray[1])-1;
			dArray[2]=Str2Int(dArray[2]);
			if (dArray[2]<50) dArray[2]+=2000;
			if (dArray[2]<100) dArray[2]+=1900;
				if (oChamps!=null&&sFormat=="Local") {
					oChamps.value=Int2Str(dArray[0],2)+"/"+Int2Str(1+dArray[1],2)+"/"+dArray[2];
				}
				if (oChamps!=null&&sFormat=="Us") {
					oChamps.value=Int2Str(dArray[1],2)+"/"+Int2Str(1+dArray[0],2)+"/"+dArray[2];
				}
			dt=new Date(dArray[2], dArray[1], dArray[0]);
			if (sFormat=="Local" && (dt.getMonth()!=dArray[1] || dt.getDate()!=dArray[0]||!verifier)) {verifier=false;}
			if (sFormat=="Us" && (dt.getMonth()!=dArray[0] || dt.getDate()!=dArray[1]||!verifier)) verifier=false;
			if (dt.getYear()==dArray[2]&& verifier) verifier=true;
			if (1900+dt.getYear()==dArray[2]&&verifier) verifier=true;
		}
		
		
		if (!verifier) {
			alert("Le format de la date n'est pas correct.");
			oChamps.value="";
			oChamps.select();
			oChamps.focus();
		}
	}
	
	function VerifierDateCompAnnee(champ,compAnnee,sDateDeb,sDateFin)
	{

		var dateSaisie;
		var datePourValidation;
		var moisReference;
		var anneeReference;
		var temp;
		var unedate = new Date;
		var datereference ;
		var datejour;
		if (champ.value=='')
		{ return;}
		else
		{
		// par défaut
		datePourValidation = champ.value;
		// on splitte sur le séparateur de date
		datejour = new Date; // initialisé automatiquement avec la date du jour	
		if(compAnnee!='')
		{
			datereference = datejour.getDate() + '/' + (datejour.getMonth()+1) + '/' + compAnnee;
		}else{
			datereference = datejour.getDate() + '/' + (datejour.getMonth()+1) + '/' + datejour.getFullYear();
		}		
		temp = datereference.split("/");
		// mois de référence = mois du début de la période
		// année de référence = année du début de la période
		moisReference = temp[1];
		anneeReference = temp[2];

		
		// analyse de la saisie
		dateSaisie = champ.value.split("/")
		// saisie de la forme xx/xx
		if (dateSaisie.length==2)
		{ datePourValidation = champ.value + "/" + anneeReference};
		// saisie de la forme xx/xx/
		if (dateSaisie.length==3 && dateSaisie[2]=='')
		{ datePourValidation = champ.value + anneeReference};
		// saisie de la forme xx/
		if (dateSaisie.length==2 && dateSaisie[1]=='')
		{ datePourValidation = champ.value + moisReference + "/" + anneeReference};
		// saisie de la forme xx
		if (dateSaisie.length==1)
		{ datePourValidation = champ.value + "/" + moisReference + "/" + anneeReference};
		}
		// ici on a le code standard (légèrement aménagé) de VerifierDate
		var str;
		var verifier=true;
		var oChamps;
		
		oChamps = champ;
		str = datePourValidation;
		sFormat = "Local";
		
		dArray = str.split("/");
		if (dArray.length!=3) verifier=false
		else {
			dArray[0]=Str2Int(dArray[0]);
			dArray[1]=Str2Int(dArray[1])-1;
			dArray[2]=Str2Int(dArray[2]);
			if (dArray[2]<50) dArray[2]+=2000;
			if (dArray[2]<100) dArray[2]+=1900;
				if (oChamps!=null&&sFormat=="Local") {
					oChamps.value=Int2Str(dArray[0],2)+"/"+Int2Str(1+dArray[1],2)+"/"+dArray[2];
				}
				if (oChamps!=null&&sFormat=="Us") {
					oChamps.value=Int2Str(dArray[1],2)+"/"+Int2Str(1+dArray[0],2)+"/"+dArray[2];
				}
			dt=new Date(dArray[2], dArray[1], dArray[0]);
			if (sFormat=="Local" && (dt.getMonth()!=dArray[1] || dt.getDate()!=dArray[0]||!verifier)) {verifier=false;}
			if (sFormat=="Us" && (dt.getMonth()!=dArray[0] || dt.getDate()!=dArray[1]||!verifier)) verifier=false;
			if (dt.getYear()==dArray[2]&& verifier) verifier=true;
			if (1900+dt.getYear()==dArray[2]&&verifier) verifier=true;
		}
				
		if (!verifier) {
			alert("Le format de la date n'est pas correct.");
			oChamps.value="";
			oChamps.select();
			oChamps.focus();
		}
		
		if (sDateDeb!='' && sDateFin!='')
		{		
			var d,d1,d2;		
			var tablo;
			var Date0;
			Date0=oChamps.value;
			tablo = Date0.split("/");
			Date0 = tablo[1] + "/" + tablo[0] + "/" + tablo[2];
			tablo = sDateDeb.split("/");
			Date1 = tablo[1] + "/" + tablo[0] + "/" + tablo[2];
			tablo = sDateFin.split("/");
			Date2 = tablo[1] + "/" + tablo[0] + "/" + tablo[2];
			
			d = new Date(Date0);
			d1 = new Date(Date1);
			d2 = new Date(Date2);
			
			if (d.getTime()<d1.getTime())
			{
				alert("Date erronée. Elle doit être comprise entre le " + sDateDeb + " et le " + sDateFin);
				oChamps.focus();
				return false;
			}
			if (d.getTime()>d2.getTime())
			{
				alert("Date erronée. Elle doit être comprise entre le " + sDateDeb + " et le " + sDateFin);
				oChamps.focus();
				return false;
			}		
		}	
		return true;	
	}	
	
	function VerifierReel(oChamps,sBornes){
		var verifier=true;
		var dValue,sValue;
		var sStr="";
		var count;
		var exp;
		sValue=oChamps.value;
		count=sValue.length;
		if (count<=0) return sStr;
		while (--count>=0) {
			c=sValue.charAt(count);
			if ((c<"0" || c>"9") && (c!=",") && (c!=".") && (c!="-")){
				sValue=sValue.substring(0, count) + sValue.substring(count+1, sValue.length);
				}
			else if (c == ","){
				sValue=sValue.substring(0, count) + "." + sValue.substring(count+1, sValue.length);
				}
			
		}
		
		dValue=parseFloat(sValue); // au cas ou il y aurait un "." en trop
		oChamps.value=dValue.toString();
		if (sValue=='') {
			oChamps.value='';	
			return false;
			}
		sStr=oChamps.value;
		if (sBornes!=''){
			var i=0;
			var ld;
			var oTest;
			oTest = new Array();
			oTest = sBornes.split(",");
			var lDec=oTest[2];
			var lMin=oTest[0];
			var lMax=oTest[1];
			//on retire les décimales en trop
			i=sStr.indexOf(".")+1;
			ld=sStr.length-i;
			if ((ld>lDec)&&(i!=0)) {
				alert('Attention : seulement ' + lDec + ' décimales admises');
				sStr= sStr.substring(0,sStr.length-(ld-lDec));
				oChamps.value=sStr;
			}
			if (parseFloat(sStr)<parseFloat(lMin)) {
				alert('Valeur erron&eacute;e. Elle ne doit pas être inférieure a ' + lMin + '.');
				oChamps.value="";
				oChamps.focus();
				verifier=false;
			}
			else if (parseFloat(sStr)>parseFloat(lMax)) {
				alert('Valeur erron&eacute;e. Elle ne doit pas être supérieure a ' + lMax + '.');
				oChamps.value="";
				oChamps.focus();
				verifier=false;
			}
		}
			
		return verifier;
	}

	
	// Permet de vérifier qu'on retrourne soit un réel, soit la valeur sValeur
	function VerifierReelOu(oChamps,sBornes,sValeur){
		if (trim(oChamps.value)=='')
			{
			alert('vous devez saisir un nombre');
			oChamps.focus();
			return false;
			}
		if (oChamps.value!= sValeur) {
			return VerifierReel(oChamps,sBornes);
			}
	}
	
	//--------------------------------------------------------------------
	// Nom de la fonction : verifierDatesInferieures
	// ------------------
	// Description : vérifie que Date1 <= Date2
	// -----------
	//
	// Paramètres : Obligatoire Date1,Date2 (valeurs des champs date)
	// ----------   (la date doit comporter jour mois et année)
	//
	// ----------------
	// Date de création : 01/09/2003 - FG
	// ----------------
	// --------------------------------------------------------------------
	function verifierDatesInferieures(Date1,Date2){
		var d1,d2;
		
		var tablo = Date1.split("/");
		Date1 = tablo[1] + "/" + tablo[0] + "/" + tablo[2];
		tablo = Date2.split("/");
		Date2 = tablo[1] + "/" + tablo[0] + "/" + tablo[2];
		
		d1 = new Date(Date1);
		d2 = new Date(Date2);

		if (Date1==""||Date2=="") return true;
		return (d1.getTime()<=d2.getTime());
	}

	//--------------------------------------------------------------------
	// Nom de la fonction : trim
	// ------------------
	// Description : enlève les blancs à droite et à gauche
	// -----------		
	function trim(s) {
		var r=/\b(.*)\b/.exec(s);
		return (r==null)?"":r[1];
	}
	
	function LesArguments(sTopic){
		//il faut compter le nombre d'argument
		this.length=LesArguments.arguments.length;
		for (cpt=0; cpt<=this.length; cpt++) {
			this[cpt]=LesArguments.arguments[cpt];
		}
	}
	
	function VerifChampObligatoires(myForm,sListChampsObl,sListLibelleChampObl){
		var bStop;
		var bValeur;
		var tabArgs; //Tableau des arguments
		var tabLibelleArgs; //Tableau des libelle arguments
		var oChamps;
		var oForm;
		var i=0;
		var sType;
		var lCpt=0;
		bStop=false;
		
		if (!isNaN(myForm)) {
			eval("oForm=document.forms[" + myForm + "]");
		}
		else{
			eval("oForm=document.forms['" + myForm + "']");
		}
		
		eval("tabArgs= new LesArguments(" + sListChampsObl + ")");
		eval("tabLibelleArgs= new LesArguments(" + sListLibelleChampObl + ")");
		
		while (i<tabArgs.length){
			eval('oChamps=oForm.' + tabArgs[i]);
			if (typeof(oChamps)!="object") {
				alert("Erreur, le champs " + tabArgs[i] + " est inconnu");
				return false;
			}
			sType=oChamps.type;
			if (sType==null){//Il existe plusieurs champs de même nom (Radio ou checkbox)
				for(j=0;j<oForm.length;j++){
					if (oForm.elements[j].name==tabArgs[i]){//c'est le bon
						sType=oForm.elements[j].type;
					}
				}
			}
			if ((sType=="text" || sType=="password" || sType=="textarea" || sType=="file") && oChamps.value==""){
				alert("Vous devez renseigner le champ " + tabLibelleArgs[i]);
				oChamps.focus();
				return false;
			}
			if (sType=="select-one" && oChamps.selectedIndex==0){
				
				alert("Vous devez sélectionner un élément dans la liste " + tabLibelleArgs[i]);
				oChamps.focus();
				return false;
			}
			if (sType=="select-multiple" && oChamps.selectedIndex==0){
				alert("Vous devez sélectionner un élément dans la liste " + tabLibelleArgs[i]);
				oChamps.focus();
				return false;
			}
			bValeur=false;
			if (sType=="checkbox"){
				for(j=0;j<oForm.length;j++){
					if (oForm.elements[j].name==tabArgs[i]){//c'est le bon
						if (oForm.elements[j].checked) {
							bValeur=true;
						}
						lCpt=j;
					}
				}
				if (!bValeur) {
					alert("Vous devez cocher une des cases.");
					oForm.elements[lCpt].focus();
					return false;
				}
			}
			i++;
		}
		return true;		
	}
