﻿
$(document).ready(function(){
	// Provincia/Off Spain.
	$("#siNacionalidad").change(function()
	{
		if( $("#siNacionalidad").val() !='España' && $("#siNacionalidad").val() !='Andorra' )
		{
			$('.pnie').removeClass('hide');
			$('.pdni').addClass('hide');
		}
		else
		{
			$('.pnie').addClass('hide');
			$('.pdni').removeClass('hide');
		}
	});
});


function g(txt){
	return document.getElementById(txt);
}

var tlf1
var tlf2
var valorTelefono;
var paisesComunitarios = new Array("Andorra", "Alemania", "Austria", "Bélgica", "Chipre", "Dinamarca", "España", "Eslovaquia", "Eslovenia", "Estonia", "Finlandia", "Francia", "Grecia", "Holanda", "Hungria", "Irlanda", "Islandia", "Italia", "Letonia", "Liechtenstein", "Lituania", "Luxemburgo", "Malta", "Noruega", "Polonia", "Portugal", "Reino Unido", "República Checa", "Suecia")


function es_pais_europeo(valor){
	for(i=0;i<paisesComunitarios.length;i++) {
		if (valor == paisesComunitarios[i]) {
			es = true;
			break
		    return true;			
		}else{
			es = false;
		}
	}
return es;
}



//Retorna: 1 = NIF ok, 2 = CIF ok, 3 = NIE ok, -1 = NIF error, -2 = CIF error, -3 = NIE error, 0 = ??? error
function valida_nif_cif_nie(a) 
{
	alert("dins");
	var temp=a.toUpperCase();
	var cadenadni="TRWAGMYFPDXBNJZSQVHLCKE";
	
	if (temp!==''){
		//si no tiene un formato valido devuelve error
		if ((!/^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$/.test(temp) && !/^[T]{1}[A-Z0-9]{8}$/.test(temp)) && !/^[0-9]{8}[A-Z]{1}$/.test(temp))
		{
			return 0;
		}

		//comprobacion de NIFs estandar
		if (/^[0-9]{8}[A-Z]{1}$/.test(temp))
		{
			posicion = a.substring(8,0) % 23;
			letra = cadenadni.charAt(posicion);
			var letradni=temp.charAt(8);
			if (letra == letradni)
			{
			   	return 1;
			}
			else
			{
				return -1;
			}
		}
		
		//algoritmo para comprobacion de codigos tipo CIF
		suma = parseInt(a.charAt(2))+parseInt(a.charAt(4))+parseInt(a.charAt(6));
		for (i = 1; i < 8; i += 2)
		{
			temp1 = 2 * parseInt(a.charAt(i));
			temp1 += '';
			temp1 = temp1.substring(0,1);
			temp2 = 2 * parseInt(a.charAt(i));
			temp2 += '';
			temp2 = temp2.substring(1,2);
			if (temp2 == '')
			{
				temp2 = '0';
			}

			suma += (parseInt(temp1) + parseInt(temp2));
		}
		suma += '';
		n = 10 - parseInt(suma.substring(suma.length-1, suma.length));

		//comprobacion de NIFs especiales (se calculan como CIFs)
		if (/^[KLM]{1}/.test(temp))
		{
			if (a.charAt(8) == String.fromCharCode(64 + n))
			{
				return 1;
			}
			else
			{
				return -1;
			}
		}
		
		//comprobacion de CIFs
		if (/^[ABCDEFGHJNPQRSUVW]{1}/.test(temp))
		{
			temp = n + '';
			if (a.charAt(8) == String.fromCharCode(64 + n) || a.charAt(8) == parseInt(temp.substring(temp.length-1, temp.length)))
			{
				return 2;
			}
			else
			{
				return -2;
			}
		}
		
		//comprobacion de NIEs
		//T
		if (/^[T]{1}/.test(temp))
		{
			if (a.charAt(8) == /^[T]{1}[A-Z0-9]{8}$/.test(temp))
			{
				return 3;
			}
			else
			{
				return -3;
			}
		}
		
		//XYZ
		if (/^[XYZ]{1}/.test(temp))
		{
			pos = str_replace(['X', 'Y', 'Z'], ['0','1','2'], temp).substring(0, 8) % 23;
			if (a.charAt(8) == cadenadni.substring(pos, pos + 1))
			{
				return 3;
			}
			else
			{
				return -3;
			}
		}
	}
	else
	{
		return 4;
	}
	
	return 0;
}


