Subversion Repositories eFlore/Applications.cel

Rev

Rev 1993 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1993 Rev 2005
1
//+---------------------------------------------------------------------------------------------------------+
1
//+---------------------------------------------------------------------------------------------------------+
2
// GÉNÉRAL => OK
2
// GÉNÉRAL => OK
3
$(document).ready(function() {
3
$(document).ready(function() {
4
	if (DEBUG == false) {
4
	if (DEBUG == false) {
5
		$(window).on('beforeunload', function(event) {
5
		$(window).on('beforeunload', function(event) {
6
			return 'Êtes vous sûr de vouloir quiter la page?\nLes observations saisies mais non transmises seront perdues.';
6
			return 'Êtes vous sûr de vouloir quiter la page?\nLes observations saisies mais non transmises seront perdues.';
7
		});
7
		});
8
	}
8
	}
9
});
9
});
10
//+----------------------------------------------------------------------------------------------------------+
10
//+----------------------------------------------------------------------------------------------------------+
11
// FONCTIONS GÉNÉRIQUES => OK
11
// FONCTIONS GÉNÉRIQUES => OK
12
/**
12
/**
13
 * Stope l'évènement courrant quand on clique sur un lien.
13
 * Stope l'évènement courrant quand on clique sur un lien.
14
 * Utile pour Chrome, Safari...
14
 * Utile pour Chrome, Safari...
15
 * @param evenement
15
 * @param evenement
16
 * @return
16
 * @return
17
 */
17
 */
18
function arreter(evenement) {
18
function arreter(evenement) {
19
	if (evenement.stopPropagation) {
19
	if (evenement.stopPropagation) {
20
		evenement.stopPropagation();
20
		evenement.stopPropagation();
21
	}
21
	}
22
	if (evenement.preventDefault) {
22
	if (evenement.preventDefault) {
23
		evenement.preventDefault();
23
		evenement.preventDefault();
24
	}
24
	}
25
	return false;
25
	return false;
26
}
26
}
27
 
27
 
28
function extraireEnteteDebug(jqXHR) {
28
function extraireEnteteDebug(jqXHR) {
29
	var msgDebug = '';
29
	var msgDebug = '';
30
	if (jqXHR.getResponseHeader('X-DebugJrest-Data') != '') {
30
	if (jqXHR.getResponseHeader('X-DebugJrest-Data') != '') {
31
		var debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader('X-DebugJrest-Data'));
31
		var debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader('X-DebugJrest-Data'));
32
		if (debugInfos != null) {
32
		if (debugInfos != null) {
33
			$.each(debugInfos, function (cle, valeur) {
33
			$.each(debugInfos, function (cle, valeur) {
34
				msgDebug += valeur + "\n";
34
				msgDebug += valeur + "\n";
35
			});
35
			});
36
		}
36
		}
37
	}
37
	}
38
	return msgDebug;
38
	return msgDebug;
39
}
39
}
40
 
40
 
41
function afficherPanneau(selecteur) {
41
function afficherPanneau(selecteur) {
42
	$(selecteur).fadeIn('slow').delay(DUREE_MESSAGE).fadeOut('slow');
42
	$(selecteur).fadeIn('slow').delay(DUREE_MESSAGE).fadeOut('slow');
43
}
43
}
44
 
44
 
45
//+----------------------------------------------------------------------------------------------------------+
45
//+----------------------------------------------------------------------------------------------------------+
46
//FORM IDENTITE : gestion de l'observateur => OK
46
//FORM IDENTITE : gestion de l'observateur => OK
47
 
47
 
48
$(document).ready(function() {
48
$(document).ready(function() {
49
	requeterIdentite();// Sur rechargement de la page
49
	requeterIdentite();// Sur rechargement de la page
50
	
50
	
51
	// Interaction sur le formulaire observateur
51
	// Interaction sur le formulaire observateur
52
	$('#prenom').on('change', formaterPrenom);
52
	$('#prenom').on('change', formaterPrenom);
53
	$('#nom').on('change', formaterNom);
53
	$('#nom').on('change', formaterNom);
54
	$('#courriel').on('keyup', testerLancementRequeteIdentite);
54
	$('#courriel').on('keyup', testerLancementRequeteIdentite);
55
	$('#courriel').on('blur', requeterIdentite);
55
	$('#courriel').on('blur', requeterIdentite);
56
	$('#courriel_confirmation').on('paste', bloquerCopierCollerCourriel);
56
	$('#courriel_confirmation').on('paste', bloquerCopierCollerCourriel);
57
});
57
});
58
 
58
 
59
function testerLancementRequeteIdentite(event) {
59
function testerLancementRequeteIdentite(event) {
60
	if (event.which == 13) {
60
	if (event.which == 13) {
61
		event.preventDefault();
61
		event.preventDefault();
62
		event.stopPropagation();
62
		event.stopPropagation();
63
		requeterIdentite();
63
		requeterIdentite();
64
	}
64
	}
65
}
65
}
66
 
66
 
67
function requeterIdentite() {
67
function requeterIdentite() {
68
	var courriel = $('#courriel').val();
68
	var courriel = $('#courriel').val();
69
	if (courriel) {
69
	if (courriel) {
70
		var urlAnnuaire = SERVICE_ANNUAIRE_ID_URL + courriel;
70
		var urlAnnuaire = SERVICE_ANNUAIRE_ID_URL + courriel;
71
		$.ajax({
71
		$.ajax({
72
			url: urlAnnuaire,
72
			url: urlAnnuaire,
73
			type: 'GET',
73
			type: 'GET',
74
			success: function(data, textStatus, jqXHR) {
74
			success: function(data, textStatus, jqXHR) {
75
				if (data != undefined && data[courriel] != undefined) {
75
				if (data != undefined && data[courriel] != undefined) {
76
					var infos = data[courriel];
76
					var infos = data[courriel];
77
					$('#id_utilisateur').val(infos.id);
77
					$('#id_utilisateur').val(infos.id);
78
					$('#prenom').val(infos.prenom);
78
					$('#prenom').val(infos.prenom);
79
					$('#nom').val(infos.nom);
79
					$('#nom').val(infos.nom);
80
					$('#courriel_confirmation').val(courriel);
80
					$('#courriel_confirmation').val(courriel);
81
					$('#prenom, #nom, #courriel_confirmation').attr('disabled', 'disabled');
81
					$('#prenom, #nom, #courriel_confirmation').attr('disabled', 'disabled');
82
					$('#structure').focus();
82
					$('#structure').focus();
83
				} else {
83
				} else {
84
					surErreurCompletionCourriel();
84
					surErreurCompletionCourriel();
85
				}
85
				}
86
			},
86
			},
87
			error: function(jqXHR, textStatus, errorThrown) {
87
			error: function(jqXHR, textStatus, errorThrown) {
88
				surErreurCompletionCourriel();
88
				surErreurCompletionCourriel();
89
			},
89
			},
90
			complete: function(jqXHR, textStatus) {
90
			complete: function(jqXHR, textStatus) {
91
				montrerFormIdentite();
91
				montrerFormIdentite();
92
			}
92
			}
93
	});
93
	});
94
	}
94
	}
95
}
95
}
96
 
96
 
97
function montrerFormIdentite() {
97
function montrerFormIdentite() {
98
	$('#zone-courriel-confirmation, #zone-prenom-nom').removeClass('hidden');
98
	$('#zone-courriel-confirmation, #zone-prenom-nom').removeClass('hidden');
99
}
99
}
100
 
100
 
101
function surErreurCompletionCourriel() {
101
function surErreurCompletionCourriel() {
102
	$('#prenom, #nom, #courriel_confirmation').removeAttr('disabled');
102
	$('#prenom, #nom, #courriel_confirmation').removeAttr('disabled');
103
	afficherPanneau('#dialogue-courriel-introuvable');
103
	afficherPanneau('#dialogue-courriel-introuvable');
104
}
104
}
105
 
105
 
106
function formaterNom() {
106
function formaterNom() {
107
	$(this).val($(this).val().toUpperCase());
107
	$(this).val($(this).val().toUpperCase());
108
}
108
}
109
 
109
 
110
function formaterPrenom() {
110
function formaterPrenom() {
111
	var prenom = new Array(),
111
	var prenom = new Array(),
112
		mots = $(this).val().split(' ');
112
		mots = $(this).val().split(' ');
113
	for (var i = 0; i < mots.length; i++) {
113
	for (var i = 0; i < mots.length; i++) {
114
		var mot = mots[i];
114
		var mot = mots[i];
115
		if (mot.indexOf('-') >= 0) {
115
		if (mot.indexOf('-') >= 0) {
116
			var prenomCompose = new Array(),
116
			var prenomCompose = new Array(),
117
				motsComposes = mot.split('-');
117
				motsComposes = mot.split('-');
118
			for (var j = 0; j < motsComposes.length; j++) {
118
			for (var j = 0; j < motsComposes.length; j++) {
119
				var motSimple = motsComposes[j],
119
				var motSimple = motsComposes[j],
120
					motMajuscule = motSimple.charAt(0).toUpperCase() + motSimple.slice(1);
120
					motMajuscule = motSimple.charAt(0).toUpperCase() + motSimple.slice(1);
121
				prenomCompose.push(motMajuscule);
121
				prenomCompose.push(motMajuscule);
122
			}
122
			}
123
			prenom.push(prenomCompose.join('-'));
123
			prenom.push(prenomCompose.join('-'));
124
		} else {
124
		} else {
125
			var motMajuscule = mot.charAt(0).toUpperCase() + mot.slice(1);
125
			var motMajuscule = mot.charAt(0).toUpperCase() + mot.slice(1);
126
			prenom.push(motMajuscule);
126
			prenom.push(motMajuscule);
127
		}
127
		}
128
	}
128
	}
129
	$(this).val(prenom.join(' '));
129
	$(this).val(prenom.join(' '));
130
}
130
}
131
 
131
 
132
function bloquerCopierCollerCourriel() {
132
function bloquerCopierCollerCourriel() {
133
	afficherPanneau('#dialogue-bloquer-copier-coller');
133
	afficherPanneau('#dialogue-bloquer-copier-coller');
134
	return false;
134
	return false;
135
}
135
}
136
 
136
 
137
//+----------------------------------------------------------------------------------------------------------+
137
//+----------------------------------------------------------------------------------------------------------+
138
//GOOGLE MAP => OK
138
//GOOGLE MAP => OK
139
 
139
 
140
var map,
140
var map,
141
	geocoder,	
141
	geocoder,	
142
	markerDeb,
142
	markerDeb,
143
	latLngDeb,
143
	latLngDeb,
144
	markerFin,
144
	markerFin,
145
	latLngFin,
145
	latLngFin,
146
	ligneRue,
146
	ligneRue,
147
	premierDeplacement = true;
147
	premierDeplacement = true;
148
 
148
 
