// refraichissement de la liste de resultats
function refreshBudget(options) {
	var v = $('#budget').val();
	var val = parseInt(v) | 0;
	var current = parseInt(currentBudget) | 0;
	if(val == current)
		return;
	if(val >= minBudget
			|| (current >= minBudget && val <= minBudget)) {
		refreshResults();
	}
	currentBudget = v;
}

// rafraichissement des resultats
function refreshResults() {
	var o = $('#mainContent');
	o.addClass('loading');
	var href = $("#fSearch").attr('action');
	$.ajax({
		dataType: 'json',
		url: href,
		data: {
			lieuid: $('#lieuid').val(),
			lieu: $('#lieu').val(),
			maison: $('#typologieM').is(':checked'),
			appart: $('#typologieA').is(':checked'),
			studio: $('#pieces1').is(':checked'),
			p2: $('#pieces2').is(':checked'),
			p3: $('#pieces3').is(':checked'),
			p4: $('#pieces4').is(':checked'),
			p5: $('#pieces5').is(':checked'),
			budget: $('#budget').val(),
			balcon: $('#obalcon').is(':checked'),
			terrasse: $('#oterrasse').is(':checked'),
			jardin: $('#ojardin').is(':checked'),
			dernieretage: $('#odernieretage').is(':checked'),
			fragment: 'results'
		},
		success: function(data) {

			// Mise a jour des resultats
			o.html(data.html);
			refreshBehaviour();
			o.removeClass('loading');
			
			// Mise a jour de la carte
			setTimeout(function(){
				searchMapUpdate(data.ids_programmes,
					data.lieu ? data.lieu.latitude : false,
					data.lieu ? data.lieu.longitude : false
				);
			},100);
		}
	});
}

// Remplace le contenu HTML de l'objet o avec la contenu charge a l'adresse href
// Le parametre fragment est ajoute a l'url
// Le parametre callback, s'il est fourni et de type fonction, est appele apres execution
function replaceDatas(o,href,fragment,callback) {
	o.addClass('loading');
	$.ajax({
		dataType: 'html',
		url: href,
		data: {
			fragment: fragment
		},
		success: function(data) {
			o.removeClass('loading').html(data);
			if(typeof callback == "function")
				callback();
		}
	});
}

function refreshBehaviour() {
	pagination();
	cleTri();
	refreshSiteBehaviour('results');
}

// Surcharge du comportement de la pagination
function pagination() {
	// pagination
	$(".pagination a").each(function() {
		var href = $(this).attr('href');
		$(this).attr('href','#mainContent');
		$(this).click(function(event){
			$('#results').addClass('loading');
			replaceDatas($('#resultsContainer'),href,'page',refreshBehaviour);
		});
	});
}

// Surcharge du comportement de tri des resultats
function cleTri() {
	$('#cleTri').change(function(event){
		$('#results').addClass('loading');
		var href = $(this).val();
		replaceDatas($('#resultsContainer'),href,'order',refreshBehaviour);
		// retour a la page 1
		$(".pagination a").removeClass('selected');
		$(".pagination a:first").addClass('selected');
		$(this).blur();
		return false;
	});
}

// Budget courrant
var currentBudget = "";

// Budget minimum significatif
var minBudget = 40000;

$(document).ready(function() {
	
	// initialisation
	currentBudget = $('#budget').val();
	pagination();
	cleTri();

	// submit du formulaire
	$('#fSearch').submit(function(){
		return false;	//@TODO : verifications ?
	})

	// comptage sur les clics des checkbox
	.find("INPUT[type='checkbox']").click(function(event){
		refreshResults();
	});

	// change sur le budget
	$('#budget').numeric(null,null,function(){setTimeout('refreshBudget()',10);});

	// autocomplete du lieu
	$('#lieu').autocomplete('/utils/getLieux.php',{
		minChars: 1,
		dataType: "json",
		delay:100,
		parse: function(data) {
			return $.map(data, function(row) {
				return {
					data: row,
					value: row.code,
					result: row.text
				};
			});
		},
		formatItem: function(item) {
			return item.text;
		},
		change: function(value){
			var val = $('#lieuid').val();
			if(val != "" && value == "") {
				$('#lieuid').val('');
				refreshResults();
			}
		}
	})
	.result(function(event,data,formatted){
		$('#lieuid').val(formatted);
		refreshResults();
	});
});