Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 3049 Rev 3050
1
// Héritage !!
1
// Héritage !!
2
function WidgetSaisieBellesdemarue() {
2
function WidgetSaisieBellesdemarue() {
3
	this.taxons = {}; // utile ?
3
	this.taxons = {}; // utile ?
4
}
4
}
5
WidgetSaisieBellesdemarue.prototype = new WidgetSaisie();
5
WidgetSaisieBellesdemarue.prototype = new WidgetSaisie();
6
 
6
 
7
//surcharge
7
//surcharge
8
WidgetSaisieBellesdemarue.prototype.initialiserGoogleMap = function() {
8
WidgetSaisieBellesdemarue.prototype.initialiserGoogleMap = function() {
9
	// centrage
9
	// centrage
10
	this.latLng = new google.maps.LatLng(50.8504500, 4.3487800);// Bruxelles par défaut
10
	this.latLng = new google.maps.LatLng(50.8504500, 4.3487800);// Bruxelles par défaut
11
	
11
	
12
	var options = {
12
	var options = {
13
			zoom: 11, // avant : 16
13
			zoom: 11, // avant : 16
14
			center: this.latLng,
14
			center: this.latLng,
15
			mapTypeId: google.maps.MapTypeId.HYBRID,
15
			mapTypeId: google.maps.MapTypeId.HYBRID,
16
			mapTypeControlOptions: {
16
			mapTypeControlOptions: {
17
				mapTypeIds: ['OSM',
17
				mapTypeIds: ['OSM',
18
					google.maps.MapTypeId.ROADMAP,
18
					google.maps.MapTypeId.ROADMAP,
19
					google.maps.MapTypeId.HYBRID,
19
					google.maps.MapTypeId.HYBRID,
20
					google.maps.MapTypeId.SATELLITE,
20
					google.maps.MapTypeId.SATELLITE,
21
					google.maps.MapTypeId.TERRAIN]}
21
					google.maps.MapTypeId.TERRAIN]}
22
		};
22
		};
23
 
23
 
24
	// Ajout de la couche OSM à la carte
24
	// Ajout de la couche OSM à la carte
25
	osmMapType = new google.maps.ImageMapType({
25
	osmMapType = new google.maps.ImageMapType({
26
		getTileUrl: function(coord, zoom) {
26
		getTileUrl: function(coord, zoom) {
27
			return 'http://tile.openstreetmap.org/' + zoom + '/' + coord.x + '/' + coord.y + '.png';
27
			return 'http://tile.openstreetmap.org/' + zoom + '/' + coord.x + '/' + coord.y + '.png';
28
		},
28
		},
29
		tileSize: new google.maps.Size(256, 256),
29
		tileSize: new google.maps.Size(256, 256),
30
		isPng: true,
30
		isPng: true,
31
		alt: 'OpenStreetMap',
31
		alt: 'OpenStreetMap',
32
		name: 'OSM',
32
		name: 'OSM',
33
		maxZoom: 19
33
		maxZoom: 19
34
	});
34
	});
35
 
35
 
36
	// Création de la carte Google
36
	// Création de la carte Google
37
	this.map = new google.maps.Map(document.getElementById('map-canvas'), options); //affiche la google map dans la div map_canvas
37
	this.map = new google.maps.Map(document.getElementById('map-canvas'), options); //affiche la google map dans la div map_canvas
38
	this.map.mapTypes.set('OSM', osmMapType);
38
	this.map.mapTypes.set('OSM', osmMapType);
39
	
39
	
40
	// Création du Geocoder
40
	// Création du Geocoder
41
	this.geocoder = new google.maps.Geocoder();
41
	this.geocoder = new google.maps.Geocoder();
42
 
42
 
43
	// Marqueur google draggable
43
	// Marqueur google draggable
44
	this.marker = new google.maps.Marker({
44
	this.marker = new google.maps.Marker({
45
		map: this.map,
45
		map: this.map,
46
		draggable: true,
46
		draggable: true,
47
		title: 'Ma station',
47
		title: 'Ma station',
48
		icon: this.googleMapMarqueurUrl,
48
		icon: this.googleMapMarqueurUrl,
49
		position: this.latLng
49
		position: this.latLng
50
	});
50
	});
51
 
51
 
52
	this.initialiserMarker(this.latLng);
52
	this.initialiserMarker(this.latLng);
53
 
53
 
54
	// intéraction carte
54
	// intéraction carte
55
	$("#geolocaliser").on('click', this.geolocaliser.bind(this));
55
	$("#geolocaliser").on('click', this.geolocaliser.bind(this));
56
	google.maps.event.addListener(this.marker, 'dragend', this.surDeplacementMarker.bind(this));
56
	google.maps.event.addListener(this.marker, 'dragend', this.surDeplacementMarker.bind(this));
57
	google.maps.event.addListener(this.map, 'click', this.surClickDansCarte.bind(this));
57
	google.maps.event.addListener(this.map, 'click', this.surClickDansCarte.bind(this));
58
};
58
};
59
 
59
 
