/* *****************
 * *** S L I D E ***
 * *****************/
var myScroller;
var mySlideFx;
var MySlide;
var myKnobFx;
var directionTo;
var dragCoef = false;
var myItemSlide_id;
var myItemSlideFx;
var active_item;
var start;
var map_site_tab;
var site_lieu_id;

var myItemSlide = function() {
	if(this.getChildren('img[class=active]').length == 0) {
		var from = this.getChildren('img')[0];
	}	else {
		var from = this.getChildren('img[class=active]')[0];
		from.removeClass('active');
	}
	if(from.getNext('img')) {
		var to = from.getNext('img');
	} else {
		var to = this.getFirst('img');
	}
	to.addClass('active');
	
	myItemSlideFx = new Fx.Tween(from, {
		duration: 1000,
		transition: Fx.Transitions.Linear,
		onStart: function() {
			var current_myItemSlide_id = myItemSlide_id;
			new Fx.Tween(to, {
				duration: 2000,
				transition: Fx.Transitions.Linear,
				onComplete: function() {
					// Il s'agit de faire en sorte que le fondu ne soit pas relancé si myItemSlide_id a été modifié au cours du déroulement de son effet
					// Ainsi le fondu ne doit pas être relancé si, pendant le déroulement de son effet, son lancement avec délais a été annulé ET/OU un autre lancement avec délais a été initié
					// La comparaison de myItemSlide_id et current_myItemSlide_id permet de savoir si myItemSlide_id a été modifié entre le début et la fin de l'effet fondu complet
					if(myItemSlide_id == current_myItemSlide_id) {
						myItemSlide_id = myItemSlide.delay(2000, $('item_' + active_item + '_img'));
					}
				}
			}).start('opacity', 1);
		},
		onComplete: function() {
			//if($$('div[class=legende]')[0]) { // TODO:Supprimer ce if quand les infos du slide de la Homme seront dynamiques !!!
				// En plus de la suppression du if ci-dessus, je pense que l'on doit pouvoir ne laisser que le from dans le if suivant
				if(from.getParent('div.slide_item')) { // Au cas où le slide a été mis à jour entre le lancement de l'effet fondu et ce onComplete
					//alert(to.id.substring(2).toInt());
					var legend = from.getParent('div.slide_item').getChildren('div[class=slide_txt]')[0].getChildren('div[class=legende]')[0].getChildren('div')[0];
					legend.setStyle('margin-left', to.id.substring(to.id.lastIndexOf("_")+1).toInt() * -440);
				}
			//}
		}
	}).start('opacity', 0);
};

