/**************************************************************************************************************************************************************************************************/
/* CONSTANTE */
/**************************************************************************************************************************************************************************************************/
	window.CONST_BGCOLORFILTER = '#000';
	
/**************************************************************************************************************************************************************************************************/

/**************************************************************************************************************************************************************************************************/
/* VARIABLES GLOBALES */
/**************************************************************************************************************************************************************************************************/
/**************************************************************************************************************************************************************************************************/

/**************************************************************************************************************************************************************************************************/
/* Evenements */
/**************************************************************************************************************************************************************************************************/
//window.addEvent('domready', initAll);

function initAll(){
	initCarroussel();
	initCarrousselZoom();
	initPng();
}

function initLoad(){
	//initAjaxRecherche();  PLUS UTILE
}
	
/**************************************************************************************************************************************************************************************************/

/**************************************************************************************************************************************************************************************************/
/* Scintillement des backgrounds sous IE */
/**************************************************************************************************************************************************************************************************/
try{document.execCommand('BackgroundImageCache', false, true);}catch(e){};
/**************************************************************************************************************************************************************************************************/

/**************************************************************************************************************************************************************************************************/
/* Fonctions */
/**************************************************************************************************************************************************************************************************/

function locationHref(TsUrl, TsEvent){
	var event = new Event(TsEvent);

	window.location.href = TsUrl;

	event.stopPropagation();
	event.stop();
}
function initPng(){
	if ( !window.IElt7 ){return;}
	window.CONST_PATH_IMG = document.getElementById('const_img').value;
	var tsElementsIMG = $$('img.png');
	for(var i=0, x=tsElementsIMG.length;i<x;i++){
		var tsSrcImg = tsElementsIMG[i].getProperty('src');
		
		var tsWidthImg = tsElementsIMG[i].getProperty('width');
		var tsHeightImg = tsElementsIMG[i].getProperty('height');
		tsElementsIMG[i].setStyles({
			'filter': 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+tsSrcImg+'",sizingMethod="scale")',
			'background': 'none'
		});
		tsElementsIMG[i].setProperty('src', window.CONST_PATH_IMG + '/images/bg-blank.gif');
		if(parseInt(tsWidthImg)>0){ tsElementsIMG[i].setProperty('width', parseInt(tsWidthImg)); }
		if(parseInt(tsHeightImg)>0){ tsElementsIMG[i].setProperty('height', parseInt(tsHeightImg)); }
		tsElementsIMG[i].setStyle('visibility', 'visible');

	}
}
/*function initRounded(){
	var TsElementsRounded = $ES('div.rounded', document.body);

	if( TsElementsRounded.length > 0){
		var coins_H = new Element('div', {'class': 'coins'});
		new Element('div', {'class': 'coin coinHG'}).inject(coins_H);
		new Element('div', {'class': 'coin coinHD'}).inject(coins_H);
		var coins_B = new Element('div', {'class': 'coins'});
		new Element('div', {'class': 'coin coinBG'}).inject(coins_B);
		new Element('div', {'class': 'coin coinBD'}).inject(coins_B);
	}

	for(var i=0, x=TsElementsRounded.length; i<x; i++){
		coins_H.clone().injectTop(TsElementsRounded[i]);
		coins_B.clone().inject(TsElementsRounded[i]);
	}
}*/


