// Js search engine
var newmenutimer;
var newsmenutimer;
var searchTimer;
var searchTimerMenu;
var searchMenu = false;
var searchDiv = false;
var searchFilterMenu = false;
var searchFilterDiv = false;
var searchFilter = '';
var searchkwicks;
var searchfx;
var cat;
var ssCat;
var timerPopup;

var icon;

var firstDisp = true;

var littleMap; // Petite google maps contenu dans la partie "+ d'infos" d'un hotel
var bLittleMapLoaded = false;
var currentPoint;// = new GLatLng(45.731475,4.82928);
var currentMarkerPoint;

var cal1;
var cal2;

var list_content = new Array();

var pointeur_map = 0;
window.addEvent('globaldomready', function(){	
	
	// init cat sscat
	if($('formInfosSearch'))
	{
		cat = $('formInfosSearch').cat.value;
		ssCat = $('formInfosSearch').sscat.value;
	}
	
	// Ajout de fonctions pour le nouveau moteur de recherche
	var searchkwicks = '';
	
	searchkwicks = $$("#page-content .search_block");
	searchfx = new Fx.Elements(searchkwicks, {
		wait: false, 
		duration: 800, 
		transition: Fx.Transitions.Quart.easeOut
	});
	
	if($('search_main') && firstDisp)
	{
		changeOnglet(1);
		firstDisp = false;
		if($('nav2-1'))
		{
			$('nav2-1').set('src', 'img/fr/nav2_1_f.gif');
		}
	}
	
	if($('menu1'))
	{
		$('menu1').addEvent('mouseenter', function(){
			searchMenu = true;
			newmenutimer = setTimeout("showSMenu('menu1')", 100);
		});
		/*$('menu2').addEvent('mouseenter', function(){
			searchMenu = true;
			newmenutimer = setTimeout("showSMenu('menu2')", 100);
		});*/
		$('menu3').addEvent('mouseenter', function(){
			searchMenu = true;
			newmenutimer = setTimeout("showSMenu('menu3')", 100);
		});
		/*$('menu4').addEvent('mouseenter', function(){
			searchMenu = true;
			newmenutimer = setTimeout("showSMenu('menu4')", 100);
		});
		$('menu5').addEvent('mouseenter', function(){
			searchMenu = true;
			newmenutimer = setTimeout("showSMenu('menu5')", 100);
		});*/
		
		$('menu1').addEvent('mouseleave', function(){
			searchMenu = false;
			newmenutimer = setTimeout("hideSMenu('menu1')", 300);
		});
		/*$('menu2').addEvent('mouseleave', function(){
			searchMenu = false;
			newmenutimer = setTimeout("hideSMenu('menu2')", 300);
		});*/
		$('menu3').addEvent('mouseleave', function(){
			searchMenu = false;
			newmenutimer = setTimeout("hideSMenu('menu3')", 300);
		});
		/*$('menu4').addEvent('mouseleave', function(){
			searchMenu = false;
			newmenutimer = setTimeout("hideSMenu('menu4')", 300);
		});
		$('menu5').addEvent('mouseleave', function(){
			searchMenu = false;
			newmenutimer = setTimeout("hideSMenu('menu5')", 300);
		});*/
		
		$('sous_menu1').addEvent('mouseenter', function(){
			searchDiv = true;
		});
		
		$('sous_menu1').addEvent('mouseleave', function(){
			searchDiv = false;
			newmenutimer = setTimeout("hideSMenu('menu1')", 300);
		});
		/*$('sous_menu2').addEvent('mouseenter', function(){
			searchDiv = true;
		});
		
		$('sous_menu2').addEvent('mouseleave', function(){
			searchDiv = false;
			newmenutimer = setTimeout("hideSMenu('menu2')", 300);
		});*/
		$('sous_menu3').addEvent('mouseenter', function(){
			searchDiv = true;
		});
		$('sous_menu3').addEvent('mouseleave', function(){
			searchDiv = false;
			newmenutimer = setTimeout("hideSMenu('menu3')", 300);
		});
		
		/*$('sous_menu4').addEvent('mouseenter', function(){
			searchDiv = true;
		});
		$('sous_menu4').addEvent('mouseleave', function(){
			searchDiv = false;
			newmenutimer = setTimeout("hideSMenu('menu4')", 300);
		});
		$('sous_menu5').addEvent('mouseenter', function(){
			searchDiv = true;
		});
		
		$('sous_menu5').addEvent('mouseleave', function(){
			searchDiv = false;
			newmenutimer = setTimeout("hideSMenu('menu5')", 300);
		});*/
		
	}
	
	if($('filter1'))
	{
		$('filter1').addEvent('click',function(){
			if(searchFilter != this.id)
				hideSearchFilter(searchFilter);
			searchFilterMenu = true;
			searchTimerMenu = setTimeout("showSearchFilter('filter1')", 350);
		});
	}
	if($('filter2'))
	{
		$('filter2').addEvent('click',function(){
			if(searchFilter != this.id)
				hideSearchFilter(searchFilter);
			searchFilterMenu = true;
			searchTimerMenu = setTimeout("showSearchFilter('filter2')", 350);
		});			
	}
	if($('filter3'))
	{
		$('filter3').addEvent('click',function(){
			if(searchFilter != this.id)
				hideSearchFilter(searchFilter);
			searchFilterMenu = true;
			searchTimerMenu = setTimeout("showSearchFilter('filter3')", 350);
		});
	}
	if($('filter4'))
	{
		$('filter4').addEvent('click',function(){
			if(searchFilter != this.id)
				hideSearchFilter(searchFilter);
			searchFilterMenu = true;
			searchTimerMenu = setTimeout("showSearchFilter('filter4')", 350);
		});
	}	
	
	if($('search'))
	{
		$('search').addEvent('click', function(){
			showOnglet('search');
		});
	}
		
	if($('selection'))
	{
		$('selection').addEvent('click', function(){
			showOnglet('selection');
		});
	}

	if($('details-toggle')){
		$('details-toggle').addEvent('click', function(e){
			E = new Event(e).stop();
			
			if( $('details-toggle').hasClass('open') )
			{
				detailsTog('down');				
			} else {
				// get idObt
				var idObt = $('formInfosSearch').idObt.value;
				// open detail
				displayDetailSelect(idObt);
			}
		});
	}
	
	if($('select_display_list'))
	{
		$('select_display_list').addEvent('click', function(){
			select_display(this, 'list');
			if( $('details-toggle').hasClass('open') )
				detailsTog('down');
		});
	}
	
	if($('select_display_map'))
	{
		$('select_display_map').addEvent('click', function(){   			
			select_display(this, 'map');
			
			if(mapIsVisible == false)
			{
				loadMap();
				
				// get nb result
				var nbResult = aParams['indice'].length.toInt();
				if(nbResult > 0)
					loadMarkers(aParams);
			}
			if( $('details-toggle').hasClass('open') )
				detailsTog('down');
		});
	}
		
	// Top search engine scrollbar
	if ($('top_search')){
		
		if ($('filter_list2'))
			var scr_filter2 = new ScrollBar('filter_list2', 'filter_track2', 'filter_tracker2');
			
		if ($('scr_filter3'))
			var scr_filter3 = new ScrollBar('filter_list3', 'filter_track3', 'filter_tracker3');
			
		if ($('filter_list4'))
			var scr_filter4 = new ScrollBar('filter_list4', 'filter_track4', 'filter_tracker4');
		
		// init top search
		initSearchFilter('filter1');
		
		$$('.filter_button').each(function(el, index){
			el.addEvent('click', function(){
				validateFilter(this);
			});
		});
	}
	
	// init opacity of loaddr list to 0
	if($('loader-list'))
	{
		$('loader-list').setStyle('opacity', 0);
	}
	
	// init opacity of loaddr fiche to 0
	if($('search_fiche_loader'))
	{
		$('search_fiche_loader').setStyle('opacity', 0);
	}
	
	// add event change on liste city
	if($('listeCommune'))
	{
		$('listeCommune').addEvent('change', function(e){
			var element = $('communeForm');
			addCityToSearch(this.value, element);
		});
	}
	
	//init number of results
	var nbResult = $$('.search_result').length;
	if($('nbResult'))
	{
		$('nbResult').innerHTML = nbResult;
			
		//init google map
		var aInfo = new Array();
		icon = new GIcon();
		icon.image = "./img/global/map/picto.png";
		icon.iconSize = new GSize(20, 34);
		icon.iconAnchor = new GPoint(6, 20);
		icon.infoWindowAnchor = new GPoint(5, 1);
		
		mapIsVisible = false;
		
		// show list of city of all departments
		updateTownList(61);
	}	
	
	// init calendar if field exist
	if( $('dateDebut') && $('dateFin') )
	{
		initInputCalendar();
	}	
	
	if(
		$('filter2')
		&& cat == 'FMA'
		&& ssCat == 'FMA_FMA'
	){
		setTimeout("openFilterByFireEvent('filter2')", 350);
	}
	
	if ($('search_popup') && $('close_search'))
	{
		$('close_search').addEvent('click', function(){
			if ($('search_popup').getStyle('display') == 'block')
				$('search_popup').setStyle('display', 'none');
		});
		
		if (Cookie.get('search_home') == false && !$('filter1'))
		{
			showPopupTipSearch('menu1', 'search_home', 0);
		}
		
		if ($('filter1') && Cookie.get('search_top') == false)
		{
			showPopupTipSearch('filter1', 'search_top', 1);
		}	
	}
	
	// init lien reinit calendar
	if($('reinitCalendarLink'))
	{
		$('reinitCalendarLink').addEvent('click', function(){
			reinitCalendar();
		});
	}
	
	// display detail if idOBT exist and no null
	if($('formInfosSearch'))
	{
		if ($('formInfosSearch').idObtDefault.value != '')
			displayDetailSelect($('formInfosSearch').idObtDefault.value);
	}
});

