	function getIdFiscal(id)
	{
		var idFiscal;
		if (check(id,"cif","")) { idFiscal = getID_CIF(); }
		else if (check(id,"nie","")) { idFiscal = getID_NIE(); }
		else if (check(id,"nif","")) { idFiscal = getID_NIF(); }
		else { idFiscal = getID_NO();  }
		return idFiscal;
	}

	function validaCamposPresupuesto(){
		var result = false;
		var arrV = [], arrM = [];

		for (i=RANGO_MINIMO;i<=RANGO_MAXIMO;i++) {
			arrV[i] = 0;
			arrM[i] = 0;
		}
		var idFiscal = document.forms[0]["id_fiscal"].value;
		if (idFiscal == getID_CIF()) 	
		{
			result = check("nombre","nulo","Por favor, debe rellenar el campo NOMBRE");
			if (result) result = check("nombre", "nombre", "Por favor introduzca únicamente caracteres alfabéticos para el NOMBRE"); 
		}	
		else 
		{	
			result = checkPersonales('',true);
		}
			
		if (result) result = checkDireccion('',true);
		if (result) result = check("telefono", "nulo", "Por favor, debe rellenar el número de TELÉFONO");
		if (result) result = check("telefono", "telefono", "Por favor, debe indicar un número de teléfono válido");
		if (result) result = check("telefonoMovil","telefono", "Por favor, debe indicar un número de móvil válido");
		if (result) result = check("fax", "telefono", "Por favor, debe indicar un número de FAX válido");
		var theFormtxtNombre = document.getElementById("email");
		if (result && theFormtxtNombre.value != "") result = check("email", "email", "Por favor, debe indicar una dirección de email válida");	
		
		var idFiscal;
		for (var i=1;i<=TOTAL_ASEGURADOS;i++)
		{
			//comprobamos los datos personales	
			if (result) result = checkPersonalesPresupuesto('_'+i,false);
			if (result) result = checkLimiteEdad('_'+i);
			if (result) incRango(arrV,arrM,i);
		}
		if (result) result = checkFechaAlta("Por favor, debe seleccionar la fecha de efecto deseada");

		return result;
	}

	function validaCampos(isDental){
		var result = false;
		var arrV = [], arrM = [];
		var isCuentaObligatoria = getIsCuentaObligatoria();

		for (i=RANGO_MINIMO;i<=RANGO_MAXIMO;i++) {
			arrV[i] = 0;
			arrM[i] = 0;
		}
		
		var idFiscal = document.forms[0]["id_fiscal"].value;
		if (idFiscal == getID_CIF()) 	
		{
			result = check("nombre","nulo","Por favor, debe rellenar el campo NOMBRE");
			if (result) result = check("nombre", "nombre", "Por favor introduzca únicamente caracteres alfabéticos para el NOMBRE"); 
		}	
		else 
		{	
			result = checkPersonales('',true);
		}
			
		if (result) result = checkDireccion('',true);
		if (result) result = check("telefono", "nulo", "Por favor, debe rellenar el número de TELÉFONO");
		if (result) result = check("telefono", "telefono", "Por favor, debe indicar un número de teléfono válido");
		if (result) result = check("telefonoMovil","telefono", "Por favor, debe indicar un número de móvil válido");
		if (result) result = check("fax", "telefono", "Por favor, debe indicar un número de FAX válido");
		var theFormtxtNombre = document.getElementById("email");
		if (result && theFormtxtNombre.value != "") result = check("email", "email", "Por favor, debe indicar una dirección de email válida");		
		
		var idFiscal;
		for (var i=1;i<=TOTAL_ASEGURADOS;i++)
		{
			if (result && check("nif_"+i,"nulo","")) {
				idFiscal = getIdFiscal("nif_"+i);
				if (idFiscal == getID_CIF() || idFiscal == getID_NO())
				{
					alert("Por favor, debe introducir un NIF válido");
					fijarAtencion(document.getElementById("nif_"+i));
					result = false;
				}	else {
					document.getElementById("id_fiscal_"+i).value = idFiscal;
					result = true;
				}	
			}
			//comprobamos los datos personales	
			if (result) result = checkPersonales('_'+i,false);
			if (result) result = checkLimiteEdad('_'+i);
			if (result) incRango(arrV,arrM,i);
		}

		if (result) result = checkCCC("codigo_entidad","numero_oficina","digito_control","numero_cuenta",isCuentaObligatoria,"Por favor, debe indicar un número de cuenta válido");
		if (result) result = checkFechaAlta("Por favor, debe seleccionar la fecha de efecto deseada");

		if (result) result = check("acepta","checkbox","Por favor, debe aceptar la documentación del seguro");
		return result;
	}

	function validaCamposPresencial(isDental){
		var result = false;
		var arrV = [], arrM = [];
		var isCuentaObligatoria = getIsCuentaObligatoria();
		for (i=RANGO_MINIMO;i<=RANGO_MAXIMO;i++) {
			arrV[i] = 0;
			arrM[i] = 0;
		}
		var idFiscal = document.forms[0]["id_fiscal"].value;
		if (idFiscal == getID_CIF()) 	
		{
			result = check("nombre","nulo","Por favor, debe rellenar el campo NOMBRE");
			if (result) result = check("nombre", "nombre", "Por favor introduzca únicamente caracteres alfabéticos para el NOMBRE"); 
		}	
		else 
		{	
			result = checkPersonales('',true);
		}	
		if (result) result = checkDireccion('',true);
		if (result) result = check("telefono", "nulo", "Por favor, debe rellenar el número de TELÉFONO");
		if (result) result = check("telefono", "telefono", "Por favor, debe indicar un número de teléfono válido");
		if (result) result = check("fax", "telefono", "Por favor, debe indicar un número de FAX válido");
		if (result) result = check("telefonoMovil","telefono", "Por favor, debe indicar un número de móvil válido");
		if (result) result = check("fax", "telefono", "Por favor, debe indicar un número de FAX válido");
		var theFormtxtNombre = document.getElementById("email");
		if (result && theFormtxtNombre.value != "") result = check("email", "email", "Por favor, debe indicar una dirección de email válida");		
		var idFiscal;
		for (var i=1;i<=TOTAL_ASEGURADOS;i++)
		{
			if (result && check("nif_"+i,"nulo","")) {
				idFiscal = getIdFiscal("nif_"+i);
				if (idFiscal == getID_CIF() || idFiscal == getID_NO())
				{
					alert("Por favor, debe introducir un NIF válido");
					fijarAtencion(document.getElementById("nif_"+i));
					result = false;
				}	else {
					document.getElementById("id_fiscal_"+i).value = idFiscal;
					result = true;
				}	
			}
			//comprobamos los datos personales	
			if (result) result = checkPersonales('_'+i,false);
			if (result) result = checkLimiteEdad('_'+i);
			if (result) incRango(arrV,arrM,i);
		}

		if (result) result = checkCCC("codigo_entidad","numero_oficina","digito_control","numero_cuenta",isCuentaObligatoria,"Por favor, debe indicar un número de cuenta válido");

		if (result) result = checkFechaAlta("Por favor, debe seleccionar la fecha de efecto deseada");
		if (result) result = check("acepta","checkbox","Por favor, debe aceptar la documentación del seguro");
		return result;
	}

	function validaParticipe(id)
	{
		if (result) result = check("fecha_nacimiento_"+id, "nulo", "Por favor, debe rellenar la FECHA DE NACIMIENTO");
		if (result) result = check("fecha_nacimiento_"+id, "fecha", "Por favor, debe introducir una fecha correcta"); 
		return result;
	}

	function checkCCC(idEntidad,idSucursal,idDG,idCuenta,obligatorio,strAlert)
	{

		// si no es obligatorio y no se ha introducido, la comprobacion es correcta
		if (!obligatorio && !check(idEntidad,'nulo','') && !check(idSucursal,'nulo','') && !check(idDG,'nulo','') && !check(idCuenta,'nulo','') ) 	{
			return true; 
		} else {
			var result;
						result = check(idEntidad,'nulo','Por favor, debe rellenar el campo ENTIDAD');
			if (result) result = check(idSucursal,'nulo','Por favor, debe rellenar el campo SUCURSAL');
			if (result) result = check(idDG,'nulo','Por favor, debe rellenar el campo DIGITO DE CONTROL');
			if (result) result = check(idCuenta,'nulo','Por favor, debe rellenar el campo NUMERO DE CUENTA');
			if (result) 
			{
				var entidad 	= document.forms[0][idEntidad].value;
				var sucursal 	= document.forms[0][idSucursal].value;
				var dg 			= document.forms[0][idDG].value;
				var cuenta 		= document.forms[0][idCuenta].value;			
				var result = validaDG(entidad,sucursal,dg,cuenta);
				if (!result) 
				{
					if (strAlert!=null && strAlert!= '') alert(strAlert);
					fijarAtencion(document.forms[0][idEntidad]);
				}
			}	
			return result;
		}
	}
	
	function checkPersonales(id,tomador) {
		var result = false;
		var str;
		if (tomador) str="tomador"; else str="asegurado";
		
		result = check("fecha_nacimiento"+id, "nulo", "Por favor, debe rellenar la FECHA DE NACIMIENTO");
		if (result) {
			result = check("fecha_nacimiento"+id, "fechanac", "");
			if (!result) fijarAtencion(document.forms[0]["fecha_nacimiento"+id]);
		}	
		if (result) {
		 	if (tomador) {
				result = check("fecha_nacimiento"+id, "mayoredad", "El tomador debe ser mayor de edad");
			} else {
				if (check("fecha_nacimiento"+id, "mayoredad","")){
					if (result && check("nif"+id,"nulo","")) {
						idFiscal = getIdFiscal("nif"+id);
						if (idFiscal == getID_CIF()) alert("Debe introducir un NIF válido");
						if (idFiscal == getID_CIF() || idFiscal == getID_NO())
						{
							fijarAtencion(document.getElementById("nif"+id));
							result = false;
						}	else {
							document.getElementById("id_fiscal"+id).value = idFiscal;
							result = true;
						}	
					}else{
						alert("Debe rellenar el campo NIF");
						fijarAtencion(document.forms[0]["nif"+id]);
						return;
					}
				}
			}
		}

			
		if (result) result = check("nombre"+id, "nulo", "Por favor, debe rellenar el campo NOMBRE");
		if (result) result = check("nombre"+id, "nombre", "Por favor introduzca únicamente caracteres alfabéticos para el nombre");
		if (result) result = check("primer_apellido"+id, "nulo", "Por favor, debe rellenar el campo PRIMER APELLIDO");
		if (result) result = check("primer_apellido"+id, "nombre", "Por favor introduzca únicamente caracteres alfabéticos para el primer apellido");
		if (result) result = check("segundo_apellido"+id, "nombre", "Por favor introduzca únicamente caracteres alfabéticos para el segundo apellido");
		if (result && !tomador) result = check("parentesco"+id,"nulo","Por favor, indíquenos el parentesco del asegurado");
		if (result) result = check("sexo"+id, "sexo", "Por favor, indíquenos el sexo del "+ str);
		return result;
	}
	
	function checkPersonalesPresupuesto(id,tomador) {
		var result = false;
		var str;
		if (tomador) str="tomador"; else str="asegurado";
		
		result = check("fecha_nacimiento"+id, "nulo", "Por favor, debe rellenar la FECHA DE NACIMIENTO");
		if (result) {
			result = check("fecha_nacimiento"+id, "fechanac", "Por favor, debe introducir una fecha correcta");
			//if (!result) fijarAtencion(document.forms[0]["fecha_nacimiento"+id]);
		}	
		if (result) {
		 	if (tomador) {
				result = check("fecha_nacimiento"+id, "mayoredad", "El tomador debe ser mayor de edad");
			}
		}
		if (result){
			if(getAge(document.getElementById("fecha_nacimiento"+id).value,3)>17){
				trim(document.getElementById("nif"+id));
				if (result && check("nif"+id,"nulo","")) {
					idFiscal = getIdFiscal("nif"+id);
					if (idFiscal == getID_CIF() || idFiscal == getID_NO())
					{
						alert("Por favor, debe introducir un NIF válido");
						fijarAtencion(document.getElementById("nif"+id));
						result = false;
					}	else {
						document.getElementById("id_fiscal"+id).value = idFiscal;
						result = true;
					}	
				}else{
					alert("Por favor, debe rellenar el campo NIF");
					fijarAtencion(document.forms[0]["nif"+id]);
					return;
				}
			}else if(document.getElementById("nif"+id).value != ""){
				trim(document.getElementById("nif"+id));
				if (result && check("nif"+id,"nulo","")) {
					idFiscal = getIdFiscal("nif"+id);
					if (idFiscal == getID_CIF() || idFiscal == getID_NO())
					{
						alert("Por favor, debe introducir un NIF válido");
						fijarAtencion(document.getElementById("nif"+id));
						result = false;
					}	else {
						document.getElementById("id_fiscal"+id).value = idFiscal;
						result = true;
					}	
				}
			}
		}
		if (result) result = check("nombre"+id, "nulo", "Por favor, debe rellenar el campo NOMBRE");
		if (result) result = check("nombre"+id, "nombre", "Por favor introduzca únicamente caracteres alfabéticos para el nombre");
		if (result) result = check("primer_apellido"+id, "nulo", "Por favor, debe rellenar el campo PRIMER APELLIDO");
		if (result) result = check("primer_apellido"+id, "nombre", "Por favor introduzca únicamente caracteres alfabéticos para el primer apellido");
		if (result) result = check("segundo_apellido"+id, "nombre", "Por favor introduzca únicamente caracteres alfabéticos para el segundo apellido");
		if (result && !tomador) result = check("parentesco"+id,"nulo","Por favor, indíquenos el parentesco del asegurado");
		if (result) result = check("sexo"+id, "sexo", "Por favor, indíquenos el sexo del "+ str);
		return result;
	}
	
	function checkLimiteEdad(id)
	{
		var result;
		var mayor70 = document.getElementById("mayor70");
		
		var edadLimite = getEdadLimite();
		if (!eval(mayor70.value)){
			edadLimite = getEdadLimite();
		}
		
		var strAlert = "Sólo se permite la contratación de este producto para asegurados de hasta "+edadLimite+" años. Por favor, revise el rango de edades.";				
		
		var theFormtxtNombre = document.getElementById("fecha_nacimiento"+id);
		
		result = (getAge(theFormtxtNombre.value,3)<=edadLimite)?(true):(false); 
		if (!result) 
		{
			if (strAlert!=null && strAlert!= '') {
				alert(strAlert);
				fijarAtencion(theFormtxtNombre);
			}
		}
		return result;
	}
	
	function checkDireccion(id,obligatorio) {
		var result = false;
									result = check("nombre_via"+id, "nulo", "Por favor, debe introducir el NOMBRE de la vía");
		if (result) 				result = check("nombre_via"+id, "nombre2", "Por favor introduzca únicamente caracteres alfanuméricos para el NOMBRE de la vía");
		if (result && obligatorio) 	result = check("numero_via"+id, "nulo", "Por favor, debe introducir el NÚMERO de la vía");
		if (result) 				result = check("numero_via"+id, "numeroVia", "Por favor introduzca un formato de NÚMERO de la vía correcto");
		if (result)					result = check("resto_vias"+id, "nombre2", "Por favor introduzca únicamente caracteres alfanuméricos para el PISO/PUERTA/ESCALERA");
		if (result && obligatorio) 	result = check("codigo_postal"+id, "nulo", "Por favor, debe rellenar el campo CÓDIGO POSTAL");
		if (result) 				result = check("codigo_postal"+id, "cp", "Por favor, debe introducir un CÓDIGO POSTAL válido");
		if (result){
			var codProvincia = document.getElementById("codigo_provincia").value;
			if (document.getElementById("codigo_provincia").value<10){
				codProvincia = "0"+document.getElementById("codigo_provincia").value;
			}
			result = document.getElementById("codigo_postal"+id).value.substring(0,2) == codProvincia
			if(!result){
				alert("El CÓDIGO POSTAL no se corresponde con la PROVINCIA seleccionada. Ha introducido un CODIGO POSTAL de la PROVINCIA: "+NOM_PROVINCIA[document.getElementById("codigo_postal"+id).value.substring(0,2)]);
				fijarAtencion(document.getElementById("codigo_postal"+id));
			}
		}
		if (result && obligatorio)	result = check("codigo_provincia"+id, "nulo", "Por favor, debe rellenar el campo PROVINCIA");
		if (result && obligatorio)	result = check("nombre_poblacion"+id, "nulo", "Por favor, debe rellenar el campo LOCALIDAD");
		if (result) 				result = check("nombre_poblacion"+id, "nombre3", "Por favor introduzca únicamente caracteres alfanuméricos para el campo LOCALIDAD");
		return result;
	}
	
	function checkSexos(arrV,arrM,arrSimV,arrSimM,strAlert)
	{
		var result = true;		
		var hombres = 0, mujeres = 0, hombresSim = 0, mujeresSim = 0;
		for (var x=RANGO_MINIMO;x<=RANGO_MAXIMO;x++) 
		{
			hombres+= arrV[x];
			mujeres+= arrM[x];
			hombresSim += arrSimV[x];
			mujeresSim += arrSimM[x];
		}
		result = (hombres==hombresSim && mujeres==mujeresSim)?(true):(false); 
		if (!result) alert(strAlert);
		return result;
	}
	function checkEdades(arrV,arrM,arrSimV,arrSimM,strAlert)
	{
		var result = true;		
		for (var x in arrSimV) 
		{
			if (arrSimV[x] != arrV[x]) result = false;
		}	
		for (var y in arrSimM)
		{
			if (arrSimM[y] != arrM[y]) result = false;
		}
		if (!result) alert(strAlert);
		return result;
	}	




	function incRango(arrV,arrM,i)
	{
		var sexo, edad, rango;

			sexo = GetRadioValue(document.forms[0]["sexo_"+i]);
			edad = getAge(document.forms[0]["fecha_nacimiento_"+i].value,3); 

			rango = Math.floor((edad-6)/10);

			if (rango<RANGO_MINIMO) rango = RANGO_MINIMO;
			if (rango>RANGO_MAXIMO) rango = RANGO_MAXIMO;
			if (sexo=='H') { arrV[rango]++; }
			else if (sexo=='M') { arrM[rango]++; }


	}


