//Caché de candidatos
var dataCache = { };
var candidatoSeleccionado;

//Control de listado de localidades
var localidades;

//Nombre del patrón de opciones de candidatos de cobertura
var patronText;
var patronTextSinCandidatos;

//Elementos del formulario

//a)Campos del formulario
 var numeroTelefonoInput;
 //var dispongoLineaCheck;
 var provinciaIdInput;
 var poblacionInput;
 var codigoPostalInput;
 var nombreViaInput;
 var tipoViaInput;
 var numeroInput;
 var zonaCobertura;
 var captchaTextInput;

//b)Elementos seleccionados de la consulta de cobertura
 var provinciaSelec;
 var poblacionSelec;
 var localidadSelec;
 var codigoPostalSelec;
 var nombreViaSelec;
 //var tipoAltaAdsl;

//Control ambiüedad de vías
 var viasControl;

String.prototype.trim = function(){ return this.replace(/^\s+|\s+$/g,'') }

/**
 * GetInitObjects
 * Resultado: Recoge los objetos del formulario
 * Hay que llamar a esta función antes que a cualquier otra!
 */
function GetInitObjects(){

	//a) Campos del formulario
	numeroTelefonoInput = document.getElementById('cobNumeroTelefono');
	provinciaIdInput = document.getElementById('cobIdProvincias');
	poblacionInput = document.getElementById('cobPoblacion');
	codigoPostalInput = document.getElementById('cobCodigoPostal');
	nombreViaInput = document.getElementById('cobNombreVia');
	tipoViaInput = document.getElementById('cobTipoVia');
	numeroInput = document.getElementById('cobNumero');
	zonaCobertura = document.getElementById('zonaCobertura');
	captchaTextInput = document.getElementById('cobCaptchaText');

	//b) Elementos seleccionados de la consulta de cobertura
	provinciaSelec = document.getElementById('cobSelectProvincia');
	poblacionSelec = document.getElementById('cobSelectMunicipio');
	localidadSelec = document.getElementById('cobSelectLocalidad');
	codigoPostalSelec = document.getElementById('cobSelectCodigoPostal');
	nombreViaSelec = document.getElementById('cobSelectDescripcionVia');

	//Control de ambigüedad de vías
	viasControl = document.getElementById('cobViasControl');

	//Otros
	patronText = 'pattern';
	patronTextSinCandidatos = 'patternSinCandidatos';
	localidades = false;
	candidatoSeleccionado = -1;
}

/*
 ** RemoveOptions **
	Entrada: Objeto select
	Salida:
	Resultado: Vac&iacute;a un select
*/
function RemoveOptionsZonaCobertura(){
	zonaCobertura.options.length = 0;
}

/*
 ** GuardarCandidato **
	Entrada: candidato
	Salida:
	Resultado: Guarda el candidato seleccionado
*/
function GuardarCandidato(candidato){

	var patternlength = patronText.length;
	var posCoincide = 0;
	candidatoSeleccionado = candidato.substring(patternlength);

	if (candidato !== patronText && candidato!== patronTextSinCandidatos) {

		//Se ha seleccionado un valor del listado correspondiente a un candidato
		//devuelto por la consulta de cobertura

		codigoPostalSelec.value=dataCache[candidatoSeleccionado].codigoPostal;
		provinciaSelec.value=dataCache[candidatoSeleccionado].provincia;
		poblacionSelec.value=dataCache[candidatoSeleccionado].municipio;
		nombreViaSelec.value=dataCache[candidatoSeleccionado].descripcionVia;


		//Se modifica el formulario con los valores seleccionados.
		codigoPostalInput.value = codigoPostalSelec.value;
		poblacionInput.value = poblacionSelec.value;

		if (nombreViaSelec.value.trim() != "") {
			//Se devuelve nombre --> Listado de calles.
			nombreViaInput.value = nombreViaSelec.value;
		}

		for (i=0; i<provinciaIdInput.length; i++) {
			if(provinciaIdInput[i].text.trim()==dataCache[candidatoSeleccionado].provincia.trim()){
				//La provincia devuelta existe en el combo que listamos, actualizamos el combo.
				provinciaIdInput.selectedIndex = i;
				break;
			}
		}
	}
	else {
		//Se ha seleccionado "Ninguna de las anteriores..." --> Se contin&uacute;a con los valores rellenados en el formulario
		localidades = false;

		//Vaciamos datos de los valores seleccionados para continuar con lo que tenemos rellenado.
		provinciaSelec.value="";
		poblacionSelec.value="";
		nombreViaSelec.value="";
		codigoPostalSelec.value="";
	}
}

/*
 ** OcultarZonaCobertura **
	Entrada:
	Salida:
	Resultado: Oculta la caja de candidatos
*/
function OcultarZonaCobertura(){
	document.getElementById('resultadosConsultaCobertura').style.display='none';
}

function comprobarTipo(comboTiposAlta) {
	if (comboTiposAlta.selectedIndex == 0 || comboTiposAlta.selectedIndex == 1)
		disableNumTelefono('Deshabilitar');
	else
		disableNumTelefono('Habilitar');
}

/**
 * Deshabilita el input del teléfono cuando se marca el check de alta nueva en el formulario.
 * @param elemento Campo telefono.
 * @return
 */
function disableNumTelefono(opcion){
	if (document.getElementById('cobNumeroTelefono.errors') != null){
		document.getElementById('cobNumeroTelefono.errors').innerHTML = '';
	}
	
	if (document.getElementById('cobTipoAltaAdslError') != null){
        document.getElementById('cobTipoAltaAdslError').innerHTML = '';
    }
	
	if (document.getElementById('cobNumeroTelefono')!= null) {
		if (opcion == 'Deshabilitar')
			document.getElementById('telFijo').style.display = 'none';
		else
			document.getElementById('telFijo').style.display = '';
	}
}

/**
 * Resetea todos los campos del formulario de la consulta de cobertura.
 * @return
 */
function clearForm(nameForm){
	document.forms[nameForm].reset();
}

/**
 * Recarga la imgen del captcha.
 * @return
 */
function reloadCaptcha(){
	img1 = new Image();
	img1.src="viewCaptcha.do?" + Math.floor(Math.random()*10000000);
	if (document.getElementById('captchaImage')!= null){
		document.getElementById('captchaImage').src = img1.src;
	}
}
