/*--FUNCTIONS.JS--*/

/*----------------------------------------------------------------FIELD FOCUS FIELD BLUR--------------------------------------------------------------------------*/
function fieldFocus(element, value){
	if($(element).value == value){
		$(element).value = '';
	}
}
function fieldBlur(element, value){
	if($(element).value == ''){
		$(element).value = value;
	}
}

/*----------------------------------------------------------------GREYBOX--------------------------------------------------------------------------*/
//greyBoxShow() : OUVERTURE GREYBOX
function greyBoxShow(mode, url, width, height, overflow){
	//Si OVERLAY n'existe pas
	if(!$('overlay')){
		// On l'ajoute dynamiquement
		$$('body')[0].insert({bottom:'<div id="overlay" onclick="greyBoxHide();"></div>'});
	}
	//Si GREYBOX n'existe pas
	if(!$('greyBox')){
		// On l'ajoute dynamiquement
		// greyBox			==> Positionnement en absolute centré
		// greyBoxContent	==> Contenus de la box
		// greyBoxLoader		==> Gif annimé de chargement
		// close			==> Div de fermeture
		$$('body')[0].insert({bottom:'<div id="greyBox"><div class="content" id="greyBoxContent"></div><div onclick="greyBoxHide();" class="close"></div></div>'});
	}
	
	// On dimensionne la box suivant les paramètres passés
	$('greyBoxContent').innerHTML = '<div id="greyBoxLoader"></div>';
	
	$('greyBoxContent').writeAttribute('style', '');
	$('greyBox').writeAttribute('style', '');
	
	if(typeof(overflow)!='undefined' && overflow==true){
		$('greyBox').setStyle({'width':width+'px'});
		$('greyBoxContent').setStyle({'height':height+'px'});
	}
	else{
		$('greyBox').setStyle({'width':width+'px'});
	}
	// On centre la box suivant les dimensions passés
	$('greyBox').setOpacity(1);
	$('greyBox').setStyle({'left':'-'+(Math.ceil(width/2))+'px'});
	
	// On dimensionne la taille de l'overlay sur IE6
	var testIE6 = Prototype.Browser.IE6=Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5))==6;
	if(testIE6){
		windowHeightIeFix = document.viewport.getHeight();
		if(document.viewport.getHeight() == 0){
			var windowHeightIeFix = 670;
		}
		$('overlay').setStyle({'height':windowHeightIeFix+'px'});
		$$('select').each(function(el){el.setStyle({'display':'none'});});
	}
	
	// Mode de contenu à afficher
	switch(mode){
		// AJAX		==> Page ajax à charger
		case 'ajax':
			if(testIE6){
				new Ajax.Request(url, {
					onComplete: function(transport){
						$('overlay').setStyle({'display':'block'});
						$('greyBox').setStyle({'display':'block'});
						$('greyBoxContent').update(transport.responseText);
					}
				});
			}
			else{
				$('overlay').setOpacity(0);
				$('overlay').setStyle({'display':'block'});
				$('overlay').fade({
					duration:0.5,
					from:0,
					to:0.8,
					afterFinish:function(){
						$('greyBox').setStyle({'display':'block'});
						new Ajax.Request(url, {
							onComplete: function(transport){
								$('greyBoxContent').update(transport.responseText);
							}
						});
					}
				});
			}
			break;
		// IFRAME		==> Iframe ajax à afficher
		case 'iframe':
			var paddings = parseInt($('greyBoxContent').getStyle('paddingLeft')) + parseInt($('greyBoxContent').getStyle('paddingRight'));
			$('greyBoxContent').innerHTML = '<iframe src="'+url+'" border="0" frameborder="0" width="'+(width-paddings)+'" height="'+height+'" allowTransparency="true"></iframe>';
			if(testIE6){
				$('overlay').setStyle({'display':'block'});
				$('greyBox').setStyle({'display':'block'});
			}
			else{
				$('overlay').setOpacity(0);
				$('overlay').setStyle({'display':'block'});
				$('overlay').fade({
					duration:0.5,
					from:0,
					to:0.8,
					afterFinish:function(){
						$('greyBox').setStyle({'display':'block'});
					}
				});
			}
			break;
		// YOUTUBE	==> Code video youtube à afficher
		case 'youtube':
			var paddings = parseInt($('greyBoxContent').getStyle('paddingLeft')) + parseInt($('greyBoxContent').getStyle('paddingRight'));
			$('greyBoxContent').innerHTML = '<object width="'+(width-paddings)+'" height="'+height+'"><param name="movie" value="http://www.youtube.com/v/'+url+'&hl=fr_FR&fs=1&rel=0&color1=0x006699&color2=0x54abd6"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/'+url+'&hl=fr_FR&fs=1&rel=0&color1=0x006699&color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="'+(width-paddings)+'" height="'+height+'"></embed></object>';
			if(testIE6){
				$('overlay').setStyle({'display':'block'});
				$('greyBox').setStyle({'display':'block'});
			}
			else{
				$('overlay').setOpacity(0);
				$('overlay').setStyle({'display':'block'});
				$('overlay').fade({
					duration:0.5,
					from:0,
					to:0.8,
					afterFinish:function(){
						$('greyBox').setStyle({'display':'block'});
					}
				});
			}
			break;
		// DAILYMOTION	==> Code video dailymotion à afficher
		case 'dailymotion':
			var paddings = parseInt($('greyBoxContent').getStyle('paddingLeft')) + parseInt($('greyBoxContent').getStyle('paddingRight'));
			$('greyBoxContent').innerHTML = '<object width="'+(width-paddings)+'" height="'+height+'"><param name="movie" value="http://www.dailymotion.com/swf/video/'+url+'"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed type="application/x-shockwave-flash" src="http://www.dailymotion.com/swf/video/'+url+'" width="'+(width-paddings)+'" height="'+height+'" allowfullscreen="true" allowscriptaccess="always"></embed></object>';
			if(testIE6){
				$('overlay').setStyle({'display':'block'});
				$('greyBox').setStyle({'display':'block'});
			}
			else{
				$('overlay').setOpacity(0);
				$('overlay').setStyle({'display':'block'});
				$('overlay').fade({
					duration:0.5,
					from:0,
					to:0.8,
					afterFinish:function(){
						$('greyBox').setStyle({'display':'block'});
					}
				});
			}
			break;
		// IMAGE		==> Image à afficher
		case 'image':
			$('greyBoxContent').innerHTML = '<img src="'+url+'" alt="" />';
			//$('greyBoxContent').setStyle({'width':width+'px', 'height':height+'px', 'overflow':'hidden'});
			var paddings = parseInt($('greyBoxContent').getStyle('paddingLeft')) + parseInt($('greyBoxContent').getStyle('paddingRight'));
			$('greyBox').setStyle({'width':(width+paddings)+'px', 'left':(parseInt($('greyBox').getStyle('left'))-(paddings/2))+'px'});
			if(testIE6){
				$('overlay').setStyle({'display':'block'});
				$('greyBox').setStyle({'display':'block'});
			}
			else{
				$('overlay').setOpacity(0);
				$('overlay').setStyle({'display':'block'});
				$('overlay').fade({
					duration:0.5,
					from:0,
					to:0.8,
					afterFinish:function(){
						$('greyBox').setStyle({'display':'block'});
					}
				});
			}
			break;
		default:
			break;
	}
	
	// On remonte le scroll en haut de page
	$$('body')[0].scrollTo();
	
	return false;
}
//greyBoxHide() : FERMETURE GREYBOX
function greyBoxHide(){
	var testIE6 = Prototype.Browser.IE6=Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5))==6;
	if(testIE6){
		$('overlay').setStyle({'display':'none'});
		$('greyBox').setStyle({'display':'none'});
		$('greyBoxContent').innerHTML = '';
		$$('select').each(function(el){el.setStyle({'display':'block'});});
	}
	else{
		$('greyBox').fade({
			duration:0.4,
			from:1,
			to:0,
			afterFinish:function(){
				$('greyBoxContent').innerHTML = '';
				$('overlay').fade({
					duration:0.4,
					from:0.8,
					to:0
				});
			}
		});
	}
}
/*----------------------------------------------------------------GREYBOX--------------------------------------------------------------------------*/