function showPopupTipSearch(sIdElement, sCookie, iIndiceText)
{
	if($(sIdElement))
	{
		position = $(sIdElement).getPosition();
		var top = position.y;
		var left = position.x;
		var content = $$('#search_popup .content p');
		content.setStyle('display', 'none');
		content[iIndiceText].setStyle('display', 'block');
		
		$('search_popup').setStyle('display', 'block');
		var size = $('search_popup').getSize();
		top = top - size.y;
		left = left + (size.x / 2);
		$('search_popup').setStyles({'top' : top+'px', 'left': left+'px'});
		Cookie.set(sCookie, '1', { path:'/' });
		
		// delete timer
		$clear(timerPopup);
		
		// start timer
		timerPopup = setTimeout(function(){$('search_popup').setStyle('display', 'none');}, 20000);
	}
}

function showSMenu(id)
{
	for(i=1;i<=5;i++)
	{
		if($('sous_menu'+i)){
			$('sous_menu'+i).style.display = 'none';
		}
	}
	$('sous_'+id).style.display = 'block';
}

function hideSMenu(id)
{
	if(searchMenu == false && searchDiv == false)
	{
		$('sous_'+id).style.display = 'none';
	}
}

function showSearchTop()
{
	if($('top_search'))
		$('top_search').style.display = 'block';
}

