Subversion Repositories eFlore/Applications.eflore-consultation

Rev

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

Rev 1209 Rev 1243
1
//+----------------------------------------------------------------------------------------------------------+
1
//+----------------------------------------------------------------------------------------------------------+
2
// Onglets et Portlets
2
// Onglets et Portlets
3
/**
3
/**
4
 * Les variables suivantes ont été ajoutée par php
4
 * Les variables suivantes ont été ajoutée par php
5
 * 
5
 * 
6
 * var urlTexteBrutSectionWikiTpl : url pour obtenir le texte brut d'une section de wiki
6
 * var urlTexteBrutSectionWikiTpl : url pour obtenir le texte brut d'une section de wiki
7
 * var urlEditionSectionWikiTpl : url pour éditer une section du wiki 
7
 * var urlEditionSectionWikiTpl : url pour éditer une section du wiki 
8
 * var urlTexteFormateSectionWikiTpl : url pour obtenir le texte formaté en html d'une section de wiki
8
 * var urlTexteFormateSectionWikiTpl : url pour obtenir le texte formaté en html d'une section de wiki
9
 * var pageWikiTaxon : url pour obtenir le texte formaté en html d'une section de wiki
9
 * var pageWikiTaxon : url pour obtenir le texte formaté en html d'une section de wiki
10
 * var urlPopup = url de base pour les popup contenant du code un peu complexe
10
 * var urlPopup = url de base pour les popup contenant du code un peu complexe
11
 * 
11
 * 
12
*/
12
*/
13
 
13
 
14
/**
14
/**
15
 * Variables globales du script
15
 * Variables globales du script
16
 */
16
 */
17
var modules = Array();
17
var modules = Array();
18
var tableauOnglets = Array();
18
var tableauOnglets = Array();
19
var nbOngletsInvisibles = 0;
19
var nbOngletsInvisibles = 0;
20
var ongletSyntheseCharge = true;
20
var ongletSyntheseCharge = true;
21
var ongletIllustrationsCharge = false;
21
var ongletIllustrationsCharge = false;
22
 
22
 
23
/** Classe Module
23
/** Classe Module
24
* Définit un module de type portlet
24
* Définit un module de type portlet
25
**/
25
**/
26
function Module(id, module, onglet, statique) {
26
function Module(id, module, onglet, statique) {
27
 
27
 
28
	// Variables de classe : identifiant, titre, et le HTML du résumé à afficher dans le contenu
28
	// Variables de classe : identifiant, titre, et le HTML du résumé à afficher dans le contenu
29
	this.id = id;
29
	this.id = id;
30
	this.titre;
30
	this.titre;
31
	this.htmlResume;
31
	this.htmlResume;
32
	this.statique = statique;
32
	this.statique = statique;
33
 
33
 
34
	// Les objets Portlet et Onglet que l'ont garde en mémoire pour pouvoir y accéder facilement 
34
	// Les objets Portlet et Onglet que l'ont garde en mémoire pour pouvoir y accéder facilement 
35
	this.portlet = module;
35
	this.portlet = module;
36
	this.onglet;
36
	this.onglet;
37
 
37
 
38
	// creerPortlet 
38
	// creerPortlet 
39
	// Créer l'objet Portlet HTML à afficher et le stocker dans les variables de classe
39
	// Créer l'objet Portlet HTML à afficher et le stocker dans les variables de classe
40
	this.creerPortlet = function() {
40
	this.creerPortlet = function() {
41
		var objet = this;
41
		var objet = this;
42
 
42
 
43
		var titre = $(module).children('.titre');
43
		var titre = $(module).children('.titre');
44
		titre.className = 'titre ui-widget-header ui-corner-all';
44
		titre.className = 'titre ui-widget-header ui-corner-all';
45
		titre.id = 'titre-' + this.id;
45
		titre.id = 'titre-' + this.id;
46
		
46
		
47
		var lienTitre = $(module).children('.titre').children('a');
47
		var lienTitre = $(module).children('.titre').children('a');
48
		lienTitre.attr('href','#'+this.id);
48
		lienTitre.attr('href','#'+this.id);
49
		lienTitre.click(function() {
49
		lienTitre.click(function() {
50
			if (objet.onglet.is(':visible')) {
-
 
51
				$('#zone_onglets').tabs('select', '#ui-tabs-'+objet.id);
50
			$('#zone_onglets').tabs( "option", "active", (objet.id -1));
52
			}
-
 
53
			return false;
51
			return false;
54
		});
52
		});
55
		lienTitre.hover(function() {
53
		lienTitre.hover(function() {
56
			if (!objet.ongletEstAffiche()) {
54
			if (!objet.ongletEstAffiche()) {
57
				$(this).css({"color":"white"});
55
				$(this).css({"color":"white"});
58
			} else {
56
			} else {
59
				$(this).css({"color":"#E78F08"});
57
				$(this).css({"color":"#E78F08"});
60
			}
58
			}
61
		}); 
59
		}); 
62
		
60
		
63
		lienTitre.mouseout(function() {
61
		lienTitre.mouseout(function() {
64
			$(this).css({"color":"white"});
62
			$(this).css({"color":"white"});
65
		});
63
		});
66
 
64
 
67
		var contenu = $(module).children('.contenu');
65
		var contenu = $(module).children('.contenu');
68
		contenu.id = 'contenu-' + this.id;
66
		contenu.id = 'contenu-' + this.id;
69
		contenu.className ='contenu';
67
		contenu.className ='contenu';
70
 
68
 
71
		var lienToggle = document.createElement('span');
69
		var lienToggle = document.createElement('span');
72
		lienToggle.className = 'lienToggle ui-icon ui-icon-minusthick';
70
		lienToggle.className = 'lienToggle ui-icon ui-icon-minusthick';
73
		$(titre).append(lienToggle);
71
		$(titre).append(lienToggle);
74
		$(lienToggle).click(function() {
72
		$(lienToggle).click(function() {
75
			objet.afficherCacherModule();
73
			objet.afficherCacherModule();
76
		});
74
		});
77
 
75
 
78
		this.portlet = module;
76
		this.portlet = module;
79
		return module;	
77
		return module;	
80
	}
78
	}
81
	
79
	
82
	this.ongletEstAffiche = function() {
80
	this.ongletEstAffiche = function() {
83
		return $(this.onglet.selector).is(':visible');
81
		return $(this.onglet.selector).is(':visible');
84
	}
82
	}
85
 
83
 
86
	// Crée l'objet Onglet HTML
84
	// Crée l'objet Onglet HTML
87
	this.creerOnglet = function() {
85
	this.creerOnglet = function() {
88
		var objet = this;
86
		var objet = this;
89
		this.onglet = onglet;
87
		this.onglet = onglet;
90
	}
88
	}
91
		
89
		
92
	// Initialisation de l'objet
90
	// Initialisation de l'objet
93
	this.creerPortlet();
91
	this.creerPortlet();
94
	this.creerOnglet();
92
	this.creerOnglet();
95
	
93
	
96
	// Accesseurs de la classe
94
	// Accesseurs de la classe
97
	this.getOnglet = function() {
95
	this.getOnglet = function() {
98
		return this.onglet;	
96
		return this.onglet;	
99
	}
97
	}
100
	
98
	
101
	this.getPortlet = function() {
99
	this.getPortlet = function() {
102
		return this.portlet;
100
		return this.portlet;
103
	}
101
	}
104
	
102
	
105
	// fonctions d'affichage et cachage (je sais pas si on dit ça comme ça) des onglets
103
	// fonctions d'affichage et cachage (je sais pas si on dit ça comme ça) des onglets
106
	this.afficherCacherModule = function() { 
104
	this.afficherCacherModule = function() { 
107
		$(this.portlet).find(".lienToggle").toggleClass("ui-icon-plusthick");
105
		$(this.portlet).find(".lienToggle").toggleClass("ui-icon-plusthick");
108
		$(this.portlet).find(".lienToggle").toggleClass("ui-icon-minusthick");
106
		$(this.portlet).find(".lienToggle").toggleClass("ui-icon-minusthick");
109
		$(this.portlet).find(".titreOnglet").toggleClass("pasDeCurseur");
107
		$(this.portlet).find(".titreOnglet").toggleClass("pasDeCurseur");
110
		$(this.portlet).find(".contenu").toggle();
108
		$(this.portlet).find(".contenu").toggle();
111
	}
109
	}
112
}
110
}
113
 
