//Declaración de variables
var elementoMarcado = '';
var diaHoy, mesHoy, anoHoy;
var strSeparator;
var intNRTotalSteps = 3;

//Función que genera el error
function GenerarError ( vntElemento, strMensaje ) {

	//Si es un Explorer llamamos a marcarElemento
	if ( !NS4 ) {
		marcarElemento( vntElemento );
		elementoMarcado = vntElemento;
	} else {
		alert(strMensaje);
	}

}

function IniciarPantalla(blnShowAllSteps) {
	
	//Tipo de vehículo
	GetTypeCar();
	
	//Se muestran y ocultan las capas 
	InitializeSteps(blnShowAllSteps);	
	
	//Llamamos a las funciones que se van llamando en los botones de Siguiente 
	if (blnShowAllSteps.toLowerCase() == 'true') {
		ViewSecondDriver();
		DisablePreviousInsuranceData();
	}
	
	//Colocamos las provincias
	window.document.forms['MainForm'].provincia_conductor.value=DimeDescProvincia(window.document.forms['MainForm'].codigo_postal_conductor.value.substr(0,2));
}


//Carga en unos HIDDEN la descripciones de marca, modelo y version
function SetCarDescription() {

	//Dejamos en los Hidden de marca, modelo y version las descripciones
	var marca, modelo, version;
	
	marca = window.document.forms['MainForm'].marca.selectedIndex;
	window.document.forms['MainForm'].desc_marca.value = window.document.forms['MainForm'].marca.options[marca].text;
	
	modelo = window.document.forms['MainForm'].modelo.selectedIndex;
	window.document.forms['MainForm'].desc_modelo.value = window.document.forms['MainForm'].modelo.options[modelo].text;
	
	version = window.document.forms['MainForm'].version.selectedIndex;
	if (CNum(version) != -1) {
		window.document.forms['MainForm'].desc_version.value = window.document.forms['MainForm'].version.options[version].text;
	}
	
}

//Muestra el primer paso y oculta el resto
function InitializeSteps(blnShowAllSteps) {
	
	//Declaración de variables
	var objLayer;
	var intC;
	
	for (intC=1;intC<=intNRTotalSteps;intC++) {
		objLayer = window.document.getElementById("step_" + intC);
		
		if (blnShowAllSteps.toLowerCase() == 'true') {
			objLayer.style.visibility = 'visible';
			objLayer.style.display = 'inline';
		} else {
			if (intC == "1") {
				objLayer.style.visibility = 'visible';
				objLayer.style.display = 'inline';
			} else {
				objLayer.style.visibility = 'hidden';
				objLayer.style.display = 'none';
			}
		}
	}

	
}

function ShowNextSetp(StepToShow) {
	
	//Declaración de variables
	var intPreviousStep;
	var objLayer;
		
	intPreviousStep = CNum(StepToShow) - 1;
	objLayer = window.document.getElementById("step_" + intPreviousStep);
	objLayer.style.visibility = 'hidden';
	objLayer.style.display = 'none';
	
	objLayer = window.document.getElementById("step_" + StepToShow);
	objLayer.style.visibility = 'visible';
	objLayer.style.display = 'inline';

}


function ShowPreviousSetp(StepToShow) {
	
	//Declaración de variables
	var intNextStep;
	var objLayer;
		
	objLayer = window.document.getElementById("step_" + StepToShow);
	objLayer.style.visibility = 'visible';
	objLayer.style.display = 'inline';
	
	intNextStep = CNum(StepToShow) + 1;
	objLayer = window.document.getElementById("step_" + intNextStep);
	objLayer.style.visibility = 'hidden';
	objLayer.style.display = 'none';
	
	

}


//Función que elimina el tipo de vehículo de la versión
function FormatVersion(){
	
	//Declaración de variables
	var strVersion;
	var strBase7;
	var strType;
	var vntTemp;
	
	//Obtenemos el valor de la version
	vntTemp = window.document.forms['MainForm'].version.selectedIndex;
	strVersion = window.document.forms['MainForm'].version.options[vntTemp].value;
	
	//Comprobamos si la versión trae el separador
	if (strVersion.indexOf(strSeparator) > 0) {
		//Obtenemos el array con el tipo y la versión
		vntTemp = strVersion.split(strSeparator);
		strBase7 = vntTemp[0];		
		//Asignamos el valor de la versión
		vntTemp = window.document.forms['MainForm'].version.selectedIndex;
		window.document.forms['MainForm'].version.options[vntTemp].value = strBase7;
	} 
	
	
}

//Función que extrae el tipo de vehículo
function GetTypeCar(){
	
	//Declaración de variables
	var strVersion;
	var strType;
	var vntTemp;
	
	
	//Obtenemos el valor de la version
	vntTemp = window.document.forms['MainForm'].version.selectedIndex;
	strVersion = window.document.forms['MainForm'].version.options[vntTemp].value;
	
	//Comprobamos si la versión trae el separador
	if (strVersion.indexOf(strSeparator) > 0) {
		vntTemp = strVersion.split(strSeparator);
		strType = vntTemp[1];
	} else {
		strType = "";
	}	
	
	
	//Asignamos
	window.document.forms['MainForm'].tipo_vehiculo.value = strType;
	
}	


//Muestra los datos del segundo conductor
function ViewSecondDriver() {

	//Declaración de variables
	var objLayer;
	var vntTemp;

	//Referencia de la capa
	objLayer = window.document.getElementById("datos_segundo_conductor");
	
	vntTemp = window.document.forms['MainForm'].segundo_conductor[0].checked;
	
	//Si se han marcado conductores ocasionales mostramos el apartado de segundo conductor	
	if ( vntTemp == true ) {
		objLayer.style.visibility = "visible";
		objLayer.style.display = "inline";
	} else {
		objLayer.style.visibility = "hidden";
		objLayer.style.display = "none";
		
		//Borramos los datos
		EraseSecondDriverData();
	}
}