/*----------------------------------------------------------------DIAPORAMA jSON--------------------------------------------------------------------------*/
//Afficher un slide
function displaySlide(target, data, id){

	//on stocke l'élément déclencheur
	var trigger = $$('#'+target+' .pagination li:not(.previous)')[id];

	//Si un affichage de SLIDE n'est pas déjà en cours et que l'élément cliqué n'a pas déjà la classe ACTIVE
	if($(target).readAttribute('status') == 'finished' && !$(trigger).hasClassName('active')){
		$(target).writeAttribute('status', 'running');
		
		//On retire les précédentes classes ACTIVE
		$$('#'+target+' .pagination li.active').each(function(el){
			el.removeClassName('active');
		});
		var trigger = $$('#'+target+' .pagination li:not(.previous)')[id];
		//On applique la classe ACTIVE au <LI> trigger
		$(trigger).addClassName('active');
		
		$(target).writeAttribute('current', id);

		new Effect.Opacity($$('#'+target+' .content')[0], {
			from: 1,
			to: 0,
			duration: 1,
			afterFinish: function(){
				new Effect.Opacity($$('#'+target+' .background')[0], {
					from: 1,
					to: 0,
					duration: 1,
					afterFinish: function(){
						$$('#'+target+' .content')[0].innerHTML = '';
						$$('#'+target+' .content')[0].setOpacity(1);
						$$('#'+target+' .content')[0].setStyle({'display' : 'block'});
						displaySlide_proceed(target, data);
					}
				});
			}
		});
	}
	
}
//Rendu d'affichage du slide
function displaySlide_proceed(target, data){
	
	//On applique l'image de fond à SLIDE BACKGROUND
	$$('#'+target+' .background')[0].setStyle({'backgroundImage' : 'url('+data.img+')'});
	
	//On prépare le contenu du SLIDE
	var slide = '<div class="title">'+data.title+'</div>';
	slide += '<div class="subTitle">'+data.sub_title+'</div>';
	slide += '<p class="desc">'+data.desc+'</p>';
	if(data.link != ''){
		slide += '<p class="link"><a href="'+data.link+'"></a></p>';
	}
	
	//On insère le contenu du SLIDE
	$$('#'+target+' .content')[0].insert({top : slide});
	
	/*----Annimation----*/
	slideAnimation(target);
	
}
//Slide previous
function slidePrevious(target){

	//On récupère l'ID du slide en cours
	var id = $(target).readAttribute('current');
	id = parseInt(id);
	id--;
	
	
	//Si on a dépassé le dernier, on reviens à 0
	if(id < 0){
	
		//On récupère le nombre de slides possibles
		var size = $(target).readAttribute('length');
		size = parseInt(size);
		
		id = size-1;
	}
	
	//On lance l'animation
	displaySlide(target, slide_data[id], id);
	
}
//Slide next
function slideNext(target){

	//On récupère l'ID du slide en cours
	var id = $(target).readAttribute('current');
	id = parseInt(id);
	id++;
	
	//On récupère le nombre de slides possibles
	var size = $(target).readAttribute('length');
	size = parseInt(size);
	
	//Si on a dépassé le dernier, on reviens à 0
	if(id >= size){
		id = 0;
	}
	
	//On lance l'animation
	displaySlide(target, slide_data[id], id);
	
}
//Génération du Diaporama et de la pagination au chargement de la page
function slideGenerator(target, pagination_mode){
	if($(target)){
		/*--------------------------------------------------GÉNÉRATION DE LA PAGINATION-------------------------------------------------------------------*/
		//On masque le titre de référencement
		if($$('#'+target+' h1').length){
			$$('#'+target+' h1').each(function(el){
				el.setStyle({'display' : 'none'});
			});
		}
		//On stocke le nombre de slides dans un attribut custom du DIV #slide
		$(target).writeAttribute('length', slide_data.length);
		$(target).writeAttribute('auto', 'on');
		//Création de la pagination
		var pagination = '<ul class="pagination">';
		pagination += '<li class="previous" onclick="$(\''+target+'\').writeAttribute(\'auto\', \'off\');slidePrevious(\''+target+'\');"></li>';
		//En fonction de la longeur du JSON, on crée autant de boutons
		for(var i=1; i<=slide_data.length; i++){
		
			if(i <= 3){
				//On précharge les 3 premières images du slide
				$$('body')[0].insert({bottom : '<img src="'+(slide_data[i-1].img)+'" style="display:none;" alt="" />'});
			}
			
			var cnt = i+'';
			//Si on est < 10, on ajoute un "0" devant
			cnt.length < 2 ? cnt = '0'+cnt : '';
			
			pagination += '<li onclick="$(\''+target+'\').writeAttribute(\'auto\', \'off\');displaySlide(\''+target+'\', slide_data['+(i-1)+'], '+(i-1)+');">'+cnt+'</li>';
		}
		pagination += '<li class="next" onclick="$(\''+target+'\').writeAttribute(\'auto\', \'off\');slideNext(\''+target+'\');"></li>';
		pagination += '</ul>';
		//Une fois la pagination prête, on l'insère à la fin de SLIDEDATA
		$(target).writeAttribute('status', 'finished');
		$(target).insert({top : '<div class="content"></div>'});
		$(target).insert({top : '<div class="background"></div>'});
		$(target).insert({bottom : pagination});
		if(typeof(pagination_mode) != 'undefined' && pagination_mode && slide_data.length > 1){
			$$('#'+target+' .pagination')[0].setStyle({'display' : 'block'});
		}
		else{
			$$('#'+target+' .pagination')[0].setStyle({'display' : 'none'});
		}
		/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
		
		/*--------------------------------------------------------ON AFFICHE LE SLIDE #1--------------------------------------------------------------------------*/
		displaySlide(target, slide_data[0], 0);
		/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
	}
}
//Fonction personalisée d'affichage de la zone .CONTENT
/*-CI-DESSOUS : EXEMPLE-*/
function slideAnimation(target){
	//=> Fade In sur le BACKGROUND
	new Effect.Opacity($$('#'+target+' .background')[0], {
		from: 0,
		to: 1,
		duration: 1,
		afterFinish: function(){
			//Callback => slide de gauche à droite sur le TITLE
			new Effect.Opacity($$('#'+target+' .content .title')[0], {
				beforeSetup: function(){
					$$('#'+target+' .content .title')[0].setStyle({'display' : 'block'});
				},
				from: 0,
				to: 1,
				duration: 0.3,
				afterFinish: function(){
					//Callback => Fade In sur le DESC
					new Effect.Opacity($$('#'+target+' .content .subTitle')[0], {
						beforeSetup: function(){
							$$('#'+target+' .content .subTitle')[0].setStyle({'display' : 'block'});
						},
						from: 0,
						to: 1,
						duration: 0.3,
						afterFinish: function(){
							new Effect.Opacity($$('#'+target+' .content .desc')[0], {
								beforeSetup: function(){
									$$('#'+target+' .content .desc')[0].setStyle({'display' : 'block'});
								},
								from: 0,
								to: 1,
								duration: 0.3,
								afterFinish: function(){
									if($$('#'+target+' .content .link').length > 0){
										new Effect.Opacity($$('#'+target+' .content .link')[0], {
											beforeSetup: function(){
												$$('#'+target+' .content .link')[0].setStyle({'display' : 'block'});
											},
											from: 0,
											to: 1,
											duration: 0.3,
											afterFinish: function(){
												//Callback => Statut FINISHED
												$(target).writeAttribute('status', 'finished');
												if($(target).readAttribute('auto') == 'on'){
													setTimeout("slideNext('"+target+"')", (slide_timer*1000));
												}
											}
										});
									}
									else{
										//Callback => Statut FINISHED
										$(target).writeAttribute('status', 'finished');
										if($(target).readAttribute('auto') == 'on'){
											setTimeout("slideNext('"+target+"')", (slide_timer*1000));
										}
									}
								}
							});
						}
					});
				}
			});
		}
	});
}
/*----------------------------------------------------------------DIAPORAMA jSON--------------------------------------------------------------------------*/