-
 
114
function selectionnerOngletSynthese() {
-
 
115
	// Suppression des classes css qui mettent en surbrillance l'onglet actif
-
 
116
	$('#zone_onglets > ul > li').removeClass('ui-tabs-selected');
-
 
117
	$('#zone_onglets > ul > li').removeClass('ui-state-active');
-
 
118
	
-
 
119
	// application de ces même classes css à l'onglet "acceuil" qui est un onglet "articifiel"
-
 
120
	$('#onglet_synthese').addClass('ui-tabs-selected');
-
 
121
	$('#onglet_synthese').addClass('ui-state-active'); 
-
 
122
		
-
 
123
	$('a.lien_retour_synthese').hide();
-
 
124
}
-
 
125
 
-
 
126
 
-
 
127
function deselectionnerOngletSynthese() {
-
 
128
	// Suppression des classes css qui mettent en surbrillance l'onglet actif sur l'onglet acceuil
-
 
129
	$('#onglet_synthese').removeClass('ui-tabs-selected');
-
 
130
	$('#onglet_synthese').removeClass('ui-state-active'); 
-
 
131
	$('a.lien_retour_synthese').show();
-
 
132
}
-
 
133
 
111
 
134
function getUrlVars() {
112
function getUrlVars() {
135
    var vars = [], hash;
113
    var vars = [], hash;
136
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
114
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
137
    for (var i = 0; i < hashes.length; i++) {
115
    for (var i = 0; i < hashes.length; i++) {
138
        hash = hashes[i].split('=');
116
        hash = hashes[i].split('=');
139
        vars.push(hash[0]);
117
        vars.push(hash[0]);
140
        vars[hash[0]] = hash[1];
118
        vars[hash[0]] = hash[1];
141
    }
119
    }
142
    return vars;
120
    return vars;
143
}
121
}
144
 
-
 
145
function selectionnerOngletParDefautOuEnregistre() {
-
 
146
	// Si un onglet est précisé dans l'url
-
 
147
	// Récupération de l'adresse de l'onglet sélectionné
-
 
148
	var urlVars = getUrlVars();
-
 
149
	if (urlVars['onglet'] == undefined) { 	
-
 
150
		// Si pas d'onglet enregistré, selection du premier par défaut
-
 
151
		// Si c'est l'onglet fiche, on le sélectionne artificiellement
-
 
152
		selectionnerOngletSynthese();
-
 
153
		$('.ui-tabs-panel').hide();
-
 
154
		$('#synthese').show();
-
 
155
	} else {
-
 
156
		ongletSyntheseCharge = false;
-
 
157
	}
-
 
158
	var cookieOnglet = obtenirOngletCookiePourPage();
-
 
159
	
-
 
160
	// On réouvre le dernier onglet consulté, à voir si on garde ça en prod, en tout cas c'est 
-
 
161
	// pratique pendant le développement
-
 
162
	if (cookieOnglet && cookieOnglet != 'ui-tabs-1') {
-
 
163
		$('#zone_onglets').tabs("select", '#'+cookieOnglet);
-
 
164
	} else {
-
 
165
		selectionnerOngletSynthese();
-
 
166
		$('.ui-tabs-panel').hide();
-
 
167
		$('#synthese').show();
-
 
168
	}
-
 
169
}
-
 
170
 
122
 
171
function afficherOngletsPourNiveau() {
123
function afficherOngletsPourNiveau() {
172
	/* affiche les onglets par default selon niveau*/
124
	/* affiche les onglets par default selon niveau*/
173
	for (indice in tableauOnglets) {
125
	for (indice in tableauOnglets) {
174
		var ongletEnCours = tableauOnglets[indice];
126
		var ongletEnCours = tableauOnglets[indice];
175
		titre_onglet = ongletEnCours.titre;
127
		titre_onglet = ongletEnCours.titre;
176
		titre_onglet = $.trim(titre_onglet);
128
		titre_onglet = $.trim(titre_onglet);
177
		if (!Array.indexOf) {
129
		if (!Array.indexOf) {
178
			  Array.prototype.indexOf = function (obj, start) {
130
			  Array.prototype.indexOf = function (obj, start) {
179
			    for (var i = (start || 0); i < this.length; i++) {
131
			    for (var i = (start || 0); i < this.length; i++) {
180
			      if (this[i] == obj) {
132
			      if (this[i] == obj) {
181
			        return i;
133
			        return i;
182
			      }
134
			      }
183
			    }
135
			    }
184
			    return -1;
136
			    return -1;
185
			  }
137
			  }
186
			}
138
			}
187
		if (ongletsDefaut.indexOf(titre_onglet) == -1) {
139
		if (ongletsDefaut.indexOf(titre_onglet) == -1) {
188
			ongletEnCours.afficherCacherModule();	
140
			ongletEnCours.afficherCacherModule();	
189
			nbOngletsInvisibles++;
141
			nbOngletsInvisibles++;
190
		}
142
		}
191
	}
143
	}
192
}
144
}
193
 
-
 
194
function surSelectionOnglet(event,ui) {
-
 
195
	// Récupération de l'adresse de l'onglet sélectionné
-
 
196
	var url = ui.tab.href;
-
 
197
	// le fragment suivant le # dans l'url contient l'id de l'onglet
-
 
198
	var fragmentsAncre = url.split('#');
-
 
199
	fancyboxinitialise = false;
-
 
200
	
-
 
201
	if (fragmentsAncre.length > 0) {
-
 
202
		var ancre = fragmentsAncre[fragmentsAncre.length - 1];
-
 
203
		// Si c'est un onglet correspondant à un projet, on cache la synthèse et le plugin
-
 
204
		// chargera son contenu dans l'espace approprié
-
 
205
		if (ancre != 'ui-tabs-1') {
-
 
206
			var panel = $(ui.panel);
-
 
207
		    if (panel.is(":empty")) {
-
 
208
		        panel.append("<div class='tab-chargement'>Chargement des informations...</div>")
-
 
209
		    }
-
 
210
 
-
 
211
			deselectionnerOngletSynthese();
-
 
212
			$('.ui-tabs-panel').show();
-
 
213
			$('#zone_contenu_fiche').hide();
-
 
214
			
-
 
215
			enregistrerOngletCookiePourPage(ancre);
-
 
216
		} else {
-
 
217
			if (ongletSyntheseCharge) {
-
 
218
				// Si c'est l'onglet fiche, on le sélectionne artificiellement
-
 
219
				selectionnerOngletSynthese();
-
 
220
				$('.ui-tabs-panel').hide();
-
 
221
				$('#zone_contenu_fiche').show();
-
 
222
				
-
 
223
				enregistrerOngletCookiePourPage(ancre);
-
 
224
				return false;
-
 
225
			} else {
-
 
226
				window.location = url;
-
 
227
			}
-
 
228
		}
-
 
229
	}
-
 
230
	return true;
-
 
231
}
-
 