60
//surcharge
60
//surcharge
61
WidgetSaisieBellesdemarue.prototype.initForm = function() {
61
WidgetSaisieBellesdemarue.prototype.initForm = function() {
62
	// super() à la main - toute autre manière de faire est über-komplex
62
	// super() à la main - toute autre manière de faire est über-komplex
63
	WidgetSaisie.prototype.initForm.call(this);
63
	WidgetSaisie.prototype.initForm.call(this);
64
 
64
 
65
	this.surChangementTaxonListe();
65
	this.surChangementTaxonListe();
66
	$('#taxon-liste').on('change', this.surChangementTaxonListe);
66
	$('#taxon-liste').on('change', this.surChangementTaxonListe);
67
	if (this.debug) {
67
	if (this.debug) {
68
		console.log('Selected taxon:'+$('#taxon-liste option:selected').val());
68
		console.log('Selected taxon:'+$('#taxon-liste option:selected').val());
69
	}
69
	}
70
 
70
 
71
	// vidage du champ de recherche Google Maps
71
	// vidage du champ de recherche Google Maps
72
	$('#carte-recherche').val('');
72
	$('#carte-recherche').val('');
73
 
73
 
74
	// vidage du taxon précédemment saisi avec l'autocomplétion, sans quoi on
74
	// vidage du taxon précédemment saisi avec l'autocomplétion, sans quoi on
75
	// perd son nn
75
	// perd son nn
76
	$('#taxon').val('');
76
	$('#taxon').val('');
77
	$('#taxon').data('numNomSel', ''); // et on vide le nn précédent
77
	$('#taxon').data('numNomSel', ''); // et on vide le nn précédent
78
	this.surChangementValeurTaxon();
78
	this.surChangementValeurTaxon();
79
	$('#taxon-liste').on('blur', this.surChangementValeurTaxon);
79
	$('#taxon-liste').on('blur', this.surChangementValeurTaxon);
80
	$('#taxon').on('blur', this.surChangementValeurTaxon);
80
	$('#taxon').on('blur', this.surChangementValeurTaxon);
81
 
81
 
82
	this.surChangementMilieuListe();
82
	this.surChangementMilieuListe();
83
	$('#milieu').on('change', this.surChangementMilieuListe);
83
	$('#milieu').on('change', this.surChangementMilieuListe);
84
};
84
};
85
 
85
 
86
//surcharge
86
//surcharge
87
WidgetSaisieBellesdemarue.prototype.initEvts = function() {
87
WidgetSaisieBellesdemarue.prototype.initEvts = function() {
88
	var lthis = this;
88
	var lthis = this;
89
	// super() à la main - toute autre manière de faire est über-komplex
89
	// super() à la main - toute autre manière de faire est über-komplex
90
	WidgetSaisie.prototype.initEvts.call(this);
90
	WidgetSaisie.prototype.initEvts.call(this);
91
 
91
 
92
	$('.dropdown-menu input, .dropdown-menu label').on('click', function(event) {
92
	$('.dropdown-menu input, .dropdown-menu label').on('click', function(event) {
93
		event.stopPropagation();
93
		event.stopPropagation();
94
	});
94
	});
95
	$('#fichier').off(); // elever l'écouteur d'événements de base
95
	$('#fichier').off(); // elever l'écouteur d'événements de base
96
	$('#fichier').on('click change', function(event) {
96
	$('#fichier').on('click change', function(event) {
97
		if ($(this).val().length > 0) {
97
		if ($(this).val().length > 0) {
98
			arreter(event);
98
			arreter(event);
99
			var options = {
99
			var options = {
100
				success: lthis.afficherMiniature.bind(lthis), // post-submit callback
100
				success: lthis.afficherMiniature.bind(lthis), // post-submit callback
101
				dataType: 'xml', // 'xml', 'script', or 'json' (expected server response type)
101
				dataType: 'xml', // 'xml', 'script', or 'json' (expected server response type)
102
				resetForm: true // reset the form after successful submit
102
				resetForm: true // reset the form after successful submit
103
			};
103
			};
104
			$('#miniature').append(
104
			$('#miniature').append(
105
				'<img id="miniature-chargement" class="miniature" alt="chargement" src="'+ this.chargementImageIconeUrl +'"/>');
105
				'<img id="miniature-chargement" class="miniature" alt="chargement" src="'+ this.chargementImageIconeUrl +'"/>');
106
			$('#ajouter-obs').attr('disabled', 'disabled');
106
			$('#ajouter-obs').attr('disabled', 'disabled');
107
			if (lthis.verifierFormat($(this).val())) {
107
			if (lthis.verifierFormat($(this).val())) {
108
				$('#form-upload').ajaxSubmit(options);
108
				$('#form-upload').ajaxSubmit(options);
109
			} else {
109
			} else {
110
				$('#form-upload')[0].reset();
110
				$('#form-upload')[0].reset();
111
				window.alert("Le format de fichier n'est pas supporté, les formats acceptés sont "+	$('#fichier').attr('accept'));
111
				window.alert("Le format de fichier n'est pas supporté, les formats acceptés sont "+	$('#fichier').attr('accept'));
112
			}
112
			}
113
			return false;
113
			return false;
114
		}
114
		}
115
	});
115
	});
116
 
116
 
117
	$('.cb-milieux').on('click', function(event) {
117
	$('.cb-milieux').on('click', function(event) {
118
		$(this).valid();
118
		$(this).valid();
119
		event.stopPropagation();
119
		event.stopPropagation();
120
	});
120
	});
121
 
121
 
122
	// Défilement des photos
122
	// Défilement des photos
123
	$('body').on('click', '.defilement-control-zone', function(event) {
123
	$('body').on('click', '.defilement-control-zone', function(event) {
124
		lthis.defilerMiniatures($(this));
124
		lthis.defilerMiniatures($(this));
125
	});
125
	});
126
	$('body').on('mouseover', '.defilement-control-zone', function(event) {
126
	$('body').on('mouseover', '.defilement-control-zone', function(event) {
127
		$('.defilement-control', this).removeClass('hidden');
127
		$('.defilement-control', this).removeClass('hidden');
128
	});
128
	});
129
	$('body').on('mouseout', '.defilement-control-zone', function(event) {
129
	$('body').on('mouseout', '.defilement-control-zone', function(event) {
130
		$('.defilement-control', this).addClass('hidden');
130
		$('.defilement-control', this).addClass('hidden');
131
	});
131
	});
132
 
132
 
133
	$('#photo-placeholder').click(function(event) {
133
	$('#photo-placeholder').click(function(event) {
134
		$('#fichier').click();
134
		$('#fichier').click();
135
	});
135
	});
136
	$('#geolocaliser').on('click', this.geolocaliser.bind(this));
136
	$('#geolocaliser').on('click', this.geolocaliser.bind(this));
137
 
137
 
138
};
138
};
139
 