/*----------------------------------------------------------------TOOLBAR IE6--------------------------------------------------------------------------*/
function toolbar_bottom_ie6fix_math(divName){
	var offset = $$('body')[0].cumulativeScrollOffset().top + document.viewport.getDimensions().height - $(divName).getDimensions().height;
	return offset;
}
function toolbar_bottom_ie6fix(divName){
	Event.observe(window,'load',function(){
		var offset = toolbar_bottom_ie6fix_math(divName);
		$(divName).setStyle({'position':'absolute','top':offset+'px'});
	});
	Event.observe(window,'resize',function(){
		var offset = toolbar_bottom_ie6fix_math(divName);
		$(divName).setStyle({'position':'absolute','top':offset+'px'});
	});
	Event.observe(window,'scroll',function(){
		var offset = toolbar_bottom_ie6fix_math(divName);
		$(divName).setStyle({'position':'absolute','top':offset+'px'});
	});
}
/*----------------------------------------------------------------TOOLBAR IE6--------------------------------------------------------------------------*/

/*----------------------------------------------------------------SORTER--------------------------------------------------------------------------*/
function filterShow(target){
	//On masque le Loading
	$(target).next(0).setStyle({'display' : 'none'});
	//On réatablit l'opacité du UL
	$(target).setOpacity(1);
	$(target).writeAttribute('style', '');
	
	//On trie en fonction des filtres activés
	filterManager(target);
	
}
function filterManager(target){

	//Initialisation de la règle CSS de filtrage
	var rule = '';
	//Compteur des TD.filters où un LI.active est présent
	var ctp = 0;
	//On remonte jusqu'au TR pour sélectionner tous les TD
	$(target).ancestors()[2].immediateDescendants().each(function(el){
		//On vérifie qu'ils ont la classe filters
		if(el.hasClassName('filters')){
			
			//On sélectionne tous les LI
			el.descendants()[1].immediateDescendants().each(function(el){
			
				//Si au moins 1 a la classe active
				if(el.hasClassName('active')){
					
					//On affiche le CANCEL FILTERS
					$('cancelFilters').addClassName('active');
					
					//Si c'est le premier
					if(ctp == 0){
						rule += '#'+target+' li';
					}
					
					//On découpe l'attribut ONCLICK en fonction des arguments
					var arguments = el.readAttribute('onclick').split(',');
					for(i=0; i<arguments.length; i++){
						if(i == 2){
							//On resplite en fonction des guillemets, et on reseigne RULE => ici : FILTER NAME
							rule += '['+arguments[i].split("'")[1]+'="';
						}
						else if(i == 3){
							//On resplite en fonction des guillemets, et on reseigne RULE => ici : FILTER VALUE
							rule += arguments[i].split("'")[1]+'"]';
						}
					}
					
					//On incrémente CTP
					ctp++;
				}
			});
			//Si CTP est resté à 0, on a plus de filtrage. On masque CANCEL FILTERS
			ctp == 0 ? $('cancelFilters').removeClassName('active') : '';
		}
	});
	
	//Si RULE est vide, on réaffiche tous les éléments
	if(rule == ''){
		rule = '#'+target+' li';
	}
	
	//On masque tous les éléments
	$$('#'+target+' li').each(function(el){
		//On enlève la classe "lineFirstChild"
		el.removeClassName('lineFirstChild');
		//On masque l'élément
		el.setStyle({'display' : 'none'});
	});
	//En fonction de la règle établie, on filtre
	if($$(rule).length){
		var ctp = 0;
		//On parcoure les résultats
		$$(rule).each(function(el){
			//On regarde le nombre à afficher par ligne
			var modulo = parseInt($(target).readAttribute('nb_per_line'));
			//Tous les 3 item, on ajoute la classe "lineFirstChild"
			ctp%modulo == 0 ? el.addClassName('lineFirstChild') : '';
			//On affiche les LI filtrés
			el.setStyle({'display' : 'block'});
			//On ré-écrit les attibuts customizés pour le scroll-over
			filterWriteCustomAttributes($(target));
			ctp++;
		});
	}
	else{
		//On indique qu'il n'y a pas de résultats
		$(target).ancestors()[0].immediateDescendants()[2].setStyle({'display' : 'block'});
	}
}
/*-HIGHLIGHT-*/
/*----------------------------------------------------------------SORTER HIGHLIGHTS--------------------------------------------------------------------------*/
function sorterHighlight(trigger, category_name, target){
	if(!$(trigger).hasClassName('active')){
		$(trigger).ancestors()[0].siblings().each(function(el){
			el.immediateDescendants()[0].removeClassName('active');
		});
		$(trigger).addClassName('active');
		
		$$('#'+target+' li').each(function(el){
			el.removeClassName('highlight');
			el.setOpacity(0.4);
		});
		$$('#'+target+' li[category="'+category_name+'"]').each(function(el){
			el.addClassName('highlight');
			el.setOpacity(1);
		});
	}
	else{
		$(trigger).removeClassName('active');
		sorterHighlightReset(target);
	}
}
function sorterHighlightReset(target){
	if(!$('sorterHighlightReset').hasClassName('active')){
		$('sorterHighlightReset').addClassName('active');
		$('sorterHighlightReset').ancestors()[0].siblings().each(function(el){
			el.immediateDescendants()[0].removeClassName('active');
		});
		$(target).immediateDescendants().each(function(el){
			el.removeClassName('highlight');
			el.setOpacity(1);
		});
	}
}
function sorterShowDetails(trigger, target){
	if(!$(trigger).hasClassName('active')){
		$('sorterHighlightReset').removeClassName('active');
		$(trigger).addClassName('active');
		$(target).addClassName('expanded');
		$(target).writeAttribute('nb_per_line', 2);
		
		filterWriteCustomAttributes($(target));
	}
}
function sorterShowDetailsReset(target){
	if(!$('sorterHighlightReset').hasClassName('active')){
		$('sorterHighlightReset').addClassName('active');
		$('sorterHighlightReset').ancestors()[0].siblings().each(function(el){
			el.immediateDescendants()[0].removeClassName('active');
		});
		$(target).removeClassName('expanded');
		$(target).writeAttribute('nb_per_line', 4);
		
		filterWriteCustomAttributes($(target));
	}
}
/*----------------------------------------------------------------SORTER HIGHLIGHTS--------------------------------------------------------------------------*/

