Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 302 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
207 aurelien 1
function getUrlBaseJrest() {
259 aurelien 2
	return urlBaseJrest;
207 aurelien 3
}
4
 
320 aurelien 5
/**
54 aurelien 6
	************************************************************************************************
7
	************************************************************************************************
320 aurelien 8
 
54 aurelien 9
	   Fonction permettant de transformer les élements de la classe pliage en accordéon
320 aurelien 10
 
54 aurelien 11
	************************************************************************************************
12
	************************************************************************************************
320 aurelien 13
**/
54 aurelien 14
function initialiserElementsPliables() {
15
 
16
	$('.pliage h4').addClass('lien_pliage');
17
 
18
	$('.pliage ul').hide();
19
	$('.pliage > ul:first-child').hide();
207 aurelien 20
 
188 aurelien 21
	$('.1er_element_date ul').show();
22
	$('.1er_element_date > ul:first-child').show();
54 aurelien 23
 
24
	$('.lien_pliage').bind('click', function() {
320 aurelien 25
 
54 aurelien 26
		$(this).nextAll('ul').slideToggle();
27
		return false;
28
	});
29
}
30
 
31
$('.pliage').ready(function() {
32
	initialiserElementsPliables();
33
});
34
 
35
 
320 aurelien 36
/**
54 aurelien 37
	************************************************************************************************
38
	************************************************************************************************
320 aurelien 39
 
54 aurelien 40
	   Fonctions de gestion des onglets du formulaire de saisie d'espèce
320 aurelien 41
 
54 aurelien 42
	************************************************************************************************
43
	************************************************************************************************
320 aurelien 44
**/
54 aurelien 45
function initialiserOnglets() {
320 aurelien 46
	$(".contenu_onglet").hide();
47
	$("ul.liste_onglets li:first").addClass("active").show();
54 aurelien 48
	$(".contenu_onglet:first").show();
49
 
50
	$("ul.liste_onglets li").click(function() {
51
 
320 aurelien 52
		$("ul.liste_onglets li").removeClass("active");
53
		$(this).addClass("active");
54 aurelien 54
		$(".contenu_onglet").hide();
55
 
320 aurelien 56
		var activeTab = $(this).find("a").attr("href");
54 aurelien 57
		$(activeTab).fadeIn();
58
		return false;
59
	});
60
}
61
 
62
$('.contenu_onglet').ready(function() {
63
	initialiserOnglets();
64
});
65
 
66
function agrandirZoneCLicBoutonsRadios() {
320 aurelien 67
 
54 aurelien 68
	$('.formulaire_informations_espece_mini').addClass("element_cliquable");
320 aurelien 69
 
54 aurelien 70
	$('#form_saisie_espece').children('input[type="submit"]').hide();
71
	$('.formulaire_informations_espece_mini').children('input[type="radio"]').hide();
72
	$('.titre_type').hide();
320 aurelien 73
 
54 aurelien 74
	$('.formulaire_informations_espece_mini').bind('click',function() {
75
		$(this).children('input[type="radio"]').attr('checked','checked');
76
		$('.formulaire_informations_espece_mini').removeClass('element_clique');
77
		$(this).addClass('element_clique');
320 aurelien 78
 
54 aurelien 79
		$('#form_saisie_espece').submit();
320 aurelien 80
	});
54 aurelien 81
}
82
 
83
$('#form_saisie_espece').ready(function() {
84
	agrandirZoneCLicBoutonsRadios();
85
});
86
 
87
 
207 aurelien 88
 
89
 
320 aurelien 90
/**
54 aurelien 91
	************************************************************************************************
92
	************************************************************************************************
320 aurelien 93
 
54 aurelien 94
	   Fonctions permettant de transformer les cases du tableau d'évenements en mini formulaire
320 aurelien 95
 
54 aurelien 96
	************************************************************************************************
97
	************************************************************************************************
98
**/
99
 
100
htmlEnCours = '';
101
elementEnCours = null;
216 aurelien 102
ancienneValeurEnCours = null;
320 aurelien 103
id_formulaire = null;
54 aurelien 104
 