function initSearchFilter(id)
{
	$(id).addClass('selected');
	var myStyle = new Fx.Tween('div_'+id, 'width', {duration:500, transition: Fx.Transitions.Quart.easeOut});
	myStyle.start(0, 422);
	
	// Displaying scrollbar ... or not -- complete this
	
	id_track = id.substr(-1).toInt();
	if($('filter_listing' + id_track))
	{
		if($('filter_listing' + id_track).getStyle('height').toInt() > 70)
		{
			$('filter_track' + id_track).setStyle('display', 'block');
		}
		else
		{
			$('filter_track' + id_track).setStyle('display', 'none');
		}
	}
	searchFilter = id;
}

function showSearchFilter(id)
{
	if(searchFilter!=id)
	{
		if(searchFilter != '' && $('div_'+searchFilter).getStyle('width').toInt() ==0)
		{
			$(id).addClass('selected');
			var myStyle = new Fx.Style('div_'+id, 'width', {duration:350, transition: Fx.Transitions.Quart.easeOut});
			myStyle.start(0, 422);
			
			// Displaying scrollbar ... or not -- complete this
			
			id_track = id.substring((id.length-1),id.length);
			if($('filter_listing' + id_track))
			{
				if($('filter_listing' + id_track).getStyle('height').toInt() > 70)
				{
					$('filter_track' + id_track).setStyle('display', 'block');
				}
				else
				{
					$('filter_track' + id_track).setStyle('display', 'none');
				}
			}
			searchFilter = id;
		}
	}
}

function hideSearchFilter(id)
{
	if($('div_'+id).getStyle('width').toInt() == 422)
	{
		$(id).removeClass('selected');
		var myStyle = new Fx.Style('div_'+id, 'width', {duration:350, transition: Fx.Transitions.Quart.easeOut});
		myStyle.start(422, 0);
	}
}

function showOnglet(id)
{
	if(id == 'search')
	{
		$('selection_display').style.display = 'none';
		$('selection').setProperty('class','selection_inactive');
	}
	else
	{
		$('search_display').style.display = 'none';
		$('search').setProperty('class','search_inactive');
	}
	
	$(id+'_display').style.display = 'block';
	$(id).setProperty('class',id+'_active');
	
	
	if(id == 'selection')
	{
		selection_listing();
	}
}

