
// Initialisation du défilé des lieux
var fx_flag = true;

function placesInit(fx) {
	active_id = $$('div#slide_container a[class=active]')[0].get('id').substring(8);
	var previous_width = 0;
	for(var x = 0; x < $$('div#slide_container a').length; x++) {
		if($$('div#slide_container a')[x].hasClass('active')) {
			var active_width = $$('div#slide_container a')[x].getSize().x;
			break;
		}
		previous_width += $$('div#slide_container a')[x].getSize().x + 9;
	}
	margin_left = ((previous_width + active_width / 2) - 99) * -1;
	
	if(fx) { // Avec effet (Fx.tween)
		
		myPlacesFx = new Fx.Tween($$('div#place_content_wrapper div[class=active]')[0], { // Effet contenu 1/2 : disparition du contenu actif
			duration: 500,
			transition: Fx.Transitions.Linear,
			onStart: function() {
				// 'fx_flag = false' indique que le slide est en cours : aucun autre ne peut être lancé avant la fin de celui-ci
				fx_flag = false;
				// On désactive (suppression de la class 'active') le contenu actif
				$$('div#place_content_wrapper div[class=active]')[0].removeClass('active');
				// Effets slide des villes
				new Fx.Tween($('slide_container'), {
					duration: 1500,
					transition: Fx.Transitions.Cubic.easeOut
				}).start('margin-left', $('slide_container').getStyle('margin-left').toInt(), margin_left);
				// Effet contenu 2/2 : apparition du nouveau contenu actif lancée en même temps que la disparition de l'ancien (1/2)
				new Fx.Tween($('place_d_' + active_id), {
					duration: 1500,
					transition: Fx.Transitions.Linear,
					onComplete: function() {
						fx_flag = true;
					}
				}).start('opacity', 0, 1);
			},
			onComplete: function() {
				// Switch de l'img 'world_map' active
				$$('img[class~=active]')[0].removeClass('active');
				$('place_i_' + active_id).addClass('active');
				// On active (ajout de la class 'active') le nouveau contenu actif
				$('place_d_' + active_id).addClass('active');
			}
		}).start('opacity', 1, 0);
		
	} else { // Sans effet
		var slide_container_width = 0;
		$$('div#slide_container a').each(function(elt) {
			slide_container_width += elt.getSize().x + 9;
		});
		$('slide_container').setStyle('width', slide_container_width);
		$('slide_container').setStyle('margin-left', margin_left);
		$('place_d_' + active_id).setStyle('visibility', 'visible');
		$('place_d_' + active_id).addClass('active');
	}
}

// Effet 'disparition' de l'img_playeur
var my_ipTween;

function imgPlayer_fadeOut(elt) {
	my_ipTween = new Fx.Tween(elt, {
		duration: 500,
		transition: Fx.Transitions.Linear
	}).start('opacity', 1, 0);
}

// Effet 'disparition' du switch_menu (télécommande media sur la Home page)
var my_smTween;

function switchMenu_fadeOut(elt) {
	my_smTween = new Fx.Tween(elt, {
		duration: 500,
		transition: Fx.Transitions.Linear
	}).start('opacity', 1, 0);
}

// Slide Show
var pictureSlideShow_id;
var myTween;

function pictureSlideShow() {
	var from = $$('div#img_wrapper img[class~=active]')[0];
	if(from.getNext('img')) {
		var to = from.getNext('img');
	} else {
		var to = $('img_wrapper').getFirst('img');
	}
	myTween = new Fx.Tween(to, {
		duration: 2000,
		transition: Fx.Transitions.Linear,
		onStart: function() {
			$$('div#img_wrapper img').each(function(img) {
				// On masque et on "fait passer derrière" les img qui ne sont pas 'from' ou 'to'
				if(img != to && img != from) {
					img.setStyle('visibility', 'hidden');
					img.setStyle('z-index', 0);
				}
			});
			from.setStyle('z-index', 10);
			to.setStyle('visibility', 'hidden');
			to.setStyle('z-index', 100);
			
			if($('img_legend_wrapper')) { // Switch des légendes s'il y en a
				var active_span = $$('div#img_legend_wrapper span[class=active]')[0];
				if(active_span.getNext('span')) {
					active_span.getNext('span').set('class', 'active');
				} else {
					$('img_legend_wrapper').getFirst('span').set('class', 'active');
				}
				active_span.set('class', '');
			}
			
			if($('img_player')) { // Switch des 'boutons numérotés' de l'img_player s'il existe
				var active_ip_nblist = $$('ul#ip_nblist li[class=active]')[0];
				if(active_ip_nblist.getNext('li')) {
					active_ip_nblist.getNext('li').set('class', 'active');
				} else {
					$('ip_nblist').getFirst('li').set('class', 'active');
				}
				active_ip_nblist.set('class', '');
			}
		},
		onComplete: function() {
			from.set('class', '');
			to.set('class', 'active');
			
			pictureSlideShow_id = pictureSlideShow.delay(4000);
		}
	}).start('opacity', 0, 1);
}

