// Fichero con las funciones de validación de los formularios

// EnvioEmail: función que se llama en el onsubmit de los formularios para validar los campos
// @Param: nomForm; Nombre del formulario a validar
// @Return: true si todo es correcto. En caso contrario false.
function EnvioEmail(nomForm){	
    if (!validar(nomForm)){
		return false;
    }else{
		if (nomForm=="pago_ayun"){
			document.getElementById("AQS").value = "Solicitudes. Tipo: Solicitud de volante de no tener deudas con el Ayuntamiento.";
		}else if (nomForm=="pago_circ"){
			document.getElementById("AQS").value = "Socilitudes. Tipo: Certificado de estar al corriente en el pago del impuesto de circulación. Tipo de volante: " + document.getElementById("Tipo_Volante").value +  ". Matrícula: " + document.getElementById("MATRICULA").value;
		}else if (nomForm=="recib_circ"){
			document.getElementById("AQS").value = "Socilitudes. Tipo: Duplicado de recibo de circulacion. Año: " + document.getElementById("Anno").value + ". Numero: " + document.getElementById("Numero").value + ". Matrícula: " + document.getElementById("MATRICULA").value;
		}else if (nomForm=="recib_cont"){
			document.getElementById("AQS").value = "Socilitudes. Tipo: Duplicado de recibo de contribución. Año: " + document.getElementById("Anno").value + ". Semestre: " + document.getElementById("Semestre").value + ". Numero: " + document.getElementById("Numero").value;
		}else if (nomForm=="volan_iae"){
			document.getElementById("AQS").value = "Socilitudes. Tipo: Solicitud de volante de IAE para IRPF.";
		}else if (nomForm=="volan_irpf"){
			document.getElementById("AQS").value = "Socilitudes. Tipo: Emisión de volantes sobre propiedades para IRPF.";
		}else if (nomForm=="cita_conc"){
			//GenerarEmailCitaConc();
		}else if (nomForm=="solic_compul"){
			document.getElementById("AQS").value = "Solicitudes. Tipo: Solicitud de compulsa de propiedades (urbana) y/o de actividades (IAE). Tipo de Compulsa:" + document.getElementById("Tipo_Volante").value + ". Motivo:" + document.getElementById("Motivo").value;
		}else if (nomForm=="solic_volan_vpo"){
			if (document.getElementById("Motivo").checked)
			{
				document.getElementById("AQS").value = "Solicitudes. Tipo: Solicitud de volante de empadronamiento. Tipo de Volante:" + document.getElementById("Tipo_Volante").value + ". Motivo: on. Direccion:" + document.getElementById("Direccion").value;
			}else{
				document.getElementById("AQS").value = "Solicitudes. Tipo: Solicitud de volante de empadronamiento. Tipo de Volante:" + document.getElementById("Tipo_Volante").value + ". Motivo: . Direccion:" + document.getElementById("Direccion").value;
			}
		}else if (nomForm=="solici_volant"){
			document.getElementById("AQS").value = "Solicitudes. Tipo: Solicitud de volante de empadronamiento. Tipo de Volante:" + document.getElementById("Tipo_Volante").value + ". Motivo: "+ document.getElementById("Motivo").value +". Direccion:" + document.getElementById("Direccion").value;
		}else if (nomForm=="Carpeta_ciud"){
			document.getElementById("AQS").value = "Solicitudes. Tipo: Solicitud alta carpeta ciudadano. Direccion:" + document.getElementById("Direccion").value;				
		}else if (nomForm=="Presup_Particip_San_Jorge"){
			document.getElementById("AQS").value = "Solicitudes. Tipo: Presupuestos participativos San Jorge. Titulo: " + document.getElementById("titulo").value + ". Localizacion: " + document.getElementById("localizacion").value + ". Explicacion: " + document.getElementById("explicacion").value + ". Direccion: " + document.getElementById("Direccion").value;				
		}else if (nomForm=="Presup_Particip_Rochapea"){
			document.getElementById("AQS").value = "Solicitudes. Tipo: Presupuestos participativos Rochapea. Titulo: " + document.getElementById("titulo").value + ". Localizacion: " + document.getElementById("localizacion").value + ". Explicacion: " + document.getElementById("explicacion").value + ". Direccion: " + document.getElementById("Direccion").value;						
		}
		//document.getElementById("F").reset;
		return true;
    }
}