/** Fonction qui initialise le carroussel et récupère toutes les informations dont a besoin pour savoir quand le bouger */
function initCarroussel(){
	// si il n'y a pas de carroussel on sort de la fonction 
	if( !$('carroussel') ){return;}
	
	/* on récupère les éléments du carroussel : 
	    - les boutons précédent et suivant
	    - le conteneur global (carroussel)
	    - les liens contenues dans le carroussel
	*/
	var tsTabElementAPrevious = $E('a.previous', 'carroussel'); // Lien precedent
	var tsTabElementDiv = $E('div', 'carroussel'); // Conteneur avec les dimensions visibles

	var tsTabElementsA = $ES('a', tsTabElementDiv); // Lien dans la liste
	var tsTabElementANext = $E('a.next', 'carroussel'); // Lien suivant

    /* On ajoute aux deux boutons (last et next) un événement onclick */
	if( tsTabElementAPrevious ){
		tsTabElementAPrevious.addEvent('click', moveCarroussel);
	}
	if( tsTabElementANext ){
		tsTabElementANext.addEvent('click', moveCarroussel);
	}

	/* on stocke tous les éléments du carroussel (li) dans un tableau */
	var tsTabElementsLI = $ES('li', tsTabElementDiv);
	
	/* si on a au moins un élément dans le caroussel :
	    - on cache le bouton précédent
	    - on récupère le dernier li du ul (dernier élément du caroussel)
	    - on calcule la taille que prend un élement du caroussel ( taille du li + marges )
	    - en clair, si les éléments ne prennent pas toute la taille du caroussel( si la taille du dernier li + la taille qui lui reste à sa gauche est inférieure à la taille du caroussel )
	        --> on masque le bouton suivant
	    - on récupère la taille totale de la liste contenant les éléments ( taille d'un li x nb de li)
	    - on applique au div carroussel deux propriétés dont on va se servir par la suite :
	            --> la taille d'un li
	            --> la taille totale de la liste
	*/
	if( tsTabElementsLI.length > 0){
		if(tsTabElementAPrevious)
			tsTabElementAPrevious.setStyle('visibility', 'hidden');
		var tsTabElementLILast = $(tsTabElementsLI[tsTabElementsLI.length-1]); // Recupere le dernier LI du UL
		var tsElementLIWidth = tsTabElementLILast.getSize().size.x.toInt() + tsTabElementLILast.getStyle('margin-left').toInt() + tsTabElementLILast.getStyle('margin-right').toInt();
		if( tsTabElementANext && (tsTabElementLILast.offsetLeft.toInt() + tsElementLIWidth) <= (tsTabElementDiv.getSize().size.x.toInt()) ){
			tsTabElementANext.setStyle('visibility', 'hidden');
		}
		var tsElementULWidth = tsElementLIWidth.toInt() * tsTabElementsLI.length;
		var tsTabElementUL = $E('ul', tsTabElementDiv); // Recheche le UL des miniatures
		tsTabElementUL.setStyle('width', tsElementULWidth); // Mise a jour de la largeur du UL

		tsTabElementDiv.setProperty('LIWidth', tsElementLIWidth); // Memorise la largeur d'une image dans le carroussel
		tsTabElementDiv.setProperty('ULWidth', tsElementULWidth); // Memorise la largeur du UL contenant les images miniatures

        /*
        si désactivation du JS, si user clique sur lien, affichage de l'image 
        sinon preloading des images en fonction du contenu des href (href = source de l'image)
        ajout d'événement onmouseover sur ces liens et appel fonction "showProductVisuel" sur cet événement 
        */
		var TsPreloadImg = new Array(); // Preload des images des les a.href
//////		for(var i=0, x=tsTabElementsA.length;i<x;i++){
//////			TsPreloadImg[i] = new Image();
//////			TsPreloadImg[i].src = tsTabElementsA.getProperty('href');
//////			if( i == 0){tsTabElementsA[i].addClass('selected');}
//////			tsTabElementsA[i].addEvent('mouseover', showProductVisuel);
//////		}
	}else{ // Cache la partie carroussel
		$('carroussel').setStyle('display', 'none');
	}
}
function initCarrousselZoom(){
	if( !$('carroussel_zoom') ){return;}
	
	var tsTabElementDiv = $E('div', 'carroussel_zoom'); // Conteneur avec les dimensions visibles
	var tsTabElementsA = $ES('a', tsTabElementDiv); // Lien dans la liste
	var TsPreloadImg = new Array(); // Preload des images des les a.href
	for(var i=0, x=tsTabElementsA.length;i<x;i++){
		TsPreloadImg[i] = new Image();
		TsPreloadImg[i].src = tsTabElementsA.getProperty('href');
		if( i == 0){tsTabElementsA[i].addClass('selected');}
		tsTabElementsA[i].addEvent('mouseover', showProductVisuelZoom);
	}
}