// Contrôle manuel du Slide Show
function manualSlide(e) {
	// S'il existe, désactivation du 'delay' sur le SlideShow (+ s'il a débuté, annulation de l'effet en cours)
	if(pictureSlideShow_id) $clear(pictureSlideShow_id);
	if(myTween) {
		myTween.cancel();
		myTween = ""; // Pour que 'resume' n'ait aucun effet sur l'effet annulé !
	}
	
	if(e.target.get('id') == 'ip_previous' || e.target.get('id') == 'ip_next') { // Cas du clic sur bouton 'previous' ou 'next'
		var active_li = $$('ul#ip_nblist li[class=active]')[0];
		if(e.target.get('id') == 'ip_previous') { // Previous
			if(active_li.getPrevious('li')) {
				var nb = active_li.getPrevious('li').get('id').substring(5);
			} else {
				var nb = $('ip_nblist').getLast('li').get('id').substring(5);
			}
		} else { // Next
			if(active_li.getNext('li')) {
				var nb = active_li.getNext('li').get('id').substring(5);
			} else {
				var nb = $('ip_nblist').getFirst('li').get('id').substring(5);
			}
		}
	} else { // Cas du clic sur l'un des n° du img_player
		var nb = e.target.getParent('li').get('id').substring(5);
	}
	
	$$('ul#ip_nblist li[class=active]')[0].set('class', '');
	$('ip_nb' + nb).set('class', 'active');
	
	$$('div#img_legend_wrapper span[class=active]')[0].set('class', '');
	$$('div#img_legend_wrapper span')[nb - 1].set('class', 'active');
	
	$$('div#img_wrapper img').each(function(i) {
		i.set({
			'styles': {
				'visibility': 'hidden',
				'z-index': 0,
				'opacity': 0
			},
			'class': ''
		});
	});
	$$('div#img_wrapper img')[nb - 1].set({
		'styles': {
			'visibility': 'visible',
			'z-index': 100,
			'opacity': 1
		},
		'class': 'active'
	});
	
	if($('ip_playpause').getStyle('background-image').indexOf('ip_pause') != -1)
		pictureSlideShow_id = pictureSlideShow.delay(4000);
}

// Pause/Play sur le Slide
function pause_playSlide() {
	if($('ip_playpause').getStyle('background-image').indexOf('ip_pause') != -1) { // Pause
		$('ip_playpause').setStyle('background-image', 'url(./img/ip_play.png)');
		if(pictureSlideShow_id) $clear(pictureSlideShow_id);
		if(myTween) myTween.pause();
	} else { // Play
		$('ip_playpause').setStyle('background-image', 'url(./img/ip_pause.png)');
		if(myTween) {
			myTween.resume();
		} else {
			pictureSlideShow_id = pictureSlideShow.delay(4000);
		}
	}
}


