Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 327 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 327 Rev 329
1
var map = null;
1
var map = null;
2
var ctaLayer = null;
2
var ctaLayer = null;
3
var tableau_marqueurs = new Array();
3
var tableau_marqueurs = new Array();
4
var infowindow = new google.maps.InfoWindow();
4
var infowindow = new google.maps.InfoWindow();
5
var infos_observations = new Array();
5
var infos_observations = new Array();
6
var nb_observations_par_espece = {};
6
var nb_observations_par_espece = {};
7
var nb_observations_par_annee = {};
7
var nb_observations_par_annee = {};
8
 
8
 
9
var type_espece = '0';
9
var type_espece = '0';
10
var espece = '0';
10
var espece = '0';
11
var evenement = '0';
11
var evenement = '0';
12
var annee = '0';
12
var annee = '0';
13
var mois = '0';
13
var mois = '0';
14
var jour = '0';
14
var jour = '0';
15
var departement = '0';
15
var departement = '0';
16
var region = '0';
16
var region = '0';
17
var valeur_slider_defaut = '0';
17
var valeur_slider_defaut = '0';
18
 
18
 
19
/**
19
/**
20
 *
20
 *
21
 */
21
 */
22
Date.prototype.getDOY = function() {
22
Date.prototype.getDOY = function() {
23
	var onejan = new Date(this.getFullYear(),0,1);
23
	var onejan = new Date(this.getFullYear(),0,1);
24
	return Math.ceil((this - onejan) / 86400000);
24
	return Math.ceil((this - onejan) / 86400000);
25
}
25
}
26
 
26
 
27
var tableau_couleurs = new Array(
27
var tableau_couleurs = new Array(
28
		"#ff0000", "#733d00", "#f2ffbf", "#00ccff", "#2e1a33", "#00ff66", "#ffe1bf", "#ff8800",
28
		"#ff0000", "#733d00", "#f2ffbf", "#00ccff", "#2e1a33", "#00ff66", "#ffe1bf", "#ff8800",
29
		"#005266", "#be00cc", "#592d2d", "#ffcc00", "#336641", "#264599", "#80206c", "#bf7960",
29
		"#005266", "#be00cc", "#592d2d", "#ffcc00", "#336641", "#264599", "#80206c", "#bf7960",
30
		"#665c33", "#bf0000", "#80a2ff", "#ff80c4", "#806c60", "#ccff00", "#00ffcc", "#090040",
30
		"#665c33", "#bf0000", "#80a2ff", "#ff80c4", "#806c60", "#ccff00", "#00ffcc", "#090040",
31
		"#bf004d", "#2a3326", "#668000", "#608079", "#3600cc", "#8c696e"
31
		"#bf004d", "#2a3326", "#668000", "#608079", "#3600cc", "#8c696e"
32
);
32
);
33
 
33
 
34
liste_mois = new Array("jan","fev","mar","avr","mai","jun","jui","aou","sep","oct","nov","dec");
34
liste_mois = new Array("jan","fev","mar","avr","mai","jun","jui","aou","sep","oct","nov","dec");
35
 
35
 
36
evenements_debut_annee = new Array("")
36
evenements_debut_annee = new Array("")
37
 
37
 
38
var tableau_couleurs_en_cours = new Array();
38
var tableau_couleurs_en_cours = new Array();
39
 
39
 
40
var timerSlider = null;
40
var timerSlider = null;
41
 
41
 
42
function getUrlBaseJrest() {
42
function getUrlBaseJrest() {
43
	return urlBaseJrest;
43
	return urlBaseJrest;
44
}
44
}
45
 
45
 
