/************************************************************/
// FONTIOND GENERAL
/************************************************************/

// Détection des navigateurs
// --------------------------------------------
var WEBKIT = Browser.Engine.webkit;  
var GECKO = Browser.Engine.gecko;  
var OPERA = Browser.Engine.presto;  
var IE = Browser.Engine.trident;  
var IE6 = (navigator.userAgent.toLowerCase().indexOf('msie 6') != -1)  
&& (navigator.userAgent.toLowerCase().indexOf('msie 7') == -1); 



/* JS ACCUEIL - Gestion des boxs + zoom background
------------------------------------------ */


/* NAV TAB
---------------------------------------------- */
var boxTab = new Class({
        Implements: [Options],
        options: {
			conteneur: 0,
			list_navs: [],
			list_contenus: [],
			actif: 0
        },
        initialize: function(options){
                this.setOptions(options);
				// stockage des options dans des variables raccourcies
				var list_navs = this.options.list_navs;
				var list_contenus = this.options.list_contenus;
				
				
				// A cause d'un bug provoqué par le png fix pour IE6
				// - lorsque la class actif est enlevée le background-position ne se réinitialise pas...
				// Donc on rassemble toutes ces valeurs dans un tableau et on va passer par JS pour lui rafraîchir la mémoire...
				//if (IE6) {
					/*					
					list_bg_position_off = ["0px 0px", "-160px 0px", "-340px 0px", "-520px 0px"];					
					list_bg_position_on = ["0px -30px", "-160px -30px", "-340px -30px", "-520px -30px"];					
					*/
					//list_bg_position_off = [];
					/*
					list_navs.each(function(nav) { // Attention ! impossible de récupérer la valeur de background-position sur IE6 non plus
						list_bg_position_off.push(nav.getElement('a').getStyle('background-position'));												
					});
					console.log(list_bg_position_off);
					*/
				//}
				
				list_contenus[this.options.actif].setStyle('display', 'block');
				list_navs[this.options.actif].addClass('actif');
				
				list_navs.each(function(nav, index) {
					
					//if (this.options.actif != index) fadeFX.set(.7); // Opacité sur les onglets inactifs
					nav.addEvents({/*
						'mouseenter': function() {
							if (IE6) if (this.options.actif != index) list_navs[index].getElement('a').setStyle('background-position', list_bg_position_on[index]); // fix IE6
						}.bind(this),
						
						'mouseleave': function() {
							if (IE6) if (this.options.actif != index) list_navs[index].getElement('a').setStyle('background-position', list_bg_position_off[index]); // fix IE6
						}.bind(this),
						*/
						'click': function(e) {
							e.preventDefault();
							if (this.options.actif == index)  return; // Si onglet actif clické on sort...
							// On reset l'onglet dernièrement actif
							list_contenus[this.options.actif].setStyle('display', 'none');
							list_navs[this.options.actif].removeClass('actif');
							//if (IE6) list_navs[this.options.actif].getElement('a').setStyle('background-position', list_bg_position_off[this.options.actif]); // fix IE6
							// On actualise l'onglet actif et on l'initialise
							this.options.actif = index;							
							list_contenus[this.options.actif].setStyle('display', 'block');
							list_navs[this.options.actif].addClass('actif');
							//if (IE6) list_navs[this.options.actif].getElement('a').setStyle('background-position', list_bg_position_on[this.options.actif]); // fix IE6
							
							
						}.bind(this)
					});
					
				}, this);
        },
		
		constructTabs: function(index) { // intro
		},
		
		hideBox: function () {
		},
		
		showBox: function () {
		}

});



var navTabs = new Class({
        Implements: [Options],
        options: {
                list_navs: [],
                list_contenus: [],
                actif: 0
        },
        initialize: function(options){
                this.setOptions(options);
				// stockage des options dans des variables raccourcies
				var list_navs = this.options.list_navs;
				var list_contenus = this.options.list_contenus;
				var actif = this.options.actif;
				// on cache les contenus
				list_contenus.each(function(contenu, index) {
					if (index != actif) contenu.setStyle('display', 'none');
					else list_navs[index].addClass('actif');
				});
				
				list_navs.each(function(nav, index) { 
					this.addClick(nav, list_contenus[index], index);
				}, this);
        },
				
		addClick: function(nav, contenu, index){
			nav.addEvent('click', function(e) { 
				e.preventDefault();
				if (!this.isActif(index)) {
					this.setNavActif(index);
					this.showContenu(index);
					this.setActif(index);
				}
			}.bind(this));
        },

		isActif : function(index) {
			return this.options.actif == index
		}, 

		setActif : function(index) {
			this.options.actif = index
		}, 

		setNavActif : function(index) {
			this.options.list_navs[this.options.actif].removeClass('actif');
			this.options.list_navs[index].addClass('actif');
		},

		showContenu : function(index) {
			this.options.list_contenus[this.options.actif].setStyle('display', 'none');
			this.options.list_contenus[index].setStyle('display', 'block');
		}
});