/* *** S L I D E - AJAX *** */
function slideAjaxCall(add, to_update) {
	// Mise en forme de document.location.href
	var suffix = "";
	if(document.location.href.indexOf("?") != -1) {
		suffix = document.location.href.substring(document.location.href.indexOf("?"));
	}
	var location_href = basename(document.location.href, suffix);
	location_href = location_href == "" || location_href == "www.printempsdeseptembre.com" ? "index.php5" : location_href; // Prod. || local (location_href == "" si en Local ; location_href == "www.printempsdeseptembre.com" si en Prod.)
	
	// Définition des variables toSend et to_update
	var toSend = "ajax=yes&location=" + location_href + "&type=slide" + (add == undefined ? '' : add);
	var to_update = to_update ? to_update : 'content_wrapper';
	
	// Annulation du lancement avec délais du fondu
	myItemSlide_id = $clear(myItemSlide_id);
	
	// Switch content_wrapper / temp_wrapper
	if(to_update == 'content_wrapper') {
		$('temp_wrapper').setStyle('display', 'block');
		$('content_wrapper').setStyle('display', 'none');
	} else {
		if(document.location.href.indexOf("r2.php5") != -1 || document.location.href.indexOf("r6.php5") != -1) { // La Programmation et Presse
			$('mosaic_container_program').setStyle('display', 'none');
			$('menu_ter').setStyle('display', 'block');
		} else if(document.location.href.indexOf("r8.php5") != -1) { // Archives
			if($('menu_ter_like')) { // switch mosaic/slide
				$('mosaic_container').setStyle('display', 'none');
				$('menu_ter').setStyle('display', 'block');
			}
		}
		$(to_update + '_temp_wrapper').setStyle('display', 'block');
		$(to_update).setStyle('display', 'none');
	}
	
	new Request.HTML({
		url: "./ajax/slide_data.php5",
		method: "post",
		update: $(to_update),
		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
			var jsonObj = JSON.decode(this.getHeader('X-JSON'));
			if(jsonObj) {
				switch (jsonObj._status) {
					case 'request_successful':
						
						/* *** Accès "direct" au Slide *** */
						// Cas d'un accès "direct" aux Slides de la "La Programmation" (i.e. sans passer par la mosaïque) lors d'un click sur un item du Slide de la Home page
						// La mosaïque est alors chargée en même temps que le Slide : il faut donc la masquer, et lui appliquer toutes les fonctions présentes dans la fonction mosaicAjaxCall() - puisque cette dernière ne sera pas appelée
						
						if(jsonObj._data[0].acces == "direct") {
							
							// Masquage de la mosaïque
							if($('mosaic_container_program')) {
								$('mosaic_container_program').setStyle('display', 'none');
							} else if($('mosaic_container')) {
								$('mosaic_container').setStyle('display', 'none');
							}
							
							// Gestion des clics sur les items de la mosaique
							$$('div[id^=mos_art_] div[class=image]').addEvent("click", function(e) { // mosaic expo
								new Event(e).stop();
								if(document.location.href.indexOf("r2.php5") != -1) { // La Programmation
									slideAjaxCall("&aid=" + $(e.target).getParent('div.item').id.substring(8) + "&expousoiree=expo", "slide_window");
									$('sr').value = '0';
								} else if(document.location.href.indexOf("r6.php5") != -1) { // Presse
									slideAjaxCall("&aid=" + $(e.target).getParent('div.item').id.substring(8) + "&expousoiree=expo", "slide_window");
									$('sr').value = '1';
								} else if(document.location.href.indexOf("r8.php5") != -1) { // Archives
									slideAjaxCall("&aid=" + $(e.target).getParent('div.item').id.substring(8) + "&expousoiree=expo&menu_ter=no", "slide_window");
									$('sr').value = '3';
									$('se').value = 'e';
								}
								// Mise à jour du formulaire "inner_link"
								$('i').value = $(e.target).getParent('div.item').id.substring(8);
							});
							$$('div[id^=mos_soir_] div[class=image]').addEvent("click", function(e) { // mosaic soirées
								new Event(e).stop();
								if(document.location.href.indexOf("r2.php5") != -1) { // La Programmation
									slideAjaxCall("&sid=" + $(e.target).getParent('div.item').id.substring(9) + "&expousoiree=soiree", "slide_window");
									$('sr').value = '1';
								} else if(document.location.href.indexOf("r6.php5") != -1) { // Presse
									slideAjaxCall("&sid=" + $(e.target).getParent('div.item').id.substring(9) + "&expousoiree=soiree", "slide_window");
									$('sr').value = '2';
								} else if(document.location.href.indexOf("r8.php5") != -1) { // Archives
									slideAjaxCall("&sid=" + $(e.target).getParent('div.item').id.substring(9) + "&expousoiree=soiree&menu_ter=no", "slide_window");
									$('sr').value = '3';
									$('se').value = 's';
								}
								// Mise à jour du formulaire "inner_link"
								$('i').value = $(e.target).getParent('div.item').id.substring(9);
							});
							
							// Gestion du clic sur le "switch slide" de menu_ter
							if($('slide_switch')) {
								$$('li[id=slide_switch] img').addEvent("click", function(e) {
									new Event(e).stop();
									if(e.target.getParent().hasClass('active')) return;
									var menubis_active_id = $$('div#addToMenuBis ul li[class~=active]')[0].id;
									if(menubis_active_id.indexOf('_expo') != -1) { // Exposition
										slideAjaxCall("&expousoiree=expo", "slide_window");
									} else if(menubis_active_id.indexOf('_soiree') != -1) { // Soirées Nomades
										slideAjaxCall("&expousoiree=soiree", "slide_window");
									}
								});
							}
							// Gestion du clic sur le "switch mosaic" de menu_ter
							if($('mosaic_switch')) {
								$('mosaic_switch').addEvent("click", function(e) {
									new Event(e).stop();
									if(document.location.href.indexOf("r2.php5") != -1 || document.location.href.indexOf("r6.php5") != -1) { // La Programmation et Presse
										// On ferme l'onglet qui pourrait être resté ouvert
										$$('div[class=tab_wrapper]').each(function(elt) {
											if(elt.getStyle('display') == "block") {
												elt.setStyle('display', 'none');
												elt.getNext().setStyle('display', 'none');
											}
										});
										// On ferme les Infos pratiques si ouverts
										if($('infop_tab_wrapper')) {
											if($('infop_tab_wrapper').getStyle('display') == "block") {
												$('infop_tab_wrapper').setStyle('display', 'none');
												$('infop_tab_wrapper').getNext().setStyle('display', 'none');
											}
										}
										// Masquage slide / affichage mosaic
										$('slide_window').setStyle('display', 'none');
										$('menu_ter').setStyle('display', 'none');
										$('mosaic_container_program').setStyle('display', 'block');
										
										// Contrôle de la taille du titre et du nom des items ('title' et 'name')
										$$('div[class=item_line]').each(function(elt) {
											var title_maxheight = name_maxheight = 0;
											elt.getChildren('div[class^=item]').each(function(celt) {
												var title_height = celt.getChildren('div.title')[0].getChildren('p')[0].getSize().y;
												var name_height = celt.getChildren('div.name')[0].getSize().y;
												if(title_height > title_maxheight) title_maxheight = title_height;
												if(name_height > name_maxheight) name_maxheight = name_height;
											});
											elt.getChildren('div[class^=item]').each(function(celt) {
												celt.getChildren('div.title')[0].setStyle('height', title_maxheight);
												celt.getChildren('div.name')[0].setStyle('height', name_maxheight);
											});
										});
									} else if(document.location.href.indexOf("r8.php5") != -1) { // Archives
										// Masquage slide / affichage mosaic
										$('slide_window').setStyle('display', 'none');
										$('menu_ter').setStyle('display', 'none');
										$('mosaic_container').setStyle('display', 'block');
									}
								});
							}
						}
						/* *** FIN - Accès "direct" au Slide *** */
						
						// Masquage/affichage de certains élément du slide
						// (afin de contrer les directives 'par défaut' de styles.css qui servent à un affichage sans JavaScript)
						$$('div#slide_container div.slide_item div.item_img').setStyle('display', 'none');
						$$('div#slide_container div.slide_item div.item_img_temp').setStyle('display', 'block');
						$$('div#slide_container div.slide_item div.slide_txt').setStyle('display', 'none');
						$$('div#slide_container div.slide_item div.slide_txt div.legende').setStyle('display', 'none');
					
						active_item = jsonObj._data[0].active_item;
						
						var slide_container_width;
						
						// Slide avec ascenseur
						if(		 document.location.href.indexOf("r2.php5") != -1
								|| document.location.href.indexOf("r6.php5") != -1
								|| document.location.href.indexOf("r7.php5") != -1
								|| document.location.href.indexOf("r8.php5") != -1) {
							
							// Activation de la scrollbar
							myScroller = new MooScroller_fm('slide_container', $E('div.scrollarea .scrollKnob'), {
								mode: 'horizontal',
								hideWhenNoOverflow: false,
								maxThumbSize: 1,
								scrollLinks: {
									forward: $E('div.scrollarea img.scrollForward'),
									back: $E('div.scrollarea img.scrollBack')
								},
								onDragStart: function() {
									$('arrow_left').setStyle('display', 'none');
						      $('arrow_right').setStyle('display', 'none');
						      if($$('div#item_' + active_item + ' h2[class!=home]')[0]) {
						      	$$('div#item_' + active_item + ' h2')[0].setStyle('visibility', 'hidden');
						      	$$('div#item_' + active_item + ' h2')[1].setStyle('visibility', 'hidden');
						      }
						      if($$('div#item_' + active_item + ' ul[class=h3]')[0])
						      	$$('div#item_' + active_item + ' ul[class=h3]')[0].setStyle('visibility', 'hidden');
						      $$('div#item_' + active_item + ' div[class=slide_txt]')[0].setStyle('visibility', 'hidden');
						      if($('infop_tab_wrapper')) { // On ferme les Infos pratiques si ouverts
										if($('infop_tab_wrapper').getStyle('display') == "block") {
											$('infop_tab_wrapper').setStyle('display', 'none');
											$('infop_tab_wrapper').getNext().setStyle('display', 'none');
										}
									}
						      myItemSlide_id = $clear(myItemSlide_id); // Annulation du lancement avec délais du fondu
								},
								onDragEnd: function() {
									myScroller.knob.removeEvent('mousedown', myScroller.bound.start);
									myScroller.knob.removeEvent('mouseup', myScroller.bound.end);
									dragCoef = Math.round($('slide_container').getStyle('margin-left').toInt() / 481);
									mySlideFx.start('margin-left', 481 * dragCoef);
									myKnobFx.start('left', (Math.abs(481 * dragCoef) / myScroller.scrollRatio).limit(0, (myScroller.trackSize - myScroller.knobSize)));
								}
							});
						
							// Gestion du slide de l'ascenseur (knob)
							myKnobFx = new Fx.Tween($$('div[class=scrollKnob]')[0], {
								duration: 1000,
								transition: Fx.Transitions.Cubic.easeOut,
								onComplete: function(el) {
									myScroller.knob.addEvent('mousedown', myScroller.bound.start);
									myScroller.knob.addEvent('mouseup', myScroller.bound.end);
								}
							});
							
							// Gestion des "onglets" de 'menu_ter'
							// [=> 'Liste par lieux' et 'Liste par artistes' de r2, 'Liste des événements' de r7, 'Liste des artistes' de r8 ... ]
							if($$('div#menu_ter ul li[class^=tab_off]')[0]) {
								$$('div#menu_ter ul li[class^=tab_off]').addEvent("click", function(e) {
									new Event(e).stop();
									if(!$(e.target).hasClass('tab_off')) return;
									
									var tab_on = e.target.getChildren('div[class=tab_on]')[0];
									var tab_wrapper = e.target.getChildren('div[class~=tab_wrapper]')[0];
									if(tab_on.getStyle('display') == "none") {
										$$('div[class=tab_on]').each(function(elt) { // Si un onglet est déjà ouvert, on le ferme
											if(elt.getStyle('display') == "block") {
												elt.setStyle('display', 'none');
												elt.getPrevious().setStyle('display', 'none');
											}
										});
										
										tab_wrapper.set('html', '<div class="tab_ajax_loader"><img src="./img/ajax_loader_2.gif" alt="" /></div>');
										
										if(document.location.href.indexOf("r2.php5") != -1 || document.location.href.indexOf("r6.php5") != -1) { // La Programmation et Presse
											if(e.target.id.indexOf("liste_par_lieux_") != -1) {
												tabAjaxCall(tab_wrapper, "&expousoiree=expo&lieuxouartistes=lieux"); // j'ai remplacé : jsonObj._data[0].expousoiree => expo [suppr. ce commentaire quand sûr que tout est OK]
											} else if(e.target.id.indexOf("liste_par_artistes_") != -1) {
												tabAjaxCall(tab_wrapper, "&expousoiree=" + jsonObj._data[0].expousoiree + "&lieuxouartistes=artistes");
											} else if(e.target.id.indexOf("liste_par_dates_") != -1) {
												tabAjaxCall(tab_wrapper, "&expousoiree=soiree&lieuxouartistes=dates"); // j'ai remplacé : jsonObj._data[0].expousoiree => soiree [suppr. ce commentaire quand sûr que tout est OK]
											}
										} else if(document.location.href.indexOf("r7.php5") != -1) { // Autour du festival / Evénements partenaires
											tabAjaxCall(tab_wrapper);
										} else if(document.location.href.indexOf("r8.php5") != -1) { // Archives
											var segment_nb = $$('li[id=alpha_segments] div[class~=active]')[0].id.substring(2);
											tabAjaxCall(tab_wrapper, "&nb_of_segment=" + $$('li#alpha_segments div[id^=s_]').length + "&segment_nb=" + segment_nb + "&expousoiree=" + jsonObj._data[0].expousoiree);
										}
										
										$('menu_bis').setStyle('z-index', '0');
										$('menu_ter').setStyle('z-index', '1200');
										
										tab_on.setStyle('display', 'block');
										if(document.location.href.indexOf("r7.php5") == -1) { // Pour tous les cas autres que : Autour du festival / Evénements partenaires
											tab_wrapper.setStyle('left', -e.target.getPosition($('menu_ter')).x);
										}
										tab_wrapper.setStyle('display', 'block');
									}
								});
								$$('div[class=tab_on]').addEvent("click", function(e) {
									new Event(e).stop();
									var tab_wrapper = e.target.getPrevious();
									if(e.target.getStyle('display') == "block") {
										$('menu_bis').setStyle('z-index', 1100);
										$('menu_ter').setStyle('z-index', '1050');
										
										e.target.setStyle('display', 'none');
										tab_wrapper.setStyle('display', 'none');
									}
								});
							}
							
							// Gestion des segments alpha du 'menu_ter'
							if($$('li#alpha_segments div[id^=s_]')[0]) {
								$$('li#alpha_segments div[id^=s_] a').addEvent("click", function(e) {
									new Event(e).stop();
									if(!e.target.getParent('div').hasClass('active')) {
										$$('li#alpha_segments div[class~=active]')[0].removeClass('active');
										e.target.getParent('div').addClass('active');
										slideAjaxCall("&nb_of_segment=" + $$('li#alpha_segments div[id^=s_]').length + "&segment_nb=" + e.target.getParent('div').id.substring(2) + "&expousoiree=" + jsonObj._data[0].expousoiree + "&menu_ter=no", "slide_window");
										// Mise à jour du formulaire "inner_link"
										$('seg').value = e.target.getParent('div').id.substring(2);
										$('i').value = 0;
									}
								});
							}
						}
						
						// Gestion de l'onglet Informations pratiques
						if($$('li[id^=infop_]')[0]) {
							$$('li[class^=infop_tab_off]').addEvent("click", function(e) {
								new Event(e).stop();
								if(!$(e.target).hasClass('infop_tab_off')) return;
								
								var tab_on = $$('div[class=infop_tab_on]')[0];
								var tab_wrapper = $('infop_tab_wrapper');
								if(tab_on.getStyle('display') == "none") {
									tab_wrapper.set('html', '<div class="infop_ajax_loader"><img src="./img/ajax_loader_2.gif" alt="" /></div>');
									
									tab_on.setStyle('left', e.target.getPosition($('top_container')).x);
									tab_on.setStyle('top', e.target.getPosition($('top_container')).y - 4);
									tab_on.setStyle('display', 'block');
									tab_wrapper.setStyle('top', e.target.getPosition($('top_container')).y + 19);
									tab_wrapper.setStyle('left', 480 - (tab_wrapper.getDimensions().x / 2)); // TODO: utiliser cette nouvelle fonction de Mootools 1.2.2 qui permet de récupérer les dimensions d'un élément non visible !
									tab_wrapper.setStyle('display', 'block');
									
									infop_tabAjaxCall($(e.target).getPrevious().id.substring(2));
								}
							});
							$$('div[class=infop_tab_on]').addEvent("click", function(e) {
								new Event(e).stop();
								var tab_wrapper = e.target.getPrevious();
								if(e.target.getStyle('display') == "block") {
									e.target.setStyle('display', 'none');
									tab_wrapper.setStyle('display', 'none');
								}
							});
						}
						
						// Gestion du switch des images des slides de la Presse (Image  | 1 | 2 | etc.)
						if($$('div[class=switch_img]')[0]) {
							$$('div[class=switch_img] a').addEvent("click", function(e) {
								new Event(e).stop();
								if(e.target.hasClass("active")) return;
								var from_nb = e.target.getParent().getChildren('a[class~=active]')[0].id.substring(3);
								var to_nb = e.target.id.substring(3);
								e.target.getParent().getChildren('a[class~=active]')[0].removeClass("active");
								e.target.addClass("active");
								e.target.getParent('div[class=item_img]').getChildren('img')[from_nb].setStyle('display', 'none');
								e.target.getParent('div[class=item_img]').getChildren('img')[to_nb].setStyle('display', 'block');
								e.target.getParent('div[class=item_img]').getChildren('img')[to_nb].setStyle('visibility', 'visible');
								e.target.getParent('div[class=item_img]').getChildren('img')[to_nb].setStyle('opacity', 1);
								
								var legend = e.target.getParent('div[class=slide_item]').getChildren('div[class=slide_txt]')[0].getChildren('div[class=legende]')[0].getChildren('div')[0];
								legend.setStyle('margin-left', to_nb.toInt() * -440);
							});
						}
						
						// Positionnement du slide par rapport à sa fenêtre de visualisation (slide_window)
						slide_container_width = ($$('div[class^=slide_item]').length * 481) + 199 + 240; // 481 = 41 + 440 (i.e. largeur séparateur + largeur item) ; 199 = largeur séparant le bord gauche du séprateur de l'item du milieu du bord gauche de la slide_window ; 240 = largeur le bord droit de l'item du milieu du bord droit de la slide_window (240 = 41 = 199). 199 et 240 correspondent donc aux 'blancs' aux bouts du slide.
						$('slide_container').setStyle('width', slide_container_width);
						$('slide_container').setStyle('margin-left', -481 * (active_item - 1));
						
						// Fonctions de gestion du Slide
						mySlideFx = new Fx.Tween($('slide_container'), {
							duration: 1000,
							transition: Fx.Transitions.Cubic.easeOut,
							onStart: function(el){
					      $('arrow_left').setStyle('display', 'none');
					      $('arrow_right').setStyle('display', 'none');
					      if($$('div#item_' + active_item + ' h2[class!=home]')[0]) {
					      	$$('div#item_' + active_item + ' h2')[0].setStyle('visibility', 'hidden');
					      	$$('div#item_' + active_item + ' h2')[1].setStyle('visibility', 'hidden');
					      }
					      if($$('div#item_' + active_item + ' ul[class=h3]')[0])
					      	$$('div#item_' + active_item + ' ul[class=h3]')[0].setStyle('visibility', 'hidden');
					      $$('div#item_' + active_item + ' div[class=slide_txt]')[0].setStyle('visibility', 'hidden');
					      if($('infop_tab_wrapper')) { // On ferme les Infos prtaiques si ouverts
									if($('infop_tab_wrapper').getStyle('display') == "block") {
										$('infop_tab_wrapper').setStyle('display', 'none');
										$('infop_tab_wrapper').getNext().setStyle('display', 'none');
									}
								}
					      
					      myItemSlide_id = $clear(myItemSlide_id); // Annulation du lancement avec délais du fondu
					  	},
							onComplete: function(el){
					      var current_margin_left = $('slide_container').getStyle('margin-left').toInt();
					      if(current_margin_left == 0) {
									$('slide_window').setStyle('cursor', 'default');
					      	$('arrow_right').setStyle('display', 'block');
								} else if(slide_container_width - Math.abs(current_margin_left) - 920 == 0) {
									$('slide_window').setStyle('cursor', 'default');
									$('arrow_left').setStyle('display', 'block');
								} else {
									$('arrow_left').setStyle('display', 'block');
					      	$('arrow_right').setStyle('display', 'block');
								}
					  		$$('div#item_' + active_item + ' div[class=slide_txt]')[0].setStyle('display', 'none');
					  		$$('div#item_' + active_item + ' div[class=slide_txt]')[0].setStyle('visibility', 'visible');
					  		
								if(directionTo == "left") { // Clic sur item ou flèche de scroll gauche
					    		if(dragCoef !== false) active_item = Math.abs(dragCoef) + 1;
					    		else active_item--;
					    	} else if(directionTo == "right") { // Clic sur item ou flèche de scroll droit
					    		if(dragCoef !== false) active_item = Math.abs(dragCoef) + 1;
					    		else active_item++;
					    	} else if(directionTo == "jump") { // Clic sur un nom de "Liste par lieux/artistes" de "La Programmation"
					    		active_item = dragCoef;
					    	} else { // Drag de l'ascenseur
					    		active_item = Math.abs(dragCoef) + 1;
					    	}
					    	directionTo = "";
				    		dragCoef = false;
				    		$$('div#item_' + active_item + ' div[class=slide_txt]')[0].setStyle('display', 'block');
					    	
					      if($$('div#item_' + active_item + ' h2[class!=home]')[0]) {
					      	$$('div#item_' + active_item + ' h2')[0].setStyle('visibility', 'visible');
					      	$$('div#item_' + active_item + ' h2')[1].setStyle('visibility', 'visible');
					      }
					    	if($$('div#item_' + active_item + ' ul[class=h3]')[0])
					    		$$('div#item_' + active_item + ' ul[class=h3]')[0].setStyle('visibility', 'visible');
					    	if($$('div#item_' + active_item + '_img img').length > 1 && document.location.href.indexOf("r6.php5") == -1) {
					  			myItemSlide_id = myItemSlide.delay(2000, $('item_' + active_item + '_img'));
					  		}
					  		
					  		// Mise à jour du formulaire "inner_link" (le champ "sr" n'a pas à être mis à jour puisque l'on ne change pas de sous-rubrique au cours d'un slide)
					  		var active_item_img_id = $$('div#item_' + active_item + '_img img')[0].get('id');
					  		$('i').value = active_item_img_id.substring(active_item_img_id.indexOf('_') + 1, active_item_img_id.lastIndexOf('_'));
					  		
					  		// Actualisation de la scrollbar
					  		if($$('div#menu_ter div[class=scrollarea]')[0]) {
					  			myScroller.update();
					  		}
					  	}
						});
						
						// Gestion de l'interaction entre la souris et le slide
						MySlide = function(e) {
							var top_img_pos = $$('div.item_img')[0].getPosition($('slide_window')).y;
							var bottom_img_pos = top_img_pos + 330;
							var mouseX = e.client.x - this.getPosition().x + $(window).getScroll().x;
							var mouseY = e.client.y - this.getPosition().y + $(window).getScroll().y;
							if(((mouseX < 240 && mouseX > 0) || (mouseX < 920 && mouseX > 680)) && (mouseY > top_img_pos && mouseY < bottom_img_pos)) { // Espace qui permet de faire "glisser" le slide
								var current_margin_left = $('slide_container').getStyle('margin-left').toInt();
								if(e.type == 'click') {
									if(mouseX < 240) {
										if(current_margin_left == 0) return false;
										directionTo = "left";
										mySlideFx.start('margin-left', current_margin_left + 481);
										if($$('div#menu_ter div[class=scrollarea]')[0]) {
											myKnobFx.start('left', (Math.abs(current_margin_left + 481) / myScroller.scrollRatio).limit(0, (myScroller.trackSize - myScroller.knobSize)));
										}
									} else if(mouseX > 680) {
										if(slide_container_width - Math.abs(current_margin_left) - 920 == 0) return false;
										directionTo = "right";
										mySlideFx.start('margin-left', current_margin_left - 481);
										if($$('div#menu_ter div[class=scrollarea]')[0]) {
											myKnobFx.start('left', (Math.abs(current_margin_left - 481) / myScroller.scrollRatio).limit(0, (myScroller.trackSize - myScroller.knobSize)));
										}
									}
								} else {
									if(mouseX < 240) {
										if(current_margin_left == 0) {
											return false;
										} else {
											$('slide_window').setStyle('cursor', 'pointer');
											$('arrow_left').setStyle('background-position', '0px -9px');
										}
									} else if(mouseX > 680) {
										if(slide_container_width - Math.abs(current_margin_left) - 920 == 0) {
											return false;
										} else {
											$('slide_window').setStyle('cursor', 'pointer');
											$('arrow_right').setStyle('background-position', '0px -9px');
										}
									}
								}
								
							} else if((basename(document.location.href, '.php5') == "index" || basename(document.location.href, '.php5') == "")
												&& (mouseX >= 240 && mouseX <= 680)
												&& (mouseY > top_img_pos && mouseY < bottom_img_pos)
												&& e.target.get('tag') == "img") { // Espace de l'item central (un click permet d'accéder à la fiche correspondante dans "La Programmation")
								$('slide_window').setStyle('cursor', 'pointer');
								$('arrow_left').setStyle('background-position', '0px 0px');
								$('arrow_right').setStyle('background-position', '0px 0px');
								if(e.type == 'click') {
									var src_basename = basename(e.target.get('src'));
									var item_type = src_basename.substring(0, src_basename.indexOf("_"));
									if(item_type == "art") { // Exposition
										var page = 'r2.php5';
										var sr_value 	= "0";
										var item_id 	= src_basename.substring(src_basename.indexOf("_") + 1, src_basename.lastIndexOf("_"));
									} else if(item_type == "soir") { // Soirée Nomade
										var page = 'r2.php5';
										var sr_value 	= "1";
										var item_id 	= src_basename.substring(src_basename.indexOf("_") + 1, src_basename.indexOf("_", src_basename.indexOf("_") + 1));
									} else if(item_type == "evt") { // Evénement partenaire
										var page = 'r7.php5';
										var sr_value 	= "1";
										var item_id 	= src_basename.substring(src_basename.indexOf("_") + 1, src_basename.lastIndexOf("_"));
									}
									// On renseigne les 2 champs du formulaire "inner_link" présent dans ui.inc, puis on le soumet
									$('sr').value = sr_value;
									$('i').value = item_id;
									$('inner_link').set('action', './' + page);
									$('inner_link').submit();
								}
							} else { // Hors espace du slide
								if(e.type == 'click') {
									return;
								} else {
									$('slide_window').setStyle('cursor', 'default');
									$('arrow_left').setStyle('background-position', '0px 0px');
									$('arrow_right').setStyle('background-position', '0px 0px');
								}
							}
						}
						
						// Stockage dans un tableau des src des 'premières' images à preloader
						// + préparation des 'itemSlide' de ces 'premières' images
						// TODO: traiter le cas des vidéos !!!
						
						/* *** On ne veut finalement précharger qu'une image... ***
						 * [je conserve néanmoins ci-dessous le code qui permet d'en précharger 3]
						if($$('div[class^=slide_item]').length < 3) { // S'il y a moins de 3 items
							start = active_item;
							var end = active_item;
						} else { // A partir de 3 items
							if(active_item == 1) start = 1;
							else if(active_item == $$('div[class^=slide_item]').length) start = active_item - 2;
							else start = active_item - 1;
							var end = start + 2;
						}
						 * *** ...on fixe donc start = end = active_item *** */
						start = active_item;
						var end = active_item;
						
						var firstImages = new Array();
						for(i = start; i <= end; i++) {
							if($('item_' + i + '_img').getChildren('img[class=active]').length > 0) {
								$('item_' + i + '_img').getChildren('img').each(function(img, index) {
									firstImages.include(img.get('src'));
									if(index == 0) img.setStyle('opacity', 1);
									else img.setStyle('opacity', 0);
								});
							} else {
								if($('item_' + i + '_img').getFirst('img'))
									firstImages.include($('item_' + i + '_img').getFirst('img').get('src'));
							}
							$('item_' + i + '_img_temp').setStyle('display', 'none');
							$('item_' + i + '_img').setStyle('display', 'block');
							//if($$('div[class=legende]')[0]) { // TODO:Supprimer ce if quand les infos du slide de la Homme seront dynamiques !!!
								$('item_' + i + '_img_temp').getNext('div').getFirst('div').setStyle('display', 'block');
							//}
						}
						
						// Preloading... et activation du slide.
						var loader = new Asset.images(firstImages, {
							onComplete: function() {
								// Switch content_wrapper / temp_wrapper
								if(to_update == 'content_wrapper') {
									$('temp_wrapper').setStyle('display', 'none');
									$('content_wrapper').setStyle('display', 'block');
								} else {
									$(to_update + '_temp_wrapper').setStyle('display', 'none');
									$(to_update).setStyle('display', 'block');
								}
								
								// Contrôle de la taille du titre des items => H1
								if($$('div[class=h1]')[0]) { // Il faut que le titre (<H1>) soit dans une <div class="h1">
									$$('div[class=slide_item]').each(function(elt) {
										var h1 = elt.getChildren('div[class=h1]')[0].getChildren('h1')[0];
										var h1_height = h1.getSize().y;
										if(h1_height > 30) {
											while(h1_height > 30) {
												h1.setStyle('font-size', (h1.getStyle('font-size').toInt() - 1) + "px");
												h1_height = h1.getSize().y;
											}
										}
									});
								}
								
								// Contrôle de la taille du lieu des items => H3
								if($$('ul[class=h3]')[0]) {
									$$('div[class=slide_item]').each(function(elt) {
										var h3_lieu = elt.getChildren('ul[class=h3]')[0].getChildren('li[class=lieu]')[0];
										var h3_lieu_width = h3_lieu.getSize().x;
										if(h3_lieu_width > 300) {
											while(h3_lieu_width > 300) {
												h3_lieu.setStyle('font-size', (h3_lieu.getStyle('font-size').toInt() - 1) + "px");
												h3_lieu_width = h3_lieu.getSize().x;
											}
										}
									});
								}
								
								// Positionnement des arrow_left et _right de slide_container et affichage du h3 (lieu et info pratiques) et du bloc de texte de l'active_item
					      if($$('div#item_' + active_item + ' h2[class!=home]')[0]) {
					      	$$('div#item_' + active_item + ' h2')[0].setStyle('visibility', 'visible');
					      	$$('div#item_' + active_item + ' h2')[1].setStyle('visibility', 'visible');
					      }
								if($$('div#item_' + active_item + ' ul[class=h3]')[0])
									$$('div#item_' + active_item + ' ul[class=h3]')[0].setStyle('visibility', 'visible');
								$$('div#item_' + active_item + ' div[class=slide_txt]')[0].setStyle('display', 'block');
								var itemSlideHeaderHeight = $('item_' + active_item + '_img').getPosition($('item_' + active_item)).y;
								var arrowTopPosition = itemSlideHeaderHeight + 161; // 161 = 160.5 = (330 / 2) - (9 / 2)
								$$('div[id^=arrow_]').setStyle('top', arrowTopPosition);
								// Masquage de arrow_left ou _right quand slide positionné en première ou en dernière position
								if(active_item == 1) {
									$('arrow_left').setStyle('display', 'none');
								} else if($$('div[class=slide_item]').length == active_item) {
									$('arrow_right').setStyle('display', 'none');
								}
								
								// Activation des gestionnaires d'événements
								$('slide_window').addEvents({
									'mouseenter': MySlide,
									'mousemove': MySlide,
									'mouseleave': MySlide,
									'click': MySlide
								});
								
								// Actualisation de la scrollbar
								if($$('div#menu_ter div[class=scrollarea]')[0]) {
									myScroller.update(slide_container_width);
								}
								
								// Lancement du slideshow si plusieurs images
								if($$('div#item_' + active_item + '_img img').length > 1 && document.location.href.indexOf("r6.php5") == -1) {
									myItemSlide_id = myItemSlide.delay(2000, $('item_' + active_item + '_img'));
								}
								
								// Stockage dans un tableau des src des 'autres' images à preloader (autres que firstImages)
								// + préparation des 'itemSlide' de ces 'autres' images
								// TODO: traiter le cas des vidéos !!!
								$$('div.item_img').each(function(elt) {
									
									/* *** On ne veut finalement précharger qu'une image (cf. même remarque plus haut)... ***
						 			 * [je conserve néanmoins ci-dessous le code qui permet d'en précharger 3]
									if($$('div[class^=slide_item]').length < 3) { // S'il y a moins de 3 items
										var test_firstImages = eval("elt.id != 'item_'+active_item+'_img'");
									} else { // A partir de 3 items
										var test_firstImages = eval("elt.id != 'item_'+start+'_img' && elt.id != 'item_'+(start+1)+'_img' && elt.id != 'item_'+(start+2)+'_img'");
									}
									 * *** ...on fixe donc test_firstImages à la valeur de la ligne ci-dessous *** */
									 
									var test_firstImages = eval("elt.id != 'item_'+active_item+'_img'");
									
									if(test_firstImages) { // On ignore les firstImages
										var itemImages = new Array();
										if(elt.getChildren('img[class=active]').length > 0) {
											elt.getChildren('img').each(function(img, index) {
												itemImages.include(img.get('src'));
												if(index == 0) img.setStyle('opacity', 1);
												else img.setStyle('opacity', 0);
											});
										} else {
											if(elt.getFirst('img'))
												itemImages.include(elt.getFirst('img').get('src'));
										}
										if(itemImages.length > 0) {
											new Asset.images(itemImages, {
												onComplete: function() {
													if(elt.getNext('div')) {
														elt.getNext('div').setStyle('display', 'none');
														elt.setStyle('display', 'block');
														//if($$('div[class=legende]')[0]) { // TODO:Supprimer ce if quand les infos du slide de la Homme seront dynamiques !!!
															elt.getNext('div').getNext('div').getFirst('div').setStyle('display', 'block');
														//}
														// Re-lancement du slideshow après chargement complet des img de l'item (si plusieurs images, et si l'item est l'active_item à ce moment-là) 
														if(elt.id == 'item_' + active_item + '_img' && $$('div#item_' + active_item + '_img img').length > 1 && document.location.href.indexOf("r6.php5") == -1) {
															myItemSlide_id = $clear(myItemSlide_id); // Annulation du lancement avec délais du fondu
															myItemSlide_id = myItemSlide.delay(2000, $('item_' + active_item + '_img'));
														}
													}
												}
											});
										} else {
											elt.getNext('div').setStyle('display', 'none');
											elt.setStyle('display', 'block');
											//if($$('div[class=legende]')[0]) { // TODO:Supprimer ce if quand les infos du slide de la Homme seront dynamiques !!!
												elt.getNext('div').getNext('div').getFirst('div').setStyle('display', 'block');
											//}
										}
									}
								});
							}
						});
						break;
					
					case 'request_empty':
						// Cas de figure où il n'y a aucun élément à afficher ans le slide : on affiche en conséquence une page "en construction"
						comingsoonAjaxCall();
						break;
					
					case 'request_failed':
						//TODO: remplacer le spinner par un message d'erreur
						break;
				}
			}
		}
	}).send(toSend);
}
/* ***********************
 * *** FIN - S L I D E ***
 * ***********************/


