| 836 | jpm | 1 | /*+--------------------------------------------------------------------------------------------------------+*/
 | 
        
           |  |  | 2 | // PARAMÊTRES et CONSTANTES
 | 
        
           | 1041 | aurelien | 3 | /**
 | 
        
           | 1586 | jpm | 4 | * Indication de certaines variables ajoutée par php
 | 
        
           | 1041 | aurelien | 5 | * var communeImageUrl ;
 | 
        
           |  |  | 6 | * var pointImageUrl ;
 | 
        
           |  |  | 7 | * var groupeImageUrlTpl ;
 | 
        
           |  |  | 8 | */
 | 
        
           | 1586 | jpm | 9 | var DEBUG = false,// Mettre à true pour afficher les messages de débogage
 | 
        
           |  |  | 10 | 	pointsOrigine = null,
 | 
        
           |  |  | 11 | 	boundsOrigine = null,
 | 
        
           |  |  | 12 | 	markerClusterer = null,
 | 
        
           |  |  | 13 | 	map = null,
 | 
        
           |  |  | 14 | 	infoBulle = new google.maps.InfoWindow(),
 | 
        
           |  |  | 15 | 	stations = null,
 | 
        
           |  |  | 16 | 	pointClique = null,
 | 
        
           |  |  | 17 | 	carteCentre = new google.maps.LatLng(25, 10),
 | 
        
           |  |  | 18 | 	carteOptions = {
 | 
        
           |  |  | 19 | 		zoom: 3,
 | 
        
           |  |  | 20 | 		center:carteCentre,
 | 
        
           | 2287 | mathias | 21 | 		mapTypeId: 'OSM',
 | 
        
           | 1586 | jpm | 22 | 		mapTypeControlOptions: {
 | 
        
           | 2323 | mathias | 23 | 			mapTypeIds: ['OSM',
 | 
        
           | 1586 | jpm | 24 | 				google.maps.MapTypeId.ROADMAP,
 | 
        
           |  |  | 25 | 				google.maps.MapTypeId.HYBRID,
 | 
        
           |  |  | 26 | 				google.maps.MapTypeId.SATELLITE,
 | 
        
           |  |  | 27 | 				google.maps.MapTypeId.TERRAIN]
 | 
        
           |  |  | 28 | 		},
 | 
        
           | 2318 | mathias | 29 | 		scaleControl: true,
 | 
        
           | 1586 | jpm | 30 | 		zoomControlOptions: {
 | 
        
           |  |  | 31 | 			style: google.maps.ZoomControlStyle.LARGE,
 | 
        
           |  |  | 32 | 			position: google.maps.ControlPosition.LEFT_CENTER
 | 
        
           |  |  | 33 | 		},
 | 
        
           |  |  | 34 | 		panControl: false
 | 
        
           | 1438 | aurelien | 35 | 	},
 | 
        
           | 1586 | jpm | 36 | 	osmMapType = new google.maps.ImageMapType({
 | 
        
           |  |  | 37 | 		getTileUrl: function(coord, zoom) {
 | 
        
           | 2323 | mathias | 38 | 			return "http://osm.tela-botanica.org/tuiles/osmfr/" + // cache de tuiles avec nginx
 | 
        
           | 1586 | jpm | 39 | 			zoom + "/" + coord.x + "/" + coord.y + ".png";
 | 
        
           |  |  | 40 | 		},
 | 
        
           |  |  | 41 | 		tileSize: new google.maps.Size(256, 256),
 | 
        
           |  |  | 42 | 		isPng: true,
 | 
        
           |  |  | 43 | 		alt: "OpenStreetMap",
 | 
        
           |  |  | 44 | 		name: "OSM",
 | 
        
           |  |  | 45 | 		maxZoom: 19
 | 
        
           |  |  | 46 | 	}),
 | 
        
           |  |  | 47 | 	ctaLayer = null,
 | 
        
           |  |  | 48 | 	pagineur = {'limite':300, 'start':0, 'total':0, 'stationId':null, 'format':'tableau'},
 | 
        
           |  |  | 49 | 	station = {'commune':'', 'obsNbre':0},
 | 
        
           |  |  | 50 | 	obsStation = new Array(),
 | 
        
           |  |  | 51 | 	obsPage = new Array(),
 | 
        
           |  |  | 52 | 	taxonsCarte = new Array(),
 | 
        
           |  |  | 53 | 	mgr = null,
 | 
        
           |  |  | 54 | 	marqueursCache = new Array(),
 | 
        
           |  |  | 55 | 	zonesCache = new Array(),
 | 
        
           |  |  | 56 | 	requeteChargementPoints,
 | 
        
           |  |  | 57 | 	urlVars = null;
 | 
        
           |  |  | 58 |   | 
        
           | 836 | jpm | 59 | /*+--------------------------------------------------------------------------------------------------------+*/
 | 
        
           |  |  | 60 | // INITIALISATION DU CODE
 | 
        
           |  |  | 61 |   | 
        
           |  |  | 62 | //Déclenchement d'actions quand JQuery et le document HTML sont OK
 | 
        
           |  |  | 63 | $(document).ready(function() {
 | 
        
           |  |  | 64 | 	initialiserWidget();
 | 
        
           |  |  | 65 | });
 | 
        
           |  |  | 66 |   | 
        
           |  |  | 67 | function initialiserWidget() {
 | 
        
           | 1142 | aurelien | 68 | 	urlVars = getUrlVars();
 | 
        
           | 1448 | aurelien | 69 | 	dimensionnerCarte();
 | 
        
           | 1442 | aurelien | 70 | 	definirTailleOverlay();
 | 
        
           | 1450 | aurelien | 71 | 	initialiserCarte();
 | 
        
           | 1442 | aurelien | 72 | 	attribuerListenersOverlay();
 | 
        
           | 1438 | aurelien | 73 | 	centrerTitreEtStats();
 | 
        
           | 836 | jpm | 74 | 	initialiserAffichagePanneauLateral();
 | 
        
           | 980 | jpm | 75 | 	initialiserGestionnaireMarqueurs()
 | 
        
           | 836 | jpm | 76 | 	initialiserInfoBulle();
 | 
        
           | 941 | jpm | 77 | 	initialiserFormulaireContact();
 | 
        
           | 836 | jpm | 78 | 	chargerLimitesCommunales();
 | 
        
           | 1032 | aurelien | 79 | 	attribuerListenerCarte();
 | 
        
           | 836 | jpm | 80 | }
 | 
        
           |  |  | 81 |   | 
        
           | 1586 | jpm | 82 | function getUrlVars() {
 | 
        
           |  |  | 83 | 	var vars = [], hash;
 | 
        
           |  |  | 84 | 	if (window.location.href.indexOf('?') != -1) {
 | 
        
           |  |  | 85 | 		var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
 | 
        
           |  |  | 86 | 		for (var i = 0; i < hashes.length; i++) {
 | 
        
           |  |  | 87 | 			hash = hashes[i].split('=');
 | 
        
           |  |  | 88 | 			vars.push(hash[0]);
 | 
        
           |  |  | 89 | 			vars[hash[0]] = hash[1];
 | 
        
           |  |  | 90 | 		}
 | 
        
           |  |  | 91 | 	}
 | 
        
           |  |  | 92 | 	return vars;
 | 
        
           | 1142 | aurelien | 93 | }
 | 
        
           |  |  | 94 |   | 
        
           | 915 | jpm | 95 | /*+--------------------------------------------------------------------------------------------------------+*/
 | 
        
           |  |  | 96 | // AFFICHAGE GÉNÉRAL
 | 
        
           |  |  | 97 |   | 
        
           | 1438 | aurelien | 98 | function afficherTitreCarteEtStats() {
 | 
        
           | 980 | jpm | 99 | 	if (stations != null && taxonsCarte.length > 0) {
 | 
        
           | 1039 | aurelien | 100 | 		var obsNbre = stations.stats.observations;
 | 
        
           | 1173 | aurelien | 101 | 		var obsNbreFormate = obsNbre;
 | 
        
           |  |  | 102 | 		if(obsNbre != 0) {
 | 
        
           |  |  | 103 | 		    obsNbreFormate = stations.stats.observations.formaterNombre();
 | 
        
           |  |  | 104 | 		}
 | 
        
           | 1039 | aurelien | 105 | 		var plteNbre = taxonsCarte.length;
 | 
        
           | 1173 | aurelien | 106 | 		var plteNbreFormate = plteNbre;
 | 
        
           | 1586 | jpm | 107 | 		if (plteNbre != 0) {
 | 
        
           |  |  | 108 | 			plteNbreFormate = taxonsCarte.length.formaterNombre();
 | 
        
           | 1173 | aurelien | 109 | 		}
 | 
        
           | 1039 | aurelien | 110 | 		var communeNbre = stations.stats.communes;
 | 
        
           | 1173 | aurelien | 111 | 		var communeNbreFormate = communeNbre;
 | 
        
           |  |  | 112 | 		if(communeNbre != 0) {
 | 
        
           |  |  | 113 | 		   communeNbreFormate = stations.stats.communes.formaterNombre();
 | 
        
           |  |  | 114 | 		}
 | 
        
           | 1172 | aurelien | 115 | 		var stationNbre = stations.stats.stations;
 | 
        
           | 1173 | aurelien | 116 | 		var stationNbreFormate = stationNbre;
 | 
        
           |  |  | 117 | 		if(stationNbre != 0) {
 | 
        
           |  |  | 118 | 		  	stationNbreFormate = stations.stats.stations.formaterNombre();
 | 
        
           |  |  | 119 | 		}
 | 
        
           | 980 | jpm | 120 |   | 
        
           | 1438 | aurelien | 121 | 		var stats = obsNbreFormate+' observation';
 | 
        
           |  |  | 122 | 		stats += (obsNbre > 1) ? 's' : '' ;
 | 
        
           | 1434 | aurelien | 123 |   | 
        
           | 1586 | jpm | 124 | 		if (photos != null && photos == 1) {
 | 
        
           | 1438 | aurelien | 125 | 			stats += ' avec photos ';
 | 
        
           | 1434 | aurelien | 126 | 		}
 | 
        
           | 980 | jpm | 127 |   | 
        
           | 1438 | aurelien | 128 | 		stats += ' sur '+(stationNbre+ communeNbre)+' station';
 | 
        
           |  |  | 129 | 		stats += (stationNbre > 1) ? 's' : '' ;
 | 
        
           | 1447 | aurelien | 130 |   | 
        
           | 980 | jpm | 131 | 		if (nt == '*') {
 | 
        
           | 1438 | aurelien | 132 | 			stats += ' parmi '+plteNbreFormate+' plante';
 | 
        
           |  |  | 133 | 			stats += (plteNbre > 1) ? 's' : '' ;
 | 
        
           | 980 | jpm | 134 | 		} else {
 | 
        
           | 1430 | aurelien | 135 | 			if($('.taxon-actif .taxon').text() != '') {
 | 
        
           |  |  | 136 | 				var element = $('.taxon-actif .taxon').clone();
 | 
        
           |  |  | 137 | 				element.children().remove();
 | 
        
           | 1586 | jpm | 138 | 				var taxon = element.text();
 | 
        
           |  |  | 139 | 				stats += ' pour '+taxon;
 | 
        
           | 1430 | aurelien | 140 | 			} else {
 | 
        
           |  |  | 141 | 				if (taxonsCarte[0]) {
 | 
        
           |  |  | 142 | 					var taxon = taxonsCarte[0];
 | 
        
           | 1438 | aurelien | 143 | 					stats += ' pour '+taxon.nom;
 | 
        
           | 1430 | aurelien | 144 | 				}
 | 
        
           | 980 | jpm | 145 | 			}
 | 
        
           |  |  | 146 | 		}
 | 
        
           |  |  | 147 |   | 
        
           | 1514 | aurelien | 148 | 		if(utilisateur != '*') {
 | 
        
           |  |  | 149 | 			stats += ' pour l\'utilisateur '+utilisateur+' ';
 | 
        
           |  |  | 150 | 		}
 | 
        
           |  |  | 151 |   | 
        
           | 1438 | aurelien | 152 | 		$('#zone-stats').show();
 | 
        
           | 1448 | aurelien | 153 | 	} else {
 | 
        
           |  |  | 154 | 		stats = "Aucune observation pour ces critères ou pour cette zone";
 | 
        
           | 980 | jpm | 155 | 	}
 | 
        
           | 1448 | aurelien | 156 |   | 
        
           |  |  | 157 | 	$('#zone-stats > h1').text(stats);
 | 
        
           | 1438 | aurelien | 158 | 	centrerTitreEtStats();
 | 
        
           | 836 | jpm | 159 | }
 | 
        
           |  |  | 160 |   | 
        
           | 1442 | aurelien | 161 | function attribuerListenersOverlay() {
 | 
        
           |  |  | 162 | 	$(window).resize(function() {
 | 
        
           | 1448 | aurelien | 163 | 		dimensionnerCarte();
 | 
        
           | 1442 | aurelien | 164 | 		definirTailleOverlay();
 | 
        
           |  |  | 165 | 		centrerTitreEtStats();
 | 
        
           | 1445 | aurelien | 166 | 		programmerRafraichissementCarte();
 | 
        
           | 1450 | aurelien | 167 | 		google.maps.event.trigger($('#carte'), 'resize');
 | 
        
           | 1442 | aurelien | 168 | 	});
 | 
        
           |  |  | 169 |   | 
        
           |  |  | 170 | 	$('#lien_plein_ecran a').click(function(event) {
 | 
        
           |  |  | 171 | 		window.open(window.location.href);
 | 
        
           | 1445 | aurelien | 172 | 		event.preventDefault();
 | 
        
           | 1442 | aurelien | 173 | 	});
 | 
        
           |  |  | 174 |   | 
        
           | 1447 | aurelien | 175 | 	$('#lien-voir-cc a').click(function(event) {
 | 
        
           |  |  | 176 | 		ouvrirPopUp(this, 'Avertissement', event);
 | 
        
           | 1445 | aurelien | 177 | 		event.preventDefault();
 | 
        
           | 1442 | aurelien | 178 | 	});
 | 
        
           |  |  | 179 | }
 | 
        
           |  |  | 180 |   | 
        
           | 1514 | aurelien | 181 | var tailleMaxFiltreUtilisateur;
 | 
        
           | 1442 | aurelien | 182 | function definirTailleOverlay() {
 | 
        
           | 1586 | jpm | 183 | 	var largeurViewPort = $(window).width(),
 | 
        
           |  |  | 184 | 		taille = '1.6',
 | 
        
           |  |  | 185 | 		tailleMaxLogo = 60,
 | 
        
           |  |  | 186 | 		tailleMaxIcones = 10,
 | 
        
           |  |  | 187 | 		padding_icones = 8,
 | 
        
           |  |  | 188 | 		tailleFiltre = 80;
 | 
        
           | 1514 | aurelien | 189 | 	tailleMaxFiltreUtilisateur = 350;
 | 
        
           |  |  | 190 | 	$('#raz-filtre-utilisateur').css('display', 'block');
 | 
        
           | 1448 | aurelien | 191 | 	if (largeurViewPort <= 450) {
 | 
        
           |  |  | 192 | 		taille = '1';
 | 
        
           |  |  | 193 | 		tailleMaxIcones = 10;
 | 
        
           |  |  | 194 | 		tailleFiltre = 65;
 | 
        
           |  |  | 195 | 		padding_icones = 2;
 | 
        
           |  |  | 196 | 		var tailleMaxLogo = 50;
 | 
        
           | 1514 | aurelien | 197 | 		$('#raz-filtre-utilisateur').css('display', 'inline');
 | 
        
           | 1448 | aurelien | 198 | 	} else if (largeurViewPort <= 500) {
 | 
        
           | 1447 | aurelien | 199 | 		taille = '1.2';
 | 
        
           | 1442 | aurelien | 200 | 		tailleMaxIcones = 10;
 | 
        
           | 1447 | aurelien | 201 | 		tailleFiltre = 65;
 | 
        
           |  |  | 202 | 		padding_icones = 2;
 | 
        
           | 1448 | aurelien | 203 | 		var tailleMaxLogo = 50;
 | 
        
           | 1514 | aurelien | 204 | 		tailleMaxFiltreUtilisateur = 200;
 | 
        
           |  |  | 205 | 		$('#raz-filtre-utilisateur').css('display', 'inline');
 | 
        
           | 1442 | aurelien | 206 | 	} else if (largeurViewPort > 500 && largeurViewPort <= 800) {
 | 
        
           | 1447 | aurelien | 207 | 		taille = '1.4';
 | 
        
           | 1442 | aurelien | 208 | 		tailleMaxIcones = 15;
 | 
        
           |  |  | 209 | 		padding_icones = 6;
 | 
        
           | 1447 | aurelien | 210 | 		tailleFiltre = 65;
 | 
        
           | 1448 | aurelien | 211 | 		var tailleMaxLogo = 55;
 | 
        
           | 1514 | aurelien | 212 | 		tailleMaxFiltreUtilisateur = 250;
 | 
        
           | 1442 | aurelien | 213 | 	} else if (largeurViewPort > 800) {
 | 
        
           | 980 | jpm | 214 | 		taille = '1.6';
 | 
        
           | 1442 | aurelien | 215 | 		tailleMaxIcones = 20;
 | 
        
           |  |  | 216 | 		padding_icones = 8;
 | 
        
           | 1445 | aurelien | 217 | 		tailleFiltre = 80;
 | 
        
           | 1514 | aurelien | 218 | 		tailleMaxFiltreUtilisateur = 350;
 | 
        
           | 980 | jpm | 219 | 	}
 | 
        
           | 1438 | aurelien | 220 |   | 
        
           |  |  | 221 | 	// Aménagement de la taille de police selon l'écran
 | 
        
           | 980 | jpm | 222 | 	$("#carte-titre").css('font-size', taille+'em');
 | 
        
           | 1442 | aurelien | 223 |   | 
        
           | 1448 | aurelien | 224 | 	$("#zone-stats h1").css('font-size', Math.round((taille*0.75*100))/100+'em');
 | 
        
           | 1447 | aurelien | 225 | 	$("#zone-stats").css('padding', padding_icones+"px "+padding_icones+"px "+Math.round(padding_icones/4)+"px");
 | 
        
           |  |  | 226 | 	$('#zone-stats').height(tailleMaxIcones*1.5);
 | 
        
           | 1438 | aurelien | 227 |   | 
        
           | 1447 | aurelien | 228 | 	$("#zone-titre h1").css('font-size', (taille)+'em');
 | 
        
           |  |  | 229 | 	$("#zone-titre").css('padding', padding_icones+"px "+padding_icones+"px "+Math.round(padding_icones/4)+"px");
 | 
        
           |  |  | 230 | 	$('#zone-titre').height(tailleMaxIcones*2);
 | 
        
           |  |  | 231 |   | 
        
           | 1442 | aurelien | 232 | 	$('.icone').height(tailleMaxIcones);
 | 
        
           |  |  | 233 | 	$('#lien_plein_ecran').css("padding", padding_icones+"px "+padding_icones+"px "+Math.ceil(padding_icones/2)+"px");
 | 
        
           |  |  | 234 |   | 
        
           | 1447 | aurelien | 235 | 	$('#lien-voir-cc').css("font-size", taille+"em");
 | 
        
           |  |  | 236 | 	$('#lien-voir-cc').css("padding", padding_icones+"px");
 | 
        
           | 1442 | aurelien | 237 |   | 
        
           | 1447 | aurelien | 238 | 	$("#panneau-lateral").css('font-size', (taille*0.9)+'em');
 | 
        
           |  |  | 239 | 	$("#pl-contenu").css('font-size', (taille/2)+'em');
 | 
        
           |  |  | 240 |   | 
        
           | 1445 | aurelien | 241 | 	$("#panneau-lateral").css('padding', padding_icones+"px "+padding_icones+"px "+Math.round(padding_icones/4)+"px");
 | 
        
           | 1447 | aurelien | 242 | 	$('#pl-ouverture').height(((padding_icones*2)+$('#panneau-lateral').height())+"px");
 | 
        
           | 1445 | aurelien | 243 | 	$("#panneau-lateral").width(tailleFiltre);
 | 
        
           | 1514 | aurelien | 244 |   | 
        
           |  |  | 245 | 	$('#lien-affichage-filtre-utilisateur').width(tailleFiltre);
 | 
        
           |  |  | 246 | 	$('#lien-affichage-filtre-utilisateur').height(tailleFiltre*0.35);
 | 
        
           |  |  | 247 | 	$('#lien-affichage-filtre-utilisateur').css('font-size', (taille*0.9)+'em');
 | 
        
           |  |  | 248 | 	$('#conteneur-filtre-utilisateur').css('max-width',tailleMaxFiltreUtilisateur);
 | 
        
           | 1448 | aurelien | 249 |   | 
        
           |  |  | 250 | 	dimensionnerLogo(tailleMaxLogo);
 | 
        
           |  |  | 251 | 	dimensionnerImage(largeurViewPort);
 | 
        
           |  |  | 252 | 	redimensionnerControleTypeCarte(largeurViewPort);
 | 
        
           |  |  | 253 | }
 | 
        
           |  |  | 254 |   | 
        
           |  |  | 255 | function dimensionnerLogo(tailleMaxLogo) {
 | 
        
           |  |  | 256 | 	// Dimensionnement du logo
 | 
        
           | 1447 | aurelien | 257 | 	hauteurLogo = $('.image-logo').height();
 | 
        
           |  |  | 258 | 	// Redimensionnement du logo s'il est trop grand
 | 
        
           |  |  | 259 | 	// on perd en qualité mais ça vaut mieux que de casser l'affichage
 | 
        
           | 1586 | jpm | 260 | 	if (hauteurLogo > tailleMaxLogo) {
 | 
        
           | 1447 | aurelien | 261 | 		hauteurLogo = tailleMaxLogo;
 | 
        
           |  |  | 262 | 		$('.image-logo').css("top", "5px");
 | 
        
           |  |  | 263 | 		$('.image-logo').height(tailleMaxLogo);
 | 
        
           | 1438 | aurelien | 264 | 	}
 | 
        
           | 1447 | aurelien | 265 |   | 
        
           | 1586 | jpm | 266 | 	if (hauteurLogo == 0) {
 | 
        
           | 1447 | aurelien | 267 | 		$('.image-logo').load(function(event) {
 | 
        
           |  |  | 268 | 			definirTailleOverlay();
 | 
        
           |  |  | 269 | 		});
 | 
        
           |  |  | 270 | 		return;
 | 
        
           |  |  | 271 | 	}
 | 
        
           |  |  | 272 |   | 
        
           |  |  | 273 | 	largeurLogo = $('#logo img').width();
 | 
        
           | 980 | jpm | 274 | }
 | 
        
           |  |  | 275 |   | 
        
           | 1448 | aurelien | 276 | function dimensionnerImage(largeurViewPort) {
 | 
        
           |  |  | 277 | 	// Dimensionnement de l'image
 | 
        
           | 1586 | jpm | 278 | 	if (largeurViewPort > 500) {
 | 
        
           | 1448 | aurelien | 279 | 		largeurLogo = 155;
 | 
        
           |  |  | 280 | 	} else {
 | 
        
           |  |  | 281 | 		largeurLogo = 70;
 | 
        
           |  |  | 282 | 	}
 | 
        
           |  |  | 283 |   | 
        
           |  |  | 284 | 	$('#image-utilisateur img').width(largeurLogo);
 | 
        
           |  |  | 285 | }
 | 
        
           |  |  | 286 |   | 
        
           |  |  | 287 | function redimensionnerControleTypeCarte(largeurViewPort) {
 | 
        
           |  |  | 288 | 	if (largeurViewPort <= 500) {
 | 
        
           |  |  | 289 | 		carteOptions.mapTypeControlOptions.style = google.maps.MapTypeControlStyle.DROPDOWN_MENU;
 | 
        
           |  |  | 290 | 	} else {
 | 
        
           |  |  | 291 | 		carteOptions.mapTypeControlOptions.style = google.maps.MapTypeControlStyle.DEFAULT;
 | 
        
           |  |  | 292 | 	}
 | 
        
           |  |  | 293 |   | 
        
           | 1586 | jpm | 294 | 	if (map != null) {
 | 
        
           | 1450 | aurelien | 295 | 		map.setOptions(carteOptions);
 | 
        
           |  |  | 296 | 	}
 | 
        
           | 1448 | aurelien | 297 | }
 | 
        
           |  |  | 298 |   | 
        
           | 1438 | aurelien | 299 | function centrerTitreEtStats() {
 | 
        
           | 1442 | aurelien | 300 | 	centrerTitre();
 | 
        
           |  |  | 301 | 	centrerStats();
 | 
        
           |  |  | 302 | }
 | 
        
           |  |  | 303 |   | 
        
           |  |  | 304 | function centrerTitre() {
 | 
        
           | 1586 | jpm | 305 | 	var largeurViewPort = $(window).width(),
 | 
        
           |  |  | 306 | 		largeurTitre = $('#zone-titre').width(),
 | 
        
           |  |  | 307 | 		marge = (largeurViewPort - largeurTitre)/2;
 | 
        
           | 1438 | aurelien | 308 | 	$('#zone-titre').css("margin-left",marge);
 | 
        
           | 1586 | jpm | 309 |   | 
        
           | 1445 | aurelien | 310 | 	var tailleRestante = largeurViewPort - (marge + largeurTitre);
 | 
        
           | 1586 | jpm | 311 | 	if (tailleRestante <= 170) {
 | 
        
           | 1445 | aurelien | 312 | 		$('#zone-titre').css("top", "25px");
 | 
        
           |  |  | 313 | 	} else {
 | 
        
           |  |  | 314 | 		$('#zone-titre').css("top", "5px");
 | 
        
           |  |  | 315 | 	}
 | 
        
           | 1442 | aurelien | 316 | }
 | 
        
           |  |  | 317 |   | 
        
           |  |  | 318 | function centrerStats() {
 | 
        
           | 1586 | jpm | 319 | 	var largeurViewPort = $(window).width(),
 | 
        
           |  |  | 320 | 		largeurStats = $('#zone-stats').width(),
 | 
        
           |  |  | 321 | 		marge = ((largeurViewPort - largeurStats)/2);
 | 
        
           | 1448 | aurelien | 322 | 	$('#zone-stats').css("margin-left",marge);
 | 
        
           | 1438 | aurelien | 323 | }
 | 
        
           |  |  | 324 |   | 
        
           | 915 | jpm | 325 | /*+--------------------------------------------------------------------------------------------------------+*/
 | 
        
           |  |  | 326 | // CARTE
 | 
        
           |  |  | 327 |   | 
        
           | 1448 | aurelien | 328 | function dimensionnerCarte() {
 | 
        
           | 1450 | aurelien | 329 | 	var largeurViewPort = $(window).width();
 | 
        
           |  |  | 330 | 	var hauteurViewPort = $(window).height();
 | 
        
           |  |  | 331 | 	$('#carte').height(hauteurViewPort);
 | 
        
           |  |  | 332 | 	$('#carte').width(largeurViewPort);
 | 
        
           | 836 | jpm | 333 | }
 | 
        
           |  |  | 334 |   | 
        
           |  |  | 335 | function initialiserCarte() {
 | 
        
           |  |  | 336 | 	map = new google.maps.Map(document.getElementById('carte'), carteOptions);
 | 
        
           |  |  | 337 | 	// Ajout de la couche OSM à la carte
 | 
        
           |  |  | 338 | 	map.mapTypes.set('OSM', osmMapType);
 | 
        
           | 2318 | mathias | 339 |   | 
        
           |  |  | 340 | 	// écouteur sur changement de fond
 | 
        
           |  |  | 341 | 	google.maps.event.addListener( map, 'maptypeid_changed', function() {
 | 
        
           |  |  | 342 | 		// licence par défaut
 | 
        
           |  |  | 343 | 		var mention = 'Observations du réseau <a href="http://www.tela-botanica.org/site:botanique" ' +
 | 
        
           |  |  | 344 | 				'onClick="ouvrirNouvelleFenetre(this, event)">' +
 | 
        
           |  |  | 345 | 				'Tela Botanica' +
 | 
        
           |  |  | 346 | 			'</a> ';
 | 
        
           |  |  | 347 | 		if (map.getMapTypeId() == 'OSM') {
 | 
        
           |  |  | 348 | 			// ajout licence OSM
 | 
        
           |  |  | 349 | 			mention += ' - Carte : <a href="http://www.openstreetmap.org/copyright" target="_blank">© les contributeurs d’OpenStreetMap</a>' +
 | 
        
           |  |  | 350 | 				' - Tuiles : <a href="http://www.openstreetmap.fr" target="_blank">OsmFr</a>';
 | 
        
           |  |  | 351 | 		}
 | 
        
           |  |  | 352 | 		$('#origine-donnees').html(mention);
 | 
        
           |  |  | 353 | 	});
 | 
        
           | 836 | jpm | 354 | }
 | 
        
           |  |  | 355 |   | 
        
           | 980 | jpm | 356 | function initialiserGestionnaireMarqueurs() {
 | 
        
           |  |  | 357 | 	mgr = new MarkerManager(map);
 | 
        
           |  |  | 358 | }
 | 
        
           | 836 | jpm | 359 |   | 
        
           |  |  | 360 | function chargerLimitesCommunales() {
 | 
        
           |  |  | 361 | 	if (urlsLimitesCommunales != null) {
 | 
        
           |  |  | 362 | 		for (urlId in urlsLimitesCommunales) {
 | 
        
           |  |  | 363 | 			var url = urlsLimitesCommunales[urlId];
 | 
        
           | 1107 | aurelien | 364 | 			ctaLayer = new google.maps.KmlLayer(url, {preserveViewport: true});
 | 
        
           | 836 | jpm | 365 | 			ctaLayer.setMap(map);
 | 
        
           |  |  | 366 | 		}
 | 
        
           |  |  | 367 | 	}
 | 
        
           |  |  | 368 | }
 | 
        
           | 1039 | aurelien | 369 |   | 
        
           | 2350 | mathias | 370 | var listener = null, // pourquoi on le conserve, et on met 3 trucs différents dedans ?
 | 
        
           | 1586 | jpm | 371 | 	timer = null;
 | 
        
           |  |  | 372 |   | 
        
           | 1032 | aurelien | 373 | function attribuerListenerCarte() {
 | 
        
           | 2350 | mathias | 374 | 	listener = google.maps.event.addListener(map, 'bounds_changed', function() {
 | 
        
           | 1032 | aurelien | 375 | 		programmerRafraichissementCarte();
 | 
        
           | 980 | jpm | 376 | 	});
 | 
        
           | 2350 | mathias | 377 | 	listener = google.maps.event.addListener(map, 'zoom_changed', function() {
 | 
        
           | 1032 | aurelien | 378 | 		programmerRafraichissementCarte();
 | 
        
           |  |  | 379 | 	});
 | 
        
           | 2350 | mathias | 380 | 	listener = google.maps.event.addListener(map, 'click', function() {
 | 
        
           |  |  | 381 | 		if (infoBulleOuverte) {
 | 
        
           |  |  | 382 | 			infoBulle.close();
 | 
        
           |  |  | 383 | 			surFermetureInfoBulle();
 | 
        
           |  |  | 384 | 		}
 | 
        
           |  |  | 385 | 	});
 | 
        
           | 980 | jpm | 386 | }
 | 
        
           | 1586 | jpm | 387 |   | 
        
           | 1032 | aurelien | 388 | function programmerRafraichissementCarte() {
 | 
        
           | 1586 | jpm | 389 | 	if (timer != null) {
 | 
        
           |  |  | 390 | 		window.clearTimeout(timer);
 | 
        
           |  |  | 391 | 	}
 | 
        
           |  |  | 392 | 	if (requeteChargementPoints != null) {
 | 
        
           | 1035 | aurelien | 393 | 		requeteChargementPoints.abort();
 | 
        
           |  |  | 394 | 	}
 | 
        
           | 1032 | aurelien | 395 | 	timer = window.setTimeout(function() {
 | 
        
           | 1586 | jpm | 396 | 		if (map.getBounds() != undefined) {
 | 
        
           |  |  | 397 | 			var zoom = map.getZoom(),
 | 
        
           |  |  | 398 | 				lngNE = map.getBounds().getNorthEast().lng(),
 | 
        
           |  |  | 399 | 				lngSW = map.getBounds().getSouthWest().lng()
 | 
        
           |  |  | 400 | 			if (map.getBounds().getNorthEast().lng() < map.getBounds().getSouthWest().lng()) {
 | 
        
           | 1434 | aurelien | 401 | 				lngNE = 176;
 | 
        
           |  |  | 402 | 				lngSW = -156;
 | 
        
           |  |  | 403 | 			}
 | 
        
           | 1586 | jpm | 404 | 			var NELatLng = (map.getBounds().getNorthEast().lat())+'|'+(lngNE),
 | 
        
           |  |  | 405 | 				SWLatLng = (map.getBounds().getSouthWest().lat())+'|'+(lngSW);
 | 
        
           | 1342 | aurelien | 406 | 			chargerMarqueurs(zoom, NELatLng, SWLatLng);
 | 
        
           |  |  | 407 | 		} else {
 | 
        
           |  |  | 408 | 			programmerRafraichissementCarte();
 | 
        
           |  |  | 409 | 		}
 | 
        
           | 1586 | jpm | 410 | 	}, 400);
 | 
        
           | 1032 | aurelien | 411 | }
 | 
        
           | 836 | jpm | 412 |   | 
        
           | 980 | jpm | 413 | var marqueurs = new Array();
 | 
        
           |  |  | 414 | function chargerMarqueurs(zoom, NELatLng, SWLatLng) {
 | 
        
           | 2170 | mathias | 415 | 	cacherMessageAucuneObs();
 | 
        
           | 980 | jpm | 416 | 	var url = stationsUrl+
 | 
        
           |  |  | 417 | 		'&zoom='+zoom+
 | 
        
           |  |  | 418 | 		'&ne='+NELatLng+
 | 
        
           |  |  | 419 | 		'&sw='+SWLatLng;
 | 
        
           |  |  | 420 |   | 
        
           | 1586 | jpm | 421 | 	if (infoBulleOuverte) {
 | 
        
           | 1032 | aurelien | 422 | 		return;
 | 
        
           |  |  | 423 | 	}
 | 
        
           |  |  | 424 |   | 
        
           | 1586 | jpm | 425 | 	if (requeteChargementPoints != null) {
 | 
        
           | 1035 | aurelien | 426 | 		requeteChargementPoints.abort();
 | 
        
           | 1037 | aurelien | 427 | 		cacherMessageChargementPoints();
 | 
        
           | 1035 | aurelien | 428 | 	}
 | 
        
           |  |  | 429 |   | 
        
           |  |  | 430 | 	afficherMessageChargementPoints();
 | 
        
           |  |  | 431 | 	requeteChargementPoints = $.getJSON(url, function(data) {
 | 
        
           |  |  | 432 | 		rafraichirMarqueurs(data);
 | 
        
           |  |  | 433 | 		cacherMessageChargementPoints();
 | 
        
           | 980 | jpm | 434 | 	});
 | 
        
           |  |  | 435 | }
 | 
        
           |  |  | 436 |   | 
        
           | 1442 | aurelien | 437 | function centrerDansLaPage(selecteur) {
 | 
        
           | 1586 | jpm | 438 | 	var largeurViewport = $(window).width(),
 | 
        
           |  |  | 439 | 		hauteurViewport = $(window).height();
 | 
        
           | 1442 | aurelien | 440 | 	selecteur.css('display','block');
 | 
        
           | 1586 | jpm | 441 | 	var left = (largeurViewport/2) - (selecteur.width())/2,
 | 
        
           |  |  | 442 | 		top = (hauteurViewport/2) - (selecteur.height())/2
 | 
        
           | 1442 | aurelien | 443 | 	selecteur.css('left',left);
 | 
        
           |  |  | 444 | 	selecteur.css('top',top);
 | 
        
           |  |  | 445 | }
 | 
        
           |  |  | 446 |   | 
        
           | 1035 | aurelien | 447 | function afficherMessageChargementPoints() {
 | 
        
           | 2350 | mathias | 448 | 	//centrerDansLaPage($('#zone-chargement-point'));
 | 
        
           | 1035 | aurelien | 449 | 	$('#zone-chargement-point').css('display','block');
 | 
        
           |  |  | 450 | }
 | 
        
           |  |  | 451 |   | 
        
           |  |  | 452 | function cacherMessageChargementPoints() {
 | 
        
           |  |  | 453 | 	$('#zone-chargement-point').css('display','none');
 | 
        
           |  |  | 454 | }
 | 
        
           |  |  | 455 |   | 
        
           | 1442 | aurelien | 456 | function afficherMessageAucuneObs() {
 | 
        
           |  |  | 457 | 	centrerDansLaPage($('#message-aucune-obs'));
 | 
        
           | 1445 | aurelien | 458 | 	$('#message-aucune-obs').show();
 | 
        
           | 1442 | aurelien | 459 | }
 | 
        
           |  |  | 460 |   | 
        
           | 1445 | aurelien | 461 | function cacherMessageAucuneObs() {
 | 
        
           |  |  | 462 | 	centrerDansLaPage($('#message-aucune-obs'));
 | 
        
           |  |  | 463 | 	$('#message-aucune-obs').hide();
 | 
        
           |  |  | 464 | }
 | 
        
           |  |  | 465 |   | 
        
           | 1107 | aurelien | 466 | premierChargement = true;
 | 
        
           | 1142 | aurelien | 467 | function doitCentrerCarte() {
 | 
        
           |  |  | 468 | 	return premierChargement && urlVars != null && urlVars.length > 0;
 | 
        
           |  |  | 469 | }
 | 
        
           | 1107 | aurelien | 470 |   | 
        
           | 1035 | aurelien | 471 | function rafraichirMarqueurs(data) {
 | 
        
           | 1450 | aurelien | 472 | 	$.each(marqueurs, function(index, marqueur) {
 | 
        
           |  |  | 473 | 		marqueur.setMap(null);
 | 
        
           |  |  | 474 | 	});
 | 
        
           |  |  | 475 |   | 
        
           | 1448 | aurelien | 476 | 	marqueurs = new Array();
 | 
        
           |  |  | 477 | 	stations = null;
 | 
        
           |  |  | 478 |   | 
        
           | 1586 | jpm | 479 | 	if (data.points.length > 0) {
 | 
        
           | 1442 | aurelien | 480 | 		marqueurs = new Array();
 | 
        
           |  |  | 481 | 		stations = data;
 | 
        
           |  |  | 482 |   | 
        
           |  |  | 483 | 		$.each(stations.points, function (index, station) {
 | 
        
           |  |  | 484 | 			if(station != null) {
 | 
        
           |  |  | 485 | 				var nouveauMarqueur = creerMarqueur(station);
 | 
        
           |  |  | 486 | 				marqueurs.push(nouveauMarqueur);
 | 
        
           |  |  | 487 | 			}
 | 
        
           |  |  | 488 | 		});
 | 
        
           |  |  | 489 |   | 
        
           | 1586 | jpm | 490 | 		if (doitCentrerCarte()) {
 | 
        
           | 1442 | aurelien | 491 | 			premierChargement = false;
 | 
        
           | 1586 | jpm | 492 | 			var bounds = new google.maps.LatLngBounds(),
 | 
        
           |  |  | 493 | 				latMax = new google.maps.LatLng(data.stats.coordmax.latMax, data.stats.coordmax.lngMax),
 | 
        
           |  |  | 494 | 				latMin = new google.maps.LatLng(data.stats.coordmax.latMin, data.stats.coordmax.lngMin);
 | 
        
           | 1442 | aurelien | 495 | 			bounds.extend(latMax);
 | 
        
           |  |  | 496 | 			bounds.extend(latMin);
 | 
        
           |  |  | 497 | 			rendrePointsVisibles(bounds);
 | 
        
           | 1035 | aurelien | 498 | 		}
 | 
        
           | 1107 | aurelien | 499 | 	}
 | 
        
           | 1448 | aurelien | 500 |   | 
        
           |  |  | 501 | 	afficherTitreCarteEtStats();
 | 
        
           | 1035 | aurelien | 502 | }
 | 
        
           |  |  | 503 |   | 
        
           | 980 | jpm | 504 | function creerMarqueur(station) {
 | 
        
           | 1037 | aurelien | 505 | 	var titre = '';
 | 
        
           | 1586 | jpm | 506 | 	if (station.nbreMarqueur) {
 | 
        
           | 1037 | aurelien | 507 | 		titre = station.nbreMarqueur+' points renseignés';
 | 
        
           |  |  | 508 | 	} else {
 | 
        
           |  |  | 509 | 		if(station.nom) {
 | 
        
           |  |  | 510 | 			titre = station.nom;
 | 
        
           |  |  | 511 | 		}
 | 
        
           |  |  | 512 | 	}
 | 
        
           | 1434 | aurelien | 513 |   | 
        
           | 1586 | jpm | 514 | 	var icone = attribuerImageMarqueur(station['id'], station['nbreMarqueur']),
 | 
        
           |  |  | 515 | 		latLng = new google.maps.LatLng(station['lat'], station['lng']),
 | 
        
           |  |  | 516 | 			marqueur = new google.maps.Marker({
 | 
        
           |  |  | 517 | 				position: latLng,
 | 
        
           |  |  | 518 | 				icon: icone,
 | 
        
           |  |  | 519 | 				title: ''+titre,
 | 
        
           |  |  | 520 | 				map: map,
 | 
        
           |  |  | 521 | 				stationInfos: station
 | 
        
           |  |  | 522 | 			});
 | 
        
           | 980 | jpm | 523 | 	attribuerListenerClick(marqueur, station['id']);
 | 
        
           |  |  | 524 | 	marqueur.setMap(map);
 | 
        
           | 1586 | jpm | 525 | 	return marqueur;
 | 
        
           | 980 | jpm | 526 | }
 | 
        
           |  |  | 527 |   | 
        
           | 1039 | aurelien | 528 | function rendrePointsVisibles(bounds) {
 | 
        
           |  |  | 529 | 	map.setCenter(bounds.getCenter());
 | 
        
           |  |  | 530 | 	map.fitBounds(bounds);
 | 
        
           |  |  | 531 | }
 | 
        
           |  |  | 532 |   | 
        
           | 980 | jpm | 533 | function attribuerImageMarqueur(id, nbreMarqueur) {
 | 
        
           |  |  | 534 | 	var marqueurImage = null;
 | 
        
           |  |  | 535 | 	if (etreMarqueurCommune(id)) {
 | 
        
           |  |  | 536 | 		marqueurImage = new google.maps.MarkerImage(communeImageUrl, new google.maps.Size(24, 32));
 | 
        
           |  |  | 537 | 	} else if (etreMarqueurStation(id)) {
 | 
        
           |  |  | 538 | 		marqueurImage = new google.maps.MarkerImage(pointImageUrl, new google.maps.Size(16, 16));
 | 
        
           |  |  | 539 | 	} else if (etreMarqueurGroupe(id)) {
 | 
        
           | 1586 | jpm | 540 | 		var type = 0,
 | 
        
           |  |  | 541 | 			largeur = 0,
 | 
        
           |  |  | 542 | 			hauteur = 0;
 | 
        
           | 980 | jpm | 543 | 		if (nbreMarqueur != null) {
 | 
        
           |  |  | 544 | 			if (nbreMarqueur >= 2 && nbreMarqueur < 100 ) {
 | 
        
           |  |  | 545 | 				type = '1';
 | 
        
           |  |  | 546 | 				largeur = 53;
 | 
        
           |  |  | 547 | 				hauteur = 52;
 | 
        
           |  |  | 548 | 			} else if (nbreMarqueur >= 100 && nbreMarqueur < 1000 ) {
 | 
        
           |  |  | 549 | 				type = '2';
 | 
        
           |  |  | 550 | 				largeur = 56;
 | 
        
           |  |  | 551 | 				hauteur = 55;
 | 
        
           |  |  | 552 | 			} else if (nbreMarqueur >= 1000 && nbreMarqueur < 10000 ) {
 | 
        
           |  |  | 553 | 				type = '3';
 | 
        
           |  |  | 554 | 				largeur = 66;
 | 
        
           |  |  | 555 | 				hauteur = 65;
 | 
        
           |  |  | 556 | 			} else if (nbreMarqueur >= 10000 && nbreMarqueur < 20000 ) {
 | 
        
           |  |  | 557 | 				type = '4';
 | 
        
           |  |  | 558 | 				largeur = 78;
 | 
        
           |  |  | 559 | 				hauteur = 77;
 | 
        
           |  |  | 560 | 			} else if (nbreMarqueur >= 20000) {
 | 
        
           |  |  | 561 | 				type = '5';
 | 
        
           |  |  | 562 | 				largeur = 66;
 | 
        
           |  |  | 563 | 				hauteur = 65;
 | 
        
           |  |  | 564 | 			}
 | 
        
           |  |  | 565 | 		}
 | 
        
           |  |  | 566 | 		groupeImageUrl = groupeImageUrlTpl.replace(/\{type\}/, type);
 | 
        
           |  |  | 567 | 		groupeImageUrl = groupeImageUrl.replace(/\{nbre\}/, nbreMarqueur);
 | 
        
           |  |  | 568 | 		marqueurImage = new google.maps.MarkerImage(groupeImageUrl, new google.maps.Size(largeur, hauteur));
 | 
        
           |  |  | 569 | 	}
 | 
        
           |  |  | 570 | 	return marqueurImage
 | 
        
           |  |  | 571 | }
 | 
        
           |  |  | 572 |   | 
        
           |  |  | 573 | function attribuerListenerClick(marqueur, id) {
 | 
        
           |  |  | 574 | 	if (etreMarqueurCommune(id) || etreMarqueurStation(id)) {
 | 
        
           |  |  | 575 | 		google.maps.event.addListener(marqueur, 'click', surClickMarqueur);
 | 
        
           |  |  | 576 | 	} else if (etreMarqueurGroupe(id)) {
 | 
        
           |  |  | 577 | 		google.maps.event.addListener(marqueur, 'click', surClickGroupe);
 | 
        
           |  |  | 578 | 	}
 | 
        
           |  |  | 579 | }
 | 
        
           |  |  | 580 |   | 
        
           | 1445 | aurelien | 581 | var pointCentreAvantAffichageInfoBulle = null;
 | 
        
           | 1032 | aurelien | 582 | function surClickMarqueur(event) {
 | 
        
           | 1445 | aurelien | 583 | 	pointCentreAvantAffichageInfoBulle = map.getCenter();
 | 
        
           | 1586 | jpm | 584 |   | 
        
           | 1039 | aurelien | 585 | 	if(infoBulleOuverte) {
 | 
        
           | 1586 | jpm | 586 | 		infoBulle.close();
 | 
        
           | 1039 | aurelien | 587 | 	}
 | 
        
           | 1586 | jpm | 588 |   | 
        
           | 1035 | aurelien | 589 | 	pointClique = this;
 | 
        
           | 980 | jpm | 590 | 	infoBulle.open(map, this);
 | 
        
           |  |  | 591 | 	actualiserPagineur();
 | 
        
           | 1586 | jpm | 592 |   | 
        
           |  |  | 593 | 	var limites = map.getBounds(),
 | 
        
           |  |  | 594 | 		centre = limites.getCenter(),
 | 
        
           |  |  | 595 | 		nordEst = limites.getNorthEast(),
 | 
        
           |  |  | 596 | 		centreSudLatLng = new google.maps.LatLng(nordEst.lat(), centre.lng());
 | 
        
           | 1035 | aurelien | 597 | 	map.panTo(centreSudLatLng);
 | 
        
           |  |  | 598 |   | 
        
           | 980 | jpm | 599 | 	afficherInfoBulle();
 | 
        
           |  |  | 600 | }
 | 
        
           |  |  | 601 |   | 
        
           |  |  | 602 | function surClickGroupe() {
 | 
        
           |  |  | 603 | 	map.setCenter(this.getPosition());
 | 
        
           |  |  | 604 | 	var nouveauZoom = map.getZoom() + 2;
 | 
        
           |  |  | 605 | 	map.setZoom(nouveauZoom);
 | 
        
           |  |  | 606 | 	mgr.clearMarkers();
 | 
        
           |  |  | 607 | }
 | 
        
           |  |  | 608 |   | 
        
           |  |  | 609 | function etreMarqueurGroupe(id) {
 | 
        
           | 1586 | jpm | 610 | 	var groupe = false,
 | 
        
           |  |  | 611 | 		motif = /^GROUPE/;
 | 
        
           | 980 | jpm | 612 | 	if (motif.test(id)) {
 | 
        
           |  |  | 613 | 		groupe = true;
 | 
        
           |  |  | 614 | 	}
 | 
        
           |  |  | 615 | 	return groupe;
 | 
        
           |  |  | 616 | }
 | 
        
           |  |  | 617 |   | 
        
           |  |  | 618 | function etreMarqueurCommune(id) {
 | 
        
           | 1586 | jpm | 619 | 	var commune = false,
 | 
        
           |  |  | 620 | 		motif = /^COMMUNE:/;
 | 
        
           | 980 | jpm | 621 | 	if (motif.test(id)) {
 | 
        
           |  |  | 622 | 		commune = true;
 | 
        
           |  |  | 623 | 	}
 | 
        
           |  |  | 624 | 	return commune;
 | 
        
           |  |  | 625 | }
 | 
        
           |  |  | 626 |   | 
        
           |  |  | 627 | function etreMarqueurStation(id) {
 | 
        
           | 1586 | jpm | 628 | 	var station = false,
 | 
        
           |  |  | 629 | 		motif = /^STATION:/;
 | 
        
           | 980 | jpm | 630 | 	if (motif.test(id)) {
 | 
        
           |  |  | 631 | 		station = true;
 | 
        
           |  |  | 632 | 	}
 | 
        
           |  |  | 633 | 	return station;
 | 
        
           |  |  | 634 | }
 | 
        
           |  |  | 635 |   | 
        
           |  |  | 636 | function deplacerCarteSurPointClique() {
 | 
        
           | 915 | jpm | 637 | 	map.panTo(pointClique.position);
 | 
        
           |  |  | 638 | }
 | 
        
           |  |  | 639 |   | 
        
           |  |  | 640 | /*+--------------------------------------------------------------------------------------------------------+*/
 | 
        
           |  |  | 641 | // INFO BULLE
 | 
        
           | 1032 | aurelien | 642 | var infoBulleOuverte = false;
 | 
        
           | 915 | jpm | 643 | function initialiserInfoBulle() {
 | 
        
           |  |  | 644 | 	google.maps.event.addListener(infoBulle, 'domready', initialiserContenuInfoBulle);
 | 
        
           | 980 | jpm | 645 | 	google.maps.event.addListener(infoBulle, 'closeclick', surFermetureInfoBulle);
 | 
        
           |  |  | 646 | 	google.maps.event.addListener(infoBulle, 'content_changed', definirLargeurInfoBulle);
 | 
        
           | 1513 | aurelien | 647 | 	attribuerListenerLienSaisie();
 | 
        
           | 915 | jpm | 648 | }
 | 
        
           |  |  | 649 |   | 
        
           | 1513 | aurelien | 650 | function attribuerListenerLienSaisie() {
 | 
        
           |  |  | 651 | 	$('.lien-widget-saisie').live('click', function(event) {
 | 
        
           |  |  | 652 | 		event.preventDefault();
 | 
        
           |  |  | 653 | 		window.open($(this).attr('href'), '_blank');
 | 
        
           |  |  | 654 | 		return false;
 | 
        
           |  |  | 655 | 	});
 | 
        
           |  |  | 656 | }
 | 
        
           |  |  | 657 |   | 
        
           | 980 | jpm | 658 | function surFermetureInfoBulle() {
 | 
        
           | 1032 | aurelien | 659 | 	infoBulleOuverte = false;
 | 
        
           | 1445 | aurelien | 660 | 	map.panTo(pointCentreAvantAffichageInfoBulle);
 | 
        
           | 1032 | aurelien | 661 | 	programmerRafraichissementCarte();
 | 
        
           | 980 | jpm | 662 | }
 | 
        
           |  |  | 663 |   | 
        
           |  |  | 664 | function centrerInfoBulle() {
 | 
        
           | 1586 | jpm | 665 | 	var limites = map.getBounds(),
 | 
        
           |  |  | 666 | 		centre = limites.getCenter(),
 | 
        
           |  |  | 667 | 		nordEst = limites.getNorthEast(),
 | 
        
           |  |  | 668 | 		centreSudLatLng = new google.maps.LatLng(nordEst.lat(), centre.lng());
 | 
        
           | 980 | jpm | 669 | 	map.panTo(centreSudLatLng);
 | 
        
           |  |  | 670 | }
 | 
        
           |  |  | 671 |   | 
        
           | 915 | jpm | 672 | function afficherInfoBulle() {
 | 
        
           | 1586 | jpm | 673 | 	var obsHtml = $('#tpl-obs').html(),
 | 
        
           |  |  | 674 | 		largeur = definirLargeurInfoBulle(),
 | 
        
           |  |  | 675 | 		taillePolice = definirTaillePoliceInfoBulle();
 | 
        
           | 980 | jpm | 676 | 	obsHtml = obsHtml.replace(/\{largeur\}/, largeur);
 | 
        
           | 915 | jpm | 677 | 	infoBulle.setContent(obsHtml);
 | 
        
           | 1586 | jpm | 678 | 	$('#observations').css('font-size', taillePolice + 'em');
 | 
        
           | 1035 | aurelien | 679 | 	chargerObs(0, 0);
 | 
        
           | 1032 | aurelien | 680 | 	infoBulleOuverte = true;
 | 
        
           | 915 | jpm | 681 | }
 | 
        
           |  |  | 682 |   | 
        
           | 1513 | aurelien | 683 | //TODO utiliser cette fonction lors des remplacements de
 | 
        
           |  |  | 684 | //paramètres url sur changement de filtre
 | 
        
           |  |  | 685 | function parserFiltre(filtre) {
 | 
        
           | 1586 | jpm | 686 | 	var nvpair = {},
 | 
        
           |  |  | 687 | 		qs = filtre.replace('?', ''),
 | 
        
           |  |  | 688 | 		pairs = qs.split('&');
 | 
        
           | 1513 | aurelien | 689 | 	$.each(pairs, function(i, v){
 | 
        
           |  |  | 690 | 		var pair = v.split('=');
 | 
        
           |  |  | 691 | 		nvpair[pair[0]] = pair[1];
 | 
        
           |  |  | 692 | 	});
 | 
        
           |  |  | 693 | 	return nvpair;
 | 
        
           |  |  | 694 | }
 | 
        
           |  |  | 695 |   | 
        
           | 1586 | jpm | 696 | function mettreAJourUrlSaisie(obs) {
 | 
        
           |  |  | 697 | 	if (obs.observations.length > 0) {
 | 
        
           |  |  | 698 | 		var filtreTableau = parserFiltre(filtreCommun),
 | 
        
           |  |  | 699 | 			filtresGardes = new Array()
 | 
        
           |  |  | 700 | 			idObs = obs.observations[0].idObs;
 | 
        
           |  |  | 701 | 		filtre = '';
 | 
        
           |  |  | 702 | 		for (i in filtreTableau) {
 | 
        
           |  |  | 703 | 			if (filtreTableau[i] != undefined && filtreTableau[i] != '' && decodeURIComponent(filtreTableau[i]) != '*') {
 | 
        
           |  |  | 704 | 				filtresGardes.push(i + '=' + filtreTableau[i]);
 | 
        
           |  |  | 705 | 			}
 | 
        
           | 1513 | aurelien | 706 | 		}
 | 
        
           | 1586 | jpm | 707 | 		filtresGardes.push('id-obs=' + idObs);
 | 
        
           |  |  | 708 | 		if (filtresGardes.length > 0) {
 | 
        
           |  |  | 709 | 			filtre = '?' + filtresGardes.join('&');
 | 
        
           |  |  | 710 | 		}
 | 
        
           |  |  | 711 | 		var urlAvecFiltre = urlWidgetSaisie + filtre;
 | 
        
           |  |  | 712 | 		$('.lien-widget-saisie').attr('href', urlAvecFiltre).parents('.conteneur-lien-saisie').show();
 | 
        
           | 1513 | aurelien | 713 | 	}
 | 
        
           |  |  | 714 | }
 | 
        
           |  |  | 715 |   | 
        
           | 980 | jpm | 716 | function definirLargeurInfoBulle() {
 | 
        
           | 1586 | jpm | 717 | 	var largeurViewPort = $(window).width(),
 | 
        
           |  |  | 718 | 		largeurInfoBulle = null;
 | 
        
           | 1445 | aurelien | 719 | 	if (largeurViewPort < 400) {
 | 
        
           |  |  | 720 | 		largeurInfoBulle = 300;
 | 
        
           |  |  | 721 | 	} else if (largeurViewPort < 800) {
 | 
        
           | 980 | jpm | 722 | 		largeurInfoBulle = 400;
 | 
        
           |  |  | 723 | 	} else if (largeurViewPort >= 800 && largeurViewPort < 1200) {
 | 
        
           |  |  | 724 | 		largeurInfoBulle = 500;
 | 
        
           |  |  | 725 | 	} else if (largeurViewPort >= 1200) {
 | 
        
           |  |  | 726 | 		largeurInfoBulle = 600;
 | 
        
           |  |  | 727 | 	}
 | 
        
           |  |  | 728 | 	return largeurInfoBulle;
 | 
        
           |  |  | 729 | }
 | 
        
           |  |  | 730 |   | 
        
           | 1445 | aurelien | 731 | function definirTaillePoliceInfoBulle() {
 | 
        
           | 1586 | jpm | 732 | 	var largeurViewPort = $(window).width(),
 | 
        
           |  |  | 733 | 		taillePolice = null;
 | 
        
           | 1445 | aurelien | 734 | 	if (largeurViewPort < 400) {
 | 
        
           |  |  | 735 | 		taillePolice = 0.8;
 | 
        
           |  |  | 736 | 	} else if (largeurViewPort < 800) {
 | 
        
           |  |  | 737 | 		taillePolice = 1;
 | 
        
           |  |  | 738 | 	}
 | 
        
           |  |  | 739 | 	return taillePolice;
 | 
        
           |  |  | 740 | }
 | 
        
           |  |  | 741 |   | 
        
           | 915 | jpm | 742 | function afficherMessageChargement(element) {
 | 
        
           |  |  | 743 | 	if ($('#chargement').get() == '') {
 | 
        
           |  |  | 744 | 		$('#tpl-chargement').tmpl().appendTo(element);
 | 
        
           |  |  | 745 | 	}
 | 
        
           |  |  | 746 | }
 | 
        
           |  |  | 747 |   | 
        
           | 1035 | aurelien | 748 | function afficherMessageChargementTitreInfoBulle() {
 | 
        
           |  |  | 749 | 	$("#obs-station-titre").text("Chargement des observations");
 | 
        
           |  |  | 750 | }
 | 
        
           |  |  | 751 |   | 
        
           | 915 | jpm | 752 | function supprimerMessageChargement() {
 | 
        
           |  |  | 753 | 	$('#chargement').remove();
 | 
        
           |  |  | 754 | }
 | 
        
           |  |  | 755 |   | 
        
           |  |  | 756 | function chargerObs(depart, total) {
 | 
        
           | 939 | jpm | 757 | 	if (depart == 0 || depart < total) {
 | 
        
           | 915 | jpm | 758 | 		var limite = 300;
 | 
        
           |  |  | 759 | 		if (depart == 0) {
 | 
        
           | 1036 | aurelien | 760 | 			viderTableauObs();
 | 
        
           | 915 | jpm | 761 | 		}
 | 
        
           | 1035 | aurelien | 762 |   | 
        
           | 939 | jpm | 763 | 		var urlObs = observationsUrl+'&start={start}&limit='+limite;
 | 
        
           | 1166 | aurelien | 764 | 		urlObs = urlObs.replace(/\{stationId\}/g, encodeURIComponent(pointClique.stationInfos.id));
 | 
        
           | 1044 | aurelien | 765 | 		if (pointClique.stationInfos.type_emplacement == 'communes') {
 | 
        
           | 1342 | aurelien | 766 | 			urlObs = urlObs.replace(/commune=%2A/g, formaterParametreCommunePourRequete(pointClique.stationInfos.nom));
 | 
        
           | 1042 | aurelien | 767 | 		}
 | 
        
           | 2170 | mathias | 768 | 		// Ajout de la zone geo
 | 
        
           |  |  | 769 | 		if (pointClique.stationInfos.zonegeo) {
 | 
        
           |  |  | 770 | 			urlObs += '&zonegeo=' + pointClique.stationInfos.zonegeo;
 | 
        
           |  |  | 771 | 		}
 | 
        
           |  |  | 772 |   | 
        
           | 939 | jpm | 773 | 		urlObs = urlObs.replace(/\{nt\}/g, nt);
 | 
        
           | 915 | jpm | 774 | 		urlObs = urlObs.replace(/\{start\}/g, depart);
 | 
        
           |  |  | 775 |   | 
        
           |  |  | 776 | 		$.getJSON(urlObs, function(observations){
 | 
        
           | 1036 | aurelien | 777 | 			surRetourChargementObs(observations, depart, total);
 | 
        
           | 1035 | aurelien | 778 | 			chargerObs(depart+limite, observations.total);
 | 
        
           | 915 | jpm | 779 | 		});
 | 
        
           | 1036 | aurelien | 780 | 	}
 | 
        
           |  |  | 781 | }
 | 
        
           |  |  | 782 |   | 
        
           | 1342 | aurelien | 783 | function formaterParametreCommunePourRequete(nomCommune) {
 | 
        
           |  |  | 784 | 	var chaineRequete = "";
 | 
        
           |  |  | 785 | 	if(nomCommune.indexOf("(", 0) !== false) {
 | 
        
           |  |  | 786 | 		var infosCommune = nomCommune.split("(");
 | 
        
           |  |  | 787 | 		var commune = infosCommune[0];
 | 
        
           |  |  | 788 | 		chaineRequete = 'commune='+encodeURIComponent($.trim(commune));
 | 
        
           |  |  | 789 | 	} else {
 | 
        
           |  |  | 790 | 		chaineRequete = 'commune='+encodeURIComponent($.trim(nomCommune));
 | 
        
           |  |  | 791 | 	}
 | 
        
           |  |  | 792 | 	return chaineRequete;
 | 
        
           |  |  | 793 | }
 | 
        
           |  |  | 794 |   | 
        
           | 1036 | aurelien | 795 | function viderTableauObs() {
 | 
        
           |  |  | 796 | 	obsStation = new Array();
 | 
        
           |  |  | 797 | 	surClicPagePagination(0, null);
 | 
        
           |  |  | 798 | }
 | 
        
           |  |  | 799 |   | 
        
           |  |  | 800 | function surRetourChargementObs(observations, depart, total) {
 | 
        
           |  |  | 801 | 	obsStation = obsStation.concat(observations.observations);
 | 
        
           |  |  | 802 | 	if (depart == 0) {
 | 
        
           |  |  | 803 | 		actualiserInfosStation(observations);
 | 
        
           |  |  | 804 | 		creerTitreInfoBulle();
 | 
        
           | 1586 | jpm | 805 | 		surClicPagePagination(0, null);
 | 
        
           |  |  | 806 | 		mettreAJourUrlSaisie(observations);
 | 
        
           | 915 | jpm | 807 | 	}
 | 
        
           | 1036 | aurelien | 808 |   | 
        
           | 1039 | aurelien | 809 | 	afficherPagination();
 | 
        
           | 1036 | aurelien | 810 | 	actualiserPagineur();
 | 
        
           | 1041 | aurelien | 811 | 	selectionnerOnglet("#obs-vue-"+pagineur.format);
 | 
        
           | 915 | jpm | 812 | }
 | 
        
           |  |  | 813 |   | 
        
           | 1035 | aurelien | 814 | function actualiserInfosStation(infos) {
 | 
        
           |  |  | 815 | 	pointClique.stationInfos.commune = infos.commune;
 | 
        
           |  |  | 816 | 	pointClique.stationInfos.obsNbre = infos.total;
 | 
        
           |  |  | 817 | }
 | 
        
           |  |  | 818 |   | 
        
           |  |  | 819 | function creerTitreInfoBulle() {
 | 
        
           | 1586 | jpm | 820 | 	$('#obs-total').text(station.obsNbre);
 | 
        
           |  |  | 821 | 	$('#obs-commune').text(station.commune);
 | 
        
           | 1035 | aurelien | 822 | 	var titre = '';
 | 
        
           |  |  | 823 | 	titre += pointClique.stationInfos.obsNbre+' observation';
 | 
        
           |  |  | 824 | 	titre += (pointClique.stationInfos.obsNbre > 1) ? 's': '' ;
 | 
        
           |  |  | 825 | 	titre += ' pour ';
 | 
        
           |  |  | 826 | 	if (etreMarqueurCommune(pointClique.stationInfos.id)) {
 | 
        
           |  |  | 827 | 		nomStation = 'la commune : ';
 | 
        
           |  |  | 828 | 	} else {
 | 
        
           |  |  | 829 | 		nomStation = 'la station : ';
 | 
        
           |  |  | 830 | 	}
 | 
        
           |  |  | 831 | 	titre += pointClique.stationInfos.nom;
 | 
        
           | 1586 | jpm | 832 | 	$('#obs-station-titre').text(titre);
 | 
        
           | 1035 | aurelien | 833 | }
 | 
        
           |  |  | 834 |   | 
        
           | 939 | jpm | 835 | function actualiserPagineur() {
 | 
        
           | 980 | jpm | 836 | 	pagineur.stationId = pointClique.stationInfos.id;
 | 
        
           | 1035 | aurelien | 837 | 	pagineur.total = pointClique.stationInfos.obsNbre;
 | 
        
           | 1435 | aurelien | 838 | 	// Si on est en mode photo on reste en mode liste quelque soit le
 | 
        
           |  |  | 839 | 	// nombre de résultats
 | 
        
           | 1438 | aurelien | 840 | 	if (pagineur.total > 4 && photos != 1) {
 | 
        
           | 939 | jpm | 841 | 		pagineur.format = 'tableau';
 | 
        
           |  |  | 842 | 	} else {
 | 
        
           |  |  | 843 | 		pagineur.format = 'liste';
 | 
        
           |  |  | 844 | 	}
 | 
        
           |  |  | 845 | }
 | 
        
           |  |  | 846 |   | 
        
           | 915 | jpm | 847 | function afficherPagination(observations) {
 | 
        
           | 1586 | jpm | 848 | 	$('.navigation').pagination(pagineur.total, {
 | 
        
           | 915 | jpm | 849 | 		items_per_page:pagineur.limite,
 | 
        
           |  |  | 850 | 		callback:surClicPagePagination,
 | 
        
           |  |  | 851 | 		next_text:'Suivant',
 | 
        
           |  |  | 852 | 		prev_text:'Précédent',
 | 
        
           |  |  | 853 | 		prev_show_always:false,
 | 
        
           |  |  | 854 | 		num_edge_entries:1,
 | 
        
           | 953 | jpm | 855 | 		num_display_entries:4,
 | 
        
           | 915 | jpm | 856 | 		load_first_page:true
 | 
        
           |  |  | 857 | 	});
 | 
        
           |  |  | 858 | }
 | 
        
           |  |  | 859 |   | 
        
           |  |  | 860 | function surClicPagePagination(pageIndex, paginationConteneur) {
 | 
        
           | 1586 | jpm | 861 | 	var index = pageIndex * pagineur.limite,
 | 
        
           |  |  | 862 | 		indexMax = index + pagineur.limite;
 | 
        
           | 915 | jpm | 863 | 	pagineur.depart = index;
 | 
        
           |  |  | 864 | 	obsPage = new Array();
 | 
        
           | 1586 | jpm | 865 | 	for (index; index < indexMax; index++) {
 | 
        
           |  |  | 866 | 		obsPage.push(obsStation[index]);
 | 
        
           |  |  | 867 | 	}
 | 
        
           |  |  | 868 |   | 
        
           |  |  | 869 | 	supprimerMessageChargement();
 | 
        
           |  |  | 870 | 	mettreAJourObservations();
 | 
        
           | 915 | jpm | 871 | 	return false;
 | 
        
           |  |  | 872 | }
 | 
        
           |  |  | 873 |   | 
        
           |  |  | 874 | function mettreAJourObservations() {
 | 
        
           | 1586 | jpm | 875 | 	$('#obs-'+pagineur.format+'-lignes').empty();
 | 
        
           |  |  | 876 | 	$('#obs-vue-'+pagineur.format).css('display', 'block');
 | 
        
           |  |  | 877 | 	$('.obs-conteneur').css('counter-reset', 'item '+pagineur.depart);
 | 
        
           |  |  | 878 | 	$('#tpl-obs-'+pagineur.format).tmpl(obsPage).appendTo('#obs-'+pagineur.format+'-lignes');
 | 
        
           | 915 | jpm | 879 |   | 
        
           |  |  | 880 | 	// Actualisation de Fancybox
 | 
        
           | 1586 | jpm | 881 | 	ajouterFormulaireContact('a.contact');
 | 
        
           | 915 | jpm | 882 | 	if (pagineur.format == 'liste') {
 | 
        
           | 1586 | jpm | 883 | 		ajouterGaleriePhoto('a.cel-img');
 | 
        
           | 836 | jpm | 884 | 	}
 | 
        
           |  |  | 885 | }
 | 
        
           |  |  | 886 |   | 
        
           | 915 | jpm | 887 | function initialiserContenuInfoBulle() {
 | 
        
           | 980 | jpm | 888 | 	afficherMessageChargement('#observations');
 | 
        
           |  |  | 889 | 	cacherContenuOnglets();
 | 
        
           | 915 | jpm | 890 | 	afficherOnglets();
 | 
        
           | 1586 | jpm | 891 | 	ajouterTableauTriable('#obs-tableau');
 | 
        
           | 915 | jpm | 892 | 	afficherTextStationId();
 | 
        
           |  |  | 893 | 	corrigerLargeurInfoWindow();
 | 
        
           |  |  | 894 | }
 | 
        
           |  |  | 895 |   | 
        
           | 980 | jpm | 896 | function cacherContenuOnglets() {
 | 
        
           | 1586 | jpm | 897 | 	$('#obs-vue-tableau').css('display', 'none');
 | 
        
           |  |  | 898 | 	$('#obs-vue-liste').css('display', 'none');
 | 
        
           | 980 | jpm | 899 | }
 | 
        
           |  |  | 900 |   | 
        
           | 915 | jpm | 901 | function afficherOnglets() {
 | 
        
           |  |  | 902 | 	var $tabs = $('#obs').tabs();
 | 
        
           |  |  | 903 | 	$('#obs').bind('tabsselect', function(event, ui) {
 | 
        
           |  |  | 904 | 		if (ui.panel.id == 'obs-vue-tableau') {
 | 
        
           |  |  | 905 | 			surClicAffichageTableau();
 | 
        
           |  |  | 906 | 		} else if (ui.panel.id == 'obs-vue-liste') {
 | 
        
           |  |  | 907 | 			surClicAffichageListe();
 | 
        
           |  |  | 908 | 		}
 | 
        
           |  |  | 909 | 	});
 | 
        
           | 980 | jpm | 910 | 	if (pointClique.stationInfos.nbre > 4) {
 | 
        
           |  |  | 911 | 		$tabs.tabs('select', "#obs-vue-tableau");
 | 
        
           |  |  | 912 | 	} else {
 | 
        
           |  |  | 913 | 		$tabs.tabs('select', "#obs-vue-liste");
 | 
        
           |  |  | 914 | 	}
 | 
        
           |  |  | 915 |   | 
        
           | 915 | jpm | 916 | }
 | 
        
           |  |  | 917 |   | 
        
           | 939 | jpm | 918 | function selectionnerOnglet(onglet) {
 | 
        
           | 980 | jpm | 919 | 	$(onglet).css('display', 'block');
 | 
        
           | 939 | jpm | 920 | 	$('#obs').tabs('select', onglet);
 | 
        
           |  |  | 921 | }
 | 
        
           |  |  | 922 |   | 
        
           | 915 | jpm | 923 | function afficherTextStationId() {
 | 
        
           | 980 | jpm | 924 | 	$('#obs-station-id').text(pointClique.stationInfos.id);
 | 
        
           | 915 | jpm | 925 | }
 | 
        
           |  |  | 926 |   | 
        
           |  |  | 927 | function corrigerLargeurInfoWindow() {
 | 
        
           | 953 | jpm | 928 | 	$("#info-bulle").width($("#info-bulle").width() - 17);
 | 
        
           | 915 | jpm | 929 | }
 | 
        
           |  |  | 930 |   | 
        
           |  |  | 931 | function surClicAffichageTableau(event) {
 | 
        
           |  |  | 932 | 	pagineur.format = 'tableau';
 | 
        
           |  |  | 933 | 	mettreAJourObservations();
 | 
        
           |  |  | 934 | 	mettreAJourTableauTriable("#obs-tableau");
 | 
        
           |  |  | 935 | }
 | 
        
           |  |  | 936 |   | 
        
           |  |  | 937 | function surClicAffichageListe(event) {
 | 
        
           |  |  | 938 | 	pagineur.format = 'liste';
 | 
        
           |  |  | 939 | 	mettreAJourObservations();
 | 
        
           |  |  | 940 | 	ajouterGaleriePhoto("a.cel-img");
 | 
        
           |  |  | 941 | }
 | 
        
           |  |  | 942 |   | 
        
           | 836 | jpm | 943 | function ajouterTableauTriable(element) {
 | 
        
           |  |  | 944 | 	// add parser through the tablesorter addParser method
 | 
        
           |  |  | 945 | 	$.tablesorter.addParser({
 | 
        
           |  |  | 946 | 		// Définition d'un id unique pour ce parsseur
 | 
        
           |  |  | 947 | 		id: 'date_cel',
 | 
        
           |  |  | 948 | 		is: function(s) {
 | 
        
           | 915 | jpm | 949 | 			// doit retourner false si le parsseur n'est pas autodétecté
 | 
        
           |  |  | 950 | 			return /^\s*\d{2}[\/-]\d{2}[\/-]\d{4}\s*$/.test(s);
 | 
        
           | 836 | jpm | 951 | 		},
 | 
        
           | 915 | jpm | 952 | 		format: function(date) {
 | 
        
           | 836 | jpm | 953 | 			// Transformation date jj/mm/aaaa en aaaa/mm/jj
 | 
        
           | 915 | jpm | 954 | 			date = date.replace(/^\s*(\d{2})[\/-](\d{2})[\/-](\d{4})\s*$/, "$3/$2/$1");
 | 
        
           | 836 | jpm | 955 | 			// Remplace la date par un nombre de millisecondes pour trier numériquement
 | 
        
           | 915 | jpm | 956 | 			return $.tablesorter.formatFloat(new Date(date).getTime());
 | 
        
           | 836 | jpm | 957 | 		},
 | 
        
           |  |  | 958 | 		// set type, either numeric or text
 | 
        
           |  |  | 959 | 		type: 'numeric'
 | 
        
           |  |  | 960 | 	});
 | 
        
           |  |  | 961 | 	$(element).tablesorter({
 | 
        
           | 1586 | jpm | 962 | 		headers: {
 | 
        
           | 915 | jpm | 963 | 			1: {
 | 
        
           | 1586 | jpm | 964 | 				sorter: 'date_cel'
 | 
        
           |  |  | 965 | 			}
 | 
        
           |  |  | 966 | 		}
 | 
        
           | 915 | jpm | 967 | 	});
 | 
        
           | 836 | jpm | 968 | }
 | 
        
           |  |  | 969 |   | 
        
           | 915 | jpm | 970 | function mettreAJourTableauTriable(element) {
 | 
        
           |  |  | 971 | 	$(element).trigger('update');
 | 
        
           |  |  | 972 | }
 | 
        
           |  |  | 973 |   | 
        
           | 836 | jpm | 974 | function ajouterGaleriePhoto(element) {
 | 
        
           |  |  | 975 | 	$(element).fancybox({
 | 
        
           | 1586 | jpm | 976 | 		transitionIn: 'elastic',
 | 
        
           |  |  | 977 | 		transitionOut: 'elastic',
 | 
        
           |  |  | 978 | 		speedIn: 600,
 | 
        
           |  |  | 979 | 		speedOut: 200,
 | 
        
           |  |  | 980 | 		overlayShow: true,
 | 
        
           |  |  | 981 | 		titleShow: true,
 | 
        
           |  |  | 982 | 		titlePosition: 'inside',
 | 
        
           |  |  | 983 | 		titleFormat: function (titre, currentArray, currentIndex, currentOpts) {
 | 
        
           | 915 | jpm | 984 | 			var motif = /urn:lsid:tela-botanica[.]org:cel:img([0-9]+)$/;
 | 
        
           |  |  | 985 | 			motif.exec(titre);
 | 
        
           | 1586 | jpm | 986 | 			var id = RegExp.$1,
 | 
        
           |  |  | 987 | 				info = $('#cel-info-'+id).clone().html(),
 | 
        
           |  |  | 988 | 				tpl =
 | 
        
           |  |  | 989 | 					'<div class="cel-legende">'+
 | 
        
           |  |  | 990 | 					'<p class="cel-legende-vei">'+'Image n°' + (currentIndex + 1) + ' sur ' + currentArray.length +'<\/p>'+
 | 
        
           |  |  | 991 | 					(titre && titre.length ? '<p>'+info+'<\/p>' : '' )+
 | 
        
           |  |  | 992 | 					'<\/div>';
 | 
        
           | 915 | jpm | 993 | 			return tpl;
 | 
        
           | 836 | jpm | 994 | 		}
 | 
        
           | 1032 | aurelien | 995 | 	}).live('click', function(e) {
 | 
        
           |  |  | 996 | 		if (e.stopPropagation) {
 | 
        
           |  |  | 997 | 			e.stopPropagation();
 | 
        
           |  |  | 998 | 		}
 | 
        
           |  |  | 999 | 		return false;
 | 
        
           |  |  | 1000 | 	});
 | 
        
           | 836 | jpm | 1001 | }
 | 
        
           |  |  | 1002 |   | 
        
           | 1414 | aurelien | 1003 | function ajouterFormulaireContact(element) {
 | 
        
           | 941 | jpm | 1004 | 	$(element).fancybox({
 | 
        
           |  |  | 1005 | 		transitionIn:'elastic',
 | 
        
           |  |  | 1006 | 		transitionOut:'elastic',
 | 
        
           |  |  | 1007 | 		speedIn	:600,
 | 
        
           |  |  | 1008 | 		speedOut:200,
 | 
        
           |  |  | 1009 | 		scrolling: 'no',
 | 
        
           |  |  | 1010 | 		titleShow: false,
 | 
        
           |  |  | 1011 | 		onStart: function(selectedArray, selectedIndex, selectedOpts) {
 | 
        
           |  |  | 1012 | 			var element = selectedArray[selectedIndex];
 | 
        
           |  |  | 1013 | 			var motif = / contributeur-([0-9]+)$/;
 | 
        
           |  |  | 1014 | 			motif.exec($(element).attr('class'));
 | 
        
           | 1494 | aurelien | 1015 | 			// si la classe ne contient pas d'id contributeur
 | 
        
           |  |  | 1016 | 			// alors il faut stocker le numéro d'observation
 | 
        
           | 941 | jpm | 1017 | 			var id = RegExp.$1;
 | 
        
           | 1494 | aurelien | 1018 | 			if(id == "") {
 | 
        
           |  |  | 1019 | 				$("#fc_type_envoi").attr('value', 'non-inscrit');
 | 
        
           |  |  | 1020 | 				var motif = / obs-([0-9]+)$/;
 | 
        
           |  |  | 1021 | 				motif.exec($(element).attr('class'));
 | 
        
           |  |  | 1022 | 				var id = RegExp.$1;
 | 
        
           |  |  | 1023 | 			} else {
 | 
        
           |  |  | 1024 | 				$("#fc_type_envoi").attr('value', 'inscrit');
 | 
        
           |  |  | 1025 | 			}
 | 
        
           |  |  | 1026 |   | 
        
           | 941 | jpm | 1027 | 			$("#fc_destinataire_id").attr('value', id);
 | 
        
           |  |  | 1028 |   | 
        
           | 1494 | aurelien | 1029 | 			var motif = / obs-([0-9]+)/;
 | 
        
           | 941 | jpm | 1030 | 			motif.exec($(element).attr('class'));
 | 
        
           |  |  | 1031 | 			var id = RegExp.$1;
 | 
        
           | 950 | jpm | 1032 | 			//console.log('Obs id : '+id);
 | 
        
           | 941 | jpm | 1033 | 			chargerInfoObsPourMessage(id);
 | 
        
           |  |  | 1034 | 		},
 | 
        
           |  |  | 1035 | 		onCleanup: function() {
 | 
        
           | 950 | jpm | 1036 | 			//console.log('Avant fermeture fancybox');
 | 
        
           | 941 | jpm | 1037 | 			$("#fc_destinataire_id").attr('value', '');
 | 
        
           |  |  | 1038 | 			$("#fc_sujet").attr('value', '');
 | 
        
           |  |  | 1039 | 			$("#fc_message").text('');
 | 
        
           |  |  | 1040 | 		},
 | 
        
           |  |  | 1041 | 		onClosed: function(e) {
 | 
        
           | 950 | jpm | 1042 | 			//console.log('Fermeture fancybox');
 | 
        
           | 941 | jpm | 1043 | 			if (e.stopPropagation) {
 | 
        
           |  |  | 1044 | 				e.stopPropagation();
 | 
        
           |  |  | 1045 | 			}
 | 
        
           |  |  | 1046 | 			return false;
 | 
        
           |  |  | 1047 | 		}
 | 
        
           |  |  | 1048 | 	});
 | 
        
           |  |  | 1049 | }
 | 
        
           |  |  | 1050 |   | 
        
           |  |  | 1051 | function chargerInfoObsPourMessage(idObs) {
 | 
        
           | 980 | jpm | 1052 | 	var nomSci = jQuery.trim($(".cel-obs-"+idObs+" .nom-sci:eq(0)").text());
 | 
        
           |  |  | 1053 | 	var date = jQuery.trim($(".cel-obs-"+idObs+" .date:eq(0)").text());
 | 
        
           |  |  | 1054 | 	var lieu = jQuery.trim($(".cel-obs-"+idObs+" .lieu:eq(0)").text());
 | 
        
           | 953 | jpm | 1055 | 	var sujet = "Observation #"+idObs+" de "+nomSci;
 | 
        
           |  |  | 1056 | 	var message = "\n\n\n\n\n\n\n\n--\nConcerne l'observation de \""+nomSci+'" du "'+date+'" au lieu "'+lieu+'".';
 | 
        
           | 941 | jpm | 1057 | 	$("#fc_sujet").attr('value', sujet);
 | 
        
           |  |  | 1058 | 	$("#fc_message").text(message);
 | 
        
           |  |  | 1059 | }
 | 
        
           |  |  | 1060 |   | 
        
           |  |  | 1061 | function initialiserFormulaireContact() {
 | 
        
           | 950 | jpm | 1062 | 	//console.log('Initialisation du form contact');
 | 
        
           | 941 | jpm | 1063 | 	$("#form-contact").validate({
 | 
        
           |  |  | 1064 | 		rules: {
 | 
        
           |  |  | 1065 | 			fc_sujet : "required",
 | 
        
           |  |  | 1066 | 			fc_message : "required",
 | 
        
           | 953 | jpm | 1067 | 			fc_utilisateur_courriel : {
 | 
        
           |  |  | 1068 | 				required : true,
 | 
        
           |  |  | 1069 | 				email : true}
 | 
        
           | 941 | jpm | 1070 | 		}
 | 
        
           |  |  | 1071 | 	});
 | 
        
           |  |  | 1072 | 	$("#form-contact").bind("submit", envoyerCourriel);
 | 
        
           | 950 | jpm | 1073 | 	$("#fc_annuler").bind("click", function() {$.fancybox.close();});
 | 
        
           | 941 | jpm | 1074 |   | 
        
           |  |  | 1075 | }
 | 
        
           |  |  | 1076 |   | 
        
           |  |  | 1077 | function envoyerCourriel() {
 | 
        
           | 950 | jpm | 1078 | 	//console.log('Formulaire soumis');
 | 
        
           | 941 | jpm | 1079 | 	if ($("#form-contact").valid()) {
 | 
        
           | 950 | jpm | 1080 | 		//console.log('Formulaire valide');
 | 
        
           | 941 | jpm | 1081 | 		//$.fancybox.showActivity();
 | 
        
           |  |  | 1082 | 		var destinataireId = $("#fc_destinataire_id").attr('value');
 | 
        
           | 1494 | aurelien | 1083 | 		var typeEnvoi = $("#fc_type_envoi").attr('value');
 | 
        
           |  |  | 1084 | 		if(typeEnvoi == "non-inscrit") {
 | 
        
           |  |  | 1085 | 			// l'envoi au non inscrits passe par le service intermédiaire du cel
 | 
        
           |  |  | 1086 | 			// qui va récupérer le courriel associé à l'obs indiquée
 | 
        
           |  |  | 1087 | 			var urlMessage = "http://www.tela-botanica.org/service:cel:celMessage/obs/"+destinataireId;
 | 
        
           |  |  | 1088 | 		} else {
 | 
        
           |  |  | 1089 | 			var urlMessage = "http://www.tela-botanica.org/service:annuaire:Utilisateur/"+destinataireId+"/message";
 | 
        
           |  |  | 1090 | 		}
 | 
        
           | 941 | jpm | 1091 | 		var erreurMsg = "";
 | 
        
           |  |  | 1092 | 		var donnees = new Array();
 | 
        
           |  |  | 1093 | 		$.each($(this).serializeArray(), function (index, champ) {
 | 
        
           |  |  | 1094 | 			var cle = champ.name;
 | 
        
           |  |  | 1095 | 			cle = cle.replace(/^fc_/, '');
 | 
        
           | 953 | jpm | 1096 |   | 
        
           | 980 | jpm | 1097 | 			if (cle == 'sujet') {
 | 
        
           | 953 | jpm | 1098 | 				champ.value += " - Carnet en ligne - Tela Botanica";
 | 
        
           |  |  | 1099 | 			}
 | 
        
           |  |  | 1100 | 			if (cle == 'message') {
 | 
        
           |  |  | 1101 | 				champ.value += "\n--\n"+
 | 
        
           | 980 | jpm | 1102 | 					"Ce message vous est envoyé par l'intermédiaire du widget carto "+
 | 
        
           | 953 | jpm | 1103 | 					"du Carnet en Ligne du réseau Tela Botanica.\n"+
 | 
        
           |  |  | 1104 | 					"http://www.tela-botanica.org/widget:cel:carto";
 | 
        
           |  |  | 1105 | 			}
 | 
        
           |  |  | 1106 |   | 
        
           | 941 | jpm | 1107 | 			donnees[index] = {'name':cle,'value':champ.value};
 | 
        
           |  |  | 1108 | 		});
 | 
        
           |  |  | 1109 | 		$.ajax({
 | 
        
           |  |  | 1110 | 			type : "POST",
 | 
        
           |  |  | 1111 | 			cache : false,
 | 
        
           |  |  | 1112 | 			url : urlMessage,
 | 
        
           |  |  | 1113 | 			data : donnees,
 | 
        
           |  |  | 1114 | 			beforeSend : function() {
 | 
        
           |  |  | 1115 | 				$(".msg").remove();
 | 
        
           |  |  | 1116 | 			},
 | 
        
           |  |  | 1117 | 			success : function(data) {
 | 
        
           |  |  | 1118 | 				$("#fc-zone-dialogue").append('<pre class="msg info">'+data.message+'</pre>');
 | 
        
           |  |  | 1119 | 			},
 | 
        
           |  |  | 1120 | 			error : function(jqXHR, textStatus, errorThrown) {
 | 
        
           |  |  | 1121 | 				erreurMsg += "Erreur Ajax :\ntype : "+textStatus+' '+errorThrown+"\n";
 | 
        
           |  |  | 1122 | 				reponse = jQuery.parseJSON(jqXHR.responseText);
 | 
        
           |  |  | 1123 | 				if (reponse != null) {
 | 
        
           |  |  | 1124 | 					$.each(reponse, function (cle, valeur) {
 | 
        
           |  |  | 1125 | 						erreurMsg += valeur + "\n";
 | 
        
           |  |  | 1126 | 					});
 | 
        
           |  |  | 1127 | 				}
 | 
        
           |  |  | 1128 | 			},
 | 
        
           |  |  | 1129 | 			complete : function(jqXHR, textStatus) {
 | 
        
           |  |  | 1130 | 				var debugMsg = '';
 | 
        
           |  |  | 1131 | 				if (jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
 | 
        
           |  |  | 1132 | 					debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
 | 
        
           |  |  | 1133 | 					if (debugInfos != null) {
 | 
        
           |  |  | 1134 | 						$.each(debugInfos, function (cle, valeur) {
 | 
        
           |  |  | 1135 | 							debugMsg += valeur + "\n";
 | 
        
           |  |  | 1136 | 						});
 | 
        
           |  |  | 1137 | 					}
 | 
        
           |  |  | 1138 | 				}
 | 
        
           |  |  | 1139 | 				if (erreurMsg != '') {
 | 
        
           |  |  | 1140 | 					$("#fc-zone-dialogue").append('<p class="msg">'+
 | 
        
           |  |  | 1141 | 							'Une erreur est survenue lors de la transmission de votre message.'+'<br />'+
 | 
        
           |  |  | 1142 | 							'Vous pouvez signaler le disfonctionnement à <a href="'+
 | 
        
           |  |  | 1143 | 							'mailto:cel@tela-botanica.org'+'?'+
 | 
        
           | 980 | jpm | 1144 | 							'subject=Disfonctionnement du widget carto'+
 | 
        
           | 941 | jpm | 1145 | 							"&body="+erreurMsg+"\nDébogage :\n"+debugMsg+
 | 
        
           |  |  | 1146 | 							'">cel@tela-botanica.org</a>.'+
 | 
        
           |  |  | 1147 | 							'</p>');
 | 
        
           |  |  | 1148 | 				}
 | 
        
           |  |  | 1149 | 				if (DEBUG) {
 | 
        
           |  |  | 1150 | 					console.log('Débogage : '+debugMsg);
 | 
        
           |  |  | 1151 | 				}
 | 
        
           | 950 | jpm | 1152 | 				//console.log('Débogage : '+debugMsg);
 | 
        
           |  |  | 1153 | 				//console.log('Erreur : '+erreurMsg);
 | 
        
           | 941 | jpm | 1154 | 			}
 | 
        
           |  |  | 1155 | 		});
 | 
        
           |  |  | 1156 | 	}
 | 
        
           |  |  | 1157 | 	return false;
 | 
        
           |  |  | 1158 | }
 | 
        
           | 915 | jpm | 1159 | /*+--------------------------------------------------------------------------------------------------------+*/
 | 
        
           |  |  | 1160 | // PANNEAU LATÉRAL
 | 
        
           | 1513 | aurelien | 1161 | var nbTaxons = 0;
 | 
        
           | 1438 | aurelien | 1162 | function initialiserAffichagePanneauLateral() {
 | 
        
           | 915 | jpm | 1163 | 	if (nt == '*') {
 | 
        
           |  |  | 1164 | 		$('#pl-ouverture').bind('click', afficherPanneauLateral);
 | 
        
           |  |  | 1165 | 		$('#pl-fermeture').bind('click', cacherPanneauLateral);
 | 
        
           | 1430 | aurelien | 1166 | 	} else {
 | 
        
           |  |  | 1167 | 		$('#panneau-lateral').width(0);
 | 
        
           |  |  | 1168 | 		$('#carte').width('100%');
 | 
        
           | 836 | jpm | 1169 | 	}
 | 
        
           | 1513 | aurelien | 1170 | 	attribuerListenersFiltreUtilisateur();
 | 
        
           | 939 | jpm | 1171 | 	chargerTaxons(0, 0);
 | 
        
           | 836 | jpm | 1172 | }
 | 
        
           |  |  | 1173 |   | 
        
           | 1513 | aurelien | 1174 | function attribuerListenersFiltreUtilisateur() {
 | 
        
           |  |  | 1175 | 	$('#valider-filtre-utilisateur').click(function() {
 | 
        
           |  |  | 1176 | 		var utilisateur = $('#filtre-utilisateur').val();
 | 
        
           |  |  | 1177 | 		filtrerParUtilisateur(utilisateur);
 | 
        
           |  |  | 1178 | 		$('#raz-filtre-utilisateur').show();
 | 
        
           |  |  | 1179 | 	});
 | 
        
           |  |  | 1180 |   | 
        
           |  |  | 1181 | 	$('#filtre-utilisateur').keypress(function(e) {
 | 
        
           | 1586 | jpm | 1182 | 		if (e.which == 13) {
 | 
        
           |  |  | 1183 | 			var utilisateur = $('#filtre-utilisateur').val();
 | 
        
           | 1513 | aurelien | 1184 | 			filtrerParUtilisateur(utilisateur);
 | 
        
           |  |  | 1185 | 			$('#raz-filtre-utilisateur').show();
 | 
        
           | 1586 | jpm | 1186 | 		}
 | 
        
           | 1513 | aurelien | 1187 | 	});
 | 
        
           |  |  | 1188 |   | 
        
           |  |  | 1189 | 	$('#raz-filtre-utilisateur').click(function() {
 | 
        
           |  |  | 1190 | 		$('#filtre-utilisateur').val('');
 | 
        
           |  |  | 1191 | 		filtrerParUtilisateur('*');
 | 
        
           | 1514 | aurelien | 1192 | 		afficherCacherFiltreUtilisateur();
 | 
        
           | 1513 | aurelien | 1193 | 		$('#raz-filtre-utilisateur').hide();
 | 
        
           |  |  | 1194 | 	});
 | 
        
           | 1514 | aurelien | 1195 |   | 
        
           |  |  | 1196 | 	$('#lien-affichage-filtre-utilisateur').click(function() {
 | 
        
           |  |  | 1197 | 		afficherCacherFiltreUtilisateur();
 | 
        
           |  |  | 1198 | 	});
 | 
        
           | 1586 | jpm | 1199 |   | 
        
           | 1514 | aurelien | 1200 | 	$('#raz-filtre-utilisateur').hide();
 | 
        
           |  |  | 1201 | 	$('#formulaire-filtre-utilisateur').hide();
 | 
        
           | 1513 | aurelien | 1202 | }
 | 
        
           |  |  | 1203 |   | 
        
           | 1514 | aurelien | 1204 | function afficherCacherFiltreUtilisateur() {
 | 
        
           |  |  | 1205 | 	$('#formulaire-filtre-utilisateur').slideToggle();
 | 
        
           |  |  | 1206 | 	$('#conteneur-filtre-utilisateur').toggleClass('ferme');
 | 
        
           | 1586 | jpm | 1207 | 	if (!$('#conteneur-filtre-utilisateur').hasClass('ferme')) {
 | 
        
           | 1514 | aurelien | 1208 | 		$('#conteneur-filtre-utilisateur').width(tailleMaxFiltreUtilisateur);
 | 
        
           |  |  | 1209 | 	} else {
 | 
        
           |  |  | 1210 | 		$('#conteneur-filtre-utilisateur').width('auto');
 | 
        
           |  |  | 1211 | 	}
 | 
        
           |  |  | 1212 | }
 | 
        
           |  |  | 1213 |   | 
        
           | 1513 | aurelien | 1214 | function filtrerParUtilisateur(utilisateurFiltre) {
 | 
        
           | 1586 | jpm | 1215 | 	if (utilisateurFiltre == '') {
 | 
        
           | 1513 | aurelien | 1216 | 		utilisateurFiltre = '*';
 | 
        
           |  |  | 1217 | 	}
 | 
        
           | 1514 | aurelien | 1218 | 	utilisateur = utilisateurFiltre;
 | 
        
           | 1586 | jpm | 1219 | 	var pattern = /utilisateur=[^&]*/i,
 | 
        
           |  |  | 1220 | 		utilisateurCourant = pattern.exec(stationsUrl);
 | 
        
           | 1513 | aurelien | 1221 | 	stationsUrl = stationsUrl.replace(utilisateurCourant, "utilisateur="+utilisateurFiltre);
 | 
        
           |  |  | 1222 | 	taxonsUrl = taxonsUrl.replace(utilisateurCourant, "utilisateur="+utilisateurFiltre);
 | 
        
           |  |  | 1223 | 	observationsUrl = observationsUrl.replace(utilisateurCourant, "utilisateur="+utilisateurFiltre);
 | 
        
           |  |  | 1224 | 	filtreCommun = filtreCommun.replace(utilisateurCourant, "utilisateur="+utilisateurFiltre);
 | 
        
           |  |  | 1225 | 	$("#taxons").html('');
 | 
        
           |  |  | 1226 | 	chargerTaxons(0,0);
 | 
        
           |  |  | 1227 | 	programmerRafraichissementCarte();
 | 
        
           |  |  | 1228 | }
 | 
        
           |  |  | 1229 |   | 
        
           | 939 | jpm | 1230 | function chargerTaxons(depart, total) {
 | 
        
           |  |  | 1231 | 	if (depart == 0 || depart < total) {
 | 
        
           | 1513 | aurelien | 1232 | 		if(depart == 0) {
 | 
        
           |  |  | 1233 | 			nbTaxons = 0;
 | 
        
           |  |  | 1234 | 			taxonsCarte = new Array();
 | 
        
           |  |  | 1235 | 		}
 | 
        
           |  |  | 1236 |   | 
        
           |  |  | 1237 | 		var limite = 2000;
 | 
        
           | 950 | jpm | 1238 | 		//console.log("Chargement des taxons de "+depart+" à "+(depart+limite));
 | 
        
           | 939 | jpm | 1239 | 		var urlTax = taxonsUrl+'&start={start}&limit='+limite;
 | 
        
           |  |  | 1240 | 		urlTax = urlTax.replace(/\{start\}/g, depart);
 | 
        
           | 1513 | aurelien | 1241 | 		//console.log(urlTax);
 | 
        
           | 939 | jpm | 1242 | 		$.getJSON(urlTax, function(infos) {
 | 
        
           | 1513 | aurelien | 1243 | 			nbTaxons += infos.taxons.length;
 | 
        
           | 1586 | jpm | 1244 | 			$('.plantes-nbre').text(nbTaxons);
 | 
        
           |  |  | 1245 | 			$('#tpl-taxons-liste').tmpl({'taxons': infos.taxons}).appendTo('#taxons');
 | 
        
           | 939 | jpm | 1246 | 			taxonsCarte = taxonsCarte.concat(infos.taxons);
 | 
        
           | 950 | jpm | 1247 | 			//console.log("Nbre taxons :"+taxonsCarte.length);
 | 
        
           | 939 | jpm | 1248 | 			chargerTaxons(depart+limite, infos.total);
 | 
        
           |  |  | 1249 | 		});
 | 
        
           |  |  | 1250 | 	} else {
 | 
        
           |  |  | 1251 | 		if (nt == '*') {
 | 
        
           |  |  | 1252 | 			afficherTaxons();
 | 
        
           |  |  | 1253 | 		}
 | 
        
           | 1438 | aurelien | 1254 | 		afficherTitreCarteEtStats();
 | 
        
           | 939 | jpm | 1255 | 	}
 | 
        
           |  |  | 1256 | }
 | 
        
           |  |  | 1257 |   | 
        
           |  |  | 1258 | function afficherTaxons() {
 | 
        
           |  |  | 1259 | 	$('.taxon').live('click', filtrerParTaxon);
 | 
        
           | 1445 | aurelien | 1260 | 	$('.raz-filtre-taxons').live('click', viderFiltreTaxon);
 | 
        
           | 939 | jpm | 1261 | }
 | 
        
           |  |  | 1262 |   | 
        
           | 1445 | aurelien | 1263 | var largeurPanneauLateralFerme = null;
 | 
        
           | 915 | jpm | 1264 | function afficherPanneauLateral() {
 | 
        
           | 1447 | aurelien | 1265 | 	// fixer la hauteur
 | 
        
           | 2350 | mathias | 1266 | 	$('#panneau-lateral').height($(window).height() - $('#panneau-lateral').offset().top - 30);
 | 
        
           | 1445 | aurelien | 1267 | 	largeurPanneauLateralFerme = $('#panneau-lateral').width();
 | 
        
           | 836 | jpm | 1268 | 	$('#panneau-lateral').width(300);
 | 
        
           |  |  | 1269 | 	$('#pl-contenu').css('display', 'block');
 | 
        
           |  |  | 1270 | 	$('#pl-ouverture').css('display', 'none');
 | 
        
           |  |  | 1271 | 	$('#pl-fermeture').css('display', 'block');
 | 
        
           | 1445 | aurelien | 1272 | 	// correction pour la taille de la liste des taxons
 | 
        
           |  |  | 1273 | 	$('#pl-corps').height($(window).height() - $('#pl-corps').offset().top);
 | 
        
           | 836 | jpm | 1274 |   | 
        
           |  |  | 1275 | 	google.maps.event.trigger(map, 'resize');
 | 
        
           |  |  | 1276 | };
 | 
        
           |  |  | 1277 |   | 
        
           | 915 | jpm | 1278 | function cacherPanneauLateral() {
 | 
        
           | 1586 | jpm | 1279 | 	$('#panneau-lateral').height(25 + 'px');
 | 
        
           |  |  | 1280 | 	$('#panneau-lateral').width(largeurPanneauLateralFerme + 'px');
 | 
        
           | 836 | jpm | 1281 | 	$('#pl-contenu').css('display', 'none');
 | 
        
           |  |  | 1282 | 	$('#pl-ouverture').css('display', 'block');
 | 
        
           |  |  | 1283 | 	$('#pl-fermeture').css('display', 'none');
 | 
        
           |  |  | 1284 |   | 
        
           |  |  | 1285 | 	google.maps.event.trigger(map, 'resize');
 | 
        
           |  |  | 1286 | };
 | 
        
           |  |  | 1287 |   | 
        
           | 1445 | aurelien | 1288 | function viderFiltreTaxon() {
 | 
        
           |  |  | 1289 | 	$('.taxon-actif .taxon').click();
 | 
        
           |  |  | 1290 | }
 | 
        
           |  |  | 1291 |   | 
        
           | 836 | jpm | 1292 | function filtrerParTaxon() {
 | 
        
           |  |  | 1293 | 	var ntAFiltrer = $('.nt', this).text();
 | 
        
           |  |  | 1294 | 	infoBulle.close();
 | 
        
           | 1037 | aurelien | 1295 | 	var zoom = map.getZoom();
 | 
        
           |  |  | 1296 | 	var NELatLng = map.getBounds().getNorthEast().lat()+'|'+map.getBounds().getNorthEast().lng();
 | 
        
           |  |  | 1297 | 	var SWLatLng = map.getBounds().getSouthWest().lat()+'|'+map.getBounds().getSouthWest().lng();
 | 
        
           |  |  | 1298 |   | 
        
           | 1447 | aurelien | 1299 | 	$('.raz-filtre-taxons').removeClass('taxon-actif');
 | 
        
           | 836 | jpm | 1300 | 	$('#taxon-'+nt).removeClass('taxon-actif');
 | 
        
           | 1447 | aurelien | 1301 |   | 
        
           | 836 | jpm | 1302 | 	if (nt == ntAFiltrer) {
 | 
        
           |  |  | 1303 | 		nt = '*';
 | 
        
           | 1037 | aurelien | 1304 | 		stationsUrl = stationsUrl.replace(/num_taxon=[*0-9]+/, 'num_taxon='+nt);
 | 
        
           |  |  | 1305 | 		chargerMarqueurs(zoom, NELatLng, SWLatLng);
 | 
        
           | 836 | jpm | 1306 | 	} else {
 | 
        
           | 1035 | aurelien | 1307 | 		stationsUrl = stationsUrl.replace(/num_taxon=[*0-9]+/, 'num_taxon='+ntAFiltrer);
 | 
        
           |  |  | 1308 | 		url = stationsUrl;
 | 
        
           |  |  | 1309 | 		url += '&zoom='+zoom+
 | 
        
           |  |  | 1310 | 			'&ne='+NELatLng+
 | 
        
           |  |  | 1311 | 			'&sw='+SWLatLng;
 | 
        
           |  |  | 1312 | 		requeteChargementPoints = $.getJSON(url, function (stationsFiltrees) {
 | 
        
           | 939 | jpm | 1313 | 			stations = stationsFiltrees;
 | 
        
           | 836 | jpm | 1314 | 			nt = ntAFiltrer;
 | 
        
           |  |  | 1315 | 			$('#taxon-'+nt).addClass('taxon-actif');
 | 
        
           | 1035 | aurelien | 1316 | 			rafraichirMarqueurs(stations);
 | 
        
           | 836 | jpm | 1317 | 		});
 | 
        
           |  |  | 1318 | 	}
 | 
        
           |  |  | 1319 | };
 | 
        
           |  |  | 1320 |   | 
        
           | 915 | jpm | 1321 | /*+--------------------------------------------------------------------------------------------------------+*/
 | 
        
           |  |  | 1322 | // FONCTIONS UTILITAIRES
 | 
        
           |  |  | 1323 |   | 
        
           | 980 | jpm | 1324 | function ouvrirPopUp(element, nomPopUp, event) {
 | 
        
           |  |  | 1325 | 	var options =
 | 
        
           |  |  | 1326 | 		'width=650,'+
 | 
        
           |  |  | 1327 | 		'height=600,'+
 | 
        
           |  |  | 1328 | 		'scrollbars=yes,'+
 | 
        
           |  |  | 1329 | 		'directories=no,'+
 | 
        
           |  |  | 1330 | 		'location=no,'+
 | 
        
           |  |  | 1331 | 		'menubar=no,'+
 | 
        
           |  |  | 1332 | 		'status=no,'+
 | 
        
           |  |  | 1333 | 		'toolbar=no';
 | 
        
           |  |  | 1334 | 	var popUp = window.open(element.href, nomPopUp, options);
 | 
        
           |  |  | 1335 | 	if (window.focus) {
 | 
        
           |  |  | 1336 | 		popUp.focus();
 | 
        
           |  |  | 1337 | 	}
 | 
        
           |  |  | 1338 | 	return arreter(event);
 | 
        
           |  |  | 1339 | };
 | 
        
           |  |  | 1340 |   | 
        
           |  |  | 1341 | function ouvrirNouvelleFenetre(element, event) {
 | 
        
           |  |  | 1342 | 	window.open(element.href);
 | 
        
           |  |  | 1343 | 	return arreter(event);
 | 
        
           |  |  | 1344 | }
 | 
        
           |  |  | 1345 |   | 
        
           | 915 | jpm | 1346 | function arreter(event) {
 | 
        
           |  |  | 1347 | 	if (event.stopPropagation) {
 | 
        
           |  |  | 1348 | 		event.stopPropagation();
 | 
        
           |  |  | 1349 | 	} else if (window.event) {
 | 
        
           |  |  | 1350 | 		window.event.cancelBubble = true;
 | 
        
           |  |  | 1351 | 	}
 | 
        
           | 980 | jpm | 1352 | 	if (event.preventDefault) {
 | 
        
           |  |  | 1353 | 		event.preventDefault();
 | 
        
           |  |  | 1354 | 	}
 | 
        
           |  |  | 1355 | 	event.returnValue = false;
 | 
        
           | 915 | jpm | 1356 | 	return false;
 | 
        
           |  |  | 1357 | }
 | 
        
           |  |  | 1358 |   | 
        
           | 836 | jpm | 1359 | /**
 | 
        
           |  |  | 1360 |  * +-------------------------------------+
 | 
        
           |  |  | 1361 |  * Number.prototype.formaterNombre
 | 
        
           |  |  | 1362 |  * +-------------------------------------+
 | 
        
           |  |  | 1363 |  * Params (facultatifs):
 | 
        
           |  |  | 1364 |  * - Int decimales: nombre de decimales (exemple: 2)
 | 
        
           |  |  | 1365 |  * - String signe: le signe precedent les decimales (exemple: "," ou ".")
 | 
        
           |  |  | 1366 |  * - String separateurMilliers: comme son nom l'indique
 | 
        
           |  |  | 1367 |  * Returns:
 | 
        
           |  |  | 1368 |  * - String chaine formatee
 | 
        
           |  |  | 1369 |  * @author	::mastahbenus::
 | 
        
           |  |  | 1370 |  * @author	Jean-Pascal MILCENT <jpm@tela-botanica.org> : ajout détection auto entier/flotant
 | 
        
           |  |  | 1371 |  * @souce	http://www.javascriptfr.com/codes/FORMATER-NOMBRE-FACON-NUMBER-FORMAT-PHP_40060.aspx
 | 
        
           |  |  | 1372 |  */
 | 
        
           |  |  | 1373 | Number.prototype.formaterNombre = function (decimales, signe, separateurMilliers) {
 | 
        
           |  |  | 1374 | 	var _sNombre = String(this), i, _sRetour = "", _sDecimales = "";
 | 
        
           |  |  | 1375 |   | 
        
           |  |  | 1376 | 	function is_int(nbre) {
 | 
        
           |  |  | 1377 | 		nbre = nbre.replace(',', '.');
 | 
        
           |  |  | 1378 | 		return !(parseFloat(nbre)-parseInt(nbre) > 0);
 | 
        
           |  |  | 1379 | 	}
 | 
        
           |  |  | 1380 |   | 
        
           |  |  | 1381 | 	if (decimales == undefined) {
 | 
        
           |  |  | 1382 | 		if (is_int(_sNombre)) {
 | 
        
           |  |  | 1383 | 			decimales = 0;
 | 
        
           |  |  | 1384 | 		} else {
 | 
        
           |  |  | 1385 | 			decimales = 2;
 | 
        
           |  |  | 1386 | 		}
 | 
        
           |  |  | 1387 | 	}
 | 
        
           |  |  | 1388 | 	if (signe == undefined) {
 | 
        
           |  |  | 1389 | 		if (is_int(_sNombre)) {
 | 
        
           |  |  | 1390 | 			signe = '';
 | 
        
           |  |  | 1391 | 		} else {
 | 
        
           |  |  | 1392 | 			signe = '.';
 | 
        
           |  |  | 1393 | 		}
 | 
        
           |  |  | 1394 | 	}
 | 
        
           |  |  | 1395 | 	if (separateurMilliers == undefined) {
 | 
        
           |  |  | 1396 | 		separateurMilliers = ' ';
 | 
        
           |  |  | 1397 | 	}
 | 
        
           |  |  | 1398 |   | 
        
           |  |  | 1399 | 	function separeMilliers (sNombre) {
 | 
        
           |  |  | 1400 | 		var sRetour = "";
 | 
        
           |  |  | 1401 | 		while (sNombre.length % 3 != 0) {
 | 
        
           |  |  | 1402 | 			sNombre = "0"+sNombre;
 | 
        
           |  |  | 1403 | 		}
 | 
        
           |  |  | 1404 | 		for (i = 0; i < sNombre.length; i += 3) {
 | 
        
           |  |  | 1405 | 			if (i == sNombre.length-1) separateurMilliers = '';
 | 
        
           |  |  | 1406 | 			sRetour += sNombre.substr(i, 3) + separateurMilliers;
 | 
        
           |  |  | 1407 | 		}
 | 
        
           |  |  | 1408 | 		while (sRetour.substr(0, 1) == "0") {
 | 
        
           |  |  | 1409 | 			sRetour = sRetour.substr(1);
 | 
        
           |  |  | 1410 | 		}
 | 
        
           |  |  | 1411 | 		return sRetour.substr(0, sRetour.lastIndexOf(separateurMilliers));
 | 
        
           |  |  | 1412 | 	}
 | 
        
           |  |  | 1413 |   | 
        
           |  |  | 1414 | 	if (_sNombre.indexOf('.') == -1) {
 | 
        
           |  |  | 1415 | 		for (i = 0; i < decimales; i++) {
 | 
        
           | 1586 | jpm | 1416 | 			_sDecimales += '0';
 | 
        
           | 836 | jpm | 1417 | 		}
 | 
        
           |  |  | 1418 | 		_sRetour = separeMilliers(_sNombre) + signe + _sDecimales;
 | 
        
           |  |  | 1419 | 	} else {
 | 
        
           |  |  | 1420 | 		var sDecimalesTmp = (_sNombre.substr(_sNombre.indexOf('.')+1));
 | 
        
           |  |  | 1421 | 		if (sDecimalesTmp.length > decimales) {
 | 
        
           |  |  | 1422 | 			var nDecimalesManquantes = sDecimalesTmp.length - decimales;
 | 
        
           |  |  | 1423 | 			var nDiv = 1;
 | 
        
           |  |  | 1424 | 			for (i = 0; i < nDecimalesManquantes; i++) {
 | 
        
           |  |  | 1425 | 				nDiv *= 10;
 | 
        
           |  |  | 1426 | 			}
 | 
        
           |  |  | 1427 | 			_sDecimales = Math.round(Number(sDecimalesTmp) / nDiv);
 | 
        
           |  |  | 1428 | 		}
 | 
        
           |  |  | 1429 | 		_sRetour = separeMilliers(_sNombre.substr(0, _sNombre.indexOf('.')))+String(signe)+_sDecimales;
 | 
        
           |  |  | 1430 | 	}
 | 
        
           |  |  | 1431 | 	return _sRetour;
 | 
        
           | 915 | jpm | 1432 | }
 | 
        
           |  |  | 1433 |   | 
        
           |  |  | 1434 | function debug(objet) {
 | 
        
           |  |  | 1435 | 	var msg = '';
 | 
        
           |  |  | 1436 | 	if (objet != null) {
 | 
        
           |  |  | 1437 | 		$.each(objet, function (cle, valeur) {
 | 
        
           | 1586 | jpm | 1438 | 			msg += cle+':'+valeur + "\n";
 | 
        
           | 915 | jpm | 1439 | 		});
 | 
        
           |  |  | 1440 | 	} else {
 | 
        
           | 1586 | jpm | 1441 | 		msg = 'La variable vaut null.';
 | 
        
           | 915 | jpm | 1442 | 	}
 | 
        
           |  |  | 1443 | 	console.log(msg);
 | 
        
           | 836 | jpm | 1444 | }
 |