Rev 28 | Rev 37 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
// Javascript Document// ===================================================================================// FONCTIONS ADDITIONNELLES POUR GERER LES URLS ET L'OUVERTRURE DE NOUVELLE FENETREfunction convertirEnParametresUrl(objet) {var parametresUrl = '';for (attribut in objet) {if (typeof(objet[attribut]) == 'function' || typeof(objet[attribut]) == 'undefined' ||objet[attribut] == null || objet[attribut] == '*' || objet[attribut] == 0)continue;parametresUrl += (parametresUrl == '' ? '' : '&') + attribut + "=" + objet[attribut];}return parametresUrl;};function recupererParametreDansUrl(nomParametre, chaineRecherche) {var split = chaineRecherche.split('?');chaineRecherche = split[split.length-1];var valeurParametre = null;var listeParametres = chaineRecherche.split("&");for (var index = 0; index < listeParametres.length; index ++) {var split = listeParametres[index].split("=");if (split[0] == nomParametre) {valeurParametre = split[1];break;}}return valeurParametre;};function estValeurDansTableau(tableau, valeur) {var index;for (index = 0; index < tableau.length && tableau[index] != valeur; index ++);return (tableau.length > 0 && index != tableau.length);}function ouvrirNouvelleFenetre(element, event) {window.open(element.href);return arreter(event);}function arreter(event) {if (event.stopPropagation) {event.stopPropagation();} else if (window.event) {window.event.cancelBubble = true;}if (event.preventDefault) {event.preventDefault();}event.returnValue = false;return false;}// =============================================================var map = null,optionsCoucheOSM = {attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors,'+ ' <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>',maxZoom: 18},optionsCoucheGoogle = {attribution: 'Map data ©'+new Date().getFullYear()+' <a href="http://maps.google.com">Google</a>',maxZoom: 18},coucheOSM = new L.TileLayer("http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",optionsCoucheOSM),couchePlanGoogle = new L.TileLayer("http://mt1.google.com/vt/lyrs=m&x={x}&y={y}&z={z}",optionsCoucheGoogle),coucheSatelliteGoogle = new L.TileLayer("http://mt1.google.com/vt/lyrs=y&x={x}&y={y}&z={z}",optionsCoucheGoogle),optionsCarte = {center : new L.LatLng(46, 2),zoom : 6,minZoom : 3,maxBounds : [[-85.051129, -180], [85.051129, 180]],layers : [coucheOSM]},zoom = 6,legende = null,coucheDepartement = null,infoBulle = null;var coucheSites = new L.FeatureGroup(),points = new Array(),coucheSites = new L.FeatureGroup(),sources = new Object(),formeDonnees = '',popupMaille = null;overlays = [];var requeteChargementPoints = null,chargementMaillesEnCours = false,doitRafraichirCarte = true,chargementCommunesEnCours = false,timer = null,url = '';$(document).ready(function() {initialiserWidget();});function initialiserWidget() {initialiserCarte();dimensionnerOverlay();initialiserPanneauControle();initialiserSources();initialiserListeners();chargerLimitesCommunales();chargerMaillesVides();programmerRafraichissementCarte();}$(window).resize(function() {dimensionnerCarte();if (infoBulle != null) {redimensionnerPopup();}});function dimensionnerOverlay() {var taille = '1.6';var tailleMaxIcones = 20;var padding_icones = 8;$("#zone-titre h1").css('font-size', (taille)+'em');$("#zone-titre").css('padding', padding_icones+"px "+padding_icones+"px "+Math.round(padding_icones/4)+"px");$('#zone-titre').height(tailleMaxIcones*2);var left = ($(window).width()-$('#zone-titre').width())/2;$('#zone-titre').css('left',left);}function dimensionnerCarte() {$('#map').height($(window).height());$('#map').width($(window).width());}function initialiserCarte() {dimensionnerCarte();map = L.map('map', optionsCarte);coucheSites.addTo(map);coucheOSM.addTo(map);couchePlanGoogle.addTo(map);coucheSatelliteGoogle.addTo(map);var echelle = new L.Control.Scale({maxWidth : 32,metric : true,imperial : false,updateWhenIdle : true});map.addControl(echelle);zoom = map.getZoom();}function initialiserListeners() {map.on('moveend', surChangementVueSurCarte);map.on('zoomend', surChangementVueSurCarte);map.on('popupclose', function(e) {masquerInfoBulle();programmerRafraichissementCarte();});}function initialiserPanneauControle() {var baseMaps = {"OpenStreetMap" : coucheOSM,"Plan" : couchePlanGoogle,"Satellite" : coucheSatelliteGoogle};var overlayMaps = {};for (var index = 0; index < listeSources.length; index ++) {sources[listeSources[index]] = estValeurDansTableau(source, listeSources[index]);overlayMaps[listeSources[index]] = new L.LayerGroup();}L.control.layers(baseMaps, overlayMaps).addTo(map);coucheOSM.bringToFront();couchePlanGoogle.bringToBack();coucheSatelliteGoogle.bringToBack();// garder par defaut la couche plan google comme selectionnee dans le panelvar selecteursFonds = $('.leaflet-control-layers-base .leaflet-control-layers-selector');selecteursFonds[0].checked = true;selecteursFonds[1].checked = false;selecteursFonds[2].checked = false;}function chargerLimitesCommunales() {coucheDepartement = new L.KML(null, {async : true}).addTo(map);if (urlsLimitesCommunales != null) {coucheDepartement.addKMLFiles(urlsLimitesCommunales);}}function initialiserSources() {overlays = $('.leaflet-control-layers-overlays .leaflet-control-layers-selector');$.each(overlays, function (index, input) {input.value = listeSources[index];input.id = 'overlay' + (index+1);var lien = '<a href="' + liensVersSources[index] + '" target="_blank">' + nomListeSources[index] + '</a>';$('#overlay' + (index+1) + ' ~ span').html(lien);input.checked = sources[listeSources[index]];input.onclick = function(event) {changerSource(event.target.value);}});}function determinerSourcesSelectionnees() {var sourcesSelectionnees = new Array();for (source in sources) {if (sources[source] == true) {sourcesSelectionnees.push(source);}}return sourcesSelectionnees;}function surChangementVueSurCarte() {if (doitRafraichirCarte == false) {doitRafraichirCarte = true;} else {supprimerTousLayers();zoom = map.getZoom();chargerMaillesVides();}}function chargerMaillesVides() {chargementMaillesEnCours = true;if (timer != null) {window.clearTimeout(timer);}if (requeteChargementPoints != null) {stopperRequeteAjax();}timer = window.setTimeout(function() {var coordonneesBordure = calculerCoordonneesBordure();var parametres = {"source" : "floradata","bbox" : coordonneesBordure,"zoom" : map.getZoom()};url = urlBase + "mailles?" + convertirEnParametresUrl(parametres);fonctionCallback = traiterDonneesStations;executerAJAX();}, 400);}function programmerRafraichissementCarte(source) {source = (source == null || source == 'null') ? null : source;if (!chargementMaillesEnCours) {if (timer != null) {window.clearTimeout(timer);}if (requeteChargementPoints != null) {if (source == null) {stopperRequeteAjax();}}timer = window.setTimeout("rafraichirDonnnees('"+source+"')", 250);} else {window.setTimeout("programmerRafraichissementCarte('"+source+"')", 400);}}function stopperRequeteAjax() {requeteChargementPoints.abort();requeteChargementPoints = null;}function rafraichirDonnnees(source) {source = (source == null || source == 'null') ? null : source;if (coucheDepartement == null || coucheDepartement.getStatus() == KML_READY) {if (source != null) {chargerLocalisations(source);} else {supprimerLocalisations();for (source in sources) {if (sources[source] == true) {chargerLocalisations(source);}}}} else {window.setTimeout("rafraichirDonnnees('"+source+"')", 800);}}function supprimerTousLayers() {coucheSites.clearLayers();points = [];formeDonnees = '';}function supprimerLocalisations(source) {source = (typeof(source) == 'undefined') ? null : source;if (source != null) {var sourceUrl = recupererParametreDansUrl('source', url);if (requeteChargementPoints != null && sourceUrl == source && source != null) {stopperRequeteAjax();}coucheSites.eachLayer(function(layer) {supprimerLayer(layer, source);});if (source != null) {supprimerPointsListe(source);}var sourcesSelectionnees = determinerSourcesSelectionnees();if (sourcesSelectionnees.length == 1 && determinerNombreMarqueurs(sourcesSelectionnees[0]) > 0) {transformerMaillesEnPoints(sourcesSelectionnees[0]);}var sontPointsAffiches = (points.length>0 && determinerNombreMailles(false)==0);formeDonnees = sontPointsAffiches ? 'point' : 'maille';}}function estLayerUtilisePourSource(layer, source) {return ((layer.typeSite == 'MAILLE' && typeof(layer.nombrePoints[source]) != 'undefined') ||(layer.typeSite != 'MAILLE' && layer.source == source));}function supprimerLayer(layer, source) {if (estLayerUtilisePourSource(layer, source)) {if (layer.typeSite == 'MAILLE') {supprimerSourceDansMaille(layer, source);} else {coucheSites.removeLayer(layer);}}}function changerSource(projetClique) {var indexProjetClique;for (var index = 0; index < overlays.length; index ++) {if (overlays[index].value == projetClique) {indexProjetClique = index;}}masquerInfoBulle();sources[projetClique] = overlays[indexProjetClique].checked;if (sources[projetClique] == true) {programmerRafraichissementCarte(projetClique);} else {supprimerLocalisations(projetClique);}}function afficherMessageChargement(element) {if ($("#zone-chargement").css('display') == 'none') {var divTmplElement = 'tpl-chargement-' + element;$("#zone-chargement").append($("#" + divTmplElement).text());$("#zone-chargement").css('display', 'block');}}function masquerMessageChargement() {$("#zone-chargement").css('display', 'none');$("#zone-chargement").children().remove();}// execution d'une requete AJAXfunction executerAJAX() {if (requeteEnCours()) {masquerMessageChargement();requeteChargementPoints.abort();}requeteChargementPoints = $.getJSON(url).complete(function() {fonctionCallback();});}function requeteEnCours() {return (requeteChargementPoints != null && requeteChargementPoints.readyState != 4);}function estStatutRequeteOK() {return ((requeteChargementPoints.status == 200 || requeteChargementPoints.status == 304)|| requeteChargementPoints.status == 0);}function chargerLocalisations(source) {if (requeteEnCours()) {window.setTimeout("chargerLocalisations('"+source+"')", 400);} else {afficherMessageChargement('stations');// generer l'URL du script a interroger sur le serveurvar coordonneesBordure = calculerCoordonneesBordure();var parametres = {"source" : source,"num_taxon" : numTaxon,"referentiel" : referentiel,"dept" : dept,"nn" : nn,"auteur" : auteur,"date_debut" : dateDebut,"date_fin" : dateFin,"bbox" : coordonneesBordure,"nb_jours" : nbJours,"zoom" : map.getZoom()};url = urlBase + "stations?" + convertirEnParametresUrl(parametres);fonctionCallback = traiterDonneesStations;executerAJAX();}}function calculerCoordonneesBordure() {var bordure = map.getBounds();var ouest = bordure.getSouthWest().lng.toFixed(6),sud = Math.max(bordure.getSouthWest().lat, -85.051129).toFixed(6),est = bordure.getNorthEast().lng.toFixed(6),nord = Math.min(bordure.getNorthEast().lat, 85.051129).toFixed(6);// appliquer les limites possibles de la projection actuellement utilisee aux coordonnees// longitudes ouest et est de la bbox (permettra d'eviter de renvoyer des messages d'erreur)if (ouest < -180) {ouest += 360;} else if (ouest > 180) {ouest -= 360;}if (est < -180) {est += 360;} else if (est > 180) {est -= 360;}return [ouest, sud, est, nord].join(',');}function traiterDonneesStations() {masquerMessageChargement();var texte = requeteChargementPoints.responseText;if (!estStatutRequeteOK()) {alert(texte);} else {var donneesJSON = eval("(function(){return " + texte + ";})()");if (donneesJSON != null && typeof(donneesJSON.features) != 'undefined') {ajouterStationsSurCarte(donneesJSON);}}}function ajouterStationsSurCarte(data) {if (doitTransformerEnMaille(data.stats)) {if (points.length > 0 && data.stats.source != '') {combinerMaillesEtPoints();}formeDonnees = 'maille';} else {formeDonnees = data.stats.formeDonnees;}var sourceDonnees = data.stats.source;for (var index = 0; index < data.features.length; index ++) {ajouterStation(data.features[index]);}if (formeDonnees == 'maille' && data.stats.sites > 0) {afficherLegende();regenererInfobulleMailles();} else {masquerLegende();}if (chargementMaillesEnCours) {chargementMaillesEnCours = false;programmerRafraichissementCarte();}}function ajouterStation(feature) {if (feature.properties.typeSite == 'MAILLE') {traiterMaille(feature);} else {ajouterPoint(feature);}}function doitTransformerEnMaille(statsFeatures) {var condition1 = (formeDonnees == 'point' && statsFeatures.formeDonnees =='maille');var condition2 = (formeDonnees == 'maille' && statsFeatures.formeDonnees =='point'&& determinerNombreMailles(false) > 0);var condition3 = (statsFeatures.formeDonnees == 'point' && map.getZoom() <= ZOOM_MAXIMUM_MAILLAGE&& (points.length+statsFeatures.sites) > SEUIL_MAILLAGE);return (condition1 || condition2 || condition3);}// ====================================================================// Gestion des maillesvar optionsMaille = {color: '#FFFFFF',opacity : 0.7,weight: 1,fillOpacity : 0.6};function determinerNombreMailles(prendToutesMailles) {var nombreMailles = 0;coucheSites.eachLayer(function(layer) {if ('typeSite' in layer && layer.typeSite == 'MAILLE') {var nombrePoints = 0;for (var source in layer.nombrePoints) {nombrePoints = layer.nombrePoints[source];}if (prendToutesMailles || nombrePoints>0) {nombreMailles ++;}}});return nombreMailles;}function traiterMaille(feature) {var coordonnees = [];for (var i = 0; i < feature.geometry.coordinates.length; i++) {var sommet = new L.LatLng(feature.geometry.coordinates[i][0], feature.geometry.coordinates[i][1]);coordonnees.push(sommet);}var maille = rechercherMailleExistante(coordonnees);if (maille) {mettreAJourMaille(maille, feature);} else if (feature.properties.nombrePoints > 0) {ajouterMaille(feature);}}function rechercherMailleExistante(coordonnees) {var mailleTrouvee = null;coucheSites.eachLayer(function(layer) {if ('typeSite' in layer && layer.typeSite == 'MAILLE') {if (sontMaillesIdentiques(coordonnees, layer._latlngs)) {mailleTrouvee = layer;return;}}});return mailleTrouvee;}function sontMaillesIdentiques(coordonnees1, coordonnees2) {return (coordonnees1[0].lat == coordonnees2[0].lat &&coordonnees1[0].lng == coordonnees2[0].lng &&coordonnees1[2].lat == coordonnees2[2].lat &&coordonnees1[2].lng == coordonnees2[2].lng);}function ajouterMaille(feature) {var coordonnees = [];for (var i = 0; i < feature.geometry.coordinates.length; i++) {var sommet = new L.LatLng(feature.geometry.coordinates[i][0], feature.geometry.coordinates[i][1]);coordonnees.push(sommet);}var maille = new L.Polygon(coordonnees);maille.setStyle(optionsMaille);maille.typeSite = feature.properties.typeSite;maille.nombrePoints = new Object();var nombreAAjouter = feature.properties.nombrePoints == null ? 0 : parseInt(feature.properties.nombrePoints);maille.nombrePoints[feature.properties.source] = nombreAAjouter;coucheSites.addLayer(maille);colorerMaille(maille);}function mettreAJourMaille(maille, feature) {var nombreAAjouter = feature.properties.nombrePoints == null ? 0 : parseInt(feature.properties.nombrePoints);/*if (typeof(maille.nombrePoints[feature.properties.source]) == 'undefined') {maille.nombrePoints[feature.properties.source] = nombreAAjouter;} else {maille.nombrePoints[feature.properties.source] += nombreAAjouter;}*/maille.nombrePoints[feature.properties.source] = nombreAAjouter;colorerMaille(maille);}function regenererInfobulleMailles() {$('.leaflet-clickable').addClass('tooltip');coucheSites.eachLayer(function(layer) {if (layer.typeSite == 'MAILLE') {genererInfobulle(layer);}});}function colorerMaille(maille) {var nombrePoints = 0;for (sourceMaille in maille.nombrePoints) {nombrePoints += maille.nombrePoints[sourceMaille];}if (nombrePoints > 0) {maille.on('click', surClicMaille);maille.setStyle({fillColor : genererCouleur(nombrePoints), fillOpacity: 0.45, opacity: 0.7});} else {maille.setStyle({fillOpacity: 0, opacity: 0});maille.off('click', surClicMaille);}}function surClicMaille(event) {map.fitBounds(event.layer.getBounds());}function genererCouleur(nombrePoints) {var couleur = {'bleu': 231, 'vert': 224, 'rouge': 64},seuils = [1, 10, 50 ,100, 500, 1000, 2500],pas = 26,position = 0;for (var index = 1; index < seuils.length-1 && nombrePoints >= seuils[index]; index ++) {position ++;}couleur.vert -= position*pas;return 'rgb('+couleur.bleu+','+couleur.vert+','+couleur.rouge+')';}function afficherLegende() {if (legende == null) {legende = new L.Control({position : 'bottomright'});legende.onAdd = function(map) {return construireContenuHtmlLegende();};map.addControl(legende);}}function construireContenuHtmlLegende() {var div = L.DomUtil.create('div', 'info');div.innerHTML = '<h4>' + titreLegende + '</h4>';var seuils = [1, 10, 50 ,100, 500, 1000, 2500];var labels = [];for (var i = 0; i < seuils.length; i ++) {div.innerHTML +='<div class="legend">'+'<span style="background:' + genererCouleur(seuils[i] + 1) + '"></span>'+seuils[i]+ (i + 1 < seuils.length ? '–' + seuils[i + 1] : '+')+'</div>';}return div;}function masquerLegende() {if (legende != null) {map.removeControl(legende);legende = null;}}function supprimerSourceDansMaille(maille, sourceSuppression) {if (typeof(maille.nombrePoints[sourceSuppression]) != 'undefined') {maille.nombrePoints[sourceSuppression] = 0;colorerMaille(maille);genererInfobulle(maille);}}function genererInfobulle(maille) {var nombrePoints = 0,nombreSources = 0;contenuTexte = '';for (sourceMaille in maille.nombrePoints) {nombrePoints = maille.nombrePoints[sourceMaille];if (nombrePoints > 0) {contenuTexte += (contenuTexte.length==0 ?'' : '\n')+sourceMaille+' : '+maille.nombrePoints[sourceMaille];}nombreSources ++;}if (nombreSources > 0) {$(maille._path).addClass('tooltip');$(maille._path).attr('title',contenuTexte);}}// ====================================================================// Gestion des marqueursfunction ajouterPoint(feature) {var iconePoint = new L.Icon({ iconUrl : pointImageUrl, iconSize : [16, 16] }),iconeCommune = new L.Icon({ iconUrl : communeImageUrl, iconSize : [24, 32] }),icone = (feature.properties.typeSite == 'STATION') ? iconePoint : iconeCommune,point = new L.LatLng(feature.geometry.coordinates[0], feature.geometry.coordinates[1]),marker = new L.Marker(point, {icon : icone,title : feature.properties.nom})marker.typeSite = feature.properties.typeSite;marker.source = feature.properties.source;marker.on('click', surClicMarqueur);points.push(marker);if (formeDonnees != 'maille') {coucheSites.addLayer(marker);} else {ajouterPointDansMaille(marker);}}function ajouterPointDansMaille(point) {var maille = null;coucheSites.eachLayer(function(layer) {if (layer.typeSite == 'MAILLE' && layer.getBounds().contains(point.getLatLng())) {maille = layer;return;}});if (typeof(maille.nombrePoints[point.source]) == 'undefined') {maille.nombrePoints[point.source] = 1;} else {maille.nombrePoints[point.source] += 1;}colorerMaille(maille);}function combinerMaillesEtPoints() {enleverMarqueursCarte();coucheSites.eachLayer(function(layer) {if (layer.typeSite == 'MAILLE') {var nombrePoints = compterNombrePointsDansMaille(layer);ajouterNombrePointsDansMaille(layer, nombrePoints);}});}function determinerNombreMarqueurs(source) {var nombrePoints = 0;for (var index = 0; index < points.length; index ++) {if (points[index].source == source) {nombrePoints += 1;}}return nombrePoints;}function enleverMarqueursCarte() {coucheSites.eachLayer(function(layer) {if (layer.typeSite != 'MAILLE') {coucheSites.removeLayer(layer);}});}function compterNombrePointsDansMaille(maille) {var nombrePoints = {};for (var index = 0; index < points.length; index ++) {if (maille.getBounds().contains(points[index].getLatLng())) {var source = points[index].source;if (typeof(nombrePoints[source]) == 'undefined') {nombrePoints[source] = 1;} else {nombrePoints[source] += 1;}}}return nombrePoints;}function ajouterNombrePointsDansMaille(maille, nombrePoints) {for (sourceDonnees in nombrePoints) {if (typeof(maille.nombrePoints[sourceDonnees]) == 'undefined') {maille.nombrePoints[sourceDonnees] = nombrePoints[sourceDonnees];} else {maille.nombrePoints[sourceDonnees] += nombrePoints[sourceDonnees];}}colorerMaille(maille);}function supprimerPointsListe(sourceDonnees) {var index = 0;while (index < points.length) {if (points[index].source == sourceDonnees) {points.splice(index, 1);} else {index ++;}}}function transformerMaillesEnPoints(sourceDonnees) {coucheSites.eachLayer(function(layer) {if (layer.typeSite == 'MAILLE' && typeof(layer.nombrePoints[sourceDonnees]) != 'undefined') {supprimerSourceDansMaille(layer, sourceDonnees);}});for (var index = 0; index < points.length; index ++) {coucheSites.addLayer(points[index]);}}function surClicMarqueur(event) {var latitude = event.target.getLatLng().lat;var longitude = event.target.getLatLng().lng;pointClique = event.target;afficherMessageChargement('observations');var parametres = {"source" : pointClique.source,"num_taxon" : numTaxon,"referentiel" : referentiel,"auteur" : auteur,"nn" : nn,"type_site" : pointClique.typeSite,"date_debut" : dateDebut,"date_fin" : dateFin,"longitude" : longitude,"latitude" : latitude,"nb_jours" : nbJours};url = urlBase + "observations?" + convertirEnParametresUrl(parametres);fonctionCallback = traiterDonneesObservations;executerAJAX();}function traiterDonneesObservations() {masquerMessageChargement();var texte = requeteChargementPoints.responseText;if (!estStatutRequeteOK()) {alert(texte);} else {obsJSON = eval("(function(){return " + texte + ";})()");if (obsJSON != null) {viderListeObservations();if (obsJSON.total > 0) {doitRafraichirCarte = false;map.setView(new L.LatLng(pointClique.getLatLng().lat, pointClique.getLatLng().lng), map.getZoom());afficherInfoBulle();} else if (infoBulle != null) {masquerInfoBulle();}}}}function viderListeObservations() {obsStation = new Array();}// ====================================================================// Gestion de l'infobullevar obsJSON = null,pointClique = null,obsStation = [],typeAffichage = "";function afficherInfoBulle() {var latitude = pointClique.getLatLng().lat;var longitude = pointClique.getLatLng().lng;infoBulle = new L.Popup({maxWidth : definirLargeurInfoBulle(), maxHeight : 350});infoBulle.setLatLng(new L.LatLng(latitude, longitude));infoBulle.setContent($("#tpl-obs").html());infoBulle.openOn(map);remplirContenuPopup();}function definirLargeurInfoBulle() {var largeurViewPort = $(window).width();var lageurInfoBulle = null;if (largeurViewPort < 800) {largeurInfoBulle = 400;} else if (largeurViewPort >= 800 && largeurViewPort < 1200) {largeurInfoBulle = 500;} else if (largeurViewPort >= 1200) {largeurInfoBulle = 600;}return largeurInfoBulle;}function redimensionnerPopup() {$('.leaflet-popup-content*').css('width', definirLargeurInfoBulle());$('#info-bulle').css('width', definirLargeurInfoBulle());}function remplirContenuPopup() {ajouterTableauTriable("#obs-tableau");ajouterTitre();afficherOnglets();afficherTexteStationId();}function masquerInfoBulle() {if (infoBulle != null && map.hasLayer(infoBulle)) {map.removeLayer(infoBulle);}infoBulle = null;}function ajouterTitre() {var texteStationTitre = obsJSON.total + ' observation' + (obsJSON.total > 1 ? 's' : '')+ ' pour ' + (pointClique.options.type=='STATION' ? 'la station : ' : 'la commune : ')+ pointClique.options.title;$('#obs-station-titre').text(texteStationTitre);}function selectionnerOnglet() {$("#obs-vue-" + typeAffichage).css("display", "block");$('#obs-tableau-lignes').empty();$('#obs-liste-lignes').empty();if (typeAffichage=='liste') {$("#obs-vue-tableau").css("display", "none");} else {$("#obs-vue-liste").css("display", "none");}}function ajouterObservationsDansHTML() {if (obsStation.length==0) {// premiere execution de la fonction : faire une copie des objets JSON decrivant les observationsfor (var index = 0; index < obsJSON.observations.length; index ++) {obsStation.push(obsJSON.observations[index]);}}var obsPage = [];for (var index = 0; index < obsStation.length; index ++) {obsPage.push(obsStation[index]);}$("#tpl-obs-"+typeAffichage).tmpl(obsPage).appendTo("#obs-"+typeAffichage+"-lignes");}function afficherOnglets() {var $tabs = $('#obs').tabs();$('#obs').bind('tabsselect', function(event, ui) {if (ui.panel.id == 'obs-vue-tableau') {surClicAffichageTableau();} else if (ui.panel.id == 'obs-vue-liste') {surClicAffichageListe();}});if (obsJSON.total > 4) {surClicAffichageTableau();} else {$tabs.tabs('select', "#obs-vue-liste");}}function surClicAffichageTableau() {typeAffichage = 'tableau';selectionnerOnglet();ajouterObservationsDansHTML();mettreAJourTableauTriable("#obs-tableau");}function surClicAffichageListe() {typeAffichage = 'liste';selectionnerOnglet();ajouterObservationsDansHTML();}function ajouterTableauTriable(element) {$.tablesorter.addParser({id: 'date_cel',is: function(s) {// doit retourner false si le parseur n'est pas autodétectéreturn /^\s*\d{2}[\/-]\d{2}[\/-]\d{4}\s*$/.test(s);},format: function(date) {// Transformation date jj/mm/aaaa en aaaa/mm/jjdate = date.replace(/^\s*(\d{2})[\/-](\d{2})[\/-](\d{4})\s*$/, "$3/$2/$1");// Remplace la date par un nombre de millisecondes pour trier numériquementreturn $.tablesorter.formatFloat(new Date(date).getTime());},type: 'numeric'});$(element).tablesorter({headers: {1: {sorter:'date_cel'}}});}function mettreAJourTableauTriable(element) {$(element).trigger('update');}function afficherTexteStationId() {var latitude = pointClique.getLatLng().lat;var longitude = pointClique.getLatLng().lng;var texteStationId = pointClique.typeSite+':'+latitude+'|'+longitude+', SOURCE:'+pointClique.source;$('#obs-station-id').text(texteStationId);}