105
function initialiserLignesCliquables() {
320 aurelien 106
 
54 aurelien 107
	$('.conteneur_element_modifier').hide();
108
 
320 aurelien 109
	$(".date_observation_individu").live("click", function(e) {
110
		e.preventDefault();
54 aurelien 111
 
320 aurelien 112
		if($(e.target).hasClass('conteneur_supprimer_observation') || $(e.target).hasClass('supprimer_observation')) {
113
			return;
114
		}
54 aurelien 115
 
320 aurelien 116
		$('.element_clique').removeClass('element_clique');
117
		if($(this).hasClass('element_clique')) {
118
			fermerDatePicker();
119
			return false;
120
		} else {
121
			$(this).addClass('element_clique');
122
			afficherSaisieObservation($(this));
123
			return false;
124
		}
125
	});
54 aurelien 126
 
320 aurelien 127
	$(".date_observation_individu .conteneur_supprimer_observation").live("click", function(e) {
128
		e.preventDefault();
129
		if(window.confirm('Êtes-vous sûr de vouloir supprimer cette observation ?')) {
130
			// les obs ne sont jamais vraiment supprimées
131
			// mais seulement remplacées par des dates au format 00/00/yyyy
132
			envoyerRequeteAjaxSaisieObservation('', $(this).parent('.date_observation_individu'));
133
		}
134
	});
90 aurelien 135
 
320 aurelien 136
	// pour fermer le datepicker sur esc
137
	$(document).keyup(function(e) {
138
	  if (e.keyCode === 27) {
139
			$('.element_clique').removeClass('element_clique');
140
			fermerDatePicker();   // esc
141
		}
142
	});
216 aurelien 143
}
144
 
320 aurelien 145
function afficherSaisieObservation($obs) {
224 aurelien 146
 
320 aurelien 147
	fermerDatePicker();
148
 
149
	var dateMin = getDateMinCalendrier();
150
	var dateMax = getDateMaxCalendrier();
151
 
152
	var dateCouranteStr = $obs.data('date-observation');
153
	var dateCourante = new Date();
154
	if(!!dateCouranteStr && dateCouranteStr != '' && dateCouranteStr != '+') {
155
		var jour   = parseInt(dateCouranteStr.substring(0,2));
156
		var mois  = parseInt(dateCouranteStr.substring(3,5));
157
		var annee   = parseInt(dateCouranteStr.substring(6,10));
158
		dateCourante = new Date(annee, mois-1, jour);
224 aurelien 159
	}
160
 
320 aurelien 161
	$obs.find('.datepicker_container').datepicker({
54 aurelien 162
		disabled: true,
90 aurelien 163
		constrainInput: true,
54 aurelien 164
		altFormat: 'dd/mm/yyyy',
224 aurelien 165
		minDate: dateMin,
166
		maxDate: dateMax,
320 aurelien 167
		changeMonth: true,
168
		defaultDate: dateCourante,
90 aurelien 169
		onSelect: function(dateText, inst) {
320 aurelien 170
			validerSaisieObservation(dateText, $obs)
210 aurelien 171
		},
320 aurelien 172
		beforeShowDay: function(date) {
173
			var dates_a_exclure = getDatesSaisiesPourStadeEtIndividu($obs.data('id-individu'), $obs.data('id-stade-observation'));
174
      var string = jQuery.datepicker.formatDate('dd/mm/yy', date);
175
      return [dates_a_exclure.indexOf(string) == -1]
176
    }
54 aurelien 177
	});
90 aurelien 178
 
320 aurelien 179
	$obs.datepicker("show");
180
	$('.ui-datepicker').attr("title", "Appuyez sur échap pour annuler l'édition");
54 aurelien 181
}
182
 
320 aurelien 183
function validerSaisieObservation(dateStr, $obs) {
184
 
185
	if(estUneDateValide(dateStr)) {
186
		envoyerRequeteAjaxSaisieObservation(dateStr, $obs);
210 aurelien 187
	}
188
}
189
 
320 aurelien 190
function formaterDonneesObservationPourEnvoi(dateStr, $obs) {
191
 
192
	if(dateStr == null ) {
193
		return false ;
54 aurelien 194
	}
195
 
320 aurelien 196
	var anneeEnCours = getAnneeEnCoursDeConsultation();
197
	if(jQuery.trim(dateStr) == '') {
198
		dateStr = '00/00/'+anneeEnCours;
216 aurelien 199
	}
100 aurelien 200
 
320 aurelien 201
	donnees_obs = {
202
		"id_individu": $obs.data('id-individu'),
203
		"id_evenement": $obs.data('id-stade-observation'),
204
		"date_evenement": dateStr,
205
		"annee_en_cours": anneeEnCours
206
	};
207
 
208
	if(!!$obs.data('id-observation')) {
209
		donnees_obs.id_observation = $obs.data('id-observation');
210
	}
211
 
212
	return donnees_obs;
54 aurelien 213
}
214
 