// validar: Funcion general que valida los campos del formulario pasado en nomForm
// @Param: nomForm; Nombre del formulario a validar
// @Return true si los todos los campos son correctos. Sino devuelve false.
function validar(nomForm){
    var textoAQS;
    var Fisica;
    var Juridica;
    var validacion=true;	
    if (nomForm=="Frase_maltrato"){
	
	textoAQS=document.getElementById("AQS").value;
		if (trim(textoAQS) == ""){
			Mensaje("AQS","");
			return false;
		}
		if (document.getElementById("DNI").value.length==0){
			Mensaje("DNI","");
			return false;
		}
		if (document.getElementById("Nombre").value.length==0){
			Mensaje("Nombre","");
			return false;
		}
		if (document.getElementById("Apellido1").value.length==0){
			Mensaje("Primer apellido","");
			return false;
		}
		
		if (document.getElementById("tfno").value.length==0){
			Mensaje("teléfono","");
			return false;
		}
	if(textoAQS.length > 200){
		if (document.getElementById("i_d").value==2){
			Mensaje("AQS","Zure esaldia luzeegia da. Mesedez, edukia 200 karaktere arte murriztu.");
		}else{
			Mensaje("AQS","Su frase es demasiado larga. Por favor reduzca el contenido a unos 200 caracteres.");
		}
		return false;
	}
    }
    if (nomForm=="Aviso_Queja" || nomForm=="contactar_alcaldesa"){
        textoAQS=document.getElementById("AQS").value;
		if (trim(textoAQS) == ""){
			Mensaje("AQS","");
			return false;
		}
		
		if(textoAQS.length > 2000){
			if (document.getElementById("i_d").value==2){
				Mensaje("AQS","Zure esaldia luzeegia da. Mesedez, edukia 2000 karaktere arte murriztu.");
			}else{
				Mensaje("AQS","Su frase es demasiado larga. Por favor reduzca el contenido a unos 2000 caracteres.");
			}
			return false;
		}
		
		if (document.getElementById("DNI").value.length>0 && !validaDNI()){
			/* if (document.getElementById("i_d").value==2){
				 Mensaje("DNI","EUSK-El DNI introducido es erroneo.");
			 }else{
				 Mensaje("DNI","El DNI introducido es erroneo.");
			 }
			return false;*/
		}
		if (document.getElementById("tfno").value.length>0) {
			/*if (document.getElementById("tfno").value.length!=9 || (document.getElementById("tfno").value.substr(0,1)!="6" && document.getElementById("tfno").value.substr(0,1)!="9")){
				if (document.getElementById("i_d").value==2){
					Mensaje("tfno","EUSK-El teléfono introducido no es válido.");
				}else{
					Mensaje("tfno","El teléfono introducido no es válido.");
				}
				return false;
			}*/
		}		
    }
    if (nomForm=="pago_ayun" || nomForm=="pago_circ" || nomForm=="recib_circ" || nomForm=="recib_cont" || nomForm=="volan_iae" || nomForm=="volan_irpf" || nomForm=="solic_compul" || nomForm=="Carpeta_ciud"){
	if (trim(document.getElementById("DNI").value) != "" || trim(document.getElementById("Apellido1").value) != "" || trim(document.getElementById("Apellido2").value) != "" || trim(document.getElementById("Nombre").value) != ""){
	    Fisica = true;
	}else{
	    Fisica = false;
	}
	if (trim(document.getElementById("CIF").value) != "" || trim(document.getElementById("RSocial").value) != ""){
	    Juridica = true;
	}else{
	    Juridica = false;
	}
	if (Fisica == true && Juridica == true){
	    if (document.getElementById("i_d").value==2){
			Mensaje ("DNI","Bi aukeretako bat baino ez duzu bete behar (pertsona fisiko edo juridikoa).");
		}else{
			Mensaje ("DNI","Debe rellenar solamente uno de los supuestos (persona física o jurídica).");
		}
	    return false;
	}else if (Fisica == true){
	    if (trim(document.getElementById("DNI").value) == ""){
        	Mensaje("DNI","");
			return false;
	    }
		if (!validaDNI()){
			 /*if (document.getElementById("i_d").value==2){
				 Mensaje("DNI","EUSK-El DNI introducido es erroneo.");
			 }else{
				 Mensaje("DNI","El DNI introducido es erroneo.");
			 }
			return false;*/
		}
	    if (trim(document.getElementById("Apellido1").value) == ""){
			Mensaje("Apellido1","");
			return false;
	    }
	    if (trim(document.getElementById("Apellido2").value) == ""){
			Mensaje("Apellido2","");
			return false;
	    }
	    if (trim(document.getElementById("Nombre").value) == ""){
			Mensaje("Nombre","");
			return false;
	    }
	}else{
	    if (Juridica == true){
			if (trim(document.getElementById("CIF").value) == ""){
				Mensaje ("CIF","");
				return false;
			}
			if(!validarCIF()){
				 /*if (document.getElementById("i_d").value==2){
					Mensaje ("CIF","EUSK_El CIF introducido es erroneo.");
				 }else{
					 Mensaje ("CIF","El CIF introducido es erroneo.");
				 }
				return false;*/
			}
			if (trim(document.getElementById("RSocial").value) == ""){
				Mensaje("RSocial","");
				return false;
	    	}
	    }else{
			if (document.getElementById("i_d").value==2){
				Mensaje ("DNI","Bi aukeretako bat bederen bete behar duzu (pertsona fisiko edo juridikoa).");
			}else{
				Mensaje ("DNI","Debe usted rellenar al menos uno de los supuestos (persona física o jurídica).");
			}
			return false;
	    }
	}
    }
    if (nomForm=="pago_circ" || nomForm=="solic_compul" || nomForm=="solici_volant"){
		if (trim(document.getElementById("Tipo_Volante").value) == ""){
			Mensaje("Tipo_Volante","");
			return false;
		}
    }
    if (nomForm=="recib_circ" || nomForm=="recib_cont"){
		if (trim(document.getElementById("Anno").value) == ""){
			Mensaje("Anno","");
			return false;
		}
		if (document.getElementById("Anno").value.length<4 || document.getElementById("Anno")>new Date().getYear()){
			if (document.getElementById("i_d").value==2){
				Mensaje("Anno","Urtea okerra da.");
			}else{
				Mensaje("Anno","El año introducido no es válido.");
			}
			return false;
		}
    }
    if (nomForm=="recib_circ" || nomForm=="recib_cont"){
		if (trim(document.getElementById("Numero").value) == ""){
			Mensaje("Numero","");
			return false;
		}
    }
    if (nomForm=="recib_cont"){
		if (trim(document.getElementById("Semestre").value) == ""){
			Mensaje("Semestre","");
			return false;
		}
		if (document.getElementById("Semestre").value<1 || document.getElementById("Semestre").value>2){
			if (document.getElementById("i_d").value==2){
				Mensaje("Semestre","Urterdia okerra da.");
			}else{
				Mensaje("Semestre","El semestre introducido no es válido.");
			}
			return false;
		}
    } 
    if (nomForm=="solici_volant" || nomForm=="cita_conc" || nomForm=="pago_ayun" || nomForm=="pago_circ" || nomForm=="recib_circ" || nomForm=="recib_cont" || nomForm=="volan_iae" || nomForm=="volan_irpf" || nomForm=="solic_compul"){
    	if (trim(document.getElementById("tfno").value) == ""){
			Mensaje("tfno","");
			return false;
		}
		/*if (document.getElementById("tfno").value.length!=9 || (document.getElementById("tfno").value.substr(0,1)!="6" && document.getElementById("tfno").value.substr(0,1)!="9")){
			if (document.getElementById("i_d").value==2){
				Mensaje("tfno","EUSK-El teléfono introducido no es válido.");
			}else{
				Mensaje("tfno","El teléfono introducido no es válido.");
			}
			return false;
		}*/
    }
    if (nomForm=="cita_conc" || nomForm=="solici_volant"){
		if (trim(document.getElementById("DNI").value) == ""){
			Mensaje("DNI","");
			return false;
		}
		if (!validaDNI()){
			/* if (document.getElementById("i_d").value==2){
				 Mensaje("DNI","EUSK-El DNI introducido es erroneo.");
			 }else{
				 Mensaje("DNI","El DNI introducido es erroneo.");
			 }
			return false;*/
		}
		if(trim(document.getElementById("Apellido1").value) == ""){
			Mensaje("Apellido1","");
			return false;
		}
		if(trim(document.getElementById("Apellido2").value) == ""){
			Mensaje("Apellido2","");
			return false;
		}
		if(trim(document.getElementById("Nombre").value) == ""){
			Mensaje("Nombre","");
			return false;
		}
		if (trim(document.getElementById("Direccion").value) == ""){
	    	Mensaje("Direccion","");
            return false;
		}
    }
    if (nomForm=="cita_conc"){
        if (trim(document.getElementById("DIRECCION").value) == ""){
	    	Mensaje("DIRECCION","");
            return false;
		}
		if(trim(document.getElementById("EN_REPRESENTACION").value) == ""){
			Mensaje("EN_REPRESENTACION","");
			return false;
		}
		if(trim(document.getElementById("Demanda").value) == ""){
			Mensaje("Demanda","");
			return false;
		}
		if (trim(document.getElementById("BARRIO").value) == ""){
			Mensaje("BARRIO","");
			return false;
		}
    }
    if (nomForm=="pago_circ" || nomForm=="recib_circ"){
		if (trim(document.getElementById("MATRICULA").value) == ""){
			Mensaje("MATRICULA","");
			return false;
		}
    }
    if (nomForm=="Carpeta_ciud"){
		if (trim(document.getElementById("Direccion").value) == ""){
			Mensaje("Direccion","");
			return false;
		}
    }
    if (nomForm=="Presup_Particip_San_Jorge"){
		if (trim(document.getElementById("titulo").value) == ""){
			Mensaje("titulo","");
			return false;
		}    
		if (trim(document.getElementById("localizacion").value) == ""){
			Mensaje("localizacion","");
			return false;
		}    
		if (trim(document.getElementById("explicacion").value) == ""){
			Mensaje("explicacion","");
			return false;
		}
	    	if (trim(document.getElementById("DNI").value) == ""){
			Mensaje("DNI","");
			return false;
		}
		if (trim(document.getElementById("Nombre").value) == ""){
			Mensaje("Nombre","");
			return false;
		}				
    		if (trim(document.getElementById("Apellido1").value) == ""){
			Mensaje("Apellido1","");
			return false;
		}		
		if (trim(document.getElementById("Direccion").value) == ""){
			Mensaje("Direccion","");
			return false;
		}
    }if (nomForm=="Presup_Particip_Rochapea"){
		if (trim(document.getElementById("titulo").value) == ""){
			Mensaje("titulo","");
			return false;
		}    
		if (trim(document.getElementById("localizacion").value) == ""){
			Mensaje("localizacion","");
			return false;
		}    
		if (trim(document.getElementById("explicacion").value) == ""){
			Mensaje("explicacion","");
			return false;
		}
	    	if (trim(document.getElementById("DNI").value) == ""){
			Mensaje("DNI","");
			return false;
		}
		if (trim(document.getElementById("Nombre").value) == ""){
			Mensaje("Nombre","");
			return false;
		}				
    		if (trim(document.getElementById("Apellido1").value) == ""){
			Mensaje("Apellido1","");
			return false;
		}		
		if (trim(document.getElementById("Direccion").value) == ""){
			Mensaje("Direccion","");
			return false;
		}
    }
    return true;
}

