/*****************************************************************************/
/*                                2010 Shio2e                                */
/*                            JAVASCRIPT LOCALIZADOR                         */
/*****************************************************************************/

// MAPA
var localizador = {
	// VARIABLES CONFIGURACION
	texto_x_defecto_poblaciones : 'Todas las poblaciones',
	texto_x_defecto_barrios 	: 'Todos los barrios',
	id_selector_provincia		: 'sel_provincia',
	id_selector_poblacion		: 'sel_poblacion',
	id_selector_barrio			: 'sel_barrio',

	// VARIABLES INTERNAS
	habilitado : true,

	// FUNCIONES
	seleccionar : function (id_provincia, id_poblacion, id_barrio, carga_completa){
		if (this.habilitado && typeof id_provincia != "undefined") {
			id_poblacion = typeof id_poblacion == "undefined" ? 0 : id_poblacion;
			id_barrio = typeof id_barrio == "undefined" ? 0 : id_barrio;
			carga_completa = typeof carga_completa == "undefined" ? false : carga_completa;

			buscador.filtroProvincia 	= id_provincia;
			buscador.filtroPoblacion 	= id_poblacion;
			buscador.filtroBarrio 		= id_barrio;

			var texto_x_defecto;

			if (id_barrio == 0) {
				if (id_poblacion == 0 || carga_completa) {
					texto_x_defecto = this.texto_x_defecto_poblaciones;
				} else {
					texto_x_defecto = this.texto_x_defecto_barrios;
				}

				// CONSULTA AJAX
				new Ajax.Request('/exec/ajax/localizador.php', {
					parameters: { id_provincia: id_provincia, id_poblacion: (carga_completa ? 0 : id_poblacion), texto_x_defecto: texto_x_defecto },
					onSuccess: function(respuesta) {
						if (id_poblacion == 0 || carga_completa) {
							$(localizador.id_selector_poblacion).update(localizador.tratarJSON(respuesta.responseText));
							if ($(localizador.id_selector_barrio)) $(localizador.id_selector_barrio).update('<option value="0">'+localizador.texto_x_defecto_barrios+'</option>');
							if (carga_completa) {
								setTimeout('localizador.seleccionar_opcion_selector(localizador.id_selector_poblacion, '+id_poblacion+')', 100);
								localizador.seleccionar(id_provincia, id_poblacion);
							}
						} else {
							$(localizador.id_selector_barrio).update(localizador.tratarJSON(respuesta.responseText));
							buscador.actualizarComercios();
						}
					}
				});
			} else {
				buscador.regenerar();
			}
		}
	},

	seleccionado : function (id_provincia, id_poblacion, id_barrio) {
		id_barrio = typeof id_barrio == "undefined" ? 0 : id_barrio;
		this.seleccionar_opcion_selector(this.id_selector_provincia, id_provincia);
		this.seleccionar(id_provincia, id_poblacion, id_barrio, true);
	},

	seleccionar_opcion_selector : function (selector, opcion) {
		this.habilitado = false;
		var selector = $(selector);
		for (var i = 0; i < selector.options.length; i++) {
			if (selector.options[i].value == opcion) {
				selector.options[i].selected = true;
			} else {
				selector.options[i].selected = false;
			}
		}
		this.habilitado = true;
	},

	tratarJSON : function (texto) {
		var resultados = texto.evalJSON();
		var retorno = '';
		var subretorno;

		var i=0;
		while(resultados[i]) {
			subretorno = '<option value="'+resultados[i].v+'">'+resultados[i].t+'</option>';
			retorno += subretorno;
			i++;
		}

		return retorno;
	}
};
