| 1799 | raphael | 1 | /*+--------------------------------------------------------------------------------------------------------+*/
 | 
        
           |  |  | 2 | // PARAMÊTRES et CONSTANTES
 | 
        
           |  |  | 3 | // Mettre à true pour afficher les messages de débogage
 | 
        
           |  |  | 4 | var DEBUG = false;
 | 
        
           |  |  | 5 | var pointImageUrl = 'http://chart.apis.google.com/chart?cht=mm&chs=24x32&chco=FFFFFF,008CFF,000000&ext=.png';
 | 
        
           |  |  | 6 | var pointsOrigine = null;
 | 
        
           |  |  | 7 | var boundsOrigine = null;
 | 
        
           |  |  | 8 | var markerClusterer = null;
 | 
        
           |  |  | 9 | var map = null;
 | 
        
           |  |  | 10 | var infoBulle = new google.maps.InfoWindow();
 | 
        
           |  |  | 11 | var pointClique = null;
 | 
        
           |  |  | 12 | var carteCentre = new google.maps.LatLng(46.4, 3.10);
 | 
        
           |  |  | 13 | var carteOptions = {
 | 
        
           |  |  | 14 | 	zoom: 6,
 | 
        
           |  |  | 15 | 	mapTypeId: google.maps.MapTypeId.ROADMAP,
 | 
        
           |  |  | 16 | 	mapTypeControlOptions: {
 | 
        
           |  |  | 17 | 		mapTypeIds: ['OSM',
 | 
        
           |  |  | 18 | 		             google.maps.MapTypeId.ROADMAP,
 | 
        
           |  |  | 19 | 		             google.maps.MapTypeId.HYBRID,
 | 
        
           |  |  | 20 | 		             google.maps.MapTypeId.SATELLITE,
 | 
        
           |  |  | 21 | 		             google.maps.MapTypeId.TERRAIN]
 | 
        
           |  |  | 22 | 	}
 | 
        
           |  |  | 23 | };
 | 
        
           |  |  | 24 | var ctaLayer = null;
 | 
        
           |  |  | 25 | var osmMapType = new google.maps.ImageMapType({
 | 
        
           |  |  | 26 | 	getTileUrl: function(coord, zoom) {
 | 
        
           |  |  | 27 | 		return "http://tile.openstreetmap.org/" +
 | 
        
           |  |  | 28 | 		zoom + "/" + coord.x + "/" + coord.y + ".png";
 | 
        
           |  |  | 29 | 	},
 | 
        
           |  |  | 30 | 	tileSize: new google.maps.Size(256, 256),
 | 
        
           |  |  | 31 | 	isPng: true,
 | 
        
           |  |  | 32 | 	alt: "OpenStreetMap",
 | 
        
           |  |  | 33 | 	name: "OSM",
 | 
        
           |  |  | 34 | 	maxZoom: 19
 | 
        
           |  |  | 35 | });
 | 
        
           |  |  | 36 | var pagineur = {'limite':50, 'start':0, 'total':0, 'stationId':null, 'format':'tableau'};
 | 
        
           |  |  | 37 | var station = {'commune':'', 'obsNbre':0};
 | 
        
           |  |  | 38 | var obsStation = new Array();
 | 
        
           |  |  | 39 | var obsPage = new Array();
 | 
        
           |  |  | 40 | var taxonsCarte = new Array();
 | 
        
           |  |  | 41 | /*+--------------------------------------------------------------------------------------------------------+*/
 | 
        
           |  |  | 42 | // INITIALISATION DU CODE
 | 
        
           |  |  | 43 |   | 
        
           |  |  | 44 | //Déclenchement d'actions quand JQuery et le document HTML sont OK
 | 
        
           |  |  | 45 | $(document).ready(function() {
 | 
        
           |  |  | 46 | 	initialiserWidget();
 | 
        
           |  |  | 47 | });
 | 
        
           |  |  | 48 |   | 
        
           |  |  | 49 | function initialiserWidget() {
 | 
        
           |  |  | 50 | 	afficherStats();
 | 
        
           |  |  | 51 | 	definirTailleTitre();
 | 
        
           |  |  | 52 | 	initialiserAffichageCarte();
 | 
        
           |  |  | 53 | 	initialiserAffichagePanneauLateral();
 | 
        
           |  |  | 54 |   | 
        
           |  |  | 55 | 	initialiserCarte();
 | 
        
           |  |  | 56 | 	initialiserInfoBulle();
 | 
        
           |  |  | 57 | 	initialiserFormulaireContact();
 | 
        
           |  |  | 58 | 	chargerLimitesCommunales();
 | 
        
           |  |  | 59 | 	rafraichirCarte();
 | 
        
           |  |  | 60 | }
 | 
        
           |  |  | 61 |   | 
        
           |  |  | 62 | /*+--------------------------------------------------------------------------------------------------------+*/
 | 
        
           |  |  | 63 | // AFFICHAGE GÉNÉRAL
 | 
        
           |  |  | 64 |   | 
        
           |  |  | 65 | function afficherStats() {
 | 
        
           |  |  | 66 | 	// Ajout du nombre de communes où des observations ont eu lieu
 | 
        
           |  |  | 67 | 	$('#commune-nbre').text(stations.stats.communes.formaterNombre());
 | 
        
           |  |  | 68 | 	// Ajout du nombre d'observations
 | 
        
           |  |  | 69 | 	$('#obs-nbre').text(stations.stats.observations.formaterNombre());
 | 
        
           |  |  | 70 | }
 | 
        
           |  |  | 71 |   | 
        
           |  |  | 72 | function definirTailleTitre() {
 | 
        
           |  |  | 73 | 	var largeurViewPort = $(window).width();
 | 
        
           |  |  | 74 | 	var taille = null;
 | 
        
           |  |  | 75 | 	if (largeurViewPort < 400) {
 | 
        
           |  |  | 76 | 		taille = '0.8';
 | 
        
           |  |  | 77 | 	} else if (largeurViewPort >= 400 && largeurViewPort < 800) {
 | 
        
           |  |  | 78 | 		taille = '1.0';
 | 
        
           |  |  | 79 | 	} else if (largeurViewPort >= 800) {
 | 
        
           |  |  | 80 | 		taille = '1.6';
 | 
        
           |  |  | 81 | 	}
 | 
        
           |  |  | 82 | 	$("#carte-titre").css('font-size', taille+'em');
 | 
        
           |  |  | 83 | }
 | 
        
           |  |  | 84 |   | 
        
           |  |  | 85 | /*+--------------------------------------------------------------------------------------------------------+*/
 | 
        
           |  |  | 86 | // CARTE
 | 
        
           |  |  | 87 |   | 
        
           |  |  | 88 | function initialiserAffichageCarte() {
 | 
        
           |  |  | 89 | 	$('#carte').height($(window).height() - 35);
 | 
        
           |  |  | 90 | 	$('#carte').width($(window).width() - 24);
 | 
        
           |  |  | 91 |   | 
        
           |  |  | 92 | 	if (nt != '*') {
 | 
        
           |  |  | 93 | 		$('#carte').css('left', 0);
 | 
        
           |  |  | 94 | 	}
 | 
        
           |  |  | 95 | }
 | 
        
           |  |  | 96 |   | 
        
           |  |  | 97 | function initialiserCarte() {
 | 
        
           |  |  | 98 | 	map = new google.maps.Map(document.getElementById('carte'), carteOptions);
 | 
        
           |  |  | 99 | 	// Ajout de la couche OSM à la carte
 | 
        
           |  |  | 100 | 	map.mapTypes.set('OSM', osmMapType);
 | 
        
           |  |  | 101 | }
 | 
        
           |  |  | 102 |   | 
        
           |  |  | 103 |   | 
        
           |  |  | 104 | function chargerLimitesCommunales() {
 | 
        
           |  |  | 105 | 	if (urlsLimitesCommunales != null) {
 | 
        
           |  |  | 106 | 		for (urlId in urlsLimitesCommunales) {
 | 
        
           |  |  | 107 | 			var url = urlsLimitesCommunales[urlId];
 | 
        
           |  |  | 108 | 			ctaLayer = new google.maps.KmlLayer(url, {preserveViewport: true});
 | 
        
           |  |  | 109 | 			ctaLayer.setMap(map);
 | 
        
           |  |  | 110 | 		}
 | 
        
           |  |  | 111 | 	}
 | 
        
           |  |  | 112 | }
 | 
        
           |  |  | 113 |   | 
        
           |  |  | 114 | function rafraichirCarte() {
 | 
        
           |  |  | 115 | 	var points = [];
 | 
        
           |  |  | 116 | 	var bounds = new google.maps.LatLngBounds();
 | 
        
           |  |  | 117 | 	for (var i = 0; i < stations.stats.communes; ++i) {
 | 
        
           |  |  | 118 | 		var maLatLng = new google.maps.LatLng(stations.points[i].latitude, stations.points[i].longitude);
 | 
        
           |  |  | 119 | 		var pointImage = new google.maps.MarkerImage(pointImageUrl, new google.maps.Size(24, 32));
 | 
        
           |  |  | 120 | 		var point = new google.maps.Marker({
 | 
        
           |  |  | 121 | 			position: maLatLng,
 | 
        
           |  |  | 122 | 			map: map,
 | 
        
           |  |  | 123 | 			icon: pointImage,
 | 
        
           |  |  | 124 | 			stationId: stations.points[i].id
 | 
        
           |  |  | 125 | 		});
 | 
        
           |  |  | 126 |   | 
        
           |  |  | 127 | 		bounds.extend(maLatLng);
 | 
        
           |  |  | 128 |   | 
        
           |  |  | 129 | 		google.maps.event.addListener(point, 'click', function() {
 | 
        
           |  |  | 130 | 			pointClique =  this;
 | 
        
           |  |  | 131 | 			infoBulle.open(map, this);
 | 
        
           |  |  | 132 |   | 
        
           |  |  | 133 | 			var limites = map.getBounds();
 | 
        
           |  |  | 134 | 			var centre = limites.getCenter();
 | 
        
           |  |  | 135 | 			var nordEst = limites.getNorthEast();
 | 
        
           |  |  | 136 | 			var centreSudLatLng = new google.maps.LatLng(nordEst.lat(), centre.lng());
 | 
        
           |  |  | 137 | 			map.panTo(centreSudLatLng);
 | 
        
           |  |  | 138 |   | 
        
           |  |  | 139 | 			afficherInfoBulle();
 | 
        
           |  |  | 140 | 			chargerObs(0, 0);
 | 
        
           |  |  | 141 | 		});
 | 
        
           |  |  | 142 |   | 
        
           |  |  | 143 | 		points.push(point);
 | 
        
           |  |  | 144 | 	}
 | 
        
           |  |  | 145 |   | 
        
           |  |  | 146 | 	if (pointsOrigine == null && boundsOrigine == null) {
 | 
        
           |  |  | 147 | 		pointsOrigine = points;
 | 
        
           |  |  | 148 | 		boundsOrigine = bounds;
 | 
        
           |  |  | 149 | 	}
 | 
        
           |  |  | 150 |   | 
        
           |  |  | 151 | 	executerMarkerClusterer(points, bounds);
 | 
        
           |  |  | 152 | }
 | 
        
           |  |  | 153 |   | 
        
           |  |  | 154 | function deplacerCartePointClique() {
 | 
        
           |  |  | 155 | 	map.panTo(pointClique.position);
 | 
        
           |  |  | 156 | }
 | 
        
           |  |  | 157 |   | 
        
           |  |  | 158 | function executerMarkerClusterer(points, bounds) {
 | 
        
           |  |  | 159 | 	if (markerClusterer) {
 | 
        
           |  |  | 160 | 		markerClusterer.clearMarkers();
 | 
        
           |  |  | 161 | 	}
 | 
        
           |  |  | 162 | 	markerClusterer = new MarkerClusterer(map, points);
 | 
        
           |  |  | 163 | 	map.fitBounds(bounds);
 | 
        
           |  |  | 164 | }
 | 
        
           |  |  | 165 |   | 
        
           |  |  | 166 | /*+--------------------------------------------------------------------------------------------------------+*/
 | 
        
           |  |  | 167 | // INFO BULLE
 | 
        
           |  |  | 168 |   | 
        
           |  |  | 169 | function initialiserInfoBulle() {
 | 
        
           |  |  | 170 | 	google.maps.event.addListener(infoBulle, 'domready', initialiserContenuInfoBulle);
 | 
        
           |  |  | 171 | 	google.maps.event.addListener(infoBulle, 'closeclick', deplacerCartePointClique);
 | 
        
           |  |  | 172 | }
 | 
        
           |  |  | 173 |   | 
        
           |  |  | 174 | function afficherInfoBulle() {
 | 
        
           |  |  | 175 | 	var obsHtml = $("#tpl-obs").html();
 | 
        
           |  |  | 176 | 	var largeur = definirLargeurInfoBulle();
 | 
        
           |  |  | 177 | 	obsHtml = obsHtml.replace(/\{largeur\}/, largeur);
 | 
        
           |  |  | 178 | 	infoBulle.setContent(obsHtml);
 | 
        
           |  |  | 179 | }
 | 
        
           |  |  | 180 |   | 
        
           |  |  | 181 | function definirLargeurInfoBulle() {
 | 
        
           |  |  | 182 | 	var largeurViewPort = $(window).width();
 | 
        
           |  |  | 183 | 	var lageurInfoBulle = null;
 | 
        
           |  |  | 184 | 	if (largeurViewPort < 800) {
 | 
        
           |  |  | 185 | 		largeurInfoBulle = 400;
 | 
        
           |  |  | 186 | 	} else if (largeurViewPort >= 800 && largeurViewPort < 1200) {
 | 
        
           |  |  | 187 | 		largeurInfoBulle = 500;
 | 
        
           |  |  | 188 | 	} else if (largeurViewPort >= 1200) {
 | 
        
           |  |  | 189 | 		largeurInfoBulle = 600;
 | 
        
           |  |  | 190 | 	}
 | 
        
           |  |  | 191 | 	return largeurInfoBulle;
 | 
        
           |  |  | 192 | }
 | 
        
           |  |  | 193 |   | 
        
           |  |  | 194 | function afficherMessageChargement(element) {
 | 
        
           |  |  | 195 | 	if ($('#chargement').get() == '') {
 | 
        
           |  |  | 196 | 		$('#tpl-chargement').tmpl().appendTo(element);
 | 
        
           |  |  | 197 | 	}
 | 
        
           |  |  | 198 | }
 | 
        
           |  |  | 199 |   | 
        
           |  |  | 200 | function supprimerMessageChargement() {
 | 
        
           |  |  | 201 | 	$('#chargement').remove();
 | 
        
           |  |  | 202 | }
 | 
        
           |  |  | 203 |   | 
        
           |  |  | 204 | function chargerObs(depart, total) {
 | 
        
           |  |  | 205 | 	if (depart == 0 || depart < total) {
 | 
        
           |  |  | 206 | 		var limite = 300;
 | 
        
           |  |  | 207 | 		if (depart == 0) {
 | 
        
           |  |  | 208 | 			obsStation = new Array();
 | 
        
           |  |  | 209 | 		}
 | 
        
           |  |  | 210 | 		//console.log("Chargement de "+depart+" à "+(depart+limite));
 | 
        
           |  |  | 211 | 		var urlObs = observationsUrl+'&start={start}&limit='+limite;
 | 
        
           |  |  | 212 | 		urlObs = urlObs.replace(/\{stationId\}/g, pointClique.stationId);
 | 
        
           |  |  | 213 | 		urlObs = urlObs.replace(/\{nt\}/g, nt);
 | 
        
           |  |  | 214 | 		urlObs = urlObs.replace(/\{start\}/g, depart);
 | 
        
           |  |  | 215 |   | 
        
           |  |  | 216 | 		$.getJSON(urlObs, function(observations){
 | 
        
           |  |  | 217 | 			obsStation = obsStation.concat(observations.observations);
 | 
        
           |  |  | 218 | 			if (depart == 0) {
 | 
        
           |  |  | 219 | 				actualiserInfosStation(observations);
 | 
        
           |  |  | 220 | 				actualiserPagineur();
 | 
        
           |  |  | 221 | 				creerTitreInfoBulle();
 | 
        
           |  |  | 222 | 			}
 | 
        
           |  |  | 223 | 			//console.log("Chargement ok");
 | 
        
           |  |  | 224 | 			chargerObs(depart+limite, station.obsNbre);
 | 
        
           |  |  | 225 | 		});
 | 
        
           |  |  | 226 | 	} else {
 | 
        
           |  |  | 227 | 		if (pagineur.limite < total) {
 | 
        
           |  |  | 228 | 			afficherPagination();
 | 
        
           |  |  | 229 | 		} else {
 | 
        
           |  |  | 230 | 			surClicPagePagination(0, null);
 | 
        
           |  |  | 231 | 			selectionnerOnglet("#obs-vue-"+pagineur.format);
 | 
        
           |  |  | 232 | 		}
 | 
        
           |  |  | 233 | 	}
 | 
        
           |  |  | 234 | }
 | 
        
           |  |  | 235 |   | 
        
           |  |  | 236 | function actualiserInfosStation(infos) {
 | 
        
           |  |  | 237 | 	station.commune = infos.commune;
 | 
        
           |  |  | 238 | 	station.obsNbre = infos.total;
 | 
        
           |  |  | 239 | }
 | 
        
           |  |  | 240 |   | 
        
           |  |  | 241 | function actualiserPagineur() {
 | 
        
           |  |  | 242 | 	pagineur.stationId = pointClique.stationId;
 | 
        
           |  |  | 243 | 	pagineur.total = station.obsNbre;
 | 
        
           |  |  | 244 | 	//console.log("Total pagineur: "+pagineur.total);
 | 
        
           |  |  | 245 | 	if (pagineur.total > 4) {
 | 
        
           |  |  | 246 | 		pagineur.format = 'tableau';
 | 
        
           |  |  | 247 | 	} else {
 | 
        
           |  |  | 248 | 		pagineur.format = 'liste';
 | 
        
           |  |  | 249 | 	}
 | 
        
           |  |  | 250 | }
 | 
        
           |  |  | 251 |   | 
        
           |  |  | 252 | function afficherPagination(observations) {
 | 
        
           |  |  | 253 | 	$(".navigation").pagination(pagineur.total, {
 | 
        
           |  |  | 254 | 		items_per_page:pagineur.limite,
 | 
        
           |  |  | 255 | 		callback:surClicPagePagination,
 | 
        
           |  |  | 256 | 		next_text:'Suivant',
 | 
        
           |  |  | 257 | 		prev_text:'Précédent',
 | 
        
           |  |  | 258 | 		prev_show_always:false,
 | 
        
           |  |  | 259 | 		num_edge_entries:1,
 | 
        
           |  |  | 260 | 		num_display_entries:4,
 | 
        
           |  |  | 261 | 		load_first_page:true
 | 
        
           |  |  | 262 | 	});
 | 
        
           |  |  | 263 | }
 | 
        
           |  |  | 264 |   | 
        
           |  |  | 265 | function surClicPagePagination(pageIndex, paginationConteneur) {
 | 
        
           |  |  | 266 | 	var index = pageIndex * pagineur.limite;
 | 
        
           |  |  | 267 | 	var indexMax = index + pagineur.limite;
 | 
        
           |  |  | 268 | 	pagineur.depart = index;
 | 
        
           |  |  | 269 | 	obsPage = new Array();
 | 
        
           |  |  | 270 |     for(index; index < indexMax; index++) {
 | 
        
           |  |  | 271 |     	obsPage.push(obsStation[index]);
 | 
        
           |  |  | 272 |     }
 | 
        
           |  |  | 273 |   | 
        
           |  |  | 274 |     supprimerMessageChargement();
 | 
        
           |  |  | 275 |     mettreAJourObservations();
 | 
        
           |  |  | 276 | 	return false;
 | 
        
           |  |  | 277 | }
 | 
        
           |  |  | 278 |   | 
        
           |  |  | 279 | function mettreAJourObservations() {
 | 
        
           |  |  | 280 | 	$("#obs-"+pagineur.format+"-lignes").empty();
 | 
        
           |  |  | 281 |    	$("#obs-vue-"+pagineur.format).css('display', 'block');
 | 
        
           |  |  | 282 |    	$(".obs-conteneur").css('counter-reset', 'item '+pagineur.depart);
 | 
        
           |  |  | 283 | 	$("#tpl-obs-"+pagineur.format).tmpl(obsPage).appendTo("#obs-"+pagineur.format+"-lignes");
 | 
        
           |  |  | 284 |   | 
        
           |  |  | 285 | 	// Actualisation de Fancybox
 | 
        
           |  |  | 286 | 	ajouterFomulaireContact("a.contact");
 | 
        
           |  |  | 287 | 	if (pagineur.format == 'liste') {
 | 
        
           |  |  | 288 | 		ajouterGaleriePhoto("a.cel-img");
 | 
        
           |  |  | 289 | 	}
 | 
        
           |  |  | 290 | }
 | 
        
           |  |  | 291 |   | 
        
           |  |  | 292 | function creerTitreInfoBulle() {
 | 
        
           |  |  | 293 | 	$("#obs-total").text(station.obsNbre);
 | 
        
           |  |  | 294 | 	$("#obs-commune").text(station.commune);
 | 
        
           |  |  | 295 | }
 | 
        
           |  |  | 296 |   | 
        
           |  |  | 297 | function initialiserContenuInfoBulle() {
 | 
        
           |  |  | 298 | 	afficherOnglets();
 | 
        
           |  |  | 299 | 	afficherMessageChargement('#observations');
 | 
        
           |  |  | 300 | 	ajouterTableauTriable("#obs-tableau");
 | 
        
           |  |  | 301 | 	afficherTextStationId();
 | 
        
           |  |  | 302 | 	corrigerLargeurInfoWindow();
 | 
        
           |  |  | 303 | }
 | 
        
           |  |  | 304 |   | 
        
           |  |  | 305 | function afficherOnglets() {
 | 
        
           |  |  | 306 | 	var $tabs = $('#obs').tabs();
 | 
        
           |  |  | 307 | 	$('#obs').bind('tabsselect', function(event, ui) {
 | 
        
           |  |  | 308 | 		if (ui.panel.id == 'obs-vue-tableau') {
 | 
        
           |  |  | 309 | 			surClicAffichageTableau();
 | 
        
           |  |  | 310 | 		} else if (ui.panel.id == 'obs-vue-liste') {
 | 
        
           |  |  | 311 | 			surClicAffichageListe();
 | 
        
           |  |  | 312 | 		}
 | 
        
           |  |  | 313 | 	});
 | 
        
           |  |  | 314 | 	$tabs.tabs('select', "#obs-vue-"+pagineur.format);
 | 
        
           |  |  | 315 | }
 | 
        
           |  |  | 316 |   | 
        
           |  |  | 317 | function selectionnerOnglet(onglet) {
 | 
        
           |  |  | 318 | 	$('#obs').tabs('select', onglet);
 | 
        
           |  |  | 319 | }
 | 
        
           |  |  | 320 |   | 
        
           |  |  | 321 | function afficherTextStationId() {
 | 
        
           |  |  | 322 | 	$('#obs-station-id').text(pointClique.stationId);
 | 
        
           |  |  | 323 | }
 | 
        
           |  |  | 324 |   | 
        
           |  |  | 325 | function corrigerLargeurInfoWindow() {
 | 
        
           |  |  | 326 | 	$("#info-bulle").width($("#info-bulle").width() - 17);
 | 
        
           |  |  | 327 | }
 | 
        
           |  |  | 328 |   | 
        
           |  |  | 329 | function surClicAffichageTableau(event) {
 | 
        
           |  |  | 330 | 	//console.log('tableau');
 | 
        
           |  |  | 331 | 	pagineur.format = 'tableau';
 | 
        
           |  |  | 332 | 	mettreAJourObservations();
 | 
        
           |  |  | 333 | 	mettreAJourTableauTriable("#obs-tableau");
 | 
        
           |  |  | 334 | }
 | 
        
           |  |  | 335 |   | 
        
           |  |  | 336 | function surClicAffichageListe(event) {
 | 
        
           |  |  | 337 | 	//console.log('liste');
 | 
        
           |  |  | 338 | 	pagineur.format = 'liste';
 | 
        
           |  |  | 339 | 	mettreAJourObservations();
 | 
        
           |  |  | 340 | 	ajouterGaleriePhoto("a.cel-img");
 | 
        
           |  |  | 341 | }
 | 
        
           |  |  | 342 |   | 
        
           |  |  | 343 | function ajouterTableauTriable(element) {
 | 
        
           |  |  | 344 | 	// add parser through the tablesorter addParser method
 | 
        
           |  |  | 345 | 	$.tablesorter.addParser({
 | 
        
           |  |  | 346 | 		// Définition d'un id unique pour ce parsseur
 | 
        
           |  |  | 347 | 		id: 'date_cel',
 | 
        
           |  |  | 348 | 		is: function(s) {
 | 
        
           |  |  | 349 | 			// doit retourner false si le parsseur n'est pas autodétecté
 | 
        
           |  |  | 350 | 			return /^\s*\d{2}[\/-]\d{2}[\/-]\d{4}\s*$/.test(s);
 | 
        
           |  |  | 351 | 		},
 | 
        
           |  |  | 352 | 		format: function(date) {
 | 
        
           |  |  | 353 | 			// Transformation date jj/mm/aaaa en aaaa/mm/jj
 | 
        
           |  |  | 354 | 			date = date.replace(/^\s*(\d{2})[\/-](\d{2})[\/-](\d{4})\s*$/, "$3/$2/$1");
 | 
        
           |  |  | 355 | 			// Remplace la date par un nombre de millisecondes pour trier numériquement
 | 
        
           |  |  | 356 | 			return $.tablesorter.formatFloat(new Date(date).getTime());
 | 
        
           |  |  | 357 | 		},
 | 
        
           |  |  | 358 | 		// set type, either numeric or text
 | 
        
           |  |  | 359 | 		type: 'numeric'
 | 
        
           |  |  | 360 | 	});
 | 
        
           |  |  | 361 | 	$(element).tablesorter({
 | 
        
           |  |  | 362 |         headers: {
 | 
        
           |  |  | 363 | 			1: {
 | 
        
           |  |  | 364 |             	sorter:'date_cel'
 | 
        
           |  |  | 365 |         	}
 | 
        
           |  |  | 366 |     	}
 | 
        
           |  |  | 367 | 	});
 | 
        
           |  |  | 368 | }
 | 
        
           |  |  | 369 |   | 
        
           |  |  | 370 | function mettreAJourTableauTriable(element) {
 | 
        
           |  |  | 371 | 	$(element).trigger('update');
 | 
        
           |  |  | 372 | }
 | 
        
           |  |  | 373 |   | 
        
           |  |  | 374 | function ajouterGaleriePhoto(element) {
 | 
        
           |  |  | 375 | 	$(element).fancybox({
 | 
        
           |  |  | 376 | 		transitionIn:'elastic',
 | 
        
           |  |  | 377 | 		transitionOut:'elastic',
 | 
        
           |  |  | 378 | 		speedIn	:600,
 | 
        
           |  |  | 379 | 		speedOut:200,
 | 
        
           |  |  | 380 | 		overlayShow:true,
 | 
        
           |  |  | 381 | 		titleShow:true,
 | 
        
           |  |  | 382 | 		titlePosition:'inside',
 | 
        
           |  |  | 383 | 		titleFormat:function (titre, currentArray, currentIndex, currentOpts) {
 | 
        
           |  |  | 384 | 			var motif = /urn:lsid:tela-botanica[.]org:cel:img([0-9]+)$/;
 | 
        
           |  |  | 385 | 			motif.exec(titre);
 | 
        
           |  |  | 386 | 			var id = RegExp.$1;
 | 
        
           |  |  | 387 | 			var info = $('#cel-info-'+id).clone().html();
 | 
        
           |  |  | 388 | 			var tpl =
 | 
        
           |  |  | 389 | 				'<div class="cel-legende">'+
 | 
        
           |  |  | 390 | 				'<p class="cel-legende-vei">'+'Image n°' + (currentIndex + 1) + ' sur ' + currentArray.length +'<\/p>'+
 | 
        
           |  |  | 391 | 				(titre && titre.length ? '<p>'+info+'<\/p>' : '' )+
 | 
        
           |  |  | 392 | 				'<\/div>';
 | 
        
           |  |  | 393 | 			return tpl;
 | 
        
           |  |  | 394 | 		}
 | 
        
           |  |  | 395 | 		}).live('click', function(e) {
 | 
        
           |  |  | 396 | 			if (e.stopPropagation) {
 | 
        
           |  |  | 397 | 				e.stopPropagation();
 | 
        
           |  |  | 398 | 			}
 | 
        
           |  |  | 399 | 			return false;
 | 
        
           |  |  | 400 | 		});
 | 
        
           |  |  | 401 | }
 | 
        
           |  |  | 402 |   | 
        
           |  |  | 403 | function ajouterFomulaireContact(element) {
 | 
        
           |  |  | 404 | 	$(element).fancybox({
 | 
        
           |  |  | 405 | 		transitionIn:'elastic',
 | 
        
           |  |  | 406 | 		transitionOut:'elastic',
 | 
        
           |  |  | 407 | 		speedIn	:600,
 | 
        
           |  |  | 408 | 		speedOut:200,
 | 
        
           |  |  | 409 | 		scrolling: 'no',
 | 
        
           |  |  | 410 | 		titleShow: false,
 | 
        
           |  |  | 411 | 		onStart: function(selectedArray, selectedIndex, selectedOpts) {
 | 
        
           |  |  | 412 | 			var element = selectedArray[selectedIndex];
 | 
        
           |  |  | 413 |   | 
        
           |  |  | 414 | 			var motif = / contributeur-([0-9]+)$/;
 | 
        
           |  |  | 415 | 			motif.exec($(element).attr('class'));
 | 
        
           |  |  | 416 | 			var id = RegExp.$1;
 | 
        
           |  |  | 417 | 			//console.log('Destinataire id : '+id);
 | 
        
           |  |  | 418 | 			$("#fc_destinataire_id").attr('value', id);
 | 
        
           |  |  | 419 |   | 
        
           |  |  | 420 | 			var motif = / obs-([0-9]+) /;
 | 
        
           |  |  | 421 | 			motif.exec($(element).attr('class'));
 | 
        
           |  |  | 422 | 			var id = RegExp.$1;
 | 
        
           |  |  | 423 | 			//console.log('Obs id : '+id);
 | 
        
           |  |  | 424 | 			chargerInfoObsPourMessage(id);
 | 
        
           |  |  | 425 | 		},
 | 
        
           |  |  | 426 | 		onCleanup: function() {
 | 
        
           |  |  | 427 | 			//console.log('Avant fermeture fancybox');
 | 
        
           |  |  | 428 | 			$("#fc_destinataire_id").attr('value', '');
 | 
        
           |  |  | 429 | 			$("#fc_sujet").attr('value', '');
 | 
        
           |  |  | 430 | 			$("#fc_message").text('');
 | 
        
           |  |  | 431 | 		},
 | 
        
           |  |  | 432 | 		onClosed: function(e) {
 | 
        
           |  |  | 433 | 			//console.log('Fermeture fancybox');
 | 
        
           |  |  | 434 | 			if (e.stopPropagation) {
 | 
        
           |  |  | 435 | 				e.stopPropagation();
 | 
        
           |  |  | 436 | 			}
 | 
        
           |  |  | 437 | 			return false;
 | 
        
           |  |  | 438 | 		}
 | 
        
           |  |  | 439 | 	});
 | 
        
           |  |  | 440 | }
 | 
        
           |  |  | 441 |   | 
        
           |  |  | 442 | function chargerInfoObsPourMessage(idObs) {
 | 
        
           |  |  | 443 | 	var nomSci = trim($(".cel-obs-"+idObs+" .nom-sci:eq(0)").text());
 | 
        
           |  |  | 444 | 	var date = trim($(".cel-obs-"+idObs+" .date:eq(0)").text());
 | 
        
           |  |  | 445 | 	var lieu = trim($(".cel-obs-"+idObs+" .lieu:eq(0)").text());
 | 
        
           |  |  | 446 | 	var sujet = "Observation #"+idObs+" de "+nomSci;
 | 
        
           |  |  | 447 | 	var message = "\n\n\n\n\n\n\n\n--\nConcerne l'observation de \""+nomSci+'" du "'+date+'" au lieu "'+lieu+'".';
 | 
        
           |  |  | 448 | 	$("#fc_sujet").attr('value', sujet);
 | 
        
           |  |  | 449 | 	$("#fc_message").text(message);
 | 
        
           |  |  | 450 | }
 | 
        
           |  |  | 451 |   | 
        
           |  |  | 452 | function initialiserFormulaireContact() {
 | 
        
           |  |  | 453 | 	//console.log('Initialisation du form contact');
 | 
        
           |  |  | 454 | 	$("#form-contact").validate({
 | 
        
           |  |  | 455 | 		rules: {
 | 
        
           |  |  | 456 | 			fc_sujet : "required",
 | 
        
           |  |  | 457 | 			fc_message : "required",
 | 
        
           |  |  | 458 | 			fc_utilisateur_courriel : {
 | 
        
           |  |  | 459 | 				required : true,
 | 
        
           |  |  | 460 | 				email : true}
 | 
        
           |  |  | 461 | 		}
 | 
        
           |  |  | 462 | 	});
 | 
        
           |  |  | 463 | 	$("#form-contact").bind("submit", envoyerCourriel);
 | 
        
           |  |  | 464 | 	$("#fc_annuler").bind("click", function() {$.fancybox.close();});
 | 
        
           |  |  | 465 |   | 
        
           |  |  | 466 | }
 | 
        
           |  |  | 467 |   | 
        
           |  |  | 468 | function envoyerCourriel() {
 | 
        
           |  |  | 469 | 	//console.log('Formulaire soumis');
 | 
        
           |  |  | 470 | 	if ($("#form-contact").valid()) {
 | 
        
           |  |  | 471 | 		//console.log('Formulaire valide');
 | 
        
           |  |  | 472 | 		//$.fancybox.showActivity();
 | 
        
           |  |  | 473 | 		var destinataireId = $("#fc_destinataire_id").attr('value');
 | 
        
           |  |  | 474 | 		var urlMessage = "http://www.tela-botanica.org/service:annuaire:Utilisateur/"+destinataireId+"/message"
 | 
        
           |  |  | 475 | 		var erreurMsg = "";
 | 
        
           |  |  | 476 | 		var donnees = new Array();
 | 
        
           |  |  | 477 | 		$.each($(this).serializeArray(), function (index, champ) {
 | 
        
           |  |  | 478 | 			var cle = champ.name;
 | 
        
           |  |  | 479 | 			cle = cle.replace(/^fc_/, '');
 | 
        
           |  |  | 480 |   | 
        
           |  |  | 481 | 			if (cle == 'sujet') {
 | 
        
           |  |  | 482 | 				champ.value += " - Carnet en ligne - Tela Botanica";
 | 
        
           |  |  | 483 | 			}
 | 
        
           |  |  | 484 | 			if (cle == 'message') {
 | 
        
           |  |  | 485 | 				champ.value += "\n--\n"+
 | 
        
           |  |  | 486 | 					"Ce message vous est envoyé par l'intermédiaire du widget Cartographique "+
 | 
        
           |  |  | 487 | 					"du Carnet en Ligne du réseau Tela Botanica.\n"+
 | 
        
           |  |  | 488 | 					"http://www.tela-botanica.org/widget:cel:carto";
 | 
        
           |  |  | 489 | 			}
 | 
        
           |  |  | 490 |   | 
        
           |  |  | 491 | 			donnees[index] = {'name':cle,'value':champ.value};
 | 
        
           |  |  | 492 | 		});
 | 
        
           |  |  | 493 | 		$.ajax({
 | 
        
           |  |  | 494 | 			type : "POST",
 | 
        
           |  |  | 495 | 			cache : false,
 | 
        
           |  |  | 496 | 			url : urlMessage,
 | 
        
           |  |  | 497 | 			data : donnees,
 | 
        
           |  |  | 498 | 			beforeSend : function() {
 | 
        
           |  |  | 499 | 				$(".msg").remove();
 | 
        
           |  |  | 500 | 			},
 | 
        
           |  |  | 501 | 			success : function(data) {
 | 
        
           |  |  | 502 | 				$("#fc-zone-dialogue").append('<pre class="msg info">'+data.message+'</pre>');
 | 
        
           |  |  | 503 | 			},
 | 
        
           |  |  | 504 | 			error : function(jqXHR, textStatus, errorThrown) {
 | 
        
           |  |  | 505 | 				erreurMsg += "Erreur Ajax :\ntype : "+textStatus+' '+errorThrown+"\n";
 | 
        
           |  |  | 506 | 				reponse = jQuery.parseJSON(jqXHR.responseText);
 | 
        
           |  |  | 507 | 				if (reponse != null) {
 | 
        
           |  |  | 508 | 					$.each(reponse, function (cle, valeur) {
 | 
        
           |  |  | 509 | 						erreurMsg += valeur + "\n";
 | 
        
           |  |  | 510 | 					});
 | 
        
           |  |  | 511 | 				}
 | 
        
           |  |  | 512 | 			},
 | 
        
           |  |  | 513 | 			complete : function(jqXHR, textStatus) {
 | 
        
           |  |  | 514 | 				var debugMsg = '';
 | 
        
           |  |  | 515 | 				if (jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
 | 
        
           |  |  | 516 | 					debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
 | 
        
           |  |  | 517 | 					if (debugInfos != null) {
 | 
        
           |  |  | 518 | 						$.each(debugInfos, function (cle, valeur) {
 | 
        
           |  |  | 519 | 							debugMsg += valeur + "\n";
 | 
        
           |  |  | 520 | 						});
 | 
        
           |  |  | 521 | 					}
 | 
        
           |  |  | 522 | 				}
 | 
        
           |  |  | 523 | 				if (erreurMsg != '') {
 | 
        
           |  |  | 524 | 					$("#fc-zone-dialogue").append('<p class="msg">'+
 | 
        
           |  |  | 525 | 							'Une erreur est survenue lors de la transmission de votre message.'+'<br />'+
 | 
        
           |  |  | 526 | 							'Vous pouvez signaler le disfonctionnement à <a href="'+
 | 
        
           |  |  | 527 | 							'mailto:cel@tela-botanica.org'+'?'+
 | 
        
           |  |  | 528 | 							'subject=Disfonctionnement du widget de Cartographie'+
 | 
        
           |  |  | 529 | 							"&body="+erreurMsg+"\nDébogage :\n"+debugMsg+
 | 
        
           |  |  | 530 | 							'">cel@tela-botanica.org</a>.'+
 | 
        
           |  |  | 531 | 							'</p>');
 | 
        
           |  |  | 532 | 				}
 | 
        
           |  |  | 533 | 				if (DEBUG) {
 | 
        
           |  |  | 534 | 					console.log('Débogage : '+debugMsg);
 | 
        
           |  |  | 535 | 				}
 | 
        
           |  |  | 536 | 				//console.log('Débogage : '+debugMsg);
 | 
        
           |  |  | 537 | 				//console.log('Erreur : '+erreurMsg);
 | 
        
           |  |  | 538 | 			}
 | 
        
           |  |  | 539 | 		});
 | 
        
           |  |  | 540 | 	}
 | 
        
           |  |  | 541 | 	return false;
 | 
        
           |  |  | 542 | }
 | 
        
           |  |  | 543 | /*+--------------------------------------------------------------------------------------------------------+*/
 | 
        
           |  |  | 544 | // PANNEAU LATÉRAL
 | 
        
           |  |  | 545 |   | 
        
           |  |  | 546 | function initialiserAffichagePanneauLateral() {
 | 
        
           |  |  | 547 | 	$('#panneau-lateral').height($(window).height() - 35);
 | 
        
           |  |  | 548 |   | 
        
           |  |  | 549 | 	if (nt == '*') {
 | 
        
           |  |  | 550 | 		$('#pl-ouverture').bind('click', afficherPanneauLateral);
 | 
        
           |  |  | 551 | 		$('#pl-fermeture').bind('click', cacherPanneauLateral);
 | 
        
           |  |  | 552 | 	}
 | 
        
           |  |  | 553 | 	chargerTaxons(0, 0);
 | 
        
           |  |  | 554 | }
 | 
        
           |  |  | 555 |   | 
        
           |  |  | 556 | function chargerTaxons(depart, total) {
 | 
        
           |  |  | 557 | 	if (depart == 0 || depart < total) {
 | 
        
           |  |  | 558 | 		var limite = 7000;
 | 
        
           |  |  | 559 | 		//console.log("Chargement des taxons de "+depart+" à "+(depart+limite));
 | 
        
           |  |  | 560 | 		var urlTax = taxonsUrl+'&start={start}&limit='+limite;
 | 
        
           |  |  | 561 | 		urlTax = urlTax.replace(/\{start\}/g, depart);
 | 
        
           |  |  | 562 | 		$.getJSON(urlTax, function(infos) {
 | 
        
           |  |  | 563 | 			taxonsCarte = taxonsCarte.concat(infos.taxons);
 | 
        
           |  |  | 564 | 			//console.log("Nbre taxons :"+taxonsCarte.length);
 | 
        
           |  |  | 565 | 			chargerTaxons(depart+limite, infos.total);
 | 
        
           |  |  | 566 | 		});
 | 
        
           |  |  | 567 | 	} else {
 | 
        
           |  |  | 568 | 		if (nt == '*') {
 | 
        
           |  |  | 569 | 			afficherTaxons();
 | 
        
           |  |  | 570 | 		} else {
 | 
        
           |  |  | 571 | 			afficherNomPlante();
 | 
        
           |  |  | 572 | 		}
 | 
        
           |  |  | 573 | 	}
 | 
        
           |  |  | 574 | }
 | 
        
           |  |  | 575 |   | 
        
           |  |  | 576 | function afficherTaxons() {
 | 
        
           |  |  | 577 | 	// Ajout du nombre de plantes au titre
 | 
        
           |  |  | 578 | 	$('.plantes-nbre').text(taxonsCarte.length.formaterNombre());
 | 
        
           |  |  | 579 |   | 
        
           |  |  | 580 | 	$("#tpl-taxons-liste").tmpl({'taxons':taxonsCarte}).appendTo("#pl-corps");
 | 
        
           |  |  | 581 | 	$('.taxon').live('click', filtrerParTaxon);
 | 
        
           |  |  | 582 | }
 | 
        
           |  |  | 583 |   | 
        
           |  |  | 584 | function afficherNomPlante() {
 | 
        
           |  |  | 585 | 	if (nt != '*') {
 | 
        
           |  |  | 586 | 		var taxon = taxonsCarte[0];
 | 
        
           |  |  | 587 | 		$('.plante-titre').text('pour '+taxon.nom);
 | 
        
           |  |  | 588 | 	}
 | 
        
           |  |  | 589 | }
 | 
        
           |  |  | 590 |   | 
        
           |  |  | 591 | function afficherPanneauLateral() {
 | 
        
           |  |  | 592 | 	$('#panneau-lateral').width(300);
 | 
        
           |  |  | 593 | 	$('#pl-contenu').css('display', 'block');
 | 
        
           |  |  | 594 | 	$('#pl-ouverture').css('display', 'none');
 | 
        
           |  |  | 595 | 	$('#pl-fermeture').css('display', 'block');
 | 
        
           |  |  | 596 | 	$('#carte').css('left', '300px');
 | 
        
           |  |  | 597 |   | 
        
           |  |  | 598 | 	google.maps.event.trigger(map, 'resize');
 | 
        
           |  |  | 599 | };
 | 
        
           |  |  | 600 |   | 
        
           |  |  | 601 | function cacherPanneauLateral() {
 | 
        
           |  |  | 602 | 	$('#panneau-lateral').width(24);
 | 
        
           |  |  | 603 | 	$('#pl-contenu').css('display', 'none');
 | 
        
           |  |  | 604 | 	$('#pl-ouverture').css('display', 'block');
 | 
        
           |  |  | 605 | 	$('#pl-fermeture').css('display', 'none');
 | 
        
           |  |  | 606 | 	$('#carte').css('left', '24px');
 | 
        
           |  |  | 607 |   | 
        
           |  |  | 608 | 	google.maps.event.trigger(map, 'resize');
 | 
        
           |  |  | 609 | };
 | 
        
           |  |  | 610 |   | 
        
           |  |  | 611 | function ouvrirPopUp(url, nom) {
 | 
        
           |  |  | 612 | 	window.open(url, nom, 'scrollbars=yes,width=650,height=600,directories=no,location=no,menubar=no,status=no,toolbar=no');
 | 
        
           |  |  | 613 | };
 | 
        
           |  |  | 614 |   | 
        
           |  |  | 615 | function filtrerParTaxon() {
 | 
        
           |  |  | 616 | 	var ntAFiltrer = $('.nt', this).text();
 | 
        
           |  |  | 617 | 	infoBulle.close();
 | 
        
           |  |  | 618 | 	$('#taxon-'+nt).removeClass('taxon-actif');
 | 
        
           |  |  | 619 | 	if (nt == ntAFiltrer) {
 | 
        
           |  |  | 620 | 		nt = '*';
 | 
        
           |  |  | 621 | 		executerMarkerClusterer(pointsOrigine, boundsOrigine);
 | 
        
           |  |  | 622 | 	} else {
 | 
        
           |  |  | 623 | 		var url = stationsUrl.replace(/num_taxon=[*0-9]+/, 'num_taxon='+ntAFiltrer)+
 | 
        
           |  |  | 624 | 			'&formatRetour=jsonP'+
 | 
        
           |  |  | 625 | 			'&callback=?';
 | 
        
           |  |  | 626 | 		$.getJSON(url, function (stationsFiltrees) {
 | 
        
           |  |  | 627 | 			stations = stationsFiltrees;
 | 
        
           |  |  | 628 | 			nt = ntAFiltrer;
 | 
        
           |  |  | 629 | 			$('#taxon-'+nt).addClass('taxon-actif');
 | 
        
           |  |  | 630 | 			rafraichirCarte();
 | 
        
           |  |  | 631 | 		});
 | 
        
           |  |  | 632 | 	}
 | 
        
           |  |  | 633 | };
 | 
        
           |  |  | 634 |   | 
        
           |  |  | 635 | /*+--------------------------------------------------------------------------------------------------------+*/
 | 
        
           |  |  | 636 | // FONCTIONS UTILITAIRES
 | 
        
           |  |  | 637 |   | 
        
           |  |  | 638 | function arreter(event) {
 | 
        
           |  |  | 639 | 	if (event.stopPropagation) {
 | 
        
           |  |  | 640 | 		event.stopPropagation();
 | 
        
           |  |  | 641 | 	} else if (window.event) {
 | 
        
           |  |  | 642 | 		window.event.cancelBubble = true;
 | 
        
           |  |  | 643 | 	}
 | 
        
           |  |  | 644 | 	return false;
 | 
        
           |  |  | 645 | }
 | 
        
           |  |  | 646 |   | 
        
           |  |  | 647 | /**
 | 
        
           |  |  | 648 |  * +-------------------------------------+
 | 
        
           |  |  | 649 |  * Number.prototype.formaterNombre
 | 
        
           |  |  | 650 |  * +-------------------------------------+
 | 
        
           |  |  | 651 |  * Params (facultatifs):
 | 
        
           |  |  | 652 |  * - Int decimales: nombre de decimales (exemple: 2)
 | 
        
           |  |  | 653 |  * - String signe: le signe precedent les decimales (exemple: "," ou ".")
 | 
        
           |  |  | 654 |  * - String separateurMilliers: comme son nom l'indique
 | 
        
           |  |  | 655 |  * Returns:
 | 
        
           |  |  | 656 |  * - String chaine formatee
 | 
        
           |  |  | 657 |  * @author	::mastahbenus::
 | 
        
           |  |  | 658 |  * @author	Jean-Pascal MILCENT <jpm@tela-botanica.org> : ajout détection auto entier/flotant
 | 
        
           |  |  | 659 |  * @souce	http://www.javascriptfr.com/codes/FORMATER-NOMBRE-FACON-NUMBER-FORMAT-PHP_40060.aspx
 | 
        
           |  |  | 660 |  */
 | 
        
           |  |  | 661 | Number.prototype.formaterNombre = function (decimales, signe, separateurMilliers) {
 | 
        
           |  |  | 662 | 	var _sNombre = String(this), i, _sRetour = "", _sDecimales = "";
 | 
        
           |  |  | 663 |   | 
        
           |  |  | 664 | 	function is_int(nbre) {
 | 
        
           |  |  | 665 | 		nbre = nbre.replace(',', '.');
 | 
        
           |  |  | 666 | 		return !(parseFloat(nbre)-parseInt(nbre) > 0);
 | 
        
           |  |  | 667 | 	}
 | 
        
           |  |  | 668 |   | 
        
           |  |  | 669 | 	if (decimales == undefined) {
 | 
        
           |  |  | 670 | 		if (is_int(_sNombre)) {
 | 
        
           |  |  | 671 | 			decimales = 0;
 | 
        
           |  |  | 672 | 		} else {
 | 
        
           |  |  | 673 | 			decimales = 2;
 | 
        
           |  |  | 674 | 		}
 | 
        
           |  |  | 675 | 	}
 | 
        
           |  |  | 676 | 	if (signe == undefined) {
 | 
        
           |  |  | 677 | 		if (is_int(_sNombre)) {
 | 
        
           |  |  | 678 | 			signe = '';
 | 
        
           |  |  | 679 | 		} else {
 | 
        
           |  |  | 680 | 			signe = '.';
 | 
        
           |  |  | 681 | 		}
 | 
        
           |  |  | 682 | 	}
 | 
        
           |  |  | 683 | 	if (separateurMilliers == undefined) {
 | 
        
           |  |  | 684 | 		separateurMilliers = ' ';
 | 
        
           |  |  | 685 | 	}
 | 
        
           |  |  | 686 |   | 
        
           |  |  | 687 | 	function separeMilliers (sNombre) {
 | 
        
           |  |  | 688 | 		var sRetour = "";
 | 
        
           |  |  | 689 | 		while (sNombre.length % 3 != 0) {
 | 
        
           |  |  | 690 | 			sNombre = "0"+sNombre;
 | 
        
           |  |  | 691 | 		}
 | 
        
           |  |  | 692 | 		for (i = 0; i < sNombre.length; i += 3) {
 | 
        
           |  |  | 693 | 			if (i == sNombre.length-1) separateurMilliers = '';
 | 
        
           |  |  | 694 | 			sRetour += sNombre.substr(i, 3) + separateurMilliers;
 | 
        
           |  |  | 695 | 		}
 | 
        
           |  |  | 696 | 		while (sRetour.substr(0, 1) == "0") {
 | 
        
           |  |  | 697 | 			sRetour = sRetour.substr(1);
 | 
        
           |  |  | 698 | 		}
 | 
        
           |  |  | 699 | 		return sRetour.substr(0, sRetour.lastIndexOf(separateurMilliers));
 | 
        
           |  |  | 700 | 	}
 | 
        
           |  |  | 701 |   | 
        
           |  |  | 702 | 	if (_sNombre.indexOf('.') == -1) {
 | 
        
           |  |  | 703 | 		for (i = 0; i < decimales; i++) {
 | 
        
           |  |  | 704 | 			_sDecimales += "0";
 | 
        
           |  |  | 705 | 		}
 | 
        
           |  |  | 706 | 		_sRetour = separeMilliers(_sNombre) + signe + _sDecimales;
 | 
        
           |  |  | 707 | 	} else {
 | 
        
           |  |  | 708 | 		var sDecimalesTmp = (_sNombre.substr(_sNombre.indexOf('.')+1));
 | 
        
           |  |  | 709 | 		if (sDecimalesTmp.length > decimales) {
 | 
        
           |  |  | 710 | 			var nDecimalesManquantes = sDecimalesTmp.length - decimales;
 | 
        
           |  |  | 711 | 			var nDiv = 1;
 | 
        
           |  |  | 712 | 			for (i = 0; i < nDecimalesManquantes; i++) {
 | 
        
           |  |  | 713 | 				nDiv *= 10;
 | 
        
           |  |  | 714 | 			}
 | 
        
           |  |  | 715 | 			_sDecimales = Math.round(Number(sDecimalesTmp) / nDiv);
 | 
        
           |  |  | 716 | 		}
 | 
        
           |  |  | 717 | 		_sRetour = separeMilliers(_sNombre.substr(0, _sNombre.indexOf('.')))+String(signe)+_sDecimales;
 | 
        
           |  |  | 718 | 	}
 | 
        
           |  |  | 719 | 	return _sRetour;
 | 
        
           |  |  | 720 | }
 | 
        
           |  |  | 721 |   | 
        
           |  |  | 722 | function debug(objet) {
 | 
        
           |  |  | 723 | 	var msg = '';
 | 
        
           |  |  | 724 | 	if (objet != null) {
 | 
        
           |  |  | 725 | 		$.each(objet, function (cle, valeur) {
 | 
        
           |  |  | 726 | 			msg += cle+":"+valeur + "\n";
 | 
        
           |  |  | 727 | 		});
 | 
        
           |  |  | 728 | 	} else {
 | 
        
           |  |  | 729 | 		msg = "La variable vaut null.";
 | 
        
           |  |  | 730 | 	}
 | 
        
           |  |  | 731 | 	console.log(msg);
 | 
        
           |  |  | 732 | }
 | 
        
           |  |  | 733 |   | 
        
           |  |  | 734 | function trim (chaine) {
 | 
        
           |  |  | 735 | 	return chaine.replace(/^\s+/g, '').replace(/\s+$/g, '');
 | 
        
           |  |  | 736 | }
 |