function select_display(element, option)
{
	if(option == 'map')
	{
		$('result_list').setStyle('display', 'none');
		$('carto_display').setStyle('display', 'block');
		alt = 'list';
	}
	else
	{
		$('carto_display').setStyle('display', 'none');
		$('result_list').setStyle('display', 'block');
		alt = 'map';
	}
	
	// On cache details si l'onglet est ouvert
	move_blocks = $$("#page-content .search_block");
	if(move_blocks[1].getStyle('height').toInt() == 405)
	{
		detailsTog('down');
	}
	
	$('select_display_' + alt).removeClass('selected');
	$('select_display_' + option).addClass('selected');
}

function validateFilter(obj)
{
	// close detail
	detailsTog('down');
		
	var request = new Request.HTML({
		url: '../content/ajax/genListeSearch.php', 
		method: 'post',
		update: $('search_result_list'),
		onRequest: function(){
			
			// change label of valid filter button
			validFilterBtnLabelChange('Mise à jour...', 0);
			
			$('loader-list').setStyle('opacity', 0.8);
		},
		onComplete: function(){
			// set total of results
			var nbResult = $$('.search_result').length;
			$('nbResult').innerHTML = nbResult;
			
			//load markers
			var isExist = typeof map;
			if(isExist != 'undefined'){
				// get nb result
				var nbResult = aParams['indice'].length.toInt();
				if(nbResult > 0)
					loadMarkers(aParams);
				else
					map.clearOverlays();
			}
			
			// set opacity of loader to 0
			$('loader-list').setStyle('opacity', 0);
			
			// change label of valid filter button
			validFilterBtnLabelChange('Validez vos critères', 1);	
			
			// display popup tips
			if (Cookie.get('search_filter') == false)
			{
				var idFilter = obj.id.replace('submitRequest', 'filter');
				showPopupTipSearch(idFilter, 'search_filter', 2);
			}			
		}
	}).post($('formInfosSearch'));
}

/** change label of valid filter button **/
function validFilterBtnLabelChange(sLabel, stateBtn)
{
	$$('.filter_button').each(function(e){
		e.setHTML(sLabel);
		
		if(stateBtn == 1){
			e.setStyles({'opacity':1},{'background':'#CCC'});
		} else {
			e.setStyles({'opacity':0.5},{'background':'#BC0000'});
		}
	});
}

// Blocks size
var SearchSize = new Array();
for (i = 1; i < 3; i++)
{
	SearchSize[i] = new Array();
}

SearchSize[1][0] = 419;
SearchSize[1][1] = 32;
SearchSize[2][1] = 412;
SearchSize[2][0] = 25;

var isDetailsOpened = false;

function detailsTog(way)
{
	var searchkwicks = '';
	var wayValue = way;

	if(isNav2Open)
	{
		SearchSize[1][0] = 205;
		SearchSize[1][1] = 32;
		SearchSize[2][1] = 198;
		SearchSize[2][0] = 25;
		$('search_result_list').setStyle('height', 125);
		if($('carto_display_content'))
			$('carto_display_content').setStyle('height', 157);
	}
	else
	{
		SearchSize[1][0] = 419;
		SearchSize[1][1] = 32;
		SearchSize[2][1] = 412;
		SearchSize[2][0] = 25;
		$('search_result_list').setStyle('height', 327);
		if($('carto_display_content'))
			$('carto_display_content').setStyle('height', 360);
	}

	searchkwicks = $$("#page-content .search_block");
	searchfx = new Fx.Elements(searchkwicks, {
		wait: false, 
		duration: 800, 
		transition: Fx.Transitions.Quart.easeOut			
	});
	
	var o = {};
	searchkwicks.each(function(searchkwick, i) {
		switch (i)
		{
			case 1 : j = (isDetailsOpened) ? 0:1;
				break;
			case 0 :
				if (!isDetailsOpened)
					j = 1;
				else
					j = 0;
				break;
		}
		if(isNav2Open && i == 1 && j==1)
		{
			$('search_fiche').setStyle('height', 142);
		}
		else
		{
			$('search_fiche').setStyle('height', 355);
		}
		o[i] = {height: [searchkwick.getStyle("height").toInt(), SearchSize[i + 1][j]]}
	});

	if(
		wayValue == 'up' && isDetailsOpened == false
		|| wayValue == 'down' && isDetailsOpened == true
		|| wayValue == undefined
	)
	{
		$('details-toggle').toggleClass('open');
		isDetailsOpened = !isDetailsOpened;
		searchfx.start(o);
	}
}

