Subversion Repositories eFlore/Applications.cel

Rev

Rev 2916 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2697 mathias 1
// Héritage !!
2
function WidgetSaisieSauvages() {
3
	this.markerDeb = undefined;
4
	this.latLngDeb = undefined;
5
	this.markerFin = undefined;
6
	this.latLngCentre = undefined;
7
	this.latLngFin = undefined;
8
	this.ligneRue = undefined;
9
	this.premierDeplacement = true;
10
	this.valeurChamp = "";
11
	this.avertissementDeuxPhotosAffiche = false;
2700 mathias 12
	this.googleMapMarqueurDebutUrl = null;
13
	this.googleMapMarqueurFinUrl = null;
14
	this.ville = null;
15
	this.supprimerIconeUrl = null;
2744 aurelien 16
	this.serviceTraceRueUrl = null;
2709 mathias 17
	this.taxons = {};
2744 aurelien 18
	this.listeRues = {};
19
	this.indexRueSelectionnee = 0;
2748 aurelien 20
	this.requeteRechercheRue = null;
21
	this.aucuneRueSelectionnee = "Aucune rue sélectionnée";
22
	this.nomDeRueInconnue = "Nom de rue inconnu";
2905 aurel 23
	this.zoneGeo = null;
2916 mathias 24
	this.groupeZonesGeo = null;
25
	this.serviceCoordSearchUrl = "";
26
}
2697 mathias 27
WidgetSaisieSauvages.prototype = new WidgetSaisie();
1346 aurelien 28
 
2697 mathias 29
// surcharge
30
WidgetSaisieSauvages.prototype.initCarto = function() {
31
	this.initialiserGoogleMap();
32
	this.afficherEtapeGeolocalisation(1);
2736 mathias 33
	this.latLng = true; // patch cracra pour éviter de surcharger trouvercommune()
2707 mathias 34
 
2708 mathias 35
	var lthis = this;
2707 mathias 36
	$('#carte-recherche').autocomplete({
37
		//Cette partie utilise geocoder pour extraire des valeurs d'adresse
38
		source: function(request, response) {
39
			lthis.geocoder.geocode( {'address': request.term+', France', 'region' : 'fr' }, function(results, status) {
40
				if (status == google.maps.GeocoderStatus.OK) {
41
					response($.map(results, function(item) {
42
						var rue = "";
43
						$.each(item.address_components, function(){
44
							if (this.types[0] == "route" || this.types[0] == "street_address" ) {
45
								rue = this.short_name;
46
							}
47
						});
48
						var retour = {
49
							label: item.formatted_address,
50
							value: rue,
51
							latitude: item.geometry.location.lat(),
52
							longitude: item.geometry.location.lng()
53
						};
54
						return retour;
55
					}));
56
				} else {
57
					lthis.afficherErreurGoogleMap(status);
58
				}
59
			});
60
		},
61
		// Cette partie est executee a la selection d'une adresse
62
		select: function(event, ui) {
63
			var nouvellePosition = new google.maps.LatLng(ui.item.latitude, ui.item.longitude);
64
			lthis.initialiserMarkerDeb();
65
			lthis.deplacerMarkerDeb(nouvellePosition);
66
			lthis.map.setZoom(16);
67
			lthis.afficherEtapeGeolocalisation(2);
68
		}
69
	});
2701 mathias 70
};
1054 jpm 71
 
2697 mathias 72
//surcharge
73
WidgetSaisieSauvages.prototype.initForm = function() {
2708 mathias 74
	// super() à la main - toute autre manière de faire est über-komplex
75
	WidgetSaisie.prototype.initForm.call(this);
1916 jpm 76
 
2697 mathias 77
	this.surChangementTaxonListe();
78
	$('#taxon-liste').on('change', this.surChangementTaxonListe);
2700 mathias 79
	if (this.debug) {
2697 mathias 80
		console.log('Selected taxon:'+$('#taxon-liste option:selected').val());
1916 jpm 81
	}
2697 mathias 82
	$('#taxon-liste').on('blur', this.surChangementValeurTaxon);
83
	$('#taxon').on('blur', this.surChangementValeurTaxon);
2701 mathias 84
};
1916 jpm 85
 
2697 mathias 86
//surcharge
87
WidgetSaisieSauvages.prototype.initEvts = function() {
88
	var lthis = this;
2700 mathias 89
	// super() à la main - toute autre manière de faire est über-komplex
90
	WidgetSaisie.prototype.initEvts.call(this);
91
 
92
	$('.dropdown-menu input, .dropdown-menu label').on('click', function(event) {
93
		event.stopPropagation();
2697 mathias 94
	});
2700 mathias 95
	$('#fichier').off(); // elever l'écouteur d'événements de base
2697 mathias 96
	$('#fichier').on('click change', function(event) {
97
 
98
		if($("#photos-conteneur #miniatures .miniature").length == 1 && ! lthis.avertissementDeuxPhotosAffiche) {
99
			messageAvertissement = "Attention: \n"+
100
			"Sélectionnez uniquement les photos correspondantes à une seule plante \n"+
101
			"(c'est à dire correspondant à un seul individu d'une espèce donnée) \n"+
102
			"vue dans le tronçon de rue inventoriée ";
103
			if(window.confirm(messageAvertissement)) {
104
				lthis.avertissementDeuxPhotosAffiche = true;
105
				return true;
106
			} else {
107
				return false;
1916 jpm 108
			}
2697 mathias 109
		}
110
		if ($(this).val().length > 0) {
111
			arreter(event);
112
			var options = {
113
				success: lthis.afficherMiniature.bind(lthis), // post-submit callback
114
				dataType: 'xml', // 'xml', 'script', or 'json' (expected server response type)
115
				resetForm: true // reset the form after successful submit
116
			};
117
			$('#miniature').append(
2700 mathias 118
				'<img id="miniature-chargement" class="miniature" alt="chargement" src="'+ this.chargementImageIconeUrl +'"/>');
2697 mathias 119
			$('#ajouter-obs').attr('disabled', 'disabled');
120
			if (lthis.verifierFormat($(this).val())) {
121
				$('#form-upload').ajaxSubmit(options);
122
			} else {
123
				$('#form-upload')[0].reset();
124
				window.alert("Le format de fichier n'est pas supporté, les formats acceptés sont "+	$('#fichier').attr('accept'));
125
			}
126
			return false;
127
		}
1916 jpm 128
	});
129
 
2697 mathias 130
	$('.cb-milieux').on('click', function(event) {
131
		$(this).valid();
132
		event.stopPropagation();
133
	});
1956 jpm 134
 
2697 mathias 135
	// Défilement des photos
136
	$('body').on('click', '.defilement-control-zone', function(event) {
137
		lthis.defilerMiniatures($(this));
138
	});
139
	$('body').on('mouseover', '.defilement-control-zone', function(event) {
140
		$('.defilement-control', this).removeClass('hidden');
141
	});
142
	$('body').on('mouseout', '.defilement-control-zone', function(event) {
143
		$('.defilement-control', this).addClass('hidden');
144
	});
1916 jpm 145
 
2697 mathias 146
	$('#photo-placeholder').click(function(event) {
147
		$('#fichier').click();
148
	});
149
	$('#geolocaliser').on('click', this.geolocaliser.bind(this));
2744 aurelien 150
 
2745 aurelien 151
	$('.navigation-rue').on('click', this.surClicRueSuivantPrecedent.bind(this));
2701 mathias 152
};
2408 jpm 153
 