46
function traiterParametresUrl() {
46
function traiterParametresUrl() {
47
 
47
 
48
	var vars = [], hash;
48
	var vars = [], hash;
49
	var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
49
	var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
50
	for(var i = 0; i < hashes.length; i++)
50
	for(var i = 0; i < hashes.length; i++)
51
	{
51
	{
52
	    hash = hashes[i].split('=');
52
	    hash = hashes[i].split('=');
53
	    vars.push(hash[0]);
53
	    vars.push(hash[0]);
54
	    vars[hash[0]] = hash[1];
54
	    vars[hash[0]] = hash[1];
55
	}
55
	}
56
 
56
 
57
	if(vars['type_espece'] != null) {
57
	if(vars['type_espece'] != null) {
58
		type_espece = vars['type_espece'];
58
		type_espece = vars['type_espece'];
59
		$('#selecteur_liste_types_especes').val(type_espece);
59
		$('#selecteur_liste_types_especes').val(type_espece);
60
	}
60
	}
61
 
61
 
62
	if(vars['espece'] != null) {
62
	if(vars['espece'] != null) {
63
		if(type_espece != '0') {
63
		if(type_espece != '0') {
64
			modifierTableauEspeces();
64
			modifierTableauEspeces();
65
		}
65
		}
66
		espece = vars['espece'];
66
		espece = vars['espece'];
67
		$('#selecteur_especes').val(espece);
67
		$('#selecteur_especes').val(espece);
68
 
68
 
69
	}
69
	}
70
 
70
 
71
	if(vars['evenement'] != null) {
71
	if(vars['evenement'] != null) {
72
		if(espece != 0) {
72
		if(espece != 0) {
73
			modifierTableauEvenement()
73
			modifierTableauEvenement()
74
		}
74
		}
75
		evenement = vars['evenement'];
75
		evenement = vars['evenement'];
76
		$('#selecteur_evenements').val(evenement);
76
		$('#selecteur_evenements').val(evenement);
77
	}
77
	}
78
 
78
 
79
	if(vars['annee'] != null) {
79
	if(vars['annee'] != null) {
80
		annee = vars['annee'];
80
		annee = vars['annee'];
81
		$('#selecteur_liste_annees').val(annee);
81
		$('#selecteur_liste_annees').val(annee);
82
	} else {
82
	} else {
83
		date = new Date()
83
		date = new Date()
84
		annee = date.getFullYear();
84
		annee = date.getFullYear();
85
		$('#selecteur_liste_annees').val(annee);
85
		$('#selecteur_liste_annees').val(annee);
86
	}
86
	}
87
 
87
 
88
	if(vars['mois'] != null) {
88
	if(vars['mois'] != null) {
89
		mois = vars['mois'];
89
		mois = vars['mois'];
90
	} else {
90
	} else {
91
		date = new Date();
91
		date = new Date();
92
		if(annee == date.getFullYear()) {
92
		if(annee == date.getFullYear()) {
93
			mois = date.getMonth();
93
			mois = date.getMonth();
94
			valeur_slider_defaut = date.getDOY();
94
			valeur_slider_defaut = date.getDOY();
95
		} else {
95
		} else {
96
			mois = 11;
96
			mois = 11;
97
			date.setYear(annee);
97
			date.setYear(annee);
98
			date.setMonth(mois);
98
			date.setMonth(mois);
99
			date.setDate(31);
99
			date.setDate(31);
100
			valeur_slider_defaut = date.getDOY();
100
			valeur_slider_defaut = date.getDOY();
101
		}
101
		}
102
	}
102
	}
103
 
103
 
104
	if(vars['departement'] != null) {
104
	if(vars['departement'] != null) {
105
		departement = vars['departement'];
105
		departement = vars['departement'];
106
		$('#selecteur_liste_departement').val(annee);
106
		$('#selecteur_liste_departement').val(annee);
107
	} else {
107
	} else {
108
		if(vars['region'] != null) {
108
		if(vars['region'] != null) {
109
			region = vars['region'];
109
			region = vars['region'];
110
			$('#selecteur_liste_region').val(annee);
110
			$('#selecteur_liste_region').val(annee);
111
		}
111
		}
112
	}
112
	}
113
 
113
 
114
	if(vars['cacher_criteres'] != null && vars['cacher_criteres'] == '1') {
114
	if(vars['cacher_criteres'] != null && vars['cacher_criteres'] == '1') {
115
		$(".cacher_widget").hide();
115
		$(".cacher_widget").hide();
116
	}
116
	}
117
}
117
}
118
 
118
 
119
function obtenirCodeWidget() {
119
function obtenirCodeWidget() {
120
 
120
 
121
	var UrlBase = url_widget;
121
	var UrlBase = url_widget;
122
	UrlBase += '?';
122
	UrlBase += '?';
123
	if(type_espece != '0') UrlBase += "type_espece="+type_espece;
123
	if(type_espece != '0') UrlBase += "type_espece="+type_espece;
124
	//TODO: décider si l'on peut garder l'espece et si le cas échéant on la cache
124
	//TODO: décider si l'on peut garder l'espece et si le cas échéant on la cache
125
	if(espece != '0') UrlBase += "&espece="+espece;
125
	if(espece != '0') UrlBase += "&espece="+espece;
126
	if(evenement != '0') UrlBase += "&evenement="+evenement;
126
	if(evenement != '0') UrlBase += "&evenement="+evenement;
127
	if(annee != '0') UrlBase += "&annee="+annee;
127
	if(annee != '0') UrlBase += "&annee="+annee;
128
	if(departement != '0') UrlBase += "&departement="+departement;
128
	if(departement != '0') UrlBase += "&departement="+departement;
129
	if(region != '0') UrlBase += "&region="+region;
129
	if(region != '0') UrlBase += "&region="+region;
130
	if(mois != '0') UrlBase += "&mois="+mois;
130
	if(mois != '0') UrlBase += "&mois="+mois;
131
	UrlBase += "&cacher_criteres=1";
131
	UrlBase += "&cacher_criteres=1";
132
 
132
 
133
	UrlBase = UrlBase.replace('?&','?');
133
	UrlBase = UrlBase.replace('?&','?');
134
 
134
 
135
	code_widget = '<iframe src="'+UrlBase+'" width="735px" height="650px"><p>Votre navigateur ne supporte pas les iframes.</p></iframe>'
135
	code_widget = '<iframe src="'+UrlBase+'" width="735px" height="650px"><p>Votre navigateur ne supporte pas les iframes.</p></iframe>'
136
 
136
 
137
	return code_widget;
137
	return code_widget;
138
}
138
}
139
 
139
 