// trim: Elimina todos los espacios en blanco de la cadena pasada
// @Param: cadena ; La cadena de origen
// @Return La cadena sin espacios
function trim(cadena)
{
    var cadenaTemp="";
    for(i=0; i<cadena.length;i++ )
    {
        if(cadena.charAt(i)!=" "){
	    cadenaTemp=cadenaTemp+cadena.charAt(i);
	}
    }
    return cadenaTemp;
}

// Mensaje: muestra una alerta y enfoca en el un campo
// @Param: elemento: Campo al que queremos mandar el foco
// @Param: aviso: Texto del mensaje a mostrar
function Mensaje(elemento, aviso) {
	if (aviso==""){
		if (document.getElementById("i_d").value==2){
			aviso="Derrigorrezko datuak bete behar duzu.";
		}else{
			aviso="Debe de rellenar todos los campos obligatorios";
		}
	}
	alert(aviso);
    document.getElementById(elemento).focus();
}

// GenerarEmailCitaConc: Genera el correo a enviar en el formulario de petición de cita con los Concejales
function GenerarEmailCitaConc(){
    var sToEmail;
    var sBody;
    var sSujeto;
    sToEmail = "foro@ayto-pamplona.es";
    sSujeto = "Petición de cita con los Concejales de Barrio";
    sBody = "<?xml version=" + String.fromCharCode(34) + "1.0" +String.fromCharCode(34) + " encoding=" + String.fromCharCode(34) + "utf-8" + String.fromCharCode(34) + "?>";
    sBody = sBody + "<Solicitudes>";
    sBody = sBody + "<Tipo>" + sSujeto + "</Tipo>";
    sBody = sBody + "<DNI>" + document.getElementById("DNI").value + "</DNI>";
    sBody = sBody + "<Tfno>" + document.getElementById("tfno").value + "</Tfno>";
    sBody = sBody + "<Apellido1>" + document.getElementById("Apellido1").value + "</Apellido1>";
    sBody = sBody + "<Apellido2>" + document.getElementById("Apellido2").value + "</Apellido2>";
    sBody = sBody + "<Nombre>" + document.getElementById("Nombre").value + "</Nombre>";
    sBody = sBody + "<Direccion>" + document.getElementById("Direccion").value + "</Direccion>";
    sBody = sBody + "<En_Representacion>" + document.getElementById("EN_REPRESENTACION").value + "</En_Representacion>";
    sBody = sBody + "<Demanda>" + document.getElementById("Demanda").value + "</Demanda>";
    if (trim(document.getElementById("OTRA_DEMANDA").value) != ""){
	sBody = sBody + "<Otra_Demanda>" + document.getElementById("OTRA_DEMANDA").value + "</Otra_Demanda>";
    }
    sBody = sBody + "<Barrio>" + document.getElementById("Barrio").value + "</Barrio>";
    sBody = sBody + "</Solicitudes>";
    document.getElementById("f").action = "mailto:" + sToEmail + "?Subject=" + sSujeto + "&body=" + sBody
}

