/* *****************
 * *** 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(from.getParent('div.slide_item')) { // Au cas où le slide a été mis à jour entre le lancement de l'effet fondu et ce onComplete
				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();
								var myScrollFx = new Fx.Scroll(window).toTop();
								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_perf_] div[class=image]').addEvent("click", function(e) { // mosaic performances
								new Event(e).stop();
								var myScrollFx = new Fx.Scroll(window).toTop();
								if(document.location.href.indexOf("r2.php5") != -1) { // La Programmation
									slideAjaxCall("&pid=" + $(e.target).getParent('div.item').id.substring(9) + "&expousoiree=performance", "slide_window");
									$('sr').value = '1';
								} else if(document.location.href.indexOf("r6.php5") != -1) { // Presse
									slideAjaxCall("&pid=" + $(e.target).getParent('div.item').id.substring(9) + "&expousoiree=performance", "slide_window");
									$('sr').value = '2';
								} else if(document.location.href.indexOf("r8.php5") != -1) { // Archives
									slideAjaxCall("&pid=" + $(e.target).getParent('div.item').id.substring(9) + "&expousoiree=performance&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(9);
							});
							$$('div[id^=mos_soir_] div[class=image]').addEvent("click", function(e) { // mosaic soirées
								new Event(e).stop();
								var myScrollFx = new Fx.Scroll(window).toTop();
								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 = '2';
								} 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 = '3';
								} 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");
									} else if(menubis_active_id.indexOf('_performance') != -1) { // Performances
										slideAjaxCall("&expousoiree=performance", "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');
									}
									// Mise à jour du formulaire "inner_link"
									$('i').value = 0;
								});
							}
						}
						/* *** 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;
						
						// Mise en forme de document.location.href (pour la paragraphe qui suit)
						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.)
						
						// Slide avec ascenseur
						if(		 (location_href.indexOf("index.php5") != -1 && jsonObj._data[0].scroll_bar_display == "ok")
								|| location_href.indexOf("r2.php5") 		!= -1
								|| location_href.indexOf("r6.php5") 		!= -1
								|| location_href.indexOf("r7.php5") 		!= -1
								|| 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");
											} 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=" + jsonObj._data[0].expousoiree + "&lieuxouartistes=dates");
											}
										} 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 en forme de document.location.href (pour la paragraphe qui suit)
								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.)
					  		
					  		// 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)
					  		if(location_href.indexOf("index.php5") == -1) { // Inutile dans le cas du Slide de la Home page (et dans le cas d'un 'Home item' avec texte et non photo, cela génère même une erreur JS, puisque l'image transparente qui recouvre le texte n'a pas d'id)
					  			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;
							// Espace qui permet de faire "glisser" le slide
							if(((mouseX < 240 && mouseX > 0) || (mouseX < 920 && mouseX > 680)) && (mouseY > top_img_pos && mouseY < bottom_img_pos)) {
								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');
										}
									}
								}
								
							}
							// Espace de l'item central (un click permet d'accéder à la fiche correspondante dans "La Programmation")
							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") {
								if(!e.target.hasClass('unlink')) // La class 'unlink' est attribuée aux images des seuls 'Home item', quand ils ne doivent renvoyer nulle part
									$('slide_window').setStyle('cursor', 'pointer');
								$('arrow_left').setStyle('background-position', '0px 0px');
								$('arrow_right').setStyle('background-position', '0px 0px');
								if(e.type == 'click' && !e.target.hasClass('unlink')) {
									if(e.target.get('class').indexOf('link_') != -1) { // Cas des 'Home item' (dont la property class comprend nécessairement 'unlink' ou 'link_'
										var link_url;
										var reg = new RegExp("[ ]+", "g");
										var class_tab = e.target.get('class').split(reg);
										class_tab.each(function(c) {
											if(c.indexOf('link_') != -1) {
												link_url = c.substring(5);
											}
										});
										if(link_url.substr(0, 2) == "./") { // Cas d'une URL interne
											var reg 		= new RegExp("[?]+", "g");
											var url_tab = link_url.split(reg);
											var page 		= url_tab[0];
											
											var reg 		= new RegExp("[&]+", "g");
											var param_tab = url_tab[1].split(reg);
											var sr_value 	= param_tab[0].substring(3);
											var item_id 	= param_tab[1].substring(2);
											
											$('sr').value = sr_value;
											$('i').value = item_id;
											$('inner_link').set('action', page);
											$('inner_link').submit();
										} else if(link_url.substr(0, 7) == "http://") { // Cas d'une URL externe
											var popupWin = window.open(link_url);
											popupWin.focus();
										}
									} else { // Cas des item Soirée, Expo., Performances ou Evt
										var src_basename = basename(e.target.get('src'));
										// TODO: suppr. cette ligne commentée si tout va bien (cf. slide_data.php5, lignes 202 et 205) : var item_type = src_basename.substring(0, src_basename.indexOf("_"));
										var item_type = e.target.get('id').substring(0, e.target.get('id').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 == "perf") { // 	Performances
											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 == "soir") { // Soirée Nomade
											var page 			= 'r2.php5';
											var sr_value 	= "2";
											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("_"));
										} else if(item_type == "cahorsExpo") { // 20e édition - Cahors / Expo
											var page 				= 'r9.php5';
											var sr_value 		= "0";
											$('sr2').value 	= "0";
											var item_id 		= "0";
										} else if(item_type == "cahorsSoir") { // 20e édition - Cahors / Soirée
											var page 				= 'r9.php5';
											var sr_value 		= "0";
											$('sr2').value 	= "1";
											var item_id 		= "0";
										} else if(item_type == "reimsExpo") { // 20e édition - Reims / Expo
											var page 				= 'r9.php5';
											var sr_value 		= "1";
											$('sr2').value 	= "0";
											var item_id 		= "0";
										}
										// 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();
									}
								}
							}
							// Hors espace du slide
							else {
								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('div[class=home_item_txt]').length == 0) { // On ignore les 'div' de texte des 'Home item'
								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');
								$('item_' + i + '_img_temp').getNext('div').getFirst('div').setStyle('display', 'block');
							} else { // Si c'est une 'div' de texte d'un 'Home item', il faut l'afficher maintenant
								$('item_' + i + '_img').getNext('div').setStyle('display', 'none');
								$('item_' + i + '_img').setStyle('display', 'block');
								$('item_' + i + '_img').getNext('div').getNext('div').getFirst('div').setStyle('display', 'block');
							}
						}
						
						// Preloading... et activation du slide.
						if(firstImages.length == 0) { // Pas de preload si pas d'img à préloder (ce qui est le cas quand firstImages est une 'div' de texte d'un 'Home item')
							slideActivation(to_update, slide_container_width);
						} else {
							var loader = new Asset.images(firstImages, {
								onComplete: function() {
									slideActivation(to_update, slide_container_width);
								}
							});
						}
						break;
					
					case 'request_empty':
						// Cas de figure où il n'y a aucun élément à afficher dans 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 ***
 * ***********************/