140
String.prototype.hashCode = function() {
140
String.prototype.hashCode = function() {
141
  var hash = 0, i, chr;
141
  var hash = 0, i, chr;
142
  if (this.length === 0) return hash;
142
  if (this.length === 0) return hash;
143
  for (i = 0; i < this.length; i++) {
143
  for (i = 0; i < this.length; i++) {
144
    chr   = this.charCodeAt(i);
144
    chr   = this.charCodeAt(i);
145
    hash  = ((hash << 5) - hash) + chr;
145
    hash  = ((hash << 5) - hash) + chr;
146
    hash |= 0; // Convert to 32bit integer
146
    hash |= 0; // Convert to 32bit integer
147
  }
147
  }
148
  return hash;
148
  return hash;
149
};
149
};
150
 
150
 
151
function renverserTableauEtHashcoderIndex(trans) {
151
function renverserTableauEtHashcoderIndex(trans) {
152
    var key, tmp_ar = {};
152
    var key, tmp_ar = {};
153
 
153
 
154
    for (key in trans)
154
    for (key in trans)
155
    {
155
    {
156
        if (trans.hasOwnProperty(key))
156
        if (trans.hasOwnProperty(key))
157
        {
157
        {
158
            tmp_ar[trans[key].hashCode()] = key;
158
            tmp_ar[trans[key].hashCode()] = key;
159
        }
159
        }
160
    }
160
    }
161
 
161
 
162
    return tmp_ar;
162
    return tmp_ar;
163
}
163
}
164
 
164
 
165
function trierTableau(tableau) {
165
function trierTableau(tableau) {
166
	if(!tableau) {
166
	if(!tableau) {
167
		return;
167
		return;
168
	}
168
	}
169
 
169
 
170
	var tableau_trie = tableau.slice(0);
170
	var tableau_trie = tableau.slice(0);
171
	tableau_trie.sort(function(a,b){
171
	tableau_trie.sort(function(a,b){
172
    return a.localeCompare(b);
172
    return a.localeCompare(b);
173
	});
173
	});
174
 
174
 
175
	return tableau_trie;
175
	return tableau_trie;
176
}
176
}
177
 
177
 
178
$('#lien_cette_recherche').ready(function() {
178
$('#lien_cette_recherche').ready(function() {
179
	$('#lien_cette_recherche').click(function() {
179
	$('#lien_cette_recherche').click(function() {
180
		window.alert(obtenirCodeWidget());
180
		window.alert(obtenirCodeWidget());
181
		return false;
181
		return false;
182
	});
182
	});
183
});
183
});
184
 
184
 
185
function selectionnerParametresDynamiquesParDefaut() {
185
function selectionnerParametresDynamiquesParDefaut() {
186
	if($('.conteneur_selecteur_liste_annees').is(':visible')) {
186
	if($('.conteneur_selecteur_liste_annees').is(':visible')) {
187
		var annee_courante = (new Date()).getFullYear();
187
		var annee_courante = (new Date()).getFullYear();
188
		$('#annee_numero_'+annee_courante).attr( "checked", true );
188
		$('#annee_numero_'+annee_courante).attr( "checked", true );
189
	}
189
	}
190
	premier_chargement = false;
190
	premier_chargement = false;
191
}
191
}
192
 
192
 
193
var premier_chargement = true;
193
var premier_chargement = true;
194
$(document).ready(function() {
194
$(document).ready(function() {
195
	traiterParametresUrl();
195
	traiterParametresUrl();
196
});
196
});
197
 
197
 
198
/**
198
/**
199
************************************************************************************************
199
************************************************************************************************
200
************************************************************************************************
200
************************************************************************************************
201
 
201
 
202
    Fonctions concernant les gestion des filtres sur la carte
202
    Fonctions concernant les gestion des filtres sur la carte
203
 
203
 
204
************************************************************************************************
204
************************************************************************************************
205
************************************************************************************************
205
************************************************************************************************
206
**/
206
**/
207
 
207
 
208
function setDateSlider() {
208
function setDateSlider() {
209
	numeroJour = $("#slider_date").slider("value");
209
	numeroJour = $("#slider_date").slider("value");
210
	dateObs = new Date(annee,0,0);
210
	dateObs = new Date(annee,0,0);
211
	dateObs.setDate(dateObs.getDate()+numeroJour);
211
	dateObs.setDate(dateObs.getDate()+numeroJour);
212
 
212
 
213
	mois = dateObs.getMonth();
213
	mois = dateObs.getMonth();
214
	jour = dateObs.getDay();
214
	jour = dateObs.getDay();
215
	afficherObservations();
215
	afficherObservations();
216
}
216
}
217
 
217
 