//Borra los datos del segundo conductor
function EraseSecondDriverData() {
	

	window.document.forms['MainForm'].dia_nacsegundoconductor.selectedIndex = 0;
	window.document.forms['MainForm'].mes_nacsegundoconductor.selectedIndex = 0;
	window.document.forms['MainForm'].ano_nacsegundoconductor.selectedIndex = 0;
	window.document.forms['MainForm'].dia_carsegundoconductor.selectedIndex = 0;
	window.document.forms['MainForm'].mes_carsegundoconductor.selectedIndex = 0;
	window.document.forms['MainForm'].ano_carsegundoconductor.selectedIndex = 0;
	window.document.forms['MainForm'].sexo_segundo_conductor.selectedIndex = 0;
	window.document.forms['MainForm'].estado_civil_segundo_conductor.selectedIndex = 0;
	window.document.forms['MainForm'].pais_expedicion_carnet_segundo_conductor.selectedIndex = 0;
	window.document.forms['MainForm'].parentesco_segundo_conductor.selectedIndex = 0;
	
}


//Muestra el número de partes
function ViewDeclaredWrecks(objControl) {
	
	//Declaración de variables
	var strValue;
	var objLayer;
	
	//Nos guardamos el valor
	
	objLayer = window.document.getElementById('numero_de_siniestros');	
	if ( objControl.selectedIndex >= 2 && objControl.selectedIndex <= 7 ) {
		objLayer.style.visibility = "visible";
		objLayer.style.display = "inline";
	} else {
		objLayer.style.visibility = "hidden";
		objLayer.style.display = "none";
	}
	
}

//Gestiona los partes declarados
function ManageWrecks(objControl){
	
	//Declaración de variables
	var vntTemp;
	
	//Nos guardamos el valor
	vntTemp = objControl.value;
	
	if ( objControl.selectedIndex <= 1 || objControl.selectedIndex >= 8 ) {
		//Pone a ninguno el número de partes
		FillWrecks();
	}
	
}
	

//Borra el número de partes
function EraseWrecks() {

	//Del último año
	window.document.forms['MainForm'].tercero_culpa1.selectedIndex = 1;
	window.document.forms['MainForm'].tercero_sinculpa1.selectedIndex = 1;
	window.document.forms['MainForm'].sin_tercero1.selectedIndex = 1;
	
	//Del año anterior
	window.document.forms['MainForm'].tercero_culpa2.selectedIndex = 1;
	window.document.forms['MainForm'].tercero_sinculpa2.selectedIndex = 1;
	window.document.forms['MainForm'].sin_tercero2.selectedIndex = 1;
	
	//Del resto de años
	window.document.forms['MainForm'].tercero_culpa3.selectedIndex = 1;
	window.document.forms['MainForm'].tercero_sinculpa3.selectedIndex = 1;
	window.document.forms['MainForm'].sin_tercero3.selectedIndex = 1;
	
}	



//Borra el número de partes
function FillWrecks() {
	
	//Del último año
	window.document.forms['MainForm'].tercero_culpa1.selectedIndex = 1;
	window.document.forms['MainForm'].tercero_sinculpa1.selectedIndex = 1;
	window.document.forms['MainForm'].sin_tercero1.selectedIndex = 1;
	
	//Del año anterior
	window.document.forms['MainForm'].tercero_culpa2.selectedIndex = 1;
	window.document.forms['MainForm'].tercero_sinculpa2.selectedIndex = 1;
	window.document.forms['MainForm'].sin_tercero2.selectedIndex = 1;
	
	//Del resto de años
	window.document.forms['MainForm'].tercero_culpa3.selectedIndex = 1;
	window.document.forms['MainForm'].tercero_sinculpa3.selectedIndex = 1;
	window.document.forms['MainForm'].sin_tercero3.selectedIndex = 1;
	
	
}	




function DisablePreviousInsuranceData() {
	
	//Declaración de variables
	var vntTemp;
	
	vntTemp = window.document.forms['MainForm'].companya_actual.selectedIndex;
	vntTemp = window.document.forms['MainForm'].companya_actual.options[vntTemp].value;

	if (vntTemp == "-1") {
		
		//No tiene compañía anterior, asi que no puede tener siniestros ni datos del seguro anterior
		window.document.forms['MainForm'].anios_sin_siniestros.selectedIndex = 0;
		window.document.forms['MainForm'].anios_sin_siniestros.disabled = true;
		window.document.forms['MainForm'].antiguedad_companya_actual.selectedIndex = 0;
		window.document.forms['MainForm'].antiguedad_companya_actual.disabled = true;
		
		//Ocultamos los siniestros
		ViewDeclaredWrecks(window.document.forms['MainForm'].anios_sin_siniestros);
		
		//Borramos los siniestros
		EraseWrecks();
		
	} else {
		window.document.forms['MainForm'].anios_sin_siniestros.disabled = false;
		window.document.forms['MainForm'].antiguedad_companya_actual.disabled = false;
		
		//Ocultamos los siniestros
		ViewDeclaredWrecks(window.document.forms['MainForm'].anios_sin_siniestros);
		
		//Ponemos a ninguno los partes
		//FillWrecks();
	}
}