function displayDetailSelect(idObt, catValue, ssCatValue, iRedirect)
{
	if(iRedirect == undefined)
	{
		if(idObt == '')
			idObt = getFirstDetailLink();
		
		// if cat and ssCat is null we take value of form
		if(catValue == undefined)
			catValue = cat;
			
		if(ssCatValue == undefined)
			ssCatValue = ssCat;	
			
		detailsTog('up');
		
		updateDetail(idObt, catValue, ssCatValue);	
		
		$('formInfosSearch').idObt.value = idObt
	} else {
		window.location = locationSearch+'?cat='+catValue+'&sscat='+ssCatValue+'&idOBTDefault='+idObt;
	}
}

//init first detail link
function getFirstDetailLink()
{
	idObt = false;
	
	if($$('.search_result')[0])
	{
		var linkFirstResult = $$('.search_result')[0].getElements('a')[0].getAttribute('href');
		var expression = new RegExp(".*\\(\'([a-zA-Z0-9]*)\'\\);.*");
		
		var idObt = expression.exec(linkFirstResult.toString())[1];
	}
	
	return idObt;
}

// details action
function updateDetail(idObt, cat, ssCat)
{
	var idObtDisp = $('formInfosSearch').idObt.value;
	
	if(idObtDisp != idObt)
	{
		var request = new Request.HTML({
			url: '../content/ajax/genDetailFiche.php',
			method: 'post',
			update:$('search_fiche'),
			onRequest: function(){
				// display loader
				$('search_fiche_loader').setStyle('opacity', 0.8);
				
				// change label of valid filter button
				validFilterBtnLabelChange('Mise à jour...', 0);
			},
			onComplete: function(){
				// hide loader
				$('search_fiche_loader').setStyle('opacity', 0);
				
				// change label of valid filter button
				validFilterBtnLabelChange('Validez vos critères', 1);
			}
		}).send('cat='+cat+'&sscat='+ssCat+'&idObt='+idObt);	
	}
}

function select_filter(element)
{
	if ($(element).hasClass('filter_element'))
	{
		$(element).removeClass('filter_element');
		$(element).addClass('filter_selected');
	}
	else if ($(element).hasClass('filter_selected'))
	{
		$(element).removeClass('filter_selected');
		$(element).addClass('filter_element');
	}
	else if ($(element).hasClass('filter_picto'))
	{
		$(element).removeClass('filter_picto');
		$(element).addClass('picto_selected');
	}
	else if ($(element).hasClass('picto_selected'))
	{
		$(element).removeClass('picto_selected');
		$(element).addClass('filter_picto');
	}
}

/* Add criteria management */
function addCriteria(obj, value)
{
	var element;
	var exist = false;
	var categorie;
	var subFilter;
	var stateBtn;
	var id;
	
	select_filter(obj.id);
	
	id = obj.getParent().get('id');
	id = id.replace('_listing', '');
	
	if(checkIfFilterSelect(obj))
	{
		if( $(id) )
			$(id).removeClass('confirmed');
	} else {
		if( $(id) )
		{
			$(id).addClass('confirmed');		
			
			// remove class dateCalendar if selected
			if($$('.dateCalendar')[0])
			{
				reinitCalendar();
			}
		}
	}		
		
	if(obj.get('class') == 'filter_picto')
		stateBtn = 'off';
	else
		stateBtn = 'on';
	
	subFilter = value.split('¤');
	
	subFilter.each(function(e){
		
		categorie = e.split('|')[0];
		classCategorie = categorie.replace('/', '_', 'g');
		
		idValue = obj.get('id');
		idValue = idValue.replace('stSucks_', '');
		
		idFilter = idValue.split('_')[0];
		idCriteria = idValue.split('_')[1];

		value = e.split('|')[1];

		if(stateBtn == 'off')
		{
			$$('input.filters_' + classCategorie).each(function(elementInput){
				if (elementInput.getAttribute('value') == value + '_' + idFilter) {
					exist = true;
					element = elementInput;
				}
			});
		} else
			exist = false;
		
		if (exist == false) {
			element = new Element('input',{
				'type':'hidden',
				'name':'filters[' + idFilter + '][' + idCriteria + '][' + categorie + '][]',
				'value':value + '_' + idFilter,
				'rel':idFilter,
				'class':'filters_' + classCategorie
			})
			element.injectInside($('formInfosSearch'));
		}else{
			element.remove();
		}
		
	});
		
}

function reinitCalendar()
{
	if($$('.dateCalendar')[0])
	{
		$$('.dateCalendar')[0].remove();
	}
	$('dateDebut').set('value', '');
	$('dateFin').set('value', '');
	cal1.changed(cal1.calendars[0]);
	cal2.changed(cal2.calendars[0]);
}