218
function initialiserSliderDates() {
218
function initialiserSliderDates() {
219
 
219
 
220
	date_min = 1;
220
	date_min = 1;
221
	date_max = 365;
221
	date_max = 365;
222
 
222
 
223
	$("#slider_date").slider({
223
	$("#slider_date").slider({
224
								min: date_min,
224
								min: date_min,
225
								max: date_max,
225
								max: date_max,
226
								value: valeur_slider_defaut
226
								value: valeur_slider_defaut
227
							});
227
							});
228
 
228
 
229
	taille_criteres = Math.round($("#slider_date").width()/(liste_mois.length));
229
	taille_criteres = Math.round($("#slider_date").width()/(liste_mois.length));
230
 
230
 
231
	valeurs_slider = '<table id="table_dates"><tbody><tr>';
231
	valeurs_slider = '<table id="table_dates"><tbody><tr>';
232
 
232
 
233
	for (i in liste_mois) {
233
	for (i in liste_mois) {
234
		valeurs_slider += '<td class="conteneur_date">'+liste_mois[i]+'</td>';
234
		valeurs_slider += '<td class="conteneur_date">'+liste_mois[i]+'</td>';
235
	}
235
	}
236
 
236
 
237
	valeurs_slider += '</tr></tbody></table>';
237
	valeurs_slider += '</tr></tbody></table>';
238
 
238
 
239
	$("conteneur_date").css(".conteneur_date{ width:"+taille_criteres+"px;}");
239
	$("conteneur_date").css(".conteneur_date{ width:"+taille_criteres+"px;}");
240
 
240
 
241
	$("#valeurs_date").html(valeurs_slider);
241
	$("#valeurs_date").html(valeurs_slider);
242
 
242
 
243
	$("#slider_date").bind("slidestop", function(event, ui) {
243
	$("#slider_date").bind("slidestop", function(event, ui) {
244
		setDateSlider();
244
		setDateSlider();
245
		return true;
245
		return true;
246
	});
246
	});
247
 
247
 
248
	$(window).bind("resize", resizeWindow);
248
	$(window).bind("resize", resizeWindow);
249
	function resizeWindow( e ) {
249
	function resizeWindow( e ) {
250
		taille_criteres = Math.round($("#slider_date").width()/(liste_mois.length));
250
		taille_criteres = Math.round($("#slider_date").width()/(liste_mois.length));
251
		$("#css_slider").html(".conteneur_date{ width:"+taille_criteres+"px;}");
251
		$("#css_slider").html(".conteneur_date{ width:"+taille_criteres+"px;}");
252
	}
252
	}
253
}
253
}
254
 
254
 
255
function initialiserListeRegion() {
255
function initialiserListeRegion() {
256
 
256
 
257
	$('#selecteur_liste_region').change(function() {
257
	$('#selecteur_liste_region').change(function() {
258
		region = $('select#selecteur_liste_region option:selected').val();
258
		region = $('select#selecteur_liste_region option:selected').val();
259
		obtenirObservations();
259
		obtenirObservations();
260
	});
260
	});
261
}
261
}
262
 
262
 
263
function initialiserListeDepartement() {
263
function initialiserListeDepartement() {
264
 
264
 
265
	$('#selecteur_liste_departement').change(function() {
265
	$('#selecteur_liste_departement').change(function() {
266
		departement = $('select#selecteur_liste_departement option:selected').val();
266
		departement = $('select#selecteur_liste_departement option:selected').val();
267
		obtenirObservations();
267
		obtenirObservations();
268
	});
268
	});
269
}
269
}
270
 
270
 
271
 
271
 
272
function initialiserListeTypesEspeces() {
272
function initialiserListeTypesEspeces() {
273
 
273
 
274
	$('#selecteur_liste_types_especes').change(function() {
274
	$('#selecteur_liste_types_especes').change(function() {
275
		type_espece = $('select#selecteur_liste_types_especes option:selected').val();
275
		type_espece = $('select#selecteur_liste_types_especes option:selected').val();
276
		modifierTableauEspeces();
276
		modifierTableauEspeces();
277
		obtenirObservations();
277
		obtenirObservations();
278
	});
278
	});
279
}
279
}
280
 
280
 
281
function incrementerValeurSlider() {
281
function incrementerValeurSlider() {
282
	var valeur_en_cours = $('#slider_date').slider("value");
282
	var valeur_en_cours = $('#slider_date').slider("value");
283
	if($('#slider_date').slider("value") < $('#slider_date').slider("option", "max")) {
283
	if($('#slider_date').slider("value") < $('#slider_date').slider("option", "max")) {
284
		valeur_en_cours++;
284
		valeur_en_cours++;
285
		$('#slider_date').slider("value",valeur_en_cours);
285
		$('#slider_date').slider("value",valeur_en_cours);
286
		setDateSlider();
286
		setDateSlider();
287
	} else {
287
	} else {
288
		clearInterval(timerSlider);
288
		clearInterval(timerSlider);
289
		$('#demarrer_slider').removeAttr('disabled');
289
		$('#demarrer_slider').removeAttr('disabled');
290
	}
290
	}
291
}
291
}
292
 
292
 
293
function initialiserBoutonsSlider() {
293
function initialiserBoutonsSlider() {
294
 
294
 
295
	$('#demarrer_slider').click(function() {
295
	$('#demarrer_slider').click(function() {
296
 
296
 
297
		if($('#slider_date').slider("value") == $('#slider_date').slider("option","max")) {
297
		if($('#slider_date').slider("value") == $('#slider_date').slider("option","max")) {
298
			min_slider = $('#slider_date').slider("option","min");
298
			min_slider = $('#slider_date').slider("option","min");
299
			$('#slider_date').slider("value",min_slider);
299
			$('#slider_date').slider("value",min_slider);
300
		}
300
		}
301
 
301
 
302
		timerSlider = setInterval("incrementerValeurSlider()",150);
302
		timerSlider = setInterval("incrementerValeurSlider()",150);
303
		$('#demarrer_slider').attr('disabled', 'disabled');
303
		$('#demarrer_slider').attr('disabled', 'disabled');
304
	});
304
	});
305
 
305
 
306
	$('#arreter_slider').click(function() {
306
	$('#arreter_slider').click(function() {
307
		if(timerSlider != null) {
307
		if(timerSlider != null) {
308
			clearInterval(timerSlider);
308
			clearInterval(timerSlider);
309
			$('#demarrer_slider').removeAttr('disabled');
309
			$('#demarrer_slider').removeAttr('disabled');
310
		}
310
		}
311
	});
311
	});
312
 
312
 
313
}
313
}
314
 
