function Comportamiento(){
    
    var self                      = this

      , input_tipo_busqueda_0     = $('BusquedaTipoBusqueda0')
      , input_tipo_busqueda_1     = $('BusquedaTipoBusqueda1')
      , input_tipo_busqueda_2     = $('BusquedaTipoBusqueda2')

      , apartado_escuela          = $('apartado_escuela')
      , apartado_ubicacion        = $('apartado_ubicacion')
      , apartado_zona             = $('apartado_zona')
      , apartado_filtros          = $('apartado_filtros')

      , conjunto_filtro_matematicas             = $('conjunto_filtro_matematicas')
      , conjunto_filtro_espaniol                = $('conjunto_filtro_espaniol')
      , conjunto_filtro_calificacion_visitantes = $('conjunto_filtro_calificacion_visitantes')

      , input_filtro_matematicas             = $('BusquedaFiltroMatematicas')
      , input_filtro_espaniol                = $('BusquedaFiltroEspaniol')
      , input_filtro_calificacion_visitantes = $('BusquedaFiltroCalificacionVisitantes')
      
      , input_escuela_entidad     = $('BusquedaEscuelaEntidad')
      , input_escuela_municipio   = $('BusquedaEscuelaMunicipio')
      , input_escuela_localidad   = $('BusquedaEscuelaLocalidad')

      , input_ubicacion_entidad   = $('BusquedaUbicacionEntidad')
      , input_ubicacion_municipio = $('BusquedaUbicacionMunicipio')
      // , input_ubicacion_localidad = $('BusquedaUbicacionLocalidad')

      , input_zona_entidad        = $('BusquedaZonaEntidad')
      , input_zona_municipio      = $('BusquedaZonaMunicipio')
      , input_zona_localidad      = $('BusquedaZonaLocalidad')

      , input_escuela_nombre      = $('BusquedaEscuelaNombre')
      , input_ubicacion_domicilio = $('BusquedaUbicacionDomicilio')

      , conjunto_escuela_localidad = $('conjunto_escuela_localidad')
      , conjunto_zona_localidad    = $('conjunto_zona_localidad')
      , conjunto_enviar            = $('conjunto_enviar')

      , controles                 = []
      ;

    function quitarOpciones(_select){
        var e=_select.childElements();
        e.each(
            function (i){
                i.remove();
            }
            );
    }

    function agregarOpciones(_select,_opciones){

        // // opción "nada"
        // var o= new Element('option',{'value':''});
        // o.insert('--');
        // _select.insert(o);
        // 
        // // opción "cualquiera"
        // o= new Element('option',{'value':'-1'});
        // o.insert('-TODOS-');
        // _select.insert(o);

        //opciones pasadas
        for (var i in _opciones){
            var o= new Element('option',{'value':i});
            o.insert(_opciones[i]);
            _select.insert(o);
        }
    }

    function cargarMunicipios(_entidad_id,_success){
        r= new Ajax.Request(webroot+'busquedas/obtenerMunicipios/'+_entidad_id
                           ,{onSuccess:_success}
                           );
    }

    function cargarLocalidades(_entidad_id,_localidad_id,_success){
        r= new Ajax.Request(webroot+'busquedas/obtenerLocalidades/'+_entidad_id +'/'+_localidad_id
                           ,{onSuccess:_success}
                           );
    }

    this.init=
    function (){
        // Inicia la forma de búsqueda a su despliegue inicial
        apartado_ubicacion.hide();
        apartado_zona.hide();
        apartado_filtros.show();
        conjunto_escuela_localidad.hide();
        conjunto_zona_localidad.hide();
        conjunto_enviar.hide();
        
        
        // Acciones para el selector de tipo de búsqueda
        ////////////////////////////////////////////////
        Event.observe(
             input_tipo_busqueda_0
            ,'change'
            ,function (){
                // alert('cambió 0');
                apartado_escuela.show();
                apartado_ubicacion.hide();
                apartado_zona.hide();
                apartado_filtros.show();
                if ( input_escuela_nombre.value=='' )
                   conjunto_enviar.hide();
                else conjunto_enviar.show();
                conjunto_filtro_matematicas.show();
                conjunto_filtro_espaniol.show()
                conjunto_filtro_calificacion_visitantes.show()

            }
            );
        Event.observe(
             input_tipo_busqueda_1
            ,'change'
            ,function (){
                // alert('cambió 1');
                apartado_escuela.hide();
                apartado_ubicacion.show();
                apartado_zona.hide();
                apartado_filtros.show();
                if ( input_ubicacion_domicilio.value=='' )
                   conjunto_enviar.hide();
                else conjunto_enviar.show();
                conjunto_filtro_matematicas.show();
                conjunto_filtro_espaniol.show()
                conjunto_filtro_calificacion_visitantes.show()
                
            }
            );
        Event.observe(
             input_tipo_busqueda_2
            ,'change'
            ,function (){
                // alert('cambió 2');
                apartado_escuela.hide();
                apartado_ubicacion.hide();
                apartado_zona.show();
                apartado_filtros.show();
                conjunto_enviar.show();
                conjunto_filtro_matematicas.hide();
                conjunto_filtro_espaniol.hide();
                conjunto_filtro_calificacion_visitantes.hide();
                input_filtro_matematicas.value='';
                input_filtro_espaniol.value='';                
                input_filtro_calificacion_visitantes.value='';
                
                
            }
            );

        // Acciones para la búsqueda por nombre
        ///////////////////////////////////////
        // Elección de entidad
        Event.observe(
             input_escuela_entidad
            ,'change'
            ,function (e){
                cargarMunicipios(input_escuela_entidad.value
                                ,function (t) {
                                     if (t.responseText){
                                         var r;
                                         eval("r="+t.responseText);
                                         r[0]= 'Cualquiera';
                                         quitarOpciones(input_escuela_municipio);
                                         agregarOpciones(input_escuela_municipio,r);
                                         input_escuela_municipio.value=0;
                                         conjunto_escuela_localidad.hide();
                                     }
                                    
                                }
                                )
            }
            );
        // Elección de municipio
        Event.observe(
             input_escuela_municipio
            ,'change'
            ,function (e){
                if ( input_escuela_municipio.value=='0'){
                    conjunto_escuela_localidad.hide();
                }
                else {
                    cargarLocalidades(input_escuela_entidad.value
                                     ,input_escuela_municipio.value
                                     ,function (t) {
                                          if (t.responseText){
                                              var r;
                                              eval("r="+t.responseText);
                                              r[0]= 'Cualquiera';
                                              quitarOpciones(input_escuela_localidad);
                                              agregarOpciones(input_escuela_localidad,r);
                                              input_escuela_localidad.value=0;
                                              conjunto_escuela_localidad.show();
                                          }
                                    
                                    }
                                    );
                }
            }
            );
        Event.observe(
             input_escuela_nombre
            ,'keyup'
            ,function (e){
                if ( input_escuela_nombre.value=='' )
                   conjunto_enviar.hide();
                else conjunto_enviar.show();
            }
            );

        // Acciones para la búsqueda por ubicación
        //////////////////////////////////////////
        // Elección de entidad
        Event.observe(
             input_ubicacion_entidad
            ,'change'
            ,function (e){
                cargarMunicipios(input_ubicacion_entidad.value
                                ,function (t) {
                                     if (t.responseText){
                                         var r;
                                         eval("r="+t.responseText);
                                         r[0]= 'Cualquiera';
                                         quitarOpciones(input_ubicacion_municipio);
                                         agregarOpciones(input_ubicacion_municipio,r);
                                         input_ubicacion_municipio.value=0;
                                         // conjunto_ubicacion_localidad.hide();
                                     }
                                    
                                }
                                )
            }
            );

        Event.observe(
             input_ubicacion_domicilio
            ,'keyup'
            ,function (e){
                if ( input_ubicacion_domicilio.value=='' )
                   conjunto_enviar.hide();
                else conjunto_enviar.show();
            }
            );

        // Acciones para la búsqueda por nombre
        ///////////////////////////////////////
        // Elección de entidad
        Event.observe(
             input_zona_entidad
            ,'change'
            ,function (e){
                cargarMunicipios(input_zona_entidad.value
                                ,function (t) {
                                     if (t.responseText){
                                         var r;
                                         eval("r="+t.responseText);
                                         r[0]= 'Todos';
                                         quitarOpciones(input_zona_municipio);
                                         agregarOpciones(input_zona_municipio,r);
                                         input_zona_municipio.value=0;
                                         conjunto_zona_localidad.hide();
                                     }
                                }
                                )
            }
            );
        // Elección de municipio
        Event.observe(
             input_zona_municipio
            ,'change'
            ,function (e){
                if ( input_zona_municipio.value=='0'){
                    conjunto_zona_localidad.hide();
                }
                else {
                    cargarLocalidades(input_zona_entidad.value
                                     ,input_zona_municipio.value
                                     ,function (t) {
                                          if (t.responseText){
                                              var r;
                                              eval("r="+t.responseText);
                                              r[0]= 'Todas';
                                              quitarOpciones(input_zona_localidad);
                                              agregarOpciones(input_zona_localidad,r);
                                              input_zona_localidad.value=0;
                                              conjunto_zona_localidad.show();
                                          }
                                    
                                    }
                                    );
                }
            }
            );

    }
}