2697 mathias 154
WidgetSaisieSauvages.prototype.montrerFormIdentite = function() {
155
	$('#zone-courriel-confirmation, #zone-prenom-nom').css('display', 'block');
2701 mathias 156
};
2697 mathias 157
 
158
// surcharge
159
WidgetSaisieSauvages.prototype.initialiserGoogleMap = function() {
160
	var lthis = this;
2905 aurel 161
	this.latLngDeb = new google.maps.LatLng(48.8543, 2.3483);// Paris par défaut
2916 mathias 162
 
163
	// si param "groupes_zones_geo"
164
	if (this.groupeZonesGeo != "") {
165
		var url = this.serviceCoordSearchUrl + "?groupe_zones=" + this.groupeZonesGeo;
166
		$.getJSON(url, function(data) {
167
			console.log(data);
168
			lthis.latLngDeb = new google.maps.LatLng(data.groupe.centroide.lat, data.groupe.centroide.lng);
169
			lthis.suiteInitialiserGoogleMap();
170
		});
171
	}
2905 aurel 172
	// si param "zone_geo"
2916 mathias 173
	else if (this.zoneGeo != "") {
174
		var url = this.serviceCoordSearchUrl + "?zone=" + this.zoneGeo;
2905 aurel 175
		$.getJSON(url, function(data) {
176
			lthis.latLngDeb = new google.maps.LatLng(data.lat, data.lng);
177
			lthis.suiteInitialiserGoogleMap();
178
		});
179
	}
180
	// si param "ville"
2907 aurel 181
	else {
182
		if (this.ville == 'Marseille') {
183
			this.latLngDeb = new google.maps.LatLng(43.29545, 5.37458);
184
		}
185
		if (this.ville == 'Montpellier') {
186
			this.latLngDeb = new google.maps.LatLng(43.61077, 3.87672);
187
		}
2905 aurel 188
		this.suiteInitialiserGoogleMap();
1946 jpm 189
	}
2905 aurel 190
}
191
 
192
WidgetSaisieSauvages.prototype.suiteInitialiserGoogleMap = function() {
1922 jpm 193
	var options = {
2905 aurel 194
			zoom: 14, // avant : 16
2697 mathias 195
			center: this.latLngDeb,
1922 jpm 196
			mapTypeId: google.maps.MapTypeId.HYBRID,
197
			mapTypeControlOptions: {
2408 jpm 198
				mapTypeIds: ['OSM',
199
					google.maps.MapTypeId.ROADMAP,
200
					google.maps.MapTypeId.HYBRID,
201
					google.maps.MapTypeId.SATELLITE,
1922 jpm 202
					google.maps.MapTypeId.TERRAIN]}
203
		};
2408 jpm 204
 
1922 jpm 205
	// Ajout de la couche OSM à la carte
206
	osmMapType = new google.maps.ImageMapType({
207
		getTileUrl: function(coord, zoom) {
208
			return 'http://tile.openstreetmap.org/' + zoom + '/' + coord.x + '/' + coord.y + '.png';
209
		},
210
		tileSize: new google.maps.Size(256, 256),
211
		isPng: true,
212
		alt: 'OpenStreetMap',
213
		name: 'OSM',
214
		maxZoom: 19
1346 aurelien 215
	});
2408 jpm 216
 
1922 jpm 217
	// Création de la carte Google
2697 mathias 218
	this.map = new google.maps.Map(document.getElementById('map-canvas'), options); //affiche la google map dans la div map_canvas
219
	this.map.mapTypes.set('OSM', osmMapType);
2408 jpm 220
 
1922 jpm 221
	// Ajout de l'évènment sur click dans Carte
2697 mathias 222
	google.maps.event.addListener(this.map, 'click', this.surClickDansCarte.bind(this));
2408 jpm 223
 
1922 jpm 224
	// Lorsque la carte est chargée, on vérifie si on peut précharger des données
2907 aurel 225
	var lthis = this;
226
	google.maps.event.addListenerOnce(this.map, 'idle', function(){
227
		// Initialisation du marker de début de rue
228
		if (!lthis.obsId) {
229
			// Tentative de geolocalisation si aucune obs à précharger
230
			lthis.initialiserMarkerDeb();
231
			if (this.zoneGeo == "" && this.ville == "") {
2905 aurel 232
				lthis.tenterGeolocalisation();
233
			}
2907 aurel 234
		}
235
	});
2408 jpm 236
 
1922 jpm 237
	// Création du Geocoder
2697 mathias 238
	this.geocoder = new google.maps.Geocoder();
2701 mathias 239
};
1054 jpm 240
 
2708 mathias 241
WidgetSaisieSauvages.prototype.surClickDansCarte = function(event) {
2736 mathias 242
	this.latLngDeb = event.latLng;
243
	this.deplacerMarkerDeb(this.latLngDeb);
2708 mathias 244
};
245
 