314
 
315
function initialiserValeursParDefaut() {
315
function initialiserValeursParDefaut() {
316
	type_espece = 0;
316
	type_espece = 0;
317
	$('select#selecteur_liste_types_especes').val("0");
317
	$('select#selecteur_liste_types_especes').val("0");
318
	modifierTableauEspeces();
318
	modifierTableauEspeces();
319
	obtenirObservations();
319
	obtenirObservations();
320
}
320
}
321
 
321
 
322
$('#slider_date').ready(function() {
322
$('#slider_date').ready(function() {
323
	initialiserSliderDates();
323
	initialiserSliderDates();
324
	initialiserBoutonsSlider();
324
	initialiserBoutonsSlider();
325
	initialiserListeTypesEspeces();
325
	initialiserListeTypesEspeces();
326
	initialiserListeEspeces();
326
	initialiserListeEspeces();
327
	initialiserListeEvenements();
327
	initialiserListeEvenements();
328
	initialiserListeAnnees();
328
	initialiserListeAnnees();
329
	initialiserValeursParDefaut();
329
	initialiserValeursParDefaut();
330
	initialiserListeRegion();
330
	initialiserListeRegion();
331
	initialiserListeDepartement()
331
	initialiserListeDepartement()
332
});
332
});
333
 
333
 
334
 
334
 
335
/**
335
/**
336
	************************************************************************************************
336
	************************************************************************************************
337
	************************************************************************************************
337
	************************************************************************************************
338
 
338
 
339
	    Fonctions concernant la carte permettant de pointer d'afficher l'emplacement des observation
339
	    Fonctions concernant la carte permettant de pointer d'afficher l'emplacement des observation
340
 
340
 
341
	************************************************************************************************
341
	************************************************************************************************
342
	************************************************************************************************
342
	************************************************************************************************
343
**/
343
**/
344
function initialiserCarte() {
344
function initialiserCarte() {
345
 
345
 
346
	if($('#map_canvas').length == 0) {
346
	if($('#map_canvas').length == 0) {
347
		return;
347
		return;
348
	}
348
	}
349
 
349
 
350
	var latlng = new google.maps.LatLng(47.0504, 2.2347);
350
	var latlng = new google.maps.LatLng(47.0504, 2.2347);
351
	var myOptions = {
351
	var myOptions = {
352
		zoom: 5,
352
		zoom: 5,
353
		center:latlng,
353
		center:latlng,
354
		mapTypeId: google.maps.MapTypeId.ROADMAP,
354
		mapTypeId: google.maps.MapTypeId.ROADMAP,
355
		mapTypeControlOptions: {
355
		mapTypeControlOptions: {
356
			mapTypeIds: ['OSM',
356
			mapTypeIds: ['OSM',
357
			             google.maps.MapTypeId.ROADMAP,
357
			             google.maps.MapTypeId.ROADMAP,
358
			             google.maps.MapTypeId.HYBRID,
358
			             google.maps.MapTypeId.HYBRID,
359
			             google.maps.MapTypeId.SATELLITE,
359
			             google.maps.MapTypeId.SATELLITE,
360
			             google.maps.MapTypeId.TERRAIN]
360
			             google.maps.MapTypeId.TERRAIN]
361
		}
361
		}
362
	};
362
	};
363
 
363
 
364
	var osmMapType = new google.maps.ImageMapType({
364
	var osmMapType = new google.maps.ImageMapType({
365
		getTileUrl: function(coord, zoom) {
365
		getTileUrl: function(coord, zoom) {
366
			return "http://tile.openstreetmap.org/" +
366
			return "http://tile.openstreetmap.org/" +
367
			zoom + "/" + coord.x + "/" + coord.y + ".png";
367
			zoom + "/" + coord.x + "/" + coord.y + ".png";
368
		},
368
		},
369
		tileSize: new google.maps.Size(256, 256),
369
		tileSize: new google.maps.Size(256, 256),
370
		isPng: true,
370
		isPng: true,
371
		alt: "OpenStreetMap",
371
		alt: "OpenStreetMap",
372
		name: "OSM",
372
		name: "OSM",
373
		maxZoom: 19
373
		maxZoom: 19
374
	});
374
	});
375
 
375
 
376
	map = new google.maps.Map(document.getElementById("map_canvas"),
376
	map = new google.maps.Map(document.getElementById("map_canvas"),
377
    	myOptions);
377
    	myOptions);
378
	// Ajout de la couche OSM à la carte
378
	// Ajout de la couche OSM à la carte
379
	map.mapTypes.set('OSM', osmMapType);
379
	map.mapTypes.set('OSM', osmMapType);
380
 
380
 
381
	marker = new google.maps.Marker({
381
	marker = new google.maps.Marker({
382
	      position: latlng,
382
	      position: latlng,
383
	      title:""
383
	      title:""
384
	});
384
	});
385
 
385
 
386
	chargerLimitesCommunales();
386
	chargerLimitesCommunales();
387
 
387
 
388
	$('.lien_vers_profil').live('click', function(event) {
388
	$('.lien_vers_profil').live('click', function(event) {
389
		event.preventDefault();
389
		event.preventDefault();
390
		window.open($(this).attr('href'));
390
		window.open($(this).attr('href'));
391
		return false;
391
		return false;
392
	});
392
	});
393
}
393
}
394
 