function validaDNI(){
	/*var dni=document.getElementById("DNI").value.split("-");
	if (!isNumber(dni[0])){
		if (!isNumber(dni[0].substr(0,dni[0].length-1))){
			return false;
		}else{
			if (dni[0].substr(dni[0].length-1).toUpperCase()==calcularLetraDNI(dni[0].substr(0,dni[0].length-1))){
				document.getElementById("DNI").value=dni[0].substr(0,dni[0].length-1)+"-"+dni[0].substr(dni[0].length-1).toUpperCase();
				return true;
			}else{
				return false;
			}
		}
	}else if (dni[1]!=undefined && (dni[1]=="" || isNumber(dni[1]))){
		return false;
	}else if (dni[1]!=undefined){
		if (dni[1].toUpperCase()==calcularLetraDNI(dni[0])){
			return true;
		}else{
			return false;
		}
	}else{
		document.getElementById("DNI").value=dni[0] + "-" + calcularLetraDNI(dni[0]);
		return true;
	}*/
	return true;
}

function isNumber(numero){
	var correcto=true;
	for (x=0;x<numero.length;x++){
		if ((numero.substr(x,1) < "0") || (numero.substr(x,1) > "9")){
			correcto=false;
			break;
		}
	}
	return correcto
}

function calcularLetraDNI(numero){
	var letras="TRWAGMYFPDXBNJZSQVHLCKET"; 
	var posicion=numero%23;
	return letras.substring(posicion,posicion+1); 
}

