function isValidCif(abc){
	par = 0;
	non = 0;
	letras = "ABCDEFGHKLMNPQS";
	let = abc.charAt(0);
	
	if (abc.length!=9) {
		alert('El Cif debe tener 9 dígitos');
		return false;
	}
	
	if (letras.indexOf(let.toUpperCase())==-1) {
		alert("El comienzo del Cif no es válido");
		return false;
	}
	
	for (zz=2;zz<8;zz+=2) {
		par = par+parseInt(abc.charAt(zz));
	}
	
	for (zz=1;zz<9;zz+=2) {
		nn = 2*parseInt(abc.charAt(zz));
		if (nn > 9) nn = 1+(nn-10);
		non = non+nn;
	}
	
	parcial = par + non;
	control = (10 - ( parcial % 10));
	if (control==10) control=0;
	
	if (control!=abc.charAt(8)) {
		alert("El Cif indicado no es válido");
		return false;
	}
	  //alert("El Cif es válido");
	return true;
}


function isValidNif(abc){
	dni=abc.substring(0,abc.length-1);
	let=abc.charAt(abc.length-1);
	if (!isNaN(let)) {
		alert('El NIF/NIE no es correcto. Por favor, compruébelo');
		return false;
	} else {
		cadena = "TRWAGMYFPDXBNJZSQVHLCKET";
		dni = dni.toUpperCase(); dni = dni.replace('X','0');
		posicion = dni % 23;
		letra = cadena.substring(posicion,posicion+1);
		if (letra!=let.toUpperCase()){
			alert("El NIF/NIE no es correcto. Por favor, compruébelo");
			return false;
		}
	}
	  //alert("Nif válido")
	return true;
}


function obtenerDigito(valor){
  valores = new Array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6);
  control = 0;
  for (i=0; i<=9; i++)
    control += parseInt(valor.charAt(i)) * valores[i];
  control = 11 - (control % 11);
  if (control == 11) control = 0;
  else if (control == 10) control = 1;
  return control;
}

function numerico(valor){
  cad = valor.toString();
  for (var i=0; i<cad.length; i++) {
    var caracter = cad.charAt(i);
	if (caracter<"0" || caracter>"9")
	  return false;
  }
  return true;
}

function validar(f) {
  if (f.cc1.value == ""  || f.cc2.value == "" || f.cc3.value == "" || f.cc4.value == "") {
    alert("Por favor, introduzca los datos de su cuenta bancaria");
	return false;
  }
  else {
    if (f.cc1.value.length != 4 || f.cc2.value.length != 4 || f.cc3.value.length != 2 || f.cc4.value.length != 10) {
      alert("Por favor, introduzca correctamente los datos de su cuenta bancaria, no están completos");
	  return false;
	}
    else {
      if (!numerico(f.cc1.value) || !numerico(f.cc2.value) || !numerico(f.cc3.value) || !numerico(f.cc4.value)) {
        alert("Por favor, introduzca correctamente los datos de su cuenta bancaria, no son numericos");
		return false;
	  }
      else {
        if (!(obtenerDigito("00" + f.cc1.value + f.cc2.value) == parseInt(f.cc3.value.charAt(0))) || !(obtenerDigito(f.cc4.value) ==
              parseInt(f.cc3.value.charAt(1)))) {
          alert("La cuenta bancaria es errónea. Por favor, verifique los dígitos");
		  return false;
		}
	    else
          //alert ("CCC correcto");
		  return true;
      }
    }
  }
}

function validarGeo(f) {
 geog = f.geo.value
 pri = geog.charAt(0);
 seg = geog.charAt(1);
 
  if (f.geo.value == "" ) {
    alert("Por favor, introduzca el número al que se desvía");
	return false;
  }
  else {
    if (f.geo.value.length != 9) {
      alert("El número de desvío debe tener 9 dígitos");
	  return false;
	}
    else {
      if (!numerico(f.geo.value)) {
        alert("El número de desvío debe contener solo dígitos numéricos");
	   return false;
	  }
      else {
        if (pri == "6") {
          alert("El teléfono de desvío indicado es un móvil, pero todavía no dispone de saldo en su cuenta\npara realizar el desvío. Puede indicar ahora cualquier teléfono fijo y posteriormente recargar saldo en su zona personal. Una vez cargado el saldo, podrá cambiar el desvío al móvil que desee.");
		  return false;
		}	  
      else {
        if (pri != "9" && pri !="8" || seg == "0" || seg == "9") {
          alert("El número de desvío no es válido. Debe ser un teléfono fijo nacional.");
		  return false;
		}
	    else
          //alert ("Numero de desvio correcto");
		  return true;
      }
    }
  }
 }
}

function gvalGeoCif() {
 
  if (validarGeo(document.forms["form1"]) == false) {
       return false;
  } else 
	  if (validar(document.forms["form1"]) == false) {
       return false;
  		} else 
  			  if (isValidCif(document.getElementById("ecif").value) == false) {
		       return false;
		  		} else {
					return true;
				}
			
}

function gvalGeoNif() {
 
  if (validarGeo(document.forms["form1"]) == false) {
       return false;
  } else 
	  if (validar(document.forms["form1"]) == false) {
       return false;
  		} else 
  			  if (isValidNif(document.getElementById("ecif").value) == false) {
		       return false;
		  		} else {
					return true;
				}
			
}