function checkIfFilterSelect(obj)
{
	var div = obj.getParent();
	var aFilters = div.getChildren('a.picto_selected');
	
	if(aFilters.length > 0)
	{
		return false;
	} else {
		return true;
	}
}

//Add city
function addCityToSearch(sValue, oElement)
{
	oElement.value = sValue;
}

/* Cookie Management */
var key = 'addt_selection';

function add_selection(id, hotel_name, hotel_city, cat, sous_cat)
{
	var contenu = '';
	
	$('selection').fireEvent('click');
	
	//récupère le cookie de sauvegarde s'il existe
	if(Cookie.get(key)){
		contenu += Cookie.get(key);
	}
	
	//si la page ou fiche n'est pas encore sauvegarder
	//concatène le résultat obtenu avec les informations que l'on souhaite ajouter
		contenu += id + ';' + hotel_name + ';' + hotel_city + ';' + cat + ';' + sous_cat + '|';
	if(contenu.indexOf(id + ';' + hotel_name + ';' + hotel_city + ';' + cat + ';' + sous_cat + '|') == -1){
	}
	//sauvegarde
	if(Cookie.set(key, contenu, { path:'/' })){
		//alert(Cookie.get(key));
		//met a jour nb de sauvegarde
		selection_listing();
		return true;
	}
	return false;
}

function del_selection(str)
{
	var contenu = Cookie.get(key);
	contenu = contenu.replace(str, '');
	Cookie.set(key, contenu, { path:'/' });
	selection_listing();
}

function selection_listing()
{
	var content = '';
	var content_display = '';
	var redirect = '';
	if(Cookie.get(key)){
		content += Cookie.get(key);
	}
	
	if(content != '')
	{
		// Clean informations
		content = content.substr(0, (content.length-1));
		var selection = content.split("|");
		
		for(i=0;i<selection.length;i++)
		{
			// Delete informations
			str_delete = selection[i]+'|';
			str_delete = str_delete.replace("'", "\\'");
			// Clean information
			selection_infos = selection[i].split(';');
			
			content_display += '<div class="selection_element"><a href="javascript:del_selection(\''+ str_delete + '\');void(0);"><img src="./img/global/selection_delete.gif" /></a><p class="selection_title">';
			
			// test if rubrique is searchRubrique to redirect value
			if(idRubrique != idRubriqueSearch)
				redirect = 1;
		 	else
				redirect = 0;
			
			content_display += '<a href="javascript:displayDetailSelect(\'' + selection_infos[0] + '\', \'' + selection_infos[3] + '\', \'' + selection_infos[4] + '\', \'' + redirect + '\');void(0);">' + selection_infos[1] + '</a>';
			content_display += '</p><p class="selection_city">' + selection_infos[2] + '</p></div>';
			list_content.push(new Array(selection_infos[0],selection_infos[3],selection_infos[4]));
		}
	}
	
	$('selection_list').setHTML(content_display);
	if($('selection_list').getStyle('height').toInt() > 150)
	{
		$('selection_track').setStyle('display', 'block');
		var scr = new ScrollBar('selected_results', 'selection_track', 'selection_tracker');
	}
	else
	{
		$('selection_track').setStyle('display', 'none');
	}
}


/* Popup Management */
function popup_close()
{
	if($('popup_carte'))
	{
		$('popup_carte').setStyle('display','none');
	}
}

/* Fiche Block Management */
function hideFicheBlock(elem, id_block)
{
	$(elem).toggleClass('close');
	block = $(id_block);
	
	var content_size = $(id_block).getChildren('.fiche_block_content').getSize();
	fxheight = content_size[0].y;
	
	if(block.getStyle("height").toInt() == 24)
	{
		fxstart = 24;
		fxend = fxheight + 30;
	}
	else
	{
		fxstart = fxheight + 30;
		fxend = 24;
	}
	
	var myStyle = new Fx.Style(block , 'height', {duration:500, transition: Fx.Transitions.Quart.easeOut});
	myStyle.start(fxstart, fxend);
}

//=========================================================================//
// 						Début Google Map 
//=========================================================================//

var geocoder;

//loadMap : place la googleMap dans le div prévu à cet effet
//==========================================================//
function loadMap(){
	if (GBrowserIsCompatible()) 
	{
		map = new GMap2(document.getElementById("carto_display_content"));
		map.disableDoubleClickZoom();
		map.doubleClickEnabled = false;
		map.enableScrollWheelZoom();
		map.addControl(new GSmallMapControl());
		
		GEvent.addListener(map, "dblclick", function(){ 
			map.returnToSavedPosition();
		});		
		
		geocoder = new GClientGeocoder();
		map.setCenter(new GLatLng(45.043934,3.885384), 12);		
		mapIsVisible = true;
	}
}