function moveCarroussel(TsEvent){
	var event = new Event(TsEvent);

	var tsTabElementDiv = $E('div', 'carroussel'); // Conteneur avec les dimensions visibles
	var tsTabElementUL = $E('ul', tsTabElementDiv); // Mise a jour de la largeur du UL
	var tsTabElementAPrevious = $E('a.previous', 'carroussel'); // Lien precedent
	var tsTabElementANext = $E('a.next', 'carroussel'); // Lien suivant

	// on récupère le lien cliqué
	var el = $(event.target).getParentTag('a');
	var marginChange = new Fx.Style(tsTabElementUL, 'margin-left', {duration:1000, onStart: hideCarroussel, onComplete: showCarroussel});
	
	
	
	// si on a cliké sur le bouton précédentque 
	if( el.hasClass('previous') ){
		if( tsTabElementUL.getStyle('marginTop') > 0 ){
			marginChange.start(tsTabElementUL.getStyle('margin-left').toInt(), -(Math.abs(tsTabElementUL.getStyle('margin-left').toInt()-tsTabElementDiv.getProperty('LIWidth').toInt())));
		}else{
			marginChange.start(tsTabElementUL.getStyle('margin-left').toInt(), 0);
		}
	}
	if( el.hasClass('next') ){
	//alert(Math.abs(tsTabElementUL.getStyle('margin-left').toInt())+' + '+(tsTabElementDiv.getStyle('width').toInt()));
	//alert(tsTabElementDiv.getProperty('ULWidth').toInt());
	if( (Math.abs(tsTabElementUL.getStyle('margin-left').toInt())+(tsTabElementDiv.getStyle('width').toInt())) < tsTabElementDiv.getProperty('ULWidth').toInt() ){
			marginChange.start(tsTabElementUL.getStyle('margin-left').toInt(), -(Math.abs(tsTabElementUL.getStyle('margin-left').toInt())+tsTabElementDiv.getProperty('LIWidth').toInt()));
		}else{
			marginChange.start(tsTabElementUL.getStyle('margin-left').toInt(), -(tsTabElementDiv.getProperty('ULWidth').toInt()-tsTabElementDiv.getProperty('width').toInt()));
		}
	}

	event.stopPropagation();
	event.stop();
}

/** Fonction qui affiche et masque les boutons du caroussel durant le slide */
function showCarroussel(){
	var tsTabElementAPrevious = $E('a.previous', 'carroussel'); // Lien precedent
	var tsTabElementDiv = $E('div', 'carroussel'); // Conteneur avec les dimensions visibles
	var tsTabElementUL = $E('ul', tsTabElementDiv); // Mise a jour de la largeur du UL
	var tsTabElementANext = $E('a.next', 'carroussel'); // Lien suivant

    /*
        si la liste n'a pas de marge à gauche, on masque le bouton "précédent"
        si la somme de éléments du caroussel + sa marge gauche est inférieur à la taille visible du caroussel   
            on affiche le bouton suivant 
    */
	if( tsTabElementUL.getStyle('margin-left').toInt() == 0 ){
		tsTabElementAPrevious.setStyle('visibility', 'hidden');
	}else{
		tsTabElementAPrevious.setStyle('visibility', 'visible');
	}
	if( (Math.abs(tsTabElementUL.getStyle('margin-left').toInt())+(tsTabElementDiv.getStyle('width').toInt())) < tsTabElementDiv.getProperty('ULWidth').toInt() ){
		tsTabElementANext.setStyle('visibility', 'visible');
	}else{
		tsTabElementANext.setStyle('visibility', 'hidden');
	}
}

/** Fonction qui cache les boutons du caroussel durant le slide */
function hideCarroussel(){
	var tsTabElementAPrevious = $E('a.previous', 'carroussel'); // Lien precedent
	var tsTabElementANext = $E('a.next', 'carroussel'); // Lien suivant

	tsTabElementAPrevious.setStyle('visibility', 'hidden');
	tsTabElementANext.setStyle('visibility', 'hidden');
}

/**************************************************************************************************************************************************************************************************/

/**************************************************************************************************************************************************************************************************/
/* Popup Thomas SEGOND */
/**************************************************************************************************************************************************************************************************/
if(document.documentElement && document.documentElement.clientWidth){window.TsDocRef = document.documentElement;}else{window.TsDocRef = document.body;}
if( (window.ie || window.ie6) && !window.ie7){window.IElt7=true;}else{window.IElt7=false;}

