var verticalCenter;
var verticalSize;

window.addEvent('domready', function() {

	// Create MooScroll Instances
	var scrollBox1 = new MooScroll({selector:'#box1', handleActiveOpacity:1,disabledOpacity:0});	
	
	
	/**************************************** MENU PRINCIPAL ****************************************/
	var body = document.getElement('body');
	var menuLinks = document.getElements('#header ul.menu a');
	var currentLink = document.getElement('#header ul.menu a.current');
	currentLink.setStyle('border-bottom','none');
	var currentLinkSpan = document.getElement('#header ul.menu a.current span');
	var currentLinkSpanPadding = Math.round((parseInt(currentLinkSpan.getStyle('padding-left'))+parseInt(currentLinkSpan.getStyle('padding-right')))/2);
	var menuStroke = new Element('div', {
		'styles': {
			'display':'block',
			'background-color':'#ffffff',
			'height':'2px',
			'width':currentLinkSpan.getSize().x-2*currentLinkSpanPadding+'px',
			'position':'absolute',
			'left':currentLinkSpan.getPosition($('header')).x+currentLinkSpanPadding+'px',
			'top':currentLinkSpan.getPosition($('header')).y+currentLinkSpan.getSize().y+'px',
			'overflow':'hidden',
			'padding':'0',
			'margin':'0',
			'line-height':'1px',
			'font-size':'1px'
		}
	}).inject($('header'), 'top');
	menuLinks.each(function(element){
		element.addEvent('mouseenter', function(){
			menuStroke.set('morph', {duration: 600, transition: 'cubic:out'});
			menuStroke.morph({
				'width':element.getElement('span').getSize().x-2*currentLinkSpanPadding+'px',
				'left':element.getElement('span').getPosition($('header')).x+currentLinkSpanPadding+'px'
			});
		});
		element.addEvent('mouseleave', function(){
			menuStroke.set('morph', {duration: 600, transition: 'cubic:out'});
			menuStroke.morph({
				'width':currentLinkSpan.getSize().x-2*currentLinkSpanPadding+'px',
				'left':currentLinkSpan.getPosition($('header')).x+currentLinkSpanPadding+'px'
			});
		});
	});
	
	/**************************************** ALIGNEMENT VERTICAL DU CONTENU ****************************************/
	$('content').addClass('js');
	verticalSize = $('global').getSize().y;
	verticalCenter = function(){
		var contentPadding = Math.round(((body.getSize().y)-verticalSize)/2);
		if(contentPadding>0){
			$('global').setStyle('padding-top', contentPadding+'px');
			$('container').setStyle('background-position', 'center '+(-280+contentPadding)+'px');
			body.setStyle('background-position', 'center '+(-2280+contentPadding)+'px');
		}
		else{
			$('global').setStyle('padding-top', '0px');
		}
	}
	verticalCenter();
	window.addEvent('resize', verticalCenter);	
	
	/******************************** PAGES MULTIPLES (en savoir plus / retour) **********************************/
	
	if(document.getElement('.container.plus')){
		var containerPlus = document.getElement('.container.plus');
		var containerIntro =  document.getElement('.container.plus').getPrevious('.container');
		containerPlus.setStyle('display', 'none');
		
		var containerIntroBtn = new Element('p', {
			'class': 'less-more-btn'
		}).inject(containerIntro, 'bottom');
		new Element('a', {
			'href': '#',
			'html': 'Suite',
			'events': {
				'click': function(event){
					event.stop();
					containerPlus.setStyle('display', 'block');
					containerIntro.setStyle('display', 'none');
				}
			}
		}).inject(containerIntroBtn, 'bottom');
		
		var containerPlusBtn = new Element('p', {
			'class': 'less-more-btn'
		}).inject(containerPlus, 'bottom');
		new Element('a', {
			'href': '#',
			'html': 'Retour',
			'events': {
				'click': function(event){
					event.stop();
					containerPlus.setStyle('display', 'none');
					containerIntro.setStyle('display', 'block');
				}
			}
		}).inject(containerPlusBtn, 'bottom');

	}
	
});