139
 
140
// surcharge
140
// surcharge
141
WidgetSaisieBellesdemarue.prototype.configurerFormValidator = function() {
141
WidgetSaisieBellesdemarue.prototype.configurerFormValidator = function() {
142
	$.validator.addMethod(
142
	$.validator.addMethod(
143
		'dateCel',
143
		'dateCel',
144
		function (value, element) {
144
		function (value, element) {
145
			return value == '' || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value));
145
			return value == '' || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value));
146
		},
146
		},
147
		'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.');
147
		'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.');
148
 
148
 
149
	$.extend($.validator.defaults, {
149
	$.extend($.validator.defaults, {
150
		ignore: [],// Forcer Jquery Validate à examiner les éléments avec en display:none;
150
		ignore: [],// Forcer Jquery Validate à examiner les éléments avec en display:none;
151
		highlight: function(element) {
151
		highlight: function(element) {
152
			$(element).closest('.control-group').removeClass('success').addClass('error');
152
			$(element).closest('.control-group').removeClass('success').addClass('error');
153
		},
153
		},
154
		success: function(element) {
154
		success: function(element) {
155
			element.text('OK!').addClass('valid');
155
			element.text('OK!').addClass('valid');
156
			element.closest('.control-group').removeClass('error').addClass('success');
156
			element.closest('.control-group').removeClass('error').addClass('success');
157
 
157
 
158
			if (element.attr('id') == 'taxon' && $('#taxon').val() != '') {
158
			if (element.attr('id') == 'taxon' && $('#taxon').val() != '') {
159
				// Si le taxon n'est pas lié au référentiel, on vide le data associé
159
				// Si le taxon n'est pas lié au référentiel, on vide le data associé
160
				if ($('#taxon').data('value') != $('#taxon').val()) {
160
				if ($('#taxon').data('value') != $('#taxon').val()) {
161
					$('#taxon').data('numNomSel', '');
161
					$('#taxon').data('numNomSel', '');
162
					$('#taxon').data('nomRet', '');
162
					$('#taxon').data('nomRet', '');
163
					$('#taxon').data('numNomRet', '');
163
					$('#taxon').data('numNomRet', '');
164
					$('#taxon').data('nt', '');
164
					$('#taxon').data('nt', '');
165
					$('#taxon').data('famille', '');
165
					$('#taxon').data('famille', '');
166
				}
166
				}
167
			}
167
			}
168
		}
168
		}
169
	});
169
	});
170
};
170
};
171
 
171
 
172
// surcharge
172
// surcharge
173
WidgetSaisieBellesdemarue.prototype.definirReglesFormValidator = function() {
173
WidgetSaisieBellesdemarue.prototype.definirReglesFormValidator = function() {
174
	$('#form-observateur').validate({
174
	$('#form-observateur').validate({
175
		rules: {
175
		rules: {
176
			courriel: {
176
			courriel: {
177
				required: true,
177
				required: true,
178
				email: true},
178
				email: true},
179
			courriel_confirmation: {
179
			courriel_confirmation: {
180
				equalTo: '#courriel'},
180
				equalTo: '#courriel'},
181
			prenom: {
181
			prenom: {
182
				required: true},
182
				required: true},
183
			nom: {
183
			nom: {
184
				required: true}
184
				required: true}
185
		}
185
		}
186
	});
186
	});
187
	$('#form-obs').validate({
187
	$('#form-obs').validate({
188
		rules: {
188
		rules: {
189
			latitude : {
189
			latitude : {
190
				required: true,
190
				required: true,
191
				range: [-90, 90]
191
				range: [-90, 90]
192
			},
192
			},
193
			longitude: {
193
			longitude: {
194
				required: true,
194
				required: true,
195
				range: [-180, 180]
195
				range: [-180, 180]
196
			},
196
			},
197
			date: {
197
			date: {
198
				required: true,
198
				required: true,
199
				'dateCel' : true
199
				'dateCel' : true
200
			},
200
			},
201
			'taxon-liste': {
201
			'taxon-liste': {
202
				required: true
202
				required: true
203
			},
203
			},
204
			milieu: {
204
			milieu: {
205
				required: true,
205
				required: true,
206
				minlength: 1
206
				minlength: 1
207
			},
207
			},
208
			certitude: {
208
			certitude: {
209
				required: true
209
				required: true
210
			}
210
			}
211
		},
211
		},
212
		errorPlacement: function(error, element) {
212
		errorPlacement: function(error, element) {
213
			if (element.attr('name') == 'date') {
213
			if (element.attr('name') == 'date') {
214
				element.parent('.input-prepend').after(error);
214
				element.parent('.input-prepend').after(error);
215
			} else if (element.attr('name') == 'certitude') {
215
			} else if (element.attr('name') == 'certitude') {
216
				error.insertAfter('#certitude-controls');
216
				error.insertAfter('#certitude-controls');
217
			} else if (element.attr('name') == 'longitude') { // on ignore "latitude" pour ne pas avoir de double erreur
217
			} else if (element.attr('name') == 'longitude') { // on ignore "latitude" pour ne pas avoir de double erreur
218
				error.insertBefore('#info-commune');
218
				error.insertBefore('#info-commune');
219
			} else {
219
			} else {
220
				error.insertAfter(element);
220
				error.insertAfter(element);
221
			}
221
			}
222
		}
222
		}
223
	});
223
	});
224
};
224
};
225
 
