Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 54 | Rev 100 | Go to most recent revision | Details | Compare with Previous | 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
 
90 aurelien 146
function estUneDateValide(peutEtreUneDate) {
147
	var reg= new RegExp("^[0-3][0-9][/]{1}[0-1][0-2][/]{1}[0-9]{4}$","g");
148
	return reg.test(peutEtreUneDate);
149
}
150
 
54 aurelien 151
/** Fonctions de manipulation des éléments du tableau pour les transformer en élements cliquables et calendriers **/
152
function initialiserMiniCalendrierFormulaire(id_element) {
153
 
154
	anneeEnCours = jQuery.trim($("#annee_en_cours").html());
155
 
156
	if(typeof(anneeEnCours)=='undefined'){
157
		dateCourante = new Date();
158
		anneeEnCours = dateCourante.getFullYear();
159
	}
160
 
90 aurelien 161
	$('#'+id_element)
162
	.datepicker({
54 aurelien 163
		disabled: true,
90 aurelien 164
		constrainInput: true,
54 aurelien 165
		altFormat: 'dd/mm/yyyy',
166
		minDate: '01/01/'+anneeEnCours,
90 aurelien 167
		maxDate: '31/12/'+anneeEnCours,
168
		onSelect: function(dateText, inst) {
169
			$('#'+id_element).val(dateText);
170
			donnees_obs = collecterDonneesMiniFormulaire(id_formulaire);
171
			envoyerRequeteAjaxValidationMiniFormulaire(donnees_obs, id_formulaire);
172
		},
173
		onClose: function(dateText, inst) {
174
			remplacerMiniFormulaireParElementDate(id_element);
175
		}
176
 
54 aurelien 177
	});
90 aurelien 178
 
179
	$('#'+id_element).datepicker( "show" );
180
 
181
	/*$('#'+id_element).keypress(function() {
182
		if(estUneDateValide($('#'+id_element).val())) {
183
			$('#'+id_element).removeClass('erreur_valeur');
184
		} else {
185
			$('#'+id_element).addClass('erreur_valeur');
186
		}
187
 
188
	});*/
54 aurelien 189
}
190
 
191
function remplacerElementDateParFormulaireAjax(id_element, conteneur_selectionne) {
192
 
193
	if(elementEnCours != null) {
194
		elementEnCours.removeClass('element_clique');
195
		elementEnCours.html(htmlEnCours);
196
	}
197
 
198
	elementEnCours = conteneur_selectionne;
199
	htmlEnCours = conteneur_selectionne.html();
200
 
201
	conteneur_obs = $('#'+id_element);
202
	valeur_date = conteneur_obs.html();
203
	valeur_date = valeur_date.replace('-','');
90 aurelien 204
 
54 aurelien 205
	conteneur_selectionne.addClass('element_clique');
90 aurelien 206
	conteneur_selectionne.html('<span class="calendrier"><input type="text" value="'+jQuery.trim(valeur_date)+'" class="calendrier" id="'+id_formulaire+'" size="7" maxlenght="10" /></div>');
54 aurelien 207
	initialiserMiniCalendrierFormulaire(id_formulaire);
208
 
209
}
210
 
211
function remplacerMiniFormulaireParElementDate(id_element) {
212
 
90 aurelien 213
	valeur_date_pour_stade = $('#'+id_element).val();
214
 
215
	/*if(!estUneDateValide(valeur_date_pour_stade)) {
216
		valeur_date_pour_stade = htmlEnCours;
217
	}*/
218
 
54 aurelien 219
	elementEnCours.html('<span id="'+id_element+'">'+valeur_date_pour_stade+' </span>');
220
 
221
	elementEnCours.removeClass('element_clique');
222
	elementEnCours = null;
223
	elementEnCours = null;
224
}
225
 
226
 
227
/** Fonctions d'envoi et de récupération des élements du formulaire ajax **/
228
function envoyerRequeteAjaxValidationMiniFormulaire(donnees_obs, id_formulaire) {
229
 
230
	url_page_courante = document.URL.replace('module=Individu&action=afficherListeIndividu','module=Observation&action=validerFormulaireModificationObservationAjax');
231
 
90 aurelien 232
	$.post(url_page_courante, donnees_obs, function(obj_retour) {
54 aurelien 233
 
234
		if(obj_retour.reponse === 'OK') {
235
 
236
			remplacerMiniFormulaireParElementDate(id_formulaire);
237
		}
238
	});
239
}
240
 