2697 mathias 246
// surcharge
247
WidgetSaisieSauvages.prototype.prechargerForm = function(data) {
2256 aurelien 248
 
249
    $('#carte-recherche').val(data.zoneGeo);
250
	$('#commune-nom').text(data.zoneGeo);
2408 jpm 251
 
2257 aurelien 252
	if(data.hasOwnProperty("codeZoneGeo")) {
253
		$('#commune-code-insee').text(data.codeZoneGeo.replace('INSEE-C:', ''));
254
	}
2408 jpm 255
 
2697 mathias 256
    var pos = new google.maps.LatLng(data.latitude, data.longitude);
2408 jpm 257
 
2256 aurelien 258
    if(data.hasOwnProperty("extension")) {
259
    	// cas des obs florilèges qui apparaissent aussi comme des obs sauvages
260
    	// mais qui n'ont pas de coté de rue
261
    	if(data.extension.hasOwnProperty("coteRue")) {
262
    		$('#rue_cote option[value='+data.extension.coteRue.valeur+']').attr("selected", "selected");
263
    	}
2408 jpm 264
 
2697 mathias 265
    	var deb = new google.maps.LatLng(data.extension.latitudeDebutRue.valeur, data.extension.longitudeDebutRue.valeur);
266
	    var fin = new google.maps.LatLng(data.extension.latitudeFinRue.valeur, data.extension.longitudeFinRue.valeur);
2758 aurelien 267
 
2708 mathias 268
	    this.mettreAJourMarkerPosition(pos);
2408 jpm 269
 
2758 aurelien 270
	    this.latLngDeb = deb;
271
		this.initialiserMarkerDebSimple();
272
 
273
		this.latLngFin = fin;
274
	    this.initialiserMarkerFin(fin);
275
 
276
	    this.rechercherRue();
2408 jpm 277
 
2256 aurelien 278
	    var latlngbounds = new google.maps.LatLngBounds();
279
	    latlngbounds.extend(deb);
280
	    latlngbounds.extend(fin);
2697 mathias 281
	    this.map.setCenter(latlngbounds.getCenter());
282
	    this.map.fitBounds(latlngbounds);
2256 aurelien 283
    } else if(data.hasOwnProperty("latitude") && data.hasOwnProperty("longitude")) {
2697 mathias 284
    	this.deplacerMarkerDeb(pos);
2256 aurelien 285
    }
2701 mathias 286
};
2256 aurelien 287
 
2758 aurelien 288
WidgetSaisieSauvages.prototype.initialiserMarkerDebSimple = function() {
289
	this.premierDeplacement = true;
290
	if (this.markerDeb == undefined) {
291
		// Marqueur de début de Rue
292
		this.markerDeb = new google.maps.Marker({
293
			map: this.map,
294
			draggable: true,
295
			title: 'Début de la portion de rue étudiée',
296
			icon: this.googleMapMarqueurDebutUrl,
297
			position: this.latLngDeb
298
		});
299
		google.maps.event.addListener(this.markerDeb, 'dragend', this.surDeplacementMarkerDeb.bind(this));
300
	}
301
}
302
 
303
 
2697 mathias 304
WidgetSaisieSauvages.prototype.initialiserMarkerDeb = function() {
305
	this.premierDeplacement = true;
306
	if (this.markerDeb == undefined) {
1922 jpm 307
		// Marqueur de début de Rue
2697 mathias 308
		this.markerDeb = new google.maps.Marker({
309
			map: this.map,
1922 jpm 310
			draggable: true,
311
			title: 'Début de la portion de rue étudiée',
2700 mathias 312
			icon: this.googleMapMarqueurDebutUrl,
2697 mathias 313
			position: this.latLngDeb
1922 jpm 314
		});
2697 mathias 315
		google.maps.event.addListener(this.markerDeb, 'dragend', this.surDeplacementMarkerDeb.bind(this));
1922 jpm 316
	}
2408 jpm 317
 
2697 mathias 318
	this.latLngFin = this.latLngDeb;
319
	if (this.markerFin != undefined) {
320
		this.markerFin.setMap(null);
1922 jpm 321
	}
2697 mathias 322
	this.latLngCentre = this.latLngDeb;
323
	if (this.ligneRue != undefined) {
324
		this.ligneRue.setMap(null);
1922 jpm 325
	}
2701 mathias 326
};
1346 aurelien 327
 
2697 mathias 328
WidgetSaisieSauvages.prototype.surDeplacementMarkerDeb = function() {
2758 aurelien 329
	// Annulation d'une éventuelle recherche de rue déjà en cours
330
	this.annulerRechercherRue();
2736 mathias 331
	this.latLngDeb = this.markerDeb.getPosition();
332
	this.deplacerMarkerDeb(this.latLngDeb);
2701 mathias 333
};
1346 aurelien 334
 
2697 mathias 335
WidgetSaisieSauvages.prototype.deplacerMarkerDeb = function(nouvellePosition) {
2748 aurelien 336
 
2697 mathias 337
	this.latLngDeb = nouvellePosition;
2758 aurelien 338
	if (this.markerDeb == undefined) {
339
		// Marqueur de début de Rue
340
		this.markerDeb = new google.maps.Marker({
341
			map: this.map,
342
			draggable: true,
343
			title: 'Début de la portion de rue étudiée',
344
			icon: this.googleMapMarqueurDebutUrl,
345
			position: this.latLngDeb
346
		});
347
		google.maps.event.addListener(this.markerDeb, 'dragend', this.surDeplacementMarkerDeb.bind(this));
348
	}
2697 mathias 349
	this.markerDeb.setPosition(this.latLngDeb);
350
	this.map.setCenter(this.latLngDeb);
2708 mathias 351
	this.mettreAJourMarkerPosition(this.latLngDeb);
2697 mathias 352
	this.trouverCommune(this.latLngDeb);
1922 jpm 353
 
2744 aurelien 354
	var nouvellePositionFin = new google.maps.LatLng(this.latLngDeb.lat(), this.latLngDeb.lng() + 0.0010);
355
	this.initialiserMarkerFin();
2758 aurelien 356
	this.deplacerMarkerFin(nouvellePositionFin);
2744 aurelien 357
	this.afficherEtapeGeolocalisation(3);
2701 mathias 358
};
1346 aurelien 359
 
2697 mathias 360
WidgetSaisieSauvages.prototype.initialiserMarkerFin = function() {
361
	if (this.markerFin == undefined) {
362
		this.markerFin = new google.maps.Marker({
363
			map: this.map,
1922 jpm 364
			draggable: true,
365
			title: 'Fin de la portion de rue étudiée',
2700 mathias 366
			icon: this.googleMapMarqueurFinUrl,
2697 mathias 367
			position: this.latLngFin
1922 jpm 368
		});
2697 mathias 369
		google.maps.event.addListener(this.markerFin, 'dragend', this.surDeplacementMarkerFin.bind(this));
1346 aurelien 370
	}
2701 mathias 371
};
1346 aurelien 372
 