/* *** Archive MOSAIC - AJAX *** */
function mosaicAjaxCall(add) {
	var suffix = "";
	if(document.location.href.indexOf("?") != -1) {
		suffix = document.location.href.substring(document.location.href.indexOf("?"));
	}
	var toSend = "ajax=yes&location=" + basename(document.location.href, suffix) + "&type=mosaic" + (add == undefined ? '' : add);
	
	// Annulation du lancement avec délais du fondu
	myItemSlide_id = $clear(myItemSlide_id);
	
	// Switch content_wrapper / temp_wrapper
	$('temp_wrapper').setStyle('display', 'block');
	$('content_wrapper').setStyle('display', 'none');
	
	new Request.HTML({
		url: "./ajax/slide_data.php5",
		method: "post",
		update: $('content_wrapper'),
		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
			var jsonObj = JSON.decode(this.getHeader('X-JSON'));
			if(jsonObj) {
				switch (jsonObj._status) {
					case 'request_successful':
					
					// Switch content_wrapper / temp_wrapper
					if(document.location.href.indexOf("r2.php5") != -1) { // La Programmation
						$('menu_ter').setStyle('display', 'none');
						$('slide_window').setStyle('display', 'none');
					} else if(document.location.href.indexOf("r6.php5") != -1) { // Presse
						$('menu_ter').setStyle('display', 'none');
						$('slide_window').setStyle('display', 'none');
						$$('div[class=footer]')[0].setStyle('margin-top', 20);
					} else if(document.location.href.indexOf("r8.php5") != -1) { // Archives
						$('menu_ter').setStyle('display', 'none');
						$('slide_window').setStyle('display', 'none');
					}
					$('temp_wrapper').setStyle('display', 'none');
					$('content_wrapper').setStyle('display', 'block');
					
					// Contrôle de la taille du titre et du nom des items ('title' et 'name')
					if(document.location.href.indexOf("r2.php5") != -1 || document.location.href.indexOf("r6.php5") != -1) { // La Programmation et Presse
						$$('div[class=item_line]').each(function(elt) {
							var title_maxheight = name_maxheight = 0;
							elt.getChildren('div[class^=item]').each(function(celt) {
								var title_height = celt.getChildren('div.title')[0].getChildren('p')[0].getSize().y;
								var name_height = celt.getChildren('div.name')[0].getSize().y;
								if(title_height > title_maxheight) title_maxheight = title_height;
								if(name_height > name_maxheight) name_maxheight = name_height;
							});
							elt.getChildren('div[class^=item]').each(function(celt) {
								celt.getChildren('div.title')[0].setStyle('height', title_maxheight);
								celt.getChildren('div.name')[0].setStyle('height', name_maxheight);
							});
						});
					}
					
					// Gestion des clics sur les items de la mosaique
					$$('div[id^=mos_art_] div[class=image]').addEvent("click", function(e) { // mosaic expo
						new Event(e).stop();
						if(document.location.href.indexOf("r2.php5") != -1) { // La Programmation
							slideAjaxCall("&aid=" + $(e.target).getParent('div.item').id.substring(8) + "&expousoiree=expo", "slide_window");
							$('sr').value = '0';
						} else if(document.location.href.indexOf("r6.php5") != -1) { // Presse
							slideAjaxCall("&aid=" + $(e.target).getParent('div.item').id.substring(8) + "&expousoiree=expo", "slide_window");
							$('sr').value = '1';
						} else if(document.location.href.indexOf("r8.php5") != -1) { // Archives
							slideAjaxCall("&aid=" + $(e.target).getParent('div.item').id.substring(8) + "&expousoiree=expo&menu_ter=no", "slide_window");
							$('sr').value = '3';
							$('se').value = 'e';
						}
						// Mise à jour du formulaire "inner_link" (+ $('sr') ci-dessus)
						$('i').value = $(e.target).getParent('div.item').id.substring(8);
					});
					$$('div[id^=mos_soir_] div[class=image]').addEvent("click", function(e) { // mosaic soirées
						new Event(e).stop();
						if(document.location.href.indexOf("r2.php5") != -1) { // La Programmation
							slideAjaxCall("&sid=" + $(e.target).getParent('div.item').id.substring(9) + "&expousoiree=soiree", "slide_window");
							$('sr').value = '1';
						} else if(document.location.href.indexOf("r6.php5") != -1) { // Presse
							slideAjaxCall("&sid=" + $(e.target).getParent('div.item').id.substring(9) + "&expousoiree=soiree", "slide_window");
							$('sr').value = '2';
						} else if(document.location.href.indexOf("r8.php5") != -1) { // Archives
							slideAjaxCall("&sid=" + $(e.target).getParent('div.item').id.substring(9) + "&expousoiree=soiree&menu_ter=no", "slide_window");
							$('sr').value = '3';
							$('se').value = 's';
						}
						// Mise à jour du formulaire "inner_link"
						$('i').value = $(e.target).getParent('div.item').id.substring(9);
					});
					
					// Gestion du clic sur le "switch slide" de menu_ter
					if($('slide_switch')) {
						$$('li[id=slide_switch] img').addEvent("click", function(e) {
							new Event(e).stop();
							if(e.target.getParent().hasClass('active')) return;
							if(document.location.href.indexOf("r2.php5") != -1 || document.location.href.indexOf("r6.php5") != -1) { // La Programmation et Presse
								if(document.location.href.indexOf("r2.php5") != -1) {
									var menubis_active_id = $$('div#addToMenuBis ul li[class~=active]')[0].id;
								} else if(document.location.href.indexOf("r6.php5") != -1) {
									var menubis_active_id = $$('div#addToMenuBis ul[id=r6] li[class~=selected]')[0].id;
								}
								if(menubis_active_id.indexOf('_expo') != -1) { // Exposition
									slideAjaxCall("&expousoiree=expo", "slide_window");
								} else if(menubis_active_id.indexOf('_soiree') != -1) { // Soirées Nomades
									slideAjaxCall("&expousoiree=soiree", "slide_window");
								}
							}
						});
					}
					// Gestion du clic sur le "switch mosaic" de menu_ter
					if($('mosaic_switch')) {
						$('mosaic_switch').addEvent("click", function(e) {
							new Event(e).stop();
							if(document.location.href.indexOf("r2.php5") != -1 || document.location.href.indexOf("r6.php5") != -1) { // La Programmation et Presse
								// On ferme l'onglet qui pourrait être resté ouvert
								$$('div[class=tab_wrapper]').each(function(elt) {
									if(elt.getStyle('display') == "block") {
										elt.setStyle('display', 'none');
										elt.getNext().setStyle('display', 'none');
									}
								});
								
								// On ferme les Infos pratiques si ouverts
								if($('infop_tab_wrapper')) {
									if($('infop_tab_wrapper').getStyle('display') == "block") {
										$('infop_tab_wrapper').setStyle('display', 'none');
										$('infop_tab_wrapper').getNext().setStyle('display', 'none');
									}
								}
								
								$('slide_window').setStyle('display', 'none');
								$('menu_ter').setStyle('display', 'none');
								$('mosaic_container_program').setStyle('display', 'block');
							} else if(document.location.href.indexOf("r8.php5") != -1) { // Archives
								$('slide_window').setStyle('display', 'none');
								$('menu_ter').setStyle('display', 'none');
								$('mosaic_container').setStyle('display', 'block');
							}
						});
					}
					
					break;
				}
			}
		}
	}).send(toSend);
}

