Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 90 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
54 aurelien 1
/**
2
	************************************************************************************************
3
	************************************************************************************************
4
 
5
	   Fonction permettant de transformer les élements de la classe pliage en accordéon
6
 
7
	************************************************************************************************
8
	************************************************************************************************
9
**/
10
function initialiserElementsPliables() {
11
 
12
	$('.pliage h4').addClass('lien_pliage');
13
 
14
	$('.pliage ul').hide();
15
	$('.pliage > ul:first-child').hide();
16
 
17
	$('.lien_pliage').bind('click', function() {
18
 
19
		$(this).nextAll('ul').slideToggle();
20
		return false;
21
	});
22
}
23
 
24
$('.pliage').ready(function() {
25
	initialiserElementsPliables();
26
});
27
 
28
 
29
 
30
 
31
/**
32
	************************************************************************************************
33
	************************************************************************************************
34
 
35
	   Fonctions de gestion des onglets du formulaire de saisie d'espèce
36
 
37
	************************************************************************************************
38
	************************************************************************************************
39
**/
40
function initialiserOnglets() {
41
	$(".contenu_onglet").hide();
42
	$("ul.liste_onglets li:first").addClass("active").show();
43
	$(".contenu_onglet:first").show();
44
 
45
	$("ul.liste_onglets li").click(function() {
46
 
47
		$("ul.liste_onglets li").removeClass("active");
48
		$(this).addClass("active");
49
		$(".contenu_onglet").hide();
50
 
51
		var activeTab = $(this).find("a").attr("href");
52
		$(activeTab).fadeIn();
53
		return false;
54
	});
55
}
56
 
57
$('.contenu_onglet').ready(function() {
58
	initialiserOnglets();
59
});
60
 
61
function agrandirZoneCLicBoutonsRadios() {
62
 
63
	$('.formulaire_informations_espece_mini').addClass("element_cliquable");
64
 
65
	$('#form_saisie_espece').children('input[type="submit"]').hide();
66
	$('.formulaire_informations_espece_mini').children('input[type="radio"]').hide();
67
	$('.titre_type').hide();
68
 
69
	$('.formulaire_informations_espece_mini').bind('click',function() {
70
		$(this).children('input[type="radio"]').attr('checked','checked');
71
		$('.formulaire_informations_espece_mini').removeClass('element_clique');
72
		$(this).addClass('element_clique');
73
 
74
		$('#form_saisie_espece').submit();
75
	});
76
}
77
 
78
$('#form_saisie_espece').ready(function() {
79
	agrandirZoneCLicBoutonsRadios();
80
});
81
 
82
 
83
 
84
 
85
/**
86
	************************************************************************************************
87
	************************************************************************************************
88
 
89
	   Fonctions permettant de transformer les cases du tableau d'évenements en mini formulaire
90
 
91
	************************************************************************************************
92
	************************************************************************************************
93
**/
94
 
95
htmlEnCours = '';
96
elementEnCours = null;
97
 
98
function initialiserLignesCliquables() {
99
 
100
	$('.conteneur_element_modifier').hide();
101
 
102
	$(".date_observation_individu").each(function() {
103
 
104
		$(this).bind('click', function() {
105
 
106
			if($(this).hasClass('element_clique')) {
107
				return false;
108
			} else {
109
 
110
				conteneur_obs = $(this).children('span');
111
				id_formulaire = conteneur_obs.attr('id');
112
 
113
				remplacerElementDateParFormulaireAjax(id_formulaire, $(this));
114
 
115
				return false;
116
			}
117
		});
118
	});
119
}
120
 
121
function initialiserCalendrierFormulaire() {
122
 
123
	anneeEnCours = $("#annee_en_cours").attr("value");
124
 
125
	if(typeof(anneeEnCours)=='undefined'){
126
		dateCourante = new Date();
127
		anneeEnCours = dateCourante.getFullYear();
128
	}
129
 
130
	$(".calendrier").each(function() {
131
		$(this).find("input").datepicker({
132
			disabled: true,
133
			altFormat: 'dd/mm/yyyy',
134
			minDate: '01/01/'+anneeEnCours,
135
			maxDate: '31/12/'+anneeEnCours
136
 
137
		});
138
	});
139
}
140
 
