
//El combo de provincias tira de esto
function iniciarComboProvincia(){
 document.forms.formApadrina.provincia.options[0] = new Option("----------",0);
 document.forms.formApadrina.provincia.options[0].selected = true;
}

function validarFicha(formulario){
	estado = 'true'
	// valido los tipos text y textarea
      for (j=0;j<eval("document.forms['"+formulario+"'].elements.length") && estado == 'true';j++){
      	// valido los input
      	if (eval("document.forms['"+formulario+"'].elements[j].type=='text'")){
      		estado = validaInput(eval("document.forms['"+formulario+"'].elements[j]"));
      	}
      	if (eval("document.forms['"+formulario+"'].elements[j].type=='hidden'")){
      		estado = validaHidden(eval("document.forms['"+formulario+"'].elements[j]"));
      	}
      	if (eval("document.forms['"+formulario+"'].elements[j].type=='textarea'")){
      	 	estado = validaTextArea(eval("document.forms['"+formulario+"'].elements[j]"));
      	}
      }

      return estado
}

function validaInput(elemento){
	if ((elemento.requerido=='si') && (elemento.value==''))
	{
		switch (elemento.tipovalidacion)
		{
			case "fecha":
				alert("Debe rellenar la fecha" )
				elemento.focus();
				return 'false'
				break;
			default:
				alert("Debe rellenar el campo " + elemento.titulo )
				elemento.focus();
				return 'false'
		}
	}

         if ((elemento.requerido=='si') || (elemento.value!="")){

	switch (elemento.tipovalidacion){
		case "email":
		      email=elemento.value
			if (email.length < 5){
				alert("Por favor, rellene el " + elemento.titulo +" E-Mail correctamente");
			          elemento.focus();
	   			return 'false'
	   		}
	   		// si tiene un blanco o una #
			if ((email.indexOf("#") !=-1) || (email.indexOf(" ") !=-1) ) {
				alert("Por favor, rellene el " + elemento.titulo +" E-Mail correctamente");
			          elemento.focus();
	   			return 'false'
			}
			//que tenga arroba y punto
	   		if ((email.indexOf("@") ==-1) || (email.indexOf(".") ==-1))   {
				alert("Por favor, rellene el " + elemento.titulo +" E-Mail correctamente");
			          elemento.focus();
	   			return 'false'
			}
			break;
		case "euro":
			if (isNaN(Number(elemento.value))){
				alert("El campo '" + elemento.titulo + "' debe ser un numero. Formato num.num");
			          elemento.focus();
				return 'false'
			}
			elemento.value = Number(elemento.value) * 100
			break;
		case "fecha":
		    if (elemento.value.length == 10){
		        if (elemento.value.substring(2,3) != "/" || elemento.value.substring(5,6) != "/"){
			  alert("El campo '" + elemento.titulo + "' no es correcto.");
			  elemento.focus();
		        	  return 'false';
		        }
		        if(elemento.value.substring(0,2) >31 || elemento.value.substring(0,2)<1){
			  alert("El campo '" + elemento.titulo + "' no es correcto.");
			  elemento.focus();
		        	  return 'false';
		        }
		        if(elemento.value.substring(3,5) >12 || elemento.value.substring(3,5)<1){
			  alert("El campo '" + elemento.titulo + "' no es correcto.");
			  elemento.focus();
		        	  return 'false';
		        }
		        if(elemento.value.substring(6,10) >2050 || elemento.value.substring(6,10)<1900){
			  alert("El campo '" + elemento.titulo + "' no es correcto.");
			  elemento.focus();
		        	  return 'false';
		        }
		    }else{
			  alert("El campo '" + elemento.titulo + "' no es correcto.");
			  elemento.focus();
		        	  return 'false';
		    }
		break;
		case "fechaTarjeta":
		    if (elemento.value.length == 5){
		        if (elemento.value.substring(2,3) != "/" && elemento.value.substring(2,3) != "-"){
			  alert("El campo '" + elemento.titulo + "' no es correcto.");
			  elemento.focus();
		        	  return 'false';
		        }else{
		         if(parseInt(elemento.value.substring(0,2),10)>12){
			  alert("El campo '" + elemento.titulo + "' no es correcto.");
                   	            elemento.focus();
		        	  return 'false';
		         }
		        }
		    }else{
			  alert("El campo '" + elemento.titulo + "' no es correcto.");
			  elemento.focus();
		        	  return 'false';
		    }
		break;
		case "numerico":
			if (isNaN(Number(elemento.value))){
				alert("El campo '" + elemento.titulo + "' debe ser un número.");
			          elemento.focus();
				return 'false';
			}
			break;
		case "nif":
			 numero = parseInt(elemento.value.substr(0,elemento.value.length-1),10);
			 letra = elemento.value.substr(elemento.value.length-1,elemento.value.length);
			    cadena = new String ('TRWAGMYFPDXBNJZSQVHLCKE');
			    letraAux=cadena.charAt(numero%23);
			    if (letra.toUpperCase()!=letraAux.toUpperCase()){
			      alert("El campo '" + elemento.titulo + "' no es correcto.");
			      elemento.focus();
			      return 'false'
			    }
		          break;
	          case "cpostalEsp":
	            valor = Trim(elemento.value);
	            cProvincia = document.forms.formApadrina.provincia[document.forms.formApadrina.provincia.selectedIndex].value;
	            tProvincia = document.forms.formApadrina.provincia[document.forms.formApadrina.provincia.selectedIndex].text;
	          //  if (isNaN(elemento.value)){
	          //  	alert("El código postal ha de ser numérico");
		//          elemento.focus();
	         //   	return "false"
  	          //  }else{
  	             // En caso de tener seleccionada una provincia, de lo que se deduce que el país es España
  	             if (cProvincia!=0){
                            //alert(parseInt(valor.substr(0,cProvincia.length),10);
  	                  //alert(parseInt(cProvincia,10));
  	              if(parseInt(valor.substr(0,cProvincia.length),10)!=parseInt(cProvincia,10)){
                         alert("El código postal no corresponde a "+tProvincia);
                         elemento.focus();
                         return "false";
  	              }
  	             }
  	         //   }
	          break;
		case 	"telefono":
			if (isNaN(Number(elemento.value))){
				alert("El campo '" + elemento.titulo + "' debe ser un número de teléfono válido.");
			          elemento.focus();
				return 'false';
			}else{
			 if(elemento.value.length != 9 && elemento.value.length != 12 && elemento.value.length != 13){
				alert("El campo '" + elemento.titulo + "' debe ser un número de teléfono válido.");
			          elemento.focus();
				return 'false';
			 }
			}
			break;
		case 	"alfanumerico":
			break;
		case 	"imagen":
			break;
		case 	"adjunto":
			break;
		case 	"documento":
			break;
		case 	"undefined":
			break;
		default:

	 }
	}
		return 'true'

}

