// Función que comprueba la validez de una encuesta de 4 opciones
function comprueba_encuesta() {
	cont = 0;
	
	if (typeof(document.encuesta.respuesta[0]) == 'object') cont ++;
	if (typeof(document.encuesta.respuesta[1]) == 'object') cont ++;
	if (typeof(document.encuesta.respuesta[2]) == 'object') cont ++;
	if (typeof(document.encuesta.respuesta[3]) == 'object') cont ++;

	marcado = false;
	for (i=0; i<cont; i++) {
		if(document.encuesta.respuesta[i].checked) {
			document.encuesta.CONT.value=i+1;
			document.encuesta.VALOR.value=document.encuesta.respuesta[i].value;
			marcado = true;
		}
	}
		
	if (marcado){
		document.encuesta.submit();
	} else {
		alert("Debe elegir una opción");
	}
}

// Función que valida la corrección de un número de teléfono y sea fijo o móvil
function validaTelefono(numero, tipo) {
	primer = numero.charAt(0);
	primer = parseInt(primer);
	
	if (tipo == "fijo") {
		if (primer != 9 || numero.length != 9)
			return false
	} else {
		if (primer != 6 || numero.length != 9)
			return false
	}

	return true
}


// Función que nos devuelve la letra de un dni dado
function validaDNI(dni){
	var numero = dni.substring(0,dni.length-1)
	var letra = dni.substring(dni.length-1,dni.length)

	if (dni.substring(0,dni.length-1).length != 8) return false;
	
	resto = numero % 23;
	
	switch(resto) {
		case 0: temp="T"; break;
		case 1: temp="R"; break;
		case 2: temp="W"; break;
		case 3: temp="A"; break;
		case 4: temp="G"; break;
		case 5: temp="M"; break;
		case 6: temp="Y"; break;
		case 7: temp="F"; break;
		case 8: temp="P"; break;
		case 9: temp="D"; break;
		case 10:temp="X"; break;
		case 11:temp="B"; break;
		case 12:temp="N"; break;
		case 13:temp="J"; break;
		case 14:temp="Z"; break;
		case 15:temp="S"; break;
		case 16:temp="Q"; break;
		case 17:temp="V"; break;
		case 18:temp="H"; break;
		case 19:temp="L"; break;
		case 20:temp="C"; break;
		case 21:temp="K"; break;
		case 22:temp="E"; break;
		case 23:temp="U"; break;
	}
	
	if (temp != letra) {
		return false
	} else {
		return true
	}
}


// Función que nos valida una cuenta corriente
function validaCC(entidad, sucursal, dc, cuenta) {
	var cadena;
	var temp;
	var temp1;
	var temp2;

	cadena = "00"+entidad+sucursal;

	temp1 = 11 - ((parseInt(cadena.charAt(0))*1+parseInt(cadena.charAt(1))*2+parseInt(cadena.charAt(2))*4+parseInt(cadena.charAt(3))*8+parseInt(cadena.charAt(4))*5+parseInt(cadena.charAt(5))*10+parseInt(cadena.charAt(6))*9+parseInt(cadena.charAt(7))*7+parseInt(cadena.charAt(8))*3+parseInt(cadena.charAt(9))*6) % 11);

	if (temp1 == 11)
		temp1 = 0;

	cadena = cuenta;

	temp2 = 11 - ((parseInt(cadena.charAt(0))*1+parseInt(cadena.charAt(1))*2+parseInt(cadena.charAt(2))*4+parseInt(cadena.charAt(3))*8+parseInt(cadena.charAt(4))*5+parseInt(cadena.charAt(5))*10+parseInt(cadena.charAt(6))*9+parseInt(cadena.charAt(7))*7+parseInt(cadena.charAt(8))*3+parseInt(cadena.charAt(9))*6) % 11);

	if (temp2 == 11)
		temp2 = 0;

	temp = temp1+""+temp2;
	
	if (dc != temp){
		return false;
	}

	return true;
}

