var last_type_selected = '';
var _globalType = null;
var _cacheNum = new Array();
var category_current = '';

function searchLoad() {

	FNAIM_Autocompletion('FNAIM_Input_Ville', 'ville_suggestions');
	initProximite();
	
	Event.observe(window, 'resize', onResizeHandler, false);
	Event.observe('search', 'submit', FNAIM_Search_FormSubmit, false);
}

function initResults() {

	var item = $('search');
	var inputs = item.getElementsByTagName('input');
	for(var i = 0; i < inputs.length; i++) {
		if(inputs[i].type == 'checkbox' || inputs[i].type == 'radio') {
			Event.observe(inputs[i], 'click', FNAIM_Search_Get_Results, false);
		}
		else {
			Event.observe(inputs[i], 'change', FNAIM_Search_Get_Results, false);
		}
	}

	var selects = item.getElementsByTagName('select');
	for(var i = 0; i < selects.length; i++) {
		Event.observe(inputs[i], 'change', FNAIM_Search_Get_Results, false);
	}
}

function FNAIM_Load_Category() {
	
	var item = $('FNAIM_Category_Select');
	var url = window.location.href + '&category='+ item[item.selectedIndex].value;
	window.location.href = url;	
}

function FNAIM_Set_Category(category) {
	
	category_current = category;
	if(category == 'location') {
		setStyle($('FNAIM_Category_Vente'), 'category_unselected');
		setStyle($('FNAIM_Category_Location'), 'category_selected');
		$('FNAIM_Types').style.height = '200px';
		$('FNAIM_Type_Immeuble').hide();
	}
	else {
		setStyle($('FNAIM_Category_Vente'), 'category_selected');
		setStyle($('FNAIM_Category_Location'), 'category_unselected');
		$('FNAIM_Types').style.height = '240px';		
		$('FNAIM_Type_Immeuble').show();
	}
	
	return;
}

function FNAIM_Search_Init(item_name) {

	var item = $(item_name);
	if(!item) {
		return;
	}
	FNAIM_selectTypes(item);
}