232
 
145
 
233
function obtenirOngletCookiePourPage() {
146
function obtenirOngletCookiePourPage() {
234
	var urlVars = getUrlVars();
147
	var urlVars = getUrlVars();
235
	var id_cookie = 'onglet_eflore';
148
	var id_cookie = 'onglet_eflore';
236
	if (urlVars['num_nom']) {
149
	if (urlVars['num_nom']) {
237
		id_cookie += '_'+urlVars['num_nom'];
150
		id_cookie += '_'+urlVars['num_nom'];
238
	}	
151
	}	
239
	return $.cookie(id_cookie) ? $.cookie(id_cookie) : null;
152
	return $.cookie(id_cookie) ? $.cookie(id_cookie) : null;
240
}
153
}
241
 
154
 
242
function enregistrerOngletCookiePourPage(valeur) {
155
function enregistrerOngletCookiePourPage(valeur) {
243
	var urlVars = getUrlVars();
156
	var urlVars = getUrlVars();
244
	var id_cookie = 'onglet_eflore';
157
	var id_cookie = 'onglet_eflore';
245
	if(urlVars['num_nom'] && urlVars['num_nom'] != undefined) {
158
	if(urlVars['num_nom'] && urlVars['num_nom'] != undefined) {
246
		id_cookie += '_'+urlVars['num_nom'];
159
		id_cookie += '_'+urlVars['num_nom'];
247
	}
160
	}
248
	$.cookie(id_cookie, valeur);
161
	$.cookie(id_cookie, valeur);
249
}
162
}
250
 
163
 
251
function lierModulesEtOnglets() {
164
function lierModulesEtOnglets() {
252
	var i = 1;
165
	var i = 1;
253
	
166
	
254
	//Parcourir la totalité des modules générés et les lier grâce à la classe Module
167
	//Parcourir la totalité des modules générés et les lier grâce à la classe Module
255
	$(".module").each(function () {
168
	$(".module").each(function () {
256
		i++;
169
		i++;
257
		identifiantOnglet = "#zone_onglets>ul>li:nth-child(" + i +")";
170
		identifiantOnglet = "#zone_onglets>ul>li:nth-child(" + i +")";
258
		var module = new Module(i, this, $(identifiantOnglet));
171
		var module = new Module(i, this, $(identifiantOnglet));
259
		var titre = $(this).children('h3').text();
172
		var titre = $(this).children('h3').text();
260
		module.titre = titre;
173
		module.titre = titre;
261
		
174
		
262
		tableauOnglets[identifiantOnglet] = module;
175
		tableauOnglets[identifiantOnglet] = module;
263
	});
176
	});
-
 
177
}
-
 
178
 
-
 
179
// remplace des liens directs vers les onglets par des liens permettant de ne charger
-
 
180
// que le contenu de l'onglet (pour le plugin tab)
-
 
181
function remplacerUrlsOnglets() {
264
	$(".lien-onglet").each(function() {
182
	$(".lien-onglet").each(function() {
265
		var urlOnglet = $(this).attr('href');
183
		var urlOnglet = $(this).attr('href');
266
		var urlVars = urlOnglet.slice(urlOnglet.indexOf('?') + 1);
184
		var urlVars = urlOnglet.slice(urlOnglet.indexOf('?') + 1);
267
		urlBase = base_url_application_onglets+"?"+urlVars;
185
		urlBase = base_url_application_onglets+"?"+urlVars;
268
		urlOnglet = urlBase.replace('action=fiche','action=onglet');
186
		urlOnglet = urlBase.replace('action=fiche','action=onglet');
269
		$(this).attr('href', urlOnglet);
187
		$(this).attr('href', urlOnglet);
270
	});
188
	});
271
}
189
}
-
 
190
 
-
 
191
ongletsInitialises = false;
-
 
192
numOngletEnCours = null;
-
 
193
nePasEmpilerUrl = false;
-
 
194
function initialiserOnglets() {
-
 
195
	// replacement du chargement de toute la page par un lien vers uniquement le contenu de l'onglet
-
 
196
	// pour le module tab qui charge les url désignée dans les liens des tabs
-
 
197
	remplacerUrlsOnglets();
-
 
198
	
-
 
199
	// analyse de l'onglet désigné comme selectionné par défaut
-
 
200
	// (on peut accéder directement à un onglet précis à travers un param url)
-
 
201
	var tabSelectionneDefaut = $('#onglets li.ui-state-active');
-
 
202
	var indexTabSelectionneDefaut = $("#onglets li").index($(tabSelectionneDefaut));
-
 
203
	
-
 
204
	$('#zone_onglets').tabs({
-
 
205
		create: function( event, ui ) {
-
 
206
			// par défaut, le contenu déjà chargé est dans une autre zone
-
 
207
			// on le déplace donc comme s'il avait été chargé par le plugin tab
-
 
208
			var contenuZoneFiche = $("#zone_contenu_fiche > div").detach();
-
 
209
			contenuZoneFiche.appendTo('#ui-tabs-'+(indexTabSelectionneDefaut+1));
-
 
210
			$("#zone_contenu_fiche").hide();
-
 
211
			$('#ui-tabs-'+(indexTabSelectionneDefaut+1)).show();
-
 
212
		},
-
 
213
		active: indexTabSelectionneDefaut ,
-
 
214
		beforeLoad: function( event, ui ) {
-
 
215
			// il est inutile de recharger un onglet déjà chargé (les onglets déjà chargé sont l'onglet par défaut
-
 
216
			// et (lors du chargement de la fiche), l'onglet déjà chargé par php
-
 
217
			// +1 car les tabs sont zéros indexées
-
 
218
			var idPanelCharge = ui.tab.index()+1;
-
 
219
			var panelCharge = $('#ui-tabs-'+idPanelCharge);
-
 
220
			
-
 
221
			numOngletEnCours = idPanelCharge;
-
 
222
 
-
 
223
			if(!panelCharge.is(':empty') || indexTabSelectionneDefaut+1 == idPanelCharge) {
-
 
224
				// si le panneau est déjà chargé on peut mettre à jour l'url immédiatement
-
 
225
				var ongletNomCode = panelCharge.children(".onglet_contenu").attr("id");
-
 
226
				if(!nePasEmpilerUrl) {
-
 
227
					mettreAJourUrl(permalienNumNom+"-"+ongletNomCode, ongletNomCode);
-
 
228
					nePasEmpilerUrl = false;
-
 
229
				}
-
 
230
				panelCharge.show();
-
 
231
				return false;
-
 
232
			} else {
-
 
233
				// si l'onglet n'est pas chargé alors on affiche le message de chargement 
-
 
234
				// pendant que le plugin s'occupe du reste
-
 
235
				fancyboxinitialise = false;
-
 
236
				var panel = $('#ui-tabs-'+idPanelCharge);
-
 
237
				panel.append("<div class='tab-chargement'>Chargement des informations...</div>");
-
 
238
				return true;
-
 
239
			}
-
 
240
		},
-
 
241
		load: function(event, ui) {
-
 
242
			// sur les panneaux qui ne sont pas encore chargés, on doit attendre la fin
-
 
243
			// du chargement pour mettre à jour l'url (à cause de la récupération de l'id sur les enfants)
-
 
244
			var ongletNomCode = ui.panel.children(".onglet_contenu").attr("id");
-
 
245
			mettreAJourUrl(permalienNumNom+"-"+ongletNomCode, ongletNomCode);
-
 
246
		}
-
 
247
	});
-
 
248
	
-
 
249
	$(window).bind('popstate', function(event) {
-
 
250
		if(!!event.originalEvent.state) {
-
 
251
			nePasEmpilerUrl = true;
-
 
252
			$("#onglets > li > a[rel='"+event.originalEvent.state+"']").click();
-
 
253
		} else {
-
 
254
			window.location = window.location.href;
-
 
255
		}
-
 
256
	});
-
 
257
}
272
 
