// JavaScript Document
var elmtContact = function(f,evts,err){
	this.field = document.getElementById(f); // référence au champ du formulaire
	this.evts = evts; // tableau des tests à effectuer avec les messages d'erreur
	this.idAffError = err; // id de la ligne d'affichage d'erreur
	this.addEvents(); // définition des événements
}

// fonction de définition des événements
elmtContact.prototype.addEvents = function(){
	var self = this;
	fct = function(){self.verify()};
	if(this.field.addEventListener){
		this.field.addEventListener("blur",fct,false);
	}else{
		this.field.attachEvent("onblur",fct);
	}
}

// fonction de vérification
elmtContact.prototype.verify = function(){
	error = false;
	for(i=0; i<this.evts.length; i++){
		switch(this.evts[i]['test']){
			case "obligatory" :
				if(this.field.value == "") error = true;
			break;
			case "isEmail" :
				var modele = /^[0-9a-zA-Z]{1}[0-9a-zA-Z_\.\-]+@[0-9a-zA-Z]{1}[0-9a-zA-Z_\.\-]+\.[a-zA-Z]{2,4}$/;
				if(!modele.test(this.field.value)) error = true;
			break;
		}
		if(error == true) break;
	}
	if(error == false) this.hideMessage();
	else this.showMessage(this.evts[i]['message']);
}

// affichage d'un message d'erreur
elmtContact.prototype.showMessage = function(m){
	this.hideMessage();
	var lg = document.createElement("tr");
	lg.setAttribute("id",this.idAffError);
	obj = this.field;
	while(obj.tagName != "TR"){
		obj = obj.parentNode;
	}
	var prec = obj;
	prec.parentNode.insertBefore(lg,prec);
	var c = lg.insertCell(0);
	c.setAttribute("colSpan",prec.cells.length);
	c.className = "erreur";
	var pTexte = document.createElement("p");
	c.appendChild(pTexte);
	var texte = document.createTextNode(m);
	pTexte.appendChild(texte);
}

// masquage d'un message d'erreur
elmtContact.prototype.hideMessage = function(){
	if(document.getElementById(this.idAffError)){
		document.getElementById(this.idAffError).parentNode.removeChild(document.getElementById(this.idAffError));
	}
}