function AceptarClick () {
	
	//Declaración de variables
	var vntTemp;
	
		
	//Desmarcamos el elementoMarcado
	if ( elementoMarcado != '' ) {
		marcarElemento(elementoMarcado);
		elementoMarcado = '';
	}
	
	//Validamos los datos del vehículo
	if (!ValidateDataCar()) return;
	
	//Validamos los datos del conductor principal
	if (!ValidateFirstDriver()) return;
	
	//Validamos los datos del segundo conductor
	if (window.document.forms['MainForm'].segundo_conductor[0].checked == false && window.document.forms['MainForm'].segundo_conductor[1].checked == false) {
		m_strMensaje = 'Indícanos si existe un segundo conductor.';
		GenerarError(window.document.forms['MainForm'].segundo_conductor[0].id, m_strMensaje); 
		return;	
	}
	
	if (window.document.forms['MainForm'].segundo_conductor[0].checked == true) {
		if (!ValidateSecondDriver()) return;	
	}

	//Si selecciona quiero cambiar de seguro, debe seleccionar compañía anterior
	vntTemp = window.document.forms['MainForm'].vehiculo_nuevo.selectedIndex;
	if (window.document.forms['MainForm'].vehiculo_nuevo.options[vntTemp].value == 1 && window.document.forms['MainForm'].companya_actual.selectedIndex < 2){
		m_strMensaje = 'Si deseas cambiar de seguro como nos has indicado antes, debes indicarnos cuál es o era tu compañía anterior.';
		GenerarError( window.document.forms['MainForm'].companya_actual.id, m_strMensaje); 
		return;
	}
	
	//Validar los datos siniestrales
	if (!ValidatePreviousInsurance()) return;	
	
	//Formateamos la versión, pero sólo una vez hayamos pasado todas las validaciones
	//para poder seguir validando el uso
	FormatVersion();
	
	window.document.forms['MainForm'].companya_actual.disabled = false;
	window.document.forms['MainForm'].antiguedad_companya_actual.disabled = false;
	window.document.forms['MainForm'].anios_sin_siniestros.disabled = false;	
	window.document.forms['MainForm'].provincia_conductor.disabled = false;

	
	//Hacemos el submit del formulario
	LocalSubmitirForm();
	
}



//Valida los datos del vehículo
function ValidateDataCar() {
	
	//Declaración de variables
	var vntTemp;
	var intDay, intMonth, intYear;
	
	//Desmarcamos el elementoMarcado
	if ( elementoMarcado != '' ) {
		marcarElemento(elementoMarcado);
		elementoMarcado = '';
	}
	
	//Desmarcamos el elementoMarcado
	if ( elementoMarcado != '' ) {
		marcarElemento(elementoMarcado);
		elementoMarcado = '';
	}
	
	//Marca del vehículo
	vntTemp = window.document.forms['MainForm'].marca.selectedIndex;
	vntTemp = window.document.forms['MainForm'].marca.options[vntTemp].value;
	if (vntTemp == "" || CNum(vntTemp) <= 0) {
		m_strMensaje = 'Indícanos cual es la marca de tu coche.';
		GenerarError( window.document.forms['MainForm'].marca.id, m_strMensaje); 
		return;	
	}
	
	//Modelo del vehículo
	vntTemp = window.document.forms['MainForm'].modelo.selectedIndex;
	vntTemp = window.document.forms['MainForm'].modelo.options[vntTemp].value;
	if (vntTemp == "" || CNum(vntTemp) <= 0) {
		m_strMensaje = 'Indícanos cual es el modelo de tu coche.';
		GenerarError( window.document.forms['MainForm'].modelo.id, m_strMensaje); 
		return;	
	}
	
	//Combustible del vehículo
	vntTemp = window.document.forms['MainForm'].combustible.selectedIndex;
	vntTemp = window.document.forms['MainForm'].combustible.options[vntTemp].value;
	if (vntTemp == "" || vntTemp == "0") {
		m_strMensaje = 'Indícanos qué combustible usa tu coche.';
		GenerarError( window.document.forms['MainForm'].combustible.id, m_strMensaje); 
		return;	
	}
	
	//Puertas del vehículo
	vntTemp = window.document.forms['MainForm'].puertas.selectedIndex;
	if (vntTemp == 0) {
		m_strMensaje = 'Indícanos cuántas puertas tiene tu coche.';
		GenerarError( window.document.forms['MainForm'].puertas.id, m_strMensaje); 
		return;	
	}
	
	//Ptencia del vehículo
	vntTemp = window.document.forms['MainForm'].potencia.selectedIndex;
	vntTemp = window.document.forms['MainForm'].potencia.options[vntTemp].value;
	if (vntTemp == "" || vntTemp == "0") {
		m_strMensaje = 'Indícanos qué potencia tiene tu coche.';
		GenerarError( window.document.forms['MainForm'].potencia.id, m_strMensaje); 
		return;	
	}
	
	//Versión del vehículo
	vntTemp = window.document.forms['MainForm'].version.selectedIndex;
	vntTemp = window.document.forms['MainForm'].version.options[vntTemp].value;
	if (vntTemp == "") {
		m_strMensaje = 'La versión de tu coche no es válida.';
		GenerarError( window.document.forms['MainForm'].version.id, m_strMensaje); 
		return;	
	}
	
	//¿Vehículo nuevo?
	vntTemp = window.document.forms['MainForm'].vehiculo_nuevo.selectedIndex;	
	if (vntTemp == 0) {
		m_strMensaje = 'Indícanos si tu coche es nuevo o usado.';
		GenerarError( window.document.forms['MainForm'].vehiculo_nuevo.id, m_strMensaje); 
		return;	
	}
	
	//Mes de matriculación
	vntTemp = window.document.forms['MainForm'].mes_matriculacion.selectedIndex;	
	if (vntTemp == 0) {
		m_strMensaje = 'Indícanos el mes de matriculación de tu coche.';
		GenerarError( window.document.forms['MainForm'].mes_matriculacion.id, m_strMensaje); 
		return;	
	}
	
	//Año de matriculación
	vntTemp = window.document.forms['MainForm'].ano_matriculacion.selectedIndex;	
	if (vntTemp == 0) {
		m_strMensaje = 'Indícanos el año de matriculación de tu coche.';
		GenerarError( window.document.forms['MainForm'].ano_matriculacion.id, m_strMensaje); 
		return;	
	}
	
	//Fecha de matriculación completa
	intDay = diaHoy;
	intMonth = window.document.forms['MainForm'].mes_matriculacion.selectedIndex;
	intMonth = DameMesANumero(window.document.forms['MainForm'].mes_matriculacion.options[intMonth].value);
	intYear = window.document.forms['MainForm'].ano_matriculacion.selectedIndex;
	intYear = window.document.forms['MainForm'].ano_matriculacion.options[intYear].value;
	
	//Posterior a Hoy
	if ( DameDiasDiferencia(intDay, intMonth, intYear, diaHoy, mesHoy, anoHoy) > 0 ) {
		m_strMensaje = 'La fecha de primera matriculacion no es correcta.';
		GenerarError( window.document.forms['MainForm'].ano_matriculacion.id, m_strMensaje); 
		return;
	}
	
	//Uso del vehículo
	vntTemp = window.document.forms['MainForm'].uso_vehiculo.selectedIndex;	
	if (vntTemp == 0) {
		m_strMensaje = 'Indícanos el uso del vehículo.';
		GenerarError( window.document.forms['MainForm'].uso_vehiculo.id, m_strMensaje); 
		return;	
	}
	
	//Kilómetros que se hacen anuales
	vntTemp = window.document.forms['MainForm'].kilometros.selectedIndex;	
	if (vntTemp == 0) {
		m_strMensaje = 'Indícanos cuántos kilómetros haces al año.';
		GenerarError( window.document.forms['MainForm'].kilometros.id, m_strMensaje); 
		return;	
	}
	
	//Dónde aparcas el coche
	vntTemp = window.document.forms['MainForm'].garaje.selectedIndex;	
	if (vntTemp == 0) {
		m_strMensaje = 'Indícanos dónde aparcas el coche por la noche.';
		GenerarError( window.document.forms['MainForm'].garaje.id, m_strMensaje); 
		return;	
	}
	
	
	//Colocamos la descripción del vehículo
	SetCarDescription();
	
	//Todo bien
	return (true);
	
}



