

/*********** funcio generica per validar *********
// Precondicio: 
   array_camps["funcio_que_ha_de_validar"] = "id_del_camp_del_formulari" */
function dades_valides(array_camps)
{	
	var array_omplert = aconseguir_dades_form(array_camps);
	var array_errors = validar_dades(array_omplert);
	var errors = mostrar_errors(array_camps,array_errors);
	
	return !errors;
}
/*********** funcio generica per validar *********/




// Pas 1: llegir les dades del formulari
function aconseguir_dades_form(array_camps)
{
	var array_omplert = new Array();	
	for (i in array_camps){
		array_int = new Array();
		for(j in array_camps[i]){
			if(j==0) array_int[j]=array_camps[i][j];
			else array_int[j]=document.getElementById(array_camps[i][j]).value;
		}
		array_omplert[i] = array_int;
	}
	return array_omplert;
}

// Pas 2: validar-les
function validar_dades(array_omplert)
{
	var array_errors = new Array();
	var repetir_accio=0; // Si hi ha mes d'un parametre, hem de saber quina accio no repetirem
	
	for(i in array_camps)
	{
		for(j in array_camps[i])
		{
			array_int = new Array();
			if(j!=0)
			{
				
				switch(array_camps[i][0])
				{
					case "mail": mis = valida_email(array_omplert[i][j]);
							break;
					case "data": mis = validarData(array_omplert[i][j]);
							break;
					case "buit": mis = esBuit(array_omplert[i][j]);
							break;
					case "lopd": mis = validaLopd(array_camps[i][j]);
							break;
					case "seleccionat": mis = validaClicats(array_omplert[i][j],1);
							break;
					case "data_inferior": 
							if(repetir_accio==0) { // Fem l'accio la primera vegada
								mis = data_inferior(array_omplert[i][j],array_omplert[i][parseInt(j)+1]);
								repetir_accio++;
							}else if(repetir_accio==1) {repetir_accio=0;} // Si hi haguessin 4 param. a la funcio -> if(repetir_accio==3)
							break;
					default: break;
				}
				if (mis!="") {	array_int[j] = mis; }
			}
		}
		array_errors[i] = array_int;
	}
	return array_errors;
}

// Pas 3: mostrar els errors i marcar inpunts en vermell
function mostrar_errors(array_camps, array_errors)
{
	var retorn = false;
	for (i in array_camps)
	{
		for(j in array_camps[i])
		{
			if(j!=0)
			{
				if(!array_errors[i][j]) // Si no es un errror
				{
					if(document.getElementById(array_camps[i][j]).className=="inputError") // i abans ho era
					{
						document.getElementById(array_camps[i][j]).className="inputNormal"; // el desmarquem com a error
						document.getElementById("missatge_"+array_camps[i][j]).className="visibleNegre";
						document.getElementById("missatge_"+array_camps[i][j]).innerHTML="";
					}
				}
				else
				{
					retorn = true;
					//alert(array_camps[i][j]+"-"+array_errors[i][j]);
					document.getElementById(array_camps[i][j]).className="inputError";
					document.getElementById("missatge_"+array_camps[i][j]).className="visibleVermell";
					document.getElementById("missatge_"+array_camps[i][j]).innerHTML=array_errors[i][j];
				}
			}
		}
	}
	
	return retorn;
}
