var proceed = 2;  
var campo = new Array();
var tipo = new Array();
var obligado = new Array();
var longitud = new Array();
var etiqueta = new Array();
var etiqueta = new Array();
var error = new Array(50);

function commonCheck    (valfield,   // element to be validated
                         infofield,  // id of element to receive info/error msg
                         required,
						 posicion
						 )   // true if required
{
	proceed=2;
	var seguir = proceed;
	with (valfield)
	{
		mval = $('#'+infofield).val();
		if($('#'+infofield).attr('type')=='checkbox') {
			if($('#'+infofield).attr('checked')==false) {
				mval = "";
			}
		}
		if (mval==null||mval==undefined||mval=="") {
			if (required==true) {
				seguir = 0;
			}
			else {
				proceed = 1;
				seguir = 1;
			}
		}
		if (longitud[0]!=0) {
			if (mval.length > longitud[x]) {
				seguir=-1;
				alert(valfield.name+": demasiado largo.");
				history.go(-1);
			}
		}
	}
	//alert(infofield+":"+valfield+"/"+required+"/"+posicion+"="+mval+"->"+seguir);
	return seguir;
}

function checkName (strng) {
	var stripped = strng.replace(/[\(\)\.\-\/\,\ ]/g, '');
//	alert(stripped.search("N"));
//	stripped = stripped.replace("Ã¡", ""); //á
//	stripped = stripped.replace("Ã©", ""); //é
//	stripped = stripped.replace("Ã­", ""); //í
//	stripped = stripped.replace("Ã³", ""); //ó
//	stripped = stripped.replace("Ãº", ""); //ú
//	stripped = stripped.replace("Ã±", ""); //ñ
//	stripped = stripped.replace("Ã§", ""); //ç
//	stripped = stripped.replace("Ã¼", ""); //ü
//	stripped = stripped.replace("Â´", ""); //'
//	stripped = stripped.replace("Ã‰", ""); //É
//	stripped = stripped.replace("Ã", ""); //Í
//	stripped = stripped.replace("Ã“", ""); //Ó
//	stripped = stripped.replace("Ãƒ", ""); //Ó
//	stripped = stripped.replace("Ãš", ""); //Ú
//	stripped = stripped.replace("Ã‘", ""); //Ñ
//	stripped = stripped.replace("Âº", ""); //º
    var illegalChars = /\W_/  ; // allow only letters and numbers  /[\W_]/  
	var error = "0";
//	 alert(stripped+"-:"+stripped.search(illegalChars));
	if (illegalChars.test(stripped)) {
      error = "La cadena contiene caracteres no permitidos."+illegalChars.test(stripped);
    }
	return error;
}

function checkCad (strng) { //Login
    var illegalChars = /\W_/ ; // allow only letters and numbers  /[\W_]/  
	var error = "0";
	if (illegalChars.test(strng)) {
      error = "La cadena contiene caracteres no permitidos.";
    }
	return error;
}

function checkLogin (strng) { //Login
    var illegalChars1 = /[a-z]/ ; // allow only letters and numbers  /[\W_]/  
    var illegalChars2 = /[A-Z]/ ; // allow only letters and numbers  /[\W_]/  
    var illegalChars3 = /[0-9]/ ; // allow only letters and numbers  /[\W_]/  
	var error = "0";
	if (!(illegalChars1.test(strng)) && !(illegalChars2.test(strng)) && !(illegalChars3.test(strng))) {
      error = "La cadena contiene caracteres no permitidos.";
    }
	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 permitidos.";
    }
	return error;
}

function checkEmail(strng) {
	var emailFilter=/^.+@.+\..{2,3,4,6}$/;
	emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/  ;
	var error = "0";
	if (!(emailFilter.test(strng))) { 
		   error = "El e-mail no tiene el formato adecuado.";
	}
	var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
	if (strng.match(illegalChars)) {
	   error = "El e-mail contiene caracteres no permitidos.";
	
	}
	return error;
}

function checkWeb(strng) {
	var emailFilter=/^.+@.+\..{2,3,4,6}$/;
	emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/  ;
	var error = "0";
	if (!(emailFilter.test(strng))) { 
		   error = "El e-mail no tiene el formato adecuado.";
	}
	var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
	if (strng.match(illegalChars)) {
	   error = "El e-mail contiene caracteres no permitidos.";
	
	}
	return error;
}