2697 mathias 373
WidgetSaisieSauvages.prototype.deplacerMarkerFin = function(nouvellePosition) {
374
	this.latLngFin = nouvellePosition;
375
	this.markerFin.setMap(this.map);
376
	this.markerFin.setPosition(this.latLngFin);
377
	this.dessinerLigneRue(this.latLngDeb, this.latLngFin);
2701 mathias 378
};
1922 jpm 379
 
2697 mathias 380
WidgetSaisieSauvages.prototype.surDeplacementMarkerFin = function() {
2748 aurelien 381
	// Annulation d'une éventuelle recherche déjà en cours
382
	this.annulerRechercherRue();
2744 aurelien 383
	this.rechercherRue();
384
};
385
 
386
WidgetSaisieSauvages.prototype.surClicRueSuivantPrecedent = function(event) {
387
	event.preventDefault();
388
	if($(event.target).hasClass("navigation-rue-suivant")) {
389
		this.indexRueSelectionnee = this.indexRueSelectionnee < this.listeRues.length - 1 ? this.indexRueSelectionnee + 1 : 0;
390
	} else {
391
		this.indexRueSelectionnee = this.indexRueSelectionnee > 0 ? this.indexRueSelectionnee - 1 : this.listeRues.length - 1;
392
	}
393
	this.mettreRueEnValeur(this.listeRues[this.indexRueSelectionnee]);
394
}
395
 
396
WidgetSaisieSauvages.prototype.afficherChargementRechercheRue = function() {
2758 aurelien 397
	if(!!this.ligneRue) {
398
		this.ligneRue.setMap(null);
399
	}
2744 aurelien 400
	var img = '<img src="'+this.chargementImageIconeUrl+'" />';
401
	$('#indication-nom-rue-nom').html(img+" Recherche de la rue en cours");
402
	$('#indication-nom-rue').css('visibility','visible');
403
	$('#indication-nom-rue').effect("highlight", {}, 500);
404
	$(".navigation-rue").toggle(false);
405
}
406
 
407
WidgetSaisieSauvages.prototype.rechercherRue = function() {
408
	this.afficherChargementRechercheRue();
409
 
410
	var params = "latitude_debut="+this.markerDeb.getPosition().lat()+"&longitude_debut="+this.markerDeb.getPosition().lng()+
411
	"&latitude_fin="+this.markerFin.getPosition().lat()+"&longitude_fin="+this.markerFin.getPosition().lng();
412
	var lthis = this;
413
 
2748 aurelien 414
	this.requeteRechercheRue = $.getJSON(this.serviceTraceRueUrl+'?'+params, function(data) {
2744 aurelien 415
		$('#indication-nom-rue-nom').html("");
416
		lthis.listeRues = data.elements;
417
		var coordDeb = {"lat" : lthis.markerDeb.getPosition().lat(), "lon" : lthis.markerDeb.getPosition().lng()};
418
		var coordFin = {"lat" : lthis.markerFin.getPosition().lat(), "lon" : lthis.markerFin.getPosition().lng()};
2748 aurelien 419
		var tags = {"name" : lthis.aucuneRueSelectionnee};
2744 aurelien 420
		var pasDeRue = {"geometry" : [coordDeb, coordFin], "tags" : tags};
421
		lthis.listeRues.push(pasDeRue);
422
		lthis.indexRueSelectionnee = 0;
423
		lthis.mettreRueEnValeur(lthis.listeRues[0]);
424
	});
425
}
426
 
2748 aurelien 427
WidgetSaisieSauvages.prototype.annulerRechercherRue = function() {
428
	if(this.requeteRechercheRue != null) {
429
		this.requeteRechercheRue.abort();
430
		this.requeteRechercheRue = null;
431
		$('#indication-nom-rue').css('visibility','hidden');
432
	}
433
}
434
 
435
 
2744 aurelien 436
WidgetSaisieSauvages.prototype.mettreRueEnValeur = function(rue) {
437
	this.afficherIndicationRue(rue['tags']['name']);
438
	this.afficherTraceRue(rue['geometry']);
2697 mathias 439
	this.afficherEtapeGeolocalisation(4);
2744 aurelien 440
}
441
 
442
WidgetSaisieSauvages.prototype.afficherIndicationRue = function(indication) {
2748 aurelien 443
	indication = !!indication ? indication : this.nomDeRueInconnue;
2744 aurelien 444
	$('#indication-nom-rue-nom').html(indication);
445
	$('#indication-nom-rue').css('visibility','visible');
446
	$('#indication-nom-rue').effect("highlight", {}, 500);
447
	$(".navigation-rue").toggle(this.listeRues.length > 1);
448
}
449
 
450
WidgetSaisieSauvages.prototype.afficherTraceRue = function(rue) {
451
 
452
	if (this.ligneRue != undefined) {
453
		this.ligneRue.setMap(null);
454
	}
455
 
456
	var cheminRue = new Array();
457
	if(rue.length > 0) {
458
		$.each(rue, function(index, value) {
459
			cheminRue.push(new google.maps.LatLng(value['lat'], value['lon']));
460
		});
461
 
462
		this.ligneRue = new google.maps.Polyline({
463
			path: cheminRue,
464
			strokeColor: "#FF0000",
465
			strokeOpacity: 1.0,
466
			strokeWeight: 2
467
		});
468
 
469
		this.ligneRue.setMap(this.map);
470
	}
2701 mathias 471
};
1922 jpm 472
 
2697 mathias 473
WidgetSaisieSauvages.prototype.dessinerLigneRue = function(pointDebut, pointFin) {
474
	if (this.ligneRue != undefined) {
475
		this.ligneRue.setMap(null);
1346 aurelien 476
	}
2408 jpm 477
 
2697 mathias 478
	this.ligneRue = new google.maps.Polyline({
1922 jpm 479
		path: [pointDebut, pointFin],
480
		strokeColor: "#FF0000",
481
		strokeOpacity: 1.0,
482
		strokeWeight: 2
483
	});
1346 aurelien 484
 
2697 mathias 485
	this.ligneRue.setMap(this.map);
2701 mathias 486
};
1346 aurelien 487
 