258
 
273
//+----------------------------------------------------------------------------------------------------------+
259
//+----------------------------------------------------------------------------------------------------------+
274
// Wikini Flora
260
// Wikini Flora
275
var htmlWikiOriginal = '';
261
var htmlWikiOriginal = '';
276
var objetContenuWiki = null;
262
var objetContenuWiki = null;
277
 
263
 
278
function getTemplateFormulaireEditionWiki(page, section, texte) {	
264
function getTemplateFormulaireEditionWiki(page, section, texte) {	
279
	var urlWebServiceWiki = getUrlEditionPourPageEtSection(page, section);
265
	var urlWebServiceWiki = getUrlEditionPourPageEtSection(page, section);
280
	var formulaire = 
266
	var formulaire = 
281
		'<form method="post" id="formulaire_edition_wiki" name="formulaire_edition_wiki" action="'+urlWebServiceWiki+'">'+
267
		'<form method="post" id="formulaire_edition_wiki" name="formulaire_edition_wiki" action="'+urlWebServiceWiki+'">'+
282
		  '<div>'+
268
		  '<div>'+
283
		  	'<textarea id="pageContenu" name="pageContenu" class="champ_edition_wiki">'+texte+'</textarea>'+
269
		  	'<textarea id="pageContenu" name="pageContenu" class="champ_edition_wiki">'+texte+'</textarea>'+
284
		  '</div>'+
270
		  '</div>'+
285
		  '<input type="hidden" name="pageSectionTitre" id="pageSectionTitre" value="'+section+'" />'+
271
		  '<input type="hidden" name="pageSectionTitre" id="pageSectionTitre" value="'+section+'" />'+
286
		  '<input type="submit" text="sauver" />'+
272
		  '<input type="submit" text="sauver" />'+
287
	  	  '<input class="bouton_annuler_edition" type="button" value="annuler" />';
273
	  	  '<input class="bouton_annuler_edition" type="button" value="annuler" />';
288
		'</form>';		
274
		'</form>';		
289
	return formulaire;
275
	return formulaire;
290
}
276
}
291
 
277
 
292
function getSection() {
278
function getSection() {
293
	return objetContenuWiki.attr("title");
279
	return objetContenuWiki.attr("title");
294
}
280
}
295
 
281
 
296
function getPageWikiTaxon() {
282
function getPageWikiTaxon() {
297
	return pageWikiTaxon;
283
	return pageWikiTaxon;
298
}
284
}
299
 
285
 
300
function getUrlEditionPourPageEtSection(page, section) {
286
function getUrlEditionPourPageEtSection(page, section) {
301
	return urlEditionSectionWikiTpl.replace('{pageTag}', page).replace('{sectionTitre}', section);
287
	return urlEditionSectionWikiTpl.replace('{pageTag}', page).replace('{sectionTitre}', section);
302
}
288
}
303
 
289
 
304
function getUrlTextePourPageSectionBrute(page, section) {
290
function getUrlTextePourPageSectionBrute(page, section) {
305
	return urlTexteBrutSectionWikiTpl.replace('{pageTag}', page).replace('{sectionTitre}', section);
291
	return urlTexteBrutSectionWikiTpl.replace('{pageTag}', page).replace('{sectionTitre}', section);
306
}
292
}
307
 
293
 
308
function getUrlTextePourPageSectionFormatee(page, section) {
294
function getUrlTextePourPageSectionFormatee(page, section) {
309
	return urlTexteFormateSectionWikiTpl.replace('{pageTag}', page).replace('{sectionTitre}', section);
295
	return urlTexteFormateSectionWikiTpl.replace('{pageTag}', page).replace('{sectionTitre}', section);
310
}
296
}
311
 
297
 
312
function remplacerContenuWikiParFormulaireEdition(objet_contenu) {
298
function remplacerContenuWikiParFormulaireEdition(objet_contenu) {
313
	objetContenuWiki = objet_contenu;
299
	objetContenuWiki = objet_contenu;
314
	var adresse = getUrlEditionPourPageEtSection(getPageWikiTaxon(), getSection());
300
	var adresse = getUrlEditionPourPageEtSection(getPageWikiTaxon(), getSection());
315
	htmlWikiOriginal = objet_contenu.html();
301
	htmlWikiOriginal = objet_contenu.html();
316
	$.getJSON(adresse, function(data) {
302
	$.getJSON(adresse, function(data) {
317
		$(objetContenuWiki).removeClass('editable_sur_clic').html(getTemplateFormulaireEditionWiki(getPageWikiTaxon(), getSection(), data.texte));
303
		$(objetContenuWiki).removeClass('editable_sur_clic').html(getTemplateFormulaireEditionWiki(getPageWikiTaxon(), getSection(), data.texte));
318
	});
304
	});
319
}
305
}
320
 
306
 
321
function gererEvenementsWiki() {
307
function gererEvenementsWiki() {
322
	//TODO: ajout automatique d'un lien ouvrant une page d'aide (un popup) au formatage des pages wikini
308
	//TODO: ajout automatique d'un lien ouvrant une page d'aide (un popup) au formatage des pages wikini
323
	$('.editable_sur_clic').live('dblclick',function(event) {
309
	$('.editable_sur_clic').live('dblclick',function(event) {
324
		remplacerContenuWikiParFormulaireEdition($(this));
310
		remplacerContenuWikiParFormulaireEdition($(this));
325
	});
311
	});
326
	
312
	
327
	$('#formulaire_edition_wiki').live('submit',function(event) {
313
	$('#formulaire_edition_wiki').live('submit',function(event) {
328
	    event.preventDefault(); 
314
	    event.preventDefault(); 
329
		var valeurs = $(this).serialize();
315
		var valeurs = $(this).serialize();
330
		$.post($(this).attr('action'), valeurs, function(data) {
316
		$.post($(this).attr('action'), valeurs, function(data) {
331
			var adresse = getUrlTextePourPageSectionFormatee(getPageWikiTaxon(), getSection());
317
			var adresse = getUrlTextePourPageSectionFormatee(getPageWikiTaxon(), getSection());
332
			$.getJSON(adresse, function(data) {
318
			$.getJSON(adresse, function(data) {
333
				$(objetContenuWiki).addClass('editable_sur_clic').html(data.texte);
319
				$(objetContenuWiki).addClass('editable_sur_clic').html(data.texte);
334
			});
320
			});
335
		});
321
		});
336
	});
322
	});
337
	
323
	
338
	$('.bouton_annuler_edition').live('click', function(event) {
324
	$('.bouton_annuler_edition').live('click', function(event) {
339
		event.preventDefault();
325
		event.preventDefault();
340
		$(objetContenuWiki).addClass('editable_sur_clic').html(htmlWikiOriginal);
326
		$(objetContenuWiki).addClass('editable_sur_clic').html(htmlWikiOriginal);
341
	});
327
	});
342
	
328
	
343
	rendreLienAffichableDansNouvelleFenetre('.contenu_editable');
329
	rendreLienAffichableDansNouvelleFenetre('.contenu_editable');
344
}
330
}
345
 