215
 
216
/** Fonctions d'envoi et de récupération des élements du formulaire ajax **/
320 aurelien 217
function envoyerRequeteAjaxSaisieObservation(dateStr, $obs) {
218
 
219
	var est_obs_existante = !!$obs.data('id-observation');
220
	var donnees_obs = formaterDonneesObservationPourEnvoi(dateStr, $obs);
221
 
100 aurelien 222
	url_page_courante = document.URL;
223
	url_page_courante = url_page_courante.replace('module=Individu','module=Observation');
224
	url_page_courante = url_page_courante.replace('action=afficherListeIndividu','action=validerFormulaireModificationObservationAjax');
225
	url_ajax = url_page_courante.replace('action=validerFormulaireSaisieIndividu','action=validerFormulaireModificationObservationAjax');
320 aurelien 226
 
227
	$conteneurAjout = null;
228
	if(!est_obs_existante) {
229
		var id_conteneur_ajout = 'ajouter_observation_individu_'+donnees_obs['id_individu']+'_evenement_'+donnees_obs['id_evenement'];
230
		var $conteneurAjout = $('#'+id_conteneur_ajout).clone();
231
	}
232
 
233
	var donnees_obs = formaterDonneesObservationPourEnvoi(dateStr, $obs);
100 aurelien 234
	$.post(url_ajax, donnees_obs, function(obj_retour) {
320 aurelien 235
 
236
		if(obj_retour.data.erreurs) {
237
			var message = 'Une ou plusieurs erreurs se sont produites : '+"\n";
238
			for (var key in obj_retour.data.erreurs) {
239
  		if (obj_retour.data.erreurs.hasOwnProperty(key))
240
    		message += '- '+obj_retour.data.erreurs[key]+"\n";
241
			}
242
			window.alert(message);
243
			return;
244
		}
245
 
54 aurelien 246
		if(obj_retour.reponse === 'OK') {
320 aurelien 247
 
248
			// les obs ne sont jamais vraiment supprimées
249
			// mais seulement remplacées par des dates au format 00/00/yyyy
250
			if(estUneDateSuppressionObs(dateStr)) {
251
				$obs.remove();
252
				delete $obs;
253
				return;
254
			}
255
 
256
			$obs.find('.date_observation').text(dateStr);
257
			$obs.data('date-observation', dateStr);
258
 
259
			if(!est_obs_existante) {
260
				$obs.removeClass('ajouter_observation');
261
				$obs.attr('title', 'Cliquez pour modifier la date de cette observation')
262
				$obs.data('id-observation', obj_retour.data.id_observation);
263
 
264
				var id_conteneur_observation = 'individu_'+donnees_obs['id_individu']+'_evenement_'+donnees_obs['id_evenement']+'_observation_'+obj_retour.data.id_observation;
265
				$obs.attr('id', id_conteneur_observation);
266
 
267
				$obs.after($conteneurAjout);
268
			}
269
 
270
			$('.element_clique').removeClass('element_clique');
271
			fermerDatePicker();
54 aurelien 272
		}
273
	});
274
}
275
 
320 aurelien 276
function estUneDateSuppressionObs(dateStr) {
277
	var date_vide_pattern = /^00\/00\/\d{4}$/;
278
	return dateStr == '' || date_vide_pattern.test(dateStr);
279
}
280
 
281
function fermerDatePicker() {
282
	if($(".hasDatepicker").length == 0) {
283
		return;
54 aurelien 284
	}
320 aurelien 285
 
286
	$(".hasDatepicker").each(function() {
287
		$(this).datepicker("destroy");
288
		$(this).removeClass(".hasDatepicker").removeAttr('id');
289
	});
290
}
291
 
292
function obtenirAttributsData(el) {
293
	return [].filter.call(el.attributes, function(at) { return /^data-/.test(at.name); });
294
}
295
 
296
// vérifie qu'une date est au format d/m/y
297
// merci stacky https://stackoverflow.com/questions/5812220/how-to-validate-a-date
298
function estUneDateValide(s) {
299
  var bits = s.split('/');
300
  var d = new Date(bits[2], bits[1] - 1, bits[0]);
301
  return d && (d.getMonth() + 1) == bits[1];
302
}
303
 
