var proceed = 2;  
var error = new Array(20);


function commonCheck    (valfield,   // element to be validated
                         infofield,  // id of element to receive info/error msg
                         required,
						 pos)   // true if required
{
	proceed=2;
	var seguir = proceed;
	var mivalf = document.getElementById(infofield);
	//alert("*" + infofield + "*" + required + "*" + mivalf.value );
	//alert(infofield + " *" + mivalf + "* *" + mivalf.value +"*");
	
	if(required == true)
	{
		if(mivalf!=null)
		{	
			if(mivalf.value != ""){
				//alert("*" + mivalf.value.replace(" ","") + "*")
				if(mivalf.value.replace(" ","") == ""){
					seguir = 0;
					error[pos] = "Campo requerido1";
				}
				else{
					proceed = 1;
					seguir = 1;	
				}
			}
			else{
				seguir = 0;
				error[pos] = "Campo requerido2";
			}
		}
		else
		{
			seguir = 0;
			error[pos] = "Campo requerido3";
		}
	}
		
	if(seguir==0)
		return seguir;
		
	//alert("error1:" +infofield+ " " + error[pos]);
		
	if (longitud[pos]!=0) 
	{		
		if(mivalf!=null)
			if(mivalf.value!="")
				if (mivalf.value.Length > longitud[pos]) 
				{
					seguir = 0;
					error[pos] = "Demasiado largo";
					//alert(valfield.name+": demasiado largo.");
					//history.go(-1);
				}
	}
	
	//alert("error2:" +infofield+ " " + error[pos]);
		
	if(comparado[pos] != "")
	{
		var comp = document.getElementById(comparado[pos]);
		if(comp != null)
		{
			salir = false;
			poscomp = 0;
			for(i = 0 ; i < campo.length && !salir ; i++)
			{
				if( campo[i] == comparado[pos] )
				{
					salir = true;
					poscomp = i;
				}
			}
			
			if( value != comp.value )
			{
				//seguir = -1;
				seguir = 0;
				error[pos] = "Los campos " + mostrar[pos] + " y " + mostrar[poscomp] + " deben ser iguales."
			}
		}
	}
	
	//alert("error3:" +infofield+ " " + error[pos]);
	return seguir;
}

function checkName (strng) {
	var error = "0";
	if (strng.length > 500) {
      error = "Max size is 500 chars";
    }
	return error;
}

function checkPassword (strng) {
    var illegalChars = /[\W_]/; // allow only letters and numbers
	var error = "0";
	if (illegalChars.test(strng)) {
      error = "El password contiene caracteres no validos.\n";
    }
	/*else if (!((strng.search(/[a-z]+/) > -1) && (strng.search(/[A-Z]+/) > -1) && (strng.search(/[0-9]+/) > -1))) {
	  error = "The password must contain at least one uppercase letter, one lowercase letter, and one numeral.\n";
	}*/
	return error;
}

function checkEmail(strng) {
	var emailFilter=/^.+@.+\..{2,3,4,6}$/;
	emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/  ;
	var error = "0";
	if (!(emailFilter.test(strng))) { 
		   error = "Por favor introduzca una direccion de email valida.\n";
	}
	var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
	if (strng.match(illegalChars)) {
	   error = "La direccion de email contiene caracteres no permitidos.\n";
	
	}
	return error;
}

function checkPhone (strng) {
	var stripped = strng.replace(/[\(\)\.\-\ ]/g, '');
	var error = "0";
	//strip out acceptable non-numeric characters
	if (isNaN(parseInt(stripped))) {
	   error = "The number contains illegal characters.";
	}
	return error;
}

function checkNumber (strng) {
	var validChars = /[^0-9]/ ;
	var error = "0";
	//alert(validChars.test(strng));
	if (isNaN(parseInt(strng))) {
	   error = "El número contiene caracteres no permitidos.1";
	}
	if (validChars.test(strng)) {
		error = "El número contiene caracteres no permitidos.2";
	}
	return error;
}
function checkDni(strng)
{
	var error = "0";
	var numero;
	var let;
	var letra; 
	
	//alert("ENTRO");
	
	numero = strng.substr(0,strng.length-1);
	let = strng.substr(strng.length-1,1);
	//alert(numero+ " " + let + " " + numero%23);
	numero = numero % 23;
	
	letra='TRWAGMYFPDXBNJZSQVHLCKET';
	letra=letra.substring(numero,numero+1);
	if (letra!=let) 
	{
		letra2 = 'trwagmyfpdxbnjzsqvhlcket';
		letra2 = letra2.substring(numero,numero+1);
		if (letra2 != let) 
		{
			error = "El DNI que has introducido no es correcto";
		}
	}
	
	//alert("*" + error + "*");
	return error;
}