2697 mathias 488
WidgetSaisieSauvages.prototype.afficherCentreRue = function() {
489
	this.latLngDeb = this.markerDeb.getPosition();
490
	this.latLngFin = this.markerFin.getPosition();
491
	this.latLngCentre = new google.maps.LatLng((this.latLngFin.lat() + this.latLngDeb.lat())/2, (this.latLngFin.lng() + this.latLngDeb.lng())/2);
2708 mathias 492
	this.mettreAJourMarkerPosition(this.latLngCentre);
2701 mathias 493
};
1922 jpm 494
 
2697 mathias 495
WidgetSaisieSauvages.prototype.afficherEtapeGeolocalisation = function(numEtape) {
1922 jpm 496
	$('.liste_indication_geolocalisation').children().hide();
497
	$('.liste_indication_geolocalisation :nth-child('+numEtape+')').show();
2701 mathias 498
};
1922 jpm 499
 
2697 mathias 500
// surcharge
501
WidgetSaisieSauvages.prototype.geolocaliser = function(event) {
1922 jpm 502
	var latitude = $('#latitude').val(),
503
		longitude = $('#longitude').val(),
504
		nouvellePosition = new google.maps.LatLng(latitude, longitude);
2697 mathias 505
	this.initialiserMarkerDeb();
506
	this.deplacerMarkerDeb(nouvellePosition);
507
	this.afficherEtapeGeolocalisation(2);
508
	this.map.setZoom(16);
1922 jpm 509
	arreter(event);
2701 mathias 510
};
1922 jpm 511
 
2697 mathias 512
WidgetSaisieSauvages.prototype.tenterGeolocalisation = function() {
2715 mathias 513
	var lthis = this;
1922 jpm 514
	if (navigator.geolocation) {
515
		navigator.geolocation.getCurrentPosition(function(position) {
516
			var latitude = position.coords.latitude,
517
				longitude = position.coords.longitude,
518
				nouvellePosition = new google.maps.LatLng(latitude, longitude);
2715 mathias 519
			lthis.initialiserMarkerDeb();
520
			lthis.deplacerMarkerDeb(nouvellePosition);
521
			lthis.map.setZoom(16);
1922 jpm 522
		});
2758 aurelien 523
	} else {
524
		lthis.initialiserMarkerDeb();
1922 jpm 525
	}
2701 mathias 526
};
1922 jpm 527
 
2697 mathias 528
/**
529
 * AUTO-COMPLÉTION Noms Scientifiques => OK
530
 * sélectionne un nom et puis qu'on le remplacer par un nom non valide
531
 * Garder la trace de la valeur permet de vider le nn lorsqu'on
532
 */
533
WidgetSaisieSauvages.prototype.ajouterAutocompletionNoms = function() {
534
	var lthis = this;
1922 jpm 535
	$('#taxon').autocomplete({
2408 jpm 536
		source: function(requete, add){
1922 jpm 537
			// la variable de requête doit être vidée car sinon le parametre "term" est ajouté
2408 jpm 538
 
2697 mathias 539
			var url = lthis.getUrlAutocompletionNomsSci();
1922 jpm 540
			$.getJSON(url, function(data) {
2697 mathias 541
				var suggestions = lthis.traiterRetourNomsSci(data);
2408 jpm 542
				add(suggestions);
1922 jpm 543
			});
544
		},
545
		html: true
546
	});
2408 jpm 547
 
1922 jpm 548
	$('#taxon').bind('autocompleteselect', function(event, ui) {
549
		$('#taxon').data(ui.item);
2697 mathias 550
		lthis.valeurChamp = $('#taxon').val();
1922 jpm 551
		if (ui.item.retenu == true) {
552
			$('#taxon').addClass('ns-retenu');
553
		} else {
554
			$('#taxon').removeClass('ns-retenu');
555
		}
556
	});
2529 aurelien 557
 
558
	$('#taxon').bind('keypress', function() {
2697 mathias 559
		if(lthis.valeurChamp != $('#taxon').val()) {
2529 aurelien 560
			$('#taxon').data('numNomSel', '');
561
		}
2697 mathias 562
		lthis.valeurChamp = $('#taxon').val();
2529 aurelien 563
	});
2701 mathias 564
};
1922 jpm 565
 
2697 mathias 566
WidgetSaisieSauvages.prototype.getUrlAutocompletionNomsSci = function() {
1922 jpm 567
	var mots = $('#taxon').val(),
2700 mathias 568
		url = this.serviceAutocompletionNomSciUrlTpl.replace('{referentiel}', this.nomSciReferentiel);
1922 jpm 569
	url = url.replace('{masque}', mots);
570
	return url;
2701 mathias 571
};
1922 jpm 572
 
2697 mathias 573
WidgetSaisieSauvages.prototype.traiterRetourNomsSci = function(data) {
1922 jpm 574
	var suggestions = [];
575
	if (data.resultat != undefined) {
576
		$.each(data.resultat, function(i, val) {
577
			val.nn = i;
578
			var nom = {label: '', value: '', nt: '', nomSel: '', nomSelComplet: '', numNomSel: '',
579
				nomRet: '', numNomRet: '', famille: '', retenu: false
580
			};
2700 mathias 581
			if (suggestions.length >= this.autocompletionElementsNbre) {
1922 jpm 582
				nom.label = '...';
583
				nom.value = $('#taxon').val();
584
				suggestions.push(nom);
585
				return false;
586
			} else {
587
				nom.label = val.nom_sci_complet;
588
				nom.value = val.nom_sci_complet;
589
				nom.nt = val.num_taxonomique;
590
				nom.nomSel = val.nom_sci;
591
				nom.nomSelComplet = val.nom_sci_complet;
592
				nom.numNomSel = val.nn;
593
				nom.nomRet = val.nom_retenu_complet;
594
				nom.numNomRet = val['nom_retenu.id'];
595
				nom.famille = val.famille;
596
				nom.retenu = (val.retenu == 'false') ? false : true;
2408 jpm 597
 
1922 jpm 598
				suggestions.push(nom);
599
			}
600
		});
601
	}
602
	return suggestions;
2701 mathias 603
};
1922 jpm 604
 
2697 mathias 605
// surcharge
606
WidgetSaisieSauvages.prototype.configurerFormValidator = function() {
1916 jpm 607
	$.validator.addMethod(
2408 jpm 608
		'dateCel',
609
		function (value, element) {
610
			return value == '' || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value));
611
		},