/*
// Navigation avec liens et scrolling pour afficher les contenus
// FX scroll2 corrige bug dans mootools dans la gestion du scroll
var navContenu = new Class({
        Implements: [Options],
        options: {
                list_nav: [],
                list_contenus: [],
                actif: 0
        },
        initialize: function(options){
                this.setOptions(options);
				// stockage des options dans des variables raccourcies
				var list_nav = this.options.list_nav;
				var list_contenus = this.options.list_contenus;
				var actif = this.options.actif;
				// effets
				var myScroll =  new Fx.Scroll2($$('.col_droite')[0], {
								duration: 1500,
								transition: Fx.Transitions.Quad.easeInOut,
								link: 'cancel'
							});
				
				// Le premier est actif...
				if (!actif) list_nav[actif].addClass('actif');
				else { 
					myScroll.toElement(list_contenus[actif]);	
					list_nav[actif].addClass('actif');
				}
				
				list_nav.each(function(nav, i) { 
					this.addScroll(nav, list_contenus[i], myScroll, i);					   
					this.addHover(nav, i);					   
				}, this);
        },
		
		isActif : function(index) {
			return this.options.actif == index
		}, 
		
		addScroll: function(nav, contenu, fx, index){
			nav.addEvent('click', function(e) { 
				e.preventDefault();
				if (!this.isActif(index)) {
					this.initActif(index);
					fx.toElement(contenu);
				}
			}.bind(this));
        },
		
		addHover: function(nav, index){
			if ($chk(padLeft)) padLeft.cancel();

			var padLeft = new Fx.Tween(nav, {
				property: 'padding-left',
				duration: 200,
				link: 'cancel'
			});
			
			nav.addEvents({
				'mouseover': function() {
					if (!this.isActif(index)) padLeft.start(20);
				}.bind(this),
				
				'mouseout': function() { 
					if (!this.isActif(index)) padLeft.start(4);
				}.bind(this)
			});
        },
		
		initActif : function(index) {
			var indexActif = this.options.actif;
			var navActif = this.options.list_nav[indexActif];
			var new_navActif = this.options.list_nav[index];
			
			navActif.removeClass('actif');
			new_navActif.addClass('actif');
			this.options.actif = index;
			
			new Fx.Tween(new_navActif, {
				property: 'padding-left',
				duration: 200
			}).start(4);
		}
});		
*/	
		
/*	
// Scrolling
function hdp(bt) {
	bt.addEvent('click',function(e) {
		e.preventDefault();
		new Fx.Scroll(window).toTop();
	});
}
*/


// Fait apparaître et disparaître un element avec un fondu 
function preload_img() {
	
	if(! $$('.preload').length) return; // vérif de sûreté
	
	var list_conteneurs = $$('.preload');
	var list_imgs = $$('.preload img');
	var list_chemins = [];
	var list_legendes = [];
	var list_ids = [];

	// console.log(list_conteneurs);
	// console.log(list_imgs);
	
	list_imgs.each(function(img){					
	    list_chemins.push(img.get('src'));
	    list_legendes.push(img.get('alt'));
	    img.get('id') ? list_ids.push(img.get('id')) : list_ids.push(0);
		img.destroy();
	}); 
	
	var loader = new Asset.images(list_chemins, { 
		
		onProgress: function(counter,index) {
			//progressBar.set((counter + 1) * (100 / images.length));
			var monImage = new Element('img', { 
				src: list_chemins[index], 
				alt: list_legendes[index],
				styles: {
					opacity: 0					
				}
			});
			if (list_ids[index]) monImage.set('id', list_ids[index]) // spécial si image possède une id

			var fx = new Fx.Tween(monImage, {
				property: 'opacity',
				duration: 1000
				//transition: Fx.Transitions.Quart.easeInOut,
				//link: 'chain'
			}).start(1);
			
			monImage.inject(list_conteneurs[index]);
		}/*,
		
		onComplete: function() {
			list_chemins.each(function(img, index) {
				var monImage = new Element('img', { 
					src: img, 
					alt: list_legendes[index],
					styles: {
						opacity: 0					
					}
				});
				
				var fx = new Fx.Tween(monImage, {
					property: 'opacity',
					duration: 1000
					//transition: Fx.Transitions.Quart.easeInOut,
					//link: 'chain'
				}).start(1);
				
				//monImage.tween('opacity', 1);
				monImage.inject(list_conteneurs[index]);
			});
		}*/
	});

}