149
$(document).ready(function() {
149
$(document).ready(function() {
150
	initialiserGoogleMap();
150
	initialiserGoogleMap();
151
	afficherEtapeGeolocalisation(1);
151
	afficherEtapeGeolocalisation(1);
152
	
152
	
153
	// Autocompletion du champ adresse
153
	// Autocompletion du champ adresse
154
	$('#carte-recherche').on('focus', function() {
154
	$('#carte-recherche').on('focus', function() {
155
		$(this).select();
155
		$(this).select();
156
	});
156
	});
157
	$('#carte-recherche').on('mouseup', function(event) {// Pour Safari...
157
	$('#carte-recherche').on('mouseup', function(event) {// Pour Safari...
158
		event.preventDefault();
158
		event.preventDefault();
159
	});
159
	});
160
	
160
	
161
	$('#carte-recherche').keypress(function(e) {
161
	$('#carte-recherche').keypress(function(e) {
162
		if (e.which == 13) {
162
		if (e.which == 13) {
163
			e.preventDefault();
163
			e.preventDefault();
164
		}
164
		}
165
	});
165
	});
166
	
166
	
167
	$('#carte-recherche').autocomplete({
167
	$('#carte-recherche').autocomplete({
168
		//Cette partie utilise geocoder pour extraire des valeurs d'adresse
168
		//Cette partie utilise geocoder pour extraire des valeurs d'adresse
169
		source: function(request, response) {
169
		source: function(request, response) {
170
			
170
			
171
			geocoder.geocode( {'address': request.term+', France', 'region' : 'fr' }, function(results, status) {
171
			geocoder.geocode( {'address': request.term+', France', 'region' : 'fr' }, function(results, status) {
172
				if (status == google.maps.GeocoderStatus.OK) {
172
				if (status == google.maps.GeocoderStatus.OK) {
173
					response($.map(results, function(item) {
173
					response($.map(results, function(item) {
174
						var rue = "";
174
						var rue = "";
175
						$.each(item.address_components, function(){
175
						$.each(item.address_components, function(){
176
							if (this.types[0] == "route" || this.types[0] == "street_address" ) {
176
							if (this.types[0] == "route" || this.types[0] == "street_address" ) {
177
								rue = this.short_name;
177
								rue = this.short_name;
178
							}
178
							}
179
						});
179
						});
180
						var retour = {
180
						var retour = {
181
							label: item.formatted_address,
181
							label: item.formatted_address,
182
							value: rue,
182
							value: rue,
183
							latitude: item.geometry.location.lat(),
183
							latitude: item.geometry.location.lat(),
184
							longitude: item.geometry.location.lng()
184
							longitude: item.geometry.location.lng()
185
						};
185
						};
186
						return retour;
186
						return retour;
187
					}));
187
					}));
188
				} else {
188
				} else {
189
					afficherErreurGoogleMap(status);
189
					afficherErreurGoogleMap(status);
190
				}
190
				}
191
			});
191
			});
192
		},
192
		},
193
		// Cette partie est executee a la selection d'une adresse
193
		// Cette partie est executee a la selection d'une adresse
194
		select: function(event, ui) {
194
		select: function(event, ui) {
195
			var nouvellePosition = new google.maps.LatLng(ui.item.latitude, ui.item.longitude);
195
			var nouvellePosition = new google.maps.LatLng(ui.item.latitude, ui.item.longitude);
196
			initialiserMarkerDeb();
196
			initialiserMarkerDeb();
197
			deplacerMarkerDeb(nouvellePosition);
197
			deplacerMarkerDeb(nouvellePosition);
198
			map.setZoom(16);
198
			map.setZoom(16);
199
			afficherEtapeGeolocalisation(2);
199
			afficherEtapeGeolocalisation(2);
200
		}
200
		}
201
	});
201
	});
202
	
202
	
203
	$('#geolocaliser').on('click', geolocaliser);
203
	$('#geolocaliser').on('click', geolocaliser);
204
});
204
});
205
 
205
 
206
function initialiserGoogleMap(){
206
function initialiserGoogleMap(){
207
	latLngDeb = new google.maps.LatLng(48.8543, 2.3483);// Paris
207
	latLngDeb = new google.maps.LatLng(48.8543, 2.3483);// Paris
208
	if (VILLE == 'Marseille') {
208
	if (VILLE == 'Marseille') {
209
		latLngDeb = new google.maps.LatLng(43.29545, 5.37458);
209
		latLngDeb = new google.maps.LatLng(43.29545, 5.37458);
210
	} else if (VILLE == 'Montpellier') {
210
	} else if (VILLE == 'Montpellier') {
211
		latLngDeb = new google.maps.LatLng(43.61077, 3.87672);
211
		latLngDeb = new google.maps.LatLng(43.61077, 3.87672);
212
	}
212
	}
213
	var options = {
213
	var options = {
214
			zoom: 16,
214
			zoom: 16,
215
			center: latLngDeb,
215
			center: latLngDeb,
216
			mapTypeId: google.maps.MapTypeId.HYBRID,
216
			mapTypeId: google.maps.MapTypeId.HYBRID,
217
			mapTypeControlOptions: {
217
			mapTypeControlOptions: {
218
				mapTypeIds: ['OSM', 
218
				mapTypeIds: ['OSM', 
219
					google.maps.MapTypeId.ROADMAP, 
219
					google.maps.MapTypeId.ROADMAP, 
220
					google.maps.MapTypeId.HYBRID, 
220
					google.maps.MapTypeId.HYBRID, 
221
					google.maps.MapTypeId.SATELLITE, 
221
					google.maps.MapTypeId.SATELLITE, 
222
					google.maps.MapTypeId.TERRAIN]}
222
					google.maps.MapTypeId.TERRAIN]}
223
		};
223
		};
224
	
224
	
225
	// Ajout de la couche OSM à la carte
225
	// Ajout de la couche OSM à la carte
226
	osmMapType = new google.maps.ImageMapType({
226
	osmMapType = new google.maps.ImageMapType({
227
		getTileUrl: function(coord, zoom) {
227
		getTileUrl: function(coord, zoom) {
228
			return 'http://tile.openstreetmap.org/' + zoom + '/' + coord.x + '/' + coord.y + '.png';
228
			return 'http://tile.openstreetmap.org/' + zoom + '/' + coord.x + '/' + coord.y + '.png';
229
		},
229
		},
230
		tileSize: new google.maps.Size(256, 256),
230
		tileSize: new google.maps.Size(256, 256),
231
		isPng: true,
231
		isPng: true,
232
		alt: 'OpenStreetMap',
232
		alt: 'OpenStreetMap',
233
		name: 'OSM',
233
		name: 'OSM',
234
		maxZoom: 19
234
		maxZoom: 19
235
	});
235
	});
236
	
236
	
237
	// Création de la carte Google
237
	// Création de la carte Google
238
	map = new google.maps.Map(document.getElementById('map-canvas'), options); //affiche la google map dans la div map_canvas
238
	map = new google.maps.Map(document.getElementById('map-canvas'), options); //affiche la google map dans la div map_canvas
239
	map.mapTypes.set('OSM', osmMapType);
239
	map.mapTypes.set('OSM', osmMapType);
240
	
240
	
241
	// Ajout de l'évènment sur click dans Carte
241
	// Ajout de l'évènment sur click dans Carte
242
	google.maps.event.addListener(map, 'click', surClickDansCarte);
242
	google.maps.event.addListener(map, 'click', surClickDansCarte);
243
	
243
	
244
	// Lorsque la carte est chargée, on vérifie si on peut précharger des données
244
	// Lorsque la carte est chargée, on vérifie si on peut précharger des données
245
	google.maps.event.addListenerOnce(map, 'idle', function(){
245
	google.maps.event.addListenerOnce(map, 'idle', function(){
246
		// Initialisation du marker de début de rue
246
		// Initialisation du marker de début de rue
247
		initialiserMarkerDeb();
247
		initialiserMarkerDeb();
248
		// Tentative de geocalisation si aucune obs à précharger
248
		// Tentative de geocalisation si aucune obs à précharger
249
		tenterGeolocalisation();
249
		tenterGeolocalisation();
250
	});
250
	});
251
	
251
	
252
	// Création du Geocoder
252
	// Création du Geocoder
253
	geocoder = new google.maps.Geocoder();
253
	geocoder = new google.maps.Geocoder();
254
}
254
}
255
 
255
 
256
function initialiserMarkerDeb() {
256
function initialiserMarkerDeb() {
257
	premierDeplacement = true;
257
	premierDeplacement = true;
258
	if (markerDeb == undefined) {
258
	if (markerDeb == undefined) {
259
		// Marqueur de début de Rue
259
		// Marqueur de début de Rue
260
		markerDeb = new google.maps.Marker({
260
		markerDeb = new google.maps.Marker({
261
			map: map,
261
			map: map,
262
			draggable: true,
262
			draggable: true,
263
			title: 'Début de la portion de rue étudiée',
263
			title: 'Début de la portion de rue étudiée',
264
			icon: GOOGLE_MAP_MARQUEUR_DEBUT_URL,
264
			icon: GOOGLE_MAP_MARQUEUR_DEBUT_URL,
265
			position: latLngDeb
265
			position: latLngDeb
266
		});
266
		});
267
		google.maps.event.addListener(markerDeb, 'dragend', surDeplacementMarkerDeb);
267
		google.maps.event.addListener(markerDeb, 'dragend', surDeplacementMarkerDeb);
268
	}
268
	}
269
	
269
	
270
	latLngFin = latLngDeb;
270
	latLngFin = latLngDeb;
271
	if (markerFin != undefined) {
271
	if (markerFin != undefined) {
272
		markerFin.setMap(null);
272
		markerFin.setMap(null);
273
	}
273
	}
274
	latLngCentre = latLngDeb;
274
	latLngCentre = latLngDeb;
275
	if (ligneRue != undefined) {
275
	if (ligneRue != undefined) {
276
		ligneRue.setMap(null);
276
		ligneRue.setMap(null);
277
	}
277
	}
278
}
278
}
279
 
279
 
280
function surDeplacementMarkerDeb() {
280
function surDeplacementMarkerDeb() {
281
	deplacerMarkerDeb(markerDeb.getPosition());
281
	deplacerMarkerDeb(markerDeb.getPosition());
282
}
282
}
283
 
283
 
284
function deplacerMarkerDeb(nouvellePosition) {
284
function deplacerMarkerDeb(nouvellePosition) {
285
	latLngDeb = nouvellePosition;
285
	latLngDeb = nouvellePosition;
286
	markerDeb.setPosition(latLngDeb);
286
	markerDeb.setPosition(latLngDeb);
287
	map.setCenter(latLngDeb);
287
	map.setCenter(latLngDeb);
288
	mettreAJourStationPosition(latLngDeb);
288
	mettreAJourStationPosition(latLngDeb);
289
	trouverCommune(latLngDeb);
289
	trouverCommune(latLngDeb);
290
 
290
 
291
	if (premierDeplacement) {
291
	if (premierDeplacement) {
292
		initialiserMarkerDeb();
292
		initialiserMarkerDeb();
293
		premierDeplacement = false;
293
		premierDeplacement = false;
294
	} else {
294
	} else {
295
		var nouvellePositionFin = new google.maps.LatLng(latLngDeb.lat(), latLngDeb.lng() + 0.0010);
295
		var nouvellePositionFin = new google.maps.LatLng(latLngDeb.lat(), latLngDeb.lng() + 0.0010);
296
		initialiserMarkerFin();
296
		initialiserMarkerFin();
297
		deplacerMakerFin(nouvellePositionFin)
297
		deplacerMakerFin(nouvellePositionFin)
298
		afficherEtapeGeolocalisation(3);
298
		afficherEtapeGeolocalisation(3);
299
	}
299
	}
300
}
300
}
301
 
301
 
302
function initialiserMarkerFin() {
302
function initialiserMarkerFin() {
303
	if (markerFin == undefined) {
303
	if (markerFin == undefined) {
304
		markerFin = new google.maps.Marker({
304
		markerFin = new google.maps.Marker({
305
			map: map,
305
			map: map,
306
			draggable: true,
306
			draggable: true,
307
			title: 'Fin de la portion de rue étudiée',
307
			title: 'Fin de la portion de rue étudiée',
308
			icon: GOOGLE_MAP_MARQUEUR_FIN_URL,
308
			icon: GOOGLE_MAP_MARQUEUR_FIN_URL,
309
			position: latLngFin
309
			position: latLngFin
310
		});
310
		});
311
		google.maps.event.addListener(markerFin, 'dragend', surDeplacementMarkerFin);
311
		google.maps.event.addListener(markerFin, 'dragend', surDeplacementMarkerFin);
312
	} else {
312
	} else {
313
		markerFin.setMap(null);
313
		markerFin.setMap(null);
314
	}
314
	}
315
}
315
}
316
 
316
 
317
function deplacerMakerFin(nouvellePosition) {
317
function deplacerMakerFin(nouvellePosition) {
318
	latLngFin = nouvellePosition;
318
	latLngFin = nouvellePosition;
319
	markerFin.setMap(map);
319
	markerFin.setMap(map);
320
	markerFin.setPosition(latLngFin);
320
	markerFin.setPosition(latLngFin);
321
	dessinerLigneRue(latLngDeb, latLngFin);
321
	dessinerLigneRue(latLngDeb, latLngFin);
322
}
322
}
323
 
323
 
324
function surDeplacementMarkerFin() {
324
function surDeplacementMarkerFin() {
325
	dessinerLigneRue(markerDeb.getPosition(), markerFin.getPosition());
325
	dessinerLigneRue(markerDeb.getPosition(), markerFin.getPosition());
326
	afficherCentreRue();
326
	afficherCentreRue();
327
	afficherEtapeGeolocalisation(4);
327
	afficherEtapeGeolocalisation(4);
328
}
328
}
329
 
329
 