/**************************************** HOME REFERENCES ****************************************/
var navReferences = new Class({

	Implements: [Options, Events],
	
	options: {
		transitionTime: 600,
		vignetteTime: 350
	},
	
	initialize: function(element, options){
		
		this.setOptions(options);
		var transitionTime = this.options.transitionTime;
		var vignetteTime = this.options.vignetteTime;
		
		if(element){
			element.setStyle('height', element.getElement('ul.ref-list').getSize().y+'px');
			var slides = element.getElements('ul.ref-list');
			var currentSlide = 0;
			var isChanging=false;
			
			slides.each(function(slide, index){
				if(index!=currentSlide){
					slide.setStyles({'display':'none', 'position':'absolute', 'top':'0px', 'left':'0px'});
					slide.getElements('li').setStyles({'opacity':0, 'visibility':'hidden'});
				}
				else{
					slide.setStyles({'display':'block', 'position':'absolute', 'top':'0px', 'left':'0px'});
					slide.getElements('li').setStyles({'opacity':1, 'visibility':'visible'});
				}
			});
			verticalCenter();
			
			function nextSlide(e){
				e.stop();
				if(!isChanging){
					isChanging=true;
					hideSlide(currentSlide, true);
				}
			}
			function prevSlide(e){
				e.stop();
				if(!isChanging){
					isChanging=true;
					hideSlide(currentSlide, false);
				}
			}
			function hideSlide(slideIndex, forward){
				forward ? currentSlide+=1 : currentSlide-=1;
				if(currentSlide == slides.length-1){
					Browser.Engine.trident ? nextBtn.fade('hide') : nextBtn.fade('out');
				}
				if(currentSlide == slides.length-2 && !forward){
					Browser.Engine.trident ? nextBtn.fade('show') : nextBtn.fade('in');
				}
				if(currentSlide == 0){
					Browser.Engine.trident ? prevBtn.fade('hide') : prevBtn.fade('out');
				}
				if(currentSlide == 1 && forward){
					Browser.Engine.trident ? prevBtn.fade('show') : prevBtn.fade('in');
				}
				var vignettes = slides[slideIndex].getElements('li');
				vignettes.each(function(vignette, index){
					setTimeout(function(){
						vignette.set('tween', {
							duration: vignetteTime,
							transition: 'cubic:out',
							onComplete: function(){
								if(index == vignettes.length-1){
									slides[slideIndex].setStyle('display','none');
								}
							},
							onStart: function(){
								if(index == Math.round(vignettes.length/2)){
									showSlide(currentSlide);
								}
							}
						});
						vignette.tween('opacity',0);
					},index*(Math.round(transitionTime/20)));
				});
			}
			function showSlide(slideIndex){
				slides[slideIndex].setStyle('display','block');
				var vignettes = slides[slideIndex].getElements('li');
				vignettes.each(function(vignette, index){
					setTimeout(function(){
						vignette.set('tween', {
							duration: vignetteTime,
							transition: 'cubic:out',
							onComplete: function(){
								if(index == vignettes.length-1){
									isChanging=false;
								}
							}
						});
						vignette.tween('opacity',1);
					},index*(Math.round(transitionTime/20)));
				});
			}
			
			var prevBtn = new Element('a', {
				'class': 'slide-prev-btn-b',
				'href': '#',
				'html': 'Pr&eacute;c&eacute;dent',
				'events': {
					'click': prevSlide
				},
				'styles': {
					'visibility': 'hidden',
					'opacity': 0
				}
			}).inject(element, 'after');
			var nextBtn = new Element('a', {
				'class': 'slide-next-btn-b',
				'href': '#',
				'html': 'Suivant',
				'events': {
					'click': nextSlide
				}
			}).inject(element, 'after');

		}
		
	}

});