394
 
395
function chargerLimitesCommunales() {
395
function chargerLimitesCommunales() {
396
	if (urlsLimitesCommunales != null) {
396
	if (urlsLimitesCommunales != null) {
397
		for (urlId in urlsLimitesCommunales) {
397
		for (urlId in urlsLimitesCommunales) {
398
			var url = urlsLimitesCommunales[urlId];
398
			var url = urlsLimitesCommunales[urlId];
399
			ctaLayer = new google.maps.KmlLayer(url, {preserveViewport: false});
399
			ctaLayer = new google.maps.KmlLayer(url, {preserveViewport: false});
400
			ctaLayer.setMap(map);
400
			ctaLayer.setMap(map);
401
		}
401
		}
402
	}
402
	}
403
}
403
}
404
 
404
 
405
var obs_xhr = null;
405
var obs_xhr = null;
406
function obtenirObservations() {
406
function obtenirObservations() {
407
 
407
 
408
	if(obs_xhr != null) {
408
	if(obs_xhr != null) {
409
		viderMarqueurs();
409
		viderMarqueurs();
410
		console.log('annulation de la xhr');
410
		console.log('annulation de la xhr');
411
		obs_xhr.abort();
411
		obs_xhr.abort();
412
	}
412
	}
413
 
413
 
414
	annee = getAnneeSelectionnee();
414
	annee = getAnneeSelectionnee();
415
	requete = '?annee='+annee;
415
	requete = '?annee='+annee;
416
 
416
 
417
	if(type_espece != '0') {
417
	if(type_espece != '0') {
418
		requete += '&type_espece='+type_espece;
418
		requete += '&type_espece='+type_espece;
419
	}
419
	}
420
 
420
 
421
	var espece = getEspeceSelectionnee();
421
	var espece = getEspeceSelectionnee();
422
	if(espece != '0') {
422
	if(espece != '0') {
423
		requete += '&espece='+espece;
423
		requete += '&espece='+espece;
424
	}
424
	}
425
 
425
 
426
	if(evenement != '0') {
426
	if(evenement != '0') {
427
		requete += '&evenement='+evenement;
427
		requete += '&evenement='+evenement;
428
	}
428
	}
429
 
429
 
430
	if(departement != '0') {
430
	if(departement != '0') {
431
		requete += '&departement='+departement;
431
		requete += '&departement='+departement;
432
	}
432
	}
433
 
433
 
434
	if(region != '0') {
434
	if(region != '0') {
435
		requete += '&region='+region;
435
		requete += '&region='+region;
436
	}
436
	}
437
 
437
 
438
	$.get(getUrlBaseJrest()+'OdsExport/ExportObservationJson/'+requete, function(data) {
438
	$.get(getUrlBaseJrest()+'OdsExport/ExportObservationJson/'+requete, function(data) {
439
 
439
 
440
		obs_xhr = null;
440
		obs_xhr = null;
441
 
441
 
442
		infos_observations = data;
442
		infos_observations = data;
443
 
443
 
444
		nb_observations_par_espece = {};
444
		nb_observations_par_espece = {};
445
		nb_observations_par_annee = {};
445
		nb_observations_par_annee = {};
446
 
446
 
447
		if(tableau_marqueurs.length > 0) {
447
		if(tableau_marqueurs.length > 0) {
448
			viderMarqueurs();
448
			viderMarqueurs();
449
		}
449
		}
450
 
450
 
451
		for(i in infos_observations) {
451
		for(i in infos_observations) {
452
			creerEtAjouterMarqueur(i, infos_observations[i]);
452
			creerEtAjouterMarqueur(i, infos_observations[i]);
453
		}
453
		}
454
 
454
 
455
		afficherObservations();
455
		afficherObservations();
456
	});
456
	});
457
}
457
}
458
 
458
 