330
function dessinerLigneRue(pointDebut, pointFin) {
330
function dessinerLigneRue(pointDebut, pointFin) {
331
	if (ligneRue != undefined) {
331
	if (ligneRue != undefined) {
332
		ligneRue.setMap(null);
332
		ligneRue.setMap(null);
333
	}
333
	}
334
	
334
	
335
	ligneRue = new google.maps.Polyline({
335
	ligneRue = new google.maps.Polyline({
336
		path: [pointDebut, pointFin],
336
		path: [pointDebut, pointFin],
337
		strokeColor: "#FF0000",
337
		strokeColor: "#FF0000",
338
		strokeOpacity: 1.0,
338
		strokeOpacity: 1.0,
339
		strokeWeight: 2
339
		strokeWeight: 2
340
	});
340
	});
341
 
341
 
342
	ligneRue.setMap(map);
342
	ligneRue.setMap(map);
343
}
343
}
344
 
344
 
345
function afficherCentreRue() {
345
function afficherCentreRue() {
346
	latLngDeb = markerDeb.getPosition();
346
	latLngDeb = markerDeb.getPosition();
347
	latLngFin = markerFin.getPosition();
347
	latLngFin = markerFin.getPosition();
348
	latLngCentre = new google.maps.LatLng((latLngFin.lat() + latLngDeb.lat())/2, (latLngFin.lng() + latLngDeb.lng())/2); 
348
	latLngCentre = new google.maps.LatLng((latLngFin.lat() + latLngDeb.lat())/2, (latLngFin.lng() + latLngDeb.lng())/2); 
349
	mettreAJourStationPosition(latLngCentre);
349
	mettreAJourStationPosition(latLngCentre);
350
}
350
}
351
 
351
 
352
function mettreAJourStationPosition(latLng) {
352
function mettreAJourStationPosition(latLng) {
353
	var lat = latLng.lat().toFixed(5),
353
	var lat = latLng.lat().toFixed(5),
354
		lng = latLng.lng().toFixed(5); 
354
		lng = latLng.lng().toFixed(5); 
355
	remplirChampLatitude(lat);
355
	remplirChampLatitude(lat);
356
	remplirChampLongitude(lng);
356
	remplirChampLongitude(lng);
357
}
357
}
358
 
358
 
359
function remplirChampLatitude(latDecimale) {
359
function remplirChampLatitude(latDecimale) {
360
	var lat = Math.round(latDecimale * 100000) / 100000;
360
	var lat = Math.round(latDecimale * 100000) / 100000;
361
	$('#latitude').val(lat);
361
	$('#latitude').val(lat);
362
}
362
}
363
 
363
 
364
function remplirChampLongitude(lngDecimale) {
364
function remplirChampLongitude(lngDecimale) {
365
	var lng = Math.round(lngDecimale * 100000) / 100000;
365
	var lng = Math.round(lngDecimale * 100000) / 100000;
366
	$('#longitude').val(lng);
366
	$('#longitude').val(lng);
367
}
367
}
368
 
368
 
369
function trouverCommune(pos) {
369
function trouverCommune(pos) {
370
	$(function() {
370
	$(function() {
371
		var url_service = SERVICE_NOM_COMMUNE_URL,
371
		var url_service = SERVICE_NOM_COMMUNE_URL,
372
			urlNomCommuneFormatee = url_service.replace('{lat}', pos.lat()).replace('{lon}', pos.lng());
372
			urlNomCommuneFormatee = url_service.replace('{lat}', pos.lat()).replace('{lon}', pos.lng());
373
		$.ajax({
373
		$.ajax({
374
			url: urlNomCommuneFormatee,
374
			url: urlNomCommuneFormatee,
375
			type: 'GET',
375
			type: 'GET',
376
			dataType: 'jsonp',
376
			dataType: 'jsonp',
377
			beforeSend: function() {
377
			beforeSend: function() {
378
				$('.commune-info').empty();	
378
				$('.commune-info').empty();	
379
				$('#dialogue-erreur .alert-txt').empty();
379
				$('#dialogue-erreur .alert-txt').empty();
380
			},
380
			},
381
			success: function(data, textStatus, jqXHR) {
381
			success: function(data, textStatus, jqXHR) {
382
				$('.commune-info').empty();
382
				$('.commune-info').empty();
383
				$('#commune-nom').append(data.nom);
383
				$('#commune-nom').append(data.nom);
384
				$('#commune-code-insee').append(data.codeINSEE);
384
				$('#commune-code-insee').append(data.codeINSEE);
385
				$('#marqueur-commune').data('commune', {'nom' : data.nom, 'codeInsee' : data.codeINSEE});
385
				$('#marqueur-commune').data('commune', {'nom' : data.nom, 'codeInsee' : data.codeINSEE});
386
			},
386
			},
387
			statusCode: {
387
			statusCode: {
388
				500: function(jqXHR, textStatus, errorThrown) {
388
				500: function(jqXHR, textStatus, errorThrown) {
389
					if (DEBUG) {	
389
					if (DEBUG) {	
390
						$('#dialogue-erreur .alert-txt').append('<p id="msg">Un problème est survenu lors de l\'appel au service fournissante le nom des communes.</p>');
390
						$('#dialogue-erreur .alert-txt').append('<p id="msg">Un problème est survenu lors de l\'appel au service fournissante le nom des communes.</p>');
391
						reponse = jQuery.parseJSON(jqXHR.responseText);
391
						reponse = jQuery.parseJSON(jqXHR.responseText);
392
						var erreurMsg = "";
392
						var erreurMsg = "";
393
						if (reponse != null) {
393
						if (reponse != null) {
394
							$.each(reponse, function (cle, valeur) {
394
							$.each(reponse, function (cle, valeur) {
395
								erreurMsg += valeur + '<br />';
395
								erreurMsg += valeur + '<br />';
396
							});
396
							});
397
						}
397
						}
398
						
398
						
399
						$('#dialogue-erreur .alert-txt').append(
399
						$('#dialogue-erreur .alert-txt').append(
400
							'<p class="msg-erreur">Erreur 500 : '+errorThrown+'<br />'+erreurMsg+'</p>');
400
							'<p class="msg-erreur">Erreur 500 : '+errorThrown+'<br />'+erreurMsg+'</p>');
401
					}
401
					}
402
				}
402
				}
403
			},
403
			},
404
			error: function(jqXHR, textStatus, errorThrown) {
404
			error: function(jqXHR, textStatus, errorThrown) {
405
				if (DEBUG) {
405
				if (DEBUG) {
406
					$('#dialogue-erreur .alert-txt').append(
406
					$('#dialogue-erreur .alert-txt').append(
407
						'<p class="msg">Une erreur Ajax est survenue lors de la transmission de vos observations.</p>');
407
						'<p class="msg">Une erreur Ajax est survenue lors de la transmission de vos observations.</p>');
408
					reponse = jQuery.parseJSON(jqXHR.responseText);
408
					reponse = jQuery.parseJSON(jqXHR.responseText);
409
					var erreurMsg = '';
409
					var erreurMsg = '';
410
					if (reponse != null) {
410
					if (reponse != null) {
411
						$.each(reponse, function (cle, valeur) {
411
						$.each(reponse, function (cle, valeur) {
412
							erreurMsg += valeur + '<br />';
412
							erreurMsg += valeur + '<br />';
413
						});
413
						});
414
					}
414
					}
415
					
415
					
416
					$('#dialogue-erreur .alert-txt').append(
416
					$('#dialogue-erreur .alert-txt').append(
417
						'<p class="msg-erreur">Erreur Ajax : '+errorThrown+' (type : '+textStatus+') <br />'+erreurMsg+'</p>');
417
						'<p class="msg-erreur">Erreur Ajax : '+errorThrown+' (type : '+textStatus+') <br />'+erreurMsg+'</p>');
418
				}
418
				}
419
			},
419
			},
420
			complete: function(jqXHR, textStatus) {
420
			complete: function(jqXHR, textStatus) {
421
				var debugMsg = extraireEnteteDebug(jqXHR);
421
				var debugMsg = extraireEnteteDebug(jqXHR);
422
				if (debugMsg != '') {
422
				if (debugMsg != '') {
423
					if (DEBUG) {
423
					if (DEBUG) {
424
						$("#dialogue-erreur .alert-txt").append('<pre class="msg-debug msg">Débogage : '+debugMsg+'</pre>');
424
						$("#dialogue-erreur .alert-txt").append('<pre class="msg-debug msg">Débogage : '+debugMsg+'</pre>');
425
					}
425
					}
426
				}
426
				}
427
				if ($("#dialogue-erreur .msg").length > 0) {
427
				if ($("#dialogue-erreur .msg").length > 0) {
428
					$("#dialogue-erreur").show();
428
					$("#dialogue-erreur").show();
429
				}
429
				}
430
			}
430
			}
431
		});
431
		});
432
	});
432
	});
433
}
433
}
434
 
434
 
435
function afficherEtapeGeolocalisation(numEtape) {
435
function afficherEtapeGeolocalisation(numEtape) {
436
	$('.liste_indication_geolocalisation').children().hide();
436
	$('.liste_indication_geolocalisation').children().hide();
437
	$('.liste_indication_geolocalisation :nth-child('+numEtape+')').show();
437
	$('.liste_indication_geolocalisation :nth-child('+numEtape+')').show();
438
}
438
}
439
 
439
 
440
function afficherErreurGoogleMap(status) {
440
function afficherErreurGoogleMap(status) {
441
	if (DEBUG) {
441
	if (DEBUG) {
442
		$('#dialogue-google-map .contenu').empty().append(
442
		$('#dialogue-google-map .contenu').empty().append(
443
			'<pre class="msg-erreur">'+
443
			'<pre class="msg-erreur">'+
444
			"Le service de Géocodage de Google Map a échoué à cause de l'erreur : "+status+
444
			"Le service de Géocodage de Google Map a échoué à cause de l'erreur : "+status+
445
			'</pre>');
445
			'</pre>');
446
		afficherPanneau('#dialogue-google-map');
446
		afficherPanneau('#dialogue-google-map');
447
	}
447
	}
448
}
448
}
449
 
449
 
450
function geolocaliser(event) {
450
function geolocaliser(event) {
451
	var latitude = $('#latitude').val(),
451
	var latitude = $('#latitude').val(),
452
		longitude = $('#longitude').val(),
452
		longitude = $('#longitude').val(),
453
		nouvellePosition = new google.maps.LatLng(latitude, longitude);
453
		nouvellePosition = new google.maps.LatLng(latitude, longitude);
454
	initialiserMarkerDeb();
454
	initialiserMarkerDeb();
455
	deplacerMarkerDeb(nouvellePosition);
455
	deplacerMarkerDeb(nouvellePosition);
456
	afficherEtapeGeolocalisation(2);
456
	afficherEtapeGeolocalisation(2);
457
	map.setZoom(16);
457
	map.setZoom(16);
458
	arreter(event);
458
	arreter(event);
459
}
459
}
460
 
460
 
461
function tenterGeolocalisation() {
461
function tenterGeolocalisation() {
462
	if (navigator.geolocation) {
462
	if (navigator.geolocation) {
463
		navigator.geolocation.getCurrentPosition(function(position) {
463
		navigator.geolocation.getCurrentPosition(function(position) {
464
			var latitude = position.coords.latitude,
464
			var latitude = position.coords.latitude,
465
				longitude = position.coords.longitude,
465
				longitude = position.coords.longitude,
466
				nouvellePosition = new google.maps.LatLng(latitude, longitude);
466
				nouvellePosition = new google.maps.LatLng(latitude, longitude);
467
			initialiserMarkerDeb();
467
			initialiserMarkerDeb();
468
			deplacerMarkerDeb(nouvellePosition);
468
			deplacerMarkerDeb(nouvellePosition);
469
			map.setZoom(16);
469
			map.setZoom(16);
470
		});
470
		});
471
	}
471
	}
472
}
472
}
473
 
473
 
474
function surClickDansCarte(event) {
474
function surClickDansCarte(event) {
475
	deplacerMarkerDeb(event.latLng);
475
	deplacerMarkerDeb(event.latLng);
476
}
476
}
477
 
477
 
478
 
478
 
479
//+---------------------------------------------------------------------------------------------------------+
479
//+---------------------------------------------------------------------------------------------------------+
480
//AUTO-COMPLÉTION Noms Scientifiques => OK
480
//AUTO-COMPLÉTION Noms Scientifiques => OK
481
 
481
 