/* *** menu_ter TAB - AJAX *** */
function tabAjaxCall(to_update, add) {
	var toSend = "location=" + document.location.href + (add == undefined ? '' : add);
	
	new Request.HTML({
		url: "./ajax/tab_data.php5",
		method: "post",
		update: $(to_update),
		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
			var jsonObj = JSON.decode(this.getHeader('X-JSON'));
			if(jsonObj) {
				switch (jsonObj._status) {
					case 'request_successful':
					
					// Gestionnaire d'événement "click" sur un des "segments" de l'onglet (=> uniquement r8 = Archives)
					if(document.location.href.indexOf("r8.php5") != -1) {
						$$('div.alpha_segments div[id^=sg_]').addEvent("click", function(e) {
							new Event(e).stop();
							if(!e.target.hasClass('active')) {
								var tab_wrapper = e.target.getParent().getParent();
								var current_height = tab_wrapper.getSize().y;
								tab_wrapper.set('html', '<div class="tab_ajax_loader"><img src="./img/ajax_loader_2.gif" alt="" /></div>');
								$$('div[class=tab_ajax_loader]')[0].setStyle('height', current_height - 27);
								tabAjaxCall(tab_wrapper, "&nb_of_segment=" + $$('li#alpha_segments div[id^=s_]').length + "&segment_nb=" + e.target.id.substring(3) + "&expousoiree=" + jsonObj._data[0].expousoiree);
							}
						});
					}
					
					// Gestionnaire d'événement "click" sur un item de l'onglet
					$$('a.tab_item').addEvent("click", function(e) {
						new Event(e).stop();
						// Effacement de l'onglet
						var tab_wrapper = e.target.getParent('div.tab_wrapper');
						var tab_on = tab_wrapper.getNext('div');
						if(tab_on.getStyle('display') == "block") {
							$('menu_bis').setStyle('z-index', 1100);
							$('menu_ter').setStyle('z-index', '1050');
							
							tab_on.setStyle('display', 'none');
							tab_wrapper.setStyle('display', 'none');
						}
						
						if(document.location.href.indexOf("r8.php5") != -1) { // Archives (avec segments alpha)
							var nb_of_segment = e.target.id.substring(0, e.target.id.indexOf("&"));
							var segment_nb = e.target.id.substring(e.target.id.indexOf("&") + 1, e.target.id.lastIndexOf("&"));
							var a_ou_s_id = e.target.id.substring(e.target.id.lastIndexOf("&") + 1);
							if(a_ou_s_id.indexOf("a_") != -1) { // expo
								var a_ou_s_id_str = "aid=" + a_ou_s_id.substring(2);
								var expousoiree = "expo";
							} else if(a_ou_s_id.indexOf("s_") != -1) { // soirée
								var a_ou_s_id_str = "sid=" + a_ou_s_id.substring(2);
								var expousoiree = "soiree";
							}
							$$('li#alpha_segments div[class~=active]')[0].removeClass('active');
							$('s_' + segment_nb).addClass('active');
							slideAjaxCall("&nb_of_segment=" + nb_of_segment + "&segment_nb=" + segment_nb + "&" + a_ou_s_id_str + "&expousoiree=" + expousoiree + "&menu_ter=no", "slide_window");
							// Mise à jour du formulaire "inner_link"
							$('i').value = a_ou_s_id.substring(2);
							$('seg').value = segment_nb;
						} else if(	document.location.href.indexOf("r2.php5") != -1
										 || document.location.href.indexOf("r6.php5") != -1
										 || document.location.href.indexOf("r7.php5") != -1) { // La Programmation, Presse et Evénements partenaires
							var img = $$('div[id=slide_container] img[id^=' + e.target.id + ']')[0];
							var item_nb_to_go = img.getParent('div.slide_item').id.substring(5);
							directionTo = "jump";
							dragCoef = item_nb_to_go;
							var current_margin_left = $('slide_container').getStyle('margin-left').toInt();
							var this_coef = active_item - item_nb_to_go;
							mySlideFx.start('margin-left', current_margin_left + (481 * this_coef));
							myKnobFx.start('left', (Math.abs(current_margin_left + (481 * this_coef)) / myScroller.scrollRatio).limit(0, (myScroller.trackSize - myScroller.knobSize)));
							// Mise à jour du formulaire "inner_link" (le champ "sr" n'a pas à être mis à jour puisque l'on ne change pas de sous-rubrique au cours d'un slide)
							$('i').value = e.target.id.substring(e.target.id.indexOf('_') + 1);
						} else if(document.location.href.indexOf("r3.php5") != -1) { // Informations pratiques/Géographie du festival
							var site_nb = e.target.getParent('li').id.substring(5);
							site_lieu_id = map_site_tab[site_nb - 1];
							var site_lieu_y = $('map_site_' + site_lieu_id).getPosition('slide_map_container').y;
							
							var map_y = -site_lieu_y + 260; // 260 = moitié de la hauteur de la fenêtre du plan
							if(map_y > 0) map_y = 0;
							if(map_y < -986) map_y = -986; // 986 = 1506 - 520 (i.e. hauteur totale du plan - hauteur de la fenêtre du plan)
							
							mySlideFx_map.start('margin-top', map_y);
							myKnobFx_map.start('top', (Math.abs(map_y) / myScroller_map.scrollRatio).limit(0, (myScroller_map.trackSize - myScroller_map.knobSize)));
						}
					});
					break;
				}
			}
		}
	}).send(toSend);
}