/*
// Insertions d'animations flash + définitions d'évenements pour celles-ci
function insert_swf(conteneur, swf, width, height, mesVariables) {
	
	var id = conteneur + '_swf';
	var mySwiff = new Swiff(swf, {
		id: id,
		container: conteneur, 
		width: width,
		height: height,
		params: {
			wmode: 'transparent'
		},
		vars: mesVariables
		//,
		//callBacks: {
		//	load: myOnloadFunc
		//}
	});
}
*/

/*
// Incrustation de l'icônes sur les vignettes survolées pour signifier la possibilité de zoomer
function aff_loupe() {
	// stockage des éléménts
	var list_vignettes = $$('.loupes');
	// on vérifie que les vignettes existe
	if (!list_vignettes.length) return false;
	
	list_vignettes.each(function(vignette, i) {
		// on définit une position relative sur la vigentte pour positionner chaque loupe
		
		// on crée et on injecte le conteneur de la loupe
		var img_loupe = new Element('em').inject(vignette, 'top');
		vignette.addEvents({
			'mouseenter': function() {
				img_loupe.tween('opacity', 1);
			},
			
			'mouseleave': function() {
				img_loupe.tween('opacity', 0);
			}
		});
	});

}
*/

/*
// NAVIGATION AJAX SOUS-MENU
// ---------------------------------------------------------- //
function nav_sousmenu_ajax(univers, ID_page) {
	
	// Vérification de la présence de liens dans le sous-menu avant de dispatcher les requêtes ajax
	if (! $$('#sous_menu a').length) return;
	
	// Stockage des éléments
	var list_liens = $$('#sous_menu a');
	var bt_actif;

	var list_url_liens = list_liens.get('href');
	// console.log(list_url_liens);
	
	// on vérifie si le bouton actif est déjà définie sinon on le stock : Celui dont l'url comporte le même ID_page que celui passé en argument
	if (ID_page == 'artistes') bt_actif = list_liens[0];
	else {
		list_url_liens.each(function(url_lien, index) {
			var page = url_lien.split('/').getLast().split('.')[0] || 'index';
			if (page == ID_page) bt_actif = list_liens[index];
		});
	}
	
	list_url_liens.each(function(url_lien, index) {
		
		var lien = list_liens[index];
		// On détermine l'iD de la page et si celle-ci n'existe pas c'est qu'il s'agit de l'index !
		var page = url_lien.split('/').getLast().split('.')[0] || 'index';
		// console.log(page);
		if (page == 'index') var where = list_url_liens[index]+'index.php';
		else var where = list_url_liens[index];
		// On vérifie si une variable n'est pas passé dans le lien et on ajuste l'ajout de parametre pour la requete ajax
		!where.contains("?") ? where+='?nav_ajax=ok' : where+='&nav_ajax=ok';
		 //console.log(where);

		// On bloque le click par defaut du lien et on ajoute le déclenchement de notre requête ajax à la place
		lien.addEvent('click', function(event) {
			event.stop();
			// Si le bouton clické n'est pas actif on cotinue...
			if (this == bt_actif) return;
			else {
				
				var conteneur = $('conteneur-padding');
					
				bt_actif.removeClass('orange').addClass('blanc');
				this.removeClass('blanc').addClass('orange');
				bt_actif = this;

				var request = new Request.HTML({
					url: where,
					method: 'get',
					//update: $('conteneur-padding'),
					//evalScripts: true, // this is the default
					//evalResponse: true, 
					onRequest : function() { 
						conteneur.set('html', '').getParent('div').addClass('load');
					},
					onSuccess : function(responseTree, responseElements, responseHTML, responseJavaScript) { 
						//console.log(responseJavaScript);
					
						conteneur.getParent('div').removeClass('load');
						// console.log(responseElements);
						// console.log(responseJavaScript);
						// On scan les éléments à la recherche de celui qu'on veut insérer 
						responseElements.each(function(el, i) {
							// if(element.get('id') == conteneur.get('id')) {
							if(el.getAttribute('id') == 'conteneur-padding') {
								el.replaces(conteneur);
								// console.log(i);
								// console.log(responseElements[index]);
							}
						});
						// On execute les fonctions Javascript sur le nouveau contenu
						eval(responseJavaScript);
					}
				}).send();

			}
		});
	});
}
*/