/**************************************** EXPAND-BOX (HOME) ****************************************/
var expandBox = new Class({

	Implements: [Options, Events],
	
	options: {
		showTime: 650,
		hideTime: 300
	},
	
	initialize: function(element, options){
		
		this.setOptions(options);
		var showTime = this.options.showTime;
		var hideTime = this.options.hideTime;
		
		if(element){
			element.addClass('js');
			var content = element.getElement('div.content')
			var contentHeight = element.getElement('div.content').getSize().y;
			content.setStyle('height',contentHeight+'px');
			
			var hideBox = function(){
				clearTimeout(setTimeout)
				element.getElement('p.top strong').addClass('closed');
				content.set('tween', {duration: hideTime, transition: 'cubic:out'});
				content.tween('height','0px');
			}
			var showBox = function(){
				clearTimeout(setTimeout)
				element.getElement('p.top strong').removeClass('closed');
				content.set('tween', {duration: showTime, transition: 'cubic:out'});
				content.tween('height',contentHeight+'px');
			}
			element.addEvent('mouseenter', showBox);
			element.addEvent('mouseleave', hideBox);
			
			var hideTimeout = setTimeout(hideBox, 8000);
		}
		
	}

});

/**************************************** SIMPLE SLIDESHOW ****************************************/
var simpleSlideshow = new Class({

	Implements: [Options, Events],
	
	options: {
		transitionTime: 600,
		displayTime: 1000
	},
	
	initialize: function(element, options){
		
		this.setOptions(options);
		var transitionTime = this.options.transitionTime;
		var displayTime = this.options.displayTime;
		
		if(element){
			element.addClass('js');
			var images = element.getElements('img');
			var imagesURL = [];
			var currentImage = 0;
			var nextImage = 1;
			if(images.length > 1){
				images.each(function(image, index){
					imagesURL.push(image.get('src'));
					image.setStyles({
						'position':'absolute',
						'top':'0px',
						'left':'0px',
						'visibility':'hidden',
						'opacity':0
					});
				});
				element.addClass('loading');
				
				new Asset.images(imagesURL, {
					'onComplete': function(){
						element.removeClass('loading');
						images[currentImage].setStyle('z-index',1)
						images[currentImage].set('tween',{duration: transitionTime, transition: 'cubic:out'});
						images[currentImage].tween('opacity',1);
						setTimeout(changeImage, displayTime+transitionTime);
					}
				});
				
				var changeImage = function(){
					nextImage = (currentImage == images.length-1) ? 0 : currentImage+1;
					images[nextImage].setStyle('z-index',2);
					images[nextImage].set('tween',{
						duration: transitionTime,
						transition: 'cubic:out',
						onComplete: function(){
							currentImage = nextImage;
							images.each(function(image, index){
								if(index != currentImage){
									image.setStyles({
										'visibility': 'hidden',
										'opacity':0
									});
								}
								image.setStyle('z-index',1);
							});
							setTimeout(changeImage, displayTime);
						}
					});
					images[nextImage].tween('opacity',1);
				}
			}
		}
		
	}

});