function validarNacional(campo,horario) {
 geog = campo.value
 pri = geog.charAt(0);
 seg = geog.charAt(1);
 
  if (campo.value != "" ) {
    if (campo.value.length != 9) {
      alert("El teléfono del " + horario + " debe tener 9 dígitos");
	  return false;
	}
    else {
      if (!numerico(campo.value)) {
        alert("El teléfono del " + horario + " debe contener solo dígitos numéricos");
	   return false;
	  }
      else {
        if (pri != "9" && pri !="8" || seg == "0" || seg == "9") {
          alert("El teléfono del " + horario + " no es válido. Debe ser un teléfono fijo nacional.");
		  return false;
		}
	    else
          //alert ("Numero de desvio correcto");
		  return true;
      }
    }
  }
}   

function validarNac(campo,texto) {
 geog = campo.value
 pri = geog.charAt(0);
 seg = geog.charAt(1);
 
  if (campo.value != "" ) {
    if (campo.value.length != 9) {
      alert("El teléfono " + texto + " debe tener 9 dígitos");
	  return false;
	}
    else {
      if (!numerico(campo.value)) {
        alert("El teléfono " + texto + " debe contener solo dígitos numéricos");
	   return false;
	  }
      else {
        if (pri != "9" && pri !="8" || seg == "0" || seg == "9") {
          alert("El teléfono " + texto + " no es válido. Debe ser un teléfono fijo nacional.");
		  return false;
		}
	    else
          //alert ("Numero de desvio correcto");
		  return true;
      }
    }
  }
}    

function validarNacM(campo,texto) {
 geog = campo.value
 pri = geog.charAt(0);
 seg = geog.charAt(1);
 
  if (campo.value != "" ) {
    if (campo.value.length != 9) {
      alert("El teléfono " + texto + " debe tener 9 dígitos");
	  return false;
	}
    else {
      if (!numerico(campo.value)) {
        alert("El teléfono " + texto + " debe contener solo dígitos numéricos");
	   return false;
	  }
      else {
        if (pri != "9" && pri !="8" && pri != "6" || (pri == "9" && seg == "0") || (pri == "8" && seg == "0")) {
          alert("El teléfono " + texto + " no es válido. Debe ser un teléfono fijo nacional o un móvil.");
		  return false;
		}
	    else
          //alert ("Numero de desvio correcto");
		  return true;
      }
    }
  }
}    

function validarNacS(campo,texto) {				//para cuando sea movil y no haya saldo
 geog = campo.value
 pri = geog.charAt(0);
 seg = geog.charAt(1);
 
  if (campo.value != "" ) {
    if (campo.value.length != 9) {
      alert("El teléfono " + texto + " debe tener 9 dígitos");
	  return false;
	}
    else {
      if (!numerico(campo.value)) {
        alert("El teléfono " + texto + " debe contener solo dígitos numéricos");
	   return false;
	  }
      else {
        if (pri == "6") {
          alert("El teléfono indicado " + texto + " es un móvil, pero no dispone de saldo en su cuenta\npara realizar el desvío.Recargue saldo en su cuenta para poder activar el desvío a móviles.");
		  return false;
		}
      else {
        if (pri != "9" && pri !="8" || seg == "0" || seg == "9") {
          alert("El teléfono " + texto + " no es válido. Debe ser un teléfono fijo nacional.");
		  return false;
		}		
	    else
          //alert ("Numero de desvio correcto");
		  return true;
      }
    }
  }
 }
}

function validarNacionalM(campo,horario) {
 geog = campo.value
 pri = geog.charAt(0);
 seg = geog.charAt(1);
 
  if (campo.value != "" ) {
    if (campo.value.length != 9) {
      alert("El teléfono " + horario + " debe tener 9 dígitos");
	  return false;
	}
    else {
      if (!numerico(campo.value)) {
        alert("El teléfono " + horario + " debe contener solo dígitos numéricos");
	   return false;
	  }
      else {
        if (pri != "9" && pri !="8" && pri != "6" || (pri == "9" && seg == "0") || (pri == "8" && seg == "0")) {
          alert("El teléfono " + horario + " no es válido. Debe ser un teléfono fijo nacional o un móvil.");
		  return false;
		}
	    else
          //alert ("Numero de desvio correcto");
		  return true;
      }
    }
  }
}  

function validarNacionalS(campo,horario) {
 geog = campo.value
 pri = geog.charAt(0);
 seg = geog.charAt(1);
 
  if (campo.value != "" ) {
    if (campo.value.length != 9) {
      alert("El teléfono " + horario + " debe tener 9 dígitos");
	  return false;
	}
    else {
      if (!numerico(campo.value)) {
        alert("El teléfono " + horario + " debe contener solo dígitos numéricos");
	   return false;
	  }
      else {
        if (pri == "6") {
          alert("El teléfono " + horario + " es un móvil, pero no dispone de saldo en su cuenta\npara realizar el desvío.Recargue saldo en su cuenta para poder activar el desvío a móviles.");
		  return false;
		}	  
      else {
        if (pri != "9" && pri !="8" || seg == "0" || seg == "9") {
          alert("El teléfono " + horario + " no es válido. Debe ser un teléfono fijo nacional.");
		  return false;
		}
	    else
          //alert ("Numero de desvio correcto");
		  return true;
      }
    }
  }
 }
}