141
$(document).ready(function() {
142
	initialiserCalendrierFormulaire();
143
 
144
});
145
 
146
/** Fonctions de manipulation des éléments du tableau pour les transformer en élements cliquables et calendriers **/
147
function initialiserMiniCalendrierFormulaire(id_element) {
148
 
149
	anneeEnCours = jQuery.trim($("#annee_en_cours").html());
150
 
151
	if(typeof(anneeEnCours)=='undefined'){
152
		dateCourante = new Date();
153
		anneeEnCours = dateCourante.getFullYear();
154
	}
155
 
156
	$('#'+id_element).datepicker({
157
		disabled: true,
158
		altFormat: 'dd/mm/yyyy',
159
		minDate: '01/01/'+anneeEnCours,
160
		maxDate: '31/12/'+anneeEnCours
161
	});
162
}
163
 
164
function remplacerElementDateParFormulaireAjax(id_element, conteneur_selectionne) {
165
 
166
	if(elementEnCours != null) {
167
		elementEnCours.removeClass('element_clique');
168
		elementEnCours.html(htmlEnCours);
169
	}
170
 
171
	elementEnCours = conteneur_selectionne;
172
	htmlEnCours = conteneur_selectionne.html();
173
 
174
	conteneur_obs = $('#'+id_element);
175
	valeur_date = conteneur_obs.html();
176
	valeur_date = valeur_date.replace('-','');
177
 
178
	conteneur_selectionne.addClass('element_clique');
179
	conteneur_selectionne.html('<span class="calendrier"><input type="text" value="'+jQuery.trim(valeur_date)+'" class="calendrier" id="'+id_formulaire+'" size="10" maxlenght="10" /><input id="valider_formulaire_ajax" class="valider_formulaire" type="button" value="OK" /></div>');
180
	initialiserMiniCalendrierFormulaire(id_formulaire);
181
 
182
	$('#valider_formulaire_ajax').bind('click', function() {
183
 
184
		donnees_obs = collecterDonneesMiniFormulaire(id_formulaire);
185
		envoyerRequeteAjaxValidationMiniFormulaire(donnees_obs, id_formulaire);
186
 
187
		return true;
188
	});
189
}
190
 
191
function remplacerMiniFormulaireParElementDate(id_element) {
192
 
193
	elementEnCours.html('<span id="'+id_element+'">'+valeur_date_pour_stade+' </span>');
194
 
195
	elementEnCours.removeClass('element_clique');
196
	elementEnCours = null;
197
	elementEnCours = null;
198
}
199
 
200
 
201
/** Fonctions d'envoi et de récupération des élements du formulaire ajax **/
202
function envoyerRequeteAjaxValidationMiniFormulaire(donnees_obs, id_formulaire) {
203
 
204
	url_page_courante = document.URL.replace('module=Individu&action=afficherListeIndividu','module=Observation&action=validerFormulaireModificationObservationAjax');
205
 
206
	$.post(url_page_courante, donnees_obs, function(data) {
207
 
208
		var obj_retour  = jQuery.parseJSON(data);
209
		if(obj_retour.reponse === 'OK') {
210
 
211
			remplacerMiniFormulaireParElementDate(id_formulaire);
212
		}
213
	});
214
}
215
 
216
function collecterDonneesMiniFormulaire(id_formulaire) {
217
 
218
	valeur_date_pour_stade = $('#'+id_formulaire).val();
219
 
220
	if(valeur_date_pour_stade == null || jQuery.trim(valeur_date_pour_stade) == '') {
221
		return false ;
222
	}
223
 
224
	id_individu_stade_obs = id_formulaire.split('_');
225
 
226
	stade_obs = 'observation_'+id_individu_stade_obs[3];
227
	date_annee_en_cours = jQuery.trim($("#annee_en_cours").html());
228
 
229
	donnees_obs = { "id_individu": id_individu_stade_obs[1],
230
					"annee_en_cours": date_annee_en_cours ,
231
					};
232
 
233
	donnees_obs['observation_'+id_individu_stade_obs[3]] = valeur_date_pour_stade;
234
 
235
	return donnees_obs;
236
}
237
 
