﻿/*
Project: HUMBOLDT GEOPISTA
File: busquedas.js
Author: Angel Monterde <angel.monterde.gpl@gmail.com>
Team Geopista: 
        Jorge Elia <jorgelia82@gmail.com>
        Paula Garcia <paulicagg@gmail.com>
        Pablo Gallardo <pgallardo@geopista.es>
        Juan Martin <jmartin@geopista.es>
        Angel Monterde <angel.monterde.gpl@gmail.com>	
 
Date: 29/05/2007
 
HUMBOLDT GEOPISTA - Light WebClient/viewer for OGC Web Map Services.
Copyright (C) 2007
 
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */

if(!GEOPISTA.Busqueda){
    GEOPISTA.Busqueda = new Object();
    GEOPISTA.Busqueda.Vias = new Object();

    GEOPISTA.Busqueda.PARAM_ID_MUNICIPIO;// = "&idMunicipio=22112";
    GEOPISTA.Busqueda.PARAM_FORMATO_JSON = "&formato=json";

    GEOPISTA.Busqueda.RESULTADO_PETICION_OK = "0";
    GEOPISTA.Busqueda.RESULTADO_PETICION_ERROR = "1";

    GEOPISTA.Busqueda.URL_BASE_PETICION;
    GEOPISTA.Busqueda.COLUMNAS_BUSQUEDA_FINALIZADA = [{ field: "consulta", label:"No se encontraron resultados" }];

    GEOPISTA.Busqueda.RESULTADO_BUSQUEDA_SIN_RESULTADOS = [{"consulta": "Introduzca otro criterio de busqueda"}];
    GEOPISTA.Busqueda.RESULTADO_ERROR_EN_LA_CADENA_RECIBIDA = [{"consulta": "Introduzca otro criterio de busqueda"}];
}




//GEOPISTA.Busqueda.BUSCAR_CALLES = 1;
//GEOPISTA.Busqueda.BUSCAR_POIS = 2;

GEOPISTA.Busqueda.Vias.BOTON_NUEVA_BUSQUEDA = 1;
GEOPISTA.Busqueda.Vias.BOTON_MAS_INFORMACION = 2;

GEOPISTA.Busqueda.Vias.ESTADO_CONSULTA_VIAS = 1;
GEOPISTA.Busqueda.Vias.ESTADO_CARGANDO = 2;
GEOPISTA.Busqueda.Vias.ESTADO_CONSULTA_NUMEROS_POLICIA = 3;
GEOPISTA.Busqueda.Vias.ESTADO_IR_A_POSICION = 4;
GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA = 5;

// Aquí habrá que poner el idMunicipio de lo que carguemos, no asi codificado
GEOPISTA.Busqueda.Vias.PARAM_TIPO_BUSQUEDA_VIAS = "?tipo=vias";
GEOPISTA.Busqueda.Vias.PARAM_TIPO_BUSQUEDA_NUMEROS_POLICIA = "?tipo=numerosPolicia";
GEOPISTA.Busqueda.Vias.PARAM_ID_VIA = "&idVia=";
GEOPISTA.Busqueda.Vias.PARAM_ROTULO_NUMERO_POLICIA = "&rotuloNumeroPolicia=";
GEOPISTA.Busqueda.Vias.PARAM_NOMBRE_VIA = "&nombreVia=";

GEOPISTA.Busqueda.Vias.COLUMNAS_VIAS = [{ field: "nombre", label:"Haga doble click para seleccionar los portales de una via"}];
GEOPISTA.Busqueda.Vias.COLUMNAS_NUMEROS_POLICIA = [{ field: "consulta", label:"Haga doble click para ir al portal"}];