/* *** Activation du slide *** */
function slideActivation(to_update, slide_container_width) {
	// 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 year_div 	= elt.getChildren('div[class=h1]')[0].getChildren('div')[0];
			var h1 				= elt.getChildren('div[class=h1]')[0].getChildren('h1')[0];
			
			if(year_div) {
				// Calcul de la largeur de la div de l'année
				var year_div_width = year_div.getSize().x;
				// On fixe la largeur du titre (h1) à 440 - la largeur de l'année
				h1.setStyle('width', 440 - year_div_width);
			}
			
			// On réduit de 1px itérativement le corp de la police du titre et de l'année si la hauteur de la ligne du titre dépasse 30px
			var h1_height = h1.getSize().y;
			if(h1_height > 30) {
				while(h1_height > 30) {
					if(year_div && year_div.getStyle('font-size').toInt() > 10) {
						year_div.setStyle('font-size', (year_div.getStyle('font-size').toInt() - 1) + "px");
					}
					h1.setStyle('font-size', (h1.getStyle('font-size').toInt() - 1) + "px");
					
					if(year_div) {
						// On réévalue la largeur du titre (h1) à 440 - la largeur nouvelle de l'année
						year_div_width = year_div.getSize().x;
						h1.setStyle('width', 440 - year_div_width);
					}
					
					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');
							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');
				elt.getNext('div').getNext('div').getFirst('div').setStyle('display', 'block');
			}
		}
	});
}