/*----------------------------------------------------------------SORTER--------------------------------------------------------------------------*/
var effectsDuration = 0.8;
//Ajustement de filtres
function filterWriteCustomAttributes(element){
	//On stoke en attribut custom la HAUTEUR et l'OFFSET Y de la zone de roll-over WINDOW
	element.writeAttribute('status', 'off');
	element.writeAttribute('moving', 'off');
	element.writeAttribute('w_height', element.getDimensions().height);
	element.writeAttribute('offset_y', element.cumulativeOffset().top);
	
	//On stoke en attribut custom la HAUTEUR de l'élément à déplacer
	element.immediateDescendants()[0].writeAttribute('w_height', element.immediateDescendants()[0].getDimensions().height);
}
function resizeSorters(){
	//Ciblage des fenêtres de roll-over
	var higher = 0;
	$$('.window').each(function(el){
		
		if(el.immediateDescendants()[0].id != 'filter-results' && el.immediateDescendants()[0].immediateDescendants().length > 0){
			var realHeight = 0;
			el.immediateDescendants()[0].immediateDescendants().each(function(child){
				realHeight += child.getDimensions().height;
			});
			if(realHeight > higher){
				higher = realHeight;
			}
		}
		
		//Déclaration de l'attribut MOUSE OUT
		/*Event.observe(el, 'mouseleave', function(event){
			sorterMouseOut(el, event);
		});*/
		//Déclaration de l'attribut MOUSE OVER
		/*Event.observe(el, 'mouseenter', function(event){
			sorterMouseOver(el, event);
		});*/
	});
	$$('.window').each(function(el){
		
		if(el.immediateDescendants()[0].id != 'filter-results'){
			el.setStyle({'height' : higher+'px'});
			//el.immediateDescendants()[0].setStyle({'height' : higher+'px'});
			if(el.ancestors()[0].previous().immediateDescendants()[0].hasClassName('adjuster')){
				el.ancestors()[0].previous().immediateDescendants()[0].setStyle({'height' : (Math.floor(higher/2))+'px', 'paddingTop' : (Math.floor(higher/2)-3)+'px'});
			}
		}
	
		//On stocke des attributs customisés
		filterWriteCustomAttributes(el);
		
	});
}
//Affichage Indicateur AJAX
function filterWaiting(target){
	//On diminue l'opacité du UL
	$(target).setOpacity(0.4);
	//On affiche le Loading
	$(target).next(0).setStyle({'display' : 'block'});
}
//Masquage Indicateur AJAX
function filterLoaded(target){
	//On rétablit l'opacité du UL
	$(target).setOpacity(1);
	//On masque le Loading
	$(target).next(0).setStyle({'display' : 'none'});
}
//Remise à zéro du filtre
function sorterReset(element, target){
	if(typeof(element) != 'undefined'){
		$(element).removeClassName('active');
		$(element).ancestors()[0].removeAttribute('focus_y');
		$(element).ancestors()[1].writeAttribute('moving', 'on');
		$(element).ancestors()[1].removeClassName('activated');
		$(element).ancestors()[1].writeAttribute('status', 'off');
		
		//filterWaiting(target);
		if($(target)){
			$(target).ancestors()[0].removeClassName('activated');
			$(target).innerHTML = '';
			if(target == 'filter-type'){
				$('filter-results').innerHTML = '';
				$('filter-type').setStyle({'top' : '0px'});
			}
		}
		else{
			$('filter-results').innerHTML = '';
		}
		
		$(element).ancestors()[0].morph('top:0px;', {
			duration : effectsDuration,
			transition : Effect.Transitions.spring,
			afterFinish : function(){
				$(element).ancestors()[1].writeAttribute('moving', 'off');
				//filterShow(target);
			}
		});
	}
}
//Remise à zéro du filtre déclenché par les boutons du bas
function sorterResetGlobal(divName, target){
	if($$('#'+divName+' li.active').length){
		if(divName == 'filter-sectors'){
			$('cancelFilter_1').removeClassName('active');
			if($('cancelFilter_2')){$('cancelFilter_2').removeClassName('active');}
			$('cancelFilters').removeClassName('active');
		}
		else{
			if($('cancelFilter_2')){$('cancelFilter_2').removeClassName('active');}
		}
		sorterReset($$('#'+divName+' li.active')[0], target)
	}
}
//Déclenchement du filtre
function sorterTrigger(element, target){

	if(target == 'filter-type'){
		$(target).setStyle({'top' : '0px'});
		$(target).ancestors()[0].removeClassName('activated');
		$('filter-results').innerHTML = '';
		$('cancelFilter_1').addClassName('active');
		if($('cancelFilter_2')){$('cancelFilter_2').removeClassName('active');}
	}
	else{
		$('cancelFilter_1').addClassName('active');
		if($('cancelFilter_2')){$('cancelFilter_2').addClassName('active');}
	}

	//On passe le statut de WINDOW à ON
	$(element).ancestors()[1].writeAttribute('moving', 'on');
	//On Supprime un élément précédement sélectionné
	$(element).siblings().each(function(sibling){
		sibling.removeClassName('active');
	});
	//On applique à l'élément la classe ACTIVE
	$(element).addClassName('active');
	//On récupère la moitié de la hauteur de la fenêtre WINDOW
	var window_half_size = Math.floor(parseInt($(element).ancestors()[1].readAttribute('w_height')) / 2);
	//On calcule la position à laquelle l'élément cliqué doit se positionner
	var top = window_half_size - ($(element).positionedOffset().top + Math.ceil(($(element).getDimensions().height - 16) / 2));//=> Moins la valeur du padding-bottom
	//On stocke cet valeur en attribut custom
	$(element).ancestors()[0].writeAttribute('focus_y', top);
	//On active le statut et on repositionne le FILTRE
	$(element).ancestors()[1].writeAttribute('status', 'on');
	$(element).ancestors()[1].addClassName('activated');
	
	//on repositionne le FILTRE
	$(element).ancestors()[0].morph('top:'+top+'px;', {
		duration : effectsDuration,
		transition : Effect.Transitions.spring,
		afterFinish : function(){
			$(element).ancestors()[1].writeAttribute('moving', 'off');
		}
	});

}
//AJAX
function sortItems(trigger, url, targetid){

	if($(trigger) && !$(trigger).hasClassName('active')){
	
		//On affiche le CANCEL FILTERS
		$('cancelFilters').addClassName('active');
		//On efface les highlights éventuellement précédemment utilisés
		sorterHighlightReset('filter-results');
		
		var myAjax = new Ajax.Updater(
			targetid,
			url,
			{
				method:'get',
				evalScripts:true,
				onCreate:function(){
					filterWaiting(targetid);
				},
				onComplete:function(){
					filterLoaded(targetid);
					resizeSorters();
					producOpacityEffect();
					sorterTrigger(trigger, targetid);
				}
			}
		);
	}
	else{
		sorterReset(trigger, targetid);
	}
	
}
/*----------------------------------------------------------------SORTER--------------------------------------------------------------------------*/

