/**
 * Comportements au chargement de la page
 * 
 * @author	Rémy Vuong <remy@upian.com>
 * @date	2009-02-05
 * @version	1.0
 */
$(document).ready(function(){
	// SWFobject
	var so = new SWFObject(base_url+"/files/swf/carte_blanc.swf", "map_flash", "363", "408", "9", "#fff");
	so.addParam("allowScriptAccess", "sameDomain");
	so.addParam("quality", "high");
    so.addParam("scale", "noscale");
    so.addParam("wmode", "opaque");
    so.addVariable('color', '0xee9117');
    so.addVariable('basePath', base_url+'/files/swf/');
    so.useExpressInstall(base_url+'/files/swf/expressinstall.swf');
	so.write("wrap_flash");
	
	// Champs de formulaire
	$('#champ_coche_partout').click(everywhereOnClick);
	$('#champ_region').change(regionsOnChange);
	$('#champ_ville').change(villesOnChange);
	
	// Pagination
	initPagination();
});

/**
 * Comportement des champs de formulaire quand on coche la checkbox "Partout"
 * 
 * @name	everywhereOnClick
 * @author	Rémy Vuong <remy@upian.com>
 * @date	2009-02-05
 * @version	1.0
 */
function everywhereOnClick() {
	if ($(this).attr('checked')==true) {
		$('#champ_region').find('option').each(function(){
			if ($(this).attr('value')==0) {
				$(this).attr('selected', 'selected');
			}
			else {
				$(this).attr('selected', '');
			}
		});
		
		var reg_id = 0;
		$.ajax({
			url: base_url + "/f_map/region/" + reg_id + "/villes",
			type: "GET",
			data: '',
			dataType: "xml",
			error: function(){},
			beforeSend: function(){},
			success: function(xml){
				document.getElementById('champ_ville').options.length = 0;
				
				$('#champ_ville').append('<option value="0">Votre ville</option>');
				$(xml).find('data').find('ville').each(function() {
					var vil_id = $(this).attr("id");
					var vil_name = $(this).attr("name");
					$('#champ_ville').append('<option value="'+vil_id+'">'+vil_name+'</option>');
				});
				
				document.getElementById('map_flash').goRegion(reg_id);
			}
		});
		
		document.getElementById('map_flash').un_selected_ville_all();
		document.getElementById('map_flash').un_selected_region_all();
	}
}

/**
 * Actions lors d'un changement de région
 * -> mise à jour des villes dans le menu de sélection en dessous
 * -> mise à jour de la map Flash
 * 
 * @name	regionsOnChange
 * @author	Rémy Vuong <remy@upian.com>
 * @date	2009-02-06
 * @version	1.0
 */
function regionsOnChange() {
	var reg_id = $(this).val();
	
	if ( reg_id == 0 ) {
		$('#champ_coche_partout').attr('checked', 'checked');
		document.getElementById('map_flash').un_selected_region_all();
	}
	else {
		$('#champ_coche_partout').attr('checked', '');
	}
	
	$.ajax({
		url: base_url + "/f_map/region/" + reg_id + "/villes",
		type: "GET",
		data: '',
		dataType: "xml",
		error: function(){},
		beforeSend: function(){},
		success: function(xml){
			document.getElementById('champ_ville').options.length = 0;
			
			if (reg_id==0) {
				$('#champ_ville').append('<option value="0">Votre ville</option>');
			}
			else {
				$('#champ_ville').append('<option value="0">Toutes les villes</option>');
			}
			
			$(xml).find('data').find('ville').each(function() {
				var vil_id = $(this).attr("id");
				var vil_name = $(this).text();
				$('#champ_ville').append('<option value="'+vil_id+'">'+vil_name+'</option>');
			});
			
			document.getElementById('map_flash').goRegion(reg_id);
		}
	});
	
	return false;
}

/**
 * Actions lors d'un changement de ville
 * -> si la region est sur "toutes", on sélectionne la région de la ville active
 * -> mise à jour de la map Flash
 * 
 * @name	villesOnChange
 * @author	Rémy Vuong <remy@upian.com>
 * @date	2009-02-06
 * @version	1.0
 */
function villesOnChange() {
	var vil_id = $(this).val();
	
	if (vil_id==0) {
		var reg_id = $('#champ_region').val();
		document.getElementById('map_flash').un_selected_ville_all();
		document.getElementById('map_flash').goRegion(reg_id);
	}
	else {
		$('#champ_coche_partout').attr('checked', '');
		
		$.ajax({
			url: base_url + "/f_map/ville/" + vil_id + "/region",
			type: "GET",
			data: '',
			dataType: "xml",
			error: function(){},
			beforeSend: function(){},
			success: function(xml){
				var reg_id = $(xml).find('data').find('region').attr('id');
				var tmp_id = 0;
				$('#champ_region').find('option').each(function(){
					tmp_id = $(this).val();
					if (tmp_id==reg_id) {
						$(this).attr('selected', 'selected');
					}
				});
				
				var reg_id = $('#champ_region').val();
				
				document.getElementById('map_flash').goVille(reg_id, vil_id);
			}
		});
		
	}
	
	return false;
}

