// ===================================================================
// Author: HSINI Karim (karim@radartech.net)
// Debugger: MARCEAU Julien (julien@radartech.net)
// Last modified: 11/01/2005
// Version 1.3
// + Ajout de la methode checkCheckTextIsEqual 
// + Ajout de la methode checkCheckTextIsTime 
// ===================================================================
// contructeur
function validerForm(nomform) {
	// variable
	this.nomform=nomform;
	this.defaultcolorbackground="#ffffff";
	this.defaultcolorfont="#000000";
	this.colorbackground="";
	this.colorfont="";
	this.entete="";
	this.msg="";
	this.tabcheck=new Array();	
	this.taberreur=new Array();	
	// Method mappings
	this.checkTextIsInt = validerForm_checkTextIsInt;
	this.checkTextIsFilled = validerForm_checkTextIsFilled;
	this.checkTextLengthIsBeetween = validerForm_checkTextLengthIsBeetween;
	this.checkTextIsDate = validerForm_checkTextIsDate;
	this.checkTextIsMail = validerForm_checkTextIsMail;
	this.checkTextIsDepartement = validerForm_checkTextIsDepartement;
	this.checkTextIsInseeCode = validerForm_checkTextIsInseeCode;
	this.checkRadioIsChecked = validerForm_checkRadioIsChecked;
	this.checkCheckboxIsChecked = validerForm_checkCheckboxIsChecked;
	this.checkTextIsEqual = validerForm_checkTextIsEqual;
	this.checkTextIsTime = validerForm_checkTextIsTime;

	this.submitCheck = validerForm_submitCheck;
}

// verification de champ type="text" si entier
function validerForm_checkTextIsInt(name,message) {
	this.tabcheck[this.tabcheck.length] = name;
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	var reg = /^[0-9]*$/;
	res = reg.test(elementtocheck.value);
	if(res==false) {
		this.msg+=message+"\n";
		this.taberreur[this.taberreur.length] = name;
	}
}
// verification de champ type="text" obligatoire
function validerForm_checkTextIsFilled(name,message) {
	this.tabcheck[this.tabcheck.length] = name;
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	if(elementtocheck.value=="") {
		this.msg+=message+"\n";
		this.taberreur[this.taberreur.length] = name;
	}
}
// verification longueur de la chaine
function validerForm_checkTextLengthIsBeetween(name,message,mini,maxi) {
	this.tabcheck[this.tabcheck.length] = name;
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	if(elementtocheck.value!="") {
		if(elementtocheck.value.length > maxi || elementtocheck.value.length < mini) {
			this.msg+=message+"\n";
			this.taberreur[this.taberreur.length] = name;
		}
	}
}
// Verification date
function validerForm_checkTextIsDate(name,message) {
	this.tabcheck[this.tabcheck.length] = name;
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	var reg = /^([0-9]{1,2})[ -\/]([0-9]{1,2})[ -\/]([0-9]{4})$/;
	res = reg.test(elementtocheck.value);
	if(res==false) {
		this.msg+=message+"\n";
		this.taberreur[this.taberreur.length] = name;
	} else {
		mois=((RegExp.$2)*1.0)-1;
		var testdate = new Date(RegExp.$3, mois, RegExp.$1);
		resultat = ((testdate.getFullYear() == RegExp.$3) && (testdate.getMonth() == mois) && (testdate.getDate() == RegExp.$1));
		if (!resultat) {
			this.msg+=message+"\n";
			this.taberreur[this.taberreur.length] = name;
		}
	}
}
// Verification mail
function validerForm_checkTextIsMail(name,message) {
	this.tabcheck[this.tabcheck.length] = name;
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	if(elementtocheck.value!="") {
		var reg = /[^ ]+@[^ ]+\.[^ ]+/;
		res = reg.test(elementtocheck.value);
		if(res==false) {
			this.msg+=message+"\n";
			this.taberreur[this.taberreur.length] = name;
		}
	}
}
// Verification departement francais
function validerForm_checkTextIsDepartement(name,message) {
	this.tabcheck[this.tabcheck.length] = name;
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	if(elementtocheck.value!="") {
		var reg = /^[0-9][0-9ABab]$/;
		res = reg.test(elementtocheck.value);
		if(res==false) {
			this.msg+=message+"\n";
			this.taberreur[this.taberreur.length] = name;
		}
	}
}
// Verification departement francais
function validerForm_checkTextIsInseeCode(name,message) {
	this.tabcheck[this.tabcheck.length] = name;
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	if(elementtocheck.value!="") {
		var reg = /^[12][0-9]{12}$/;
		res = reg.test(elementtocheck.value);
		if(res==false) {
			this.msg+=message+"\n";
			this.taberreur[this.taberreur.length] = name;
		}
	}
}
// Verification 1 bouton radio coche
function validerForm_checkRadioIsChecked(name,message) {
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	tmpChk = false;
	for(j=0;j<elementtocheck.length;j++){
		if (elementtocheck[j].checked == true){
			tmpChk = true;
		}
	}
	if (tmpChk == false){
		this.msg+=message+"\n";
	}
}
// Verification checkbox coche
function validerForm_checkCheckboxIsChecked(name,message) {
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	if (elementtocheck.checked != true){
		this.msg+=message+"\n";
	}
}
// Verification champ identique a un autre champ du meme formulaire
function validerForm_checkTextIsEqual(name1,name2,message) {
	this.tabcheck[this.tabcheck.length] = name1;
	this.tabcheck[this.tabcheck.length] = name2;
	var elementtocheck1=eval("document.forms['"+this.nomform+"']."+name1);
	var elementtocheck2=eval("document.forms['"+this.nomform+"']."+name2);
	if (elementtocheck1.value != elementtocheck2.value){
		this.msg+=message+"\n";
		this.taberreur[this.taberreur.length] = name1;
		this.taberreur[this.taberreur.length] = name2;
	}
}
// Verification champ de la forme HH:MM:SS
function validerForm_checkTextIsTime(name,message) {
	this.tabcheck[this.tabcheck.length] = name;
	var elementtocheck=eval("document.forms['"+this.nomform+"']."+name);
	var reg = /^([0-9]{1,2})[ -:]([0-9]{1,2})[ -:]([0-9]{1,2})$/;
	res = reg.test(elementtocheck.value);
	if(res==false) {
		this.msg+=message+"\n";
		this.taberreur[this.taberreur.length] = name;
	}
}



// Envoi du formulaire
function validerForm_submitCheck() {
	if(this.msg!="") {
		if(this.colorbackground!="" || this.colorfont!="") {
			for(i=0;i<this.tabcheck.length;i++){
				tmp = eval("document.forms['"+this.nomform+"']."+this.tabcheck[i]);
				tmp.style.backgroundColor=this.defaultcolorbackground;
				tmp.style.color=this.defaultcolorfont;
			}
			for(i=0;i<this.taberreur.length;i++){
				tmp = eval("document.forms['"+this.nomform+"']."+this.taberreur[i]);
				tmp.style.backgroundColor=this.colorbackground;
				tmp.style.color=this.colorfont;
			}
		}
		this.msg=this.entete+this.msg;
		window.alert(this.msg);
	} else {
		eval("document.forms['"+this.nomform+"'].submit();");
	}
}