331
 
346
//+----------------------------------------------------------------------------------------------------------+
332
//+----------------------------------------------------------------------------------------------------------+
347
//Affichage dans une nouvelle fenetre
333
//Affichage dans une nouvelle fenetre
348
function rendreLienAffichableDansNouvelleFenetre(selecteur) {
334
function rendreLienAffichableDansNouvelleFenetre(selecteur) {
349
	$(selecteur).find('a').live('click', function(event) {
335
	$(selecteur).find('a').live('click', function(event) {
350
		window.open($(this).attr('href'));
336
		window.open($(this).attr('href'));
351
		event.preventDefault();
337
		event.preventDefault();
352
		return false;
338
		return false;
353
	});
339
	});
354
}
340
}
355
 
341
 
356
//+----------------------------------------------------------------------------------------------------------+
342
//+----------------------------------------------------------------------------------------------------------+
357
// Plier / déplier
343
// Plier / déplier
358
function plierTout() {
344
function plierTout() {
359
	$('.nom').children('.imagetteMoins').removeClass('imagetteMoins').addClass('imagettePlus');
345
	$('.nom').children('.imagetteMoins').removeClass('imagetteMoins').addClass('imagettePlus');
360
	$('.plus').css('display', 'none');
346
	$('.plus').css('display', 'none');
361
}
347
}
362
 
348
 
363
function deplierTout() {
349
function deplierTout() {
364
	$('.nom').children('.imagettePlus').removeClass('imagettePlus').addClass('imagetteMoins');
350
	$('.nom').children('.imagettePlus').removeClass('imagettePlus').addClass('imagetteMoins');
365
	$('.plus').css('display', 'inline');
351
	$('.plus').css('display', 'inline');
366
}
352
}
367
 
353
 
368
function gestionBiblio(parent) {
354
function gestionBiblio(parent) {
369
	parent.children('.nom').each(function () {
355
	parent.children('.nom').each(function () {
370
		html = $(this).html();
356
		html = $(this).html();
371
		posCrochetGauche = html.indexOf('[');
357
		posCrochetGauche = html.indexOf('[');
372
		if (posCrochetGauche > 0) {
358
		if (posCrochetGauche > 0) {
373
			nom = html.substr(0, posCrochetGauche);
359
			nom = html.substr(0, posCrochetGauche);
374
			biblio = html.substr(posCrochetGauche, html.length);
360
			biblio = html.substr(posCrochetGauche, html.length);
375
			$(this).html(nom);
361
			$(this).html(nom);
376
			
362
			
377
			imagettePlus = document.createElement('div');
363
			imagettePlus = document.createElement('div');
378
			$(imagettePlus).addClass('imagettePlus');
364
			$(imagettePlus).addClass('imagettePlus');
379
			$(this).prepend($(imagettePlus));
365
			$(this).prepend($(imagettePlus));
380
			
366
			
381
			plus = document.createElement('span');
367
			plus = document.createElement('span');
382
			$(plus).addClass('plus');
368
			$(plus).addClass('plus');
383
			$(plus).html(biblio);
369
			$(plus).html(biblio);
384
			$(plus).hide();
370
			$(plus).hide();
385
			
371
			
386
			$(this).click(function() {
372
			$(this).click(function() {
387
				if (!$(this).children('.plus').is(':visible')) {
373
				if (!$(this).children('.plus').is(':visible')) {
388
					$(this).children('.imagettePlus').removeClass('imagettePlus').addClass('imagetteMoins');
374
					$(this).children('.imagettePlus').removeClass('imagettePlus').addClass('imagetteMoins');
389
					$(this).children('.plus').css('display', 'inline');
375
					$(this).children('.plus').css('display', 'inline');
390
				} else {
376
				} else {
391
					$(this).children('.imagetteMoins').removeClass('imagetteMoins').addClass('imagettePlus');
377
					$(this).children('.imagetteMoins').removeClass('imagetteMoins').addClass('imagettePlus');
392
					$(this).children('.plus').css('display', 'none');
378
					$(this).children('.plus').css('display', 'none');
393
				}
379
				}
394
			});				
380
			});				
395
			$(this).append($(plus));		
381
			$(this).append($(plus));		
396
		}
382
		}
397
	});
383
	});
398
}
384
}
399
 
385
 
400
function gererEvenementsPliage() {
386
function gererEvenementsPliage() {
401
	$('.lien_tout_deplier').live('click', function() {
387
	$('.lien_tout_deplier').live('click', function() {
402
		deplierTout();
388
		deplierTout();
403
	});
389
	});
404
	$('.lien_tout_plier').live('click', function() {
390
	$('.lien_tout_plier').live('click', function() {
405
		plierTout();
391
		plierTout();
406
	});
392
	});
407
	gestionBiblio(document);
393
	gestionBiblio(document);
408
}
394
}
409
 
395
 
410
//+----------------------------------------------------------------------------------------------------------+
396
//+----------------------------------------------------------------------------------------------------------+
411
//Pop Up images
397
//Pop Up images
412
function ouvrirPopUpImg(event) {
398
function ouvrirPopUpImg(event) {
413
	event.preventDefault();
399
	event.preventDefault();
414
	window.open($(this).attr('href'),"Photo_"+$(this).children("img").attr("title"),
400
	window.open($(this).attr('href'),"Photo_"+$(this).children("img").attr("title"),
415
			'"'+'height='+event.data.h+',width='+event.data.w+',top='+event.data.t+',left='+event.data.l 
401
			'"'+'height='+event.data.h+',width='+event.data.w+',top='+event.data.t+',left='+event.data.l 
416
			+',toolbar='+event.data.toolbar+',menubar='+event.data.menubar +',location='
402
			+',toolbar='+event.data.toolbar+',menubar='+event.data.menubar +',location='
417
			+event.data.location+',resizable='+event.data.resizable+',scrollbars='+event.data.scrollbars 
403
			+event.data.location+',resizable='+event.data.resizable+',scrollbars='+event.data.scrollbars 
418
			+',status='+event.data.status+'"');
404
			+',status='+event.data.status+'"');
419
}
405
}
420
 
406
 
421
//+----------------------------------------------------------------------------------------------------------+
407
//+----------------------------------------------------------------------------------------------------------+
422
// Message de chargement pour les graphique écologie
408
// Message de chargement pour les graphique écologie
423
function gererChargementGraphiqueEcologie() {
409
function gererChargementGraphiqueEcologie() {
424
	$('.ecologie_svg').addClass('chargement');
410
	$('.ecologie_svg').addClass('chargement');
425
}
411
}
426
 
412
 