225
 
226
WidgetSaisieBellesdemarue.prototype.validerFormulaire = function() {
226
WidgetSaisieBellesdemarue.prototype.validerFormulaire = function() {
227
	$observateur = $("#form-observateur").valid();
227
	$observateur = $("#form-observateur").valid();
228
	$obs = $("#form-obs").valid();
228
	$obs = $("#form-obs").valid();
229
	return ($observateur == true && $obs == true) ? true : false;
229
	return ($observateur == true && $obs == true) ? true : false;
230
};
230
};
231
 
231
 
232
WidgetSaisieBellesdemarue.prototype.surChangementTaxonListe = function() {
232
WidgetSaisieBellesdemarue.prototype.surChangementTaxonListe = function() {
233
	if ($('#taxon-liste').val() === '?') {
233
	if ($('#taxon-liste').val() === '?') {
234
		$('#taxon-input-groupe').removeClass('hidden');
234
		$('#taxon-input-groupe').removeClass('hidden');
235
	} else {
235
	} else {
236
		$('#taxon').val(''); // on force à réutiliser l'autocomplétion pour avoir un nn
236
		$('#taxon').val(''); // on force à réutiliser l'autocomplétion pour avoir un nn
237
		$('#taxon').data('numNomSel', ''); // on vide le nn précédent
237
		$('#taxon').data('numNomSel', ''); // on vide le nn précédent
238
		$('#taxon-input-groupe').addClass('hidden');
238
		$('#taxon-input-groupe').addClass('hidden');
239
	}
239
	}
240
};
240
};
241
 
241
 
242
WidgetSaisieBellesdemarue.prototype.surChangementMilieuListe = function() {
242
WidgetSaisieBellesdemarue.prototype.surChangementMilieuListe = function() {
243
	if ($('#milieu').val() === 'autres') {
243
	if ($('#milieu').val() === 'autres') {
244
		$('#milieu-autre-input-group').removeClass('hidden');
244
		$('#milieu-autre-input-group').removeClass('hidden');
245
	} else {
245
	} else {
246
		$('#milieu-autre').val('');
246
		$('#milieu-autre').val('');
247
		$('#milieu-autre-input-group').addClass('hidden');
247
		$('#milieu-autre-input-group').addClass('hidden');
248
	}
248
	}
249
};
249
};
250
 
250
 