// *** DOM READY ***
window.addEvent("domready", function() {
	
	// Preload des images
	var loader = new Asset.images(myImages, {
		onComplete: function() {
			// ...
		}
	});
	
	// Initialisation du défilé des lieux
	placesInit(false);
	
	// Gestionnaire de l'événement 'click' sur l'image du header (retour à l'index)
	$('header_img').addEvent("click", function(e) {
		new Event(e).stop();
		document.location.href = "./index.php5";
	});
	
	/* Gestionnaire de l'événement 'click' sur 'COP 15 Countdown'
	$('cop15').addEvent("click", function(e) {
		new Event(e).stop();
		popupWin = window.open('http://en.cop15.dk','cop15');
		popupWin.focus();
	});
	*/
	
	// Gestionnaire de l'événement 'click' sur une ville (lieu d'exposition)
	$$('div#slide_window a').addEvent("click", function(e) {
		new Event(e).stop();
		if(fx_flag) { // Seulement si aucun effet en cours
			$$('div#slide_window a[class=active]')[0].removeClass('active');
			e.target.addClass('active');
			e.target.blur();
			placesInit(true);
		}
	});
	
	// Gestionnaire de l'événement 'click' sur l'une des flèches qui encadrent les villes (lieu d'exposition)
	$$('img.arrows').addEvent("click", function(e) {
		if(fx_flag) { // Seulement si aucun effet en cours
			if(e.target.get('id') == 'arrow_right' && $$('div#slide_container a[class=active]')[0].getNext() == null) return;
			if(e.target.get('id') == 'arrow_left' && $$('div#slide_container a[class=active]')[0].getPrevious() == null) return;
			
			if(e.target.get('id') == 'arrow_right') {
				var new_town = $$('div#slide_container a[class=active]')[0].getNext();
			} else if(e.target.get('id') == 'arrow_left') {
				var new_town = $$('div#slide_container a[class=active]')[0].getPrevious();
			}
			
			$$('div#slide_container a[class=active]')[0].removeClass('active');
			new_town.addClass('active');
			
			placesInit(true);
		}
	});
	
	// Gestionnaire du Menu principal
	$$('ul#menu li a').addEvent("click", function(e) {
		new Event(e).stop();
		if(e.target.getParent().get('id') == 'search_link') { // Menu Search
			$('search_link').setStyle('display', 'none');
			$('search_field').setStyle('display', 'inline');
			$('search_data').focus();
		} else { // Tous les autres Menus
			var short_href = e.target.get('href').substring(0, e.target.get('href').indexOf('?'));
			document.location.href = "./" + short_href;
		}
	});
	
	// Gestion de la valeur par défaut du champ de saisie de 'Newsletter'
	if($('email')) {
		$('email').addEvent("focus", function(e) {
			if($('email').value == "Your email") $('email').value = "";
		});
		$('email').addEvent("blur", function(e) {
			if($('email').value == "") $('email').value = "Your email";
		});
	}
	
	// Gestionnaire de l'événement 'click' sur 'Start of page'
	$('start_of_page').addEvent("click", function(e) {
		new Event(e).stop();
		$('start_of_page').blur();
		var myScrollFx = new Fx.Scroll(window).toTop();
	});
	
	// Gestionnaire de l'événement 'click' sur 'Contact' et 'Crédits'
	$$('a#contact, a#credits').addEvent("click", function(e) {
		new Event(e).stop();
		var target_x = e.target.getPosition('top_container').x;
		var target_y = e.target.getPosition('top_container').y;
		if(e.target.get('id') == "credits") {
			$('credits_wrapper').setStyles({top: target_y - 157, right: 6, opacity: 0});
			$('credits_wrapper').fade('in');
			if($('contact_wrapper').getStyle('visibility') == "visible")
				$('contact_wrapper').fade('out');
		} else if(e.target.get('id') == "contact") {
			//$('contact_wrapper').setStyles({display: 'block', top: target_y - 157, left: target_x - 162});
			$('contact_wrapper').setStyles({top: target_y - 157, left: target_x - 162, opacity: 0});
			$('contact_wrapper').fade('in');
			if($('credits_wrapper').getStyle('visibility') == "visible")
			$('credits_wrapper').fade('out');
		}
	});
	// Gestionnaire de l'événement 'click' sur 'Contact' et 'Crédits' quand la popup est ouverte
	$$('a#contact_button, a#credits_button').addEvent("click", function(e) {
		new Event(e).stop();
		$(e.target.get('id').substring(0, e.target.get('id').indexOf('_button')) + '_wrapper').fade('out');
	});
		
	// Gestionnaire de l'événement 'click' sur les colonnes 'Project' et 'Look&Listen'
	$$('div.block_content a').addEvent("click", function(e) {
		if($(e.target).get('id') == "rss" || $(e.target).get('id') == "newsletter") return;
		new Event(e).stop();
		if($(e.target).getParent().hasClass('see_all')) {
			var sr_value = $(e.target).get('href').substring(13);
			var page = $(e.target).get('href').substr(2, 7);
		} else {
			var sr_value = $(e.target).getParents('a')[0].get('href').substring(13);
			var page = $(e.target).getParents('a')[0].get('href').substr(2, 7);
		}
		// On renseigne le champ du formulaire "inner_link" présent dans ui.inc, puis on le soumet
		$('sr').value = sr_value;
		$('inner_link').set('action', './' + page);
		$('inner_link').submit();
	});
	
	// Désactivation click droit
	window.document.addEvent("contextmenu", function(e) { // Ne pas oublier '.document' sinon ça ne marche pas sous IE6 !!!
		e.stop();
	});
	
});