241
function collecterDonneesMiniFormulaire(id_formulaire) {
242
 
243
	valeur_date_pour_stade = $('#'+id_formulaire).val();
244
 
245
	if(valeur_date_pour_stade == null || jQuery.trim(valeur_date_pour_stade) == '') {
246
		return false ;
247
	}
248
 
249
	id_individu_stade_obs = id_formulaire.split('_');
250
 
251
	stade_obs = 'observation_'+id_individu_stade_obs[3];
252
	date_annee_en_cours = jQuery.trim($("#annee_en_cours").html());
253
 
254
	donnees_obs = { "id_individu": id_individu_stade_obs[1],
90 aurelien 255
					"annee_en_cours": date_annee_en_cours
54 aurelien 256
					};
257
 
90 aurelien 258
	identifiant_observation = 'observation_'+id_individu_stade_obs[3];
54 aurelien 259
 
90 aurelien 260
	donnees_obs[identifiant_observation] = valeur_date_pour_stade;
261
 
54 aurelien 262
	return donnees_obs;
263
}
264
 
265
 
266
$('#saisie_liste_evenements').ready(function() {
267
	initialiserLignesCliquables();
268
});
269
 
270
 
271
 
272
 
273
/**
274
	************************************************************************************************
275
	************************************************************************************************
276
 
277
	    Fonctions concernant la carte permettant de pointer d'afficher l'emplacement des stations
278
 
279
	************************************************************************************************
280
	************************************************************************************************
281
**/
282
var map;
283
var marker;
284
 
285
function ajouterListenerFormulaireSaisieLatLon() {
286
 
287
	$('#cacher_afficher_lien').bind('click', function() {
288
		$('#conteneur_form_liens_lat_lon').slideToggle();
289
		return false;
290
	});
291
 
292
	$('input#station_lat').bind('blur', function() {
293
		verifierEtLocaliserCoordonnees();
294
	});
295
 
296
	$('input#station_lon').bind('blur', function() {
297
		verifierEtLocaliserCoordonnees();
298
	});
299
 
300
	$('input#localiser_lat_lon').click(function() {
301
		verifierEtLocaliserCoordonnees();
302
	});
303
 
304
	$('#conteneur_form_liens_lat_lon').hide();
305
}
306
 
307
function carteEstEnSaisie() {
308
	return ($('#conteneur_form_liens_lat_lon').length > 0);
309
}
310
 
311
function verifierEtLocaliserCoordonnees() {
312
 
313
	lat ;
314
	lon;
315
 
316
	if(carteEstEnSaisie()) {
317
		lat = $('#station_lat').val();
318
		lon = $('#station_lon').val();
319
	} else {
320
		var lat = jQuery.trim($('#station_lat').html());
321
		var lon = jQuery.trim($('#station_lon').html());
322
	}
323
 
324
	if(jQuery.trim(lat) == '' || jQuery.trim(lon) == '') {
325
		return;
326
	}
327
 
328
	if(!isNaN(lat) && lat.length > 0 && !isNaN(lon) && lon.length > 0) {
329
 
330
	} else {
331
		window.alert("coordonnées invalides");
332
	}
333
 
334
	var positionMarker = new google.maps.LatLng(lat, lon);
335
 
336
	marker.setPosition(positionMarker);
337
	map.setCenter(positionMarker);
338
}
339
 
340
function mettreAJourValeursFormulaire(latlon) {
341
 
342
	latlon = latlon.toString().split(',');
343
 
344
	$('#station_lat').val(latlon[0].replace('(', ''));
345
	$('#station_lon').val(latlon[1].replace(')', ''));
346
}
347
 
348
function initialiserCarte() {
349
 
350
	if($('#map_canvas').length == 0) {
351
		return;
352
	}
353
 
354
	var latlng = new google.maps.LatLng(47.0504, 2.2347);
355
	var myOptions = {
356
		zoom: 6,
357
		center: latlng,
358
		mapTypeId: google.maps.MapTypeId.HYBRID
359
	};
360
 
361
	map = new google.maps.Map(document.getElementById("map_canvas"),
362
    	myOptions);
363
 
364
	marker = new google.maps.Marker({
365
	      position: latlng,
366
	      title:""
367
	});
368
 
369
	if (carteEstEnSaisie()) {
370
 
371
			marker.setDraggable(true);
372
 
373
			google.maps.event.addListener(marker, 'dragend', function() {
374
				mettreAJourValeursFormulaire(marker.getPosition());
375
			});
376
			$('#conteneur_form_liens_lat_lon').ready(function() {
377
				verifierEtLocaliserCoordonnees();
378
				ajouterListenerFormulaireSaisieLatLon();
379
			});
380
	} else {
381
		marker.setDraggable(false);
382
		$('#conteneur_liens_lat_lon').ready(function() {
383
			verifierEtLocaliserCoordonnees();
384
		});
385
	}
386
 
387
	marker.setClickable(true);
388
 
389
	// To add the marker to the map, call setMap();
390
	marker.setMap(map);
391
}
392
 
393
$('#map_canvas').ready(function() {
394
	initialiserCarte();
395
});