//getCoordByAddress : placement d'un marker grâce à une adresse postale
//Si un élément n'a pas de géoloc, on le place grâce à son adresse
//==================================================================================//
function getCoordByAddress(address, coder, info, indice, aParams, aMarkers, oMap) 
{
  coder.getLatLng
   (
    address,
    function(point)
	{
		if(point != null)
		{
			point = point.toString();
			var strLatLongSimple = point.substr(1, point.length - 2);
			var aLatLngSimple = strLatLongSimple.split(",");	  
				
			pMarker = new PdMarker(info, new GLatLng(aLatLngSimple[0], aLatLngSimple[1]), {icon: icon });
		  
		 	var txtToShow = " résultats";	
		  	var nbResultToShow = aParams['ville'][indice].length;
		  	if(nbResultToShow <= 1)
			{
				txtToShow = aParams['libelle'][i];
			} else {
				txtToShow = nbResultToShow + ' résultats';
			}
			
			pMarker.setTooltip(txtToShow);	  
			aMarkers[indice] = pMarker;
			
			oMap.addOverlay(pMarker);	  
		}
     }
   );
}

//getCoordByAddressDetail : placement d'un marker grâce à une adresse postale dans la fiche de détail
//Si un élément n'a pas de géoloc, on le place grâce à sa commune
//==================================================================================//
function getCoordByAddressDetail(address) 
{
	var littleGeocoder = new GClientGeocoder();		  
	littleGeocoder.getLatLng(
		address,
		function(point)
		{
			point = point.toString();			  
			var strLatLongSimple = point.substr(1, point.length - 2);			  
			var aLatLngSimple = strLatLongSimple.split(",");
			pointFound = new GLatLng(aLatLngSimple[0], aLatLngSimple[1]);
			showMapDetail(pointFound);
		}
	);		   
}

//show map in the detail sheet
//==================================================================================//
function showMapDetail(point)
{
	if(!toPrint){
		littleMap = new GMap2($("fiche_carto_insert"));
		littleMap.addControl(new GSmallMapControl());
		var marker = new GMarker(point, icon);
		littleMap.setCenter(point, 12);
		littleMap.addOverlay(marker);
	}	
	else{
		var id_carto_temp = "fiche_carto_insert" + pointeur_map;
		$("fiche_carto_insert").id = id_carto_temp;
		littleMap = new GMap2($(id_carto_temp));
		littleMap.addControl(new GSmallMapControl());
		var marker = new GMarker(point, icon);
		littleMap.setCenter(point, 12);
		littleMap.addOverlay(marker);
	pointeur_map += 1;
	}
}

//loadMarkers : construction de tous les markers à placer
//aParams => tabelau multidimensionnel contenant toutes les infos pour chaque marker
//==================================================================================//
function loadMarkers(aParams) 
{   
	var nbResult = aParams['indice'].length.toInt();
	map.clearOverlays();	
	var aMarkerHandler = new Array();
	aInfo = new Array();
	
	for(var i=0 ; i < nbResult ; i++)
	{		
		//On initialise l'objet info (infobulle affichée au clic sur un marker)
		//Cet objet 'info' contient des tableaux d'infos (un tableau de nomo de villes, un tableau de nom d'hotels etc...)
		var info = new OInfo(i);
		info.addContent(aParams['libelle'][i], aParams['ville'][i], aParams['idOffre'][i], aParams['picto'][i], aParams['picture'][i]);
		aInfo.push(info);
		
		if(aParams['lat'][i] != "" && aParams['lng'][i] != "")
		{
			//On initisalise le pdMarker
			pMarker = new PdMarker(info, new GLatLng(aParams['lat'][i], aParams['lng'][i]), {icon: icon });
			
			//Puis on lui passe l'infobulle à ouvrir au clic
			//pMarker.setDetailWinHTML(info.allHtml);
			//pMarker.setDetailWinHTML(info);
			
			//Ajout du markeur sur la carte
			map.addOverlay(pMarker);
			aMarkerHandler[i] = pMarker;			
		}
		else
		{
			getCoordByAddress(aParams['ville'][i][0].toString(), geocoder, info, i, aParams, aMarkerHandler, map);
		}
	}
	
	activeAllRollOver(aMarkerHandler, aParams);
}


