$(document).ready(function() {

    if($('select#fs_marque').val() == '')
        $('select#fs_modele').attr('disabled', 'disabled');

    $('#form_ts select#fs_carburant, #form_ts select#fs_boite, #form_ts select#fs_modele, #form_ts input[type=checkbox], #form_ts input#fs_tag').change(countResults);

    // Dynamisation des catégories / marques / modèles
    $('ul.categorie_list input[type=checkbox]').click(function() {
        // Chargement des marques associées à cette catégorie
        $.ajax({
            url: '/search/retrieve/data/marque/selectCat/'+retrieveSelectedCategories()+'/groups/true/select/true',
            type: "GET",
            success: function(data) {
                // On récupère la marque sélectionnée
                var selectMarque = $('select#fs_marque').val();
                // On affiche les marques récupérées dans le select dédié
                $('select#fs_marque').empty();
                $('select#fs_marque').append(data);
                $('select#fs_marque').attr('disabled', false);
                if(selectMarque != 0 && $('select#fs_marque option[value='+selectMarque+']').length == 1) {
                    $('select#fs_marque option[value='+selectMarque+']').attr('selected', 'selected');
                    // On provoque la changement de la marque pour faire les mises à jour sur la liste des modèles
                    $('select#fs_marque').change();
                } else {
                    // Si aucune marque n'est sélectionnée, on vide la liste des modèles, on rajoute le libellé par défaut et on la grise
                    $('select#fs_modele').empty();
                    $('select#fs_marque').children('option:first').clone().appendTo($('select#fs_modele'));
                    $('select#fs_modele').attr('disabled', true);
                }
            }
        });
    });

    // Sélection d'une marque
    $('select#fs_marque').change(function() {
        // Chargement des modèles associés à cette marque
        $.ajax({
            url: '/search/retrieve/data/modele/selectCat/'+retrieveSelectedCategories()+'/selectMarque/'+$(this).val()+'/groups/true/select/true',
            type: "GET",
            success: function(data) {
                // On affiche les modèles récupérés dans le select dédié
                $('select#fs_modele').empty();
                $('select#fs_modele').append(data);
                $('select#fs_modele').val(0);
                $('select#fs_modele').attr('disabled', false);
                countResults();
            }
        });
    });

    // Evenement click sur les champs texte avec contenu par defaut
    $('#fs_tag').click(function() {
        cleanDefaultValueOfField('tag')
    });

    $('#form_ts').submit(function() {
        cleanDefaultValueOfField('tag');
        return true;
    });

    $('#autocomplete_fs_ville').result(function(event, data, formatted) {
        
        if(!data) {
            if($('#autocomplete_fs_ville').val().length != 0) {
                alert("Veuillez saisir un code postal valide. Si celui-ci est correct, une liste s'affichera et vous pourrez sélectionner votre ville.");
            }
            $('#slider-fs_geo_distance').hide();
            $('#titre-geo').hide();
            $('#descPerimetre').show();
        } else {
            countResults();
            $('#slider-fs_geo_distance').show();
            $('#titre-geo').show();
            $('#descPerimetre').hide();
        }

    });

    $('#autocomplete_fs_ville').result(function(event, data, formatted) {
        //alert("Veuillez saisir un code postal valide. Si celui-ci est correct, une liste s'affichera et vous pourrez sélectionner votre ville.");
        }).blur(function(){
        $(this).search();
    });

    $('#autocomplete_fs_ville').change(function() {
        
        // On compte le nombre de caracteres
        if($('#autocomplete_fs_ville').val().length == 0) {
            // si == 0 alors on vide le champ ville du form
            $('#fs_ville').val('');

            countResults();
        }
    });
});

var countResults = function() {

    cleanDefaultValueOfField('tag');
    
    $.ajax({
        type: "POST",
        url: $('#form_ts').attr('action'),
        data: $('#form_ts').serialize(),
        success: function(data) {
            showresult(data);
        }
    });

    setDefaultValueOfField('tag');

    return false;
}

var cleanDefaultValueOfField = function(name) {
    if($('#fs_'+name).val() == $('#default_'+name).html()) $('#fs_'+name).val("");
}

var setDefaultValueOfField = function(name) {
    if($('#fs_'+name).val() == "") $('#fs_'+name).val($('#default_'+name).html());
}

var retrieveSelectedCategories = function() {
    // Construction de la liste des ids des catégories sélectionnées
    var ids = '';
    $('ul.categorie_list input[type=checkbox]:checked').each(function(index) {
        ids += $(this).val();
        if(index < $('ul.categorie_list input[type=checkbox]:checked').length-1)
            ids += ',';
    });
    // Si aucune catégorie n'est sélectionnée, on les sélectionne toutes
    if(ids == '') {
        $('ul.categorie_list input[type=checkbox]').each(function(index) {
            ids += $(this).val();
            if(index < $('ul.categorie_list input[type=checkbox]').length-1)
                ids += ',';
        });
    }
    return ids;
}