function validarCIF(){
	//Validamos el formato del cif
	/*var cif=document.getElementById("CIF").value;
	if (trim(cif).length!=9) {
		return false;
	}else{
		var letrasIni= "ABCDEFGHKLMNPQS";
		var letrasFin="ABCDEFGHIJ1234567890";
		if (letrasIni.indexOf(cif.substr(0,1).toUpperCase())<0){
			return false;
		}
		if (letrasFin.indexOf(cif.substr(cif.length-1).toUpperCase())<0 ){
			return false;
		}
		return validarDigitoCIF(cif);
	}*/
	return true;
}
function validarDigitoCIF(codigo){
   var numeros=codigo.substring(1,8);
   var digito=codigo.substring(8);
   if (isNumber(numeros)){
	   var pares =new Array();
	   var impares=new Array();
	   var resultados = new Array(0,2,4,6,8,1,3,5,7,9);
	   var letras=new Array("J","A","B","C","D","E","F","G","H","I");
	   pares.push(numeros.substr(1,1));
	   pares.push(numeros.substr(3,1));
	   pares.push(numeros.substr(5,1));
	   impares.push(numeros.substr(0,1));
	   impares.push(numeros.substr(2,1));
	   impares.push(numeros.substr(4,1));
	   impares.push(numeros.substr(6,1));
	   var suma=Number(pares[0])+Number(pares[1])+Number(pares[2]);
	   suma=suma+Number(resultados[impares[0]])+Number(resultados[impares[1]])+Number(resultados[impares[2]])+Number(resultados[impares[3]]);
	   suma=suma.toString();
	   var resultado=suma.substr(suma.length-1);
	   var resultado=10-Number(resultado);
	   if (digito==resultado){
		   return true;
	   }
	   if (digito.toUpperCase()==letras[resultado]){
		   return true;
	   }
	   return false;
   }else{
	   return false;
   }
}

function validarEmail(email){
	if (email.length<6 || email.indexOf("@")<0 || email.indexOf(".")<0){
		return false;	
	}
	var nombre=email.split("@");
	if (nombre.length!=2 || nombre[0]==""){
		return false;
	}
	var servidor=nombre[1].split(".");
	if (servidor[0]==""){
		return false;
	}
	if (servidor.length==1 || servidor[servidor.length-1]==""){
		return false;
	}
	return true;
}