/* Objet Form 
	pForm  : nom du formulaire (string)
*/
function Form(pForm) {

	this.form_name = pForm;
	this.tab_fields= new Array();
	
	//Ajout d'un champ
	this.addField = function(pFieldName, pMessage, pType){
		var field = new Array(pFieldName, pMessage, pType);
		//this.tab_fields.push(field);
		this.tab_fields[this.tab_fields.length] = field;
	}
	
	/* Verification du formulaire 
		Renvoi true si le formulaire est valide
	*/
	this.verifForm = function() {
		//Boucle sur l'ensemble des champs
		var field=null; var fieldname=''; var fieldobj=null; var message=''; var type=''; 
		for(var i=0;i<this.tab_fields.length;i++){
			field = this.tab_fields[i];
			fieldname = field[0];
			message = field[1];
			type = field[2];
			fieldobj = eval(this.form_name+".elements['"+fieldname+"']");
			if(!this.verifField(fieldname, type)){
				//focus
				if(typeof(fieldobj.length)!='undefined') {
						//fieldobj[0].focus();
				}
				else fieldobj.focus();
				alert(message);
				return false;
			}	
		}
		return true;
	}
	
	/* Vérification du champ
		Renvoi true si le champ est valide
	*/
	this.verifField = function(pFieldName, pType){
		
		obj = eval(this.form_name+".elements['"+pFieldName+"']");
		flag = false;
		
		//Vérification de l'existence du champ
		if(obj!=null){
			
			//Type de champ
			switch(pType) {
				case 'text' : 	
					//Champ texte
					if(obj.value=='') return false;		
				break;
				case 'email' : 
					//Champ de type email
					var expreg = /^[a-z0-9\-_\.]+@[a-z0-9\-_\.]+\.[a-z]{2,5}$/i;
					if(!expreg.test(obj.value)) return false;
				break;
				case 'numeric' : 
					//Champ numérique
					if(isNaN(obj.value)) return false;
				break;
				case 'select' :
					//Liste deroulante
					if(obj.type=='select-one'){
						if(obj[obj.selectedIndex].value=='' || obj[obj.selectedIndex].value=='0') return false;
					}
					else{
						alert("L'élément '"+ pFieldName + "' n'est pas un select");
						return false;
					}
				break;
				case 'radio': 	
					//Boutons radio
					if(typeof(obj.length)!='undefined' && obj[0].type=='radio'){
						for(var i=0;i<obj.length;i++){
							if(obj[i].checked){	flag=true; break; }
						}
						if(!flag) return false;
					}
					else if(typeof(obj.checked)!='undefined' && obj.type=='radio'){
						if(obj.checked){	flag=true; break; }
						if(!flag) return false;
					}
					else {
						alert("L'élément '"+ pFieldName + "' n'est pas un bouton radio");
						return false;
					}
				break;
				case 'checkbox' : 	
					//Cases à cohcer
					if(typeof(obj.length)!='undefined' && obj[0].type=='checkbox'){
						for(var i=0;i<obj.length;i++){
							if(obj[i].checked){	flag=true; break;}
						}
						if(!flag) return false;
					}
					else if(typeof(obj.checked)!='undefined' && obj.type=='checkbox'){
						if(obj.checked){	flag=true; break; }
						if(!flag) return false;
					}
					else {
						alert("L'élément '"+ pFieldName + "' n'est pas un checkbox");
						return false;
					}
				break;
			}
		}else{
			alert("L'élément '"+ pFieldName + "' n'est pas accessible dans le formulaire");
			return false;
		}
		
		return true;
	}
}
