<!--
REQ = 1;
EXP = 2;
COMP = 3;

MAIL = 4;
DNI = 5;
COD_POSTAL=6;
URL=7;
ES_NUM=8;
HORA=9;
FECHA=10;
MOVIL=11;
MAYOR_EDAD=12;

patronMail=/(^[0-9a-zA-Z]+(?:[._][0-9a-zA-Z]+)*)@([0-9a-zA-Z]+(?:[._-][0-9a-zA-Z]+)*\.[0-9a-zA-Z]{2,3})$/;
patronURL=/(^https?:\/\/([-\w\.]+)+(:\d+)?(\/([\w\/_\.]*(\?\S+)?)?)?)$/;
patronHora = /^([0-1][0-9]|[2][0-3]):([0-5][0-9])$/;
patronFecha = /^([0][1-9]|[12][0-9]|3[01])(\/|-)(0[1-9]|1[012])\2(\d{4})$/;

function comprobarExpresion(campo, patron){
	camp=document.getElementById(campo).value;
	if(camp!="") return (camp.match(patron)) ? true : false;
	else return true;
}

function comprobarComparacion(campo, funcion){
	camp=document.getElementById(campo).value;
	if(camp!="") return funcion(camp);
	else return true;
}

function comprobarRequerido(campo){
	return (document.getElementById(campo).value=="") ?  false : true;
}	
		
function validar(condiciones, desinencia){
	var enviar=true;
	for(i=0;i<condiciones.length;i++){
		campo=condiciones[i].campo;
		condicion=condiciones[i].condicion;
		funcion=condiciones[i].funcion;
		expresion=condiciones[i].expresion;
		
		switch(condicion){
			//genericas
			case REQ : condiciones[i].resultado=comprobarRequerido(campo); break;
			case EXP : condiciones[i].resultado=comprobarExpresion(campo, expresion); break;
			case COMP : condiciones[i].resultado=comprobarComparacion(campo, funcion); break;
			//de uso habitual
			case MAIL : condiciones[i].resultado=comprobarExpresion(campo, patronMail); break;
			case URL : condiciones[i].resultado=comprobarExpresion(campo, patronURL); break;
			case DNI : condiciones[i].resultado=comprobarComparacion(campo, comprobarDNI); break;
			case COD_POSTAL : condiciones[i].resultado=comprobarComparacion(campo, esCodigoPostal); break;
			case ES_NUM : condiciones[i].resultado=comprobarComparacion(campo, esNumerico); break;
			case HORA : condiciones[i].resultado=comprobarExpresion(campo, patronHora); break;
			case FECHA : condiciones[i].resultado=comprobarExpresion(campo, patronFecha); break;
			case MOVIL : condiciones[i].resultado=comprobarComparacion(campo, comprobarMovil); break;
			case MAYOR_EDAD : condiciones[i].resultado=comprobarComparacion(campo, comprobarEdad); break;
		}
	}
	
	
	for(i=0;i<condiciones.length;i++){
		resultado=true;
		campo=condiciones[i].campo;
		for(j=0;j<condiciones.length;j++){
			if(condiciones[j].campo==campo){
				if(!condiciones[j].resultado) resultado=false;
			}
		}
		tit=document.getElementById(desinencia + condiciones[i].campo);
		if(!resultado){
			enviar=false;
			tit.style.display="block";
		}else{
			tit.style.display="none";
		}
	}
	return enviar;
}

function comprobarEdad(edad){
	edad = edad.split('-');
	var dia = Number(edad[2]);
	var mes = Number(edad[1])-1;
	var anno = Number(edad[0]);

	fNac = new Date(anno, mes, dia);
	fAct = new Date();
	
	var diaAct = fAct.getDate();
	var mesAct = fAct.getMonth();
	var annoAct = fAct.getFullYear()-18;
	
	fLimit = new Date(annoAct, mesAct, diaAct);
	
	if(fNac.valueOf()>fLimit.valueOf()) return false;
	else return true;
}

function esNumerico(num){
	if(isNaN(Number(num))) return false;
	else return true;
}

function esCodigoPostal(cod){
	if(cod.toString().length!=5){
		return false;
	}else if(isNaN(Number(cod))){
		return false;
	}else{
		return true;	
	}
}

function comprobarMovil(movil){
	if(isNaN(movil)) return false;
	if(movil.charAt(0)!=6) return false;
	if(movil.length!=9) return false;
	return true;
}

function comprobarDNI(dni){
	resDNI=false;
	
	l_insert=dni.toUpperCase();
	l_insert=l_insert.split(" ").join("");
	l_insert=l_insert.split("-").join("");
	
	if(l_insert.charAt(0)!="X" && l_insert.charAt(0)!="Y" && isNaN(l_insert.charAt(0))){ 
		//es un cif	
		if (/^[A-Za-z0-9]{9}$/.test(l_insert) && /^[ABCDEFGHKLMNPQS]/.test(l_insert)){
			// Es una correcto
			var v1 = new Array(0,2,4,6,8,1,3,5,7,9); 
			var temp = 0; 
			var temp1;
			for( idni = 2; idni <= 6; idni += 2 ) {
				temp = temp + v1[ parseInt(l_insert.substr(idni-1,1)) ];
				temp = temp + parseInt(l_insert.substr(idni,1));
			}
			temp = temp + v1[ parseInt(l_insert.substr(7,1)) ];
			temp = (10 - ( temp % 10));
			if( temp == 10 ) temp=0;
			letras="JABCDEFGHI".split("");
			digitoControl=l_insert.substr(l_insert.length-1, 1);
			
			if ("KPQS".indexOf(l_insert.charAt(0))>=0){
				//el digito de control es una letra
				if (digitoControl==letras[temp]) resDNI=true;
			}else if ("ABEH".indexOf(l_insert.charAt(0))>=0){
				//el digito de control es un numero	
				if (digitoControl==temp) resDNI=true;
			}else{
				//puede ser un numero o una letra
				if (digitoControl==temp || digitoControl==letras[temp]) resDNI=true;
			}	
		}
	}else{
		//es un nif o un nie
		cadena="TRWAGMYFPDXBNJZSQVHLCKET" 

		if(l_insert.charAt(0)=="X" || l_insert.charAt(0)=="Y"){
			//es un nie	
			var init='';

			switch(l_insert.charAt(0)){
				case "X" : init='0'; break;
				case "Y" : init='1'; break;
				//case "Z" : init='2'; break; żżen un futuro quiza??
			}
			
			l_insert = init + '' + l_insert.substring(1,l_insert.length);
		}
		
		posicion = l_insert.substring(0,l_insert.length-1) % 23 ;
		letra = cadena.substring(posicion,posicion+1)
		l_insert=l_insert.substring(l_insert.length-1,l_insert.length);
		if(l_insert==letra) resDNI=true;
	}
	return resDNI;
}
//-->
