
/*
------------------ Menu principal --------------------
-----------------------------------------------------------
*/

var FunMenu = new Class({
	initialize: function(menu, options) {
		this.setOptions(this.getOptions(), options);
		
		this.menu = $(menu), this.current = this.menu.getElement('li.current');
		
		this.menu.getElements('li').each(function(item){
			item.addEvent('mouseover', function(){ this.moveBg(item); }.bind(this));
			item.addEvent('mouseout', function(){ this.moveBg(this.current); }.bind(this));
			item.addEvent('click', function(event){ this.clickItem(event, item); }.bind(this));
		}.bind(this));
				
		this.back = new Element('li').addClass('background').adopt(new Element('div').addClass('left')).injectInside(this.menu);
		this.back.fx = this.back.effects(this.options);
		if(this.current) this.setCurrent(this.current);
	},
	
	setCurrent: function(el, effect){
		this.back.setStyles({left: (el.offsetLeft)+'px', width: (el.offsetWidth)+'px'});
		(effect) ? this.back.effect('opacity').set(0).start(1) : this.back.setOpacity(1);
		this.current = el;
	},
	
	getOptions: function(){
		return {
			transition: Fx.Transitions.sineInOut,
			duration: 500, wait: false,
			onClick: Class.empty
		};
	},

	clickItem: function(event, item) {
		if(!this.current) this.setCurrent(item, true);
		this.current = item;
		this.options.onClick(new Event(event), item);
	},

	moveBg: function(to) {
		if(!this.current) return;
		this.back.fx.custom({
			left: [this.back.offsetLeft, to.offsetLeft],
			width: [this.back.offsetWidth, to.offsetWidth]
		});
	}
});

FunMenu.implement(new Options);

/*
-------------------- Menu latéral ----------------------
-----------------------------------------------------------
*/

function startSideMenu() {
	var sideblocks = $$('#sidemenu ul li');
	sideblocks.each( function(el, i){
		var first = el.getFirst();
		if (!first || first.getTag() != 'a') return;
		var overfxs = new Fx.Styles(first, {'duration': 200, 'wait': false});
		var tocolor, fromcolor;
		tocolor = 'bf2344';
		if (el.hasClass('current')){
			fromcolor = tocolor;
		} else {
			fromcolor = '000';
		}
		el.mouseouted = true;
		el.addEvent('mouseenter', function(e){
			overfxs.start({
				'color': tocolor,
				'margin-left': 10
			});
		});
		el.addEvent('mouseleave', function(e){
			overfxs.start({
				'color': fromcolor,
				'margin-left': 0
			});
		});
	});
}

/*
--------------- Slide Partenaires -----------------
--------------------------------------------------------
*/
function startSlidePartenaires() {	
	var imgEffectNormal = [];
	var imgEffectTransIn = [];
	var imgEffectTransOut = [];
	var imgPosition = [];
	var nodePartenaires = $('partenaires');
	var imagesPartenaires = [];
	var countIm = 0;

	$$('#partenaires img').each(function(el) {
	    imagesPartenaires[countIm++] = el.getAttribute('src');
	});
	
	if(countIm > 0) {
		nodePartenaires.setHTML('');
		nodePartenaires.setStyles({'display': 'block'});
			
		new Asset.images(imagesPartenaires, {
			onProgress: function(i) {
				imgPosition[i] = Math.round((nodePartenaires.getCoordinates().width - (this.width * 72 / this.height)) /2);
				this.setStyles({
					'position': 'absolute',
					'height': 72,
					'width': Math.round(this.width * 72 / this.height),
					'left': imgPosition[i],
					'top': 2,
					'opacity': 0
				});
				this.inject(nodePartenaires);
				// imgEffect[i] = this.effect('opacity', {duration: 1000});
				imgEffectNormal[i] = this.effect('opacity');
				imgEffectTransIn[i] = this.effects({duration: 800, transition: Fx.Transitions.Quint.easeOut});
				imgEffectTransOut[i] = this.effects({duration: 800, transition: Fx.Transitions.Quint.easeIn});
			},
			onComplete: function() {
				var iImg = $random(0, countIm - 1);
				var iAff = 0;
				(function() {
					iAff++;
					iAff %= 2;
					iImg += iAff;
					iImg %= countIm;
					for (var i=0; i < countIm; i++) {
						if (i == iImg) {
							if (iAff == 1) {
								imgEffectTransIn[iImg].start({'left': [imgPosition[i]-30, imgPosition[i]], 'opacity': [0, 1]});
							}
							else {
								imgEffectTransOut[iImg].start({'left': [imgPosition[i], imgPosition[i]+30], 'opacity': [1, 0]});
							}
						}
						else {
							imgEffectNormal[i].set(0);
						}
					}
				}).periodical(1200);					
			}
		});
	}
}

function GetElementsByClassName(elementName,className) {
    var allElements = document.getElementsByTagName(elementName);
    var elemColl = new Array();
    for (var i = 0; i< allElements.length; i++) {
 if (allElements[i].className == className) {
     elemColl[elemColl.length] = allElements[i];
 }
    }
    return elemColl;
}

function map_parcours(){
	var listes = GetElementsByClassName("ul", "liste_parcours");
	for (var i = 0; i< listes.length; i++) {
		var parcours= listes[i].getElementsByTagName("a");
		for( j=0; j<parcours.length; j++) {
			parcours[j].onmouseover = function() {
				var map_name = this.id.substring(9, this.id.length-1)
				document.getElementById("map_"+map_name).src = "images/parcours/map_"+map_name+this.id.substr(9+map_name.length)+".gif";
			}
			parcours[j].onmouseout = function() {
				var map_name = this.id.substring(9, this.id.length-1)
				document.getElementById("map_"+map_name).src = "images/parcours/map_"+map_name+".gif";
			}
		}
	}
}

function sommaire_description(){
	var menus = $$('#sommaire ul li a');
	menus.each( function(menu, i) {
		menu.onmouseover = function() {
			var MenuHref =  menu.getAttribute('href');
			var IdDescription = MenuHref.substring(MenuHref.lastIndexOf('/')+1, MenuHref.length-4);
			var descriptions = $$('#sommaire #description div');
			descriptions.each( function(description, i) {
				if (description.id == IdDescription) { description.setStyle('visibility','visible'); }
				else { description.setStyle('visibility','hidden'); }
			});
		}
		menu.onmouseout = function() {
			var descriptions = $$('#sommaire #description div');
			descriptions.each( function(description, i) {
				if ((description.id == "original") || (description.id == "video")) {
					description.setStyle('visibility','visible'); 
				}
				else {
					description.setStyle('visibility','hidden');
				}
			});
		}
	});

}

/*
--------------------- Démarrage  ----------------------
-----------------------------------------------------------
*/

window.addEvent('load', function() {
	/*Démarrage Slide Partenaires*/
	if($('partenaires'))		
		startSlidePartenaires();
});

window.addEvent('domready', function() {
	/*Démarrage FunMenu*/
	if($('mainmenu'))
		MainMenu = new FunMenu($E('ul', 'mainmenu'), {transition: Fx.Transitions.backOut, duration: 700});
	/*Démarrage SideMenu*/
	if($('sidemenu'))
		startSideMenu();
	/*Démarrage Carousel News*/
	new iCarousel("news_content", {
        idPrevious: "news_previous",  
        idNext: "news_next",
        idToggle: "undefined",  
        item: {  
            klass: "news_item",  
            size: 120  
        },  
        animation: {
            /*rotate: { type: "auto", interval: 4000, onMouseOver:"stop" }, */
            direction: "top",  
            duration: 350,  
            amount: 1
        }  
    }); 
});