304
function getDatesSaisiesPourStadeEtIndividu(id_individu, id_stade) {
305
	var selecteur_data = '[data-id-individu="'+id_individu+'"]'+
306
												'[data-id-stade-observation="'+id_stade+'"]';
307
 
308
	return $('.date_observation_individu'+selecteur_data).map(function() {
309
    return $(this).data("date-observation");
310
	}).get();
311
}
312
 
313
function getAnneeEnCoursDeConsultation() {
314
 
315
	anneeEnCours = jQuery.trim($("#annee_en_cours").html());
316
 
317
	if(typeof(anneeEnCours)=='undefined'){
318
		dateCourante = new Date();
319
		anneeEnCours = dateCourante.getFullYear();
216 aurelien 320
	}
320 aurelien 321
 
322
	return anneeEnCours;
54 aurelien 323
}
324
 
320 aurelien 325
function getDateMinCalendrier() {
326
	anneeEnCours = getAnneeEnCoursDeConsultation();
327
	dateMin = '01/01/'+anneeEnCours;
54 aurelien 328
 
320 aurelien 329
	return dateMin;
330
}
331
 
332
function getDateMaxCalendrier() {
333
 
334
	anneeEnCours = getAnneeEnCoursDeConsultation();
335
 
336
	dateMax = '31/12/'+anneeEnCours;
337
 
338
	dateCourante = new Date();
339
 
340
	if(anneeEnCours == dateCourante.getFullYear()) {
341
		dateMax = dateCourante.getDate()+'/'+(dateCourante.getMonth()+ 1)+'/'+anneeEnCours;
342
	}
343
 
344
	return dateMax;
345
}
346
 
54 aurelien 347
$('#saisie_liste_evenements').ready(function() {
348
	initialiserLignesCliquables();
349
});
350
 
351
 
352
 
353
 
320 aurelien 354
/**
54 aurelien 355
	************************************************************************************************
356
	************************************************************************************************
320 aurelien 357
 
54 aurelien 358
	    Fonctions concernant la carte permettant de pointer d'afficher l'emplacement des stations
320 aurelien 359
 
54 aurelien 360
	************************************************************************************************
361
	************************************************************************************************
320 aurelien 362
**/
54 aurelien 363
var map;
364
var marker;
100 aurelien 365
var liste_localite_en_cours;
366
var indice_commune_en_cours;
367
var liste_auto_completion_a_le_focus;
368
var timerRequeteAutocompletion;
369
var timerAffichageAutocompletion;
54 aurelien 370
 
100 aurelien 371
 
372
function cacherElementsRafraichissables() {
373
	$('.rafraichissable input').attr('disabled', 'disabled');
374
	$('.rafraichissable input[type="text"]').addClass("chargement");
375
}
376
 
377
function montrerElementsRafraichissables() {
378
	$('.rafraichissable input').removeAttr('disabled');
379
	$('.chargement').removeClass("chargement");
380
}
381
 
382
function ajouterAutoCompletionCommune() {
320 aurelien 383
 
100 aurelien 384
	$('input#station_commune').after('<div class="conteneur_suggestions"></div>');
385
	$('input#station_commune').parent().addClass('autocompletion');
386
	$('input#station_commune').attr('autocomplete','off');
387
	$('.conteneur_suggestions').hide();
388
	rendreListeAutoCompletionInteractive('input#station_commune');
389
}
390
 
54 aurelien 391
function ajouterListenerFormulaireSaisieLatLon() {
320 aurelien 392
 
54 aurelien 393
	$('input#localiser_lat_lon').click(function() {
394
		verifierEtLocaliserCoordonnees();
395
	});
396
}
397
 
398
function carteEstEnSaisie() {
399
	return ($('#conteneur_form_liens_lat_lon').length > 0);
400
}
401
 