/* *** 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();
						var myScrollFx = new Fx.Scroll(window).toTop();
						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_perf_] div[class=image]').addEvent("click", function(e) { // mosaic performances
						new Event(e).stop();
						var myScrollFx = new Fx.Scroll(window).toTop();
						if(document.location.href.indexOf("r2.php5") != -1) { // La Programmation
							slideAjaxCall("&pid=" + $(e.target).getParent('div.item').id.substring(9) + "&expousoiree=performance", "slide_window");
							$('sr').value = '1';
						} else if(document.location.href.indexOf("r6.php5") != -1) { // Presse
							slideAjaxCall("&pid=" + $(e.target).getParent('div.item').id.substring(9) + "&expousoiree=performance", "slide_window");
							$('sr').value = '2';
						} else if(document.location.href.indexOf("r8.php5") != -1) { // Archives
							slideAjaxCall("&pid=" + $(e.target).getParent('div.item').id.substring(9) + "&expousoiree=performance&menu_ter=no", "slide_window");
							$('sr').value = '3';
							$('se').value = 'p';
						}
						// Mise à jour du formulaire "inner_link"
						$('i').value = $(e.target).getParent('div.item').id.substring(9);
					});
					$$('div[id^=mos_soir_] div[class=image]').addEvent("click", function(e) { // mosaic soirées
						new Event(e).stop();
						var myScrollFx = new Fx.Scroll(window).toTop();
						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 = '2';
						} 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 = '3';
						} 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 = $$('ul#select_opt_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");
								} else if(menubis_active_id.indexOf('_performance') != -1) { // Performances
									slideAjaxCall("&expousoiree=performance", "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');
							}
							// Mise à jour du formulaire "inner_link"
							$('i').value = 0;
						});
					}
					
					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', 'a.tab_item span').addEvent("click", function(e) {
						new Event(e).stop();
						
						// Nécessaire, parce que, à l'intérieur du lien, on peut cliquer sur un <span> de mise en forme du texte du lien - or c'est bien l'id de la balise <a> que l'on veut !
						var e_target = e.target.get('tag') == "a" ? e.target : e.target.getParent("a");
						
						// 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 + jsonObj._data[0].map_img_width + 2; // largeur = photo + texte + plan + bordures
										var tab_right_limit = $$('div.infop_tab_on')[0].getCoordinates($('top_container')).left + $$('div.infop_tab_on')[0].getCoordinates().width;
										if(480 + (infop_tab_wrapper_width / 2) < tab_right_limit) { // Si la limite droite de l'onglet dépasse la limite droite du contenu de l'onglet
											$('infop_tab_wrapper').setStyle('left', tab_right_limit - infop_tab_wrapper_width);
										} else {
											$('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 = 283 + 2; // largeur = texte + bordures
								var tab_right_limit = $$('div.infop_tab_on')[0].getCoordinates($('top_container')).left + $$('div.infop_tab_on')[0].getCoordinates().width;
								if(480 + (infop_tab_wrapper_width / 2) < tab_right_limit) { // Si la limite droite de l'onglet dépasse la limite droite du contenu de l'onglet
									$('infop_tab_wrapper').setStyle('left', tab_right_limit - infop_tab_wrapper_width);
								} else {
									$('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');
	$('ajax_loader_2').setStyle('display', 'block');
	new Request.HTML({
		url: "./ajax/home_bottom_data.php5",
		method: "post",
		update: $('home_bottom_container'),
		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
			var jsonObj = JSON.decode(this.getHeader('X-JSON'));
			if(jsonObj) {
				switch (jsonObj._status) {
					case 'homeBottom_ready':
						// 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... 
						if(allImages.length > 0) {
							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);
								}
							});
						} else {
							$('home_bottom_container_temp').setStyle('display', 'none');
							$('home_bottom_container').setStyle('display', 'block');
							$('home_bottom_container').setStyle('height', $('home_bottom_container').getSize().y);
						}
						
						// 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();
								// La fonction 'radio_popup' est définie dans common.js
								radio_popup("http://stream.giss.tv:8000/fmr.ogg", "ogg");
							});
						}
						break;
						
					case 'homeBottom_empty':
						$('home_bottom_container_temp').setStyle('display', 'none');
						$('home_bottom_border').setStyle('display', 'none');
						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() {
			// ...
		}
	});
	
});