427
function gererAffichageLegendeEcologie() {
413
function gererAffichageLegendeEcologie() {
428
	$('.voir').live('click', function() {
414
	$('.voir').live('click', function() {
429
		$(this).siblings('.legende_graphique').show();
415
		$(this).siblings('.legende_graphique').show();
430
		$(this).siblings('.cacher').show();
416
		$(this).siblings('.cacher').show();
431
		$(this).hide();
417
		$(this).hide();
432
	});
418
	});
433
	
419
	
434
	$('.cacher').live('click', function() {
420
	$('.cacher').live('click', function() {
435
		$(this).siblings('.legende_graphique').hide();
421
		$(this).siblings('.legende_graphique').hide();
436
		$(this).siblings('.voir').show();
422
		$(this).siblings('.voir').show();
437
		$(this).hide();
423
		$(this).hide();
438
	});
424
	});
439
}
425
}
440
 
426
 
441
 
427
 
442
//+----------------------------------------------------------------------------------------------------------+
428
//+----------------------------------------------------------------------------------------------------------+
443
// Initialisation
429
// Initialisation
444
var fancyboxinitialise = false;
430
var fancyboxinitialise = false;
445
var param_popup_Coste = {h: 650, w: 550, t: 100, l: 100, 
431
var param_popup_Coste = {h: 650, w: 550, t: 100, l: 100, 
446
		toolbar: 'no', menubar: 'no', location: 'no', resizable: 'yes', scrollbars: 'yes', status: 'no'};
432
		toolbar: 'no', menubar: 'no', location: 'no', resizable: 'yes', scrollbars: 'yes', status: 'no'};
447
 
433
 
448
var param_popup_Cel = {h: 750, w: 630, t: 100, l: 100, 
434
var param_popup_Cel = {h: 750, w: 630, t: 100, l: 100, 
449
		toolbar: 'no', menubar: 'no', location: 'no', resizable: 'yes', scrollbars: 'yes', status: 'no'};
435
		toolbar: 'no', menubar: 'no', location: 'no', resizable: 'yes', scrollbars: 'yes', status: 'no'};
450
 
436
 
451
//Initialisation
437
//Initialisation (uniquement sur la présence de la div bloc-fiche, qui contient la fiche eflore)
452
$(document).ready(function() {
438
$("#bloc-fiche").ready(function() {
453
	lierModulesEtOnglets();
-
 
454
	
-
 
455
	/* mouvement des blocs */
-
 
456
	$(".colonne").sortable({
-
 
457
		connectWith: ".colonne",
-
 
458
		handle: $(".module").children('h3') // mouvement seulement sur les titres
-
 
459
	});
439
	initialiserOnglets();
460
	
-
 
461
	$('#zone_onglets').tabs({
-
 
462
		select: function(event, ui) {	
-
 
463
			return surSelectionOnglet(event,ui)
-
 
464
		}
-
 
465
	});
440
 
466
	// TODO : devrait être .on() à la place de live()
441
	// TODO : devrait être .on() à la place de live()
467
	$('.lien_popup').live('click',function(event) {
442
	$('.lien_popup').live('click',function(event) {
468
		event.preventDefault();
443
		event.preventDefault();
469
		$.fancybox(this,{
444
		$.fancybox(this,{
470
			autoDimensions:false,
445
			autoDimensions:false,
471
			width:580
446
			width:580
472
		});
447
		});
473
	});
448
	});
474
	
449
	
475
	// TODO : devrait être .on() à la place de live()
450
	// TODO : devrait être .on() à la place de live()
476
	$('.lien_popup.lien_metadonnees').live('click',function(event) {
451
	$('.lien_popup.lien_metadonnees').live('click',function(event) {
477
		event.preventDefault();
452
		event.preventDefault();
478
		$.fancybox(this,{
453
		$.fancybox(this,{
479
			autoDimensions:true
454
			autoDimensions:true
480
		});
455
		});
481
	});
456
	});
482
	
457
		
483
	$('.lien_ouverture_onglet_parent').click(function(event) {
-
 
484
		event.preventDefault();
-
 
485
		$(this).parents(".module").find("a.titreOnglet").click();
-
 
486
	});
-
 
487
	
-
 
488
	$('.lien-image-cel').live('click', param_popup_Cel , ouvrirPopUpImg);
458
	$('.lien-image-cel').live('click', param_popup_Cel , ouvrirPopUpImg);
489
	$('.lien-image-coste').live('click', param_popup_Coste , ouvrirPopUpImg);
459
	$('.lien-image-coste').live('click', param_popup_Coste , ouvrirPopUpImg);
490
	
460
	
491
	afficherOngletsPourNiveau();
461
	afficherOngletsPourNiveau();
492
	selectionnerOngletParDefautOuEnregistre();
-
 
493
	
-
 
494
	$('.ui-icon-close').click(function() {
-
 
495
		estOngletActif = $(this).parent().hasClass('ui-state-active');
-
 
496
		if (estOngletActif) {
-
 
497
			//L'onglet que l'on veut fermer est celui qui est ouvert, on va donc le masquer et afficher celui d'accueil
-
 
498
			$("#zone_onglets").tabs('select', 0);
-
 
499
		}
-
 
500
	});
-
 
501
 
462
 
502
	gererEvenementsWiki();
463
	gererEvenementsWiki();
503
	gererEvenementsPliage();
464
	gererEvenementsPliage();
504
	gererClicIllustrationsFiche();
-
 
505
	
465
	
506
	$('a.lien_retour_synthese').click(function(event) {
466
	$('a.lien_retour_synthese').click(function(event) {
507
		$('#onglet_synthese a').click();
467
		$('#onglet_synthese a').click();
508
		event.preventDefault();
468
		event.preventDefault();
509
	});
469
	});
510
	
470
	
511
	$(window).resize(function() {
471
	$(window).resize(function() {
512
		redimensionnerOnglets();
472
		redimensionnerOnglets();
513
	});
473
	});
514
	redimensionnerOnglets();
474
	redimensionnerOnglets();
-
 
475
	
-
 
476
	if($("#bloc-fiche").length > 0) {
-
 
477
		// initialisation de l'url avec l'onglet par défaut ou bien 
-
 
478
		// celui qui a été explicitement demandé
-
 
479
		mettreAJourUrl(permalienNumNom+"-"+onglet, onglet);
-
 
480
	}
-
 
481
});
-
 
482
 
-
 
483
$(document).one('ongletSyntheseCharge', function() {
-
 
484
	lierModulesEtOnglets();
-
 
485
	
-
 
486
	/* mouvement des blocs */
-
 
487
	$(".colonne").sortable({
-
 
488
		connectWith: ".colonne",
-
 
489
		handle: $(".module").children('h3') // mouvement seulement sur les titres
-
 
490
	});
-
 
491
	
-
 
492
	$('.lien_ouverture_onglet_parent').live('click', function(event) {
-
 
493
		event.preventDefault();
-
 
494
		$(this).parents(".module").find("a.titreOnglet").click();
-
 
495
	});
-
 
496
	
-
 
497
	gererClicIllustrationsFiche();
-
 
498
	gererEvenementsPliage();
515
});
499
});
516
 
500
 
517
// À la fin du chargement de l'onglet Illustrations
501
// À la fin du chargement de l'onglet Illustrations
518
$(document).on('ongletIllustrationsCharge', function() {
502
$(document).one('ongletIllustrationsCharge', function() {
519
	if (ongletIllustrationsCharge == false) {
-
 
520
		ongletIllustrationsCharge = true;
-
 
521
		$('a.lien-images-organes.fourni').live('click', afficherOngletOrgane);
503
	$('a.lien-images-organes.fourni').live('click', afficherOngletOrgane);
522
		$('a.lien-grande-image-organe').live('click', afficherGrandeImageOrgane);
504
	$('a.lien-grande-image-organe').live('click', afficherGrandeImageOrgane);
523
		// pour que la galerie soit ouverte par défaut sur le premier organe non vide
505
	// pour que la galerie soit ouverte par défaut sur le premier organe non vide
524
		var premier = $('a.lien-images-organes.fourni').first().data('tag');
506
	var premier = $('a.lien-images-organes.fourni').first().data('tag');
525
		afficherOngletOrgane(null, premier);
507
	afficherOngletOrgane(null, premier);
526
	}
-
 
527
});
508
});
528
 