/*----------------------------------------------------------------ZOOM--------------------------------------------------------------------------*/
//RATIO => 900/464
var ratio = (900-464)/2;
ratio = ratio + 464;
ratio = Math.round((ratio/464*100))/100;
var taille_visuel = 464;
var zoom_adjust = Math.ceil(228/2);
function productPreviewEnable(){

	$('zoom').setOpacity(0);
	$('zoom').setStyle({'display' : 'block'});
	$('zoom').setStyle({'backgroundImage' : 'url('+($('productPreview').readAttribute('zoom'))+')'});
	
	$('productPreview').writeAttribute('offset_left', $('productPreview').cumulativeOffset().left);
	$('productPreview').writeAttribute('offset_top', $('productPreview').cumulativeOffset().top);
	
	Event.observe('productPreview', 'mouseover', function(event){
		$('zoom').setOpacity(0);
		new Effect.Opacity('zoom', {
			from: 0,
			to: 1,
			duration: 0.3
		});
	});
	Event.observe('productPreview', 'mousemove', function(event){
		productZoomPositionning(event);
	});
	Event.observe('zoom', 'mousemove', function(event){
		productZoomPositionning(event);
	});
}
function productZoomPositionning(event){

	var offset_left = parseInt($('productPreview').readAttribute('offset_left'));
	var offset_top = parseInt($('productPreview').readAttribute('offset_top'));
	
	if(Event.pointerY(event) > offset_top && Event.pointerY(event) < (offset_top + taille_visuel)){
		$('zoom').setStyle({
			'top' : (Event.pointerY(event) - zoom_adjust)+'px'
		});
	}
	else{
		productZoomFinished();
		return false;
	}
	if(Event.pointerX(event) > offset_left && Event.pointerX(event) < (offset_left + taille_visuel)){
		$('zoom').setStyle({
			'left' : (Event.pointerX(event) - zoom_adjust)+'px'
		});
	}
	else{
		productZoomFinished();
		return false;
	}
	
	var bgPosX = Math.ceil((Event.pointerX(event) - offset_left)*(ratio));
	var bgPosY = Math.ceil((Event.pointerY(event) - offset_top)*(ratio));
	$('zoom').setStyle({
		'backgroundPosition' : '-'+(bgPosX)+'px '+'-'+(bgPosY)+'px'
	});
	
}
function productZoomFinished(){
	$('zoom').setOpacity(0);
	$('zoom').setStyle({
		'top' : '-5000px',
		'left' : '-5000px'
	});
}