402
function verifierEtLocaliserCoordonnees() {
320 aurelien 403
 
54 aurelien 404
	lat ;
405
	lon;
320 aurelien 406
 
54 aurelien 407
	if(carteEstEnSaisie()) {
408
		lat = $('#station_lat').val();
409
		lon = $('#station_lon').val();
320 aurelien 410
 
100 aurelien 411
		obtenirInformationsPourCoordonnees(lat, lon);
54 aurelien 412
	} else {
413
		var lat = jQuery.trim($('#station_lat').html());
414
		var lon = jQuery.trim($('#station_lon').html());
415
	}
320 aurelien 416
 
54 aurelien 417
	if(jQuery.trim(lat) == '' || jQuery.trim(lon) == '') {
418
		return;
419
	}
320 aurelien 420
 
54 aurelien 421
	if(!isNaN(lat) && lat.length > 0 && !isNaN(lon) && lon.length > 0) {
320 aurelien 422
 
54 aurelien 423
	} else {
424
		window.alert("coordonnées invalides");
425
	}
320 aurelien 426
 
54 aurelien 427
	var positionMarker = new google.maps.LatLng(lat, lon);
320 aurelien 428
 
54 aurelien 429
	marker.setPosition(positionMarker);
430
	map.setCenter(positionMarker);
100 aurelien 431
	map.setZoom(12);
54 aurelien 432
}
433
 
100 aurelien 434
function obtenirInformationsPourCoordonnees(lat, lon) {
320 aurelien 435
 
100 aurelien 436
	lat = jQuery.trim(lat);
320 aurelien 437
	lon = jQuery.trim(lon);
438
 
100 aurelien 439
	if(isNaN(lat) || lat.length <= 0 || isNaN(lon) || lon.length <= 0) {
440
		return;
441
	}
320 aurelien 442
 
100 aurelien 443
	cacherElementsRafraichissables();
207 aurelien 444
 
320 aurelien 445
	$.get(urlBaseJrest+'OdsCommune/informationsPourCoordonnees/?lat='+lat+'&lon='+lon, function(data) {
446
 
100 aurelien 447
		infos_localites = jQuery.parseJSON(data);
448
		$('#station_alt').val(infos_localites.alt);
320 aurelien 449
 
196 aurelien 450
		if(infos_localites.commune != null && infos_localites.commune != '') {
451
		  $('#station_commune').val(infos_localites.commune);
452
		  $('#station_code_insee').val(infos_localites.code_insee);
100 aurelien 453
		}
320 aurelien 454
 
100 aurelien 455
		montrerElementsRafraichissables();
320 aurelien 456
 
100 aurelien 457
	});
458
 
459
}
460
 
461
function obtenirInformationsPourCommune(nom_commune) {
320 aurelien 462
 
100 aurelien 463
	if(jQuery.trim(nom_commune) == '') {
464
		$('.conteneur_suggestions').hide();
465
		return;
466
	}
320 aurelien 467
 
468
	$.get(urlBaseJrest+'OdsCommune/informationsPourCommune/?commune='+nom_commune, function(data) {
469
 
100 aurelien 470
		infos_localites = jQuery.parseJSON(data);
320 aurelien 471
		afficherListeAutoCompletion(infos_localites);
100 aurelien 472
	});
473
}
474
 
475
function afficherListeAutoCompletion(tableau_localites) {
320 aurelien 476
 
100 aurelien 477
	liste_localite_en_cours = tableau_localites;
320 aurelien 478
 
100 aurelien 479
	html_liste_localite = '<ul class="liste_suggestions">';
320 aurelien 480
 
100 aurelien 481
	for(i = 0; i< tableau_localites.length; i++) {
482
		html_liste_localite += '<li id="commune_'+i+'" class="element_auto_completion_commune">'+tableau_localites[i]['commune']+'  ('+tableau_localites[i]['dpt']+')</li>';
483
	}
320 aurelien 484
 
100 aurelien 485
	html_liste_localite += '</ul>';
320 aurelien 486
 
100 aurelien 487
	$('.conteneur_suggestions').html(html_liste_localite);
320 aurelien 488
 
100 aurelien 489
	$('.element_auto_completion_commune').hover(function() {
490
		indice = $(this).attr('id').split('_')[1];
491
		mettreEnSurbrillanceCommune(indice);
492
	});
320 aurelien 493
 
100 aurelien 494
	$('.element_auto_completion_commune').click(function() {
495
		indice = $(this).attr('id').split('_')[1];
496
		selectionnerCommune(indice);
497
	});
320 aurelien 498
 
100 aurelien 499
	if(tableau_localites.length > 0) {
500
		$('.conteneur_suggestions').show();
320 aurelien 501
 
100 aurelien 502
		mettreEnSurbrillanceCommune(0);
503
	}
504
}
505
 