//Valida los datos del conductor principal 
function ValidateFirstDriver() {
	
	//Declaración de variables
	var vntTemp;
	var diaNac, mesNac, anoNac;
	var diaCar, mesCar, anoCar;
	var RegExPattern;
	
	//Desmarcamos el elementoMarcado
	if ( elementoMarcado != '' ) {
		marcarElemento(elementoMarcado);
		elementoMarcado = '';
	}
	
	//Fecha de nacimiento
	diaNac = window.document.forms['MainForm'].dia_nacconductor.selectedIndex;
	mesNac = window.document.forms['MainForm'].mes_nacconductor.selectedIndex;
	anoNac = window.document.forms['MainForm'].ano_nacconductor.selectedIndex;
		
	diaNac = window.document.forms['MainForm'].dia_nacconductor.options[diaNac].value;
	mesNac = DameMesANumero(window.document.forms['MainForm'].mes_nacconductor.options[mesNac].value);
	anoNac = window.document.forms['MainForm'].ano_nacconductor.options[anoNac].value;

	//Comprobamos si va a blancos
	if (diaNac == "" || mesNac == ""  || anoNac == "" ) {
		m_strMensaje = 'Indícanos la fecha de nacimiento del conductor principal.';
		GenerarError( window.document.forms['MainForm'].ano_nacconductor.id, m_strMensaje); 
		return;
	}	
	
	//Comprobamos que la fecha es correcta
	if (check_date(diaNac,mesNac,anoNac) == false){
		m_strMensaje = 'La fecha de nacimiento del conductor principal no es correcta.';
		GenerarError( window.document.forms['MainForm'].ano_nacconductor.id, m_strMensaje); 
		return;
	}	
	
	//Fecha de nacimiento posterior a Hoy
	if ( DameDiasDiferencia(diaNac, mesNac, anoNac, diaHoy, mesHoy, anoHoy) > 0 ) {
		m_strMensaje = 'La fecha de nacimiento del conductor principal no es correcta.';
		GenerarError( window.document.forms['MainForm'].ano_nacconductor.id, m_strMensaje); 
		return;
	}	
	
	
	//Fecha de carnet
	diaCar = window.document.forms['MainForm'].dia_carconductor.selectedIndex;
	mesCar = window.document.forms['MainForm'].mes_carconductor.selectedIndex;
	anoCar = window.document.forms['MainForm'].ano_carconductor.selectedIndex;
		
	diaCar = window.document.forms['MainForm'].dia_carconductor.options[diaCar].value;
	mesCar = DameMesANumero(window.document.forms['MainForm'].mes_carconductor.options[mesCar].value);
	anoCar = window.document.forms['MainForm'].ano_carconductor.options[anoCar].value;
	
	//Comprobamos si va a blancos
	if (diaCar == "" || mesCar == ""  || anoCar == "" ) {
		m_strMensaje = 'Indícanos la fecha de carné del conductor principal.';
		GenerarError( window.document.forms['MainForm'].ano_carconductor.id, m_strMensaje); 
		return;
	}
	
	//Comprobamos que la fecha es correcta
	if (check_date(diaCar,mesCar,anoCar) == false){
		m_strMensaje = 'La fecha de carné del conductor principal no es correcta.';
		GenerarError( window.document.forms['MainForm'].ano_carconductor.id, m_strMensaje); 
		return;
	}
	
	//Fecha de carnet posterior a Hoy
	if ( DameDiasDiferencia(diaCar, mesCar, anoCar, diaHoy, mesHoy, anoHoy) > 0 ) {
		m_strMensaje = 'La fecha de carnet del conductor principal no es correcta.';
		GenerarError( window.document.forms['MainForm'].ano_carconductor.id, m_strMensaje); 
		return;
	}

	//Entre la fecha de carnet y la fecha de nacimiento tiene que haber 18 años
	if ( DimeAnosDiferencia(diaNac, mesNac, anoNac, diaCar, mesCar, anoCar) < 18 ){
		m_strMensaje = 'La fecha del carnet deberá ser igual o superior en 18 años a la fecha de nacimiento.';
		GenerarError( window.document.forms['MainForm'].ano_nacconductor.id, m_strMensaje); 
		return;
	}

	//Sexo del conductor principal
	if (window.document.forms['MainForm'].sexo_conductor[0].checked == false && window.document.forms['MainForm'].sexo_conductor[1].checked == false) {
		m_strMensaje = 'Indícanos el sexo del conductor principal.';
		GenerarError(window.document.forms['MainForm'].sexo_conductor[0].id, m_strMensaje); 
		return;	
	}
	
	//Estado civil del conductor principal
	vntTemp = window.document.forms['MainForm'].estado_civil_conductor.selectedIndex;	
	if (vntTemp == 0) {
		m_strMensaje = 'Indícanos el estado civil del conductor principal.';
		GenerarError( window.document.forms['MainForm'].estado_civil_conductor.id, m_strMensaje); 
		return;	
	}
	
	//Profesión del conductor principal
	vntTemp = window.document.forms['MainForm'].profesion_conductor.selectedIndex;	
	if (vntTemp == 0) {
		m_strMensaje = 'Indícanos la profesión del conductor principal.';
		GenerarError( window.document.forms['MainForm'].profesion_conductor.id, m_strMensaje); 
		return;	
	}
	
	//Código Postal del conductor principal
	vntTemp = trim2(window.document.forms['MainForm'].codigo_postal_conductor.value);
	if (vntTemp == "") {
		m_strMensaje = 'Indícanos el código postal del conductor principal.';
		GenerarError( window.document.forms['MainForm'].codigo_postal_conductor.id, m_strMensaje); 
		return;	
	}
	
	//Código postal de 5 posiciones
	vntTemp = trim2(window.document.forms['MainForm'].codigo_postal_conductor.value);
	if (vntTemp.length != 5) {
		m_strMensaje = 'El código postal del conductor principal es un dato de 5 dígitos.';
		GenerarError( window.document.forms['MainForm'].codigo_postal_conductor.id, m_strMensaje); 
		return;
	}
	
	//Código postal válido
	vntTemp = trim2(window.document.forms['MainForm'].codigo_postal_conductor.value);
	RegExPattern = /^(0[1-9]|5[0-2]|[0-4][0-9])[0-9]{3}$/;
	blnTemp = RegExPattern.test(vntTemp);
	if (blnTemp == false || vntTemp < 1000){
		m_strMensaje = 'El código postal no es válido.';
		GenerarError( window.document.forms['MainForm'].codigo_postal_conductor.id, m_strMensaje); 
		return;	
	}

	//Provincia
	vntTemp = trim2(window.document.forms['MainForm'].provincia_conductor.value);
	if (vntTemp == "") {
		m_strMensaje = 'Indícanos la provincia del conductor principal.';
		GenerarError( window.document.forms['MainForm'].provincia_conductor.id, m_strMensaje); 
		return;	
	}
	
	//País de expedición del carnet de conducir
	vntTemp = window.document.forms['MainForm'].pais_expedicion_carnet_conductor.options[window.document.forms['MainForm'].pais_expedicion_carnet_conductor.selectedIndex].value;
	if (CNum(vntTemp) <= 0) {
		m_strMensaje = 'Indícanos el país de expedición de carnet del conductor principal.';
		GenerarError( window.document.forms['MainForm'].pais_expedicion_carnet_conductor.id, m_strMensaje); 
		return;	
	}
	
	//¿Hay segundos conductores?
	if (window.document.forms['MainForm'].segundo_conductor[0].checked == false && window.document.forms['MainForm'].segundo_conductor[1].checked == false) {
		m_strMensaje = 'Indícanos si hay algún otro conductor.';
		GenerarError( window.document.forms['MainForm'].segundo_conductor[0].id, m_strMensaje); 
		return;	
	}
	
	
	//Validamos los datos del segundo conductor
	if (window.document.forms['MainForm'].segundo_conductor[0].checked == true) {
		if (!ValidateSecondDriver()) return;	
	}
	
	//Todo bien
	return (true);
}