1916 jpm 612
		'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.');
2408 jpm 613
 
1916 jpm 614
	$.extend($.validator.defaults, {
615
		ignore: [],// Forcer Jquery Validate à examiner les éléments avec en display:none;
616
		highlight: function(element) {
617
			$(element).closest('.control-group').removeClass('success').addClass('error');
618
		},
619
		success: function(element) {
620
			element.text('OK!').addClass('valid');
621
			element.closest('.control-group').removeClass('error').addClass('success');
2408 jpm 622
 
1916 jpm 623
			if (element.attr('id') == 'taxon' && $('#taxon').val() != '') {
624
				// Si le taxon n'est pas lié au référentiel, on vide le data associé
625
				if ($('#taxon').data('value') != $('#taxon').val()) {
626
					$('#taxon').data('numNomSel', '');
627
					$('#taxon').data('nomRet', '');
628
					$('#taxon').data('numNomRet', '');
629
					$('#taxon').data('nt', '');
630
					$('#taxon').data('famille', '');
631
				}
632
			}
633
		}
634
	});
2701 mathias 635
};
1916 jpm 636
 
2697 mathias 637
// surcharge
638
WidgetSaisieSauvages.prototype.definirReglesFormValidator = function() {
1916 jpm 639
	$('#form-observateur').validate({
640
		rules: {
641
			courriel: {
642
				required: true,
643
				email: true},
644
			courriel_confirmation: {
645
				required: true,
646
				equalTo: '#courriel'},
647
			prenom: {
648
				required: true},
649
			nom: {
650
				required: true}
651
		}
652
	});
653
	$('#form-obs').validate({
654
		rules: {
655
			station: {
656
				required: true},
657
			latitude : {
658
				required: true,
659
				range: [-90, 90]},
660
			longitude: {
661
				required: true,
662
				range: [-180, 180]},
663
			date: {
664
				required: true,
665
				'dateCel' : true},
1956 jpm 666
			coteRue: {
1916 jpm 667
				required: true},
668
			'taxon-liste': {
669
				required: true},
670
			'milieux[]': {
671
				required: true,
672
				minlength: 1}
673
		},
674
		errorPlacement: function(error, element) {
675
			if (element.attr('name') == 'date') {
676
				element.parent('.input-prepend').after(error);
677
			} else if (element.attr('name') == 'milieux[]') {
678
				error.insertAfter('#milieux-controls');
679
			} else {
680
				error.insertAfter(element);
681
			}
682
		},
683
		messages: {
684
			'milieu[]': 'Vous devez sélectionner au moins un milieu'
685
		}
686
	});
2701 mathias 687
};
1916 jpm 688
 
2697 mathias 689
WidgetSaisieSauvages.prototype.validerFormulaire = function() {
1946 jpm 690
	var observateur = $('#form-observateur').valid(),
691
		obs = $('#form-obs').valid(),
2697 mathias 692
		debRue = (this.latLngDeb == undefined || this.latLngDeb == this.latLngFin) ? false : true,
693
		finRue = (this.latLngFin == undefined || this.latLngDeb == this.latLngFin) ? false : true;
1946 jpm 694
	var ok = (observateur && obs && debRue && finRue) ? true : false;
1964 jpm 695
	//console.log('observateur:'+observateur+'-obs:'+obs+'-debRue:'+debRue+'('+latLngDeb+')-finRue:'+finRue+'('+latLngDeb+')');
1946 jpm 696
	return ok;
2701 mathias 697
};
1946 jpm 698
 
2697 mathias 699
WidgetSaisieSauvages.prototype.surChangementTaxonListe = function() {
1916 jpm 700
	if ($('#taxon-liste').val() === '?') {
701
		$('#taxon-input-groupe').removeClass('hidden');
702
	} else {
703
		$('#taxon-input-groupe').addClass('hidden');
704
	}
2701 mathias 705
};
1916 jpm 706
 
2697 mathias 707
WidgetSaisieSauvages.prototype.surChangementValeurTaxon = function() {
2529 aurelien 708
	var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false;
2697 mathias 709
	var nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special');
710
	var numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val();
2529 aurelien 711
 
712
	// Un nom non valide entraine automatiquement une certitude "à déterminer"
713
	if(nomSpecial || !numNomSel) {
714
		$('#certitude-adeterminer').attr('checked', 'checked');
715
	} else {
716
		$('#certitude-adeterminer').removeAttr('checked');
717
	}
2701 mathias 718
};
2529 aurelien 719
 
2697 mathias 720
// surcharge
721
WidgetSaisieSauvages.prototype.ajouterObs = function() {
722
	if (this.validerFormulaire() == true) {
723
		this.obsNbre = this.obsNbre + 1;
724
		$('.obs-nbre').text(this.obsNbre);
1922 jpm 725
		$('.obs-nbre').triggerHandler('changement');
2697 mathias 726
		this.afficherObs();
727
		this.stockerObsData();
728
		this.supprimerMiniatures();
1922 jpm 729
	} else {
1956 jpm 730
		// Affichage de tous les panneau cachés avec champ obligatoire
2697 mathias 731
		var debRue = (this.latLngDeb == undefined || this.latLngDeb == this.latLngFin) ? false : true,
732
			finRue = (this.latLngFin == undefined || this.latLngDeb == this.latLngFin) ? false : true;
1922 jpm 733
		if (debRue == false || finRue == false) {
2700 mathias 734
			this.afficherPanneau('#dialogue-form-invalide-rue');
1922 jpm 735
		} else {
2700 mathias 736
			this.afficherPanneau('#dialogue-form-invalide');
1922 jpm 737
		}
2697 mathias 738
		this.montrerFormIdentite();
1922 jpm 739
	}
2697 mathias 740
};
1922 jpm 741
 