/* *** Infos pratiques TAB - AJAX *** */
function infop_tabAjaxCall(lieu_id) {
	new Request.HTML({
		url: "./ajax/infop_tab_data.php5",
		method: "post",
		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
			var jsonObj = JSON.decode(this.getHeader('X-JSON'));
			if(jsonObj) {
				switch (jsonObj._status) {
					case 'request_successful':
						if(responseElements.filter('img').length > 0) { // S'il y a des images (photo du lieu ou extrait de plan) à afficher dans l'onglet infos p.
							var infop_img = new Array();
							responseElements.filter('img').each(function(img) {
								infop_img.include(img.get('src'));
							});
							new Asset.images(infop_img, {
								onComplete: function() {
									if(document.location.href.indexOf("r3.php5") == -1) { // On ne repositionne l'onglet que si l'on est dans le cadre du slide de La Programmation ou de la Home page (i.e. à l'exclusion du Calendrier complet)
										var infop_tab_wrapper_width = jsonObj._data[0].infop_img_width + 283 + 287 + 3; // largeur = photo + texte + plan + marges
										//var infop_tab_wrapper_width = jsonObj._data[0].infop_img_width + 283 + 3; // => plan non affiché : largeur = photo + texte + marges
										$('infop_tab_wrapper').setStyle('left', 480 - (infop_tab_wrapper_width / 2));
									}
									$('infop_tab_wrapper').set('html', responseHTML);
									
									// S'il y a un lien "voir tout le plan"
									if($$('div.infop_plan a[id^=lieu_]')[0]) {
											$$('div.infop_plan a[id^=lieu_]').addEvent("click", function(e) {
												new Event(e).stop();
												$('sr').value = 2;
												$('sm').value = e.target.id.substring(5);
												$('inner_link').set('action', './r3.php5');
												$('inner_link').submit();
											});
									}
									
									// Contrôle de la hauteur du texte de l'onglet, et calage en bas si la hauteur du texte ne dépasse pas la hauteur de l'onglet
									var infop_txt_H = $$('div.infop_txt_content_wrapper')[0].getDimensions().height;
									if(infop_txt_H < 287) {
										$$('div.infop_txt_content_wrapper')[0].setStyle('padding-top', 287 - infop_txt_H + 15);
									}
									
									// Gestion du scroll du texte s'il déborde le cadre de l'onglet
									// Activation de la scrollbar
									myScroller_infop = new MooScroller($E('div.infop_txt div.infop_txt_content'), $E('div.infop_txt .scrollKnob_infop'), {
										mode: 'vertical',
										hideWhenNoOverflow: true,
										maxThumbSize: 1
									});
								}
							});
						} else { // S'il n'y a pas d'image à afficher dans l'onglet infos p.
							if(document.location.href.indexOf("r3.php5") == -1) { // On ne repositionne l'onglet que si l'on est dans le cadre du slide de La Programmation ou de la Home page (i.e. à l'exclusion du Calendrier complet)
								var infop_tab_wrapper_width = jsonObj._data[0].infop_img_width + 283 + 287 + 3; // largeur = photo + texte + plan + marges
								//var infop_tab_wrapper_width = jsonObj._data[0].infop_img_width + 283 + 3; // => plan non affiché : largeur = photo + texte + marges
								$('infop_tab_wrapper').setStyle('left', 480 - (infop_tab_wrapper_width / 2));
							}
							$('infop_tab_wrapper').set('html', responseHTML);
							
							// S'il y a un lien "voir tout le plan"
							if($$('div.infop_plan a[id^=lieu_]')[0]) {
									$$('div.infop_plan a[id^=lieu_]').addEvent("click", function(e) {
										new Event(e).stop();
										$('sr').value = 2;
										$('sm').value = e.target.id.substring(5);
										$('inner_link').set('action', './r3.php5');
										$('inner_link').submit();
									});
							}
							
							// Contrôle de la hauteur du texte de l'onglet, et calage en bas si la hauteur du texte ne dépasse pas la hauteur de l'onglet
							var infop_txt_H = $$('div.infop_txt_content_wrapper')[0].getDimensions().height;
							if(infop_txt_H < 257) {
								$$('div.infop_txt_content_wrapper')[0].setStyle('padding-top', 287 - infop_txt_H + 15);
							} else {
								$$('div.infop_txt_content_wrapper')[0].setStyle('padding-top', 15);
							}
							
							// Gestion du scroll du texte s'il déborde le cadre de l'onglet
							// Activation de la scrollbar
							myScroller_infop = new MooScroller($E('div.infop_txt div.infop_txt_content'), $E('div.infop_txt .scrollKnob_infop'), {
								mode: 'vertical',
								hideWhenNoOverflow: true,
								maxThumbSize: 1
							});
						}
						break;
				}
			}
		}
	}).send("lid=" + lieu_id);
}