function calcularNIF(dni) {
	if (!/^\d{1,8}[A-Za-z]{1}$/.test(dni)) {
	  return false;
	} else {
		var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
		var numero = dni.substr(0,dni.length-1);
		while (numero.substr(0,1) == '0') {
			numero = numero.substr(1,numero.length);
		}
		numero = parseInt(numero)%23;
		if (letras.substring(numero,numero+1) != dni.substring(dni.length-1).toUpperCase()) {return false;}
		else {return true;}
	}
}


function calcularNIE(dni) {
	if ((!/^[Yy]{1}\d{1,8}[A-Za-z]{1}$/.test(dni)) && (!/^[Xx]{1}\d{1,8}[A-Za-z]{1}$/.test(dni))) {
    //if (!(/^[XxYy]{1}[0-9]{7}[a-zA-Z]{1}$/.test(dni))){		
	  return false;
	} else {
		var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
		var numero = dni.substr(1,dni.length-1);
		while (numero.substr(0,1) == '0') {
			numero = numero.substr(1,numero.length);
		}
		numero = parseInt(numero)%23;
		if (letras.substring(numero,numero+1) != dni.substring(dni.length-1).toUpperCase()) {return false;}
		else {return true;}
	}
}


function valNIE(nie)
{
  if ((!/^[Yy]{1}\d{1,8}[A-Za-z]{1}$/.test(nie)) && (!/^[Xx]{1}\d{1,8}[A-Za-z]{1}$/.test(nie)) && (!/^[Zz]{1}\d{1,8}[A-Za-z]{1}$/.test(nie))) { 
    return false;
  }else{
		var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
		var letra_inicial = nie.substr(0,1);
		var numero = nie.substr(1,nie.length-1);
		while (numero.substr(0,1) == '0') {
			numero = numero.substr(1,numero.length);
		}
		if (letra_inicial == 'Y'){
			numero = (parseInt(numero)-9)%23;
		}else{
			numero = parseInt(numero)%23;
		}		
		if (letras.substring(numero,numero+1) != nie.substring(nie.length-1).toUpperCase()) {return false;}
		else {return true;}
  }
}

function cambiaPais()
{
	if (g('siIdPais').options[g('siIdPais').selectedIndex].value=='ES')
	{
		g('siProvinciaLabel').style.display='none';
		g('siProvinciaInput').style.display='none';
		g('siIdProvinciaLabel').style.display='block';
		//g('siIdProvinciaInput').style.display='block';
		g('siProvincia').value="";
	}
	else
	{
		g('siProvinciaLabel').style.display='block';
		g('siProvinciaInput').style.display='block';
		g('siIdProvinciaLabel').style.display='none';
		//g('siIdProvinciaInput').style.display='none';
		g('siIdProvincia')[0].selected=true;
	}
}