//Valida los datos del segundo conductor
function ValidateSecondDriver() {
	
	//Declaración de variables
	var vntTemp;
	var diaNac, mesNac, anoNac;
	var diaCar, mesCar, anoCar;
	var RegExPattern;
	var intAge;
	
	//Desmarcamos el elementoMarcado
	if ( elementoMarcado != '' ) {
		marcarElemento(elementoMarcado);
		elementoMarcado = '';
	}
	
	//Fecha de nacimiento
	diaNac = window.document.forms['MainForm'].dia_nacsegundoconductor.selectedIndex;
	mesNac = window.document.forms['MainForm'].mes_nacsegundoconductor.selectedIndex;
	anoNac = window.document.forms['MainForm'].ano_nacsegundoconductor.selectedIndex;
		
	diaNac = window.document.forms['MainForm'].dia_nacsegundoconductor.options[diaNac].value;
	mesNac = DameMesANumero(window.document.forms['MainForm'].mes_nacsegundoconductor.options[mesNac].value);
	anoNac = window.document.forms['MainForm'].ano_nacsegundoconductor.options[anoNac].value;

	//Comprobamos si va a blancos
	if (diaNac == "" || mesNac == ""  || anoNac == "" ) {
		m_strMensaje = 'Indícanos la fecha de nacimiento del conductor ocasional.';
		GenerarError( window.document.forms['MainForm'].ano_nacsegundoconductor.id, m_strMensaje); 
		return;
	}	
	
	//Comprobamos que la fecha es correcta
	if (check_date(diaNac,mesNac,anoNac) == false){
		m_strMensaje = 'La fecha de nacimiento del conductor ocasional no es correcta.';
		GenerarError( window.document.forms['MainForm'].ano_nacsegundoconductor.id, m_strMensaje); 
		return;
	}	
	
	//Fecha de nacimiento posterior a Hoy
	if ( DameDiasDiferencia(diaNac, mesNac, anoNac, diaHoy, mesHoy, anoHoy) > 0 ) {
		m_strMensaje = 'La fecha de nacimiento del conductor ocasional no es correcta.';
		GenerarError( window.document.forms['MainForm'].ano_nacsegundoconductor.id, m_strMensaje); 
		return;
	}	
	
	
	//Fecha de carnet
	diaCar = window.document.forms['MainForm'].dia_carsegundoconductor.selectedIndex;
	mesCar = window.document.forms['MainForm'].mes_carsegundoconductor.selectedIndex;
	anoCar = window.document.forms['MainForm'].ano_carsegundoconductor.selectedIndex;
		
	diaCar = window.document.forms['MainForm'].dia_carsegundoconductor.options[diaCar].value;
	mesCar = DameMesANumero(window.document.forms['MainForm'].mes_carsegundoconductor.options[mesCar].value);
	anoCar = window.document.forms['MainForm'].ano_carsegundoconductor.options[anoCar].value;
	
	//Comprobamos si va a blancos
	if (diaCar == "" || mesCar == ""  || anoCar == "" ) {
		m_strMensaje = 'Indícanos la fecha de carné del conductor ocasional.';
		GenerarError( window.document.forms['MainForm'].ano_carsegundoconductor.id, m_strMensaje); 
		return;
	}
	
	//Comprobamos que la fecha es correcta
	if (check_date(diaCar,mesCar,anoCar) == false){
		m_strMensaje = 'La fecha de carné del conductor ocasional no es correcta.';
		GenerarError( window.document.forms['MainForm'].ano_carsegundoconductor.id, m_strMensaje); 
		return;
	}
	
	//Fecha de carnet posterior a Hoy
	if ( DameDiasDiferencia(diaCar, mesCar, anoCar, diaHoy, mesHoy, anoHoy) > 0 ) {
		m_strMensaje = 'La fecha de carnet del conductor ocasional no es correcta.';
		GenerarError( window.document.forms['MainForm'].ano_carsegundoconductor.id, m_strMensaje); 
		return;
	}

	//Entre la fecha de carnet y la fecha de nacimiento tiene que haber 18 años
	if ( DimeAnosDiferencia(diaNac, mesNac, anoNac, diaCar, mesCar, anoCar) < 18 ){
		m_strMensaje = 'La fecha del carnet deberá ser igual o superior en 18 años a la fecha de nacimiento.';
		GenerarError( window.document.forms['MainForm'].ano_nacsegundoconductor.id, m_strMensaje); 
		return;
	}

	//Sexo del conductor ocasional
	if (window.document.forms['MainForm'].sexo_segundo_conductor[0].checked == false && window.document.forms['MainForm'].sexo_segundo_conductor[1].checked == false) {
		m_strMensaje = 'Indícanos el sexo del conductor ocasional.';
		GenerarError( window.document.forms['MainForm'].sexo_segundo_conductor[0].id, m_strMensaje); 
		return;	
	}
	
	//Estado civil del conductor ocasional
	vntTemp = window.document.forms['MainForm'].estado_civil_segundo_conductor.selectedIndex;	
	if (vntTemp == 0) {
		m_strMensaje = 'Indícanos el estado civil del conductor ocasional.';
		GenerarError( window.document.forms['MainForm'].estado_civil_segundo_conductor.id, m_strMensaje); 
		return;	
	}
	
	//País de expedición del carnet de conducir del conductor ocasional
	vntTemp = window.document.forms['MainForm'].pais_expedicion_carnet_segundo_conductor.options[window.document.forms['MainForm'].pais_expedicion_carnet_segundo_conductor.selectedIndex].value;
	if (CNum(vntTemp) <= 0) {
		m_strMensaje = 'Indícanos el país de expedición de carnet del conductor ocasional.';
		GenerarError( window.document.forms['MainForm'].pais_expedicion_carnet_segundo_conductor.id, m_strMensaje); 
		return;	
	}
	
	//Parentesco con el tomador
	vntTemp = window.document.forms['MainForm'].parentesco_segundo_conductor.selectedIndex;	
	if (vntTemp == 0) {
		m_strMensaje = 'Indícanos la relación con el titular del seguro.';
		GenerarError( window.document.forms['MainForm'].parentesco_segundo_conductor.id, m_strMensaje); 
		return;	
	}
	
	//Comprobamos la edad del parentesco con la edad del conductor
	vntTemp = window.document.forms['MainForm'].parentesco_segundo_conductor.selectedIndex;
	vntTemp = window.document.forms['MainForm'].parentesco_segundo_conductor.options[vntTemp].value;
	
	if (vntTemp == 3 || vntTemp == 5) {
		//Tiene que ser mayor de 25 años
		if ( DimeAnosDiferencia(diaNac, mesNac, anoNac, diaHoy, mesHoy, anoHoy) < 25 ){
			m_strMensaje = 'El segundo conductor deberá tener al menos 25 años.';
			GenerarError( window.document.forms['MainForm'].ano_nacsegundoconductor.id, m_strMensaje); 
			return;
		}
		
	} else if (vntTemp == 2 || vntTemp == 4) {
		//Tiene que ser menor de 25 años
		if ( DimeAnosDiferencia(diaNac, mesNac, anoNac, diaHoy, mesHoy, anoHoy) >= 25 ){
			m_strMensaje = 'El segundo conductor deberá ser menor de 25 años.';
			GenerarError( window.document.forms['MainForm'].ano_nacsegundoconductor.id, m_strMensaje); 
			return;
		}
	} 
	
	//Todo bien
	return (true);
}



