var HCS = {
 _nb_offres: 0,
 
 // ---------------------------------------------------------------------
 clearResults: function() {
        $('#resultats_recherche').html('');
    },

 // ---------------------------------------------------------------------
 getMapSrcFor: function(id_region) {
        return HCS._default_map_src.replace(/(_)([a-z]{2})(\.jpg)$/, '$1' + id_region.toLowerCase() +'$3');
    },

 // ---------------------------------------------------------------------
 setButtonLabel: function(label) {
        $("#hc_search").html(label);
    },

 // ---------------------------------------------------------------------
 setIdRegion: function(id_region) {
        $("#hc_id_region").val(id_region);
        HCS._default_map_src = HCS._map.src = HCS.getMapSrcFor(id_region);
    },

 // ---------------------------------------------------------------------
 getIdRegion: function() {
        return $("#hc_id_region").val();
    },

 // ---------------------------------------------------------------------
 needsRegion: function() {
        return HCS.getIdRegion() == "";
    },

 // ---------------------------------------------------------------------
 getIdDepts: function() {
        return $('div#select_departements input:checkbox').fieldSerialize();
    },
 
 // ---------------------------------------------------------------------
 needsDept: function() {
        return HCS.getIdDepts() == "";
    },

 // ---------------------------------------------------------------------
 getIdMetier: function() {
        var hc_metier = document.getElementById('hc_id_metier');    
        return hc_metier.selectedIndex;
    },

 // ---------------------------------------------------------------------
 needsMetier: function() {
        return HCS.getIdMetier() == 0;
    },
 
 // ---------------------------------------------------------------------
 canSearch: function() {
        if (HCS.needsRegion() || HCS.needsDept() || HCS.needsMetier()) {
            return false;
        }
        //return HCS._nb_offres > 0;
        return true;
    },

 // ---------------------------------------------------------------------
 setFormState: function() {
        // console.log('BEGIN setFormState');
        var button = document.getElementById('hc_search');
        var selectMetier = document.getElementById('hc_id_metier');
        
        if (HCS.canSearch()) {
            // console.log("can search");
            selectMetier.disabled=false;
            var nb_offres = HCS._nb_offres;
            if (nb_offres == 1) {
                HCS.setButtonLabel("Voir l'offre");
                button.disabled=false;
            }
            else if (nb_offres > 1) {
                HCS.setButtonLabel("Voir les " + nb_offres + " offres");
                button.disabled=false;
            }
            else {
                HCS.setButtonLabel("Aucune offre pour ce profil");
                button.disabled=true;
            }
        }
        else if (HCS.needsRegion()) {
            // console.log("needs region");
            selectMetier.disabled=true;
            button.disabled=true;
            HCS.setButtonLabel("Sélectionnez une région");
        }

        else if (HCS.needsDept()) {
            // console.log("needs dept");
            selectMetier.disabled=true;
            button.disabled=true;
            HCS.setButtonLabel("Sélectionnez un département");
        }

        else if (HCS.needsMetier()) {
            // console.log("needs metier");
            selectMetier.disabled=false;
            button.disabled=true;
            HCS.setButtonLabel("Sélectionnez un profil");
        }
        else {
            // console.log("look for offers");
            HCS.updateCompteurOffres();
        }
        // console.log('END setFormState');
    },
 
 // ---------------------------------------------------------------------
 onRegionMouseover: function(evt) {
        var id_region = this.search.match(/id_region=([A-Z]{2})/)[1];
        // or : this.id.replace(/hc_map_([A-Z]+)/, '$1')
        HCS._map.src = HCS.getMapSrcFor(id_region); 
    },

 // ---------------------------------------------------------------------
 onRegionMouseout: function(evt) {
        HCS._map.src = HCS._default_map_src; 
    },

 // ---------------------------------------------------------------------
 onRegionSelected : function(evt) {
        var id_region = this.search.match(/id_region=([A-Z]{2})/)[1];
        // or : this.id.replace(/hc_map_([A-Z]+)/, '$1')
        if (HCS.getIdRegion() != id_region) {
            HCS.updateDepartements(id_region,'checkbox');
        }
        return false;
    },
 
 // ---------------------------------------------------------------------
 // mise a jour liste des departements par région
 // ---------------------------------------------------------------------
 updateDepartements: function(id_region,type_display) {
        HCS.setButtonLabel("Sélectionnez un département");
        HCS.setIdRegion(id_region);
        
        // on demande la liste des departements et on met à jour
        if(type_display == 'checkbox'){
                var params = {
                    action:'wsb_fragment',
                    wsb_fid:'fonds/hc_select_checkbox_departement', 
                    id_region:id_region
                };        
        }
        else{
                var params = {
                    action:'wsb_fragment',
                    wsb_fid:'fonds/hc_select_departement', 
                    id_region:id_region
                };        
        }
        $('#select_departements').slideUp('slow', function() {        
                $.get('spip.php', params, HCS.onDepartementsLoaded);
            });
    },
 
 // ---------------------------------------------------------------------
 onDepartementsLoaded: function(data) {
        var $selDepts = $('#select_departements');
        $("input:checkbox", $selDepts).unbind('click');
        $selDepts.html(data);
        $("input:checkbox", $selDepts).click(HCS.onDepartementClick);
        $selDepts.slideDown('slow', function() {
                HCS.clearResults();
                HCS.setFormState();
            });
    },
 
 // ---------------------------------------------------------------------
 onDepartementClick: function() {
        HCS.clearResults();
        HCS.updateCompteurOffres();
        //HCS.setFormState();
    },
 
 // ---------------------------------------------------------------------
 updateCompteurOffres: function() {
        // console.log('BEGIN updateCompteurOffres');
        HCS._nb_offres = 0;
        
        // sinon on n'a pas l'id_metier
        document.getElementById('hc_id_metier').disabled=false;

        var params = $('#form_recherche_zone').formSerialize();    
        // console.log("params : '" + params + "'");

        params = "action=hc_compteroffres&" + params.replace(/page=[a-zA-Z_]+\&/, '');
        params += "&random=" + new Date().getTime();
        $.getJSON('spip.php', params, HCS.onCompteurOffresLoaded);
        // console.log('END updateCompteurOffres');
    },
 
 // ---------------------------------------------------------------------
 onCompteurOffresLoaded: function(json) {
        var res = json['nb_offres'];
        // console.log("nb offres : " + res);
        HCS._nb_offres = parseInt(res, 10);
        HCS.setFormState();
    },


 // ---------------------------------------------------------------------
 init: function() {
        //console.log('BEGIN init');
        var $form = $('#form_recherche_zone');
        
        // le image_map
        HCS._map = document.getElementById("hc_map_img");
        HCS._default_map_src = HCS._map.src;
        
        // events handlers:
        $('area.select_region', $form)
            .click(HCS.onRegionSelected)
            .mouseover(HCS.onRegionMouseover)
            .mouseout(HCS.onRegionMouseout)
        ;        
        $('#hc_id_metier', $form).change(HCS.updateCompteurOffres);
        //$('#hc_id_metier', $form).change(HCS.setFormState);
        
        // si on est appelé avec un id_region
        var qs = $.urls.parseQueryString(window.location.search);
        if (qs['id_region']) {
            $("#select_departements input:checkbox").click(HCS.onDepartementClick);
        }        
        HCS.updateCompteurOffres();
        //console.log('END init');
    },
 

 // frailing commas :(
 __nada : null
};

$(document).ready(HCS.init);