function compruebaCampos(lg)
{

	// entrada
	//var chars = "áéíóú";
	// salida correcta, pinta "áéíóú"
	//var chars = "\xe1\xe9\xed\xf3\xfa";
	
	ilg=0; //mensajes en castellano
	if (lg=="CA") {ilg=1;}
	
	var avOposicion = new Array("Debe seleccionar una oposici\xf3n.","Ha de seleccionar una oposici\xf3.");
	var avNombre = new Array("Debe indicar su Nombre.","Ha d'indicar el seu Nom.");
	var avApellidos = new Array("Debe indicar sus Apellidos.","Ha d'indicar els seus Cognoms.");
	var avEdad = new Array("Debe indicar su edad.","Ha d'indicar la seva edat.");
	var avEdadCorrecta = new Array("Debe indicar una edad correcta.","Ha d'indicar una edat correcta.");
	var avEmail = new Array("Debe indicar su E-mail.","Ha d'indicar el seu E-mail.");
	var avEmailError = new Array("Debe indicar un E-mail correcto.","Ha d'indicar un E-mail correcte.");	
	var avTelefono = new Array("Debe indicar su tel\xe9fono.","Ha d'indicar el seu tel\xe8fon.");
	var avTelefonoCorrecto = new Array("El tel\xe9fono debe ser v\xe1lido.","El tel\xe8fon ha de ser v\xe0lid.");
	var avDireccion = new Array("Debe indicar su dirección.","Ha d'indicar la seva adreça.");
	var avNumero = new Array("Debe indicar el número de su dirección.","Ha d'indicar el número de la seva adreça.");	
	var avPoblacion = new Array("Debe indicar su población.","Ha d'indicar la seva població.");	
	var avCP = new Array("Debe indicar su c\xf3digo postal.","Ha d'indicar el seu codi postal.");
	var avHora = new Array("Debe seleccionar la hora de contacto.","Ha de seleccionar l'hora de contacte.");
	var avEmailCorrecto = new Array("Debe indicar un E-mail v\xe1lido.","Deu indica un email vàlid.");
	var avProvincia = new Array("Debe seleccionar la provincia.","Ha de seleccionar la prov\xedncia.");
	var avNivel = new Array("Debe indicar un nivel de estudios.","Ha d'indicar un nivell d'estudis.");
	var avAvisoLegal = new Array("Debe aceptar el aviso legal.","Ha d'acceptar l'av\xeds legal. ");
	var avNacionalidad = new Array("Debe indicar su nacionalidad.","Ha d'indicar la nacionalitat.");
	var avDNICorrecto = new Array("Debe indicar un DNI/NIE/CIF correcto.","Ha d'indicar un DNI/NIE/CIF correcte.");
	var avNif = new Array("Debe indicar un DNI correcto.","Ha d'indicar un DNI correcte.");
	var avNif_vacio = new Array("Debe indicar su DNI.","Ha d'indicar el seu DNI.");
	var avNie  = new Array("Debe indicar un NIE correcto.","Ha d'indicar un NIE correcte.");
	var avNie_vacio = new Array("Debe indicar su NIE.","Ha d'indicar el seu NIE.");

	var valor=true;

	var inputs = document.getElementsByTagName("input");
	var j=0;
	checkeado=false;
	for(var i=0; i<inputs.length; i++){
		if((inputs[i].getAttribute('type')=='checkbox')&&(inputs[i].getAttribute('id')=='siCbCurso')){
			j++;
			if (inputs[i]["checked"]){
				checkeado=true;
			}
		}
	}
	if (j>0)
	{
		if (!(checkeado))
		{
			alert(avOposicion[ilg]);
			valor=false;	
		}
	}

	if((g('siNombre').value == "")&&(valor))
	{
		alert(avNombre[ilg]);
		//g('siNombre').focus();
		valor=false;	
	}
	
	if((g('siApellidos').value == "")&&(valor))
	{
		alert(avApellidos[ilg]);
		//g('siApellidos').focus();
		valor=false;	
	}
	//alert(Number(g('siEdad').value));
	
	if((g('siEdad').value == "")&&(valor))
	{
		alert(avEdad[ilg]);
		valor=false;	
	}
	else
	{
		if (isNaN(Number(g('siEdad').value)))
		{
			alert(avEdadCorrecta[ilg]);
			valor=false;	
		}
	}

	if((!isEmail(g("siEmail").value))&&(valor))
	{
		alert(avEmailCorrecto[ilg]);
		//g('siEmail').focus();
		valor=false;	
	}

	
	if((g('siTelefono1').value == "")&&(valor))
	{
		alert(avTelefono[ilg]);
		//g('email').focus();
		valor=false;	
	}

	if ((!(checkTelefono(g('siTelefono1').value,g('siIdPais').options[g('siIdPais').selectedIndex].value))) && (valor))
	{
		alert(avTelefonoCorrecto[ilg]);
		valor=false;	
	}
	
	if (((g('siNacionalidad').options[g('siNacionalidad').selectedIndex].value == 'España') || ((g('siNacionalidad').options[g('siNacionalidad').selectedIndex].value == 'Andorra'))) && (valor)) {
	if ((g('siNiedni').value != "") && (!calcularNIF(g('siNiedni').value)))
	 {
	    alert(avNif[ilg]);
	  	valor=false;
	  }	
	}else if(!es_pais_europeo(g('siNacionalidad').options[g('siNacionalidad').selectedIndex].value) && (valor)){
	  if ((g('siNiedni').value == "") || (!valNIE(g('siNiedni').value)))
	  {
	    alert(avNie[ilg]);
	  	valor=false;
	  }else  if ((g('siNiedni').value == "")){
	    alert(avNie_vacio[ilg]);
	  	valor=false;	  
	  }
	}
	
	/*	if((g('siHora').value == "")&&(valor))
	{
		alert(avHora[ilg]);
		valor=false;		
	}

	if((g('siDireccion').value == "")&&(valor))
	{
		alert(avDireccion[ilg]);
		valor=false;		
	}

	if((g('siNumero').value == "")&&(valor))
	{
		alert(avNumero[ilg]);
		valor=false;		
	}
	*/
	
	if((g('siCP').value == "")&&(valor))
	{
		alert(avCP[ilg]);
		valor=false;		
	}

	if((g('siPoblacion').value == "")&&(valor))
	{
		alert(avPoblacion[ilg]);
		valor=false;		
	}

	
	// campo Provincia
	if ((g('siIdPais').options[g('siIdPais').selectedIndex].value=='ES')&&(valor)){
		//Si es España miramos el desplegable de provincia
		if (g('siIdProvincia').options[g('siIdProvincia').selectedIndex].value=='0'){
			alert(avProvincia[ilg]);
			valor=false;		
		}
	}
	
   
	
	//Nacionalidad
	if ((g('siNacionalidad').options[g('siNacionalidad').selectedIndex].value=='')&&(valor)){
		alert(avNacionalidad[ilg]);
		valor=false;
	}
	

	//if (!es_pais_europeo(quePais)) {

		if((g('siNivel').value == "")&&(valor))
	{
		alert(avNivel[ilg]);
		//g('siNivel').focus();
		valor=false;	
	}
	
	if((!g('siAviso').checked)&&(valor))
	{
		alert(avAvisoLegal[ilg]);
		//g('siAviso').focus();
		valor=false;	
	}
	
	if(valor)
	{
		document.cuestionario.submit();
	}
	
}