//activeAllRollOver : Activation des rollOvers sur tous les markers 
//pour faire apparaitre l'infoBulle du nb de résultats
//========================================================//
function activeAllRollOver(aMarkerHandler, aParams)
{
	var txtToShow = " résultats";
	for(var i=0; i < aMarkerHandler.length.toInt(); i++)
	{
		var nbResultToShow = aParams['ville'][i].length;
		if(nbResultToShow <= 1)
	  	{
	  		txtToShow = aParams['libelle'][i];
	  	} else {
	  		txtToShow = nbResultToShow + ' résultats';
	  	}
			
		aMarkerHandler[i].setTooltip(txtToShow);
	}
	
	map.setCenter(new GLatLng(aParams['lat'][0], aParams['lng'][0]), 7);
}

function updateTownList(indice)
{
	$('formInfosSearch').indiceCommune.value = indice;
	
	var request = new Request({
		url: '../content/ajax/genListeTown.php', 
		method: 'post',
		onRequest: function(){
			// display mask on location choice
			maskLocation(1);
		},
		onSuccess: function(responseText, responseXML){			
			$('listeCommune').setHTML('');
			
			var element = new Element('option',	{
				'html' : 'Toutes les communes',
				'value' : responseText
			});
			element.inject($('listeCommune'));
			
			$('communeForm').value = responseText;
						
			var aCity = responseText.split('|');			
			$each(aCity, function(value, index){
				var element = new Element('option',{ 
					'html' : value,
					'value' : value
				});
				element.inject($('listeCommune'));				
			});	
			
			// hidden mask on location choice
			maskLocation(0);
			
		}
	}).post($('formInfosSearch'));		
}

function maskLocation(bState)
{
	if(bState == 1)
	{
		$$('.mask_location').setStyles({'opacity':0.7, 'display':'block'});
		$$('.wait_location').setStyles({'display':'block'});
	} else {
		$$('.mask_location').setStyles({'opacity':0, 'display':'none'});
		$$('.wait_location').setStyles({'display':'none'});
	}
}

/** initialisation des actions sur les intput du calendrier **/
function initInputCalendar(){
	var name;
	var value;
	var idFilter;
	var idCriteria;
	
	$('dateDebut').addEvent('change', function(){
		
		var rel = this.get('rel').split('_');
		
		idFilter = rel[0];
		idCriteria = rel[1];
		
		name = this.name + '-between-' + $('dateFin').name;
		value = this.value + '-between-' + $('dateFin').value;
		
		// suppression del a valeur
		var elementInput = $$('#formInfosSearch .dateCalendar');
		if(elementInput.length > 0)
		{
			elementInput[0].remove();
		}
		
		// insert value
		element = new Element('input',{
			'type':'hidden',
			'name':'filters[' + idFilter + '][' + idCriteria + '][' + name + '][]',
			'value':value + '_' + idFilter,
			'rel':idFilter,
			'class':'dateCalendar'
		});
		element.injectInside($('formInfosSearch'));		
	})
	
	$('dateFin').addEvent('change', function(){

		idFilter = this.get('rel').split('_')[0];
		idCriteria =this.get('rel').split('_')[1];
				
		name = $('dateDebut').name + '-between-' + this.name;
		value = $('dateDebut').value + '-between-' + this.value;
		
		// suppression del a valeur
		var elementInput = $$('#formInfosSearch .dateCalendar');
		if(elementInput.length > 0)
		{
			elementInput[0].remove();
		}
		
		// insert value
		element = new Element('input',{
			'type':'hidden',
			'name':'filters[' + idFilter + '][' + idCriteria + '][' + name + '][]',
			'value':value + '_' + idFilter,
			'rel':idFilter,
			'class':'dateCalendar'
		});
		element.injectInside($('formInfosSearch'));				
	})
	
	// ajout du calendar
	cal1 = new Calendar({dateDebut: 'd/m/Y'}, { 
		direction: 1, 
		tweak: { x: 6, y: 0 } 
	});
	
	cal2 = new Calendar({dateFin: 'd/m/Y'}, { 
		direction: 1, 
		tweak: { x: 6, y: 0 } 
	});
}

function sortList(sNameField, sSortOrder, id)
{
	// reinit sort picture to down
	reinitAllSortPict();
	
	// update field name
	$('sortFieldName').set('value', sNameField);
	
	// update sort order
	$('sortOrder').set('value', sSortOrder);
	
	var element = $(id);
	var img = element.getChildren('img');
	
	img[0].src = 'img/global/search_sort_up.gif';
	
	validateFilter();
}

function reinitAllSortPict()
{
	$$('.sort_pict').each(function(e){
		e.src = 'img/global/search_sort_down.gif';
	});
}

/** open **/
function openFilterByFireEvent(idFilter)
{
	$(idFilter).fireEvent('click');
}