function $SetFilterPopup(){

	if( !$('filter') ){return;}

	if( $('filter').getStyle('display') == 'block' ){
		setTimeout('$SetFilter()', 20);
		setTimeout('$SetPopup()', 20);
	}
}
function $ShowFilter(TsBgColorFilter){
	TsBgColorFilter = TsBgColorFilter || window.CONST_BGCOLORFILTER;

	if( !$('filter') ){$CreateFilter(TsBgColorFilter);}

	if( $('filter').getStyle('display') == 'block' ){return;}

	if ( window.IElt7 ){$GestionSelect('hidden');}

	$SetFilter();
	$('filter').setStyle('display', 'block');

	// Evenements pour gestion du filtre et de la popup
	window.addEvent('resize', $SetFilterPopup);
}
function $HideFilter(){
	if( !$('filter') ){return;}
	
	$('filter').setStyle('display', 'none');
	if( window.IElt7 ){$GestionSelect('visible');}
}
function $SetFilter(){
	if( !$('filter') ){return;}

	$('filter').setStyles({'width': 0, 'height': 0});

	var TsLargeur = parseInt(window.TsDocRef.clientWidth) + parseInt(window.TsDocRef.scrollLeft);
	var TsHauteur = parseInt(window.TsDocRef.clientHeight) + parseInt(window.TsDocRef.scrollTop);

    if( $('global') ){
        if( $('global').offsetHeight >  TsHauteur){TsHauteur = parseInt($('global').offsetHeight);}
        if( $('global').offsetWidth  >  TsLargeur){TsLargeur = parseInt($('global').offsetWidth);}
    }

	if( $('filter') ){$('filter').setStyles({'width':TsLargeur, 'height':TsHauteur})}
}
function $CreateFilter(TsBgColorFilter){
	var TsFilter = new Element('div').inject(document.body);
	TsFilter.setStyles({'top':0, 'left':0, 'width':0, 'height':0, 'background':TsBgColorFilter, 'opacity':0.75});
	TsFilter.setProperty('id', 'filter');
}

function $ShowPopup(TsUrl, TsEvent){
	if($chk(TsEvent)){
		var event = new Event(TsEvent);
		event.stopPropagation();
		event.stop();
	}

	$ShowFilter();
	if( !$('popup') ){$CreatePopup();}else{$HidePopup();}
	var TsUrl = $UrlRamdom(TsUrl);

	var myAjax = new Ajax(TsUrl, {method: 'get', onRequest:$CreateLoader, onComplete:$SetPopupComplete, onFailure:$HideAll}).request();
	return false;
}
function $HidePopup(){
	if( !$('popup') ){return;}

	$('popup').setHTML('');
	$('popup').setStyle('display', 'none');
}
/*
function $SetPopupComplete(tsContent){
	if( !$('popup') ){return;}
	
	var tsStart = '<!-- Start POPUP -->';
	var tsEnd = '<!-- End POPUP -->';
	if( tsContent.indexOf(tsStart) > -1 && tsContent.indexOf(tsEnd) > -1 ){
		$('popup').innerHTML = tsContent.substring(tsContent.indexOf(tsStart), tsContent.indexOf(tsEnd)+(tsEnd.length));
	}else{
		$('popup').innerHTML = tsContent;
	}

	TsEvalScripts($('popup').innerHTML);

	var tsElementA = $ES('.close', 'popup');
	for(var i=0, x=tsElementA.length;i<x;i++){tsElementA[i].setStyle('visibility', 'visible');}
	setTimeout('$SetPopup()', 20);
}

function $SetPopup(){
	if( !$('popup') ){return;}

	$SetPosition('popup')
	$HidePopupLoader();
}
function $SetPosition(TsElement){
	$(TsElement).setStyles({'visibility':'hidden', 'display':'block'});

	var TsScrollTop     = parseInt(window.TsDocRef.scrollTop);
	var TsScrollLeft    = parseInt(window.TsDocRef.scrollLeft);
	var TsClientHeight  = parseInt(window.TsDocRef.clientHeight);
	var TsClientWidth   = parseInt(window.TsDocRef.clientWidth);


	// Calcule la résolution de l'utilisateur pour le scroll des caractéristiques
	
	if( $('comparateur_content_0a') && parseInt($(TsElement).offsetHeight) > TsClientHeight ){
		$('comparateur_content_0a').setStyle('height', ( parseInt($('comparateur_content_0a').getStyle('height')) - (parseInt($(TsElement).offsetHeight) - TsClientHeight) ) );
	}

	var TsElementHeight = parseInt($(TsElement).offsetHeight);
	var TsElementWidth  = parseInt($(TsElement).offsetWidth);
	var TsBlockTop      = Math.round( TsScrollTop + (TsClientHeight - TsElementHeight) / 2)+'px';
	var TsBlockLeft     = Math.round( TsScrollLeft + (TsClientWidth - TsElementWidth) / 2)+'px';

	if( parseInt(TsBlockTop) < 0 ){ TsBlockTop = '0';}
	if( parseInt(TsBlockLeft) < 0 ){ TsBlockLeft = '0';}

	if( $(TsElement) ){$(TsElement).setStyles({'top':TsBlockTop, 'left':TsBlockLeft, 'visibility':'visible'})}
}
*/