function checkPhone (strng) {
	var validChars = /[^0-9]/ ;
	var stripped = strng.replace(/[\(\)\.\-\+\ ]/g, '');
	var error = "0";
	//strip out acceptable non-numeric characters
	if (isNaN(parseInt(stripped))) {
	   error = "El teléfono contiene caracteres no permitidos.";
	}
	if (validChars.test(stripped)) {
		error = "El teléfono contiene caracteres no permitidos.2";
	}
	//alert(stripped);
	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 checkDouble (strng) {
	var stripped = strng.replace(/[\.\,]/g, '');
	var validChars = /[^0-9]/ ;
	var error = "0";
	//alert(validChars.test(strng));
	if (isNaN(parseInt(stripped))) {
	   error = "El número contiene caracteres no permitidos.1";
	}
	if (validChars.test(stripped)) {
		error = "El número contiene caracteres no permitidos.2";
	}
	return error;
}

function validateOnSubmit(formulario) {
	var cont = 0;
	miformulario = document.forms[formulario];
	//alert(campo.length);
	//alert(formulario);
	contador = 0;
	for (x=0; x<campo.length; x++) {
		//field=document.getElementById(campo[x]);
		field = miformulario.elements[campo[x]];
		error[x]="0";

		//alert(campo[x]+":"+field);
		var stat = commonCheck (field, campo[x], obligado[x], x);
		if (stat == 0) {
			error[x]="Debe rellenar los campos que llevan asterisco puesto que son obligatorios.";
		}
		if (stat == proceed && stat==2) {
			//alert("analizamos "+campo[x]);
			switch (tipo[x]) {
				case 1://Alphanumerico
					error[x] = checkName(field.value);
					break;
				case 2://Email
					error[x] = checkEmail(field.value);
					break;
				case 3://Password, comparado (contraseña)
					error[x] = checkPassword(field.value);
					break;
				case 4://Teléfono
					error[x] = checkPhone(field.value);
					break;
				case 5://Numero (DNI, CP, ...)
					error[x] = checkNumber(field.value);
					break;
				case 6://Cadena de caracteres
					error[x] = checkCad(field.value);
					break;
				case 7://double
					error[x] = checkDouble(field.value);
					break;
				case 8://Login
					error[x] = checkLogin(field.value);
					break;
			}
		}
	}
	enc = 0;
	for (x=0; x<campo.length; x++) {
		if (error[x]!="0" && enc ==0) {
			alert("Error: "+etiqueta[x]+" - "+error[x]);
			enc=1;		
		}
	}
	if (enc==0) {
		document.getElementById(formulario).submit();
	}
}


function val_login(e)
{
	var keynum;
	var keychar;
	var numcheck;
	if(window.event) 
	{
		keynum = e.keyCode;
	}
		else if(e.which) // Netscape/Firefox/Opera
			{
				keynum = e.which;
			}
	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);
}

function cadena(e)
{
	var keynum;
	var keychar;
	var numcheck;
	if(window.event) 
	{
		keynum = e.keyCode;
	}
		else if(e.which) // Netscape/Firefox/Opera
			{
				keynum = e.which;
			}
	keychar = String.fromCharCode(keynum);
	
	//alert(keynum+":"+keychar);
	numcheck = /\W_/;
	return !numcheck.test(keychar) || keynum==8;
}
function numero(e)
{
	var keynum;
	var keychar;
	var numcheck;
	if(window.event) 
	{
		keynum = e.keyCode;
	}
		else if(e.which) // Netscape/Firefox/Opera
			{
				keynum = e.which;
			}
	keychar = String.fromCharCode(keynum);
	
	numcheck = /\d/;
	//alert(keynum+":"+keychar+"-"+numcheck.test(keychar));
	return numcheck.test(keychar) || keynum==8 || keynum==13 || keynum == undefined;
}
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);
}
function email(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);

	cadcheck = /\w/;
	arrobacheck = /\@/;
	puntocheck = /\./;
	guioncheck = /\-/;

	return (cadcheck.test(keychar) || arrobacheck.test(keychar) ||  puntocheck.test(keychar) ||  guioncheck.test(keychar) || keynum==8 || keynum == undefined);
}

