//------------------------------------------
// QUARTZ Informatique 2008
//------------------------------------------
// Form Validator v1.0

// tableau des index de champs de formulaire
// 0 pour OK
// 1 pour ERREUR
// index = index du champ de formulaire ((un choix de Radio compte pour 1 index d'ou la nécessité du tableau)

var errors = new Array(1,1,1,1,1,1,1); // les 1 initiaux pour les champs obligatoires.

//----------------------------------------------------------------------------------
// Applique une validation selon un controle effectué en amont
// remplit un tableau d'erreur aux index correspondant aux entrées
// de formulaire, et affiche une coche verte ou rouge.
//----------------------------------------------------------------------------------
function applyValidation(name,valid)
{
	var img = document.getElementById("img_"+name);
	var index=document.forms['form'].elements[name];
	var form=document.forms['form'];
	
	if(valid)
	{
		img.src="images/croix-verte.gif";
		for(i=0;i<form.elements.length-1;i++) // -1 : on ne prend pas en compte la langue du mail
			if(form.elements[i].name==name)
				errors[i]=0;
	}
	else
	{
		img.src="images/croix-rouge.gif";
		for(i=0;i<form.elements.length-1;i++) // -1 : on ne prend pas en compte la langue du mail
			if(form.elements[i].name==name)
				errors[i]=1;
	}
}

//---------------------------------------------
// Validation dynamique des INPUT
// sur changement de focus
//---------------------------------------------
// Variables : 
// - name : nom du champ de formulaire fourni par l'event onChange
// - required : champ devant etre rempli obligatoirement
// - maxlen : taille max du champ
// - alphanum : chaine égale a 'alpha' ou 'num'

//---------------------------------------------
// Vérifie si l'input respecte tous les criteres
//---------------------------------------------
function validateText(name, required, maxlen, alphanum)
{
	var elt = document.getElementById(name);
	var img = document.getElementById("img_"+name);
	
	if(required==true && alphanum=="alpha")
	{
		//var charpos = elt.value.search("[^A-Za-z]"); 
		var charpos = elt.value.search("[0-9]"); // on cherche un caractère non alphabétique (numérique)
		if(elt.value!="" && elt.value.length<=maxlen && charpos < 0)
			applyValidation(name,true);
		else
			applyValidation(name,false);
	}
	else if (required==true && alphanum=="num")
	{
		var charpos = elt.value.search("[A-Za-z]"); // on cherche un caractère non numérique (simplement alpha)
		if(elt.value!="" && elt.value.length<=maxlen && charpos < 0)
			applyValidation(name,true);
		else
			applyValidation(name,false);
	}
	else if (required==false && alphanum=="num")
	{
		var charpos = elt.value.search("[A-Za-z]"); // on cherche un caractère non numérique
		if(elt.value.length<=maxlen && charpos < 0)
			applyValidation(name,true);
		else
			applyValidation(name,false);
	}
	else if(required==false && alphanum=="alpha")
	{
		var charpos = elt.value.search("[0-9]"); // on cherche un caractère non alphabétique
		if(elt.value.length<=maxlen && charpos < 0)
			applyValidation(name,true);
		else
			applyValidation(name,false);
	}
	else if(required==true && alphanum=="")
	{
		if(elt.value!="" && elt.value.length<=maxlen)
			applyValidation(name,true);
		else
			applyValidation(name,false);
	}
	else if(required==false && alphanum=="")
	{
		if(elt.value.length<=maxlen)
			applyValidation(name,true);
		else
			applyValidation(name,false);
	}
}

//---------------------------------------------
// Vérifie si l'input est coché
//---------------------------------------------
function validateRadio(name)
{
	applyValidation(name,true);
}

//---------------------------------------------
// Vérifie si l'input est un email valide
//---------------------------------------------
function validateEmail(name, required, maxlen)
{
	var elt = document.getElementById(name);
	var img = document.getElementById("img_"+name);
	var splitted = elt.value.match("^(.+)@(.+)$");
    
	var regexp_user=/^\"?[\w-_\.]*\"?$/;
	var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
		
	if(required && elt.value.length > 0
	&& elt.value.length <= maxlen
	&& splitted != null
	&& splitted[1] != null
	&& splitted[1].match(regexp_user) != null
	&& splitted[2] != null
	&& splitted[2].match(regexp_domain) != null)
		applyValidation(name,true);
	else 
	{
		if(!required
		&& elt.value.length <= maxlen
		&& splitted != null
		&& splitted[1] != null
		&& splitted[1].match(regexp_user) != null
		&& splitted[2] != null
		&& splitted[2].match(regexp_domain) != null)
			applyValidation(name,true);
		else
			applyValidation(name,false);
	}
}

//------------------------------------------------------------------
// Vérifie si l'input est une date valide dd/mm/yyyy
//------------------------------------------------------------------
function validateDate(name, required)
{
	var elt = document.getElementById(name);
	var regexp_date = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/;
	
	if(required && elt.value=="")
		applyValidation(name,false);
	else if(!required && elt.value=="")
		applyValidation(name,true);
	else if(elt.value!="" && elt.value.match(regexp_date))
		applyValidation(name,true);
	else
		applyValidation(name,false);
}

//----------------------------------------
// Validation d'un SELECT
//----------------------------------------
function validateSelect(name,required)
{
	var elt = document.getElementById(name);
	if(elt.value.match("---.*$") && required)
		applyValidation(name,false);
	else
		applyValidation(name,true);
}
//----------------------------------------
// Envoi du formulaire si valide
//----------------------------------------
function validateForm(form)
{
	var OK=true;
	var img;
	for(i=0;i<errors.length;i++)
	{
		img = document.getElementById("img_"+form.elements[i].name);
		if(errors[i]==1)
		{
			img.src="images/croix-rouge.gif";
			OK=false;
		}
		else
			img.src="images/croix-verte.gif";
	}
	return OK;
}