//Valida los datos siniestrales
function ValidatePreviousInsurance() {
	
	//Declaración de variables
	var vntTemp;
	var vntTemp2;
		
	//Compañía actual
	vntTemp = window.document.forms['MainForm'].companya_actual.selectedIndex;	
	vntTemp2 =window.document.forms['MainForm'].companya_actual.options[vntTemp].value
	if (vntTemp == 0 || CNum(vntTemp2) < -1) {
		m_strMensaje = 'Indícanos en que compañía tienes asegurado tu coche.';
		GenerarError( window.document.forms['MainForm'].companya_actual.id, m_strMensaje); 
		return;	
	}
	
	//Años en la compañía anterior
	vntTemp = window.document.forms['MainForm'].companya_actual.selectedIndex;	
	vntTemp = window.document.forms['MainForm'].companya_actual.options[vntTemp].value;	
	if (vntTemp != "" && vntTemp != "-1" && CNum(vntTemp) > 0) {
		vntTemp = window.document.forms['MainForm'].antiguedad_companya_actual.selectedIndex;	
		if (vntTemp == 0) {
			m_strMensaje = 'Indícanos cuantos años llevas en tu compañía de seguros.';
			GenerarError( window.document.forms['MainForm'].antiguedad_companya_actual.id, m_strMensaje); 
			return;	
		}	
		
		//Años sin siniestros
		if (window.document.forms['MainForm'].anios_sin_siniestros.selectedIndex == 0) {
			m_strMensaje = 'Indícanos cuantos años llevas sin dar un parte de siniestros.';
			GenerarError( window.document.forms['MainForm'].anios_sin_siniestros.id, m_strMensaje); 
			return;	
		}
			
		//Si tiene siniestros hay que validar todos los partes.
		if (window.document.forms['MainForm'].anios_sin_siniestros.selectedIndex >= 2 &&  window.document.forms['MainForm'].anios_sin_siniestros.selectedIndex <= 7) {
			if (!ValidateDeclaredWrecks()) {
				return;
			}
		}
		
	}
	
	
		
	//Todo bien
	return(true);
}




