//@depends functions.js (number_format)

//Limite maximum du slider (prix du bien le plus cher)
var maxSlider= null;

//Pas du slider
var pasSlider = null;

//Début de la poignée mini du slider (0 si pas de recherche, prixMin si recherche)
var sliderStart = null;

//Début de la poignée maxi du slider (maxSlider si pas de recherche, prixMax si recherche)
var sliderEnd = null;


function setPasSlider(val) {
    pasSlider=parseInt(val);
}

function setVarMaxSlider(val) {
    //+1 pour permettre l'affichage du prix max de la recherche car il y a une condition
    //ui.values[1] != maxSlider
    maxSlider=parseInt(val) + pasSlider+1;
}

function setVarSliderStart(val) {
    sliderStart = (val != "") ? parseInt(val) : 0;
}

function setVarSliderEnd(val) {
    //La fonction parseInt de php retourne 0 si la variable n'est pas un nbre, donc comparaison avec 0 et non pas avec ""
    sliderEnd = (val != 0) ? parseInt(val) : maxSlider;
}

function split(val) {
        return val.split( /,\s*/ );
}
function extractLast(term) {
        return split(term).pop();
}

$(document).ready(function() {
    
	$('#sliderPrix').slider({
            step: pasSlider,
            min: 0, 
            max: maxSlider,
            range: true,
            values : [sliderStart, sliderEnd],
            slide: function(e, ui) {
                //Dès que le slider bouge (grâce à la souris) => écriture des valeurs
                //dans les inputs des prix
                $("#prix_min").val(number_format(ui.values[0], 0, ',', ' '));

                //Si la valeur de la poignée max est égale au prix du bien le plus cher, je n'affiche
                //pas le prix max car ça signifie que l'utilisateur ne souhaite pas avoir une limite max de prix
                //Si prix max du bien est un multiple du pas du slider bug résolu avec le +1
                if(ui.values[1] != maxSlider) {
                    $("#prix_max").val(number_format(ui.values[1], 0, ',', ' '));
                }
                else {
                    $("#prix_max").val("");
                }
            }
	});
        
	//Dès que l'on lache une touche et qu'on à le focus sur les champs du prix => MAJ slider
	$("#prix_min, #prix_max").keyup(function() {
            var valeur = $(this).val();
            valeur = parseInt(valeur.replace(/ /g, ""));

            //Si l'id de l'input == prix_min alors on bouge le slider 0 sinon le 1
            indexSlider = ($(this).attr('id') == "prix_min") ? 0 : 1;

            //Positionne le slider à la nouvelle position
             $('#sliderPrix').slider( 'values' , indexSlider , valeur);
	});
        
        $("#villes").autocomplete({
            minLength: 1,
            delay: 50,
            source: function(request, response ) {
                //Isole le mot cherché (le dernier mot après la virgule)
                var motCherche = request.term.split(/,\s*/).pop();
                //Expression réulière pour mettre le terme chercher en gras
                var r = new RegExp('('+motCherche+')', 'gi');
                
                //Délègue la recherche au plugin puis pour chaque élément du tableau : 
                //affiche le label avec du gras et la valeur inchangée
                res = jQuery.map($.ui.autocomplete.filter(villes, motCherche), function(obj) {
                   return {
                            label: obj.replace(r, "<strong>$1</strong>"),
                            value: obj
                        }
                });
                response(res);
            },
            select: function(event, ui) {
                //Tableau des éléments recherchés ("," en séparateur)
                var terms = this.value.split(/,\s*/);
                //Suprime le dernier terme car c'est le mot en cours de frappe
                terms.pop();
                // Ajoute la sugestion sélectionnée par l'utilisateur
                terms.push( ui.item.value );
                // add placeholder to get the comma-and-space at the end
                terms.push("");
                this.value = terms.join(", ");
                return false;
            },
            focus: function(event, ui) {
               return false;
            }
        }).data( "autocomplete" )._renderItem = function(ul, item) {
            return $( "<li></li>" )
            .data( "item.autocomplete", item )
            .append("<a>" + item.label + "</a>")
            .appendTo( ul ); 
        }

	$('.aide').cluetip({splitTitle: '|', dropShadow: true});
});