509
 
529
// Affiche les n images ayant le plus de votes, pour l'organe $tag
510
// Affiche les n images ayant le plus de votes, pour l'organe $tag
530
function afficherOngletOrgane(e, tag) {
511
function afficherOngletOrgane(e, tag) {
531
	var onglets = $('div.onglet-organe'),
512
	var onglets = $('div.onglet-organe'),
532
		contenu = $('#galerie-organes-contenu'),
513
		contenu = $('#galerie-organes-contenu'),
533
		organeOnglet;
514
		organeOnglet;
534
 
515
 
535
	if (tag === undefined) {
516
	if (tag === undefined) {
536
		tag = $(this).data('tag')
517
		tag = $(this).data('tag')
537
	}
518
	}
538
	if ($(this).parent().hasClass('active')) { // replier
519
	if ($(this).parent().hasClass('active')) { // replier
539
		$(this).parent().removeClass('active')
520
		$(this).parent().removeClass('active')
540
		contenu.hide();
521
		contenu.hide();
541
		return false;
522
		return false;
542
	}
523
	}
543
 
524
 
544
	onglets.each(function() {
525
	onglets.each(function() {
545
		organeOnglet = $(this).data('tag');
526
		organeOnglet = $(this).data('tag');
546
		var li = $('a.lien-images-organes[data-tag="' + organeOnglet + '"]').parent();
527
		var li = $('a.lien-images-organes[data-tag="' + organeOnglet + '"]').parent();
547
		if (organeOnglet == tag) {
528
		if (organeOnglet == tag) {
548
			$(this).show();
529
			$(this).show();
549
			li.addClass('active');
530
			li.addClass('active');
550
		} else {
531
		} else {
551
			$(this).hide();
532
			$(this).hide();
552
			li.removeClass('active');
533
			li.removeClass('active');
553
		}
534
		}
554
	});
535
	});
555
 
536
 
556
	contenu.show();
537
	contenu.show();
557
 
538
 
558
	var premierLienGrandeImage = $('div.onglet-organe:visible').find('a.lien-grande-image-organe').first(),
539
	var premierLienGrandeImage = $('div.onglet-organe:visible').find('a.lien-grande-image-organe').first(),
559
		grandeImage = $('#grande-image-organe').find('img');
540
		grandeImage = $('#grande-image-organe').find('img');
560
	premierLienGrandeImage.trigger('click');
541
	premierLienGrandeImage.trigger('click');
561
	grandeImage.show('fast');
542
	grandeImage.show('fast');
562
 
543
 
563
	return false;
544
	return false;
564
}
545
}
565
 
546
 
566
// Affiche en grand sous les miniatures l'image d'organe sur laquelle on a cliqué
547
// Affiche en grand sous les miniatures l'image d'organe sur laquelle on a cliqué
567
function afficherGrandeImageOrgane() {
548
function afficherGrandeImageOrgane() {
568
	var grandeImage = $('#grande-image-organe').find('img'),
549
	var grandeImage = $('#grande-image-organe').find('img'),
569
		source = $(this).find('img').attr('src');
550
		source = $(this).find('img').attr('src');
570
	source = source.replace('CRX2S', 'L'); // @FIXME cracra
551
	source = source.replace('CRX2S', 'L'); // @FIXME cracra
571
	// chargement image et lien popup
552
	// chargement image et lien popup
572
	grandeImage.attr('src', source);
553
	grandeImage.attr('src', source);
573
	grandeImage.parent().attr('href','/eflore/consultation/popup.php?module=popup-illustrations&action=fiche&referentiel=bdtfx&id=' + $(this).data('id-image'));
554
	grandeImage.parent().attr('href','/eflore/consultation/popup.php?module=popup-illustrations&action=fiche&referentiel=bdtfx&id=' + $(this).data('id-image'));
574
	// métadonnées
555
	// métadonnées
575
	var metadonnees = ['id-image', 'titre', 'description', 'localisation', 'auteur'],
556
	var metadonnees = ['id-image', 'titre', 'description', 'localisation', 'auteur'],
576
		clef;
557
		clef;
577
	for (var i = 0; i < metadonnees.length; i++) {
558
	for (var i = 0; i < metadonnees.length; i++) {
578
		clef = metadonnees[i];
559
		clef = metadonnees[i];
579
		$('#grande-image-legende-' + clef).html($(this).data(clef));
560
		$('#grande-image-legende-' + clef).html($(this).data(clef));
580
	}
561
	}
581
	$('#grande-image-legende-date').html(formaterDateVersFrancais($(this).data('date')));
562
	$('#grande-image-legende-date').html(formaterDateVersFrancais($(this).data('date')));
582
	$('#grande-image-legende-id-destinataire').attr('href', urlPopup+'?module=popup-contact&action=form&referentiel='+REFERENTIEL+'&id_destinataire=' +
563
	$('#grande-image-legende-id-destinataire').attr('href', urlPopup+'?module=popup-contact&action=form&referentiel='+REFERENTIEL+'&id_destinataire=' +
583
			$(this).data('id-destinataire') + '&id_img=' + $(this).data('id-image'));
564
			$(this).data('id-destinataire') + '&id_img=' + $(this).data('id-image'));
584
	$('#grande-image-legende-id-destinataire').attr('title', "Envoyer un message à l'auteur à propos de cette image (nécessite d'être identifié)");
565
	$('#grande-image-legende-id-destinataire').attr('title', "Envoyer un message à l'auteur à propos de cette image (nécessite d'être identifié)");
585
	$('#grande-image-legende-auteur').attr('href', 'http://tela-botanica.org/profil:' + $(this).data('id-destinataire'));
566
	$('#grande-image-legende-auteur').attr('href', 'http://tela-botanica.org/profil:' + $(this).data('id-destinataire'));
586
	$('#grande-image-legende-auteur').attr('target', '_blank');
567
	$('#grande-image-legende-auteur').attr('target', '_blank');
587
	$('#grande-image-legende-auteur').attr('title', "Voir le profil de cet utilisateur (nécessite d'être identifié)");
568
	$('#grande-image-legende-auteur').attr('title', "Voir le profil de cet utilisateur (nécessite d'être identifié)");
588
}
569
}
589
 
570
 
590
// transforme une date du type "2012-04-06" en "06 avril 2012"
571
// transforme une date du type "2012-04-06" en "06 avril 2012"
591
function formaterDateVersFrancais(date) {
572
function formaterDateVersFrancais(date) {
592
	var mois = ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
573
	var mois = ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
593
		amj_hms = date.split(' '),
574
		amj_hms = date.split(' '),
594
		amj = amj_hms[0].split('-');
575
		amj = amj_hms[0].split('-');
595
	return amj[2] + ' ' + mois[parseInt(amj[1]) - 1] + ' ' + amj[0];
576
	return amj[2] + ' ' + mois[parseInt(amj[1]) - 1] + ' ' + amj[0];
596
}
577
}
597
 
578
 