238
 
239
$('#saisie_liste_evenements').ready(function() {
240
	initialiserLignesCliquables();
241
});
242
 
243
 
244
 
245
 
246
/**
247
	************************************************************************************************
248
	************************************************************************************************
249
 
250
	    Fonctions concernant la carte permettant de pointer d'afficher l'emplacement des stations
251
 
252
	************************************************************************************************
253
	************************************************************************************************
254
**/
255
var map;
256
var marker;
257
 
258
function ajouterListenerFormulaireSaisieLatLon() {
259
 
260
	$('#cacher_afficher_lien').bind('click', function() {
261
		$('#conteneur_form_liens_lat_lon').slideToggle();
262
		return false;
263
	});
264
 
265
	$('input#station_lat').bind('blur', function() {
266
		verifierEtLocaliserCoordonnees();
267
	});
268
 
269
	$('input#station_lon').bind('blur', function() {
270
		verifierEtLocaliserCoordonnees();
271
	});
272
 
273
	$('input#localiser_lat_lon').click(function() {
274
		verifierEtLocaliserCoordonnees();
275
	});
276
 
277
	$('#conteneur_form_liens_lat_lon').hide();
278
}
279
 
280
function carteEstEnSaisie() {
281
	return ($('#conteneur_form_liens_lat_lon').length > 0);
282
}
283
 
284
function verifierEtLocaliserCoordonnees() {
285
 
286
	lat ;
287
	lon;
288
 
289
	if(carteEstEnSaisie()) {
290
		lat = $('#station_lat').val();
291
		lon = $('#station_lon').val();
292
	} else {
293
		var lat = jQuery.trim($('#station_lat').html());
294
		var lon = jQuery.trim($('#station_lon').html());
295
	}
296
 
297
	if(jQuery.trim(lat) == '' || jQuery.trim(lon) == '') {
298
		return;
299
	}
300
 
301
	if(!isNaN(lat) && lat.length > 0 && !isNaN(lon) && lon.length > 0) {
302
 
303
	} else {
304
		window.alert("coordonnées invalides");
305
	}
306
 
307
	var positionMarker = new google.maps.LatLng(lat, lon);
308
 
309
	marker.setPosition(positionMarker);
310
	map.setCenter(positionMarker);
311
}
312
 
313
function mettreAJourValeursFormulaire(latlon) {
314
 
315
	latlon = latlon.toString().split(',');
316
 
317
	$('#station_lat').val(latlon[0].replace('(', ''));
318
	$('#station_lon').val(latlon[1].replace(')', ''));
319
}
320
 
321
function initialiserCarte() {
322
 
323
	if($('#map_canvas').length == 0) {
324
		return;
325
	}
326
 
327
	var latlng = new google.maps.LatLng(47.0504, 2.2347);
328
	var myOptions = {
329
		zoom: 6,
330
		center: latlng,
331
		mapTypeId: google.maps.MapTypeId.HYBRID
332
	};
333
 
334
	map = new google.maps.Map(document.getElementById("map_canvas"),
335
    	myOptions);
336
 
337
	marker = new google.maps.Marker({
338
	      position: latlng,
339
	      title:""
340
	});
341
 
342
	if (carteEstEnSaisie()) {
343
 
344
			marker.setDraggable(true);
345
 
346
			google.maps.event.addListener(marker, 'dragend', function() {
347
				mettreAJourValeursFormulaire(marker.getPosition());
348
			});
349
			$('#conteneur_form_liens_lat_lon').ready(function() {
350
				verifierEtLocaliserCoordonnees();
351
				ajouterListenerFormulaireSaisieLatLon();
352
			});
353
	} else {
354
		marker.setDraggable(false);
355
		$('#conteneur_liens_lat_lon').ready(function() {
356
			verifierEtLocaliserCoordonnees();
357
		});
358
	}
359
 
360
	marker.setClickable(true);
361
 
362
	// To add the marker to the map, call setMap();
363
	marker.setMap(map);
364
}
365
 
366
$('#map_canvas').ready(function() {
367
	initialiserCarte();
368
});