// ul-filtre1 : Type de produit
var aListFilter = new Array;
aListFilter = ['ul-filter1'];


/*
 * Fonction qui récupére tous les LI du DIV #filter
 * et qui leur affecte un comportement un survol et au click
 */
function initFilterBoxBehaviour(sFilterId)
{
	var sOldStyle;
	
	if(sFilterId){
		var oDivChoice = document.getElementById(sFilterId);
	}
	else{
		var oDivChoice = document.getElementById('filter');
	}
	
	var aUL = oDivChoice.getElementsByTagName('ul');
	for(var j=0; j<aUL.length; j++) {
		var aLI = aUL[j].getElementsByTagName('li');
		
		itemNumberUpdate(aUL[j], aLI);
		
		for(var i=0; i<aLI.length; i++) {
			aLI[i].onmouseover = function(){
				if(this.className.indexOf('li-selected') < 0){
					sOldStyle = this.className;
					this.className += 'li-hover';
				}
			}
			aLI[i].onmouseout = function(){
				if(this.className.indexOf('li-selected') < 0){
					this.className = sOldStyle;
				}
			}
			
			if(aUL[j].id == 'ul-filter1') // Soit c'est l'UL qui sert pour le tri par type
			{
				aLI[i].onclick = function(){
					unselectUL('ul-filter1'); // Déselectionner les autres items
					this.className = sOldStyle +' li-selected';
					
					sULId = Element.getParent(this, 'ul').id
					filterUpdate(sULId);
				}
			}
			else // Soit c'est l'UL pour afficher la liste des produits ou accessoire
			{
				aLI[i].onclick = function(){
					var sFilter = this.parentNode.id;
					//manageLiClic(sFilter, this);
				}
			}
		}
	}
	
} /* initFilterBoxBehaviour() */


/*
 * Fonction qui gère les clics dans les filtres
 * @sFilterType : ul-filter1 / ul-filter2 / ul-filter3 
 */
function manageLiClic(sFilterType, oLi)
{
	var sOldStyle = oLi.className;
	
	switch(sFilterType)
	{
		case 'ul-filter2': case 'ul-filter3':
			var sFilter = oLi.parentNode.id;
			unselectUL(sFilter); // Déselectionner les autres items
			sFilterBis = 'ul-filter2';
			if(sFilter == 'ul-filter2') sFilterBis = 'ul-filter3';
			unselectUL(sFilterBis); // Déselectionner les autres items de l'autre filtre
			
			oLi.className = sOldStyle +' li-selected';
			displayProduct(oLi.id, sFilter);
		break;
	}
} /* manageLiClic() */

/*
 * Fonction qui simule un clic sur un filtre pour un permalink
 *  
 */
function permalinkLiClic(iProductId, sProductType)
{
	if(sProductType == 'a') sFilerId = 'ul-filter3'; 
	if(sProductType == 'p') sFilerId = 'ul-filter2';
	
	var oFilter = document.getElementById(sFilerId);
	var aLi = oFilter.getElementsByTagName('li');
	if(aLi.length < 1){ // Si les LI ne sont pas encore affiché il faut relancer la fonction 0.5s plus tard
		var sFn = "permalinkLiClic(" +iProductId +", '" +sProductType +"')";
		setTimeout(sFn, 500);
	}
	else
	{
		for(i=0; i< aLi.length; i++)
		{
			if(aLi[i].id == iProductId) oLi = aLi[i];
		}
		manageLiClic(sFilerId, oLi);
	}
	
} /* permalinkLiClic() */



/*
 * Met à jour pour chaque filtre, le nombre d'items sélectionnés et le nombre d'items total
 */
function itemNumberUpdate(oUL)
{
	var oItemTotal = oUL.parentNode.getElementsByTagName('div')[3];
	var oItemSelected = oUL.parentNode.getElementsByTagName('div')[2];
	
	// maj du nombre d'items total
	if(oItemTotal) oItemTotal.innerHTML = oUL.getElementsByTagName('li').length; 
	
	// maj du nombre d'items sélectionnés
	cLISelected = Element.getElementsByClassName(oUL, 'li-selected');
	if(oItemSelected) oItemSelected.innerHTML = cLISelected.length; 
	
	return true;

} /* itemNumberUpdate() */




/*
 * Fonction qui met à jour les listes de filtres à chaque clic sur l'un de leur item
 * A chaque clic le composant oDomainFilter est appelé et permet de mettre à jour toutes les listes
 * param sULID : Nom de l'UL appelante
 */
function filterUpdate(sULId)
{
	
	var aFilterValue = new Array;
	
	var sParam='le_filter=' +sULId +'&';
	
	// Parcours de tous les filtres pour extraire les items sélectionnés
	for(var i=0; i<aListFilter.length; i++) {
		oUL = D.getElementById(aListFilter[i]);
		aLI = Element.getChildElements(oUL, 'li');
		sParamTmp = '';
		for(var j=0; j<aLI.length; j++) {
			//if(aLI[j].className.indexOf('li-selected') >= 0) sParamTmp += encodeURIComponent(aLI[j].id) +'|';
			if(aLI[j].className.indexOf('li-selected') >= 0) sParamTmp += aLI[j].id +'|';
		}

		// Construction de la variable sParam
		sParam += 'le_' +aListFilter[i] +'=' +sParamTmp +'&';	
	}
	sParam = sParam.substring(0,sParam.length-1); // Suppression du & en trop
	
	oMainFilter.run(sParam, sULId);
	

} /* filterUpdate() */






/*
 * Affiche une fiche produit ou accessoire
 * @sFilter permet de savoir si c'est un produit ou un accessoire (ul-filter2 ou ul-filter3)
 */
function displayProduct(iProductId, sFilter)
{
	var sDivId = 'product-features';
	
	var sParam = 'le_action=' +sDivId +'&le_id=' +iProductId +'&le_filter=' +sFilter;

	var ajaxCall;
	
    if(ajaxCall && ajaxCall.transport && ajaxCall.transport.readyState != 4){
    	ajaxCall.transport.abort();
    }
    
    try {
    	var current = this;
    	ajaxCall = new Ajax.Updater(sDivId, 'ajax-retrieve-data.php', {
    		method: 'get',
			parameters: sParam,
			onComplete: function()
			{
				// Appel de la fonction pour gérer l'affichage zoom du produit
				initLightbox();
				
				// Centrage vertical du texte de description
				var iTextHeight = $('product-description-size').offsetHeight;
				var iBoxHeight = $('product-description-asc').offsetHeight;
				if(iTextHeight < iBoxHeight)
				{
					$('product-description-size').style.paddingTop = (iBoxHeight-iTextHeight)/2 +'px';	
				}
			},
			onFailure: function(request){
				alert('Erreur : ' +request.status)
			}
			
      	});
    }
    catch(exept){}


} /* displayProduct() */


/*
 * Fonction qui déselectionne tous les items d'une liste
 */
function unselectUL(sULId)
{
	var aLI = document.getElementById(sULId).getElementsByTagName('li');
	for(var k=0; k<aLI.length; k++) {
		aLI[k].className = aLI[k].className.replace('li-selected', '');	
	}

} /* unselectUL() */