482
function ajouterAutocompletionNoms() {
482
function ajouterAutocompletionNoms() {
483
	$('#taxon').autocomplete({
483
	$('#taxon').autocomplete({
484
		source: function(requete, add){  
484
		source: function(requete, add){  
485
			// la variable de requête doit être vidée car sinon le parametre "term" est ajouté
485
			// la variable de requête doit être vidée car sinon le parametre "term" est ajouté
486
			
486
			
487
			var url = getUrlAutocompletionNomsSci();
487
			var url = getUrlAutocompletionNomsSci();
488
			$.getJSON(url, function(data) {
488
			$.getJSON(url, function(data) {
489
				var suggestions = traiterRetourNomsSci(data);
489
				var suggestions = traiterRetourNomsSci(data);
490
				add(suggestions);  
490
				add(suggestions);  
491
			});
491
			});
492
		},
492
		},
493
		html: true
493
		html: true
494
	});
494
	});
495
	
495
	
496
	$('#taxon').bind('autocompleteselect', function(event, ui) {
496
	$('#taxon').bind('autocompleteselect', function(event, ui) {
497
		$('#taxon').data(ui.item);
497
		$('#taxon').data(ui.item);
498
		if (ui.item.retenu == true) {
498
		if (ui.item.retenu == true) {
499
			$('#taxon').addClass('ns-retenu');
499
			$('#taxon').addClass('ns-retenu');
500
		} else {
500
		} else {
501
			$('#taxon').removeClass('ns-retenu');
501
			$('#taxon').removeClass('ns-retenu');
502
		}
502
		}
503
	});
503
	});
504
}
504
}
505
 
505
 
506
function getUrlAutocompletionNomsSci() {
506
function getUrlAutocompletionNomsSci() {
507
	var mots = $('#taxon').val(),
507
	var mots = $('#taxon').val(),
508
		url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL_TPL.replace('{referentiel}',NOM_SCI_PROJET);
508
		url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL_TPL.replace('{referentiel}',NOM_SCI_PROJET);
509
	url = url.replace('{masque}', mots);
509
	url = url.replace('{masque}', mots);
510
	return url;
510
	return url;
511
}
511
}
512
 
512
 
513
function traiterRetourNomsSci(data) {
513
function traiterRetourNomsSci(data) {
514
	var suggestions = [];
514
	var suggestions = [];
515
	if (data.resultat != undefined) {
515
	if (data.resultat != undefined) {
516
		$.each(data.resultat, function(i, val) {
516
		$.each(data.resultat, function(i, val) {
517
			val.nn = i;
517
			val.nn = i;
518
			var nom = {label: '', value: '', nt: '', nomSel: '', nomSelComplet: '', numNomSel: '',
518
			var nom = {label: '', value: '', nt: '', nomSel: '', nomSelComplet: '', numNomSel: '',
519
				nomRet: '', numNomRet: '', famille: '', retenu: false
519
				nomRet: '', numNomRet: '', famille: '', retenu: false
520
			};
520
			};
521
			if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) {
521
			if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) {
522
				nom.label = '...';
522
				nom.label = '...';
523
				nom.value = $('#taxon').val();
523
				nom.value = $('#taxon').val();
524
				suggestions.push(nom);
524
				suggestions.push(nom);
525
				return false;
525
				return false;
526
			} else {
526
			} else {
527
				nom.label = val.nom_sci_complet;
527
				nom.label = val.nom_sci_complet;
528
				nom.value = val.nom_sci_complet;
528
				nom.value = val.nom_sci_complet;
529
				nom.nt = val.num_taxonomique;
529
				nom.nt = val.num_taxonomique;
530
				nom.nomSel = val.nom_sci;
530
				nom.nomSel = val.nom_sci;
531
				nom.nomSelComplet = val.nom_sci_complet;
531
				nom.nomSelComplet = val.nom_sci_complet;
532
				nom.numNomSel = val.nn;
532
				nom.numNomSel = val.nn;
533
				nom.nomRet = val.nom_retenu_complet;
533
				nom.nomRet = val.nom_retenu_complet;
534
				nom.numNomRet = val['nom_retenu.id'];
534
				nom.numNomRet = val['nom_retenu.id'];
535
				nom.famille = val.famille;
535
				nom.famille = val.famille;
536
				nom.retenu = (val.retenu == 'false') ? false : true;
536
				nom.retenu = (val.retenu == 'false') ? false : true;
537
				
537
				
538
				suggestions.push(nom);
538
				suggestions.push(nom);
539
			}
539
			}
540
		});
540
		});
541
	}
541
	}
542
	return suggestions;
542
	return suggestions;
543
}
543
}
544
 
544
 
545
/*
545
/*
546
* jQuery UI Autocomplete HTML Extension
546
* jQuery UI Autocomplete HTML Extension
547
*
547
*
548
* Copyright 2010, Scott González (http://scottgonzalez.com)
548
* Copyright 2010, Scott González (http://scottgonzalez.com)
549
* Dual licensed under the MIT or GPL Version 2 licenses.
549
* Dual licensed under the MIT or GPL Version 2 licenses.
550
*
550
*
551
* http://github.com/scottgonzalez/jquery-ui-extensions
551
* http://github.com/scottgonzalez/jquery-ui-extensions
552
* 
552
* 
553
* Adaptation par Aurélien Peronnet pour la mise en gras des noms de taxons valides
553
* Adaptation par Aurélien Peronnet pour la mise en gras des noms de taxons valides
554
*/
554
*/
555
(function($) {
555
(function($) {
556
	var proto = $.ui.autocomplete.prototype,
556
	var proto = $.ui.autocomplete.prototype,
557
		initSource = proto._initSource;
557
		initSource = proto._initSource;
558
	
558
	
559
	function filter(array, term) {
559
	function filter(array, term) {
560
		var matcher = new RegExp($.ui.autocomplete.escapeRegex(term), 'i');
560
		var matcher = new RegExp($.ui.autocomplete.escapeRegex(term), 'i');
561
		return $.grep(array, function(value) {
561
		return $.grep(array, function(value) {
562
			return matcher.test($('<div>').html(value.label || value.value || value).text());
562
			return matcher.test($('<div>').html(value.label || value.value || value).text());
563
		});
563
		});
564
	}
564
	}
565
	
565
	
566
	$.extend(proto, {
566
	$.extend(proto, {
567
		_initSource: function() {
567
		_initSource: function() {
568
			if (this.options.html && $.isArray(this.options.source)) {
568
			if (this.options.html && $.isArray(this.options.source)) {
569
				this.source = function( request, response ) {
569
				this.source = function( request, response ) {
570
					response(filter(this.options.source, request.term));
570
					response(filter(this.options.source, request.term));
571
				};
571
				};
572
			} else {
572
			} else {
573
				initSource.call(this);
573
				initSource.call(this);
574
			}
574
			}
575
		},
575
		},
576
		_renderItem: function(ul, item) {
576
		_renderItem: function(ul, item) {
577
			if (item.retenu == true) {
577
			if (item.retenu == true) {
578
				item.label = '<strong>'+item.label+'</strong>';
578
				item.label = '<strong>'+item.label+'</strong>';
579
			}
579
			}
580
			
580
			
581
			return $('<li></li>')
581
			return $('<li></li>')
582
				.data('item.autocomplete', item)
582
				.data('item.autocomplete', item)
583
				.append($('<a></a>')[this.options.html ? 'html' : 'text'](item.label))
583
				.append($('<a></a>')[this.options.html ? 'html' : 'text'](item.label))
584
				.appendTo(ul);
584
				.appendTo(ul);
585
		}
585
		}
586
	});
586
	});
587
})(jQuery);
587
})(jQuery);
588
 
588
 
589
//+----------------------------------------------------------------------------------------------------------+
589
//+----------------------------------------------------------------------------------------------------------+
590
//UPLOAD PHOTO : Traitement de l'image => OK
590
//UPLOAD PHOTO : Traitement de l'image => OK
591
 
591
 
592
$(document).ready(function() {
592
$(document).ready(function() {
593
	$('#fichier').on('click change', function(event) {
593
	$('#fichier').on('click change', function(event) {
594
		if ($(this).val().length > 0) {
594
		if ($(this).val().length > 0) {
595
			arreter(event);
595
			arreter(event);
596
			var options = { 
596
			var options = { 
597
				success: afficherMiniature, // post-submit callback 
597
				success: afficherMiniature, // post-submit callback 
598
				dataType: 'xml', // 'xml', 'script', or 'json' (expected server response type) 
598
				dataType: 'xml', // 'xml', 'script', or 'json' (expected server response type) 
599
				resetForm: true // reset the form after successful submit 
599
				resetForm: true // reset the form after successful submit 
600
			};
600
			};
601
			$('#miniature').append(
601
			$('#miniature').append(
602
				'<img id="miniature-chargement" class="miniature" alt="chargement" src="'+CHARGEMENT_IMAGE_URL+'"/>');
602
				'<img id="miniature-chargement" class="miniature" alt="chargement" src="'+CHARGEMENT_IMAGE_URL+'"/>');
603
			$('#ajouter-obs').attr('disabled', 'disabled');
603
			$('#ajouter-obs').attr('disabled', 'disabled');
604
			if (verifierFormat($(this).val())) {
604
			if (verifierFormat($(this).val())) {
605
				$('#form-upload').ajaxSubmit(options);
605
				$('#form-upload').ajaxSubmit(options);
606
			} else {
606
			} else {
-
 
607
				$('#form-upload')[0].reset();
607
				window.alert("Le format de fichier n'est pas supporté, les formats acceptés sont "+	$('#fichier').attr('accept'));
608
				window.alert("Le format de fichier n'est pas supporté, les formats acceptés sont "+	$('#fichier').attr('accept'));
608
			}
609
			}
609
			return false;
610
			return false;
610
		}
611
		}
611
	});
612
	});
612
	
613
	
613
	$('#photo-placeholder').click(function(event) {
614
	$('#photo-placeholder').click(function(event) {
614
		$('#fichier').click();
615
		$('#fichier').click();
615
	});
616
	});
616
	
617
	
617
	$('body').on('click', '.effacer-miniature', function(event) {
618
	$('body').on('click', '.effacer-miniature', function(event) {
618
		supprimerMiniature($(this));
619
		supprimerMiniature($(this));
619
	});
620
	});
620
});
621
});
621
 
622
 
622
 
623
 
623
 
624
 
624
function verifierFormat(nom) {
625
function verifierFormat(nom) {
625
	var parts = nom.split('.');
626
	var parts = nom.split('.');
626
	extension = parts[parts.length - 1];
627
	extension = parts[parts.length - 1];
627
	return (extension.toLowerCase() == 'jpeg' || extension.toLowerCase() == 'jpg');
628
	return (extension.toLowerCase() == 'jpeg' || extension.toLowerCase() == 'jpg');
628
}
629
}
629
 
630
 
630
function afficherMiniature(reponse) { 
631
function afficherMiniature(reponse) { 
631
	if (DEBUG) {
632
	if (DEBUG) {
632
		var debogage = $('debogage', reponse).text();
633
		var debogage = $('debogage', reponse).text();
633
		console.log('Débogage upload : ' + debogage);
634
		console.log('Débogage upload : ' + debogage);
634
	}
635
	}
635
	var message = $('message', reponse).text();
636
	var message = $('message', reponse).text();
636
	if (message != '') {
637
	if (message != '') {
637
		$('#miniature-msg').append(message);
638
		$('#miniature-msg').append(message);
638
	} else {
639
	} else {
639
		$('#miniatures').append(creerWidgetMiniature(reponse));
640
		$('#miniatures').append(creerWidgetMiniature(reponse));
640
	}
641
	}
641
	$('#ajouter-obs').removeAttr('disabled');
642
	$('#ajouter-obs').removeAttr('disabled');
642
}
643
}
643
 
644
 
644
function creerWidgetMiniature(reponse) {
645
function creerWidgetMiniature(reponse) {
645
	var miniatureUrl = $('miniature-url', reponse).text(),
646
	var miniatureUrl = $('miniature-url', reponse).text(),
646
		imgNom = $('image-nom', reponse).text(),
647
		imgNom = $('image-nom', reponse).text(),
647
		html = 
648
		html = 
648
			'<div class="miniature">'+
649
			'<div class="miniature">'+
649
				'<img class="miniature-img" class="miniature" alt="'+imgNom+'" src="'+miniatureUrl+'"/>'+
650
				'<img class="miniature-img" class="miniature" alt="'+imgNom+'" src="'+miniatureUrl+'"/>'+
650
				'<button class="btn effacer-miniature" type="button">Effacer</button>'+
651
				'<button class="btn effacer-miniature" type="button">Effacer</button>'+
651
			'</div>'
652
			'</div>'
652
	return html;
653
	return html;
653
}
654
}
654
 