459
function creerEtAjouterMarqueur(id_marqueur, infos_obs) {
459
function creerEtAjouterMarqueur(id_marqueur, infos_obs) {
460
 
460
 
461
	latlng = new google.maps.LatLng(infos_obs['latitude'],infos_obs['longitude']);
461
	latlng = new google.maps.LatLng(infos_obs['latitude'],infos_obs['longitude']);
462
 
462
 
463
	var chaine_couleur = '';
463
	var chaine_couleur = '';
464
 
464
 
465
	for(i in infos_obs.obs) {
465
	for(i in infos_obs.obs) {
466
		var observation = infos_obs.obs[i];
466
		var observation = infos_obs.obs[i];
467
 
467
 
468
		if(typeof(tableau_couleurs_en_cours[observation.id_espece]) != 'undefined') {
468
		if(typeof(tableau_couleurs_en_cours[observation.id_espece]) != 'undefined') {
469
			chaine_couleur += tableau_couleurs_en_cours[observation.id_espece]+",";
469
			chaine_couleur += tableau_couleurs_en_cours[observation.id_espece]+",";
470
		}
470
		}
471
 
471
 
472
		if(!nb_observations_par_espece[observation.id_espece]) {
472
		if(!nb_observations_par_espece[observation.id_espece]) {
473
			nb_observations_par_espece[observation.id_espece] = 0;
473
			nb_observations_par_espece[observation.id_espece] = 0;
474
		}
474
		}
475
		nb_observations_par_espece[observation.id_espece]++;
475
		nb_observations_par_espece[observation.id_espece]++;
476
 
476
 
477
		var annee_obs = observation.date.split('/')[2];
477
		var annee_obs = observation.date.split('/')[2];
478
		if(!nb_observations_par_annee[annee_obs]) {
478
		if(!nb_observations_par_annee[annee_obs]) {
479
			nb_observations_par_annee[annee_obs] = 0;
479
			nb_observations_par_annee[annee_obs] = 0;
480
		}
480
		}
481
		nb_observations_par_annee[annee_obs]++;
481
		nb_observations_par_annee[annee_obs]++;
482
	}
482
	}
483
 
483
 
484
	chaine_couleur = chaine_couleur.slice(0,chaine_couleur.length - 1);
484
	chaine_couleur = chaine_couleur.slice(0,chaine_couleur.length - 1);
485
  var image = obtenirImagePourChaineCouleur(chaine_couleur);
485
  var image = obtenirImagePourChaineCouleur(chaine_couleur);
486
 
486
 
487
 	tableau_marqueurs[id_marqueur] = new google.maps.Marker({
487
 	tableau_marqueurs[id_marqueur] = new google.maps.Marker({
488
	      position: latlng,
488
	      position: latlng,
489
	      title:infos_obs.evenenement,
489
	      title:infos_obs.evenenement,
490
	      icon:image,
490
	      icon:image,
491
	      optimized: false
491
	      optimized: false
492
	});
492
	});
493
 
493
 
494
	google.maps.event.addListener(tableau_marqueurs[id_marqueur], 'click', function() {
494
	google.maps.event.addListener(tableau_marqueurs[id_marqueur], 'click', function() {
495
		contenu_fenetre = formaterContenuFenetre(infos_obs.obs);
495
		contenu_fenetre = formaterContenuFenetre(infos_obs.obs);
496
		infowindow.close();
496
		infowindow.close();
497
		infowindow.setContent(contenu_fenetre);
497
		infowindow.setContent(contenu_fenetre);
498
		infowindow.open(map,this);
498
		infowindow.open(map,this);
499
	});
499
	});
500
 
500
 
501
	tableau_marqueurs[id_marqueur].setDraggable(false);
501
	tableau_marqueurs[id_marqueur].setDraggable(false);
502
	tableau_marqueurs[id_marqueur].setClickable(true);
502
	tableau_marqueurs[id_marqueur].setClickable(true);
503
 
503
 
504
	tableau_marqueurs[id_marqueur].setMap(map);
504
	tableau_marqueurs[id_marqueur].setMap(map);
505
 
505
 
506
}
506
}
507
 
507
 
508
function viderMarqueurs() {
508
function viderMarqueurs() {
509
 
509
 
510
	infowindow.close();
510
	infowindow.close();
511
	for(i in tableau_marqueurs) {
511
	for(i in tableau_marqueurs) {
512
		tableau_marqueurs[i].setMap(null);
512
		tableau_marqueurs[i].setMap(null);
513
	}
513
	}
514
 
514
 
515
	tableau_marqueurs = new Array();
515
	tableau_marqueurs = new Array();
516
}
516
}
517
 
517
 
518
 
518
 
519
function obtenirImagePourChaineCouleur(chaine_couleur) {
519
function obtenirImagePourChaineCouleur(chaine_couleur) {
520
 
520
 
521
	chaine_couleur = encodeURIComponent(chaine_couleur);
521
	chaine_couleur = encodeURIComponent(chaine_couleur);
522
	var image = getUrlBaseJrest()+"OdsMarqueur/point?couleurs="+chaine_couleur;
522
	var image = getUrlBaseJrest()+"OdsMarqueur/point?couleurs="+chaine_couleur;
523
 
523
 
524
    return image;
524
    return image;
525
}
525
}
526
 
526
 
527
function convertirDateObsVersJs(chaine_date) {
527
function convertirDateObsVersJs(chaine_date) {
528
 
528
 
529
	tableau_date = chaine_date.split('/');
529
	tableau_date = chaine_date.split('/');
530
	date_obs = new Date();
530
	date_obs = new Date();
531
 
531
 
532
	date_obs.setDate(tableau_date[0]);
532
	date_obs.setDate(tableau_date[0]);
533
	date_obs.setMonth(tableau_date[1]);
533
	date_obs.setMonth(tableau_date[1]);
534
	date_obs.setFullYear(tableau_date[2]);
534
	date_obs.setFullYear(tableau_date[2]);
535
 
535
 
536
	return date_obs;
536
	return date_obs;
537
}
537
}
538
 
538
 