function FNAIM_Slider_Init() {

	var cur_type = _globalType.toLowerCase();
	
	var types_item = ['prix', 'pieces', 'surface', 'terrain', 'lots'];
	var slider_info_vente = [
	[
		{
			range:$R(0, 1000, false),
			step:1,
			sliderValue: [0, 1000],
			restricted:true,
			onSlide: function(value) { updateSlider('maisonappt_prix', value, 'ceil_mille', 0); },
			onChange: function(value) { updateSlider('maisonappt_prix', value, 'ceil_mille', 1); }
		},
		{
			range:$R(1, 7, false),
			values: [1, 2, 3, 4, 5, 6, 7],
			sliderValue: [1, 7],
			restricted:true,
			onSlide: function(value) { updateSlider('maisonappt_pieces', value, 'none', 0); },
			onChange: function(value) { updateSlider('maisonappt_pieces', value, 'none', 1); }
		},
		{
			range:$R(1, 400, false),
			step:1,
			sliderValue: [1, 400],
			restricted:true,
			onSlide: function(value) { updateSlider('maisonappt_surface', value, 'meter', 0); },
			onChange: function(value) { updateSlider('maisonappt_surface', value, 'meter', 1); }
		},		
		{
			range:$R(1, 100, false),
			step:1,
			sliderValue: [1, 100],
			restricted:true,
			onSlide: function(value) { updateSlider('maisonappt_terrain', value, 'meter_cent', 0); },
			onChange: function(value) { updateSlider('maisonappt_terrain', value, 'meter_cent', 1); }
		}
	],
	[
		{
			range:$R(0, 1000, false),
			step:1,
			sliderValue: [0, 1000],
			restricted:true,
			onSlide: function(value) { updateSlider('maison_prix', value, 'ceil_mille', 0); },
			onChange: function(value) { updateSlider('maison_prix', value, 'ceil_mille', 1); }
		},
		{
			range:$R(1, 7, false),
			values: [1, 2, 3, 4, 5, 6, 7],
			sliderValue: [1, 7],
			restricted:true,
			onSlide: function(value) { updateSlider('maison_pieces', value, 'none', 0); },
			onChange: function(value) { updateSlider('maison_pieces', value, 'none', 1); }
		},
		{
			range:$R(1, 400, false),
			step:1,
			sliderValue: [1, 400],
			restricted:true,
			onSlide: function(value) { updateSlider('maison_surface', value, 'meter', 0); },
			onChange: function(value) { updateSlider('maison_surface', value, 'meter', 1); }
		},		
		{
			range:$R(1, 100, false),
			step:1,
			sliderValue: [1, 100],
			restricted:true,
			onSlide: function(value) { updateSlider('maison_terrain', value, 'meter_cent', 0); },
			onChange: function(value) { updateSlider('maison_terrain', value, 'meter_cent', 1); }
		}
	],
	[
		{
			range:$R(0, 1000, false),
			step:1,
			sliderValue: [0, 1000],
			restricted:true,
			onSlide: function(value) { updateSlider('appartement_prix', value, 'ceil_mille', 0); },
			onChange: function(value) { updateSlider('appartement_prix', value, 'ceil_mille', 1); }
		},
		{
			range:$R(1, 5, false),
			values: [1, 2, 3, 4, 5],
			sliderValue: [1, 5],
			restricted:true,
			onSlide: function(value) { updateSlider('appartement_pieces', value, 'none', 0); },
			onChange: function(value) { updateSlider('appartement_pieces', value, 'none', 1); }
		},
		{
			range:$R(1, 300, false),
			step:1,
			sliderValue: [1, 300],
			restricted:true,
			onSlide: function(value) { updateSlider('appartement_surface', value, 'meter', 0); },
			onChange: function(value) { updateSlider('appartement_surface', value, 'meter', 1); }
		},
		{}
	],
	[
		{
			range:$R(0, 400, false),
			step:1,
			sliderValue: [0, 400],
			restricted:true,
			onSlide: function(value) { updateSlider('terrain_prix', value, 'ceil_mille', 0); },
			onChange: function(value) { updateSlider('terrain_prix', value, 'ceil_mille', 1); }
		},
		{},
		{},
		{
			range:$R(1, 100, false),
			step:1,
			sliderValue: [1, 100],
			restricted:true,
			onSlide: function(value) { updateSlider('terrain_terrain', value, 'meter_cent', 0); },
			onChange: function(value) { updateSlider('terrain_terrain', value, 'meter_cent', 1); }
		}
	],
	[
		{
			range:$R(0, 500, false),
			step:1,
			sliderValue: [0, 500],
			restricted:true,
			onSlide: function(value) { updateSlider('parking_prix', value, 'ceil_dix', 0); },
			onChange: function(value) { updateSlider('parking_prix', value, 'ceil_dix', 1); }
		},
		{},
		{
			range:$R(10, 100, false),
			step:1,
			sliderValue: [10, 100],
			restricted:true,
			onSlide: function(value) { updateSlider('parking_surface', value, 'meter', 0); },
			onChange: function(value) { updateSlider('parking_surface', value, 'meter', 1); }
		},
		{}
	],
	[
		{
			range:$R(0, 1000, false),
			step:1,
			sliderValue: [0, 1000],
			restricted:true,
			onSlide: function(value) { updateSlider('immeuble_prix', value, 'ceil_mille', 0); },
			onChange: function(value) { updateSlider('immeuble_prix', value, 'ceil_mille', 1); }
		},
		{},
		{
			range:$R(100, 500, false),
			step:1,
			sliderValue: [100, 500],
			restricted:true,
			onSlide: function(value) { updateSlider('immeuble_surface', value, 'meter', 0); },
			onChange: function(value) { updateSlider('immeuble_surface', value, 'meter', 1); }
		},
		{},
		{
			range:$R(1, 10, false),
			values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
			sliderValue: [1, 10],
			restricted:true,
			onSlide: function(value) { updateSlider('immeuble_lots', value, 'none', 0); },
			onChange: function(value) { updateSlider('immeuble_lots', value, 'none', 1); }
		}
	]
	];

	var slider_info_location = [
	[
		{
			range:$R(0, 450, false),
			step:1,
			sliderValue: [0, 450],
			restricted:true,
			onSlide: function(value) { updateSlider('maisonappt_prix', value, 'ceil_dix', 0); },
			onChange: function(value) { updateSlider('maisonappt_prix', value, 'ceil_dix', 1); }
		},
		{
			range:$R(1, 7, false),
			values: [1, 2, 3, 4, 5, 6, 7],
			sliderValue: [1, 7],
			restricted:true,
			onSlide: function(value) { updateSlider('maisonappt_pieces', value, 'none', 0); },
			onChange: function(value) { updateSlider('maisonappt_pieces', value, 'none', 1); }
		},
		{
			range:$R(1, 400, false),
			step:1,
			sliderValue: [1, 400],
			restricted:true,
			onSlide: function(value) { updateSlider('maisonappt_surface', value, 'meter', 0); },
			onChange: function(value) { updateSlider('maisonappt_surface', value, 'meter', 1); }
		},		
		{
			range:$R(1, 400, false),
			step:1,
			sliderValue: [0, 400],
			restricted:true,
			onSlide: function(value) { updateSlider('maisonappt_terrain', value, 'meter_cent', 0); },
			onChange: function(value) { updateSlider('maisonappt_terrain', value, 'meter_cent', 1); }
		}
	],
	[
		{
			range:$R(0, 450, false),
			step:1,
			sliderValue: [0, 450],
			restricted:true,
			onSlide: function(value) { updateSlider('maison_prix', value, 'ceil_dix', 0); },
			onChange: function(value) { updateSlider('maison_prix', value, 'ceil_dix', 1); }
		},
		{
			range:$R(1, 7, false),
			values: [1, 2, 3, 4, 5, 6, 7],
			sliderValue: [1, 7],
			restricted:true,
			onSlide: function(value) { updateSlider('maison_pieces', value, 'none', 0); },
			onChange: function(value) { updateSlider('maison_pieces', value, 'none', 1); }
		},
		{
			range:$R(1, 400, false),
			step:1,
			sliderValue: [1, 400],
			restricted:true,
			onSlide: function(value) { updateSlider('maison_surface', value, 'meter', 0); },
			onChange: function(value) { updateSlider('maison_surface', value, 'meter', 1); }
		},		
		{
			range:$R(1, 100, false),
			step:1,
			sliderValue: [0, 100],
			restricted:true,
			onSlide: function(value) { updateSlider('maison_terrain', value, 'meter_cent', 0); },
			onChange: function(value) { updateSlider('maison_terrain', value, 'meter_cent', 1); }
		}
	],
	[
		{
			range:$R(0, 250, false),
			step:1,
			sliderValue: [0, 250],
			restricted:true,
			onSlide: function(value) { updateSlider('appartement_prix', value, 'ceil_dix', 0); },
			onChange: function(value) { updateSlider('appartement_prix', value, 'ceil_dix', 1); }
		},
		{
			range:$R(1, 5, false),
			values: [1, 2, 3, 4, 5],
			sliderValue: [1, 5],
			restricted:true,
			onSlide: function(value) { updateSlider('appartement_pieces', value, 'none', 0); },
			onChange: function(value) { updateSlider('appartement_pieces', value, 'none', 1); }
		},
		{
			range:$R(1, 300, false),
			step:1,
			sliderValue: [1, 300],
			restricted:true,
			onSlide: function(value) { updateSlider('appartement_surface', value, 'meter', 0); },
			onChange: function(value) { updateSlider('appartement_surface', value, 'meter', 1); }
		},
		{}
	],
	[
		{
			range:$R(0, 250, false),
			step:1,
			sliderValue: [0, 250],
			restricted:true,
			onSlide: function(value) { updateSlider('terrain_prix', value, 'ceil_dix', 0); },
			onChange: function(value) { updateSlider('terrain_prix', value, 'ceil_dix', 1); }
		},
		{},
		{},
		{
			range:$R(1, 100, false),
			step:1,
			sliderValue: [1, 100],
			restricted:true,
			onSlide: function(value) { updateSlider('terrain_terrain', value, 'meter_cent', 0); },
			onChange: function(value) { updateSlider('terrain_terrain', value, 'meter_cent', 1); }
		}
	],
	[
		{
			range:$R(0, 200, false),
			step:1,
			sliderValue: [0, 200],
			restricted:true,
			onSlide: function(value) { updateSlider('parking_prix', value, 'euro', 0); },
			onChange: function(value) { updateSlider('parking_prix', value, 'euro', 1); }
		},
		{},
		{
			range:$R(10, 100, false),
			step:1,
			sliderValue: [10, 100],
			restricted:true,
			onSlide: function(value) { updateSlider('parking_surface', value, 'meter', 0); },
			onChange: function(value) { updateSlider('parking_surface', value, 'meter', 1); }
		},
		{}
	],
	[
		{},
		{},
		{},
		{},
		{}
	]
	];	
	if(category_current == 'location') {
		var slider_info = slider_info_location;
	}
	else {
		var slider_info = slider_info_vente;
	}
	
	var i;
	switch(cur_type) {
		case 'maisonappt':
			i = 0;
			break;
		case 'maison':
			i = 1;
			break;
		case 'appartement':
			i = 2;
			break;
		case 'terrain':
			i = 3;
			break;
		case 'parking':
			i = 4;
			break;
		case 'immeuble':
			i = 5;
			break;
		default:
			i = 1;
	}
	
	for(var j = 0; j < types_item.length; j++) {
		if($(cur_type+'_'+types_item[j]+'_min_move') && slider_info[i][j] != -1) {
			var handles = [$(cur_type+'_'+types_item[j]+'_min_move'), $(cur_type+'_'+types_item[j]+'_max_move')];
			sliders[cur_type+'_'+types_item[j]] = new Control.Slider(handles, cur_type+'_'+types_item[j]+'_slider', slider_info[i][j]);
		}
	}
}