function validateOnSubmit(formulario, alerta) {
	//alert("LLEGO");
	var cont = 0;
	for ( y = 0 ; y < error.length ; y++) {
		error[y]="0";
	}

	for (var x = 0 ; x < campo.length ; x++) {
		var micampo = "";
		field=document.getElementById(campo[x]);
		if(field!=null)
			micampo = field.value;
			
		//alert(campo[x] +  " * " + field);
		//alert(field.name + " " + field.value);
		var stat = commonCheck (field, campo[x], obligado[x], x);
		//alert(campo[x] + " " + error[x]);

		if (stat == proceed && stat==2) 
		{
			var filtro;
			//alert("analizamos " + campo[x] + " obligado:" + obligado[x] + " exixte: " + micampo);
			
			if(obligado[x] && micampo!="")
			{
				switch (tipo[x]) {
					case 1://Alphanumerico
						filtro = /[\W_]/  ;
						error[x] = checkName(field.value);
						break;
					case 2://Email
						filtro = /^[^@]+@[^@.]+\.[^@]*\w\w$/  ;
						error[x] = checkEmail(field.value);
						break;
					case 3://Alphanumerico comparado (contraseña)
						filtro = /[\W_]/;
						error[x] = checkPassword(field.value);
						break;
					case 4://Numerico
						filtro = /^\+?[0-9 ()-]+[0-9]$/  ;
						error[x] = checkPhone(field.value);
						break;
					case 5://Numerico
						error[x] = checkNumber(field.value);
						break;
					case 6://Dni
						error[x] = checkDni(field.value);
						break;
				}
			}
		}
	}
	//alert("LLEGO2");
	
	enc = 0;
	for (x in campo) {
		if (error[x]!="0" && enc ==0) 
		{
			alert(mostrar[x]+" - "+error[x]);
			enc=2;		
		}
	}
	if (enc != 2) {
		if(document.getElementById('acepto1') != null)
		{
			if(!document.getElementById('acepto1').checked)
			{
				alert("Debes leer y aceptar las condiciones y términos de uso");
				return false;
			}
		}
		
		return true;
	}
	else
	{
		return false;	
	}
}



function fmail(e) {
	var keynum = (e.which) ? e.which : e.keyCode;
	var keychar;
	var numcheck;
	var comacheck;
	var pointcheck;
	
	keychar = String.fromCharCode(keynum);

	cadcheck = /\w/;
	arrobacheck = /\@/;
	puntocheck = /\./;
	guion = /\-/;

	//alert(keynum);
	return ( guion.test(keychar) || cadcheck.test(keychar) || arrobacheck.test(keychar) ||  puntocheck.test(keychar) || keynum==8 || keynum==9 || keynum==16);
}
function login(e)
{
	var keynum = (e.which) ? e.which : e.keyCode;
	var keychar;
	var numcheck;
	
	keychar = String.fromCharCode(keynum);
	
	numcheck = /\d/;
	//alert(keynum+":"+keychar);
	//alert(numcheck.test(keychar));
	//alert((keynum>=65)+"/"+(keynum<=90));
	//alert((keynum>=97)+"/"+(keynum<=122));
	return (numcheck.test(keychar) || ( (keynum>=65) && (keynum<=90) ) || ( (keynum>=97) && (keynum<=122) ) || keynum==8 || keynum==9 || keynum==16);
}

function cadena(e)
{
	var keynum = (e.which) ? e.which : e.keyCode;
	var keychar;
	var numcheck;
	keychar = String.fromCharCode(keynum);
	
	//alert(keynum+":"+keychar);
	numcheck = /\W_/;
	return (!numcheck.test(keychar) || keynum==8 || keynum==9 || keynum==16);
}
function numero(e)
{
	var keynum = (e.which) ? e.which : e.keyCode;
	var keychar;
	var numcheck;
	keychar = String.fromCharCode(keynum);
	
	numcheck = /\d/;
	//alert(keynum+":"+keychar+"-"+numcheck.test(keychar));
	return(numcheck.test(keychar) || keynum==8 || keynum==9 || keynum==16);
}
function decimal(e)
{
	var keynum;
	var keychar;
	var numcheck;
	var comacheck;
	var pointcheck;
	if(window.event) 
	{
		keynum = e.keyCode;
	}
		else if(e.which) // Netscape/Firefox/Opera
			{
				keynum = e.which;
			}
	keychar = String.fromCharCode(keynum);
	
	numcheck = /\d/;
	pointcheck = /\./;
	comacheck = /\,/;
	//alert(keynum+":"+keychar+"_"+numcheck.test(keychar)+"_"+pointcheck.test(keychar)+"_"+comacheck.test(keychar));
	return (numcheck.test(keychar) || pointcheck.test(keychar) || comacheck.test(keychar) || keynum==8);
}
function fecha(e)
{
	var keynum;
	var keychar;
	var numcheck;
	var comacheck;
	var pointcheck;
	if(window.event) 
	{
		keynum = e.keyCode;
	}
		else if(e.which) // Netscape/Firefox/Opera
			{
				keynum = e.which;
			}
	keychar = String.fromCharCode(keynum);
	
	numcheck = /\d/;
	barracheck = /\//;
	//alert(keynum+":"+keychar+"_"+numcheck.test(keychar)+"_"+pointcheck.test(keychar)+"_"+comacheck.test(keychar));
	return (numcheck.test(keychar) || barracheck.test(keychar) || keynum==8);
}