function toggleBox(element, ancestorID){

	$(element).ancestors()[ancestorID].toggleClassName('active');
	
	if($(element).ancestors()[ancestorID].hasClassName('active')){
		$(element).ancestors()[ancestorID].descendants().each(function(el){
			if(el.hasClassName('content')){
				el.morph('width:200px;', {
					transition: Effect.Transitions.sinoidal,
					duration: 0.3
				});
			}
		});
	}
	else{
		$(element).ancestors()[ancestorID].descendants().each(function(el){
			if(el.hasClassName('content')){
				el.morph('width:0px;', {
					transition: Effect.Transitions.sinoidal,
					duration: 0.5
				});
			}
		});
	}
	
}

/*--------------------------------------------------------------------DIAPORAMA_GENERATOR-----------------------------------------------------------------------------*/
function diaporamaTrigger(movement, ulIndex, speed){

	var whatLength = parseInt($('diapo').readAttribute('length'));
	var whatItem = parseInt($('diapo').readAttribute('current_id')) + movement;
	
	$('diapo').writeAttribute('current_id', whatItem);
	
	if(movement == 1){
		if(whatItem >= whatLength){
			$('diapo').writeAttribute('current_id', 0);
			whatItem = 0;
			var whatFormerLI = $$('#diapo li')[whatLength-1];
		}
		else{
			var whatFormerLI = $$('#diapo li')[whatItem-1];
		}
	}
	else if(movement == -1){
		if(whatItem < 0){
			$('diapo').writeAttribute('current_id', whatLength-1);
			whatItem = whatLength-1;
			var whatFormerLI = $$('#diapo li')[0];
		}
		else{
			var whatFormerLI = $$('#diapo li')[whatItem+1];
		}
	}
	var whatLI = $$('#diapo li')[whatItem];
	
	new Effect.Opacity(whatFormerLI, {
		from:1,
		to:0,
		duration:speed,
		afterFinish:function(){
			whatFormerLI.setStyle({'display':'none'});
		}
	});
	new Effect.Opacity(whatLI, {
		from:0,
		to:1,
		duration:speed,
		afterSetup:function(){
			whatLI.setStyle({'display':'block'});
		}
	});
}
function diaporama_generator(ulIndex, speed, autoDefil, autoDefilTimer, autoDefilResume){

	
	//	!!! Requiers		=> 	diaporamaTrigger()
	//	v1.0
	
	/*------Paramètres-----*/
		//[sliderUlIndex]				==> Index de profondeur du <BLOCK DÉPLACÉ> par rapport au <BLOCK SLIDER> (slider exclu)
		//[speed]					==> Durée de la transition en secondes
		//[autoDefil]				==> Défilement auto : TRUE / FALSE (FALSE par défaut)
		//[autoDefilTimer]			==> Intervalle du défilement auto
		//[autoDefilResume]			==> Intervalle de reprise du défilement auto après l'arrêt par click sur les boutons
	/*------Paramètres-----*/
	/*------Structure HTML requise-----*/
	/*
		<div class="slider">					//BLOCK SLIDER				CSS : libre
			<ul>						//BLOCK DÉPLACÉ			CSS : libre
				<li></li>				//ITEM					CSS : position:absolute;
				<li></li>				//ITEM					CSS : position:absolute;
				<li></li>				//ITEM					CSS : position:absolute;
			</ul>
			<span class="buttonLeft off"></span>		//BOUTON PRÉCÉDENT		CSS : libre
			<span class="buttonRight"></span>		//BOUTON SUIVANT			CSS : libre
		</div>
	*/
	/*------Structure HTML requise-----*/

	$('diapo').writeAttribute('current_id', 0);
	$('diapo').writeAttribute('length', $$('#diapo li').length);
	
	$$('#diapo .buttonLeft').each(function(el){
		Event.observe(el, 'click', function(){
			if(!$('diapo').hasClassName('manual')){
				$('diapo').addClassName('manual');
			}
			diaporamaTrigger(-1, ulIndex, speed);
		});
	});
	$$('#diapo .buttonRight').each(function(el){
		Event.observe(el, 'click', function(){
			if(!$('diapo').hasClassName('manual')){
				$('diapo').addClassName('manual');
			}
			diaporamaTrigger(1, ulIndex, speed);
		});
	});
	
	if(autoDefil){
		new PeriodicalExecuter(function(pe){
			if($('diapo').hasClassName('manual')){
				$('diapo').removeClassName('manual');
			}
		}, autoDefilResume);
		new PeriodicalExecuter(function(pe){
			if(!$('diapo').hasClassName('manual')){
				diaporamaTrigger(1, ulIndex, speed);
			}
		}, autoDefilTimer);
	}
	
}