/* *** homeBottom - AJAX *** */
function homeBottomAjaxCall() {
	$('home_bottom_container').setStyle('display', 'none');
	$$('div.bottom_item div').setStyle('display', 'none');
	$('ajax_loader_2').setStyle('display', 'block');
	new Request.HTML({
		url: "./ajax/home_bottom_data.php5",
		method: "post",
		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
			var jsonObj = JSON.decode(this.getHeader('X-JSON'));
			if(jsonObj) {
				switch (jsonObj._status) {
					case 'request_successful':
						// Injection du code HTML
						responseElements.filter('div[id=home_bottom_container]')[0].replaces($('home_bottom_container'));
						
						// On supprime le margin-right du dernier élément
						$('home_bottom_container').getLast('div').getPrevious('div').setStyle('margin-right', 0);
						
						// Collecte de toutes les img de 'home_bottom_container'
						var allImages = new Array();
						$('home_bottom_container').getElements('img').each(function(img) {
							allImages.include(img.get('src'));
						});
						
						// Preloading, affichage... 
						var loader = new Asset.images(allImages, {
							onComplete: function() {
								$('home_bottom_container_temp').setStyle('display', 'none');
								$('home_bottom_container').setStyle('display', 'block');
								$('home_bottom_container').setStyle('height', $('home_bottom_container').getSize().y);
								$$('div.bottom_item div').setStyle('display', 'block');
							}
						});
						
						// Gestionnaire du click sur le bouton "Ecouter" de la Radio du bout de la nuit
						if($('radio_button')) {
							$('radio_button').addEvent("click", function(e) {
								new Event(e).stop();
								var props = 'toolbar=no,location=no,status=no,scrollbars=no,menubar=no,resizable=yes,copyhistory=no,width=260,height=285';
								popupWin = window.open('./radio_popup.php5', 'Radio', props);
								popupWin.focus();
							});
						}
						break;
						
					case 'request_failed':
						//TODO: remplacer le spinner par un message d'erreur
						break;
				}
			}
		}
	}).send("ajax=yes");
}