//Validar siniestros declarados
function ValidateDeclaredWrecks(){
	
	//Declaración de variables
	var vntTemp;
	var intWreck1_1, intWreck2_1, intWreck3_1;
	var intWreck1_2, intWreck2_2, intWreck3_2;
	var intWreck1_3, intWreck2_3, intWreck3_3;
	var intTotal;
	var blnMandatory = false;

	
	intTotal = 0;
	
	//Comprobamos si ha tenido siniestros
	if (window.document.forms['MainForm'].anios_sin_siniestros.value >= 0 && window.document.forms['MainForm'].anios_sin_siniestros.value <= 5) {
	
		//Comprobamos el número de años sin siniestros para no permitir que rellene algunas de las columnas
		if (window.document.forms['MainForm'].anios_sin_siniestros.value >=1) {
			//En la primera columna no puede haber siniestros
			blnMandatory = false;
		} else {
			blnMandatory = true; 			
		}
			

		//Del último año
		vntTemp = window.document.forms['MainForm'].tercero_culpa1.selectedIndex;
		intWreck1_1 = window.document.forms['MainForm'].tercero_culpa1.options[vntTemp].value;
		intTotal = CNum(intTotal) + CNum(intWreck1_1);
		if (vntTemp == 0) {
			m_strMensaje = 'Indique el número de siniestros declarados en el último año.';
			GenerarError( window.document.forms['MainForm'].tercero_culpa1.id, m_strMensaje); 
			return;
		}
		
		//Comprobamos si debemos permitir indicar siniestros
		if (blnMandatory == false) {
			if (intWreck1_1 > 0) {
				m_strMensaje = 'No puede declarar siniestros en el último año con tercero y con culpa si lleva 1 año o más sin dar un parte.';
				GenerarError( window.document.forms['MainForm'].tercero_culpa1.id, m_strMensaje); 
				return;
			}
		}
		
		vntTemp = window.document.forms['MainForm'].tercero_sinculpa1.selectedIndex;
		intWreck1_2 = window.document.forms['MainForm'].tercero_sinculpa1.options[vntTemp].value;
		intTotal = CNum(intTotal) + CNum(intWreck1_2);
		if ( vntTemp == 0 ) {
			m_strMensaje = 'Indique el número de siniestros declarados en el último año.';
			GenerarError( window.document.forms['MainForm'].tercero_sinculpa1.id, m_strMensaje); 
			return;
		}
		
		//Comprobamos si debemos permitir indicar siniestros
		if (blnMandatory == false) {
			if (intWreck1_2 > 0) {
				m_strMensaje = 'No puede declarar siniestros en el último año con tercero y sin culpa si lleva 1 año o más sin dar un parte.';
				GenerarError( window.document.forms['MainForm'].tercero_sinculpa1.id, m_strMensaje); 
				return;
			}
		}
		
		
		vntTemp = window.document.forms['MainForm'].sin_tercero1.selectedIndex;
		intWreck1_3 = window.document.forms['MainForm'].sin_tercero1.options[vntTemp].value;
		intTotal = CNum(intTotal) + CNum(intWreck1_3);
		if ( vntTemp == 0 ) {
			m_strMensaje = 'Indique el número de siniestros declarados en el último año.';
			GenerarError( window.document.forms['MainForm'].sin_tercero1.id, m_strMensaje); 
			return;
		}
		
		//Comprobamos si debemos permitir indicar siniestros
		if (blnMandatory == false) {
			if (intWreck1_3 > 0) {
				m_strMensaje = 'No puede declarar siniestros en el último año sin tercero si lleva 1 año o más sin dar un parte.';
				GenerarError( window.document.forms['MainForm'].sin_tercero1.id, m_strMensaje); 
				return;
			}
		}
		
		
		//Comprobamos el número de años sin siniestros para no permitir que rellene algunas de las columnas
		if (window.document.forms['MainForm'].anios_sin_siniestros.value >=2) {
			//En la primera columna no puede haber siniestros
			blnMandatory = false;
		} else {
			//Puede haber siniestros en todas las columnas
			blnMandatory = true;
		} 
		
		//Del año anterior
		vntTemp = window.document.forms['MainForm'].tercero_culpa2.selectedIndex;
		intWreck2_1 = window.document.forms['MainForm'].tercero_culpa2.options[vntTemp].value;
		intTotal = CNum(intTotal) + CNum(intWreck2_1);
		if (vntTemp == 0) {
			m_strMensaje = 'Indique el número de siniestros declarados en el año anterior al último.';
			GenerarError( window.document.forms['MainForm'].tercero_culpa2.id, m_strMensaje); 
			return;
		}
		
		//Comprobamos si debemos permitir indicar siniestros
		if (blnMandatory == false) {
			if (intWreck2_1 > 0) {
				m_strMensaje = 'No puede declarar siniestros en el año anterior con tercero y con culpa si lleva más de 1 año sin dar un parte.';
				GenerarError( window.document.forms['MainForm'].tercero_culpa2.id, m_strMensaje); 
				return;
			}
		}
		
		vntTemp = window.document.forms['MainForm'].tercero_sinculpa2.selectedIndex;
		intWreck2_2 = window.document.forms['MainForm'].tercero_sinculpa2.options[vntTemp].value;
		intTotal = CNum(intTotal) + CNum(intWreck2_2);
		if (vntTemp == 0) {
			m_strMensaje = 'Indique el número de siniestros declarados en el año anterior al último.';
			GenerarError( window.document.forms['MainForm'].tercero_sinculpa2.id, m_strMensaje); 
			return;
		}
		
		//Comprobamos si debemos permitir indicar siniestros
		if (blnMandatory == false) {
			if (intWreck2_2 > 0) {
				m_strMensaje = 'No puede declarar siniestros en el año anterior con tercero y sin culpa si lleva más de 1 año sin dar un parte.';
				GenerarError( window.document.forms['MainForm'].tercero_sinculpa2.id, m_strMensaje); 
				return;
			}
		}
		
		vntTemp = window.document.forms['MainForm'].sin_tercero2.selectedIndex;
		intWreck2_3 = window.document.forms['MainForm'].sin_tercero2.options[vntTemp].value;
		intTotal = CNum(intTotal) + CNum(intWreck2_3);
		if (vntTemp == 0) {
			m_strMensaje = 'Indique el número de siniestros declarados en el año anterior al último.';
			GenerarError( window.document.forms['MainForm'].sin_tercero2.id, m_strMensaje); 
			return;
		}
		
		//Comprobamos si debemos permitir indicar siniestros
		if (blnMandatory == false) {
			if (intWreck2_3 > 0) {
				m_strMensaje = 'No puede declarar siniestros en el año anterior sin tercero si lleva más de 1 año sin dar un parte.';
				GenerarError( window.document.forms['MainForm'].sin_tercero2.id, m_strMensaje); 
				return;
			}
		}
		
		//Del resto de años
		vntTemp = window.document.forms['MainForm'].tercero_culpa3.selectedIndex;
		intWreck3_1 = window.document.forms['MainForm'].tercero_culpa3.options[vntTemp].value;
		intTotal = CNum(intTotal) + CNum(intWreck3_1);
		if (vntTemp == 0) {
			m_strMensaje = 'Indique el número de siniestros declarados en el resto de años.';
			GenerarError( window.document.forms['MainForm'].tercero_culpa3.id, m_strMensaje); 
			return;
		}
		
		vntTemp = window.document.forms['MainForm'].tercero_sinculpa3.selectedIndex;
		intWreck3_2 = window.document.forms['MainForm'].tercero_sinculpa3.options[vntTemp].value;
		intTotal = CNum(intTotal) + CNum(intWreck3_2);
		if (vntTemp == 0) {
			m_strMensaje = 'Indique el número de siniestros declarados en el resto de años.';
			GenerarError( window.document.forms['MainForm'].tercero_sinculpa3.id, m_strMensaje); 
			return;
		}
		
		vntTemp = window.document.forms['MainForm'].sin_tercero3.selectedIndex;
		intWreck3_3 = window.document.forms['MainForm'].sin_tercero3.options[vntTemp].value;
		intTotal = CNum(intTotal) + CNum(intWreck3_3);
		if (vntTemp == 0) {
			m_strMensaje = 'Indique el número de siniestros declarados en el resto de años.';
			GenerarError( window.document.forms['MainForm'].sin_tercero3.id, m_strMensaje); 
			return;
		}

		//comprobamos la suma de los partes
		if (intTotal == 0) {
			m_strMensaje = 'Si indica que existen siniestros, debe declarar al menos uno.';
			GenerarError( window.document.forms['MainForm'].anios_sin_siniestros.id, m_strMensaje); 
			return;
		}
	}	

	
	//Todo bien
	return (true);
	
}	

//Cambia la fecha de primera matriculación en función del valor del campo vehiculo nuevo
function ChangeMatrDate() {
	
	//Declarción de variables
	var vntTemp;
	var intDay, intMonth, intYear;
	
	vntTemp = window.document.forms['MainForm'].vehiculo_nuevo.selectedIndex;
	vntTemp = window.document.forms['MainForm'].vehiculo_nuevo.options[vntTemp].value;
	
	//Si es nuevo
	if (vntTemp == 2) {
		intMonth = window.document.forms['MainForm'].mes_matriculacion.selectedIndex;
		intYear = window.document.forms['MainForm'].ano_matriculacion.selectedIndex;
	
		intMonth = DameMesANumero(window.document.forms['MainForm'].mes_matriculacion.options[intMonth].value);
		intYear = window.document.forms['MainForm'].ano_matriculacion.options[intYear].value;
	
		//Comprobamos si va a blancos
		if (intMonth == ""  || intYear == "" ) {
			//Cambiamos la fecha
			window.document.forms['MainForm'].mes_matriculacion.selectedIndex = mesHoy;
			window.document.forms['MainForm'].ano_matriculacion.value = anoHoy;
		}	
		
	}

}