/*--------------------------------------------------------------------FIELD SPECIAL FOCUS-----------------------------------------------------------------------------*/
function formSpecialFocus(cssRule, opacity, speed){
	$$(cssRule).each(function(el){
		
		if(el.getValue() != ''){
			el.previous().setStyle({'display' : 'none'});
		}
		
		Event.observe(el, 'focus', function(){
			new Effect.Opacity(el.previous(), {
				from: 1,
				to: opacity,
				duration: speed
			});
		});
		
		Event.observe(el, 'blur', function(){
			new Effect.Opacity(el.previous(), {
				from: opacity,
				to: 1,
				duration: speed
			});
		});
		
		Event.observe(el, 'keyup', function(){
			if(el.getValue() != ''){
				el.previous().setStyle({'display' : 'none'});
			}
			else{
				el.previous().setStyle({'display' : 'block'});
			}
		});
			
	});
}

/*--------------------------------------------------------------------EFFET ROLL-OVER PRODUITS-----------------------------------------------------------------------------*/
function producOpacityEffect(){
	//Effet d'opacité sur le ROLL OVER des produits
	$$('td.items.products ul li, .productList li').each(function(el){
		Event.observe(el, 'mouseover', function(){
			this.descendants()[0].setOpacity(0.4);
		});
		Event.observe(el, 'mouseout', function(){
			this.descendants()[0].setOpacity(1);
		});
	});
}