655
 
655
function supprimerMiniature(miniature) {
656
function supprimerMiniature(miniature) {
656
	miniature.parents('.miniature').remove();
657
	miniature.parents('.miniature').remove();
657
}
658
}
658
 
659
 
659
function supprimerMiniatures() {
660
function supprimerMiniatures() {
660
	$('#miniatures').empty();
661
	$('#miniatures').empty();
661
	$('#miniature-msg').empty();
662
	$('#miniature-msg').empty();
662
}
663
}
663
 
664
 
664
 
665
 
665
//+---------------------------------------------------------------------------------------------------------+
666
//+---------------------------------------------------------------------------------------------------------+
666
//FORMULAIRE : traitements génériques
667
//FORMULAIRE : traitements génériques
667
 
668
 
668
$(document).ready(function() {
669
$(document).ready(function() {
669
	// Interaction générales
670
	// Interaction générales
670
	$('.alert .close').on('click', fermerPanneauAlert);
671
	$('.alert .close').on('click', fermerPanneauAlert);
671
	$('.has-tooltip').tooltip('enable');
672
	$('.has-tooltip').tooltip('enable');
672
	$('#btn-aide').on('click', basculerAffichageAide);
673
	$('#btn-aide').on('click', basculerAffichageAide);
673
	$('.dropdown-menu input, .dropdown-menu label').on('click', function(event) {
674
	$('.dropdown-menu input, .dropdown-menu label').on('click', function(event) {
674
		event.stopPropagation();
675
		event.stopPropagation();
675
	});
676
	});
676
	
677
	
677
	// Gestion de la liste des taxons
678
	// Gestion de la liste des taxons
678
	ajouterAutocompletionNoms();
679
	ajouterAutocompletionNoms();
679
	surChangementTaxonListe();
680
	surChangementTaxonListe();
680
	$('#taxon-liste').on('change', surChangementTaxonListe);
681
	$('#taxon-liste').on('change', surChangementTaxonListe);
681
	if (DEBUG) {
682
	if (DEBUG) {
682
		console.log('Selected taxon:'+$('#taxon-liste option:selected').val());
683
		console.log('Selected taxon:'+$('#taxon-liste option:selected').val());
683
	}
684
	}
684
 
685
 
685
	// Validation du formulaire
686
	// Validation du formulaire
686
	configurerFormValidator();
687
	configurerFormValidator();
687
	definirReglesFormValidator();
688
	definirReglesFormValidator();
688
	
689
	
689
	// Interaction sur le formulaire obs
690
	// Interaction sur le formulaire obs
690
	configurerDatePicker('#date');
691
	configurerDatePicker('#date');
691
	$('a.afficher-coord').on('click', basculerAffichageCoord);
692
	$('a.afficher-coord').on('click', basculerAffichageCoord);
692
	$('.cb-milieux').on('click', function(event) {
693
	$('.cb-milieux').on('click', function(event) {
693
		$(this).valid();
694
		$(this).valid();
694
		event.stopPropagation();
695
		event.stopPropagation();
695
	});
696
	});
696
	$('#ajouter-obs').on('click', ajouterObs);
697
	$('#ajouter-obs').on('click', ajouterObs);
697
	$('.obs-nbre').on('changement', surChangementNbreObs);
698
	$('.obs-nbre').on('changement', surChangementNbreObs);
698
	$('body').on('click', '.supprimer-obs', supprimerObs);
699
	$('body').on('click', '.supprimer-obs', supprimerObs);
699
	$('#transmettre-obs').on('click', transmettreObs);
700
	$('#transmettre-obs').on('click', transmettreObs);
700
	
701
	
701
	// Défilement des photos
702
	// Défilement des photos
702
	$('body').on('click', '.defilement-control-zone', function(event) {
703
	$('body').on('click', '.defilement-control-zone', function(event) {
703
		defilerMiniatures($(this));
704
		defilerMiniatures($(this));
704
	});
705
	});
705
	$('body').on('mouseover', '.defilement-control-zone', function(event) {
706
	$('body').on('mouseover', '.defilement-control-zone', function(event) {
706
		$('.defilement-control', this).removeClass('hidden');
707
		$('.defilement-control', this).removeClass('hidden');
707
	});
708
	});
708
	$('body').on('mouseout', '.defilement-control-zone', function(event) {
709
	$('body').on('mouseout', '.defilement-control-zone', function(event) {
709
		$('.defilement-control', this).addClass('hidden');
710
		$('.defilement-control', this).addClass('hidden');
710
	});
711
	});
711
});
712
});
712
 
713
 
713
function configurerFormValidator() {
714
function configurerFormValidator() {
714
	$.validator.addMethod(
715
	$.validator.addMethod(
715
		'dateCel', 
716
		'dateCel', 
716
		function (value, element) { 
717
		function (value, element) { 
717
			return value == '' || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value)); 
718
			return value == '' || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value)); 
718
		}, 
719
		}, 
719
		'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.');
720
		'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.');
720
	
721
	
721
	$.extend($.validator.defaults, {
722
	$.extend($.validator.defaults, {
722
		ignore: [],// Forcer Jquery Validate à examiner les éléments avec en display:none;
723
		ignore: [],// Forcer Jquery Validate à examiner les éléments avec en display:none;
723
		highlight: function(element) {
724
		highlight: function(element) {
724
			$(element).closest('.control-group').removeClass('success').addClass('error');
725
			$(element).closest('.control-group').removeClass('success').addClass('error');
725
		},
726
		},
726
		success: function(element) {
727
		success: function(element) {
727
			element.text('OK!').addClass('valid');
728
			element.text('OK!').addClass('valid');
728
			element.closest('.control-group').removeClass('error').addClass('success');
729
			element.closest('.control-group').removeClass('error').addClass('success');
729
			
730
			
730
			if (element.attr('id') == 'taxon' && $('#taxon').val() != '') {
731
			if (element.attr('id') == 'taxon' && $('#taxon').val() != '') {
731
				// Si le taxon n'est pas lié au référentiel, on vide le data associé
732
				// Si le taxon n'est pas lié au référentiel, on vide le data associé
732
				if ($('#taxon').data('value') != $('#taxon').val()) {
733
				if ($('#taxon').data('value') != $('#taxon').val()) {
733
					$('#taxon').data('numNomSel', '');
734
					$('#taxon').data('numNomSel', '');
734
					$('#taxon').data('nomRet', '');
735
					$('#taxon').data('nomRet', '');
735
					$('#taxon').data('numNomRet', '');
736
					$('#taxon').data('numNomRet', '');
736
					$('#taxon').data('nt', '');
737
					$('#taxon').data('nt', '');
737
					$('#taxon').data('famille', '');
738
					$('#taxon').data('famille', '');
738
				}
739
				}
739
			}
740
			}
740
		}
741
		}
741
	});
742
	});
742
}
743
}
743
 
744
 
744
function definirReglesFormValidator() {
745
function definirReglesFormValidator() {
745
	$('#form-observateur').validate({
746
	$('#form-observateur').validate({
746
		rules: {
747
		rules: {
747
			courriel: {
748
			courriel: {
748
				required: true,
749
				required: true,
749
				email: true},
750
				email: true},
750
			courriel_confirmation: {
751
			courriel_confirmation: {
751
				required: true,
752
				required: true,
752
				equalTo: '#courriel'},
753
				equalTo: '#courriel'},
753
			prenom: {
754
			prenom: {
754
				required: true},
755
				required: true},
755
			nom: {
756
			nom: {
756
				required: true}
757
				required: true}
757
		}
758
		}
758
	});
759
	});
759
	$('#form-obs').validate({
760
	$('#form-obs').validate({
760
		rules: {
761
		rules: {
761
			station: {
762
			station: {
762
				required: true},
763
				required: true},
763
			latitude : {
764
			latitude : {
764
				required: true,
765
				required: true,
765
				range: [-90, 90]},
766
				range: [-90, 90]},
766
			longitude: {
767
			longitude: {
767
				required: true,
768
				required: true,
768
				range: [-180, 180]},
769
				range: [-180, 180]},
769
			date: {
770
			date: {
770
				required: true,
771
				required: true,
771
				'dateCel' : true},
772
				'dateCel' : true},
772
			coteRue: {
773
			coteRue: {
773
				required: true},
774
				required: true},
774
			'taxon-liste': {
775
			'taxon-liste': {
775
				required: true},
776
				required: true},
776
			'milieux[]': {
777
			'milieux[]': {
777
				required: true,
778
				required: true,
778
				minlength: 1}
779
				minlength: 1}
779
		},
780
		},
780
		errorPlacement: function(error, element) {
781
		errorPlacement: function(error, element) {
781
			if (element.attr('name') == 'date') {
782
			if (element.attr('name') == 'date') {
782
				element.parent('.input-prepend').after(error);
783
				element.parent('.input-prepend').after(error);
783
			} else if (element.attr('name') == 'milieux[]') {
784
			} else if (element.attr('name') == 'milieux[]') {
784
				error.insertAfter('#milieux-controls');
785
				error.insertAfter('#milieux-controls');
785
			} else {
786
			} else {
786
				error.insertAfter(element);
787
				error.insertAfter(element);
787
			}
788
			}
788
		},
789
		},
789
		messages: {
790
		messages: {
790
			'milieu[]': 'Vous devez sélectionner au moins un milieu'
791
			'milieu[]': 'Vous devez sélectionner au moins un milieu'
791
		}
792
		}
792
	});
793
	});
793
}
794
}
794
 
795
 
795
function validerFormulaire() {
796
function validerFormulaire() {
796
	var observateur = $('#form-observateur').valid(),
797
	var observateur = $('#form-observateur').valid(),
797
		obs = $('#form-obs').valid(),
798
		obs = $('#form-obs').valid(),
798
		debRue = (latLngDeb == undefined || latLngDeb == latLngFin) ? false : true,
799
		debRue = (latLngDeb == undefined || latLngDeb == latLngFin) ? false : true,
799
		finRue = (latLngFin == undefined || latLngDeb == latLngFin) ? false : true;
800
		finRue = (latLngFin == undefined || latLngDeb == latLngFin) ? false : true;
800
	var ok = (observateur && obs && debRue && finRue) ? true : false;
801
	var ok = (observateur && obs && debRue && finRue) ? true : false;
801
	//console.log('observateur:'+observateur+'-obs:'+obs+'-debRue:'+debRue+'('+latLngDeb+')-finRue:'+finRue+'('+latLngDeb+')');
802
	//console.log('observateur:'+observateur+'-obs:'+obs+'-debRue:'+debRue+'('+latLngDeb+')-finRue:'+finRue+'('+latLngDeb+')');
802
	return ok;
803
	return ok;
803
}
804
}
804
 
805
 
805
function surChangementTaxonListe() {
806
function surChangementTaxonListe() {
806
	if ($('#taxon-liste').val() === '?') {
807
	if ($('#taxon-liste').val() === '?') {
807
		$('#taxon-input-groupe').removeClass('hidden');
808
		$('#taxon-input-groupe').removeClass('hidden');
808
	} else {
809
	} else {
809
		$('#taxon-input-groupe').addClass('hidden');
810
		$('#taxon-input-groupe').addClass('hidden');
810
	}
811
	}
811
}
812
}
812
 
813
 
813
function configurerDatePicker(selector) {
814
function configurerDatePicker(selector) {
814
	$.datepicker.setDefaults($.datepicker.regional['fr']);
815
	$.datepicker.setDefaults($.datepicker.regional['fr']);
815
	$(selector).datepicker({
816
	$(selector).datepicker({
816
		dateFormat: 'dd/mm/yy',
817
		dateFormat: 'dd/mm/yy',
817
		maxDate: new Date,
818
		maxDate: new Date,
818
		showOn: 'button',
819
		showOn: 'button',
819
		buttonImageOnly: true,
820
		buttonImageOnly: true,
820
		buttonImage: CALENDRIER_ICONE_URL,
821
		buttonImage: CALENDRIER_ICONE_URL,
821
		buttonText: 'Afficher le calendrier pour saisir la date.',
822
		buttonText: 'Afficher le calendrier pour saisir la date.',
822
		showButtonPanel: true,
823
		showButtonPanel: true,
823
		onSelect: function(date) {
824
		onSelect: function(date) {
824
			$(this).valid();
825
			$(this).valid();
825
		}
826
		}
826
	});
827
	});
827
	$(selector + ' + img.ui-datepicker-trigger').appendTo(selector + '-icone.add-on');
828
	$(selector + ' + img.ui-datepicker-trigger').appendTo(selector + '-icone.add-on');
828
}
829
}
829
 