2697 mathias 742
// surcharge
743
WidgetSaisieSauvages.prototype.afficherObs = function() {
1922 jpm 744
	var numNomSel = ($('#taxon-liste').val() == '?') ? $('#taxon').data('numNomSel') : $('#taxon-liste').val(),
745
		nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'),
746
		taxon = ($('#taxon-liste').val() == '?') ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
2700 mathias 747
		referentiel = (numNomSel == undefined) ? '' : '['+ this.nomSciReferentiel +']',
1922 jpm 748
		commune = $('#commune-nom').text(),
749
		codeInsee = $('#commune-code-insee').text(),
2748 aurelien 750
		station = this.getValeurStation(),
1922 jpm 751
		lat = $('input[name="latitude"]').val(),
752
		lng = $('input[name="longitude"]').val(),
753
		date = $('#date').val(),
2697 mathias 754
		milieux = this.getMilieux(),
755
		notes = (nomSpecial ? this.taxons[numNomSel]['nom_fr'] + ".<br />" : '') + $('#notes').val();
2408 jpm 756
 
1922 jpm 757
	$('#liste-obs').prepend(
2697 mathias 758
		'<div id="obs'+this.obsNbre+'" class="row-fluid obs obs'+this.obsNbre+'">' +
1946 jpm 759
			'<div class="span12">' +
760
				'<div class="well">' +
761
					'<div class="obs-action pull-right has-tooltip" data-placement="bottom" ' +
762
						'title="Supprimer cette observation de la liste à transmettre">' +
2697 mathias 763
						'<button class="btn btn-danger supprimer-obs" value="'+this.obsNbre+'" title="'+this.obsNbre+'">' +
1946 jpm 764
							'<i class="icon-trash icon-white"></i>' +
765
						'</button>' +
2408 jpm 766
					'</div> ' +
767
					'<div class="row-fluid">' +
1946 jpm 768
						'<div class="span2 obs-miniatures">' +
2697 mathias 769
						this.ajouterImgMiniatureAuTransfert() +
1922 jpm 770
						'</div>'+
1946 jpm 771
						'<div class="span7">' +
772
							'<ul class="unstyled">' +
1922 jpm 773
								'<li>'+
774
									'<span class="nom-sci">' + taxon + '</span> ' +
2697 mathias 775
									this.formaterNumNomSel(numNomSel) +
1946 jpm 776
									' observé à <br />' +
1993 jpm 777
									'<span class="commune">' + commune + '</span> ' +
778
									'(' + codeInsee + '), ' +
1946 jpm 779
									'<span class="station">' + station + '</span><br /> ' +
1922 jpm 780
									' le ' +
781
									'<span class="date">' + date + '</span>' +
782
								'</li>' +
783
								'<li>' +
1946 jpm 784
									'Milieux : ' + milieux + ' ' + ' ; ' +
1922 jpm 785
								'</li>' +
786
								'<li>' +
2408 jpm 787
									'Notes : ' + notes +
1946 jpm 788
								'</li>' +
789
							'</ul>' +
790
						'</div>' +
791
					'</div>' +
792
				'</div>' +
1922 jpm 793
			'</div>'+
794
		'</div>');
2697 mathias 795
	$('#zone-liste-obs').removeClass("hidden");
796
};
1922 jpm 797
 
2748 aurelien 798
WidgetSaisieSauvages.prototype.getValeurStation = function() {
799
	var station = "";
800
	var valeurSelectionnee = $("#indication-nom-rue-nom").text().trim();
801
	if(valeurSelectionnee == this.aucuneRueSelectionnee || valeurSelectionnee == this.nomDeRueInconnue) {
802
		station = $('input[name="adresse"]').val().trim()
803
	} else {
804
		station = $("#indication-nom-rue-nom").text().trim();
805
	}
806
 
807
	return station;
808
}
809
 
2697 mathias 810
WidgetSaisieSauvages.prototype.getMilieux = function() {
1922 jpm 811
	var milieuxStr = '',
812
		milieux = [];
813
	$('.cb-milieux:checked').each(function() {
814
		milieux.push($(this).val());
815
	});
2408 jpm 816
 
1922 jpm 817
	milieuxStr = Array.prototype.slice.call(milieux).join(', ');
818
	return milieuxStr;
2697 mathias 819
};
1922 jpm 820
 
2697 mathias 821
WidgetSaisieSauvages.prototype.ajouterImgMiniatureAuTransfert = function() {
1922 jpm 822
	var html = '',
823
		miniatures = '',
824
		indicateurs = '',
825
		premiere = true,
826
		numero = 1;
827
	if ($('#miniatures img').length == 0) {
2700 mathias 828
		html = '<img class="miniature" alt="Aucune photo"src="'+ this.pasDePhotoIconeUrl +'" />';
1922 jpm 829
	} else if ($('#miniatures img').length >= 1) {
830
		$('#miniatures img').each(function() {
831
			var visible = premiere ? 'miniature-selectionnee' : 'miniature-cachee',
832
				css = $(this).hasClass('b64') ? 'miniature b64' : 'miniature',
833
				src = $(this).attr('src'),
834
				alt = $(this).attr('alt');
2408 jpm 835
 
1922 jpm 836
			var miniature = '<img class="'+css+' '+visible+'"  alt="'+alt+'"src="'+src+'" />';
837
			miniatures += miniature;
2408 jpm 838
 
1922 jpm 839
			var indicateurActif = premiere ? 'active' : '';
840
			var indicateur = '<li class="' + indicateurActif + '" data-numero="' + numero++ + '"></li>';
841
			indicateurs += indicateur;
2408 jpm 842
 
1922 jpm 843
			premiere = false;
844
		});
2408 jpm 845
 
1922 jpm 846
		if ($('#miniatures img').length == 1) {
847
			html = miniatures;
848
		} else {
2408 jpm 849
			html =
1922 jpm 850
				'<div class="defilement">' +
851
					miniatures +
852
					'<a class="defilement-control-zone gauche">' +
853
					'	<span class="defilement-control gauche hidden">&#60;</span>' +
854
					'</a>' +
855
					'<a class="defilement-control-zone droite">' +
856
					'	<span class="defilement-control droite hidden">&#62;</span>' +
857
					'</a>' +
858
					'<ol class="defilement-indicateurs">' + indicateurs + '</ol>' +
859
				'</div>';
860
		}
861
	}
862
	return html;
2697 mathias 863
};
1922 jpm 864
 