function $CreatePopup(){
	var TsPopup = new Element('div').inject(document.body);
	TsPopup.setStyles({'top':0, 'left':0});
	TsPopup.setProperty('id', 'popup');
}
function $CreatePopupLoader(){
	var TsPopup = new Element('div').inject(document.body);
	TsPopup.setStyles({'position':'absolute', 'top':0, 'left':0, 'z-index':3, 'display':'none', 'overflow':'hidden'});
	TsPopup.setProperty('id', 'popup_loader');
}
function $CreateLoader(){
	if( !$('popup_loader') ){
		$CreatePopupLoader();
	}else{
		$SetPosition('popup_loader');
		return;
	}

	var TsLoader = new Element('div');
	TsLoader.setStyles({'position':'relative', 'width':250, 'overflow':'hidden', 'text-align':'center', 'background': '#fff', 'padding-top':10, 'padding-bottom':10});
	TsLoader.setProperty('id', 'loader');

	var TsImage = new Element('img').inject(TsLoader);
	TsImage.setProperty('src', window.CONST_PATH_IMG + 'img-loader.gif');
	TsImage.setProperty('alt', 'Chargement en cours ...');

	var TsTexte = new Element('p').inject(TsLoader);
	TsTexte.setStyles({'padding-left':10, 'padding-right':10});
	TsTexte.setHTML('Chargement en cours ...');
	
	TsLoader.inject($('popup_loader'));
	$SetPosition('popup_loader');
}
function $HidePopupLoader(){
	if( !$('popup_loader') ){return;}
	$('popup_loader').setStyle('display', 'none');
}
function $HideAll(TsEvent){
	if($chk(TsEvent))
		var event = new Event(TsEvent);

	$HidePopupLoader();
	$HidePopup();
	$HideFilter();

	if($chk(TsEvent)){	
		event.stopPropagation();
		event.stop();
	}
}

/**************************************************************************************************************************************************************************************************/

/**************************************************************************************************************************************************************************************************/
/* Addon MOOTOOLS */
/**************************************************************************************************************************************************************************************************/


if(Element){
	Element.extend({
		getParentTag: function(parent){ // Retourne le premier parent avec le tag demand? et/ou la id et/ou class -> div#monid.maclass
			var TsTagName, TsClassName , TsId;
			var TsParentClass = parent.split('.');
			TsParentClass.length > 1 ? TsClassName = TsParentClass[1] : TsClassName = '';
			var TsParentId = TsParentClass[0].split('#');
			if( TsParentId.length > 1 ){TsId = TsParentId[1];}else{TsId = '';}
			TsTagName = TsParentId[0];
			var TsElement = this;
			while( $(TsElement) ){
				if(TsElement.getTag() == 'body'){break;}

				var TsFlag = true;
				if( TsElement.getTag() != TsTagName ){TsFlag = false;}
				if( TsId != '' && TsElement.getProperty('id') != TsId ){TsFlag = false;}
				if( TsClassName != '' && !TsElement.hasClass(TsClassName) ){TsFlag = false;}
				if( TsFlag ){break;}

				TsElement = TsElement.parentNode;
			}
			return $(TsElement);
		}
	})
}

window.addEvent('load', initAll);
/**************************************************************************************************************************************************************************************************/