830
 
830
function fermerPanneauAlert() {
831
function fermerPanneauAlert() {
831
	$(this).parentsUntil('.zone-alerte', '.alert').hide();
832
	$(this).parentsUntil('.zone-alerte', '.alert').hide();
832
}
833
}
833
 
834
 
834
function basculerAffichageAide() {
835
function basculerAffichageAide() {
835
	if ($(this).hasClass('btn-warning')) {
836
	if ($(this).hasClass('btn-warning')) {
836
		$('.has-tooltip').tooltip('enable');
837
		$('.has-tooltip').tooltip('enable');
837
		$(this).removeClass('btn-warning').addClass('btn-success');
838
		$(this).removeClass('btn-warning').addClass('btn-success');
838
		$('#btn-aide-txt', this).text("Désactiver l'aide");
839
		$('#btn-aide-txt', this).text("Désactiver l'aide");
839
	} else {
840
	} else {
840
		$('.has-tooltip').tooltip('disable');
841
		$('.has-tooltip').tooltip('disable');
841
		$(this).removeClass('btn-success').addClass('btn-warning');
842
		$(this).removeClass('btn-success').addClass('btn-warning');
842
		$('#btn-aide-txt', this).text("Activer l'aide");
843
		$('#btn-aide-txt', this).text("Activer l'aide");
843
	}
844
	}
844
}
845
}
845
 
846
 
846
function basculerAffichageCoord() {
847
function basculerAffichageCoord() {
847
	$('.afficher-coord-action').toggle();
848
	$('.afficher-coord-action').toggle();
848
	$('#coordonnees-geo').toggle('slow');
849
	$('#coordonnees-geo').toggle('slow');
849
	//valeur false pour que le lien ne soit pas suivi
850
	//valeur false pour que le lien ne soit pas suivi
850
	return false;
851
	return false;
851
}
852
}
852
 
853
 
853
//+----------------------------------------------------------------------------------------------------------+
854
//+----------------------------------------------------------------------------------------------------------+
854
//CRÉER OBS : Gestion des obs => OK
855
//CRÉER OBS : Gestion des obs => OK
855
 
856
 
856
var obsNbre = 0;
857
var obsNbre = 0;
857
 
858
 
858
function ajouterObs() {
859
function ajouterObs() {
859
	if (validerFormulaire() == true) {
860
	if (validerFormulaire() == true) {
860
		obsNbre = obsNbre + 1;
861
		obsNbre = obsNbre + 1;
861
		$('.obs-nbre').text(obsNbre);
862
		$('.obs-nbre').text(obsNbre);
862
		$('.obs-nbre').triggerHandler('changement');
863
		$('.obs-nbre').triggerHandler('changement');
863
		afficherObs();
864
		afficherObs();
864
		stockerObsData();
865
		stockerObsData();
865
		supprimerMiniatures();
866
		supprimerMiniatures();
866
	} else {
867
	} else {
867
		// Affichage de tous les panneau cachés avec champ obligatoire
868
		// Affichage de tous les panneau cachés avec champ obligatoire
868
		var debRue = (latLngDeb == undefined || latLngDeb == latLngFin) ? false : true,
869
		var debRue = (latLngDeb == undefined || latLngDeb == latLngFin) ? false : true,
869
			finRue = (latLngFin == undefined || latLngDeb == latLngFin) ? false : true;
870
			finRue = (latLngFin == undefined || latLngDeb == latLngFin) ? false : true;
870
		if (debRue == false || finRue == false) {
871
		if (debRue == false || finRue == false) {
871
			afficherPanneau('#dialogue-form-invalide-rue');
872
			afficherPanneau('#dialogue-form-invalide-rue');
872
		} else {
873
		} else {
873
			afficherPanneau('#dialogue-form-invalide');
874
			afficherPanneau('#dialogue-form-invalide');
874
		}
875
		}
875
		montrerFormIdentite();
876
		montrerFormIdentite();
876
	}
877
	}
877
}
878
}
878
 
879
 
879
function afficherObs() {
880
function afficherObs() {
880
	var numNomSel = ($('#taxon-liste').val() == '?') ? $('#taxon').data('numNomSel') : $('#taxon-liste').val(),
881
	var numNomSel = ($('#taxon-liste').val() == '?') ? $('#taxon').data('numNomSel') : $('#taxon-liste').val(),
881
		nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'),
882
		nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'),
882
		taxon = ($('#taxon-liste').val() == '?') ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
883
		taxon = ($('#taxon-liste').val() == '?') ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
883
		referentiel = (numNomSel == undefined) ? '' : '['+NOM_SCI_PROJET+']',
884
		referentiel = (numNomSel == undefined) ? '' : '['+NOM_SCI_PROJET+']',
884
		commune = $('#commune-nom').text(),
885
		commune = $('#commune-nom').text(),
885
		codeInsee = $('#commune-code-insee').text(),
886
		codeInsee = $('#commune-code-insee').text(),
886
		station = $('input[name="adresse"]').val(),
887
		station = $('input[name="adresse"]').val(),
887
		lat = $('input[name="latitude"]').val(),
888
		lat = $('input[name="latitude"]').val(),
888
		lng = $('input[name="longitude"]').val(),
889
		lng = $('input[name="longitude"]').val(),
889
		date = $('#date').val(),
890
		date = $('#date').val(),
890
		milieux = getMilieux(),
891
		milieux = getMilieux(),
891
		notes = (nomSpecial ? taxons[numNomSel]['nom_fr'] + ".<br />" : '') + $('#notes').val();
892
		notes = (nomSpecial ? taxons[numNomSel]['nom_fr'] + ".<br />" : '') + $('#notes').val();
892
	
893
	
893
	$('#liste-obs').prepend(
894
	$('#liste-obs').prepend(
894
		'<div id="obs'+obsNbre+'" class="row-fluid obs obs'+obsNbre+'">' +
895
		'<div id="obs'+obsNbre+'" class="row-fluid obs obs'+obsNbre+'">' +
895
			'<div class="span12">' +
896
			'<div class="span12">' +
896
				'<div class="well">' +
897
				'<div class="well">' +
897
					'<div class="obs-action pull-right has-tooltip" data-placement="bottom" ' +
898
					'<div class="obs-action pull-right has-tooltip" data-placement="bottom" ' +
898
						'title="Supprimer cette observation de la liste à transmettre">' +
899
						'title="Supprimer cette observation de la liste à transmettre">' +
899
						'<button class="btn btn-danger supprimer-obs" value="'+obsNbre+'" title="'+obsNbre+'">' +
900
						'<button class="btn btn-danger supprimer-obs" value="'+obsNbre+'" title="'+obsNbre+'">' +
900
							'<i class="icon-trash icon-white"></i>' +
901
							'<i class="icon-trash icon-white"></i>' +
901
						'</button>' +
902
						'</button>' +
902
					'</div> ' +	
903
					'</div> ' +	
903
					'<div class="row-fluid">' +	
904
					'<div class="row-fluid">' +	
904
						'<div class="span2 obs-miniatures">' +
905
						'<div class="span2 obs-miniatures">' +
905
							ajouterImgMiniatureAuTransfert() +
906
							ajouterImgMiniatureAuTransfert() +
906
						'</div>'+
907
						'</div>'+
907
						'<div class="span7">' +
908
						'<div class="span7">' +
908
							'<ul class="unstyled">' +
909
							'<ul class="unstyled">' +
909
								'<li>'+
910
								'<li>'+
910
									'<span class="nom-sci">' + taxon + '</span> ' +
911
									'<span class="nom-sci">' + taxon + '</span> ' +
911
									formaterNumNomSel(numNomSel) +
912
									formaterNumNomSel(numNomSel) +
912
									' observé à <br />' +
913
									' observé à <br />' +
913
									'<span class="commune">' + commune + '</span> ' +
914
									'<span class="commune">' + commune + '</span> ' +
914
									'(' + codeInsee + '), ' +
915
									'(' + codeInsee + '), ' +
915
									'<span class="station">' + station + '</span><br /> ' +
916
									'<span class="station">' + station + '</span><br /> ' +
916
									' le ' +
917
									' le ' +
917
									'<span class="date">' + date + '</span>' +
918
									'<span class="date">' + date + '</span>' +
918
								'</li>' +
919
								'</li>' +
919
								'<li>' +
920
								'<li>' +
920
									'Milieux : ' + milieux + ' ' + ' ; ' +
921
									'Milieux : ' + milieux + ' ' + ' ; ' +
921
								'</li>' +
922
								'</li>' +
922
								'<li>' +
923
								'<li>' +
923
									'Notes : ' + notes + 
924
									'Notes : ' + notes + 
924
								'</li>' +
925
								'</li>' +
925
							'</ul>' +
926
							'</ul>' +
926
						'</div>' +
927
						'</div>' +
927
					'</div>' +
928
					'</div>' +
928
				'</div>' +
929
				'</div>' +
929
			'</div>'+
930
			'</div>'+
930
		'</div>');
931
		'</div>');
931
}
932
}
932
 
933
 
933
function getMilieux() {
934
function getMilieux() {
934
	var milieuxStr = '',
935
	var milieuxStr = '',
935
		milieux = [];
936
		milieux = [];
936
	$('.cb-milieux:checked').each(function() {
937
	$('.cb-milieux:checked').each(function() {
937
		milieux.push($(this).val());
938
		milieux.push($(this).val());
938
	});
939
	});
939
	
940
	
940
	milieuxStr = Array.prototype.slice.call(milieux).join(', ');
941
	milieuxStr = Array.prototype.slice.call(milieux).join(', ');
941
	return milieuxStr;
942
	return milieuxStr;
942
}
943
}
943
 
944
 
944
function ajouterImgMiniatureAuTransfert() {
945
function ajouterImgMiniatureAuTransfert() {
945
	var html = '',
946
	var html = '',
946
		miniatures = '',
947
		miniatures = '',
947
		indicateurs = '',
948
		indicateurs = '',
948
		premiere = true,
949
		premiere = true,
949
		numero = 1;
950
		numero = 1;
950
	if ($('#miniatures img').length == 0) {
951
	if ($('#miniatures img').length == 0) {
951
		html = '<img class="miniature" alt="Aucune photo"src="'+PAS_DE_PHOTO_ICONE_URL+'" />';
952
		html = '<img class="miniature" alt="Aucune photo"src="'+PAS_DE_PHOTO_ICONE_URL+'" />';
952
	} else if ($('#miniatures img').length >= 1) {
953
	} else if ($('#miniatures img').length >= 1) {
953
		$('#miniatures img').each(function() {
954
		$('#miniatures img').each(function() {
954
			var visible = premiere ? 'miniature-selectionnee' : 'miniature-cachee',
955
			var visible = premiere ? 'miniature-selectionnee' : 'miniature-cachee',
955
				css = $(this).hasClass('b64') ? 'miniature b64' : 'miniature',
956
				css = $(this).hasClass('b64') ? 'miniature b64' : 'miniature',
956
				src = $(this).attr('src'),
957
				src = $(this).attr('src'),
957
				alt = $(this).attr('alt');
958
				alt = $(this).attr('alt');
958
			
959
			
959
			var miniature = '<img class="'+css+' '+visible+'"  alt="'+alt+'"src="'+src+'" />';
960
			var miniature = '<img class="'+css+' '+visible+'"  alt="'+alt+'"src="'+src+'" />';
960
			miniatures += miniature;
961
			miniatures += miniature;
961
			
962
			
962
			var indicateurActif = premiere ? 'active' : '';
963
			var indicateurActif = premiere ? 'active' : '';
963
			var indicateur = '<li class="' + indicateurActif + '" data-numero="' + numero++ + '"></li>';
964
			var indicateur = '<li class="' + indicateurActif + '" data-numero="' + numero++ + '"></li>';
964
			indicateurs += indicateur;
965
			indicateurs += indicateur;
965
		
966
		
966
			premiere = false;
967
			premiere = false;
967
		});
968
		});
968
		
969
		
969
		if ($('#miniatures img').length == 1) {
970
		if ($('#miniatures img').length == 1) {
970
			html = miniatures;
971
			html = miniatures;
971
		} else {
972
		} else {
972
			html = 
973
			html = 
973
				'<div class="defilement">' +
974
				'<div class="defilement">' +
974
					miniatures +
975
					miniatures +
975
					'<a class="defilement-control-zone gauche">' +
976
					'<a class="defilement-control-zone gauche">' +
976
					'	<span class="defilement-control gauche hidden">&#60;</span>' +
977
					'	<span class="defilement-control gauche hidden">&#60;</span>' +
977
					'</a>' +
978
					'</a>' +
978
					'<a class="defilement-control-zone droite">' +
979
					'<a class="defilement-control-zone droite">' +
979
					'	<span class="defilement-control droite hidden">&#62;</span>' +
980
					'	<span class="defilement-control droite hidden">&#62;</span>' +
980
					'</a>' +
981
					'</a>' +
981
					'<ol class="defilement-indicateurs">' + indicateurs + '</ol>' +
982
					'<ol class="defilement-indicateurs">' + indicateurs + '</ol>' +
982
				'</div>';
983
				'</div>';
983
		}
984
		}
984
	}
985
	}
985
	return html;
986
	return html;
986
}
987
}
987
 