2697 mathias 865
WidgetSaisieSauvages.prototype.defilerMiniatures = function(element) {
1922 jpm 866
	var miniatureSelectionne = element.siblings('img.miniature-selectionnee');
867
	miniatureSelectionne.removeClass('miniature-selectionnee').addClass('miniature-cachee');
868
	var miniatureAffichee = miniatureSelectionne;
2408 jpm 869
 
1922 jpm 870
	var indicateurActif = element.parent().find('.defilement-indicateurs .active');
871
	indicateurActif.removeClass('active');
2408 jpm 872
 
1922 jpm 873
	if (element.hasClass('defilement-control-zone') && element.hasClass('gauche')) {
874
		if (miniatureSelectionne.prev('.miniature').length != 0) {
875
			miniatureAffichee = miniatureSelectionne.prev('.miniature');
876
			indicateurActif.prev().addClass('active');
877
		} else {
878
			miniatureAffichee = miniatureSelectionne.siblings('.miniature').last();
879
			indicateurActif.siblings().last().addClass('active');
880
		}
881
	} else {
882
		if (miniatureSelectionne.next('.miniature').length != 0) {
883
			miniatureAffichee = miniatureSelectionne.next('.miniature');
884
			indicateurActif.next().addClass('active');
885
		} else {
886
			miniatureAffichee = miniatureSelectionne.siblings('.miniature').first();
887
			indicateurActif.siblings().first().addClass('active');
888
		}
889
	}
890
	miniatureAffichee.addClass('miniature-selectionnee').removeClass('miniature-cachee');
2701 mathias 891
};
1922 jpm 892
 
2697 mathias 893
WidgetSaisieSauvages.prototype.formaterNumNomSel = function(numNomSel) {
1922 jpm 894
	var nn = '';
895
	if (numNomSel == undefined) {
896
		nn = '<span class="alert-error">[non lié au référentiel]</span>';
897
	} else {
898
		nn = '<span class="nn">[nn'+numNomSel+']</span>';
899
	}
900
	return nn;
2701 mathias 901
};
1922 jpm 902
 
2697 mathias 903
// surcharge
904
WidgetSaisieSauvages.prototype.surChangementReferentiel = function() {
2700 mathias 905
	this.nomSciReferentiel = $('#referentiel').val();
1922 jpm 906
	$('#taxon').val('');
2701 mathias 907
};
1922 jpm 908
 
2697 mathias 909
// surcharge
910
WidgetSaisieSauvages.prototype.stockerObsData = function() {
911
	var lthis = this;
1922 jpm 912
	var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false;
913
		nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'),
2709 mathias 914
		numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val();
915
	var nomSel = nomHorsListe ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
2708 mathias 916
		nomRet = nomHorsListe ? $('#taxon').data('nomRet') : this.taxons[numNomSel]['nom_ret'],
917
		numNomRet = nomHorsListe ? $('#taxon').data('numNomRet') : this.taxons[numNomSel]['num_nom_ret'],
918
		numTaxon = nomHorsListe ? $('#taxon').data('nt') : this.taxons[numNomSel]['num_taxon'],
919
		famille = nomHorsListe ? $('#taxon').data('famille') : this.taxons[numNomSel]['famille'],
2700 mathias 920
		referentiel = (numNomSel == undefined) ? '' : this.nomSciReferentiel,
2708 mathias 921
		notes = (nomSpecial ? this.taxons[numNomSel]['nom_fr'] + '. ' : '') + $('#notes').val();
2521 aurelien 922
 
923
		certitude = $('input[name=certitude]:checked').val();
924
		certitude = (certitude == undefined) ? '' : certitude;
2408 jpm 925
 
2697 mathias 926
	$('#liste-obs').data('obsId'+this.obsNbre, {
2408 jpm 927
		'date': $('#date').val(),
1922 jpm 928
		'notes': notes,
2408 jpm 929
 
2748 aurelien 930
		'station': this.getValeurStation(),
1922 jpm 931
		'latitude': $('#latitude').val(),
932
		'longitude': $('#longitude').val(),
933
		'commune_nom': $('#commune-nom').text(),
934
		'commune_code_insee': $('#commune-code-insee').text(),
2408 jpm 935
 
1922 jpm 936
		'nom_sel': nomSel,
937
		'num_nom_sel': numNomSel,
938
		'nom_ret': nomRet,
939
		'num_nom_ret': numNomRet,
940
		'num_taxon': numTaxon,
941
		'famille': famille,
942
		'referentiel': referentiel,
2521 aurelien 943
		'certitude': certitude,
2697 mathias 944
		'milieu': lthis.getMilieux(),
2408 jpm 945
 
1922 jpm 946
		// Ajout des champs images
2697 mathias 947
		'image_nom': lthis.getNomsImgsOriginales(),
2408 jpm 948
 
1922 jpm 949
		// Ajout des champs étendus de l'obs
2697 mathias 950
		'obs_etendue': lthis.getObsChpEtendus()
1922 jpm 951
	});
2700 mathias 952
	if (this.debug) {
2697 mathias 953
		console.log($('#liste-obs').data('obsId'+this.obsNbre));
1964 jpm 954
	}
2701 mathias 955
};
1922 jpm 956
 
2697 mathias 957
WidgetSaisieSauvages.prototype.getObsChpEtendus = function() {
1946 jpm 958
	var champs = [];
2697 mathias 959
	if (this.latLngDeb != undefined) {
960
		var latitudeDebutRue = {cle: 'latitudeDebutRue', label: 'Latitude du début de la rue', valeur: this.latLngDeb.lat().toFixed(5)};
1922 jpm 961
		champs.push(latitudeDebutRue);
2697 mathias 962
		var longitudeDebutRue = {cle: 'longitudeDebutRue', label: 'Longitude du début de la rue', valeur: this.latLngDeb.lng().toFixed(5)};
1922 jpm 963
		champs.push(longitudeDebutRue);
964
	}
2697 mathias 965
	if (this.latLngFin != undefined) {
966
		var latitudeFinRue = {cle: 'latitudeFinRue', label: 'Latitude de fin de la rue', valeur: this.latLngFin.lat().toFixed(5)};
1922 jpm 967
		champs.push(latitudeFinRue);
2697 mathias 968
		var longitudeFinRue = {cle: 'longitudeFinRue', label: 'Longitude de fin de la rue', valeur: this.latLngFin.lng().toFixed(5)};
1922 jpm 969
		champs.push(longitudeFinRue);
970
	}
2408 jpm 971
 
1922 jpm 972
	$('.obs-chp-etendu').each(function() {
973
		var valeur = $(this).val(),
974
			cle = $(this).attr('name'),
975
			label = $(this).data('label');
976
		if (valeur != '') {
977
			var chpEtendu = {cle: cle, label: label, valeur: valeur};
978
			champs.push(chpEtendu);
979
		}
980
	});
981
	return champs;
2892 aurel 982
};