function validaHidden(elemento)
{
	if ((elemento.requerido=='si'))
	{
		switch (elemento.tipovalidacion)
		{
		case 	"contenido":
	    		if (eval("document.forms[0]."+elemento.name+"_contenido.value")=="")
	    		{
	    			alert("Por favor, rellene el " + elemento.titulo + " correctamente");
	    			return 'false'
	    		}
			break;
		case "ccbancaria":
                      if (elemento.value!=""){
		  // FUNCIÓN QUE VALIDA EL DIGITO DE CONTROL DE UNA CUENTA BANCARIA
		  numero = document.forms['formApadrina'].cuenta_bancaria.value;
		  Cuenta = numero.substr(10,10);
		  Banco = numero.substr(0,8);

		  if (numero.length != 20){
			alert("La longitud de la cuenta bancaria es incorrecta");
			return "false";
		  }

		  Pesos = new Array(6,3,7,9,10,5,8,4,2,1);		// Constantes
		  var result ='';
		  var iTemp = 0;

		  for (var n=0;n<=7;n++){
			 iTemp  = iTemp + Banco.substr(7 - n, 1) * Pesos[n];
		  }
		  result = 11 - iTemp % 11;

		  if (result > 9){
			result=1-result % 10;
		  }
		  iTemp=0;

		  for (var n=0;n<=9;n++){
			 iTemp  = iTemp + Cuenta.substr(9 - n, 1) * Pesos[n];
		  }
		  iTemp =11 - (iTemp % 11);

		  if (iTemp > 9){
		   iTemp =1-(iTemp % 10);
		  }

		  result = result*10+iTemp;
		  digactual = numero.substr(8,2)
		  if (result != digactual){
			alert("Los datos de la cuenta bancaria son incorrectos")
			document.formApadrina.primero.focus();
			return 'false'
   		  }
                     }else{
  		    document.formApadrina.primero.focus();
                        return 'false';
                     }
	          break;
		}
	}
	return 'true'
}