988
 
988
function defilerMiniatures(element) {
989
function defilerMiniatures(element) {
989
	var miniatureSelectionne = element.siblings('img.miniature-selectionnee');
990
	var miniatureSelectionne = element.siblings('img.miniature-selectionnee');
990
	miniatureSelectionne.removeClass('miniature-selectionnee').addClass('miniature-cachee');
991
	miniatureSelectionne.removeClass('miniature-selectionnee').addClass('miniature-cachee');
991
	var miniatureAffichee = miniatureSelectionne;
992
	var miniatureAffichee = miniatureSelectionne;
992
	
993
	
993
	var indicateurActif = element.parent().find('.defilement-indicateurs .active');
994
	var indicateurActif = element.parent().find('.defilement-indicateurs .active');
994
	indicateurActif.removeClass('active');
995
	indicateurActif.removeClass('active');
995
	
996
	
996
	if (element.hasClass('defilement-control-zone') && element.hasClass('gauche')) {
997
	if (element.hasClass('defilement-control-zone') && element.hasClass('gauche')) {
997
		if (miniatureSelectionne.prev('.miniature').length != 0) {
998
		if (miniatureSelectionne.prev('.miniature').length != 0) {
998
			miniatureAffichee = miniatureSelectionne.prev('.miniature');
999
			miniatureAffichee = miniatureSelectionne.prev('.miniature');
999
			indicateurActif.prev().addClass('active');
1000
			indicateurActif.prev().addClass('active');
1000
		} else {
1001
		} else {
1001
			miniatureAffichee = miniatureSelectionne.siblings('.miniature').last();
1002
			miniatureAffichee = miniatureSelectionne.siblings('.miniature').last();
1002
			indicateurActif.siblings().last().addClass('active');
1003
			indicateurActif.siblings().last().addClass('active');
1003
		}
1004
		}
1004
	} else {
1005
	} else {
1005
		if (miniatureSelectionne.next('.miniature').length != 0) {
1006
		if (miniatureSelectionne.next('.miniature').length != 0) {
1006
			miniatureAffichee = miniatureSelectionne.next('.miniature');
1007
			miniatureAffichee = miniatureSelectionne.next('.miniature');
1007
			indicateurActif.next().addClass('active');
1008
			indicateurActif.next().addClass('active');
1008
		} else {
1009
		} else {
1009
			miniatureAffichee = miniatureSelectionne.siblings('.miniature').first();
1010
			miniatureAffichee = miniatureSelectionne.siblings('.miniature').first();
1010
			indicateurActif.siblings().first().addClass('active');
1011
			indicateurActif.siblings().first().addClass('active');
1011
		}
1012
		}
1012
	}
1013
	}
1013
	miniatureAffichee.addClass('miniature-selectionnee').removeClass('miniature-cachee');
1014
	miniatureAffichee.addClass('miniature-selectionnee').removeClass('miniature-cachee');
1014
}
1015
}
1015
 
1016
 
1016
function formaterNumNomSel(numNomSel) {
1017
function formaterNumNomSel(numNomSel) {
1017
	var nn = '';
1018
	var nn = '';
1018
	if (numNomSel == undefined) {
1019
	if (numNomSel == undefined) {
1019
		nn = '<span class="alert-error">[non lié au référentiel]</span>';
1020
		nn = '<span class="alert-error">[non lié au référentiel]</span>';
1020
	} else {
1021
	} else {
1021
		nn = '<span class="nn">[nn'+numNomSel+']</span>';
1022
		nn = '<span class="nn">[nn'+numNomSel+']</span>';
1022
	}
1023
	}
1023
	return nn;
1024
	return nn;
1024
}
1025
}
1025
 
1026
 
1026
function surChangementReferentiel() {
1027
function surChangementReferentiel() {
1027
	NOM_SCI_PROJET = $('#referentiel').val();
1028
	NOM_SCI_PROJET = $('#referentiel').val();
1028
	NOM_SCI_REFERENTIEL = NOM_SCI_PROJET+':'+PROJETS_VERSIONS[NOM_SCI_PROJET];
1029
	NOM_SCI_REFERENTIEL = NOM_SCI_PROJET+':'+PROJETS_VERSIONS[NOM_SCI_PROJET];
1029
	$('#taxon').val('');
1030
	$('#taxon').val('');
1030
}
1031
}
1031
 
1032
 
1032
function surChangementNbreObs() {
1033
function surChangementNbreObs() {
1033
	if (obsNbre == 0) {
1034
	if (obsNbre == 0) {
1034
		$('#transmettre-obs').attr('disabled', 'disabled');
1035
		$('#transmettre-obs').attr('disabled', 'disabled');
1035
		$('#ajouter-obs').removeAttr('disabled');
1036
		$('#ajouter-obs').removeAttr('disabled');
1036
		$('#zone-liste-obs').addClass('hidden');
1037
		$('#zone-liste-obs').addClass('hidden');
1037
	} else {
1038
	} else {
1038
		$('#zone-liste-obs').removeClass('hidden');
1039
		$('#zone-liste-obs').removeClass('hidden');
1039
		
1040
		
1040
		if (obsNbre > 0 && obsNbre < OBS_MAX_NBRE) {
1041
		if (obsNbre > 0 && obsNbre < OBS_MAX_NBRE) {
1041
			$('#transmettre-obs').removeAttr('disabled');
1042
			$('#transmettre-obs').removeAttr('disabled');
1042
			$('#ajouter-obs').removeAttr('disabled');
1043
			$('#ajouter-obs').removeAttr('disabled');
1043
		} else if (obsNbre >= OBS_MAX_NBRE) {
1044
		} else if (obsNbre >= OBS_MAX_NBRE) {
1044
			$('#ajouter-obs').attr('disabled', 'disabled');
1045
			$('#ajouter-obs').attr('disabled', 'disabled');
1045
			afficherPanneau('#dialogue-bloquer-creer-obs');
1046
			afficherPanneau('#dialogue-bloquer-creer-obs');
1046
		}
1047
		}
1047
	}
1048
	}
1048
}
1049
}
1049
 
1050
 
1050
function supprimerObs() {
1051
function supprimerObs() {
1051
	var obsId = $(this).val();
1052
	var obsId = $(this).val();
1052
	// Problème avec IE 6 et 7
1053
	// Problème avec IE 6 et 7
1053
	if (obsId == 'Supprimer') {
1054
	if (obsId == 'Supprimer') {
1054
		obsId = $(this).attr('title');
1055
		obsId = $(this).attr('title');
1055
	}
1056
	}
1056
	obsNbre = obsNbre - 1;
1057
	obsNbre = obsNbre - 1;
1057
	$('.obs-nbre').text(obsNbre);
1058
	$('.obs-nbre').text(obsNbre);
1058
	$('.obs-nbre').triggerHandler('changement');
1059
	$('.obs-nbre').triggerHandler('changement');
1059
	
1060
	
1060
	$('.obs'+obsId).remove();
1061
	$('.obs'+obsId).remove();
1061
	$('#liste-obs').removeData('obsId' + obsId);
1062
	$('#liste-obs').removeData('obsId' + obsId);
1062
}
1063
}
1063
 
1064
 
1064
function initialiserObs() {
1065
function initialiserObs() {
1065
	obsNbre = 0;
1066
	obsNbre = 0;
1066
	$('.obs-nbre').text(obsNbre);
1067
	$('.obs-nbre').text(obsNbre);
1067
	$('.obs-nbre').triggerHandler('changement');
1068
	$('.obs-nbre').triggerHandler('changement');
1068
	$('#liste-obs').removeData();
1069
	$('#liste-obs').removeData();
1069
	$('.obs').remove();
1070
	$('.obs').remove();
1070
	$('#dialogue-bloquer-creer-obs').hide();
1071
	$('#dialogue-bloquer-creer-obs').hide();
1071
}
1072
}
1072
 
1073
 
1073
function stockerObsData() {
1074
function stockerObsData() {
1074
	var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false;
1075
	var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false;
1075
		nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'),
1076
		nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'),
1076
		numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val(),
1077
		numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val(),
1077
		nomSel = nomHorsListe ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
1078
		nomSel = nomHorsListe ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
1078
		nomRet = nomHorsListe ? $('#taxon').data('nomRet') : taxons[numNomSel]['nom_ret'],
1079
		nomRet = nomHorsListe ? $('#taxon').data('nomRet') : taxons[numNomSel]['nom_ret'],
1079
		numNomRet = nomHorsListe ? $('#taxon').data('numNomRet') : taxons[numNomSel]['num_nom_ret'],
1080
		numNomRet = nomHorsListe ? $('#taxon').data('numNomRet') : taxons[numNomSel]['num_nom_ret'],
1080
		numTaxon = nomHorsListe ? $('#taxon').data('nt') : taxons[numNomSel]['num_taxon'],
1081
		numTaxon = nomHorsListe ? $('#taxon').data('nt') : taxons[numNomSel]['num_taxon'],
1081
		famille = nomHorsListe ? $('#taxon').data('famille') : taxons[numNomSel]['famille'],
1082
		famille = nomHorsListe ? $('#taxon').data('famille') : taxons[numNomSel]['famille'],
1082
		referentiel = (numNomSel == undefined) ? '' : NOM_SCI_REFERENTIEL,
1083
		referentiel = (numNomSel == undefined) ? '' : NOM_SCI_REFERENTIEL,
1083
		notes = (nomSpecial ? taxons[numNomSel]['nom_fr'] + '. ' : '') + $('#notes').val();
1084
		notes = (nomSpecial ? taxons[numNomSel]['nom_fr'] + '. ' : '') + $('#notes').val();
1084
	
1085
	
1085
	$('#liste-obs').data('obsId'+obsNbre, {
1086
	$('#liste-obs').data('obsId'+obsNbre, {
1086
		'date': $('#date').val(), 
1087
		'date': $('#date').val(), 
1087
		'notes': notes,
1088
		'notes': notes,
1088
		
1089
		
1089
		'station': $('input[name="adresse"]').val(),
1090
		'station': $('input[name="adresse"]').val(),
1090
		'latitude': $('#latitude').val(),
1091
		'latitude': $('#latitude').val(),
1091
		'longitude': $('#longitude').val(),
1092
		'longitude': $('#longitude').val(),
1092
		'commune_nom': $('#commune-nom').text(),
1093
		'commune_nom': $('#commune-nom').text(),
1093
		'commune_code_insee': $('#commune-code-insee').text(),
1094
		'commune_code_insee': $('#commune-code-insee').text(),
1094
		
1095
		
1095
		'nom_sel': nomSel,
1096
		'nom_sel': nomSel,
1096
		'num_nom_sel': numNomSel,
1097
		'num_nom_sel': numNomSel,
1097
		'nom_ret': nomRet,
1098
		'nom_ret': nomRet,
1098
		'num_nom_ret': numNomRet,
1099
		'num_nom_ret': numNomRet,
1099
		'num_taxon': numTaxon,
1100
		'num_taxon': numTaxon,
1100
		'famille': famille,
1101
		'famille': famille,
1101
		'referentiel': referentiel,
1102
		'referentiel': referentiel,
1102
		
1103
		
1103
		'milieu': getMilieux(),
1104
		'milieu': getMilieux(),
1104
		
1105
		
1105
		// Ajout des champs images
1106
		// Ajout des champs images
1106
		'image_nom': getNomsImgsOriginales(),
1107
		'image_nom': getNomsImgsOriginales(),
1107
		
1108
		
1108
		// Ajout des champs étendus de l'obs
1109
		// Ajout des champs étendus de l'obs
1109
		'obs_etendue': getObsChpEtendus()
1110
		'obs_etendue': getObsChpEtendus()
1110
	});
1111
	});
1111
	if (DEBUG) {
1112
	if (DEBUG) {
1112
		console.log($('#liste-obs').data('obsId'+obsNbre));
1113
		console.log($('#liste-obs').data('obsId'+obsNbre));
1113
	}
1114
	}
1114
}
1115
}
1115
 