539
function dateEstDansIntervalle(t_obs) {
539
function dateEstDansIntervalle(t_obs) {
540
 
540
 
541
	date_obs = convertirDateObsVersJs(t_obs);
541
	date_obs = convertirDateObsVersJs(t_obs);
542
 
542
 
543
	dans_intervalle = false;
543
	dans_intervalle = false;
544
 
544
 
545
	var dateDebutAnnee = new Date();
545
	var dateDebutAnnee = new Date();
546
	dateDebutAnnee.setDate(1);
546
	dateDebutAnnee.setDate(1);
547
	dateDebutAnnee.setMonth(1);
547
	dateDebutAnnee.setMonth(1);
548
	dateDebutAnnee.setFullYear(date_obs.getFullYear());
548
	dateDebutAnnee.setFullYear(date_obs.getFullYear());
549
	var quantieme = (date_obs.getTime() - dateDebutAnnee.getTime()) / (24 * 3600 * 1000)+1;
549
	var quantieme = (date_obs.getTime() - dateDebutAnnee.getTime()) / (24 * 3600 * 1000)+1;
550
 
550
 
551
	if($('#slider_date').slider("value") >= quantieme) {
551
	if($('#slider_date').slider("value") >= quantieme) {
552
		dans_intervalle = true;
552
		dans_intervalle = true;
553
	}
553
	}
554
 
554
 
555
	return dans_intervalle;
555
	return dans_intervalle;
556
}
556
}
557
 
557
 
558
function comparerDates(date_1, date_2){
558
function comparerDates(date_1, date_2){
559
	diff = date_1.getTime()-date_2.getTime();
559
	diff = date_1.getTime()-date_2.getTime();
560
	return (diff==0?diff:diff/Math.abs(diff));
560
	return (diff==0?diff:diff/Math.abs(diff));
561
}
561
}
562
 
562
 
563
function obtenirMarqueurPourStade(stade) {
563
function obtenirMarqueurPourStade(stade) {
564
 
564
 
565
	iconeStade = '../images/marqueur_'+stade+'.png';
565
	iconeStade = '../images/marqueur_'+stade+'.png';
566
 
566
 
567
	return iconeStade;
567
	return iconeStade;
568
}
568
}
569
 
569
 
570
function formaterContenuFenetre(infos_obs) {
570
function formaterContenuFenetre(infos_obs) {
571
 
571
 
572
	contenu_fenetre = '';
572
	contenu_fenetre = '';
573
	date_courante = new Date(annee,mois,jour);
573
	date_courante = new Date(annee,mois,jour);
574
 
574
 
575
	for(i in infos_obs) {
575
	for(i in infos_obs) {
576
 
576
 
577
		t_obs = infos_obs[i].date;
577
		t_obs = infos_obs[i].date;
578
 
578
 
579
		if(dateEstDansIntervalle(t_obs)) {
579
		if(dateEstDansIntervalle(t_obs)) {
580
			nom_stade ='';
580
			nom_stade ='';
581
			if(infos_obs[i].code_bbch != '') {
581
			if(infos_obs[i].code_bbch != '') {
582
				nom_stade = ' stade '+infos_obs[i].code_bbch;
582
				nom_stade = ' stade '+infos_obs[i].code_bbch;
583
			}
583
			}
584
 
584
 
585
			contenu_fenetre += '<div class="fenetre_infos">';
585
			contenu_fenetre += '<div class="fenetre_infos">';
586
			contenu_fenetre += '<div class="nom_sci">'+infos_obs[i].nom_scientifique+'</div>';
586
			contenu_fenetre += '<div class="nom_sci">'+infos_obs[i].nom_scientifique+'</div>';
587
			contenu_fenetre += '<div class="nom_sci">'+infos_obs[i].evenenement+nom_stade+'</div>';
587
			contenu_fenetre += '<div class="nom_sci">'+infos_obs[i].evenenement+nom_stade+'</div>';
588
			contenu_fenetre += '<div class="date_obs"> Observ&eacute; le : '+infos_obs[i].date+' </div>';
588
			contenu_fenetre += '<div class="date_obs"> Observ&eacute; le : '+infos_obs[i].date+' </div>';
589
			contenu_fenetre += construireUrlProfilParticipant(infos_obs[i].participant);
589
			contenu_fenetre += construireUrlProfilParticipant(infos_obs[i].participant);
590
			contenu_fenetre += '</div><br />';
590
			contenu_fenetre += '</div><br />';
591
		}
591
		}
592
	}
592
	}
593
 
593
 
594
	return contenu_fenetre;
594
	return contenu_fenetre;
595
}
595
}
596
 
596
 
597
function construireUrlProfilParticipant(id) {
597
function construireUrlProfilParticipant(id) {
598
	return '<a class="lien_vers_profil" href="http://obs-saisons.fr/user/'+id+'"> Voir l\'auteur </a>';
598
	return '<a class="lien_vers_profil" href="http://obs-saisons.fr/user/'+id+'"> Voir l\'auteur </a>';
599
}
599
}
-
 
600
 
-
 
601
function getCouleurAleatoire() {
-
 
602
  var letters = '0123456789ABCDEF';
-
 
603
  var color = '#';
-
 
604
  for (var i = 0; i < 6; i++) {
-
 
605
    color += letters[Math.floor(Math.random() * 16)];
-
 
606
  }
-
 
607
  return color;
600
 
608
}
601
 
609
 
602
$('#map_canvas').ready(function() {
610
$('#map_canvas').ready(function() {
603
	initialiserCarte();
611
	initialiserCarte();
604
});
612
});