function validaTextArea(elemento)
{
	if ((elemento.requerido=='si') && (elemento.value==''))
	{
		alert("Debe rellenar el campo " + elemento.titulo )
		return 'false'
	}
	if ((elemento.max_car!='') && ((elemento.value).length>elemento.max_car))
	{
		alert("La longitud del campo " + elemento.titulo + " no puede sobrepasar los " + elemento.max_car +" caracteres" )
		return 'false'
	}
	return 'true'
}

    function rellenarComboProvincias(esto){

      //"esto" es el combo

       var cadena = "";
       //Sin ordenar
       //cadena +="1,ALAVA;2,ALBACETE;3,ALICANTE;4,ALMERIA;5,AVILA;6,BADAJOZ;7,ILLES BALEARS;8,BARCELONA;9,BURGOS;"
       //cadena +="10,CACERES;11,CADIZ;12,CASTELLO DE LA PLANA;13,CIUDAD REAL;14,CORDOBA;15,A CORUÑA;16,CUENCA;"
       //cadena +="17,GIRONA;18,GRANADA;19,GUADALAJARA;20,GUIPUZCOA;21,HUELVA;22,HUESCA;23,JAEN;24,LEON;25,LLEIDA;"
       //cadena +="26,LA RIOJA;27,LUGO;28,MADRID;29,MALAGA;30,MURCIA;31,NAVARRA / NAFARROA;32,OURENSE;33,ASTURIAS;"
       //cadena +="34,PALENCIA;35,LAS PALMAS GRAN CANARIA;36,PONTEVEDRA;37,SALAMANCA;38,SANTA CRUZ DE TENERIFE;"
       //cadena +="39,CANTABRIA;40,SEGOVIA;41,SEVILLA;42,SORIA;43,TARRAGONA;44,TERUEL;45,TOLEDO;46,VALENCIA;"
       //cadena +="47,VALLADOLID;48,VIZCAYA;49,ZAMORA;50,ZARAGOZA;51,CEUTA;52,MELILLA;"

       //Ordenadas
       cadena += "A CORUÑA,15;ÁLAVA,01;ALBACETE,02;ALICANTE,03;ALMERÍA,04;ASTURIAS,33;ÁVILA,05;BADAJOZ,06;BARCELONA,08;BURGOS,09;"
       cadena += "CÁCERES,10;CÁDIZ,11;CANTABRIA,39;CASTELLÓN DE LA PLANA,12;CEUTA,51;CIUDAD REAL,13;CÓRDOBA,14;CUENCA,16;"
       cadena += "GIRONA,17;GRANADA,18;GUADALAJARA,19;GUIPÚZCOA,20;HUELVA,21;HUESCA,22;ISLAS BALEARES,07;JAÉN,23;LA RIOJA,26;"
       cadena += "LAS PALMAS GRAN CANARIA,35;LEÓN,24;LLEIDA,25;LUGO,27;MADRID,28;MÁLAGA,29;MELILLA,52;MURCIA,30;NAVARRA,31;"
       cadena += "OURENSE,32;PALENCIA,34;PONTEVEDRA,36;SALAMANCA,37;SANTA CRUZ DE TENERIFE,38;SEGOVIA,40;SEVILLA,41;SORIA,42;"
       cadena += "TARRAGONA,43;TERUEL,44;TOLEDO,45;VALENCIA,46;VALLADOLID,47;VIZCAYA,48;ZAMORA,49;ZARAGOZA,50;"

       if (esto.options[esto.selectedIndex].value==1){
        document.forms.formApadrina.provincia.length=null;
        provinciaCodigos = cadena.split(";");
        for(i=0;i<provinciaCodigos.length-1;i++){
          provincia = provinciaCodigos[i].split(",")[0]
          codigo = provinciaCodigos[i].split(",")[1]
          document.forms.formApadrina.provincia.options[i] = new Option(provincia,codigo)
        }
       }else{
         document.forms.formApadrina.provincia.length=null;
         document.forms.formApadrina.provincia.options[0] = new Option("----------",0)
       }
    }

/*
==================================================================
LTrim(cadena) : devuelve una copia de una cadena sin espacios a su izqda.
==================================================================
*/
function lTrim(str)

{
   var whitespace = new String(" \t\n\r");

   var s = new String(str);

   if (whitespace.indexOf(s.charAt(0)) != -1) {
      // Cadena con espacios en blanco al principio

      var j=0, i = s.length;

      // Almacena todos los caracteres habidos desde el primer no espacio hasta el último
      while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
         j++;

      s = s.substring(j, i);
   }
   return s;
}

/*
==================================================================
RTrim(cadena) : Devuelve una copia de una cadena sin espacios a su dcha.
==================================================================
*/
function rTrim(str)
{

   var whitespace = new String(" \t\n\r");

   var s = new String(str);

   if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
       // Cadena con espacios en blanco al final

      var i = s.length - 1;       // Longitud de la cadena

      // Almacena todos los caracteres habidos desde el último no espacio hasta el primero
      while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
         i--;

      s = s.substring(0, i+1);
   }

   return s;
}