function FNAIM_selectImage(item, mode) {

	var image;
	image = item.getElementsByTagName('img')[0];
	if(!image) {
		return;
	}

 	if(mode == 'selected') {
		if(image.src.indexOf('-on.gif') == -1) {
			image.src = image.src.substring(0, image.src.lastIndexOf("."))+"-on.gif";
		}
	} 
	else {
		if(image.src.indexOf('-on.gif') != -1) {
			image.src = image.src.substring(0, image.src.lastIndexOf("-"))+".gif";
		}
	}
}

function FNAIM_resizeLieu() {
	
	if($('FNAIM_Lieu_Content').style.height != '130px') {
		$('FNAIM_Lieu_Content').style.height = '130px';
		$('FNAIM_Lieu_Content_Left').style.height = '130px';
		$('FNAIM_Lieu_Proximite').style.height = '130px';
	}
	else {
		$('FNAIM_Lieu_Content').style.height = '70px';
		$('FNAIM_Lieu_Content_Left').style.height = '70px';
		$('FNAIM_Lieu_Proximite').style.height = '70px';		
	}
}

function FNAIM_showVille() {
	
	Element.toggle('FNAIM_Lieu_Villes');
	if($('FNAIM_showText_Ville').innerHTML == '+') {
		$('FNAIM_showText_Ville').innerHTML = '-';
	}
	else {
		$('FNAIM_showText_Ville').innerHTML = '+';		
	}
	FNAIM_resizeLieu();
}