1116
 
1116
function getNomsImgsOriginales() {
1117
function getNomsImgsOriginales() {
1117
	var noms = new Array();
1118
	var noms = new Array();
1118
	$('.miniature-img').each(function() {
1119
	$('.miniature-img').each(function() {
1119
		noms.push($(this).attr('alt'));
1120
		noms.push($(this).attr('alt'));
1120
	});
1121
	});
1121
	return noms;
1122
	return noms;
1122
}
1123
}
1123
 
1124
 
1124
function getObsChpEtendus() {
1125
function getObsChpEtendus() {
1125
	var champs = [];
1126
	var champs = [];
1126
	if (latLngDeb != undefined) {
1127
	if (latLngDeb != undefined) {
1127
		var latitudeDebutRue = {cle: 'latitudeDebutRue', label: 'Latitude du début de la rue', valeur: latLngDeb.lat().toFixed(5)};
1128
		var latitudeDebutRue = {cle: 'latitudeDebutRue', label: 'Latitude du début de la rue', valeur: latLngDeb.lat().toFixed(5)};
1128
		champs.push(latitudeDebutRue);
1129
		champs.push(latitudeDebutRue);
1129
		var longitudeDebutRue = {cle: 'longitudeDebutRue', label: 'Longitude du début de la rue', valeur: latLngDeb.lng().toFixed(5)};
1130
		var longitudeDebutRue = {cle: 'longitudeDebutRue', label: 'Longitude du début de la rue', valeur: latLngDeb.lng().toFixed(5)};
1130
		champs.push(longitudeDebutRue);
1131
		champs.push(longitudeDebutRue);
1131
	}
1132
	}
1132
	if (latLngFin != undefined) {
1133
	if (latLngFin != undefined) {
1133
		var latitudeFinRue = {cle: 'latitudeFinRue', label: 'Latitude de fin de la rue', valeur: latLngFin.lat().toFixed(5)};
1134
		var latitudeFinRue = {cle: 'latitudeFinRue', label: 'Latitude de fin de la rue', valeur: latLngFin.lat().toFixed(5)};
1134
		champs.push(latitudeFinRue);
1135
		champs.push(latitudeFinRue);
1135
		var longitudeFinRue = {cle: 'longitudeFinRue', label: 'Longitude de fin de la rue', valeur: latLngFin.lng().toFixed(5)};
1136
		var longitudeFinRue = {cle: 'longitudeFinRue', label: 'Longitude de fin de la rue', valeur: latLngFin.lng().toFixed(5)};
1136
		champs.push(longitudeFinRue);
1137
		champs.push(longitudeFinRue);
1137
	}
1138
	}
1138
	
1139
	
1139
	$('.obs-chp-etendu').each(function() {
1140
	$('.obs-chp-etendu').each(function() {
1140
		var valeur = $(this).val(),
1141
		var valeur = $(this).val(),
1141
			cle = $(this).attr('name'),
1142
			cle = $(this).attr('name'),
1142
			label = $(this).data('label');
1143
			label = $(this).data('label');
1143
		if (valeur != '') {
1144
		if (valeur != '') {
1144
			var chpEtendu = {cle: cle, label: label, valeur: valeur};
1145
			var chpEtendu = {cle: cle, label: label, valeur: valeur};
1145
			champs.push(chpEtendu);
1146
			champs.push(chpEtendu);
1146
		}
1147
		}
1147
	});
1148
	});
1148
	return champs;
1149
	return champs;
1149
}
1150
}
1150
 
1151
 
1151
//+----------------------------------------------------------------------------------------------------------+
1152
//+----------------------------------------------------------------------------------------------------------+
1152
//TRANSFERER OBS : envoie des obs au CEL => OK
1153
//TRANSFERER OBS : envoie des obs au CEL => OK
1153
 
1154
 
1154
function transmettreObs() {
1155
function transmettreObs() {
1155
	var observations = $('#liste-obs').data();
1156
	var observations = $('#liste-obs').data();
1156
	
1157
	
1157
	if (observations == undefined || jQuery.isEmptyObject(observations)) {
1158
	if (observations == undefined || jQuery.isEmptyObject(observations)) {
1158
		afficherPanneau('#dialogue-zero-obs');
1159
		afficherPanneau('#dialogue-zero-obs');
1159
	} else {
1160
	} else {
1160
		observations['projet'] = TAG_PROJET;
1161
		observations['projet'] = TAG_PROJET;
1161
		observations['tag-obs'] = TAG_OBS;
1162
		observations['tag-obs'] = TAG_OBS;
1162
		observations['tag-img'] = TAG_IMG;
1163
		observations['tag-img'] = TAG_IMG;
1163
		
1164
		
1164
		var utilisateur = new Object();
1165
		var utilisateur = new Object();
1165
		utilisateur.id_utilisateur = $('#id_utilisateur').val();
1166
		utilisateur.id_utilisateur = $('#id_utilisateur').val();
1166
		utilisateur.prenom = $('#prenom').val();
1167
		utilisateur.prenom = $('#prenom').val();
1167
		utilisateur.nom = $('#nom').val();
1168
		utilisateur.nom = $('#nom').val();
1168
		utilisateur.courriel = $('#courriel').val();
1169
		utilisateur.courriel = $('#courriel').val();
1169
		observations['utilisateur'] = utilisateur;
1170
		observations['utilisateur'] = utilisateur;
1170
		
1171
		
1171
		if (DEBUG) {
1172
		if (DEBUG) {
1172
			console.log(observations);
1173
			console.log(observations);
1173
		}
1174
		}
1174
		envoyerObsAuCel(observations);
1175
		envoyerObsAuCel(observations);
1175
	}
1176
	}
1176
	return false;
1177
	return false;
1177
}
1178
}
1178
 
1179
 
1179
function envoyerObsAuCel(observations) {
1180
function envoyerObsAuCel(observations) {
1180
	var erreurMsg = '',
1181
	var erreurMsg = '',
1181
		debugNonJson = '';
1182
		debugNonJson = '';
1182
	$.ajax({
1183
	$.ajax({
1183
		url: SERVICE_SAISIE_URL,
1184
		url: SERVICE_SAISIE_URL,
1184
		type: 'POST',
1185
		type: 'POST',
1185
		data: observations,
1186
		data: observations,
1186
		dataType: 'json',
1187
		dataType: 'json',
1187
		beforeSend: function() {
1188
		beforeSend: function() {
1188
			$('#dialogue-obs-transaction-ko').hide();
1189
			$('#dialogue-obs-transaction-ko').hide();
1189
			$('#dialogue-obs-transaction-ok').hide();
1190
			$('#dialogue-obs-transaction-ok').hide();
1190
			$('.alert-txt').empty();
1191
			$('.alert-txt').empty();
1191
			$('#chargement').show();
1192
			$('#chargement').show();
1192
		},
1193
		},
1193
		success: function(data, textStatus, jqXHR) {
1194
		success: function(data, textStatus, jqXHR) {
1194
			$('#dialogue-obs-transaction-ok .alert-txt').append($('#tpl-transmission-ok').clone().html());
1195
			$('#dialogue-obs-transaction-ok .alert-txt').append($('#tpl-transmission-ok').clone().html());
1195
			supprimerMiniatures();
1196
			supprimerMiniatures();
1196
		},
1197
		},
1197
		statusCode: {
1198
		statusCode: {
1198
			500: function(jqXHR, textStatus, errorThrown) {
1199
			500: function(jqXHR, textStatus, errorThrown) {
1199
				erreurMsg += "Erreur 500 :\ntype : " + textStatus + ' ' + errorThrown + "\n";
1200
				erreurMsg += "Erreur 500 :\ntype : " + textStatus + ' ' + errorThrown + "\n";
1200
			}
1201
			}
1201
		},
1202
		},
1202
		error: function(jqXHR, textStatus, errorThrown) {
1203
		error: function(jqXHR, textStatus, errorThrown) {
1203
			erreurMsg += "Erreur Ajax :\ntype : " + textStatus + ' ' + errorThrown + "\n";
1204
			erreurMsg += "Erreur Ajax :\ntype : " + textStatus + ' ' + errorThrown + "\n";
1204
			try {
1205
			try {
1205
				reponse = jQuery.parseJSON(jqXHR.responseText);
1206
				reponse = jQuery.parseJSON(jqXHR.responseText);
1206
				if (reponse != null) {
1207
				if (reponse != null) {
1207
					$.each(reponse, function (cle, valeur) {
1208
					$.each(reponse, function (cle, valeur) {
1208
						erreurMsg += valeur + "\n";
1209
						erreurMsg += valeur + "\n";
1209
					});
1210
					});
1210
				}
1211
				}
1211
			} catch(e) {
1212
			} catch(e) {
1212
				erreurMsg += "L'erreur n'est pas en JSON.";
1213
				erreurMsg += "L'erreur n'est pas en JSON.";
1213
				debugNonJson = jqXHR.responseText;
1214
				debugNonJson = jqXHR.responseText;
1214
			}
1215
			}
1215
		},
1216
		},
1216
		complete: function(jqXHR, textStatus) {
1217
		complete: function(jqXHR, textStatus) {
1217
			$('#chargement').hide();
1218
			$('#chargement').hide();
1218
			var debugMsg = extraireEnteteDebug(jqXHR);
1219
			var debugMsg = extraireEnteteDebug(jqXHR);
1219
			
1220
			
1220
			if (erreurMsg != '') {
1221
			if (erreurMsg != '') {
1221
				if (DEBUG) {
1222
				if (DEBUG) {
1222
					$('#dialogue-obs-transaction-ko .alert-txt').append('<pre class="msg-erreur">' + erreurMsg + '</pre>');
1223
					$('#dialogue-obs-transaction-ko .alert-txt').append('<pre class="msg-erreur">' + erreurMsg + '</pre>');
1223
					$('#dialogue-obs-transaction-ko .alert-txt').append('<pre class="msg-debug">Débogage : ' + debugNonJson + debugMsg + '</pre>');
1224
					$('#dialogue-obs-transaction-ko .alert-txt').append('<pre class="msg-debug">Débogage : ' + debugNonJson + debugMsg + '</pre>');
1224
				}
1225
				}
1225
				var hrefCourriel = 'mailto:cel_remarques@tela-botanica.org?' + 
1226
				var hrefCourriel = 'mailto:cel_remarques@tela-botanica.org?' + 
1226
					'subject=Disfonctionnement du widget de saisie ' + TAG_PROJET + 
1227
					'subject=Disfonctionnement du widget de saisie ' + TAG_PROJET + 
1227
					'&body=' + erreurMsg + "\nDébogage :\n" + debugMsg + debugNonJson;
1228
					'&body=' + erreurMsg + "\nDébogage :\n" + debugMsg + debugNonJson;
1228
				
1229
				
1229
				$('#dialogue-obs-transaction-ko .alert-txt').append($('#tpl-transmission-ko').clone()
1230
				$('#dialogue-obs-transaction-ko .alert-txt').append($('#tpl-transmission-ko').clone()
1230
					.find('.courriel-erreur')
1231
					.find('.courriel-erreur')
1231
					.attr('href', hrefCourriel)
1232
					.attr('href', hrefCourriel)
1232
					.end()
1233
					.end()
1233
					.html());
1234
					.html());
1234
				$('#dialogue-obs-transaction-ko').show();
1235
				$('#dialogue-obs-transaction-ko').show();
1235
			} else {
1236
			} else {
1236
				if (DEBUG) {
1237
				if (DEBUG) {
1237
					$('#dialogue-obs-transaction-ok .alert-txt').append('<pre class="msg-debug">Débogage : ' + debugMsg + debugNonJson + '</pre>');
1238
					$('#dialogue-obs-transaction-ok .alert-txt').append('<pre class="msg-debug">Débogage : ' + debugMsg + debugNonJson + '</pre>');
1238
				}
1239
				}
1239
				$('#dialogue-obs-transaction-ok').show();
1240
				$('#dialogue-obs-transaction-ok').show();
1240
			}
1241
			}
1241
			initialiserObs();
1242
			initialiserObs();
1242
		}
1243
		}
1243
	});
1244
	});
1244
}
1245
}