function customizeMenuLang(target){
	$(target).setStyle({display:'none'});
	var html = '';
	var current = $(target).select('option[selected]')[0];
	$(target).select('option[selected]')[0].remove();
	html += '<a href="'+current.readAttribute('value')+'"><img src="/media/_img/lang/'+current.innerHTML.substr(0, 2).toLowerCase()+'.png" alt="'+current.innerHTML+'" />'+current.innerHTML.substr(0, 2)+'</a>';
	if($(target).select('option').length){
		html += '<ul>';
		$(target).select('option').each(function(el){
			html += '<li><a href="'+el.readAttribute('value')+'"><img src="/media/_img/lang/'+el.innerHTML.substr(0, 2).toLowerCase()+'.png" alt="'+el.innerHTML+'" />'+el.innerHTML.substr(0, 2)+'</a></li>';
		});
		html += '</ul>';
	}
	$(target).replace(html);
}

Event.observe(window, 'load', function(){

	//Enclenchement des FILTRES de TRI
	resizeSorters();
	
	//Enclenchement du ZOOM
	if($('productPreview')){
		$$('body')[0].insert({
			'bottom' : '<div id="zoom"></div>'
		});
		productPreviewEnable();
	}
	
	producOpacityEffect();
	
	formSpecialFocus('.classicForm .above .text, .classicForm .above .textarea', 0.3, 0.3);
	
});