var FNAIM_selectTypes_Event = function(event) {
  var item = Event.element(event);
  if(item.className != 'FNAIM_types') {
  	if(item.parentNode){
  		item = item.parentNode;
  	}
  }
  if(item.className != 'FNAIM_types' || !item.id || item.id == '') {
	return;
  }
  FNAIM_selectTypes(item);
}.bindAsEventListener(this);

function FNAIM_selectTypes(item) {

	if(!item) {
		return;
	}
	if(item.id != 'FNAIM_Type_Maison' && item.id != 'FNAIM_Type_Appartement') {
		FNAIM_unselectTypes();
	}
	else {
		if(item.id == last_type_selected) {
			FNAIM_unselectTypes();
		}
		else {
			if(item.id == 'FNAIM_Type_Maison' && last_type_selected != 'FNAIM_Type_Appartement') {
				FNAIM_unselectTypes();
			}
			if(item.id == 'FNAIM_Type_Appartement' && last_type_selected != 'FNAIM_Type_Maison') {
				FNAIM_unselectTypes();
			}
		}
	}
	FNAIM_updateFields(item);
}

function FNAIM_unselectDiv() {

	var types = ['MaisonAppt', 'Maison', 'Appartement', 'Terrain', 'Parking', 'Immeuble', 'Immobilier'];	
	var types_item = ['Criteres', 'Options'];	
	
	for(var i = 0; i < types_item.length; i++) {
		for (var j = 0; j < types.length; j++) {
			$('FNAIM_'+types_item[i]+'_'+types[j]).style.display = 'none';	
		}
	}
}