// *********

	function anadirAsegurado()
	{
		var parent = document.getElementById("aseg_container");
		var	child = document.createElement("div");
		var str = getHTML_DatosPersonales('_'+CONT_ASEGURADOS);
			str += getHTML_BotonRellenarCuestionario(CONT_ASEGURADOS);
			
			child.innerHTML = str;
			parent.appendChild(child);
		
			CONT_ASEGURADOS++;
	}
	
	function anadirListaAsegurados()
	{
		var num_asegurados = 0;
		for (var x=0;x<num_asegurados;x++) { anadirAsegurado(); }
	}	

// ********


	function borrarFormulario(){
		document.forms[0].reset();
	}
	function sendValue(idOrigen,idDestino)
	{
		document.forms[0][idDestino].value = document.forms[0][idOrigen].value;
		disableValue(idDestino,true);
		
	}
	function cleanValue(id)
	{
		document.forms[0][id].value = '';
	}
	function disableValue(id,disabled)
	{
		document.forms[0][id].disabled = disabled;
	}	

	function sendRadioValue(idOrigen,idDestino)
	{
		var dst = document.forms[0][idDestino];
		var src = document.forms[0][idOrigen];

		for (var x in dst) dst[x].checked = src[x].checked;
	}

	
	function rellenaAsegurado(rellena){
		var campos = getCamposPersonales();
		if(rellena=="si")
		{
			if (checkPersonales('',true))
			{
				for (x=0; x < campos.length;x++) { sendValue(campos[x],campos[x]+"_1"); }
				document.forms[0]["sexo_1"][0].checked = document.forms[0]["sexo"][0].checked;
				document.forms[0]["sexo_1"][1].checked = document.forms[0]["sexo"][1].checked;
				document.forms[0]["sexo_1"][0].disabled = true;
				document.forms[0]["sexo_1"][1].disabled = true;
				document.forms[0]["sexo"][0].disabled = true;
				document.forms[0]["sexo"][1].disabled = true;
				
				var i=0;
				while (i<document.getElementById("parentesco_1").length && document.getElementById("parentesco_1").options[i].value != getTitular()) {
					i++;
				}
				
				document.forms[0]["parentesco_1"].options[i].selected = true;
				document.forms[0]["parentesco_1"].disabled = true;
			} else {
				document.forms[0]["aseguradocheck"][0].checked = false;
				document.forms[0]["aseguradocheck"][1].checked = true;
			}
		} else	
		{
			for (x=0; x < campos.length;x++)	
			{
				if (campos[x] != "fecha_nacimiento") {
					cleanValue(campos[x]+"_1");
				}
				disableValue(campos[x]+"_1",false);
			}
			document.forms[0]["sexo"][0].disabled = false;
			document.forms[0]["sexo"][1].disabled = false;
			
			document.forms[0]["parentesco_1"].options[0].selected = true;
			document.forms[0]["parentesco_1"].disabled = false;
		}
	}
	
	function rellenaDomicilio(rellena){
		var campos = getCamposDomicilio();
		if(rellena)
		{
			if (checkDireccion(''))
			{
				for (var x in campos)	{ sendValue(campos[x],campos[x]+"_2");	}
			}
		} else	
		{
			for (var x in campos)	
			{
				cleanValue(campos[x]+"_2");
				disableValue(campos[x]+"_2",false);
			}
			document.getElementById("tipo_via_2")[getSelectedIndex(getArrayVias(),getDefaultTipoVia())].selected = true;
		}
	
	}	
	function habilitaAsegurado()
	{
		var campos = getCamposPersonales();
		for (var x in campos) 	{
			disableValue(campos[x]+"_1",false);
		}
	}


	function getTextoEdades(arrSim)
	{
		var str = '';
		var totH = 0, totM = 0, contH = 0, contM = 0, s, es, o, y;
			 
		var rango = [];
			rango[0] = 'entre 0 y 15';
			rango[1] = 'entre 16 y 25'; 
			rango[2] = 'entre 26 y 35';
			rango[3] = 'entre 36 y 45';
			rango[4] = 'entre 46 y 55';
			rango[5] = 'entre 56 y 65';

			for (var i=RANGO_MINIMO;i<=RANGO_MAXIMO;i++)
			{	
				if (arrSim[0][i]>0) {
					if (arrSim[0][i]!=1) { es='es';s='s';o='o'; }
					else { es='';s='';o='&oacute;' }
					str += '<br>- '+arrSim[0][i]+' var'+o+'n'+es+' de edad'+es+(i<RANGO_MAXIMO?' comprendida':' ')+s+' '+ rango[i]+' a&ntilde;os.' ;
				}	
				if (arrSim[1][i]>0) {
					if (arrSim[1][i]!=1) { es='es';s='s'; }
					else { es='';s=''; }
					str += '<br>- '+arrSim[1][i]+' mujer'+es+' de edad'+es+(i<RANGO_MAXIMO?' comprendida':' ')+s+' '+ rango[i]+' a&ntilde;os.' ;
				}	
			}
			return str;
		}	

		function setHidden(id,value)
		{
			document.getElementById(id).value = value;
		}
		
		function getNombrePoblacion(provincia,poblacion)
		{
			return POBLACIONES[provincia][poblacion];
		}
		function getNombreProvincia(provincia)
		{
			return NOM_PROVINCIA[provincia];
		}	
			