598
function redimensionnerOnglets() {
579
function redimensionnerOnglets() {
599
	
580
	
600
	var largeurTotale = $('#zone_onglets').width();
581
	var largeurTotale = $('#zone_onglets').width();
601
	var largeurOnglets = 0;
582
	var largeurOnglets = 0;
602
	var largeurDernierOnglet = 0;
583
	var largeurDernierOnglet = 0;
603
	$('#onglets li').each(function() {
584
	$('#onglets li').each(function() {
604
		largeurDernierOnglet = $(this).outerWidth();
585
		largeurDernierOnglet = $(this).outerWidth();
605
		largeurOnglets += $(this).outerWidth();
586
		largeurOnglets += $(this).outerWidth();
606
	});
587
	});
607
	
588
	
608
	var espaceRestant = largeurTotale - largeurOnglets;
589
	var espaceRestant = largeurTotale - largeurOnglets;
609
	if(espaceRestant < largeurDernierOnglet) {
590
	if(espaceRestant < largeurDernierOnglet) {
610
		var pxALiberer = (largeurDernierOnglet - espaceRestant)/ $('#onglets li').size();
591
		var pxALiberer = (largeurDernierOnglet - espaceRestant)/ $('#onglets li').size();
611
		$('#onglets li').each(function() {
592
		$('#onglets li').each(function() {
612
			$(this).width($(this).width() - (pxALiberer - 4));
593
			$(this).width($(this).width() - (pxALiberer - 4));
613
			$(this).css("font-size", "0.9em");
594
			$(this).css("font-size", "0.9em");
614
		});
595
		});
615
	} else {
596
	} else {
616
		$('#onglets li').each(function() {
597
		$('#onglets li').each(function() {
617
			$(this).css("width", "auto");
598
			$(this).css("width", "auto");
618
			$(this).css("font-size", "1em");
599
			$(this).css("font-size", "1em");
619
		});
600
		});
620
	}
601
	}
621
}
602
}
622
 
603
 
623
// ouvre le popup de galerie lors d'un clic sur l'illustration dans la fiche synthèse
604
// ouvre le popup de galerie lors d'un clic sur l'illustration dans la fiche synthèse
624
function gererClicIllustrationsFiche() {
605
function gererClicIllustrationsFiche() {
625
	$('.illustration_cel').live('click', function() {
606
	$('.illustration_cel').live('click', function() {
626
		var url_image = $(this).attr('src');
607
		var url_image = $(this).attr('src');
627
		var titre = $('.nomenclature').first().text();
608
		var titre = $('.nomenclature').first().text();
628
		var url = urlPopup+"?module=popup-galerie&action=fiche&num_nom="+$(this).attr('data-num-nom')+"&titre="+encodeURIComponent(titre)+"&url_image="+encodeURIComponent(url_image)+"&referentiel="+REFERENTIEL;
609
		var url = urlPopup+"?module=popup-galerie&action=fiche&num_nom="+$(this).attr('data-num-nom')+"&titre="+encodeURIComponent(titre)+"&url_image="+encodeURIComponent(url_image)+"&referentiel="+REFERENTIEL;
629
		//var url = urlPopup+"?module=popup-galerie-organes&action=fiche&num_nom="+$(this).attr('data-num-nom')+"&titre="+encodeURIComponent(titre)+"&url_image="+encodeURIComponent(url_image)+"&referentiel="+REFERENTIEL;
610
		//var url = urlPopup+"?module=popup-galerie-organes&action=fiche&num_nom="+$(this).attr('data-num-nom')+"&titre="+encodeURIComponent(titre)+"&url_image="+encodeURIComponent(url_image)+"&referentiel="+REFERENTIEL;
630
		//alert(url);
611
		//alert(url);
631
		//return false;
612
		//return false;
632
		window.open(url, $(this).attr('data-num-nom'), 'directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no, width='+(400)+', height='+(375));
613
		window.open(url, $(this).attr('data-num-nom'), 'directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no, width='+(400)+', height='+(375));
633
	}); 
614
	}); 
634
	
615
	
635
	$('#synthese_repartition img').click(function(event) {
616
	$('#synthese_repartition img').click(function(event) {
636
		// Ouverture de l'onglet répartition
617
		// Ouverture de l'onglet répartition
637
		event.preventDefault();
618
		event.preventDefault();
638
		$(this).parents(".module").find("a.titreOnglet").click();
619
		$(this).parents(".module").find("a.titreOnglet").click();
639
	});
620
	});
640
}
621
}
641
 
622
 
642
function ouvrirFenetreIllustrationFiche(url, titre, hauteur, largeur) {
623
function ouvrirFenetreIllustrationFiche(url, titre, hauteur, largeur) {
643
	var fenetre = window.open('_blank', '','directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no, width='+(largeur+17)+', height='+(hauteur+17));
624
	var fenetre = window.open('_blank', '','directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no, width='+(largeur+17)+', height='+(hauteur+17));
644
	var tmp = fenetre.document;
625
	var tmp = fenetre.document;
645
	tmp.write('<html><head><title>'+titre+'</title>');
626
	tmp.write('<html><head><title>'+titre+'</title>');
646
	tmp.write('</head><body>');
627
	tmp.write('</head><body>');
647
	tmp.write('<p style="height='+hauteur+'px;text-align:center;line-height='+hauteur+'px;"><img id="image_agrandie" height="'+hauteur+'" width="'+largeur+'" style="vertical-align:middle;" src="'+url+'" /></p>');
628
	tmp.write('<p style="height='+hauteur+'px;text-align:center;line-height='+hauteur+'px;"><img id="image_agrandie" height="'+hauteur+'" width="'+largeur+'" style="vertical-align:middle;" src="'+url+'" /></p>');
648
	tmp.write('</body></html>');
629
	tmp.write('</body></html>');
649
	tmp.close();
630
	tmp.close();
650
}
631
}
-
 
632
 
-
 
633
function mettreAJourUrl(nouvelleUrl, etat) {
-
 
634
	// javascript double negative trick
-
 
635
	// pour plus d'info http://stackoverflow.com/questions/4686583/can-someone-explain-this-double-negative-trick
-
 
636
	if (!!(window.history && window.history.pushState)) {
-
 
637
		var currentState = window.history.state;
-
 
638
		if (currentState != nouvelleUrl && !!etat) {
-
 
639
			window.history.pushState(etat, "", nouvelleUrl);
-
 
640
		}
-
 
641
	}
-
 
642
}
651
 
643
 
652
$(document).ajaxStop(function() {
644
$(document).ajaxStop(function() {
653
	gererChargementGraphiqueEcologie();
645
	gererChargementGraphiqueEcologie();
654
	gererAffichageLegendeEcologie();
646
	gererAffichageLegendeEcologie();
655
	if (document.implementation.hasFeature('http://www.w3.org/TR/SVG11/feature#BasicStructure', '1.1') == false) {
647
	if (document.implementation.hasFeature('http://www.w3.org/TR/SVG11/feature#BasicStructure', '1.1') == false) {
656
		$('.svg').each(function() {
648
		$('.svg').each(function() {
657
			alt = $(this).attr('alt');
649
			alt = $(this).attr('alt');
658
			img = document.createElement('img');
650
			img = document.createElement('img');
659
			img.src = alt;
651
			img.src = alt;
660
			$(this).replaceWith(img);
652
			$(this).replaceWith(img);
661
		});
653
		});
662
	}
654
	}
663
});
655
});