function Trim(str){

    return lTrim(rTrim(str));

}

    function gestionImporte(campo){

     //Esta función gestiona el cálculo del importe de los formularios de apadrinamiento
     //socio y socio colaborador (tanto empresas como personas físicas).
     //El inconveniente es que se hacen cálculos distintos.
     // Sobre los formularios de apadrinamientos, el importe surge de la suma del
     // nº de niños a apadrinar * cantidad estipulada más la periodicidad de pago (1,3,6 o 12) por cantidad estipulada
     // (nninos * cantidad estipulada) + (periodicidad * cantidad estipulada)

     //Sin embargo, en el resto de formularios (socio y socio colaborador <<personas físicas y empresas >>)
     //el cálculo se basa exclusivamente en la periodicidad.
     //No hay nada referente a nº de niños.

     //Esta función controla todas las opciones que se dan para obtener el cálculo correcto de todo

     NNinos = 1;
     importePeriodicidad = 0;

     if (campo.name=='n_ninos'){
      if (!isNaN(campo.value)){
        NNinos = campo.value;
      }else{
       alert("Este campo debe ser numérico");
       campo.focus();
       document.forms['formApadrina'].n_ninos.value="";
       document.forms['formApadrina'].importe.value="";
      }
     }else{
      //En caso de que no cambiar el campo nninos concretamente
      //se procederá a obtener su valor actual y multiplicarlo por cantidad estipulada

      //Antes se comprobará que ese campo existe, puesto que en los
      //formularios de socio y socio colaborador (tanto personas físicas como empresas)
      //el campo N_ninos no existe.

      if (typeof(document.forms['formApadrina'].n_ninos)!="undefined"){
       NNinos = document.forms['formApadrina'].n_ninos.value;
      }
     }

     //Este campo siempre va a tener un valor, no hace falta que se detecte el evento onChange
     switch(document.forms['formApadrina'].periodicidad.value.toUpperCase()){
      case "MENSUAL":
       operando = 1;
      break;
      case "TRIMESTRAL":
       operando = 3;
      break;
      case "SEMESTRAL":
       operando = 6;
      break;
      case "ANUAL":
       operando = 12;
      break;
     }

     cantidad = document.formApadrina.cantidad.value*100;
     importePeriodicidad = operando * cantidad; // cantidad de €
     document.forms['formApadrina'].importe.value = xRound((importePeriodicidad * NNinos)/100,2);

    }

    function xRound(numero, nDecimales){
     var fact = 1;
     for(i=1;i<=nDecimales;i++){
      fact*=10;
     }
     return Math.round(numero * fact)/fact;
    }

    function comprobarNIF(){

           var tipoDocumento
           var numeroDocumento
           var estado = 'true';

           tipoDocumento = document.formApadrina.t_documento.options[document.formApadrina.t_documento.selectedIndex].value;
           numeroDocumento = document.formApadrina.n_documento.value;

	 if (tipoDocumento=="NIF"){
           	if (numeroDocumento.length>9){
               	  alert("N.I.F. incorrecto");
	      	  estado = 'false';
	      	  document.formApadrina.n_documento.focus();
           	}else{
	 	  numero = parseInt(numeroDocumento.substr(0,numeroDocumento.length-1),10);
	 	  letra = numeroDocumento.substr(numeroDocumento.length-1,numeroDocumento.length);
	     	  cadena = new String ('TRWAGMYFPDXBNJZSQVHLCKE');
	    	  letraAux=cadena.charAt(numero%23);
	    	    if (letra.toUpperCase()!=letraAux.toUpperCase()){
	      	     alert("El campo N.I.F no es correcto.");
	      	     document.formApadrina.n_documento.focus();
	      	     estado = 'false';
	              }
	   	}
	 }
         return estado;
      }

      function comprobarImporteNinos(){
      	if(typeof(document.forms.formApadrina.n_ninos)!="undefined"){
           if (document.forms.formApadrina.importe.value<parseInt(document.forms.formApadrina.n_ninos.value,10)*parseFloat(document.formApadrina.cantidad.value)){
            alert("El importe no puede ser inferior a la cantidad indicada. ("+parseInt(document.forms.formApadrina.n_ninos.value)*parseFloat(document.formApadrina.cantidad.value)+" €)");
            document.forms.formApadrina.n_ninos.focus();
            return 'false';
           }
            return 'true';
          }else{
            return 'true';
          }
      }

    function gestionTitularCuentaBancaria(){
     if(typeof(document.forms['formApadrina'].apellidos)!="undefined"){
      titular = document.forms['formApadrina'].nombre.value + " " +document.forms['formApadrina'].apellidos.value;
     }else{
      titular = document.forms['formApadrina'].nombre.value
     }
     document.forms['formApadrina'].titular.value = titular;
    }