function Enviar(lg){
	compruebaCampos(lg)
}

function isEmail(email) {
//Modificación basada en el ejemplo de Bit Bucket Heaven
//Updated to be used with MAC-OS
var boolSalida = true;
    var invalidChars = " ~\'^\`\"*+=\\|][(){}$&!#%/:,;";
    // Checkea valor nulo "null"
    if (email == "")boolSalida=false;
    // Checkea caracteres inválidos definidos en "invalidChars"
    for (var i=0; i<invalidChars.length; i++) {
        var badChar = invalidChars.charAt(i);
        if (email.indexOf(badChar,0) > -1)boolSalida=false;
    }
    var lengthOfEmail = email.length;
    if ((email.charAt(lengthOfEmail - 1) == ".") || (email.charAt(lengthOfEmail - 2) == "."))boolSalida=false;
    var Pos = email.indexOf("@",1);
    if (email.charAt(Pos + 1) == ".")boolSalida=false;
    while ((Pos < lengthOfEmail) && ( Pos != -1)) {
        Pos = email.indexOf(".",Pos);
        if (email.charAt(Pos + 1) == ".")boolSalida=false;
        if (Pos != -1)Pos++;
    }
    // Por lo menos debe haber una @
    var atPos = email.indexOf("@",1);
    if (atPos == -1)boolSalida=false;
    // Pero solo una @
    if (email.indexOf("@",atPos+1) != -1)boolSalida=false;
    // Tambien checkea para al menos un punto "." despues de la @
    var periodPos = email.indexOf(".",atPos);
    if (periodPos == -1)boolSalida=false;
    if (periodPos+3 > email.length)boolSalida=false;
    return boolSalida;
}

function checkTelefono(valorTelefono,codPais){
	valorTelefono = valorTelefono.replace(/[^0-9]/g,"");	
	valorTelefono = valorTelefono.replace(/0*/,"");
	switch (codPais) {
		case 'ES': //Si es Espanya
			var regTel=/^(6|8|9)[0-9]{8}$/;
			break;
		default:
			var regTel=/[0-9]/;
	}
	return regTel.test(valorTelefono); //Comprueba Telefono Fijo y/o Mvil
}