GEOPISTA.Busqueda.BuscadorVias = function(divCapaPadre, txtVia, rotuloNumeroPolicia, isIE, interactuadorUsuario){
    // para llamar a posicionarseSobreCoordenadas
    var _interactuadorConUsuario = interactuadorUsuario;
    // el estado actual en que se encuentra el buscador
    var _estado = null;
    var _IE6 = isIE;
    
    var _that = this;
    
    //////////////////////////////////////////////////////////////////
    // componentes del buscador
    //////////////////////////////////////////////////////////////////
    var _capaPadre = divCapaPadre;
    var _capaFloatingPane = document.createElement("div");
    var _tabla = document.createElement("table");
    var _txtVia = document.createElement("input");
    var _txtNumeroPolicia = document.createElement("input");
    var _botonNuevaBusqueda = document.createElement("button");
    var _tablaAgruparInputs = document.createElement("table");
    var _capaBarraProgreso = document.createElement("div");
    
    //var _botonMasInformacion = document.createElement("button");
    var _espacioEnBlanco = document.createElement("br");
    // definimos las variables que almacenarán los widgets
    
    var _widgetFloatingPane = null;
    var _widgetTabla = null;
    var _widgetBotonNuevaBusqueda = null;
    var _widgetBarraProgreso = null;
    
    //////////////////////////////////////////////////////////////////
    // variables que guardan el valor de las peticiones a realizar
    //////////////////////////////////////////////////////////////////
    var _nombreVia = txtVia;
    var _idVia = null;
    var _rotuloNumeroPolicia = rotuloNumeroPolicia;
    //var _idNumeroPolicia = null;
    
    //////////////////////////////////////////////////////////////////
    // variables que llevan el control a la hora de hacer el doble click
    // sobre la tabla
    //////////////////////////////////////////////////////////////////
    
    var _objetoSeleccionado = null;
    
    // asignamos propiedades a las capas
    
    //////////////////////////////////////////////////////////////////
    // damos valores a los componentes
    //////////////////////////////////////////////////////////////////
    
    _capaFloatingPane.style.position="absolute";
    _capaFloatingPane.style.width="630px";
    _capaFloatingPane.style.height="300px";
    
    _capaFloatingPane.style.visibility = "hidden";
    
    _capaFloatingPane.style.top=((parseInt(dojo.html.getViewport("padre").height))/3)+"px";
    _capaFloatingPane.style.left=((parseInt(dojo.html.getViewport("padre").width))/4)+"px";
    
    _txtVia.size = 30;
    _txtVia.value = txtVia;
    _txtNumeroPolicia.size = 8;
    _txtNumeroPolicia.value = rotuloNumeroPolicia;
    _botonNuevaBusqueda.innerHTML="Nueva Busqueda";
    
    // los atributos de la barra de progreso se modifican en el widget.
    _capaBarraProgreso.style.width = (parseInt(_capaFloatingPane.style.width)/4)+"px";
    //_botonMasInformacion.innerHTML="Buscar portales";
    
    // le damos las propiedades a _tablaAgruparInputs
    
    dojo.html.setClass(_tablaAgruparInputs, 'tablaAgrupacion');
    dojo.html.setClass(_tabla, 'tablaBusqueda');
    _tabla.setAttribute('id', "tablaBusqueda");
    
    var filaAgrupacionInputs = _tablaAgruparInputs.insertRow(0);
    var celdaVia = filaAgrupacionInputs.insertCell(0);
    var celdaNumeroPolicia = filaAgrupacionInputs.insertCell(1);
    var celdaBoton = filaAgrupacionInputs.insertCell(2);
    
    celdaVia.appendChild(document.createTextNode("Via"));
    celdaVia.appendChild(_txtVia);
    
    celdaNumeroPolicia.appendChild(document.createTextNode("Nº"));
    celdaNumeroPolicia.appendChild(_txtNumeroPolicia);
    
    celdaBoton.appendChild(_botonNuevaBusqueda);
    //agregamos los componentes a _capaFloatingPane
    
    //_capaFloatingPane.appendChild(_capaTabla);
    
    _capaFloatingPane.appendChild(_tablaAgruparInputs);    
    _capaFloatingPane.appendChild(_capaBarraProgreso);
    _capaFloatingPane.appendChild(_tabla);
    
    _capaFloatingPane.appendChild(_espacioEnBlanco);
    //_capaFloatingPane.appendChild(_botonMasInformacion);
    
    // y del floatingPane a la capaPadre
    
    _capaPadre.appendChild(_capaFloatingPane);
    
    // ahora definimos los widgets      
    // antes el displayCloseAction en vez del minimize
    
    _widgetFloatingPane = dojo.widget.createWidget("dojo:FloatingPane",
    {title: "Buscar vias",resizable:true, hasShadow:true, displayMinimizeAction:true, 
     executeScripts: true, toggle:"explode",toggleDuration:500},_capaFloatingPane);
     
     _widgetBotonNuevaBusqueda = dojo.widget.createWidget("dojo:Button", {Id:"widgetBotonNuevaBusqueda"}, _botonNuevaBusqueda);
     
     dojo.event.kwConnect({srcObj: _widgetBotonNuevaBusqueda, srcFunc: "onClick", adviceObj: this, adviceFunc: function(){
         this.hazBusqueda(GEOPISTA.Busqueda.Vias.BOTON_NUEVA_BUSQUEDA);
     }, once:true
     });
     
     _estado = GEOPISTA.Busqueda.Vias.ESTADO_CONSULTA_VIAS;
     
     _widgetFloatingPane.domNode.style.visibility ="visible";

     _widgetFloatingPane.show();
     
     /**
      *
      *
      */
     this.hazBusqueda = function(botonOrigen){
         // reiniciar la búsqueda
         //debugger;
         if(((botonOrigen == GEOPISTA.Busqueda.Vias.BOTON_NUEVA_BUSQUEDA)&&(_estado!=GEOPISTA.Busqueda.Vias.ESTADO_CARGANDO))||(botonOrigen==undefined)){
             //console.log("ha entrado:"+botonOrigen);
             _estado = GEOPISTA.Busqueda.Vias.ESTADO_CONSULTA_VIAS;
         }
         switch(_estado){
             case GEOPISTA.Busqueda.Vias.ESTADO_CONSULTA_VIAS:
                 buscaVias();
                 break;
                 
             case GEOPISTA.Busqueda.Vias.ESTADO_CARGANDO:
                 var cancelarConsulta = confirm("¿Desea parar la consulta actual para realizar la nueva?");
                 if(cancelarConsulta==true){
                     _estado = GEOPISTA.Busqueda.Vias.ESTADO_CONSULTA_VIAS;
                     buscaVias();
                 }
                 break;
                 
             case GEOPISTA.Busqueda.Vias.ESTADO_CONSULTA_NUMEROS_POLICIA:
                 buscarNumerosPolicia();
                 break;
                 
             case GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA:
                 alert("Por favor inserte un nuevo criterio de búsqueda");
                 break;
             default:
                 alert("error en el _estado:"+_estado);
                 break;
         }
         
     }
     
     this.avanzarEstado = function(evt){
         //debugger;
         var datoSeleccionado = _widgetTabla.getSelectedData();
         if(_objetoSeleccionado==null){
             _objetoSeleccionado = datoSeleccionado;
         }else{
             if(_objetoSeleccionado == datoSeleccionado){
                 // llamar a la funcion que corresponda según el estado
                 if(_estado == GEOPISTA.Busqueda.Vias.ESTADO_CONSULTA_NUMEROS_POLICIA){
                     this.hazBusqueda(GEOPISTA.Busqueda.Vias.BOTON_MAS_INFORMACION);
                 }else if(_estado == GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA){
                     var utmX = (_objetoSeleccionado.xMinEntero + _objetoSeleccionado.xMinDecimal);
                     var utmY = (_objetoSeleccionado.yMinEntero + _objetoSeleccionado.yMinDecimal);
                     var tipoChincheta = GEOPISTA.Operacion.CHINCHETA_CALLE;
                     creaYPonChincheta(utmX, utmY, tipoChincheta);
                 }
             }else{
                 _objetoSeleccionado = datoSeleccionado;
             }
         }
     }
     
     this.hide = function(){
         //_widgetFloatingPane.hide();
         _widgetFloatingPane.minimizeWindow();
     }
  
     this.destroy = function(){
         /*
         var hijos = _capaFloatingPane.childNodes;
         var iteraciones = hijos.length;
         for(var i=0; i<iteraciones; i++){
            _capaFloatingPane.removeChild(hijos[0]);
         }*/
         
         
         if(_widgetTabla!=null){
             
             //_widgetTabla.destroyChildren();
             _widgetTabla.destroy();
             _widgetTabla = null; 
             dojo.event.browser.clean(_tabla);
         }
         if(_widgetBotonNuevaBusqueda!=null){
             
             //_widgetBotonNuevaBusqueda.destroyChildren();
             _widgetBotonNuevaBusqueda.destroy();
             _widgetBotonNuevaBusqueda = null;
             dojo.event.browser.clean(_botonNuevaBusqueda);
         }
         if(_widgetBarraProgreso!=null){
             
             //_widgetBarraProgreso.destroyChildren();
             _widgetBarraProgreso.destroy();
             _widgetBarraProgreso = null;
             dojo.event.browser.clean(_capaBarraProgreso);
         }
         if(_widgetFloatingPane!=null){
             
             //_widgetFloatingPane.destroyChildren();
             _widgetFloatingPane.destroy();
             _widgetFloatingPane = null;
             dojo.event.browser.clean(_capaFloatingPane);
         }
         
         if(_capaFloatingPane!=null){
             //dojo.event.browser.clean(_capaFloatingPane);
             var hijos = _capaFloatingPane.childNodes;
             var iteraciones = hijos.length;
             for(var i=0; i<iteraciones; i++){
                 dojo.event.browser.clean(hijos[0]);
                 _capaFloatingPane.removeChild(hijos[0]);
                 hijos[0] = null;
             }
             _capaFloatingPane = null;
             hijos = null;
         }
     }
     
     tablaFiltrado = function(visible){
         //debugger;
         if(visible==true){
             var columnas;
             if(_widgetTabla==null){
                 // por el valueField "idVia" no me deja ordenar
                 _widgetTabla = dojo.widget.createWidget("dojo:FilteringTable",{id:"miTabla", valueField: "idVia",alternateRows:"true"},_tabla);
                 if(_estado==GEOPISTA.Busqueda.Vias.ESTADO_CONSULTA_VIAS){
                     columnas = GEOPISTA.Busqueda.Vias.COLUMNAS_VIAS;                                                            
                 }else if(_estado==GEOPISTA.Busqueda.Vias.ESTADO_CONSULTA_NUMEROS_POLICIA){
                     columnas = GEOPISTA.Busqueda.Vias.COLUMNAS_NUMEROS_POLICIA;
                 }else if(_estado==GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA){
                     columnas = GEOPISTA.Busqueda.COLUMNAS_BUSQUEDA_FINALIZADA;
                 }
             }else{
                 // destruir la estructura de la tabla
                 destruyeEstructuraTablaFiltrado();
                 // reconstruir la tabla según el estado en que estemos
                 if(_estado==GEOPISTA.Busqueda.Vias.ESTADO_CONSULTA_VIAS){
                     columnas = GEOPISTA.Busqueda.Vias.COLUMNAS_VIAS;                                                            
                 }else if(_estado==GEOPISTA.Busqueda.Vias.ESTADO_CONSULTA_NUMEROS_POLICIA){
                     columnas = GEOPISTA.Busqueda.Vias.COLUMNAS_NUMEROS_POLICIA;
                 }else if(_estado==GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA){
                     columnas = GEOPISTA.Busqueda.COLUMNAS_BUSQUEDA_FINALIZADA;
                 }
             }
             // sea cual sea la estructura de la tabla la reconstruimos
             for (var i = 0; i<columnas.length; i++) {
                 _widgetTabla.columns.push(_widgetTabla.createMetaData(columnas[i]));
             }
             _widgetTabla.show();
         }else{
             _widgetTabla.hide();
         }
         dojo.event.kwConnect({srcObj: _widgetTabla, srcFunc:"onSelect", adviceObj:_that, adviceFunc: "avanzarEstado", once:true});
         //        debugger;
     }
     
     destruyeEstructuraTablaFiltrado = function(){
         _widgetTabla.store.clearData();
         //dojo.event.browser.clean(_tabla);
         //_capaFloatingPane.appendChild(_tabla);
         
         var table = document.getElementById("tablaBusqueda");
         
         for(var i=0; i<table.childNodes.length; i++){
             var child = table.childNodes[i];
             //debugger;
             // dojo.event.browser.clean(child);
             if(child.tagName=="THEAD"){
                 dojo.event.browser.clean(child);
                 table.removeChild(child);
             }
         }
         // limpiamos las columnas del widget
         _widgetTabla.columns = [];
         // le adjuntamos la cabecera
         var thead = document.createElement("thead");
         table.appendChild(thead);
     }
     
     barraProgreso = function(visible){
         if(!_IE6){
             if(visible==true){
                 if(_widgetBarraProgreso==null){
                     _widgetBarraProgreso = dojo.widget.createWidget("dojo:ProgressBar", {hasText: false, id:"barraProgresoBusquedas"}, _capaBarraProgreso);
                     _widgetBarraProgreso.domNode.style.backgroundColor="#FFFFFF";
                     _widgetBarraProgreso.domNode.style.height="15px";
                     _widgetBarraProgreso.domNode.style.position = "absolute";
                     _widgetBarraProgreso.domNode.style.width = (parseInt(_capaFloatingPane.style.width)/2)+"px";
                     _widgetBarraProgreso.domNode.style.top = ((parseInt(_capaFloatingPane.style.height)-15)/2)+"px";
                     _widgetBarraProgreso.domNode.style.left = (parseInt(_capaFloatingPane.style.width)/4)+"px"; 
                 }else{
                     _widgetBarraProgreso.show();
                 }
                 _widgetBarraProgreso.startAnimation();
             }else{
                 _widgetBarraProgreso.stopAnimation();
                 _widgetBarraProgreso.hide();
             }
         }
     }
     
     buscaVias = function(){
         // reseteamos el idVia por si hemos hecho búsqueda de números de policía
         _idVia = null;
         // peticion Ejemplo:  "http://192.168.10.245:8080/visor/busqueda?tipo=vias&idMunicipio=22112";
         var urlPet = GEOPISTA.Busqueda.URL_BASE_PETICION + GEOPISTA.Busqueda.Vias.PARAM_TIPO_BUSQUEDA_VIAS 
         + GEOPISTA.Busqueda.PARAM_ID_MUNICIPIO;
         
         //var formatoJSON = "&formato=json";
         // tomamos los valores de los criterios de búsqueda del formulario:
         _nombreVia = _txtVia.value;
         var _rotuloNumeroPolicia = _txtNumeroPolicia.value;
         if(_nombreVia!=""){
             //urlPet += GEOPISTA.Busqueda.Vias.PARAM_NOMBRE_VIA+escape(_nombreVia);//Utf8.encode(_nombreVia));
             if(_rotuloNumeroPolicia!=""){
                 //urlPet += GEOPISTA.Busqueda.Vias.PARAM_ROTULO_NUMERO_POLICIA+escape(_rotuloNumeroPolicia);//Utf8.encode(_rotuloNumeroPolicia));
                 urlPet += GEOPISTA.Busqueda.Vias.PARAM_ROTULO_NUMERO_POLICIA+_rotuloNumeroPolicia;
             }
             
             // queremos que el resultado sea en formato JSON
             urlPet+=GEOPISTA.Busqueda.PARAM_FORMATO_JSON;
             barraProgreso(true);
             //alert(urlPet);
             // realizamos la petición
             dojo.io.bind({
                 // url: "http://192.168.10.245:8080/visor/busqueda?tipo=vias&idMunicipio=4016&formato=json",
                 url: urlPet,
                 content: { nombreVia: _nombreVia},
                 encoding: "utf8",
                 // función que se ejecutará cuando se hayan cargado los datos
                 load: function(type, data, evt){ 
                     //debugger;
                     // decodificamos el resultado
                     // el propio tratarResultados tiene que saber en qué estado me quedo tras la petición
                     var resultadoTratado = tratarResultados(data);
                     barraProgreso(false);
                     
                     tablaFiltrado(true);
                     _estado = resultadoTratado.estadoFuturo;
                     
                     // si solo hemos tenido un resultado es que es un número de policía:
                     if(_estado==GEOPISTA.Busqueda.Vias.ESTADO_IR_A_POSICION){
                         var utmX = (resultadoTratado.datosJSON.consulta[0].xMinEntero + resultadoTratado.datosJSON.consulta[0].xMinDecimal);
                         var utmY = (resultadoTratado.datosJSON.consulta[0].yMinEntero + resultadoTratado.datosJSON.consulta[0].yMinDecimal);
                         var tipoChincheta = GEOPISTA.Operacion.CHINCHETA_CALLE;
                         _estado = GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA;
                         creaYPonChincheta(utmX, utmY, tipoChincheta);
                     }else{    
                         _widgetTabla.store.setData(resultadoTratado.datosJSON.consulta);
                     }
                     
                     //console.log(resultadoTratado.datosJSON.resultado);
                     // no hay resultados
                     //_widgetTabla.store.setData(resultadoTratado.datosJSON.resultado);
                 },
                 // Función manejadora de errores
                 error: function(type, error){ 
                     if((type!="unknown")||(type!="error")){
                         //debugger;
                         alert("error, no se pudo conectar con el servidor: solicitado:");
                         _estado = GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA;
                     }
                 },
                 method: "POST",
                 // Tipo de datos que recibiremos
                 mimetype: "text/plain"         
             });
             _estado = GEOPISTA.Busqueda.Vias.ESTADO_CARGANDO;     
         }else{
             alert("Por favor, inserte el nombre de la vía que desee buscar");
         }
     }
     
     buscarNumerosPolicia = function(){
         //debugger;
         var obj= _widgetTabla.getSelectedData();
         //Sustituir obj por _objetoSeleccionado 
         if(obj!=undefined){
             _idVia = obj.idVia;
             _nombreVia = obj.nombre;           // �Hace falta????????????????????????????????????????????????????????????????
             var urlPet = GEOPISTA.Busqueda.URL_BASE_PETICION + GEOPISTA.Busqueda.Vias.PARAM_TIPO_BUSQUEDA_NUMEROS_POLICIA 
             + GEOPISTA.Busqueda.PARAM_ID_MUNICIPIO+GEOPISTA.Busqueda.Vias.PARAM_ID_VIA+_idVia;
             _rotuloNumeroPolicia = _txtNumeroPolicia.value;
             if(_rotuloNumeroPolicia!=""){
                 urlPet+=GEOPISTA.Busqueda.Vias.PARAM_ROTULO_NUMERO_POLICIA+escape(_rotuloNumeroPolicia);//Utf8.encode(_rotuloNumeroPolicia));
             }
             
             urlPet +=GEOPISTA.Busqueda.PARAM_FORMATO_JSON;
             
             // ahora que tenemos todos los parámetros realizamos la petición
             //alert(urlPet);
             dojo.io.bind({
                 // url: "http://192.168.10.245:8080/visor/busqueda?tipo=vias&idMunicipio=4016&formato=json",
                 url: urlPet,
                 // función que se ejecutará cuando se hayan cargado los datos
                 load: function(type, data, evt){ 
                     var resultadoTratado = tratarResultados(data);
                     barraProgreso(false);
                     // antes de cambiar de estado tenemos que crear la tabla
                     tablaFiltrado(true);
                     _estado = resultadoTratado.estadoFuturo; 
                     if(_estado==GEOPISTA.Busqueda.Vias.ESTADO_IR_A_POSICION){
                         var utmX = (resultadoTratado.datosJSON.consulta[0].xMinEntero + resultadoTratado.datosJSON.consulta[0].xMinDecimal);
                         var utmY = (resultadoTratado.datosJSON.consulta[0].yMinEntero + resultadoTratado.datosJSON.consulta[0].yMinDecimal);
                         var tipoChincheta = GEOPISTA.Operacion.CHINCHETA_CALLE;
                         _estado = GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA;
                         creaYPonChincheta(utmX, utmY, tipoChincheta);
                         // si no vamos al lugar es que tenemos datos, por lo que rellenamos la tabla
                     }else{
                         _widgetTabla.store.setData(resultadoTratado.datosJSON.consulta);
                     }
                     
                     
                     
                 },
                 // Función manejadora de errores
                 error: function(type, error){ 
                     if((type!="unknown")||(type!="error")){
                         alert("error, no se pudo conectar con el servidor: solicitado:");
                         _estado = GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA;
                     }
                 },
                 method: "POST",
                 // Tipo de datos que recibiremos
                 mimetype: "text/plain"         
             });
             
             // cambiamos el estado actual a cargando 
             _estado = GEOPISTA.Busqueda.Vias.ESTADO_CARGANDO;
             // si no introducen ningún criterio de búsqueda se lo decimos
         }else{
             alert("Por favor, seleccione una via para continuar la búsqueda");
         }
     }
     // el estado de la petición se cambia en función del resultado para que se 
     // pinte la tabla. Tras pintarse la tabla habrá que actualizar el resultado
     tratarResultados = function(datos){
         var resultadoTratado = new Object();
         //var datosEscapados = unescape(datos);
         var datosTratados = unescape(datos);
         try{
             //var datosDecodificados = Utf8.decode(datosEscapados);
             //if(datosDecodificados!=""){
             if(datosTratados!=""){
                 // puede lanzar una excepcion si se recibe algun caracter no valido
                 // por parte del servidor
                 //resultadoTratado.datosJSON = datosDecodificados.parseJSON();
                 resultadoTratado.datosJSON = datosTratados.parseJSON();
                 resultadoTratado.datosJSON.estadoConsulta = resultadoTratado.datosJSON.estadoConsulta.parseJSON();
                 // ha ido todo bien
                 if(resultadoTratado.datosJSON.estadoConsulta.estado==GEOPISTA.Busqueda.RESULTADO_PETICION_OK){
                     resultadoTratado.datosJSON.consulta = resultadoTratado.datosJSON.consulta.parseJSON();
                     resultadoTratado.estadoFuturo = null;
                     // si ha habido un resultado
                     if(resultadoTratado.datosJSON.consulta[0]!=null){
                         if(resultadoTratado.datosJSON.consulta[0].nombre!=null){
                             // puede ser que estemos viendo muchas vias, o 
                             // una via con multiples numeros de policia
                             if(resultadoTratado.datosJSON.consulta[0].numerosPolicia!=null){
                                 // hay que convertirlo a json
                                 _nombreVia = resultadoTratado.datosJSON.consulta[0].nombre;
                                 // para aprovechar el if de abajo
                                 resultadoTratado.datosJSON.consulta=
                                 resultadoTratado.datosJSON.consulta[0].numerosPolicia.parseJSON();
                             }else{
                                 _estado = GEOPISTA.Busqueda.Vias.ESTADO_CONSULTA_VIAS;
                                 resultadoTratado.estadoFuturo = GEOPISTA.Busqueda.Vias.ESTADO_CONSULTA_NUMEROS_POLICIA;
                                /*resultadoTratado.datosJSON.consulta = GEOPISTA.Busqueda.RESULTADO_BUSQUEDA_SIN_RESULTADOS;
                                resultadoTratado.estadoFuturo = GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA;
                                _estado = GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA;
                                return resultadoTratado;*/                                
                             }
                         }
                         
                         if(resultadoTratado.datosJSON.consulta[0].rotulo!=null){
                             _estado = GEOPISTA.Busqueda.Vias.ESTADO_CONSULTA_NUMEROS_POLICIA;
                             // crear el objeto json con el rotulo y el _nombreVia para el
                             // resultado
                             if(resultadoTratado.datosJSON.consulta.length>1){
                                 for(var i=0; i<resultadoTratado.datosJSON.consulta.length; i++){
                                     resultadoTratado.datosJSON.consulta[i].consulta = 
                                     _nombreVia+", "+resultadoTratado.datosJSON.consulta[i].rotulo;
                                     // si el _idVia es != de null es que hemos realizado búsqueda de
                                     // vias y hemos seleccionado una via
                                     if(_idVia!=null){
                                         // a cada uno hay que darle un valor distinto, sino cuando
                                         // pinchemos en una vía, se seleccionarán todas, ya
                                         // que todas tienen el mismo "identificador". También
                                         // añadimos el i ya que puede pasar que dos numeros de
                                         // policia tengan los mismos rotulos, por lo que hay que
                                         // añadir el i para dar un identificador único
                                         resultadoTratado.datosJSON.consulta[i].idVia = _idVia+resultadoTratado.datosJSON.consulta[i].rotulo+i;
                                         // hay que ponerle algún identificador
                                     }else{
                                         resultadoTratado.datosJSON.consulta[i].idVia = resultadoTratado.datosJSON.consulta[i].rotulo+i;
                                     }
                                 }
                                 resultadoTratado.estadoFuturo = GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA;
                             }else{
                                 resultadoTratado.estadoFuturo = GEOPISTA.Busqueda.Vias.ESTADO_IR_A_POSICION;
                             }
                         }
                         // sin resultados    
                     }else if(resultadoTratado.datosJSON.consulta[0].nombre==null){
                         //resultadoTratado.completada = true;
                         _estado = GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA;
                         resultadoTratado.datosJSON.consulta = [];
                         resultadoTratado.estadoFuturo = GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA;
                     }
                     // ha habido un error, el servidor nos lo dice
                 }else if(resultadoTratado.datosJSON.estadoConsulta.estado==GEOPISTA.Busqueda.RESULTADO_PETICION_ERROR){
                     //resultadoTratado.completada = true;
                     _estado = GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA;
                     var mensaje = "Ha sucedido un error en la busqueda"+resultadoTratado.datosJSON.estadoConsulta.mensaje;
                     resultadoTratado.datosJSON.consulta = GEOPISTA.Busqueda.RESULTADO_BUSQUEDA_SIN_RESULTADOS;
                     resultadoTratado.estadoFuturo = GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA;
                 }
             }else{
                 // devolvemos un resultado por defecto cuando el servidor da ""
                 resultadoTratado.datosJSON = new Object();
                 resultadoTratado.datosJSON.consulta = GEOPISTA.Busqueda.RESULTADO_BUSQUEDA_SIN_RESULTADOS;
                 resultadoTratado.estadoFuturo = GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA;
                 _estado = GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA;
             }
         }catch(err){
             resultadoTratado.datosJSON = new Object();
             resultadoTratado.datosJSON.consulta = GEOPISTA.Busqueda.RESULTADO_ERROR_EN_LA_CADENA_RECIBIDA;
             resultadoTratado.estadoFuturo = GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA;
             _estado = GEOPISTA.Busqueda.Vias.ESTADO_BUSQUEDA_FINALIZADA;
         }
         return resultadoTratado;
     }
     
     creaYPonChincheta = function(x,y,tipo){
         var chincheta = new GEOPISTA.Operacion.Chincheta(tipo);
         chincheta.utmX=x;
         chincheta.utmY=y;
         _interactuadorConUsuario.posicionarseSobreCoordenadas(chincheta);
     }
}


