/*
	Clean Form Validation was written from scratch by Marc Grabanski
// http://marcgrabanski.com/code/clean-form-validation
 Under the Creative Commons Licence http://creativecommons.org/licenses/by/3.0/
	Share or Remix it but please Attribute the authors.
	Remix powered by Maria Gallego :P
*/
var missatges=new Array(new Array(5),new Array(5),new Array(5));
var REQUERIT=0;
var EMAIL=1;
var NUMERIC=2;
//input requerit
missatges[REQUERIT][1]="és un camp obligatori";
missatges[REQUERIT][2]="es un campo obligatorio";
missatges[REQUERIT][3]="is a required field";
missatges[REQUERIT][4]="est un champ requis";
missatges[REQUERIT][5]="is a required field";
//esEmail
missatges[EMAIL][1]="és un email invàlid.";
missatges[EMAIL][2]="es un email no válido.";
missatges[EMAIL][3]="is an invalid email address.";
missatges[EMAIL][4]="est une adresse email invalide.";
missatges[EMAIL][5]="is an invalid email address.";
//esNumeric
missatges[NUMERIC][1]="és un camp numèric";
missatges[NUMERIC][2]="es un campo numérico";
missatges[NUMERIC][3]="can only be a number";
missatges[NUMERIC][4]="ne peut être qu'un certain nombre";
missatges[NUMERIC][5]="can only be a number";

var cleanValidator = {
	init: function (settings) {
		this.settings = settings;
		this.form = document.getElementById(this.settings["formId"]);
		this.idioma = document.getElementById(this.settings["idioma"]);
        this.idboto = document.getElementById(this.settings["idBoto"]);//Id. del boto
        formInputs = this.form.getElementsByTagName("input");
		// change color of inputs on focus
		for(i=0;i<formInputs.length;i++)
		{
			if(formInputs[i].getAttribute("type") != "submit" && formInputs[i].getAttribute("type") != "button" ) {
				input = formInputs[i];
				input.style.background = settings["inputColors"][0];
				input.onblur = function () {
					//this.style.background = settings["inputColors"][0];
					//this.style.background ="transparent";
				}
				input.onfocus = function () {
					//this.style.background = settings["inputColors"][1];
					//this.style.background ="transparent";
				}
			}
		};
		this.form.onsubmit = function () {
			error = cleanValidator.validate();
			if(error.length < 1) {
				return true;
			} else {
				cleanValidator.printError(error);
				return false;
			}
		};
	},
	validate: function () {
		error = '';
		validationTypes = new Array("isRequired", "isEmail", "isNumeric");
		for(n=0; n<validationTypes.length; n++) {
			var x = this.settings[validationTypes[n]];
			if(x != null) {
				for(i=0; i<x.length; i++)
				{
					inputField = document.getElementById(x[i]);
					var idioma= this.settings['idioma'];
					switch (validationTypes[n]) {
						case "isRequired" :
						valid = !isRequired(inputField.value);
						errorMsg = missatges[REQUERIT][idioma];
						break;
						case "isEmail" :
						valid = isEmail(inputField.value);
						errorMsg = missatges[EMAIL][idioma]; //"is an invalid email address.";
						break;
						case "isNumeric" :
						valid = isNumeric(inputField.value);
						errorMsg = missatges[NUMERIC][idioma];//"can only be a number.";
						break;
					}                     
					if(!valid) {
						var txtTmp=document.getElementById(x[i]).title;
						error += txtTmp+" "+errorMsg+"\n"; //mostrem elm camp title, així dependrà tb del idioma.
						inputField.style.background = ""+this.settings["errorColors"][0];
						inputField.style.border = "1px solid "+this.settings["errorColors"][1];
                        //  console.log("inputField.style.background %a, error[0]: %b ",inputField.style.background,this.settings["errorColors"][0]);
					} else {
						inputField.style.background = this.settings["inputColors"][0];
						//inputField.style.background = "transparent";
						inputField.style.border = "1px solid "+this.settings["inputColors"][1];
					}
				}
			}
		}
		return error;
	},
	printError: function (error) {
		alert(error);
	}
};

// returns true if the string is not empty
function isRequired(str){
	return (str == null) || (str.length == 0);
}
// returns true if the string is a valid email
function isEmail(str){
	if(isRequired(str)) return false;
	var re = /^[^\s()<>@,;:\/]+@\w[\w\.-]+\.[a-z]{2,}$/i
	return re.test(str);
}
// returns true if the string only contains characters 0-9 and is not null
function isNumeric(str){
	//if(isRequired(str)) return false; // si buit.. no descartarho no te pq ser obligatori ficarlo
	var re = /[\D]/g
	if (re.test(str)) return false;
	return true;
}