/**************************************** HOME SLIDESHOW ****************************************/
var homeSlideshow = new Class({

	Implements: [Options, Events],
	
	options: {
		transitionTime: 600,
		displayTime: 1500
	},
	
	initialize: function(element, options){
		
		this.setOptions(options);
		var transitionTime = this.options.transitionTime;
		var displayTime = this.options.displayTime;
		var slides = this.options.slides;
		
		if(element && slides.length>1){
		
			element.empty();
			
			var currentSlide = 0;
			var isChanging=false;
			var autoPlay;
			
			var loader = new Element('div', {
				'class':'loader',
				'styles':{'opacity':0, 'visibility':'hidden'}
			}).inject(element, 'top');
			loader.fade('0.8');
			
			var prevBtn = new Element('a', {
				'class': 'slide-prev-btn',
				'href': '#',
				'html': 'Pr&eacute;c&eacute;dent',
				'styles': {
					'visibility': 'hidden',
					'opacity': 0
				},
				'events': {
					'click': function(event){
						event.stop();
						if(!isChanging){
							clearTimeout(autoPlay);
							changeSlide(((currentSlide == 0) ? slides.length-1 : currentSlide-1), false);
						}
					}
				}
			}).inject(element, 'after');
			Browser.Engine.trident ? prevBtn.fade('show') : prevBtn.fade('in');
			
			var nextBtn = new Element('a', {
				'class': 'slide-next-btn',
				'href': '#',
				'html': 'Suivant',
				'styles': {
					'visibility': 'hidden',
					'opacity': 0
				},
				'events': {
					'click': function(event){
						event.stop();
						if(!isChanging){
							clearTimeout(autoPlay);
							changeSlide(((currentSlide == slides.length-1) ? 0 : currentSlide+1), true);
						}
					}
				}
			}).inject(element, 'after');
			Browser.Engine.trident ? nextBtn.fade('show') : nextBtn.fade('in');
			
			var currentSlideElement = new Element('a', {
				'href': '#',
				'class': 'slide',
				'styles': {
					'visibility': 'hidden',
					'opacity': 0
				}
			}).inject(element, 'top');
			
			var nextSlideElement = new Element('a', {
				'href': '#',
				'class': 'slide',
				'styles': {
					'top': '0px',
					'left': '943px'
				}
			}).inject(element, 'top');
						
			new Asset.image(slides[currentSlide].imageURL, {
				onload: function(){
					loader.fade('0');
					currentSlideElement.set({
						'html': '<img src="'+slides[currentSlide].imageURL+'" alt="'+slides[currentSlide].imageALT+'" />',
						'href': slides[currentSlide].linkURL
					});
					currentSlideElement.fade('in');
					autoPlay = setTimeout(function(){
						changeSlide(currentSlide+1, true);
					}, displayTime);
				}
			});

			function changeSlide(index, forward){
				if(forward){nextSlideElement.setStyle('left', '943px');}
				else{nextSlideElement.setStyle('left', '-943px');}
				isChanging=true;
				currentSlide = index;
				loader.fade('0.8');
				var slideImage = new Asset.image(slides[index].imageURL, {
					onload: function(){
						loader.fade('0');
						nextSlideElement.set({
							'html': '<img src="'+slides[index].imageURL+'" alt="'+slides[index].imageALT+'" />',
							'href': slides[index].linkURL
						});
						nextSlideElement.set('tween',{
							duration: transitionTime,
							transition: 'cubic:out',
							onComplete: function(){
								currentSlideElement.setStyle('left', '0px');
							}
						});
						currentSlideElement.set('tween',{
							duration: transitionTime,
							transition: 'cubic:out',
							onComplete: function(){
								currentSlideElement.set({
									'html': nextSlideElement.get('html'),
									'href': nextSlideElement.get('href')
								});
								currentSlideElement.setStyle('left', '0px');
								isChanging=false;
								autoPlay = setTimeout(function(){
									//alert(currentSlide == slides.length-1);
									changeSlide(((currentSlide == slides.length-1) ? 0 : currentSlide+1), true);
								}, displayTime);
							}
						});
						nextSlideElement.tween('left','0px');
						if(forward){currentSlideElement.tween('left','-943px');}
						else{currentSlideElement.tween('left','943px');}
					}
				});
			}
					
			/* 'html': '<img src="'++'" alt="'++'" />'
			function nextSlide(){
				if(!isChanging){
					isChanging=true;
					hideSlide(currentSlide, true);
				}
			}
			function prevSlide(){
				if(!isChanging){
					isChanging=true;
					hideSlide(currentSlide, false);
				}
			}*/
			
		}
	}

});