251
// trouve la commune (zone géo de niveau 8) sous le pointeur, en mode mondial
251
// trouve la commune (zone géo de niveau 8) sous le pointeur, en mode mondial
252
// et pas seulement français (service zoneAdmin et non nomCommune)
252
// et pas seulement français (service zoneAdmin et non nomCommune)
253
WidgetSaisieBellesdemarue.prototype.trouverCommune = function(pos) {
253
WidgetSaisieBellesdemarue.prototype.trouverCommune = function(pos) {
254
	if (this.latLng == null) { // tentative de protection contre le démon de Prémilhat
254
	if (this.latLng == null) { // tentative de protection contre le démon de Prémilhat
255
		return;
255
		return;
256
	}
256
	}
257
	var lthis = this;
257
	var lthis = this;
258
	$(function() {
258
	$(function() {
259
 
259
 
260
		var url_service = lthis.serviceNomCommuneUrl;
260
		var url_service = lthis.serviceNomCommuneUrl;
261
 
261
 
262
		var urlNomCommuneFormatee = url_service.replace('{lat}', pos.lat()).replace('{lon}', pos.lng());
262
		var urlNomCommuneFormatee = url_service.replace('{lat}', pos.lat()).replace('{lon}', pos.lng());
263
		$.ajax({
263
		$.ajax({
264
			url : urlNomCommuneFormatee,
264
			url : urlNomCommuneFormatee,
265
			type : "GET",
265
			type : "GET",
266
			dataType : "jsonp",
266
			dataType : "jsonp",
267
			beforeSend : function() {
267
			beforeSend : function() {
268
				$(".commune-info").empty();
268
				$(".commune-info").empty();
269
				$("#dialogue-erreur .alert-txt").empty();
269
				$("#dialogue-erreur .alert-txt").empty();
270
			},
270
			},
271
			success : function(data, textStatus, jqXHR) {
271
			success : function(data, textStatus, jqXHR) {
272
				$(".commune-info").empty();
272
				$(".commune-info").empty();
273
				// en Belgique et en France, en général 8 = patelin @TODO bancal
273
				// en Belgique et en France, en général 8 = patelin @TODO bancal
274
				if ("8" in data) {
274
				if ("8" in data) {
275
					$("#commune-nom").append(data["8"].intitule);
275
					$("#commune-nom").append(data["8"].intitule);
276
					$("#marqueur-commune").data('commune', {'nom' : data["8"].nom, 'codeInsee' : null});
276
					$("#marqueur-commune").data('commune', {'nom' : data["8"].nom, 'codeInsee' : null});
277
				}
277
				}
278
			},
278
			},
279
			statusCode : {
279
			statusCode : {
280
			    500 : function(jqXHR, textStatus, errorThrown) {
280
			    500 : function(jqXHR, textStatus, errorThrown) {
281
					if (this.debug) {
281
					if (this.debug) {
282
						$("#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>');
282
						$("#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>');
283
						reponse = jQuery.parseJSON(jqXHR.responseText);
283
						reponse = jQuery.parseJSON(jqXHR.responseText);
284
						var erreurMsg = "";
284
						var erreurMsg = "";
285
						if (reponse != null) {
285
						if (reponse != null) {
286
							$.each(reponse, function (cle, valeur) {
286
							$.each(reponse, function (cle, valeur) {
287
								erreurMsg += valeur + "<br />";
287
								erreurMsg += valeur + "<br />";
288
							});
288
							});
289
						}
289
						}
290
 
290
 
291
						$("#dialogue-erreur .alert-txt").append('<p class="msg-erreur">Erreur 500 : '+errorThrown+"<br />"+erreurMsg+'</p>');
291
						$("#dialogue-erreur .alert-txt").append('<p class="msg-erreur">Erreur 500 : '+errorThrown+"<br />"+erreurMsg+'</p>');
292
					}
292
					}
293
			    }
293
			    }
294
			},
294
			},
295
			error : function(jqXHR, textStatus, errorThrown) {
295
			error : function(jqXHR, textStatus, errorThrown) {
296
				if (this.debug) {
296
				if (this.debug) {
297
					$("#dialogue-erreur .alert-txt").append('<p class="msg">Une erreur Ajax est survenue lors de la recherche de la commune.</p>');
297
					$("#dialogue-erreur .alert-txt").append('<p class="msg">Une erreur Ajax est survenue lors de la recherche de la commune.</p>');
298
					reponse = jQuery.parseJSON(jqXHR.responseText);
298
					reponse = jQuery.parseJSON(jqXHR.responseText);
299
					var erreurMsg = "";
299
					var erreurMsg = "";
300
					if (reponse != null) {
300
					if (reponse != null) {
301
						$.each(reponse, function (cle, valeur) {
301
						$.each(reponse, function (cle, valeur) {
302
							erreurMsg += valeur + "<br />";
302
							erreurMsg += valeur + "<br />";
303
						});
303
						});
304
					}
304
					}
305
 
305
 
306
					$("#dialogue-erreur .alert-txt").append('<p class="msg-erreur">Erreur Ajax : '+errorThrown+' (type : '+textStatus+') <br />'+erreurMsg+'</p>');
306
					$("#dialogue-erreur .alert-txt").append('<p class="msg-erreur">Erreur Ajax : '+errorThrown+' (type : '+textStatus+') <br />'+erreurMsg+'</p>');
307
				}
307
				}
308
			},
308
			},
309
			complete : function(jqXHR, textStatus) {
309
			complete : function(jqXHR, textStatus) {
310
				var debugMsg = extraireEnteteDebug(jqXHR);
310
				var debugMsg = extraireEnteteDebug(jqXHR);
311
				if (debugMsg != '') {
311
				if (debugMsg != '') {
312
					if (this.debug) {
312
					if (this.debug) {
313
						$("#dialogue-erreur .alert-txt").append('<pre class="msg-debug msg">Débogage : '+debugMsg+'</pre>');
313
						$("#dialogue-erreur .alert-txt").append('<pre class="msg-debug msg">Débogage : '+debugMsg+'</pre>');
314
					}
314
					}
315
				}
315
				}
316
				if ($("#dialogue-erreur .msg").length > 0) {
316
				if ($("#dialogue-erreur .msg").length > 0) {
317
					$("#dialogue-erreur").show();
317
					$("#dialogue-erreur").show();
318
				}
318
				}
319
			}
319
			}
320
		});
320
		});
321
	});
321
	});
322
};
322
};
323
 
323
 
324
// lorsqu'on choisit un taxon dans la liste, ou qu'on en tape un à la main dans
324
// lorsqu'on choisit un taxon dans la liste, ou qu'on en tape un à la main dans
325
// le champ "autre espèce" (avec autocomplétion)
325
// le champ "autre espèce" (avec autocomplétion)
326
WidgetSaisieBellesdemarue.prototype.surChangementValeurTaxon = function() {
326
WidgetSaisieBellesdemarue.prototype.surChangementValeurTaxon = function() {
327
	var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false;
327
	var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false;
328
	var nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special');
328
	var nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special');
329
	var numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val();
329
	var numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val();
330
	var nomSel = nomHorsListe ? $('#taxon').val() : $('#taxon-liste option:selected').text().trim();
330
	var nomSel = nomHorsListe ? $('#taxon').val() : $('#taxon-liste option:selected').text().trim();
331
 
331
 
332
	// Un nom non valide entraine automatiquement une certitude "à déterminer"
332
	// Un nom non valide entraine automatiquement une certitude "à déterminer"
333
	if(nomSpecial || !numNomSel) {
333
	if(nomSpecial || !numNomSel) {
334
		$('#certitude-adeterminer').prop('checked', true);
334
		$('#certitude-adeterminer').prop('checked', true);
335
	} else {
335
	} else {
336
		$('#certitude-adeterminer').prop('checked', false);
336
		$('#certitude-adeterminer').prop('checked', false);
337
	}
337
	}
338
 
338
 
339
	// stockage temporaire des infos connues
339
	// stockage temporaire des infos connues
340
	$('#taxon').data('nn', numNomSel);
340
	$('#taxon').data('nn', numNomSel);
341
	$('#taxon').data('ns', nomSel);
341
	$('#taxon').data('ns', nomSel);
342
};
342
};
343
 
343
 
344
 
344
 
345
// surcharge
345
// surcharge
346
WidgetSaisieBellesdemarue.prototype.ajouterObs = function() {
346
WidgetSaisieBellesdemarue.prototype.ajouterObs = function() {
347
	// Fermeture automatique des dialogue de transmission de données
347
	// Fermeture automatique des dialogue de transmission de données
348
	$('#dialogue-obs-transaction-ko').hide();
348
	$('#dialogue-obs-transaction-ko').hide();
349
	$('#dialogue-obs-transaction-ok').hide();
349
	$('#dialogue-obs-transaction-ok').hide();
350
 
350
 
351
	// obligation de fournir au moins une image
351
	// obligation de fournir au moins une image
352
	var nbImages = $('#miniatures img').length;
352
	var nbImages = $('#miniatures img').length;
353
	if (nbImages == 0) {
353
	if (nbImages == 0) {
354
		$('#image-obligatoire').show();
354
		$('#image-obligatoire').show();
355
	} else {
355
	} else {
356
		$('#image-obligatoire').hide();
356
		$('#image-obligatoire').hide();
357
	}
357
	}
358
 
358
 
359
	if (this.validerFormulaire() == true && nbImages > 0) {
359
	if (this.validerFormulaire() == true && nbImages > 0) {
360
		this.masquerPanneau('#dialogue-form-invalide');
360
		this.masquerPanneau('#dialogue-form-invalide');
361
		this.obsNbre = this.obsNbre + 1;
361
		this.obsNbre = this.obsNbre + 1;
362
		$(".obs-nbre").text(this.obsNbre);
362
		$(".obs-nbre").text(this.obsNbre);
363
		$(".obs-nbre").triggerHandler('changement');
363
		$(".obs-nbre").triggerHandler('changement');
364
		this.afficherObs();
364
		this.afficherObs();
365
		this.stockerObsData();
365
		this.stockerObsData();
366
		this.supprimerMiniatures();
366
		this.supprimerMiniatures();
367
		if(! this.especeImposee) {
367
		if(! this.especeImposee) {
368
			$("#taxon").data("numNomSel", undefined);
368
			$("#taxon").data("numNomSel", undefined);
369
		}
369
		}
370
		$('#barre-progression-upload').attr('aria-valuemax', this.obsNbre);
370
		$('#barre-progression-upload').attr('aria-valuemax', this.obsNbre);
371
		$('#barre-progression-upload .sr-only').text('0/'+this.obsNbre+" observations transmises");
371
		$('#barre-progression-upload .sr-only').text('0/'+this.obsNbre+" observations transmises");
372
	} else {
372
	} else {
373
		this.afficherPanneau('#dialogue-form-invalide');
373
		this.afficherPanneau('#dialogue-form-invalide');
374
	}
374
	}
375
};
375
};
376
 
376
 
377
// surcharge
377
// surcharge
378
WidgetSaisieBellesdemarue.prototype.afficherObs = function() {
378
WidgetSaisieBellesdemarue.prototype.afficherObs = function() {
379
	// on accepte que la commune soit parfois vide
379
	// on accepte que la commune soit parfois vide
380
	var commune = $("#commune-nom").text();
380
	var commune = $("#commune-nom").text();
381
	if (this.debug) {
381
	if (this.debug) {
382
		console.log(commune);
382
		console.log(commune);
383
	}
383
	}
384
	$("#liste-obs").prepend(
384
	$("#liste-obs").prepend(
385
		'<div id="obs'+this.obsNbre+'" class="row-fluid obs obs'+this.obsNbre+'">'+
385
		'<div id="obs'+this.obsNbre+'" class="row-fluid obs obs'+this.obsNbre+'">'+
386
			'<div class="span12">'+
386
			'<div class="span12">'+
387
				'<div class="well">'+
387
				'<div class="well">'+
388
					'<div class="obs-action pull-right has-tooltip" data-placement="bottom" '+
388
					'<div class="obs-action pull-right has-tooltip" data-placement="bottom" '+
389
						'title="Supprimer cette observation de la liste à transmettre">'+
389
						'title="Supprimer cette observation de la liste à transmettre">'+
390
						'<button class="btn btn-danger supprimer-obs" value="'+this.obsNbre+'" title="'+this.obsNbre+'">'+
390
						'<button class="btn btn-danger supprimer-obs" value="'+this.obsNbre+'" title="'+this.obsNbre+'">'+
391
							'<i class="icon-trash icon-white"></i>'+
391
							'<i class="icon-trash icon-white"></i>'+
392
						'</button>'+
392
						'</button>'+
393
					'</div> '+
393
					'</div> '+
394
					'<div class="row-fluid">'+
394
					'<div class="row-fluid">'+
395
						'<div class="thumbnail span2">'+
395
						'<div class="thumbnail span2">'+
396
						this.ajouterImgMiniatureAuTransfert()+
396
						this.ajouterImgMiniatureAuTransfert()+
397
						'</div>'+
397
						'</div>'+
398
						'<div class="span9">'+
398
						'<div class="span9">'+
399
							'<ul class="unstyled">'+
399
							'<ul class="unstyled">'+
400
								'<li>'+
400
								'<li>'+
401
									'<span class="nom-sci">'+this.ajouterNomEspece()+'</span> '+
401
									'<span class="nom-sci">'+this.ajouterNomEspece()+'</span> '+
402
									this.ajouterNumNomSel()+
402
									this.ajouterNumNomSel()+
403
									this.ajouterNomReferentiel()+
403
									this.ajouterNomReferentiel()+
404
								'</li>'+
404
								'</li>'+
405
								'<li>'+
405
								'<li>'+
406
									'Observé à '+
406
									'Observé à '+
407
									'<span class="commune">'+commune+'</span> '+
407
									'<span class="commune">'+commune+'</span> '+
408
									' ['+$("#latitude").val()+' / '+$("#longitude").val()+']'+
408
									' ['+$("#latitude").val()+' / '+$("#longitude").val()+']'+
409
									' le '+
409
									' le '+
410
									'<span class="date">'+$("#date").val()+'</span>'+
410
									'<span class="date">'+$("#date").val()+'</span>'+
411
								'</li>'+
411
								'</li>'+
412
								'<li>'+
412
								'<li>'+
413
									'<span>Certitude :</span> '+$('input[name="certitude"]').val()+' '+
413
									'<span>Certitude :</span> '+$('input[name="certitude"]').val()+' '+
414
								'</li>'+
414
								'</li>'+
415
								'<li>'+
415
								'<li>'+
416
									'<span>Milieu :</span> '+this.ajouterMilieu()+
416
									'<span>Milieu :</span> '+this.ajouterMilieu()+
417
								'</li>'+
417
								'</li>'+
418
								'<li>'+
418
								'<li>'+
419
									'Commentaires : <span class="discretion">'+$("#notes").val()+'</span>'+
419
									'Commentaires : <span class="discretion">'+$("#notes").val()+'</span>'+
420
								'</li>'+
420
								'</li>'+
421
							'</ul>'+
421
							'</ul>'+
422
						'</div>'+
422
						'</div>'+
423
					'</div>'+
423
					'</div>'+
424
				'</div>'+
424
				'</div>'+
425
			'</div>'+
425
			'</div>'+
426
		'</div>');
426
		'</div>');
427
	$('#zone-liste-obs').removeClass("hidden").show();
427
	$('#zone-liste-obs').removeClass("hidden").show();
428
};
428
};
429
 
429
 
430
// surcharge
430
// surcharge
431
WidgetSaisieBellesdemarue.prototype.stockerObsData = function() {
431
WidgetSaisieBellesdemarue.prototype.stockerObsData = function() {
432
	var lthis = this;
432
	var lthis = this;
433
	var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false;
433
	var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false;
434
		nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'),
434
		nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'),
435
		numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val();
435
		numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val();
436
	var nomSel = nomHorsListe ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
436
	var nomSel = nomHorsListe ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
437
		nomRet = nomHorsListe ? $('#taxon').data('nomRet') : this.taxons[numNomSel]['nom_ret'],
437
		nomRet = nomHorsListe ? $('#taxon').data('nomRet') : this.taxons[numNomSel]['nom_ret'],
438
		numNomRet = nomHorsListe ? $('#taxon').data('numNomRet') : this.taxons[numNomSel]['num_nom_ret'],
438
		numNomRet = nomHorsListe ? $('#taxon').data('numNomRet') : this.taxons[numNomSel]['num_nom_ret'],
439
		numTaxon = nomHorsListe ? $('#taxon').data('nt') : this.taxons[numNomSel]['num_taxon'],
439
		numTaxon = nomHorsListe ? $('#taxon').data('nt') : this.taxons[numNomSel]['num_taxon'],
440
		famille = nomHorsListe ? $('#taxon').data('famille') : this.taxons[numNomSel]['famille'],
440
		famille = nomHorsListe ? $('#taxon').data('famille') : this.taxons[numNomSel]['famille'],
441
		referentiel = (numNomSel == undefined) ? '' : this.nomSciReferentiel,
441
		referentiel = (numNomSel == undefined) ? '' : this.nomSciReferentiel,
442
		notes = (nomSpecial ? this.taxons[numNomSel]['nom_fr'] + '. ' : '') + $('#notes').val();
442
		notes = (nomSpecial ? this.taxons[numNomSel]['nom_fr'] + '. ' : '') + $('#notes').val();
443
 
443
 
444
		certitude = $('input[name=certitude]:checked').val();
444
		certitude = $('input[name=certitude]:checked').val();
445
		certitude = (certitude == undefined) ? '' : certitude;
445
		certitude = (certitude == undefined) ? '' : certitude;
446
 
446
 
447
	$('#liste-obs').data('obsId'+this.obsNbre, {
447
	$('#liste-obs').data('obsId'+this.obsNbre, {
448
		'date': $('#date').val(),
448
		'date': $('#date').val(),
449
		'notes': notes,
449
		'notes': notes,
450
 
450
 
451
		'latitude': $('#latitude').val(),
451
		'latitude': $('#latitude').val(),
452
		'longitude': $('#longitude').val(),
452
		'longitude': $('#longitude').val(),
453
		'commune_nom': $('#commune-nom').text(),
453
		'commune_nom': $('#commune-nom').text(),
454
 
454
 
455
		'nom_sel': nomSel,
455
		'nom_sel': nomSel,
456
		'num_nom_sel': numNomSel,
456
		'num_nom_sel': numNomSel,
457
		'nom_ret': nomRet,
457
		'nom_ret': nomRet,
458
		'num_nom_ret': numNomRet,
458
		'num_nom_ret': numNomRet,
459
		'num_taxon': numTaxon,
459
		'num_taxon': numTaxon,
460
		'famille': famille,
460
		'famille': famille,
461
		'referentiel': referentiel,
461
		'referentiel': referentiel,
462
		'certitude': certitude,
462
		'certitude': certitude,
463
		'milieu': lthis.ajouterMilieu(),
463
		'milieu': lthis.ajouterMilieu(),
464
 
464
 
465
		// Ajout des champs images
465
		// Ajout des champs images
466
		'image_nom': lthis.getNomsImgsOriginales(),
466
		'image_nom': lthis.getNomsImgsOriginales(),
467
 
467
 
468
		// Ajout des champs étendus de l'obs
468
		// Ajout des champs étendus de l'obs
469
		'obs_etendue': lthis.getObsChpEtendus()
469
		'obs_etendue': lthis.getObsChpEtendus()
470
	});
470
	});
471
	//if (this.debug) {
471
	//if (this.debug) {
472
		console.log($('#liste-obs').data('obsId'+this.obsNbre));
472
		console.log($('#liste-obs').data('obsId'+this.obsNbre));
473
	//}
473
	//}
474
};
474
};
475
 
475
 
476
WidgetSaisieBellesdemarue.prototype.ajouterMilieu = function() {
476
WidgetSaisieBellesdemarue.prototype.ajouterMilieu = function() {
477
	var milieu = $('#milieu').val();
477
	var milieu = $('#milieu').val();
478
	if (milieu == 'autres') {
478
	if (milieu == 'autres') {
479
		var autreMilieu = $('#milieu-autre').val();
479
		var autreMilieu = $('#milieu-autre').val();
480
		if (autreMilieu) {
480
		if (autreMilieu) {
481
			milieu = autreMilieu;
481
			milieu = autreMilieu;
482
		}
482
		}
483
	}
483
	}
484
	return milieu;
484
	return milieu;
485
};
485
};
486
 
486
 
487
WidgetSaisieBellesdemarue.prototype.ajouterNomEspece = function() {
487
WidgetSaisieBellesdemarue.prototype.ajouterNomEspece = function() {
488
	var ns = $('#taxon').data('ns');
488
	var ns = $('#taxon').data('ns');
489
	if (! ns) {
489
	if (! ns) {
490
		ns = "inconnue";
490
		ns = "inconnue";
491
	}
491
	}
492
	return ns;
492
	return ns;
493
};
493
};
494
 
494
 
495
WidgetSaisieBellesdemarue.prototype.ajouterNomReferentiel = function() {
495
WidgetSaisieBellesdemarue.prototype.ajouterNomReferentiel = function() {
496
	var nomRef = '';
496
	var nomRef = '';
497
	if ($("#taxon").data("nn")) {
497
	if ($("#taxon").data("nn")) {
498
		nomRef = '<span class="referentiel-obs">'+
498
		nomRef = '<span class="referentiel-obs">'+
499
			' [' + this.nomSciReferentiel +']'+
499
			' [' + this.nomSciReferentiel +']'+
500
		'</span>';
500
		'</span>';
501
	}
501
	}
502
	return nomRef;
502
	return nomRef;
503
};
503
};
504
 
504
 
505
// surcharge
505
// surcharge
506
WidgetSaisieBellesdemarue.prototype.ajouterNumNomSel = function() {
506
WidgetSaisieBellesdemarue.prototype.ajouterNumNomSel = function() {
507
	var nn = '';
507
	var nn = '';
508
	if (! $("#taxon").data("nn")) {
508
	if (! $("#taxon").data("nn")) {
509
		nn = ' <span class="alert-error">[non lié au référentiel]</span>';
509
		nn = ' <span class="alert-error">[non lié au référentiel]</span>';
510
	} else {
510
	} else {
511
		nn = ' <span class="nn">[nn'+$("#taxon").data("nn")+']</span>';
511
		nn = ' <span class="nn">[nn'+$("#taxon").data("nn")+']</span>';
512
	}
512
	}
513
	return nn;
513
	return nn;
514
};
514
};
515
 
-
 
516
/*
-
 
517
WidgetSaisieBellesdemarue.prototype.defilerMiniatures = function(element) {
-
 
518
	var miniatureSelectionne = element.siblings('img.miniature-selectionnee');
-
 
519
	miniatureSelectionne.removeClass('miniature-selectionnee').addClass('miniature-cachee');
-
 
520
	var miniatureAffichee = miniatureSelectionne;
-
 
521
 
-
 
522
	var indicateurActif = element.parent().find('.defilement-indicateurs .active');
-
 
523
	indicateurActif.removeClass('active');
-
 
524
 
-
 
525
	if (element.hasClass('defilement-control-zone') && element.hasClass('gauche')) {
-
 
526
		if (miniatureSelectionne.prev('.miniature').length != 0) {
-
 
527
			miniatureAffichee = miniatureSelectionne.prev('.miniature');
-
 
528
			indicateurActif.prev().addClass('active');
-
 
529
		} else {
-
 
530
			miniatureAffichee = miniatureSelectionne.siblings('.miniature').last();
-
 
531
			indicateurActif.siblings().last().addClass('active');
-
 
532
		}
-
 
533
	} else {
-
 
534
		if (miniatureSelectionne.next('.miniature').length != 0) {
-
 
535
			miniatureAffichee = miniatureSelectionne.next('.miniature');
-
 
536
			indicateurActif.next().addClass('active');
-
 
537
		} else {
-
 
538
			miniatureAffichee = miniatureSelectionne.siblings('.miniature').first();
-
 
539
			indicateurActif.siblings().first().addClass('active');
-
 
540
		}
-
 
541
	}
-
 
542
	miniatureAffichee.addClass('miniature-selectionnee').removeClass('miniature-cachee');
-
 
543
};
-
 
544
*/
-