/**
 * Actions lors d'une requete à partir de la map Flash
 * -> sélection de la région passée en paramètre
 * -> si la ville est passée aussi, sélection de la ville
 * 
 * @name	updateRegionAndVille
 * @author	Rémy Vuong <remy@upian.com>
 * @date	2009-02-06
 * @version	1.0
 * @param	int reg_id Identifiant de la région
 * @param	int vil_id Identifiant de la ville
 * @return	void
 */
function updateRegionAndVille(reg_id, vil_id) {
	// Une région est choisie (on n'a pas la possibilité de cocher "Partout" à partir du swf
	
	// Mise à jour de la région
	var tmp_id = 0;
	$('#champ_region').find('option').each(function(){
		tmp_id = $(this).val();
		if (tmp_id==reg_id) {
			$(this).attr('selected', 'selected');
		}
	});
	
	if ( vil_id == null ) {
		// Mise à jour des villes de la région
		$.ajax({
			url: base_url + "/f_map/region/" + reg_id + "/villes",
			type: "GET",
			data: '',
			dataType: "xml",
			error: function(){},
			beforeSend: function(){},
			success: function(xml){
				document.getElementById('champ_ville').options.length = 0;
				
				if (reg_id==0) {
					$('#champ_ville').append('<option value="0">Votre ville</option>');
				}
				else {
					$('#champ_ville').append('<option value="0">Toutes les villes</option>');
				}
				
				$(xml).find('data').find('ville').each(function() {
					var vil_id = $(this).attr("id");
					var vil_name = $(this).text();
					$('#champ_ville').append('<option value="'+vil_id+'">'+vil_name+'</option>');
				});
				
				document.getElementById('map_flash').goRegion(reg_id);
			}
		});
	}
	else {
		// Sélectionne la ville
		
		$('#champ_ville').find('option').each(function() {
			tmp_id = $(this).val();
			// var checked = (tmp_id == vil_id);
			$(this).attr('selected', (tmp_id == vil_id) ? 'selected' : '')
		});
		
	}
	
	/*
	else {
		// UpdateVille
		$.ajax({
			url: base_url + "/f_map/region/" + reg_id + "/villes",
			type: "GET",
			data: '',
			dataType: "xml",
			error: function(){},
			beforeSend: function(){},
			success: function(xml){
				document.getElementById('champ_ville').options.length = 0;
				$('#champ_ville').append('<option value="0">Votre ville</option>');
				$(xml).find('data').find('ville').each(function() {
					var tmp_vil_id = $(this).attr("id");
					var tmp_vil_name = $(this).attr("name");
					
					if (vil_id!=null && tmp_vil_id==vil_id) {
						$('#champ_ville').append('<option value="'+tmp_vil_id+'" selected="selected">'+tmp_vil_name+'</option>');
					}
					else {
						$('#champ_ville').append('<option value="'+tmp_vil_id+'">'+tmp_vil_name+'</option>');
					}
					
				});
			}
		});
		
	}
	*/
	
	// Décoche la checkbox "Partout" si une région (éventuellement une ville) est choisie
	if (reg_id!=0) { $('#champ_coche_partout').attr('checked', ''); }
	
	return false;
}

/**
 * Action lancée par la map Flash pour rafraichissement du contenu de page en fonction des critères géographiques
 * 
 * @name	vasYBalanceLesResultsMonLapin
 * @author	Rémy Vuong <remy@upian.com>
 * @date	2009-02-06
 * @version	1.0
 * @param	int reg_id Identifiant de la région
 * @param	int vil_id Identifiant de la ville
 * @return	void
 */
var offset = 0;

function vasYBalanceLesResultsMonLapin(reg_id, vil_id) {
	var cat_id = $('#select_theme').val();
	var reg_id = $('#champ_region').val();
	var vil_id = $('#champ_ville').val();
	
	getAssiociationsSearch(cat_id, reg_id, vil_id, offset);
	
	return false;
}

/**
 * 
 */