506
function mettreEnSurbrillanceCommune(indice) {
320 aurelien 507
 
508
	if(indice_commune_en_cours != null) {
100 aurelien 509
		$('#commune_'+indice_commune_en_cours).removeClass('element_selectionne');
510
	}
511
	$('#commune_'+indice).addClass('element_selectionne');
512
	indice_commune_en_cours = indice;
320 aurelien 513
 
100 aurelien 514
	reprogrammerTimerPourCacherListeAutoCompletion();
515
}
516
 
517
function rendreListeAutoCompletionInteractive(selecteur) {
320 aurelien 518
 
100 aurelien 519
	$(selecteur).keyup(function(event) {
320 aurelien 520
		if(event.which == 8 || (event.which >= 48 && event.which <= 90)) {
521
 
100 aurelien 522
			reprogrammerTimerPourCacherListeAutoCompletion();
523
			reprogrammerTimerPourLancerRequeteCommune();
524
		}
525
	});
320 aurelien 526
 
100 aurelien 527
	$(selecteur).keydown(function(event) {
320 aurelien 528
 
100 aurelien 529
		reprogrammerTimerPourCacherListeAutoCompletion();
320 aurelien 530
 
100 aurelien 531
		// entree
532
		if(event.which==13){
533
			selectionnerCommune(indice_commune_en_cours);
534
			event.preventDefault();
535
		}
320 aurelien 536
 
100 aurelien 537
		// haut
538
		if(event.which == 38){
320 aurelien 539
			if(indice_commune_en_cours > 0) {
100 aurelien 540
				mettreEnSurbrillanceCommune(indice_commune_en_cours - 1);
541
			}
542
		}
320 aurelien 543
 
100 aurelien 544
		// bas
545
		if(event.which == 40){
320 aurelien 546
			if(indice_commune_en_cours < liste_localite_en_cours.length - 1) {
100 aurelien 547
				mettreEnSurbrillanceCommune(indice_commune_en_cours + 1);
548
			}
549
		}
550
	});
320 aurelien 551
 
100 aurelien 552
	$('.conteneur_suggestions').blur(function() {
553
		$('.conteneur_suggestions').hide();
554
	});
555
}
556
 
557
function reprogrammerTimerPourCacherListeAutoCompletion() {
320 aurelien 558
 
100 aurelien 559
	if(timerAffichageAutocompletion != null) {
560
		window.clearTimeout(timerAffichageAutocompletion);
561
	}
320 aurelien 562
 
100 aurelien 563
	timerAffichageAutocompletion = window.setTimeout(function() {
564
		$('.conteneur_suggestions').hide();
565
	}, 2000);
566
}
567
 
568
function reprogrammerTimerPourLancerRequeteCommune() {
320 aurelien 569
 
100 aurelien 570
	if(timerRequeteAutocompletion != null) {
571
		window.clearTimeout(timerRequeteAutocompletion);
572
	}
320 aurelien 573
 
100 aurelien 574
	timerRequeteAutocompletion = window.setTimeout(function() {
575
		obtenirInformationsPourCommune($('input#station_commune').val());
576
	}, 350);
577
}
578
 
579
function selectionnerCommune(indice) {
320 aurelien 580
 
100 aurelien 581
	infos_commune = liste_localite_en_cours[indice];
320 aurelien 582
 
100 aurelien 583
	$('input#station_commune').val(infos_commune['commune']);
584
	$('input#station_lat').val(infos_commune['lat']);
585
	$('input#station_lon').val(infos_commune['lon']);
168 aurelien 586
	$('input#station_code_insee').val(infos_commune['code_insee']);
320 aurelien 587
 
100 aurelien 588
	verifierEtLocaliserCoordonnees();
320 aurelien 589
 
100 aurelien 590
	$('.conteneur_suggestions').hide();
591
}
592
 
54 aurelien 593
function mettreAJourValeursFormulaire(latlon) {
594
 
320 aurelien 595
	latlon = latlon.toString().split(',');
596
 
100 aurelien 597
	lat = latlon[0].replace('(', '');
598
	lon = latlon[1].replace(')', '');
320 aurelien 599
 
54 aurelien 600
	$('#station_lat').val(latlon[0].replace('(', ''));
601
	$('#station_lon').val(latlon[1].replace(')', ''));
320 aurelien 602
 
100 aurelien 603
	obtenirInformationsPourCoordonnees(lat, lon);
54 aurelien 604
}
605
 
