$(document).ready(function() {
	
	// ########## Sélection d'une catégorie
	$('#homeSearchForm #moteur_categorie').change(function() {
		// On récupère la marque sélectionnée
		selectMarque =  ($('#homeSearchForm #marque').val() != '')? $('#homeSearchForm #moteur_marque').val() : 0;
		// Mise à jour des marques
		$.ajax({
			type: "POST",
			url: "/retrieveMarques/"+$(this).val(),
			dataType: 'json',
			success: function(data) {
				// On récupère le libellé de la première option
				lib = $('#homeSearchForm #moteur_marque option:first').html();
				// On vide la liste
				$('#homeSearchForm #moteur_marque').empty();
				// On ajoute le libellé déjà existant
				$('#homeSearchForm #moteur_marque').append('<option>'+lib+'</option>');
				// On ajoute toutes les marques récupérées
				for(i in data.marques) {
					$('#homeSearchForm #moteur_marque').append('<option value="'+data.marques[i].id+'">'+data.marques[i].name+'</option>');
				}
				// On resélectionne la marque précedemment sélectionnée si elle est toujours dans la liste
				$('#homeSearchForm #moteur_marque').val(0);
				$('#homeSearchForm #moteur_marque').val(selectMarque);
			}
		});
		
		// Mise à jour des modèles
		$.ajax({
			type: "POST",
			url: "/retrieveModeles/"+$(this).val()+'/'+selectMarque,
			dataType: 'json',
			success: function(data){
				// On récupère le libellé de la première option
				lib = $('#homeSearchForm #moteur_modele option:first').html();
				// On récupère l'option sélectionnée
				selectModele =  $('#homeSearchForm #moteur_modele').val();
				// On vide la liste
				$('#homeSearchForm #moteur_modele').empty();
				// On ajoute le libellé déjà existant
				$('#homeSearchForm #moteur_modele').append('<option>'+lib+'</option>');
				// On ajoute tous les modèles récupérés
				for(i in data.modeles) {
					$('#homeSearchForm #moteur_modele').append('<option value="'+data.modeles[i].id+'">'+data.modeles[i].name+'</option>');
				}
				// On resélectionne la marque précedemment sélectionnée si elle est toujours dans la liste
				$('#homeSearchForm #moteur_modele').val(0);
				$('#homeSearchForm #moteur_modele').val(selectModele);
			}
		});
	});
	
	// ########## Sélection d'une marque
	$('#homeSearchForm #moteur_marque').change(function() {
		// On récupère la catégorie sélectionnée
		selectCat =  ($('#homeSearchForm #moteur_categorie').val() != '')? $('#homeSearchForm #moteur_categorie').val() : 0;
		// Mise à jour des modèles
		$.ajax({
			type: "POST",
			url: "/retrieveModeles/"+selectCat+"/"+$(this).val(),
			dataType: 'json',
			success: function(data){
				// On récupère le libellé de la première option
				lib = $('#homeSearchForm #moteur_modele option:first').html();
				// On récupère l'option sélectionnée
				selectModele =  $('#homeSearchForm #moteur_modele').val();
				// On vide la liste
				$('#homeSearchForm #moteur_modele').empty();
				// On ajoute le libellé déjà existant
				$('#homeSearchForm #moteur_modele').append('<option>'+lib+'</option>');
				// On ajoute tous les modèles récupérés
				for(i in data.modeles) {
					$('#homeSearchForm #moteur_modele').append('<option value="'+data.modeles[i].id+'">'+data.modeles[i].name+'</option>');
				}
				// On resélectionne la marque précedemment sélectionnée si elle est toujours dans la liste
				$('#homeSearchForm #moteur_modele').val(0);
				$('#homeSearchForm #moteur_modele').val(selectModele);
			}
		});
	});
	
	// ##############################################################################
	// ############									SLIDER
	// ##############################################################################

	// Bornes minimums / maximums
	var prixMiniBase = parseInt($('span#prixMiniBase').text());
	var prixMaxiBase = parseInt($('span#prixMaxiBase').text());
	var consoMiniBase = parseInt($('span#consoMiniBase').text());
	var consoMaxiBase = parseInt($('span#consoMaxiBase').text());
	var kmMiniBase = parseInt($('span#kmMiniBase').text());
	var kmMaxiBase = parseInt($('span#kmMaxiBase').text());
	// Valeurs de départ
	var prixMiniStart = parseInt($('input#moteur_prixMini').val());
	var prixMaxiStart = parseInt($('input#moteur_prixMaxi').val());
	var consoMiniStart = parseInt($('input#moteur_consoMini').val());
	var consoMaxiStart = parseInt($('input#moteur_consoMaxi').val());
	var kmMiniStart = parseInt($('input#moteur_kmMini').val());
	var kmMaxiStart = parseInt($('input#moteur_kmMaxi').val());

	// Préremplissage des spans d'affichage
	$("#homeSearchPrixMiniLib").text(prixMiniStart);
	$("#homeSearchPrixMaxiLib").text(prixMaxiStart);
	$("#homeSearchConsommationMiniLib").text(consoMiniStart);
	$("#homeSearchConsommationMaxiLib").text(consoMaxiStart);
	$("#homeSearchKmMiniLib").text(kmMiniStart);
	$("#homeSearchKmMaxiLib").text(kmMaxiStart);
	// Préremplissage des inputs
	$('input#moteur_prixMini').val(prixMiniStart);
	$('input#moteur_prixMaxi').val(prixMaxiStart);
	$('input#moteur_consoMini').val(consoMiniStart);
	$('input#moteur_consoMaxi').val(consoMaxiStart);
	$('input#moteur_kmMini').val(kmMiniStart);
	$('input#moteur_kmMaxi').val(kmMaxiStart);
	
	// Déclaration des sliders
	$("#slider-range-euro").slider({
		range: true,
		step: 1000,
		min: prixMiniBase,
		max: prixMaxiBase,
		values: [prixMiniStart, prixMaxiStart],
		slide: function(event, ui) {
			minVal = ui.values[0];
			maxVal = ui.values[1]
			// Libellés
			if(minVal != 0 && minVal == prixMiniBase)
				$("#homeSearchPrixMiniLib").text(minVal+'+');
			else
				$("#homeSearchPrixMiniLib").text(minVal);
			if(maxVal != 0 && maxVal == prixMaxiBase)
				$("#homeSearchPrixMaxiLib").text(maxVal+'+');
			else
				$("#homeSearchPrixMaxiLib").text(maxVal);
			// Inputs
			$('input#moteur_prixMini').val(minVal);
			$('input#moteur_prixMaxi').val(maxVal);
		}
	});
	
	$("#slider-range-conso").slider({
		range: true,
		min: consoMiniBase,
		max: consoMaxiBase,
		values: [consoMiniStart, consoMaxiStart],
		slide: function(event, ui) {
			minVal = ui.values[0];
			maxVal = ui.values[1]
			// 	Libellés
			if(minVal != 0 && minVal == consoMiniBase)
				$("#homeSearchConsommationMiniLib").text(minVal+'-');
			else
				$("#homeSearchConsommationMiniLib").text(minVal);
			if(maxVal != 0 && maxVal == consoMaxiBase)
				$("#homeSearchConsommationMaxiLib").text(maxVal+'+');
			else
				$("#homeSearchConsommationMaxiLib").text(maxVal);
			// Inputs
			$('input#moteur_consoMini').val(minVal);
			$('input#moteur_consoMaxi').val(maxVal);
		}
	});
	
	$("#slider-range-km").slider({
		range: true,
		step: 5000,
		min: kmMiniBase,
		max: kmMaxiBase,
		values: [kmMiniStart, kmMaxiStart],
		slide: function(event, ui) {
			minVal = ui.values[0];
			maxVal = ui.values[1]
			// 	Libellés
   			if(minVal != 0 && minVal == kmMiniBase)
				$("#homeSearchKmMiniLib").text(minVal+'-');
			else
				$("#homeSearchKmMiniLib").text(minVal);
			if(maxVal != 0 && maxVal == kmMaxiBase)
				$("#homeSearchKmMaxiLib").text(maxVal+'+');
			else
				$("#homeSearchKmMaxiLib").text(maxVal);
			// Inputs
			$('input#moteur_kmMini').val(minVal);
			$('input#moteur_kmMaxi').val(maxVal);
		}
	});

});