// Función para la validación de correos
function validarCorreo(emailStr) {
	/* Patrón que deben seguir las direcciones de correo */
	var emailPat=/^(.+)@(.+)$/
	/* Carácteres especiales que no queremos en la dirección */
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	/* carácteres válidos en la dirección */
	var validChars="\[^\\s" + specialChars + "\]"
	/* Adoptamos medidas para las cuentas con comillas: 
	Ej. "jiminy cricket"@disney.com es una dirección legal */
	var quotedUser="(\"[^\"]*\")"
	/* Dominios como dirección ip. Ej. joe@[123.124.233.4] .
	NOTA: los corchetes son obligatorios */
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	/* un átomo es una serie de carácteres no especiales. */
	var atom=validChars + '+'
	/* Con la definición anterior montamos las palabras. Un usuario será un átomo
	o un nombre entre comillas */
	var word="(" + atom + "|" + quotedUser + ")"
	// En definitiva, este es el patrón para los usuarios válidos
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	/* Patrón de un dominio "simbólico" */
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	
	/* Comprobamos si la cuenta existe realmente */
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
		return false	// eti_errorcorreo
	}
	
	var user=matchArray[1]
	var domain=matchArray[2]
	
	if (user.match(userPat)==null) {
	    return false	// eti_errorusuario
	}
	
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		  for (var i=1;i<=4;i++) {
		    if (IPArray[i]>255) {
				return false	//	errorip
		    }
	    }
	    return true
	}
	
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
	    return false	//	errordominio
	}
	
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 || 
	   domArr[domArr.length-1].length>3) {
	   return false	// errordominiopais
	}
	
	if (len<2) {
	   return false		// errorip
	}
	
	return true	
}

// Función que valida un número entero
function validarEntero(valor){ 
      //intento convertir a entero. 
      //si era un entero no le afecta, si no lo era lo intenta convertir 
       valor = parseInt(valor) 

      //Compruebo si es un valor numérico 
      if (isNaN(valor)) { 
         //entonces (no es numero) devuelvo el valor cadena vacia 
         return false
      }else{ 
         //En caso contrario (Si era un número) devuelvo el valor 
         return true 
      } 
} 

// Función que autotabula al acabar el tamaño del campo de texto en el que está.
// Si se ha escrito el tamaño máximo se pasa al siguiente campo
function autotab(thisval,fname, flen){
	var fieldname = eval("document.datos." + fname);

	if(thisval != 9 && thisval != 16){

		if(fieldname.value.length < flen){
			fieldname.focus();
		}else{
			for(x=0; x<document.datos.elements.length; x++){
				if(fieldname.name == document.datos.elements[x].name){
					var nextfield = x + 1;
				}
			}
	
			document.datos.elements[nextfield].focus();
		}
	}
}

// Función que nos devuelve la letra de un dni dado
function DNI(numero){
   resto = numero % 23;
   var letra = '';

   switch(resto) {
     case 0: letra="T"; break;
     case 1: letra="R"; break;
     case 2: letra="W"; break;
     case 3: letra="A"; break;
     case 4: letra="G"; break;
     case 5: letra="M"; break;
     case 6: letra="Y"; break;
     case 7: letra="F"; break;
     case 8: letra="P"; break;
     case 9: letra="D"; break;
     case 10:letra="X"; break;
     case 11:letra="B"; break;
     case 12:letra="N"; break;
     case 13:letra="J"; break;
     case 14:letra="Z"; break;
     case 15:letra="S"; break;
     case 16:letra="Q"; break;
     case 17:letra="V"; break;
     case 18:letra="H"; break;
     case 19:letra="L"; break;
     case 20:letra="C"; break;
     case 21:letra="K"; break;
     case 22:letra="E"; break;
     case 23:letra="U"; break;
   }
   
   return letra
}