606
function initialiserCarte() {
607
 
608
	if($('#map_canvas').length == 0) {
609
		return;
610
	}
611
 
612
	var latlng = new google.maps.LatLng(47.0504, 2.2347);
613
	var myOptions = {
614
		zoom: 6,
615
		center: latlng,
616
		mapTypeId: google.maps.MapTypeId.HYBRID
617
	};
618
 
619
	map = new google.maps.Map(document.getElementById("map_canvas"),
620
    	myOptions);
320 aurelien 621
 
54 aurelien 622
	marker = new google.maps.Marker({
623
	      position: latlng,
624
	      title:""
625
	});
320 aurelien 626
 
54 aurelien 627
	if (carteEstEnSaisie()) {
320 aurelien 628
 
54 aurelien 629
			marker.setDraggable(true);
320 aurelien 630
 
631
			google.maps.event.addListener(marker, 'dragend', function(event) {
54 aurelien 632
				mettreAJourValeursFormulaire(marker.getPosition());
633
			});
634
			$('#conteneur_form_liens_lat_lon').ready(function() {
635
				verifierEtLocaliserCoordonnees();
636
				ajouterListenerFormulaireSaisieLatLon();
100 aurelien 637
				ajouterAutoCompletionCommune();
54 aurelien 638
			});
639
	} else {
640
		marker.setDraggable(false);
641
		$('#conteneur_liens_lat_lon').ready(function() {
642
			verifierEtLocaliserCoordonnees();
643
		});
644
	}
320 aurelien 645
 
54 aurelien 646
	marker.setClickable(true);
320 aurelien 647
 
54 aurelien 648
	// To add the marker to the map, call setMap();
320 aurelien 649
	marker.setMap(map);
54 aurelien 650
}
651
 
652
$('#map_canvas').ready(function() {
653
	initialiserCarte();
100 aurelien 654
});
655
 
320 aurelien 656
/**
210 aurelien 657
************************************************************************************************
658
************************************************************************************************
100 aurelien 659
 
210 aurelien 660
    Fonctions généralistes s'appliquant automatiquement à certaines classes css
661
 
662
************************************************************************************************
663
************************************************************************************************
320 aurelien 664
**/
210 aurelien 665
 
302 aurelien 666
function initialiserLiensNouvelleFenetre() {
320 aurelien 667
 
302 aurelien 668
	$('a.lien_nouvelle_fenetre').each(function() {
669
	  var titre = $(this).attr("title");
670
	  $(this).attr("title", titre+" (s'ouvre dans une nouvelle fenêtre)");
671
	});
320 aurelien 672
 
302 aurelien 673
	$('a.lien_nouvelle_fenetre').click(function(event) {
674
		event.preventDefault();
675
		window.open($(this).attr('href'));
676
	});
677
}
678
 
210 aurelien 679
function initialiserLiensSuppression() {
680
	$('.lien_suppression').click(function() {
681
		return window.confirm('Êtes vous sur de vouloir supprimer ?');
682
	});
683
}
684
 
685
$(document).ready(function() {
686
	initialiserLiensSuppression();
302 aurelien 687
	initialiserLiensNouvelleFenetre();
210 aurelien 688
});
689
 
690
 
691
 
320 aurelien 692
/**
100 aurelien 693
************************************************************************************************
694
************************************************************************************************
695
 
696
    Fonctions de debug permattant d'afficher les objets javascript à la manière de print_r
697
 
698
************************************************************************************************
699
************************************************************************************************
320 aurelien 700
**/
100 aurelien 701
 
702
function dump(arr,level) {
703
	var dumped_text = "";
704
	if(!level) level = 0;
705
 
706
	//The padding given at the beginning of the line.
707
	var level_padding = "";
708
	for(var j=0;j<level+1;j++) level_padding += "    ";
709
 
710
	if(typeof(arr) == 'object') { //Array/Hashes/Objects
711
	 for(var item in arr) {
712
	  var value = arr[item];
320 aurelien 713
 
100 aurelien 714
	  if(typeof(value) == 'object') { //If it is an array,
715
	   dumped_text += level_padding + "'" + item + "' ...\n";
716
	   dumped_text += dump(value,level+1);
717
	  } else {
718
	   dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
719
	  }
720
	 }
721
	} else { //Stings/Chars/Numbers etc.
722
	 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
723
	}
724
	return dumped_text;
320 aurelien 725
}