if(!GEOPISTA.Busqueda.Pois){
    GEOPISTA.Busqueda.Pois = new Object();
}

GEOPISTA.Busqueda.Pois.BOTON_NUEVA_BUSQUEDA = 1;

GEOPISTA.Busqueda.Pois.ESTADO_INICIAL= 1;
GEOPISTA.Busqueda.Pois.ESTADO_CARGANDO = 2;
GEOPISTA.Busqueda.Pois.ESTADO_MUESTRA_POIS = 3;
GEOPISTA.Busqueda.Pois.ESTADO_IR_A_POIS = 4;
GEOPISTA.Busqueda.Pois.ESTADO_BUSQUEDA_FINALIZADA = 5;


GEOPISTA.Busqueda.Pois.PARAM_TIPO_BUSQUEDA_POIS = "?tipo=pois";
GEOPISTA.Busqueda.Pois.PARAM_NOMBRE_POIS = "&nombrePois=";

GEOPISTA.Busqueda.Pois.COLUMNAS_POIS = [{ field: "nombre", label:"Haga doble click para ir al Punto de Interes"}];
//GEOPISTA.Busqueda.COLUMNAS_BUSQUEDA_FINALIZADA = [{ field: "consulta", label:"No se encontraron resultados" }];

//GEOPISTA.Busqueda.RESULTADO_BUSQUEDA_SIN_RESULTADOS = [{"consulta": "Introduzca otro criterio de busqueda"}];
//GEOPISTA.Busqueda.RESULTADO_ERROR_EN_LA_CADENA_RECIBIDA = [{"consulta": "Introduzca otro criterio de busqueda"}];