function getAssiociationsSearch(cat_id, reg_id, vil_id, offset) {
	var s_url = base_url + '/search/associations';
	if ( offset != 0 ) { s_url += '/' + offset; }
	var s_qs = '&cat_id='+cat_id+'&reg_id='+reg_id+'&vil_id='+vil_id;
	
	// var s_url = base_url+'/search/associations';
	// s_url += '/' + paged;
	// var s_qs = '&cat_id='+cat_id+'&reg_id='+reg_id+'&vil_id='+vil_id+'&paged='+paged;
	
	// Requête Ajax de recherche
	$.ajax({
		url: s_url,
		type: 'POST',
		data: s_qs,
		dataType: 'xml',
		beforeSend: function(){
			$('.asso_remontees_a').empty();
			$('.asso_remontees_b').empty();
			$('.pagination').empty();
		},
		error: function(){ alert('error'); },
		success: function(xml) {
			var results_number = $(xml).find('results').attr('number');
			var pages_number = $(xml).find('results').attr('pages_number');
			var pagination = $(xml).find('pagination').text();
			pagination = unescape(pagination);
			pagination = pagination.replace(/\+/gi, ' ');
			
			var html = '';
			
			if (results_number==0) {
				html += '<div class="asso_resultats_recherche">';
				html += '	<div class="title"><img src="'+base_url+'/theme/front/img/interface/h2_asso_resultat.png" alt="résultat de recherche" /></div>';
				html += '	<h2><span>Pas de résultats</span></h2>';
				html += '</div>';
			}
			else {
				html += '<div id="lst_top" class="asso_resultats_recherche">';
				html += '	<div class="title"><img src="'+base_url+'/theme/front/img/interface/h2_asso_resultat.png" alt="résultat de recherche" /></div>';
				html += '	<h2><span>'+results_number+' Associations LGBT Friendly</span></h2>';
				html += '</div>';
				
				$(xml).find('results').find("association").each(function(){
					var aso_id = $(this).attr('aso_id');
					var aso_nom = $(this).attr('aso_nom');
					var aso_nom_seo = $(this).attr('aso_nom_seo');
					var aso_public = $(this).attr('aso_public');
					var aso_description = $(this).attr('aso_description');
					var cat_nom = $(this).find('categorie').attr('cat_nom');
					var cat_seo = $(this).find('categorie').attr('cat_seo');
					var aso_ville = $(this).attr('aso_ville');
					var reg_nom = $(this).find('region').attr('reg_nom');
					
					
					switch(aso_public) {
						case 'Garçons' :
						case 'gay' :
							aso_public = '<span class="picto picto_gay">Gay</span>';
							break;
						case 'Filles' :
						case 'lesbien' :
							aso_public = '<span class="picto picto_lesbien">Lesbien</span>';
							break;
						case 'Gay-friendly' :
							aso_public = '<span class="picto picto_gay">Gay-friendly</span>';
							break;
						case 'LGBT_friendly' :
							aso_public = '<span class="picto picto_gay">&nbsp;</span><span class="picto picto_lesbien">LGBT-friendly</span>';
							break;
						case 'Garçons et filles' :
						case 'gay_et_lesbien' :
						case 'Tout' :
						default :
							aso_public = '<span class="picto picto_gay">&nbsp;</span><span class="picto picto_lesbien">Gay et Lesbien</span>';
					}
					
					html += '<div class="remontee">';
					html += '    <h3><a href="'+base_url+'/associations/adresse/'+cat_seo+'/'+aso_nom_seo+'-'+aso_id+'">'+aso_nom+'</a></h3>';
					html += '    <div class="precise"><span class="tag_rubrique">'+cat_nom+'</span> / '+aso_public+'</div>';
					html += '    <div class="cleaner">&nbsp;</div>';
					html += '    <div class="lieu">'+aso_ville+' <span class="bullet">•</span> '+reg_nom+'</div>';
					if (aso_description.length > 0) { html += '    <p>'+aso_description+'</p>'; }
					html += '    <div class="infos"><a href="'+base_url+'/associations/adresse/'+cat_seo+'/'+aso_nom_seo+'-'+aso_id+'">Voir l’association</a> <!-- span><strong>3</strong> Rendez-vous</span //--></div>';
					html += '    <div class="cleaner">&nbsp;</div>';
					html += '</div>';
				});
				
				// Pagination
				html += pagination;
			}
			
			// $('.asso_remontees_a').append(html);
			$('.asso_remontees_a').html(html);
			initPagination();
		}
	});
}

/**
 * Initialisation du fonctionnement de la pagination
 * 
 * @name	initPagination
 * @author	Rémy Vuong <remy@upian.com>
 * @date	2010-03-26
 * @version	1.0
 */
function initPagination() {
	$('.dyn_pagination ul li a').click(function(e) {
		var href = $(this).attr('href');
		var s = '/';
		var offset = parseInt( href.substring( href.lastIndexOf(s) + s.length, href.length ) );
		
		var cat_id = $('#select_theme').val();
		var reg_id = $('#champ_region').val();
		var vil_id = $('#champ_ville').val();
		
		getAssiociationsSearch(cat_id, reg_id, vil_id, offset);
		
		$(document).scrollTo( {top:'900px'}, 400 );
		
		return false;
	});
}