function FNAIM_unselectTypes() {

	var item, input_name;	
	var types = ['Maison', 'Appartement', 'Terrain', 'Parking', 'Immeuble', 'Immobilier'];	
		
	for(var i = 0; i < types.length; i++) {
		item = $('FNAIM_Type_'+types[i]);
		if(item) {
			item.className = 'FNAIM_types';
			FNAIM_selectImage(item, 'unselected');
			input_name = 'type_' + item.id.substring(item.id.lastIndexOf('_')+1).toLowerCase();
			$(input_name).value = 0;
		}
	}
}

function FNAIM_updateFields(item) {

	FNAIM_unselectDiv();
	FNAIM_selectImage(item, 'selected');
	item.className = 'FNAIM_types_selected';
	last_type_selected = item.id;

	var critere_name;
	var critere_field;

	var input_name = 'type_' + item.id.substring(item.id.lastIndexOf('_')+1).toLowerCase();
	$(input_name).value = 1;

	critere_field = $('FNAIM_Options');
	if(critere_field) {
		if(item.id == 'FNAIM_Type_Immobilier') {
			critere_field.style.display = 'none';
		}
		else {
			critere_field.style.display = 'block';
		}
	}

	if($F('type_maison') == 1 && $F('type_appartement') == 1) {
		critere_name = 'FNAIM_Criteres_MaisonAppt';
		_globalType = 'MaisonAppt';
	}
	else {
		_globalType = item.id.substring(item.id.lastIndexOf('_')+1)
		critere_name = 'FNAIM_Criteres_' + _globalType;
	}
	critere_field = $(critere_name);
	if(critere_field) {
		critere_field.style.display = 'block';
	}

	if($F('type_maison') == 1 && $F('type_appartement') == 1) {
		critere_name = 'FNAIM_Options_MaisonAppt';
	}
	else {
		critere_name = 'FNAIM_Options_' + item.id.substring(item.id.lastIndexOf('_')+1);
	}
	critere_field = $(critere_name);
	if(critere_field) {
		critere_field.style.display = 'block';
	}
	
	FNAIM_Slider_Init();
	FNAIM_Search_Get_Results();
}

function optionsPlus(name) {

	Element.toggle('FNAIM_Options_' + name + '_Plus_Criteres');
	Element.toggle('FNAIM_Options_' + name + '_Criteres');
}

function FNAIM_Search_FormSubmit(e) {

	var submit_error_field = $('FNAIM_Submit_Error');

	if($F('FNAIM_Input_Ville') == '' && $F('FNAIM_Input_CP') == '') {
		Effect.Pulsate('FNAIM_Input_Ville', {duration: 3, pulses: 11});
		if(submit_error_field) {
			Effect.Pulsate('FNAIM_Submit_Error', {duration: 3, pulses: 11});
			submit_error_field.style.border = '1px solid red';
			submit_error_field.style.marginBottom = '5px';
			submit_error_field.innerHTML = 'Choisissez un lieu pour voir les résultats';
			Event.stop(e);
			return false;
		}		
	}
	else {
		return true;
	}
}

function FNAIM_Search_Get_Results() {
	
	return;

	if($F('FNAIM_Input_Ville') == '' && $F('FNAIM_Input_CP') == '') {
		return;
	}
	
	var res_hash = Form.serialize('search') + '&give_result=1&call=results_biens';

	if(!_cacheNum[res_hash]) {
		new Ajax.Updater('FNAIM_Submit_Results_Content', '/index.php', {
			postBody: res_hash,
			onSuccess: toggleInformationR,
			onLoading: toggleInformationR
		});	
		_cacheNum[res_hash] = $('FNAIM_Submit_Results_Content').innerHTML;
	}
	else {
		$('FNAIM_Submit_Results_Content').innerHTML = _cacheNum[res_hash];
	}
}

function toggleInformationR() {
	Element.toogle('FNAIM_Submit_Results_Information');
}

var onResizeHandler = function(event){
	setProxiPosition();
};	