/* *** D O M  R E A D Y *** */
window.addEvent("domready", function() {
	/* *** Gestion de la taille de la police *** */
	var fontsize = parseInt(Cookie.read('fontsize')) || 12;
	$$('body')[0].setStyle('font-size',fontsize + 'px');
	$('font_plus').addEvent('click', function(e) {
		new Event(e).stop();
		if(fontsize >= 16) return;
		fontsize = fontsize + 2;
		$$('body')[0].setStyle('font-size', fontsize + 'px');
		Cookie.write('fontsize', fontsize);
	});
	$('font_normal').addEvent('click', function(e) {
		new Event(e).stop();
		fontsize = 12;
		$$('body')[0].setStyle('font-size', fontsize + 'px');
		Cookie.write('fontsize', fontsize);
	});
	$('font_moins').addEvent('click', function(e) {
		new Event(e).stop();
		if(fontsize <= 8) return;
		fontsize = fontsize - 2;
		$$('body')[0].setStyle('font-size', fontsize + 'px');
		Cookie.write('fontsize', fontsize);
	});
	
	/* *** Gestion de la valeur par défaut du champ "Rechercher" du menu bis *** */
	if($('search')) {
		$('search').addEvent("focus", function(e) {
			if($('search').value == search_str) $('search').value = "";
		});
		$('search').addEvent("blur", function(e) {
			if($('search').value == "") $('search').value = search_str;
		});
	}
	
	/* *** Gestion du calque "Newsletter" du menu bis *** */
	$('newsletter').addEvent("click", function(e) {
		if($('newsletter_tab').getStyle('display') == "none") {
			$('menu').setStyle('z-index', '0');
			$('menu').setStyle('position', 'static');
			
			$('newsletter_tab').setStyle('display', 'block');
			$('newsletter_div').setStyle('left', -(294 - (920 - $('newsletter').getPosition('top_container').x + 3)));
			$('newsletter_div').setStyle('display', 'block');
			$('newsletter_input').value = "";
			$('newsletter_input').focus();
		}
	});
	$('newsletter_tab').addEvent("click", function(e) {
		new Event(e).stop();
		if($('newsletter_tab').getStyle('display') == "block") {
			$('menu').setStyle('z-index', 1200);
			$('menu').setStyle('position', 'relative');
			
			$('newsletter_tab').setStyle('display', 'none');
			$('newsletter_div').setStyle('display', 'none');
		}
	});
	
	$('newsletter_submit').addEvent("click", function(e) {
		new Event(e).stop();
		if($('newsletter_input').get('value') == "") {
			$('newsletter_input').focus();
			return;
		}
		new Request.HTML({
			url: "./ajax/newsletter_action.php5",
			method: "post",
			update: $('newsletter_msg'),
			onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
				var jsonObj = JSON.decode(this.getHeader('X-JSON'));
				if(jsonObj) {
					switch (jsonObj._status) {
						case 'to_empty':
							$('newsletter_input').set('value', '');
							break;
						case 'do_nothing':
							$('newsletter_input').focus();
							break;
					}
				}
			}
		}).send("email=" + $('newsletter_input').get('value'));
	});
	
	/* *** Scroll haut de page *** */
	$('back_to_top').addEvent("click", function(e) {
		new Event(e).stop();
		var myScrollFx = new Fx.Scroll(window).toTop();
	});
	
	/* *** AJAX - Gestion de la langue *** */
	$$('[id^=language_]')[0].addEvent("click", function(e) {
		new Event(e).stop();
		new Request.HTML({
			url: "./ajax/switch_lang.php5",
			method: "post",
			onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
				var jsonObj = JSON.decode(this.getHeader('X-JSON'));
				if(jsonObj) {
					switch (jsonObj._status) {
						case "lang_switched":
							//document.location.href = jsonObj._data[0].goto;
							$('inner_link').set('action', './' + jsonObj._data[0].goto);
							$('inner_link').submit();
							break;
					}
				}
			}
		}).send("location=" + document.location.href);
	});
	
	/* *** Preload des images *** */
	var loader = new Asset.images(myImages, {
		onComplete: function() {
			// ...
		}
	});
	
});