GEOPISTA.Busqueda.BuscadorPois = function(divCapaPadre, txtPois, IE6, interactuadorUsuario ){
    var _interactuadorConUsuario = interactuadorUsuario;
    var _capaPadre = divCapaPadre;
    var _capaFloatingPane = document.createElement("div");
    var _tabla = document.createElement("table");
    var _espacioEnBlanco = document.createElement("br");
    var _IE6 = IE6; 
    
    var _that = this;
    var _botonNuevaBusqueda = document.createElement("button");
    var _tablaAgruparInputs = document.createElement("table");
    var _capaBarraProgreso = document.createElement("div");
    
    var _txtPois = document.createElement("input");
    
    // definimos las variables que almacenarán los widgets
    
    var _widgetFloatingPane = null;
    var _widgetTabla = null;
    var _widgetBotonNuevaBusqueda = null;
    var _widgetBarraProgreso = null;
    
    // variables de busquedas
    
    var _nombrePois;
    var _objetoSeleccionado = null;
   /* var _utmX = null;
    var _utmY = null;
    var _tipoChincheta = null;*/
    // asignamos propiedades a las capas
    
    //////////////////////////////////////////////////////////////////
    // damos valores a los componentes
    //////////////////////////////////////////////////////////////////
    
    _capaFloatingPane.style.position="absolute";
    _capaFloatingPane.style.width="630px";
    _capaFloatingPane.style.height="300px";
    
    _capaFloatingPane.style.visibility = "hidden";
    
    _capaFloatingPane.style.top=((parseInt(dojo.html.getViewport("padre").height))/3)+"px";
    _capaFloatingPane.style.left=((parseInt(dojo.html.getViewport("padre").width))/4)+"px";
    
    _txtPois.size = 40;
    _txtPois.value = txtPois;
    _nombrePois = txtPois;
    
    _botonNuevaBusqueda.innerHTML="Nueva Busqueda";
    
    // los atributos de la barra de progreso se modifican en el widget.
    _capaBarraProgreso.style.width = (parseInt(_capaFloatingPane.style.width)/4)+"px";
    //_botonMasInformacion.innerHTML="Buscar portales";
    
    // le damos las propiedades a _tablaAgruparInputs
    
    dojo.html.setClass(_tablaAgruparInputs, 'tablaAgrupacion');
    dojo.html.setClass(_tabla, 'tablaBusqueda');
    _tabla.setAttribute('id', "tablaBusqueda");
    
    var filaAgrupacionInputs = _tablaAgruparInputs.insertRow(0);
    var celdaVia = filaAgrupacionInputs.insertCell(0);
    var celdaBoton = filaAgrupacionInputs.insertCell(1);
    
    celdaVia.appendChild(document.createTextNode("Pois"));
    celdaVia.appendChild(_txtPois);
    
    celdaBoton.appendChild(_botonNuevaBusqueda);
    //agregamos los componentes a _capaFloatingPane
    
    //_capaFloatingPane.appendChild(_capaTabla);
    
    _capaFloatingPane.appendChild(_tablaAgruparInputs);    
    _capaFloatingPane.appendChild(_capaBarraProgreso);
    _capaFloatingPane.appendChild(_tabla);
    
    _capaFloatingPane.appendChild(_espacioEnBlanco);
    //_capaFloatingPane.appendChild(_botonMasInformacion);
    
    // y del floatingPane a la capaPadre
    
    _capaPadre.appendChild(_capaFloatingPane);
    
    // ahora definimos los widgets      
    // antes el displayCloseAction en vez del minimize
    
    _widgetFloatingPane = dojo.widget.createWidget("dojo:FloatingPane",
    {title: "Buscar Puntos de Interes",resizable:true, hasShadow:true, displayMinimizeAction:true, 
     executeScripts: true, toggle:"explode",toggleDuration:500},_capaFloatingPane);
     
     _widgetBotonNuevaBusqueda = dojo.widget.createWidget("dojo:Button", {Id:"widgetBotonNuevaBusqueda"}, _botonNuevaBusqueda);
     
     dojo.event.kwConnect({srcObj: _widgetBotonNuevaBusqueda, srcFunc: "onClick", adviceObj: this, adviceFunc: function(){
         this.hazBusqueda(GEOPISTA.Busqueda.Pois.BOTON_NUEVA_BUSQUEDA);
     }, once:true
     });
     
     _estado = GEOPISTA.Busqueda.Pois.ESTADO_INICIAL;
     
     _widgetFloatingPane.domNode.style.visibility ="visible";
     _widgetFloatingPane.show();
     
     this.hide = function(){
         //_widgetFloatingPane.hide();
         _widgetFloatingPane.minimizeWindow();
     }
     
     this.destroy = function(){
         if(_widgetTabla!=null){
             
             //_widgetTabla.destroyChildren();
             _widgetTabla.destroy();
             _widgetTabla = null; 
             dojo.event.browser.clean(_tabla);
         }
         if(_widgetBotonNuevaBusqueda!=null){
             
             //_widgetBotonNuevaBusqueda.destroyChildren();
             _widgetBotonNuevaBusqueda.destroy();
             _widgetBotonNuevaBusqueda = null;
             dojo.event.browser.clean(_botonNuevaBusqueda);
         }
         if(_widgetBarraProgreso!=null){
             
             //_widgetBarraProgreso.destroyChildren();
             _widgetBarraProgreso.destroy();
             _widgetBarraProgreso = null;
             dojo.event.browser.clean(_capaBarraProgreso);
         }
         if(_widgetFloatingPane!=null){
             
             //_widgetFloatingPane.destroyChildren();
             _widgetFloatingPane.destroy();
             _widgetFloatingPane = null;
             dojo.event.browser.clean(_capaFloatingPane);
         }
         
         if(_capaFloatingPane!=null){
             //dojo.event.browser.clean(_capaFloatingPane);
             var hijos = _capaFloatingPane.childNodes;
             var iteraciones = hijos.length;
             for(var i=0; i<iteraciones; i++){
                 dojo.event.browser.clean(hijos[0]);
                 _capaFloatingPane.removeChild(hijos[0]);
                 hijos[0] = null;
             }
             _capaFloatingPane = null;
             hijos = null;
         }  
     }
     
     this.hazBusqueda = function(origenPeticion){
         if((origenPeticion==undefined)||((origenPeticion==GEOPISTA.Busqueda.Pois.BOTON_NUEVA_BUSQUEDA)&&(_estado!=GEOPISTA.Busqueda.Pois.ESTADO_CARGANDO))){
             _estado = GEOPISTA.Busqueda.Pois.ESTADO_INICIAL;
         }
         switch(_estado){
             case GEOPISTA.Busqueda.Pois.ESTADO_INICIAL:
                 this.buscaPois();
                 break;
             case GEOPISTA.Busqueda.Pois.ESTADO_CARGANDO:
                 var cancelarConsulta = confirm("¿Desea parar la consulta actual para realizar la nueva?");
                 if(cancelarConsulta==true){
                     _estado = GEOPISTA.Busqueda.Pois.ESTADO_INICIAL;
                     this.buscaPois();
                 }
                 break;
             case GEOPISTA.Busqueda.Pois.ESTADO_MUESTRA_POIS:
                 this.seleccionaPois(origenPeticion);
                 break;     
             case GEOPISTA.Busqueda.Pois.ESTADO_IR_A_POIS:
                 irAPois();
                 break;
             case GEOPISTA.Busqueda.Pois.ESTADO_BUSQUEDA_FINALIZADA:
                 alert("Por favor, inserte un criterio de busqueda y pinche en nueva busqueda");
                 break;
         }
     }
     
     
     this.seleccionaPois = function(evt){
         var datoSeleccionado = _widgetTabla.getSelectedData();
         if(_objetoSeleccionado==null){
             _objetoSeleccionado = datoSeleccionado;
         }else{
             if(_objetoSeleccionado == datoSeleccionado){
                 /*var utmX = (_objetoSeleccionado.xMinEntero + _objetoSeleccionado.xMinDecimal);
                 var utmY = (_objetoSeleccionado.yMinEntero + _objetoSeleccionado.yMinDecimal);
                 var tipoChincheta = GEOPISTA.Operacion.CHINCHETA_POIS;*/
                 //actualizaCamposParaLaChincheta();
                 _estado = GEOPISTA.Busqueda.Pois.ESTADO_IR_A_POIS;
                 //this.hazBusqueda(GEOPISTA.Busqueda.Vias.BOTON_MAS_INFORMACION);
                 irAPois();
             }else{
                 _objetoSeleccionado = datoSeleccionado;
             }
         }
     }

     tablaFiltrado = function(visible){
         //debugger;
         if(visible==true){
             var columnas;
             if(_widgetTabla==null){
                 // por el valueField "idVia" no me deja ordenar
                 _widgetTabla = dojo.widget.createWidget("dojo:FilteringTable",
                 {id:"miTabla", valueField: "idPois",alternateRows:"true"},_tabla);
             }    
             if(_estado==GEOPISTA.Busqueda.Pois.ESTADO_MUESTRA_POIS){
                 columnas = GEOPISTA.Busqueda.Pois.COLUMNAS_POIS;
             }else if(_estado==GEOPISTA.Busqueda.Pois.ESTADO_BUSQUEDA_FINALIZADA){
                 columnas = GEOPISTA.Busqueda.COLUMNAS_BUSQUEDA_FINALIZADA;
             }
             // sea cual sea la estructura de la tabla la reconstruimos
             for (var i = 0; i<columnas.length; i++) {
                 _widgetTabla.columns.push(_widgetTabla.createMetaData(columnas[i]));
             }
             _widgetTabla.show();
         }else{
             if(_widgetTabla!=null){
                 _widgetTabla.hide();
                 _widgetTabla.store.clearData();
                 var table = document.getElementById("tablaBusqueda");
                 for(var i=0; i<table.childNodes.length; i++){
                     var child = table.childNodes[i];
                     //debugger;
                     if(child.tagName=="THEAD"){
                         table.removeChild(child);
                     }
                 }
                 // limpiamos las columnas del widget
                 _widgetTabla.columns = [];
                 // le adjuntamos la cabecera
                 var thead = document.createElement("thead");
                 table.appendChild(thead);
             }
         }
         dojo.event.kwConnect({srcObj: _widgetTabla, srcFunc:"onSelect", 
         adviceObj:_that, adviceFunc: "hazBusqueda", once:true});
     }
     
     
     barraProgreso = function(visible){
         if(!_IE6){
             if(visible==true){
                 if(_widgetBarraProgreso==null){
                     _widgetBarraProgreso = dojo.widget.createWidget("dojo:ProgressBar", {hasText: false, id:"barraProgresoBusquedas"}, _capaBarraProgreso);
                     _widgetBarraProgreso.domNode.style.backgroundColor="#FFFFFF";
                     _widgetBarraProgreso.domNode.style.height="15px";
                     _widgetBarraProgreso.domNode.style.position = "absolute";
                     _widgetBarraProgreso.domNode.style.width = (parseInt(_capaFloatingPane.style.width)/2)+"px";
                     _widgetBarraProgreso.domNode.style.top = ((parseInt(_capaFloatingPane.style.height)-15)/2)+"px";
                     _widgetBarraProgreso.domNode.style.left = (parseInt(_capaFloatingPane.style.width)/4)+"px"; 
                 }else{
                     _widgetBarraProgreso.show();
                 }
                 _widgetBarraProgreso.startAnimation();
             }else{
                 _widgetBarraProgreso.stopAnimation();
                 _widgetBarraProgreso.hide();
             }
         }
     }
     
     this.buscaPois = function(){
         // peticion Ejemplo:  "http://192.168.10.245:8080/visor/busqueda?tipo=vias&idMunicipio=22112";
         var urlPet = GEOPISTA.Busqueda.URL_BASE_PETICION + GEOPISTA.Busqueda.Pois.PARAM_TIPO_BUSQUEDA_POIS
         + GEOPISTA.Busqueda.PARAM_ID_MUNICIPIO;
         
         // tomamos los valores de los criterios de búsqueda del formulario:
         _nombrePois= _txtPois.value;
         if(_nombrePois!=""){
             //urlPet += GEOPISTA.Busqueda.Pois.PARAM_NOMBRE_POIS+escape(_nombrePois);//Utf8.encode(_nombrePois));
             // queremos que el resultado sea en formato JSON
             urlPet+=GEOPISTA.Busqueda.PARAM_FORMATO_JSON;
             tablaFiltrado(false);
             barraProgreso(true);
             //alert(urlPet);
             // realizamos la petición
             dojo.io.bind({
                 // url: "http://192.168.10.245:8080/visor/busqueda?tipo=vias&idMunicipio=4016&formato=json",
                 url: urlPet,
                 content: { "nombrePois": _nombrePois},
                 encoding: "utf8",
                 // función que se ejecutará cuando se hayan cargado los datos
                 load: function(type, data, evt){ 
                     //debugger;
                     // decodificamos el resultado
                     // el propio tratarResultados tiene que saber en qué estado me quedo tras la petición
                     var resultadoTratado = tratarResultados(data);
                     barraProgreso(false);
                     // si solo hemos tenido un resultado es que es un número de policía:
                     if(_estado==GEOPISTA.Busqueda.Pois.ESTADO_IR_A_POIS){
                         _objetoSeleccionado = resultadoTratado.datosJSON.consulta[0];
                         //actualizaCamposParaLaChincheta();
                         irAPois();
                     }else{    
                         tablaFiltrado(true);
                         _widgetTabla.store.setData(resultadoTratado.datosJSON.consulta);
                     }
                     
                     //console.log(resultadoTratado.datosJSON.resultado);
                     // no hay resultados
                     //_widgetTabla.store.setData(resultadoTratado.datosJSON.resultado);
                 },
                 // Función manejadora de errores
                 error: function(type, error){ 
                     if((type!="unknown")||(type!="error")){
                         //debugger;
                         alert("error, no se pudo conectar con el servidor: solicitado:");
                         _estado = GEOPISTA.Busqueda.Pois.ESTADO_BUSQUEDA_FINALIZADA;
                     }
                 },
                 method: "POST",
                 // Tipo de datos que recibiremos
                 mimetype: "text/plain"         
             });
             _estado = GEOPISTA.Busqueda.Pois.ESTADO_CARGANDO;     
         }else{
             alert("Por favor, inserte el nombre del punto de interés que desea buscar");
         }
     }
     
     tratarResultados = function(datos){
         var resultadoTratado = new Object();
         //var datosEscapados = unescape(datos);
         var datosTratados = unescape(datos);
         try{
             //var datosDecodificados = Utf8.decode(datosEscapados);
             //if(datosDecodificados!=""){
             if(datosTratados!=""){
                 // puede lanzar una excepcion si se recibe algun caracter no valido
                 // por parte del servidor
                 resultadoTratado.datosJSON = datosTratados.parseJSON();
                 resultadoTratado.datosJSON.estadoConsulta = resultadoTratado.datosJSON.estadoConsulta.parseJSON();
                 // ha ido todo bien
                 if(resultadoTratado.datosJSON.estadoConsulta.estado==GEOPISTA.Busqueda.RESULTADO_PETICION_OK){
                     resultadoTratado.datosJSON.consulta = resultadoTratado.datosJSON.consulta.parseJSON();
                     // si ha habido un resultado
                     if(resultadoTratado.datosJSON.consulta[0]!=null){
                         if(resultadoTratado.datosJSON.consulta.length>1){
                             _estado = GEOPISTA.Busqueda.Pois.ESTADO_MUESTRA_POIS;
                         }else{
                             _estado = GEOPISTA.Busqueda.Pois.ESTADO_IR_A_POIS;
                         }
                         // sin resultados
                     }else{
                         //resultadoTratado.completada = true;
                         _estado = GEOPISTA.Busqueda.Pois.ESTADO_BUSQUEDA_FINALIZADA;
                         resultadoTratado.datosJSON.consulta = [];
                         resultadoTratado.estadoFuturo = GEOPISTA.Busqueda.Pois.ESTADO_BUSQUEDA_FINALIZADA;
                     }
                     // ha habido un error, el servidor nos lo dice
                 }else if(resultadoTratado.datosJSON.estadoConsulta.estado==GEOPISTA.Busqueda.RESULTADO_PETICION_ERROR){
                     //resultadoTratado.completada = true;
                     _estado = GEOPISTA.Busqueda.Pois.ESTADO_BUSQUEDA_FINALIZADA;
                     //var mensaje = "Ha sucedido un error en la busqueda:"+resultadoTratado.datosJSON.estadoConsulta.mensaje;
                     //resultadoTratado.datosJSON.consulta = mensaje;//GEOPISTA.Busqueda.RESULTADO_BUSQUEDA_SIN_RESULTADOS;
                     resultadoTratado.datosJSON.consulta = GEOPISTA.Busqueda.RESULTADO_BUSQUEDA_SIN_RESULTADOS;
                     resultadoTratado.estadoFuturo = GEOPISTA.Busqueda.Pois.ESTADO_BUSQUEDA_FINALIZADA;
                 }
             }else{
                 // devolvemos un resultado por defecto cuando el servidor da ""
                 resultadoTratado.datosJSON = new Object();
                 resultadoTratado.datosJSON.consulta = GEOPISTA.Busqueda.RESULTADO_BUSQUEDA_SIN_RESULTADOS;
                 resultadoTratado.estadoFuturo = GEOPISTA.Busqueda.Pois.ESTADO_BUSQUEDA_FINALIZADA;
                 _estado = GEOPISTA.Busqueda.Pois.ESTADO_BUSQUEDA_FINALIZADA;
             }
         }catch(err){
             resultadoTratado.datosJSON = new Object();
             resultadoTratado.datosJSON.consulta = GEOPISTA.Busqueda.RESULTADO_ERROR_EN_LA_CADENA_RECIBIDA;
             resultadoTratado.estadoFuturo = GEOPISTA.Busqueda.Pois.ESTADO_BUSQUEDA_FINALIZADA;
             _estado = GEOPISTA.Busqueda.Pois.ESTADO_BUSQUEDA_FINALIZADA;
         }
         return resultadoTratado;   
     }
     
     irAPois = function(){
         _estado = GEOPISTA.Busqueda.Pois.ESTADO_BUSQUEDA_FINALIZADA;
         var utmX = (_objetoSeleccionado.xMinEntero + _objetoSeleccionado.xMinDecimal);
         var utmY = (_objetoSeleccionado.yMinEntero + _objetoSeleccionado.yMinDecimal);
         var tipoChincheta = GEOPISTA.Operacion.CHINCHETA_POIS;
         
         var chincheta = new GEOPISTA.Operacion.Chincheta(tipoChincheta);
         chincheta.utmX=utmX;
         chincheta.utmY=utmY;
         _interactuadorConUsuario.posicionarseSobreCoordenadas(chincheta);
     }
}    

