var nbrLigParPage=10;  // Nombre maximum de produits par page
var nbrLigForIncrementPage=10; // Nombre de produits a partir duquel on incremente le numero de page
var triMarque=false; // permet de savoir si le tri par marque a t actionne (au cas o on ferait un autre tri aprs).
var nbProduitNonMarque=0; //dans le cas ou un tri par marque a ete actionne, permet de savoir le nombre de produit  dont la marque n est pas celle selectionnee
var ongletActif=1; // 1ere page selectionnee
var nbProductChecked=0;
var refPrdHero = '';

/********************************************************************************************************************************************************/
/*Fonction permettant de savoir combien de pages doivent etre affichees*/
function ordonancementOnglet(){
var nLig = 1;    //Nombre de ligne
nPage = 1;   //Nombre de pages
    for(var y=0; y<(tabPrd.length-nbProduitNonMarque); y++){
        if (nLig > nbrLigForIncrementPage){
            nPage++;
            nLig=2;           
        }
        else {
            nLig++;            
        }
    } 
}
/************************************************************************************************************************************************************************/
/*Fonction permettant d'afficher le nombre de pages et  le lien afficher tous les produits (si le nombre de produit>nombre de produits max autorise par page) */
function creationDivPage(){
    var stringARetourner ="";
    var stringARetournerHaut="";
    var stringARetournerBas="";
    var vlibPage=libPage;
    var myOnclickPagiTop;
    var myOnclickPagiBottom;
    var myOnclickAllTop;
    var myOnclickAllTop;
    var n;
    
    if (nPage>1) vlibPage=libPages;
    
    // Liste des pages
    stringARetourner =  "<div class=\"liste-pages\"><span class=\"txt\">"+vlibPage+"</span>";
    
    stringARetournerHaut =stringARetourner;
    stringARetournerBas =stringARetourner
    
    for (n=1; n<=nPage; n++) {
        myOnclickPagiTop = "nbrLigParPage=10;choixOngletFamille("+n+");";
        myOnclickPagiBottom = myOnclickPagiTop;

        // Tag
        if (typeof webAnaWT != 'undefined') {
            if (webAnaWT == 'true') {
                myOnclickPagiTop += "dcsMultiTrack('DCS.dcsuri','/link/family_pagination_top/', 'WT.ti', 'Family%20Pagination%20Top');";
                myOnclickPagiBottom += "dcsMultiTrack('DCS.dcsuri','/link/family_pagination_bottom/', 'WT.ti', 'Family%20Pagination%20Bottom');";
            }
        }
        if (typeof webAnaGA != 'undefined') {
            if (webAnaGA == 'true') {
                myOnclickPagiTop += "pageTracker._trackPageview('/link/family_pagination_top/');";
                myOnclickPagiBottom += "pageTracker._trackPageview('/link/family_pagination_bottom/');";
            }
        }
        if (typeof webAnaXT != 'undefined') {
            if (webAnaXT == 'true') {
                myOnclickPagiTop += "xt_med('C','', 'family_pagination_top','N');";
                myOnclickPagiBottom += "xt_med('C','', 'family_pagination_bottom','N');";
            }
        }
        
        stringARetournerHaut += "<a href=\"#\" id=\"ongletHaut_"+n+"\" onclick=\""+myOnclickPagiTop+"\"";
        if (n == 1) stringARetournerHaut += "class=\"active\"";
        stringARetournerHaut += ">"+n+"</a>";
        
        stringARetournerBas += "<a href=\"#\" id=\"ongletBas_"+n+"\" onclick=\""+myOnclickPagiBottom+"\""
        if (n == 1) stringARetournerBas += "class=\"active\"";
        stringARetournerBas += ">"+n+"</a>";
    }
    
    stringARetournerHaut +="</div>";
    stringARetournerBas +="</div>";
  
    // Lien tout sur une page
    if (nPage>1){
        myOnclickAllTop = "ProduitsUnePage();";
        myOnclickAllBottom = myOnclickAllTop;

        // Tag
        if (typeof webAnaWT != 'undefined') {
            if (webAnaWT == 'true') {
                myOnclickAllTop += "dcsMultiTrack('DCS.dcsuri','/link/family_showall_top/', 'WT.ti', 'Family%20Show%20All%20Top');";
                myOnclickAllBottom+= "dcsMultiTrack('DCS.dcsuri','/link/family_showall_bottom/', 'WT.ti', 'Family%20Show%20All%20Bottom');";
            }
        }
        if (typeof webAnaGA != 'undefined') {
            if (webAnaGA == 'true') {
                myOnclickAllTop += "pageTracker._trackPageview('/link/family_showall_top/');";
                myOnclickAllBottom+= "pageTracker._trackPageview('/link/family_showall_bottom/');";
            }
        }
        if (typeof webAnaXT != 'undefined') {
            if (webAnaXT == 'true') {
                myOnclickAllTop += "xt_med('C','', 'family_showall_top','N');";
                myOnclickAllBottom+= "xt_med('C','', 'family_showall_bottom','N');";
            }
        }

        stringARetournerHaut +="<div class=\"afficher-produits\"><a href=\"#\" class=\"afficher\" id=\"afficher-produits\"  onclick=\""+myOnclickAllTop+"\">"+afficherLes+" "+(tabPrd.length-nbProduitNonMarque)+" "+surPage+"</a></div>";
        stringARetournerBas +="<div class=\"afficher-produits\"><a href=\"#\" class=\"afficher\" id=\"afficher-produits\"  onclick=\""+myOnclickAllBottom+"\">"+afficherLes+" "+(tabPrd.length-nbProduitNonMarque)+" "+surPage+"</a></div>";
    }
    
    setBlocByHtml("hautPage",stringARetournerHaut);
    setBlocByHtml("basPage",stringARetournerBas);
}
/**************************************************************************************************************************************************************/
/*Fonction permettant d'afficher les produits de la page selectionnee, en fonction du tri choisi.
Si pas de tri choisi alors on prend l ordre itool
*/
function choixOngletFamille( n ){
    var afficherTout = false;
    if(n == 0){
        afficherTout = true;
        n = 1;
    }

    /* Depot du cookie retenant la page courante */    
    // Url de la page courante sans # a la fin
     var urlCurrentPage = document.location.href;
    if (urlCurrentPage.indexOf('#')!=-1) {
            urlCurrentPage = urlCurrentPage.substring(0, urlCurrentPage.indexOf('#'));
     }      
     // Id magasin du cookie
     if (cookieMagasin!=null) var idMagCookie=idMagasin;
     else idMagCookie='';
         
    // Cas 10 produits par page : n=page courante, nPage=nombre total de page, idMagCookie=num du magasin du cookie si connecte, vide sinon   
    if (nbrLigParPage==10) {     
        setCookie('pagination',n+'_'+nPage+'_'+urlCurrentPage+'_'+idMagCookie, null, '/');        
    }
    // Cas 1000 produits par page (afficher tous les produits sur 1 page)
    else if (nbrLigParPage==1000){
        setCookie('pagination','allproducts_'+urlCurrentPage+'_'+idMagCookie, null, '/');        
    }
    
    var contenuAffiche="";
    var auMoinsUnProduit=false;
    //On cache  tous les blocs des produits 
    for (nb=0; nb<tabPrd.length; nb++){    
        hideBloc(tabPrd[nb][0]);   
    }
    //on active seulement les blocs produits pouvant etre affiches
    //1 ligne sur 2  est de couleur differente 
    //Les produits bleus ont un style particulier
    //i < (tabPrd.length-nbProduitNonMarque) : car on  affiche que les produits de la marque selectionnee. si pas de marques selectionnee on ne fait aucune restriction
    for (i = (n-1)*nbrLigParPage; i < (tabPrd.length-nbProduitNonMarque) && i < n*nbrLigParPage; i++) {
          auMoinsUnProduit=true // il y aura au moins un produit sur ma page
            Lemodele =  tabPrd[i][0].substring(tabPrd[i][0].indexOf("_")+1,tabPrd[i][0].length);
            if(getBlocHtml("marque_" + Lemodele) == 'APTONIA' && multiLangCatNameRayon == "optical") hideBloc('marque_'+Lemodele);
            // temporaire : les produits Tribord sous le rayon natation changent de marque pour Nabaiji
            if(getBlocHtml("marque_" + Lemodele) == 'TRIBORD' && multiLangCatNameRayon == "swimming") setBlocByHtml('marque_'+Lemodele,'NABAIJI');
            showBloc(tabPrd[i][0]);
            if (i%2==1)
                changeBlocClass("color_"+Lemodele, "item-produit ligne-couleur2");    
            else
                changeBlocClass("color_"+Lemodele, "item-produit ligne-couleur1");   
            if (tabPrd[i][1]==1){
                changeBlocClass("bleuBloc_"+Lemodele, "produits-bleu-img");
                changeBlocClass("bleu_"+Lemodele, " produits-bleu");
                changeBlocClass("marque_"+Lemodele, " marquePB");    
                changeBlocClass("description_"+Lemodele, " descriptionPB");    
                changeBlocClass("produit_"+Lemodele, " produitPB");    
                changeBlocClass("disponibilite_"+Lemodele, " disponibilitePB");  
                changeBlocClass("disponibilite_"+Lemodele, " disponibilitePB");  
                changeBlocClass("prixFamille_"+Lemodele, " prixPB");  
                changeBlocClass("devise_"+Lemodele, "devisePB");  
                changeBlocClass("lib-prix_"+Lemodele, "lib-prixPB");  
                changeBlocClass("apartirde_"+Lemodele, "apartirdePB");  
                changeBlocClass("prixKgLitre_"+Lemodele, "prixKgLitrePB");  
                
               if (tabPrd[i][3]==1){
                    var st=   '<span class="fdc">'+finDeColl+'</span>';                                      
                    setBlocByHtml("FinDeCollecBloc_"+Lemodele, st);
                    changeBlocClass("FinDeCollecBloc_"+Lemodele, " produits-fdc-imgPB"); 
                }
            }
              else if (tabPrd[i][3]==1){
                   var st=   '<span class="fdc">'+finDeColl+'</span>';                                      
                setBlocByHtml("FinDeCollecBloc_"+Lemodele, st);
                changeBlocClass("FinDeCollecBloc_"+Lemodele, "produits-fdc-img"); 
            }

            var prix = parseInt(getBlocHtml("prixEntier_"+Lemodele) + '.' + getBlocHtml("prixDecimal_"+Lemodele));
            if(prix > 400 && getSwitchSite('ALSOLIA')){
                var img = createElement_img("","","../images/static/alsolia-famille.gif",logoAlsolia,"","",document.getElementById('picto-alsolia-famille_'+Lemodele));
                img.title = logoAlsolia;
                showBloc('picto-alsolia-famille_'+Lemodele);
                document.getElementById('description_' + Lemodele).className += ' picto-alsolia';
            }
    }
  
    //On additionne l ensemble des blocs pouvant etre affiches       
    for (k=0; k<tabPrd.length; k++){       
        if (document.getElementById(tabPrd[k][0])) {           
            vleNumModele =  tabPrd[k][0].substring(tabPrd[k][0].indexOf("_")+1,tabPrd[k][0].length);             
            contenuAffiche+= "<div id=\"product-famille_"+vleNumModele+"\" style=\" display :"+ document.getElementById(tabPrd[k][0]).style.display+"\" >"+document.getElementById(tabPrd[k][0]).innerHTML+"</div>";      
       }
   }
    if (!auMoinsUnProduit) // il n y a pas de produits
        contenuAffiche+="<span class =\"aucunProduit\">"+noProduit+"</span>";
    setBlocByHtml("produitAffiche",contenuAffiche);
    /*changement de la couleur de l onglet de la page selectionnee*/
    changeBlocClass("ongletHaut_"+ongletActif,'');
    changeBlocClass("ongletBas_"+ongletActif,'');
    if(!afficherTout){
        ongletActif=n;
        changeBlocClass("ongletHaut_"+ongletActif,"active");
        changeBlocClass("ongletBas_"+ongletActif,"active"); 
    }
 }
/**************************************************************************************************************/	
/*Fonction permettant de trier les produits par prix  par ordre croissant ou decroissant
ce sont les booleens triCroissant et triDecroissant qui nous permettent de savoir ce qui doit etre fait*/
function triParPrix(localisation) {
    // Tag
    if (typeof webAnaWT != 'undefined') {
        if (webAnaWT == 'true') {
            if (typeof localisation != 'undefined') {
                if (localisation == 'haut') dcsMultiTrack('DCS.dcsuri','/link/family_sort_price_top/', 'WT.ti', 'Family%20Sort%20Price%20Top');
                else dcsMultiTrack('DCS.dcsuri','/link/family_sort_price_bottom/', 'WT.ti', 'Family%20Sort%20Price%20Bottom');
            }
        }
    }
    if (typeof webAnaGA != 'undefined') {
        if (webAnaGA == 'true') {
            if (typeof localisation != 'undefined') {
                if (localisation == 'haut') pageTracker._trackPageview('/link/family_sort_price_top/');
                else pageTracker._trackPageview('/link/family_sort_price_bottom/');
            }
        }
    }
    if (typeof webAnaXT != 'undefined') {
        if (webAnaXT == 'true') {
            if (typeof localisation != 'undefined') {
                if (localisation == 'haut') xt_med('C','', 'family_sort_price_top','N');
                else xt_med('C','', 'family_sort_price_bottom','N');
            }
        }
    }

    var tabPrdTemp = new Array; 
    //recuperation des prix des produits   
    for (k=0; k< tabPrd.length; k++){
        var leNumModele =  tabPrd[k][0].substring(tabPrd[k][0].indexOf("_")+1,tabPrd[k][0].length);           
         if(!triCroissant && !triDecroissant ||  !triDecroissant){        
            var entier=10000000; // car on veut mettre les produits sans prix a la fin 
            var dec=0;
        }   
        else{
             var entier=0; // car on veut mettre les produits sans prix a la fin
             var dec=0;
        }

        if(getBlocHtml("prixEntier_"+leNumModele))       entier=getBlocHtml("prixEntier_"+leNumModele);
       
       if (entier!=0 && entier!=10000000) entier=entier.replace(' ','');              
       dec=getBlocHtml("prixDecimal_"+leNumModele);     
        var prix=parseFloat(entier+'.'+dec);   
        tabPrdTemp[k]=new Array();
        tabPrdTemp[k][0]=prix;  
        tabPrdTemp[k][1]=  tabPrd[k][0];
        tabPrdTemp[k][2]=  tabPrd[k][1];
        tabPrdTemp[k][3]=  tabPrd[k][2];
        tabPrdTemp[k][4]=  tabPrd[k][3];
    }
    //tri par ordre croissant et mise a jour des images
    if(!triCroissant && !triDecroissant ||  !triDecroissant){
        tabPrdTemp.sort(TrierColCroissant);
        triDecroissant=true;
        triCroissant=false;
        changeBlocClass("hautFlecheTri","trier-selectionDecroissant" ); 
        changeBlocClass("basFlecheTri","trier-selectionDecroissant" ); 
    }
    //tri par ordre decroissant et mises a jour des images
    else{
        tabPrdTemp.sort(TrierColDecroissant);
        changeBlocClass("hautFlecheTri","trier-selectionCroissant" ); 
        changeBlocClass("basFlecheTri","trier-selectionCroissant" ); 
        triCroissant=true;
        triDecroissant=false;
    }
    // mise  jour du tableau des id des produits. on les classe dans l ordre du tri
    for (k=0; k< tabPrd.length; k++){
        tabPrd[k][0]=tabPrdTemp[k][1];
        tabPrd[k][1]=tabPrdTemp[k][2];
        tabPrd[k][2]=tabPrdTemp[k][3];
        tabPrd[k][3]=tabPrdTemp[k][4];
    }
    // au cas ou avant le tri par prix il y avait un tri par marque on refait le tri par marque
    if(triMarque)
        getMarqueSelection();
        
        
}

/******************************************************************************************************************************************************************/
/*Fonction de tri des prix par ordre croissant*/
function TrierColCroissant(x1,x2)
{ 
    return ( parseFloat(x1[0]) > parseFloat(x2[0]))? 1 : -1;
}

/**************************************************************************************************************************************************************/
/*Fonction de tri des prix par ordre decroissant*/
function TrierColDecroissant(x1,x2)
{ 
    return ( parseFloat(x1[0]) < parseFloat(x2[0]))? 1 : -1;
}

/***********************************************************************************************************************************************/
/*Fonction permettant d'afficher tous les produits sur une page*/
function ProduitsUnePage(){
        // Construction du onclick
        var myOnclickTop = "creationDivPage();nbrLigParPage=10;choixOngletFamille(1);";
        var myOnclickBottom = myOnclickTop;
        
        // Tag
        if (typeof webAnaWT != 'undefined') {
            if (webAnaWT == 'true') {
                myOnclickTop += "dcsMultiTrack('DCS.dcsuri','/link/family_showpage_top/', 'WT.ti', 'Family%20Show%20Page%20Top');";
                myOnclickBottom+= "dcsMultiTrack('DCS.dcsuri','/link/family_showpage_bottom/', 'WT.ti', 'Family%20Show%20Page%20Bottom');";
            }
        }
        if (typeof webAnaGA != 'undefined') {
            if (webAnaGA == 'true') {
                myOnclickTop += "pageTracker._trackPageview('/link/family_showpage_top/');";
                myOnclickBottom+= "pageTracker._trackPageview('/link/family_showpage_bottom/');";
            }
        }
        if (typeof webAnaXT != 'undefined') {
            if (webAnaXT == 'true') {
                myOnclickTop += "xt_med('C','', 'family_showpage_top','N');";
                myOnclickBottom+= "xt_med('C','', 'family_showpage_bottom','N');";
            }
        }

        // Creation de la chaine a afficher
        var stringAffStandardHaut = '<div class="afficher-produits"><a href="#" class="afficher" id="afficher-produits-haut"  onclick="'+myOnclickTop+'">'+afficherStandard+'</a></div>';
        var stringAffStandardBas = '<div class="afficher-produits"><a href="#" class="afficher" id="afficher-produits-bas"  onclick="'+myOnclickBottom+'">'+afficherStandard+'</a></div>';

        // Pagination
        nbrLigParPage=1000;  // on autorise 1000 produits par pages 
        choixOngletFamille(0);
    
        // Affichage
        setBlocByHtml("hautPage",stringAffStandardHaut);
        setBlocByHtml("basPage",stringAffStandardBas);
}

/*************************************************************************************************************************************************************************/
/*Fonction permettant de remplir la page  lors de son chargement initiale*/
function remplissagePage(){
    synchroItoolErep(); // Synchronisation des donnees entre erep et itool
    nbProduitNonMarque=0;   
    ordonancementOnglet();  // calcul du nombre de page a afficher      
    // cas ou le tri dans itool est par prix
    if (typeTri=='PRIX') {  
        triParPrix();          
        changeBlocClass("hautFlecheTri","trier-selectionDecroissant" ); 
        changeBlocClass("basFlecheTri","trier-selectionDecroissant" ); 
        triCroissant=true;
    }
    // cas ou le tri dans iTool est manuel
    else triParOrdreItool();    
    
    creationDivPage(); // creation du haut et bas de page              
    hideBloc("affWait"); // barre de chargement
    
    // Controle du cookie stockant la derniere page famille visitee en prenant en compte le numero de la page ou le afficher tous les produits et le cookie magasin
    checkCookiePagination();
            
    showBlocIfCookieFamille(cookieMagasin) //remplissage des infos dependant du cookie
    var dateVeille=getDateVeilleEnFonctionDuFormat(formatDate);
    setBlocByHtml("date",dateInfoLegale+" "+dateVeille+".");
}

/**********************************************************************************************************************************************************************/
/* Fonction permettant d afficher la page famille sur le bon numero de page ou sur afficher tous les produits (grace au cookie pagination)
en prenant en compte le magasin sur lequel on etait eventuellement connecte */
function checkCookiePagination() {
    // Test du cookie pagination
    var currentPageSaved = getCookie('pagination') ;   
    // Le cookie existe 
    if (currentPageSaved !=null) {
        // Url de la page courante sans # a la fin
        var urlCurrentPage = document.location.href;
        if (urlCurrentPage.indexOf('#')!=-1) {
            urlCurrentPage = urlCurrentPage.substring(0, urlCurrentPage.indexOf('#'));
        }      
        // Num mag du cookie courant si existe
        if (cookieMagasin!=null) var idCurrentMagCookie = idMagasin;
        else var idCurrentMagCookie = '';
        
        // Cas tous produits sur 1 page
        if(currentPageSaved.indexOf('allproducts_') > -1){
            var lastPageUrl = currentPageSaved.split('_')[1];
            var lastIdMagCookie = currentPageSaved.split('_')[2];            
            //  La page famille du cookie est la page sur laquelle on se trouve avec le meme num magasin du cookie si existe 
            // donc on affiche tous les produits sur 1 page
            if(lastPageUrl == urlCurrentPage && lastIdMagCookie==idCurrentMagCookie){  
                ProduitsUnePage();
                return false;
            }          
           //  La page famille du cookie n est pas la page sur laquelle on se trouve (ou pas le meme magasin sur lequel on est connecte) 
           // donc on sette un nouveau cookie
           else {     
                choixOngletFamille(1); // creation de la liste des produits a afficher   
           }
        }
        // Cas 10 produits par page
        else {           
            var lastPageUrl = currentPageSaved.split('_')[2] ;
            var lastIdMagCookie = currentPageSaved.split('_')[3];            
            // La page famille du cookie est la page sur laquelle on se trouve avec le meme num magasin du cookie si existe donc on affiche la bonne page          
            if(lastPageUrl == urlCurrentPage && lastIdMagCookie==idCurrentMagCookie){                      
                choixOngletFamille(currentPageSaved.split('_')[0]);// creation de la liste des produits a afficher
                nPage = currentPageSaved.split('_')[1] ;
            }
            //  La page famille du cookie n est pas la page sur laquelle on se trouve (ou pas le meme magasin sur lequel on est connecte) 
            // donc on sette un nouveau cookie
            else{	                
                choixOngletFamille(1); // creation de la liste des produits a afficher   
            }
        }
    }
    // Le cookie n existe pas : on en sette un nouveau
    else {      
        choixOngletFamille(1); // creation de la liste des produits a afficher   
    }
}
/**********************************************************************************************************************************************************************/
/*Fonction de tri par marque
attention il faut mettre a jour les 2 listboxs presentes dans la page
on rempli une matrice temporaire avec en tete les produits de la marque et en queue les autre produits*/
function getMarqueSelection(){

    /*Mise a jour des listbox et recuperation du libelle de la marque selectionnee*/
    if (listeMarquesHaut){
        var laMarque= document.getElementById("listeMarquesHaut").value;
        var indice=document.getElementById("listeMarquesHaut").selectedIndex;
        document.getElementById("listeMarquesBas").selectedIndex=indice;
        // Tag
        if (typeof webAnaWT != 'undefined') {
            if (webAnaWT == 'true') dcsMultiTrack('DCS.dcsuri','/link/family_filter_brand_top/', 'WT.ti', 'Family%20Filter%20Brand%20Top');
        }
        if (typeof webAnaGA != 'undefined') {
            if (webAnaGA == 'true') pageTracker._trackPageview('/link/family_filter_brand_top/');
        }
        if (typeof webAnaXT != 'undefined') {
            if (webAnaXT == 'true') xt_med('C','', 'family_filter_brand_top','N');
        }
    }
    if (listeMarquesBas){
        var laMarque= document.getElementById("listeMarquesBas").value;
        var indice=document.getElementById("listeMarquesBas").selectedIndex;
        document.getElementById("listeMarquesHaut").selectedIndex=indice;
        // Tag
        if (typeof webAnaWT != 'undefined') {
            if (webAnaWT == 'true') dcsMultiTrack('DCS.dcsuri','/link/family_filter_brand_bottom/', 'WT.ti', 'Family%20Filter%20Brand%20Bottom');
        }
        if (typeof webAnaGA != 'undefined') {
            if (webAnaGA == 'true') pageTracker._trackPageview('/link/family_filter_brand_bottom/');
        }
        if (typeof webAnaXT != 'undefined') {
            if (webAnaXT == 'true') xt_med('C','', 'family_filter_brand_bottom','N');
        }
    }
    
    //pas de marque selectionnee   
    if (laMarque==''){
        triMarque=false;
        nbProduitNonMarque=0;
        triCroissant=!triCroissant;
        triDecroissant=!triDecroissant;
        triParPrix();
    }
    else{
        triMarque=true;
        nbProduitNonMarque=0;
        var tabPrdTemp=new Array();
        var k=0; //indice pour parcourir la matrice des produits
        var i=0; // indice pour remplir la matrice temp pour les produits de la marque
        var j=1;  // utilise  pour remplir la matrice temp pour les autres produits indice=longeur du tableau-j
        var nLig = 1;    //Nombre de ligne        
        while (k< tabPrd.length){
             if(tabPrd[k][2]==laMarque){
                tabPrdTemp[i]=new Array();
                tabPrdTemp[i][0]=tabPrd[k][0];
                tabPrdTemp[i][1]=tabPrd[k][1];
                tabPrdTemp[i][2]=tabPrd[k][2];
                tabPrdTemp[i][3]=tabPrd[k][3];
                i++;
             }
             else{
                tabPrdTemp[ tabPrd.length-j]=new Array();
                tabPrdTemp[ tabPrd.length-j][0]=tabPrd[k][0];
                tabPrdTemp[ tabPrd.length-j][1]=tabPrd[k][1];
                tabPrdTemp[ tabPrd.length-j][2]=tabPrd[k][2];
                tabPrdTemp[ tabPrd.length-j][3]=tabPrd[k][3];
                j++;
             }
             k++;
      }  
      //reinitialisation du tableau des produits et remplissage avec toutes les infos dans l ordre souhaite
      tabPrd=new Array();
     for (nb=0; nb< tabPrdTemp.length; nb++){
            tabPrd[nb]=new Array();
            tabPrd[nb][0]=tabPrdTemp[nb][0];
            tabPrd[nb][1]=tabPrdTemp[nb][1];
            tabPrd[nb][2]=tabPrdTemp[nb][2];
            tabPrd[nb][3]=tabPrdTemp[nb][3];
         }
       nbProduitNonMarque=tabPrdTemp.length-i; // on stocke le nombre de produit n etant pas de la marque selectionnee
     }
    
    /*remplissage de la page*/
    ordonancementOnglet();
    creationDivPage(); 
    choixOngletFamille(1); 
}

/******************************************************************************************************************************************/
//Fonction permettant d afficher les produits heros
function getAffichageProduitHero(tab){
    if (tab.length>0){
            showBloc(tab[0]);
            refPrdHero = tab[0].substr(tab[0].indexOf('_') + 1);
            listeModelesItoolArray.remove(refPrdHero);
            if(getBlocHtml('disponibilite-hero_' + refPrdHero) == '') setBlocByHtml('disponibilite-hero_' + refPrdHero, libStock2);
    }
 }
/************************************************************************************************************************/
 //fonction permettant de lancer le controle des produits
function getComparatifProduit(localisation){

    // Tag
    if (typeof webAnaWT != 'undefined') {
        if (webAnaWT == 'true') {
            if (typeof localisation != 'undefined') {
                if (localisation == 'haut') dcsMultiTrack('DCS.dcsuri','/link/family_compare_top/', 'WT.ti', 'Family%20Compare%20Top');
                else dcsMultiTrack('DCS.dcsuri','/link/family_compare_bottom/', 'WT.ti', 'Family%20Compare%20Bottom');
            }
        }
    }
    if (typeof webAnaGA != 'undefined') {
        if (webAnaGA == 'true') {
            if (typeof localisation != 'undefined') {
                if (localisation == 'haut') pageTracker._trackPageview('/link/family_compare_top/');
                else pageTracker._trackPageview('/link/family_compare_bottom/');
            }
        }
    }
    if (typeof webAnaXT != 'undefined') {
        if (webAnaXT == 'true') {
            if (typeof localisation != 'undefined') {
                if (localisation == 'haut') xt_med('C','', 'family_compare_top','N');
                else xt_med('C','', 'family_compare_bottom','N');
            }
        }
    }

    produitsAComparer = document.getElementsByName('produitCompare') ;
    urlGdbc=urlGdbc.substring(0,urlGdbc.indexOf('=')+1); 
    nbProduitChecked = 0 ;
    for(i=0 ; i<produitsAComparer.length ; i++){
        if(produitsAComparer[i].checked){
            nbProduitChecked++ ;
            urlGdbc = urlGdbc + produitsAComparer[i].value + ";" ;
        }
    }

    if (nbProduitChecked > 4 || nbProduitChecked < 2) alert(gdbcSelection);
    else {
        var urlFamille =  document.location.href ;
        show_filter('filter');
        show_popup('comparatifSelection');
     
        return false;
    }

}
/**************************************************************************************************************/	
/*Fonction permettant de trier les produits selon l ordre Itool
La variable globale listeModelesItoolArray contient les ID de modeles selon l ordre Itool*/
function triParOrdreItool(){
    var tabPrdTemp = new Array;
    var refToFind = '';
    var myString = "";
    var nb = 0;
    
    //Parcours du tableau de reference Itool
    for (k=0; k< listeModelesItoolArray.length(); k++){
        refToFind = listeModelesItoolArray.get(k);
    
        //Parcours du tableau de donnees issu de eRep
        for (j=0; j< tabPrd.length; j++){
            myString = tabPrd[j][0];
            myString = myString.substring(16);
            if (myString == refToFind){
                tabPrdTemp[nb] = tabPrd[j];
                nb++;
            }
        }
        
    }

    if (tabPrdTemp.length > 0) tabPrd = tabPrdTemp;
}

/**************************************************************************************************************/	
/*Fonction permettant de synchroniser les donnees entre erep et itool pour que le tableau tabPrd ne contienne que les produits presents a la fois dans itool et erep (Intersection des deux tableaux)*/
function synchroItoolErep(){
    var tabPrdTemp = new Array;
    var refToFind = '';

    //Parcours du tableau de donnees issu de eRep
    for (var k=0; k< tabPrd.length; k++){
        refToFind = tabPrd[k][0].substr(tabPrd[k][0].indexOf('_') + 1);
        if (listeModelesItoolArray.contains(refToFind) != -1) tabPrdTemp.push(tabPrd[k]);
    }
    tabPrd = tabPrdTemp;
}

/**************************************************************************************************************/	
/* Fonction appellee dans le cas ou erep ne repond pas, elle permet d afficher tous les modeles presents dans itool */
function displayFamilyProducts(){
    for(var i=0;i<listeModelesItoolArray.length();i++){
        tabPrd[i] = new Array();
        tabPrd[i][0] = 'product-famille_'+listeModelesItoolArray.get(i);
        if(getBlocHtml('isProduitBleu_'+listeModelesItoolArray.get(i))=='') tabPrd[i][1] = 0;
        else tabPrd[i][1] = 1;
        tabPrd[i][2] = getBlocHtml('libelleMarque_'+listeModelesItoolArray.get(i));
        tabPrd[i][3] = 0;
        setBlocByHtml('disponibilite-famille_'+listeModelesItoolArray.get(i), libStock2);
    }
    typeTri = '';
    hideBloc("trier-prix");
    hideBloc("filtrer-prix");
    remplissagePage();
}

/**************************************************************************************************************/	
/* Fonction qui verifie les champs de filtre du prix avant de valider le formualire */
function valideFiltrePrix(){
    var min = document.forms["formFiltrerPrix"].min.value.replace(',','.');
    var max = document.forms["formFiltrerPrix"].max.value.replace(',','.');
    if(min != '') min = parseFloat(min.replace('/ /g',''));
    if(max != '') max = parseFloat(max.replace('/ /g',''));
    
    // Test de la valeur des deux champs
    if(min == '' && max == '' || isNaN(min) || isNaN(max) || min < 0 || (max != '' && min > max))
        showBloc('erreurFiltrePrix');
    else{
        var chMin = min.toString();
        var chMax = max.toString();
        // On arrondi a deux chiffres apres la virgule
        if(chMin.indexOf('.') != -1 && chMin.substring(chMin.indexOf('.') + 1,chMin.length).length > 2) min = min.toFixed(2);
        document.forms["formFiltrerPrix"].min.value = min;
        if(chMax.indexOf('.') != -1 && chMax.substring(chMax.indexOf('.') + 1,chMax.length).length > 2) max = max.toFixed(2);
        document.forms["formFiltrerPrix"].max.value = max;
        document.forms['formFiltrerPrix'].submit();
    }
}

/*##############################################################################################
########################### GDBC MANAGEMENT LIBRARY ########################################### 
/*############################################################################################## */
var gdbcItemsToShow = new ArrayList();  // Liste des produits passes en parametre de l url

/* Cree la page gdbc en y inserant les produits de la liste gdbcItemsToShow. Si aucun modele, tout est affiche */
function createGdbcProducts(){
    // Recuperation des id modeles passes par url qui seront a afficher. Si aucun modele, tout est affiche
    var gdbcQuery = window.location.search;
    gdbcQuery = gdbcQuery.split("=");
    if (gdbcQuery.length > 1) {
        if (gdbcQuery[1] != "") {
            gdbcQuery = gdbcQuery[1].split(";");
            for (var i = 0; i < gdbcQuery.length; i++) gdbcItemsToShow.add(gdbcQuery[i]);
            }
        }
        
    // Si aucune ref passee en url, on elargit la largeur de la fenetre d affichage pour ne pas casser la mise en page
    if (gdbcItemsToShow.length() < 1) {
        var oCont = document.getElementById("gdbc-conteneur");
        oCont.style.width = "5000px";
        oCont = document.getElementById("comparerproduits");
        oCont.style.width = "5000px";
    }
    
    // Construction de la liste HTML des modeles, sans les prix, base sur l objet gdbcModeles (alimente par Itool)
    gdbcShowBu(oGmodeles, gdbcItemsToShow);
}
    
/**
 * BU Object
  */
function gdbcBu(libelle, valeur, etoile, etoile_valeur, name_image1) {
    this.libelle = libelle;
    this.valeur = valeur;
    this.etoile = etoile;
    this.etoile_valeur = etoile_valeur;
    this.name_image1 = name_image1;
}

gdbcBu.prototype.getLibelle = function () {
    return this.libelle;
}

gdbcBu.prototype.getValeur = function () {
    return this.valeur;
}

gdbcBu.prototype.getEtoile = function () {
    return this.etoile;
}

gdbcBu.prototype.getEtoileValeur = function () {
    return this.etoile_valeur;
}

gdbcBu.prototype.getNameImage1 = function () {
    return this.name_image1;
}

/********************************************************************/
/**
 * Modele Object
  */
  
 /**
 * Object constructor
 * sId : commercial model ID
  */
function gdbcModele(sId) {
    this.sId = sId;
    this.aBu = new Array();
}

/**
 * Used to retrive model ID
 */
gdbcModele.prototype.getId = function () {
    return this.sId;
}

/**
 * Used to add model BU
 * oBU : BU to add (object)
  */
gdbcModele.prototype.addBu = function (oBu) {
    this.aBu.push(oBu);    
}

/**
 * Used to retrive specified BU by BU libelle
 * sBuLibelle : BU name
  */
gdbcModele.prototype.getBu = function (sBuLibelle) {
    for (var k = 0; k < this.aBu.length; k++) {
        if (this.aBu[k].getLibelle() == sBuLibelle) return this.aBu[k];
    }
    
    return -1;
}

/**
 * Used to retrive specified BU by index
 * sBuLibelle : BU name
  */
gdbcModele.prototype.getBuByIndex = function (iIndex) {
    if(this.aBu[iIndex]) return this.aBu[iIndex] ;    
    else return -1;
}

/**
 * Used to retrive number of BU
   */
gdbcModele.prototype.lengthBu = function () {
    return this.aBu.length;
}

/********************************************************************/
/**
 * Modeles Object
  */
  
 /**
 * Object constructor
 * sId : commercial model ID
  */
function gdbcModeles() {
    this.aModeles = new Array();
}

/**
 * Used to add model
 * oModele : Model to add (object)
  */
gdbcModeles.prototype.addModele = function (oModele) {
    this.aModeles.push(oModele);    
}

/**
 * Used to retrive model
 * iIndex : Index number in array
 */
gdbcModeles.prototype.getModeleByIndex = function (iIndex) {
    if (this.aModeles[iIndex]) return this.aModeles[iIndex];
    else return "";
}

/**
 * Used to retrive model
 * iModelId : model ID
 */
gdbcModeles.prototype.getModele = function (iModelId) {
    for (var i = 0; i < this.aModeles.length; i++) {
        var oMod = this.getModeleByIndex(i);
        if (oMod) {
            if (oMod.getId() == iModelId) return oMod;
        }
    }
    return "";
}

/**
 * Used to retrive number of models
 */
gdbcModeles.prototype.length = function () {
    return this.aModeles.length;    
}


/********************************************************************/
/**
 * This function is used to display modele s BU on GDBC popup
  */
function gdbcShowBu(oModelsBu, aItemsToShow) {
    var gdbcBuListe = new Array();

    // Construction de la liste des BU a afficher
    // Une liste de modeles est imposee : on recupere les BU qui ont des donnees pour au moins un des modeles de la liste
    if (aItemsToShow.length() > 0) {
        for (var i = 0; i < aItemsToShow.length(); i++) {
            var oMod = oModelsBu.getModele(aItemsToShow.get(i));
            if (oMod) gdbcBuListe = _gdbcCreateBuListe(oMod, gdbcBuListe);
        }    
    }
    else {
        // AUCUNE liste de modeles n est imposee : on recupere les BU qui ont des donnees pour au moins un des modeles
        for (var i = 0; i < oModelsBu.length(); i++) {
            var oMod = oModelsBu.getModeleByIndex(i);
            if (oMod) gdbcBuListe = _gdbcCreateBuListe(oMod, gdbcBuListe);
        }
    }

    // Parcours de tous les modeles dispos a la comparaison
    var blocBu = document.getElementById("modele_bu");
    var blocBuTitre = document.getElementById("modele_bu_titre");
    
    // Parcours de tous les modeles
    for (var i = 0; i < oModelsBu.length(); i++) {
        var modId = oModelsBu.getModeleByIndex(i).getId();
        
        oDivColMod = document.createElement('div');
        oDivColMod.id = "modele_bu_"+ modId;
        oDivColMod.className = "gdbc-colmodele";
        
        // Pour chacun des BU (liste complete), on affiche les donnees du modele
        for (var j = 0; j < gdbcBuListe.length; j++) {
       
            // Creation de la cellule contenant la BU
            oDivBu = document.createElement('div');
            oDivBu.className = "zonetexte gdbc-cellht2";
    
            // Recuperation des infos BU
            var oBu = oModelsBu.getModeleByIndex(i).getBu(gdbcBuListe[j]);
            if (oBu != -1) {
                // On a une BU, on affiche les infos
                // Image
                var sNameImage = oBu.getNameImage1();
                if (sNameImage) {
                    oImg = document.createElement('img');
                    oImg.src = gdbcImagesAssetsPath+"/"+sNameImage;
                    oImg.alt = oBu.getLibelle();
                    oDivBu.appendChild(oImg);
                }
                // Valeur du texte
                var sValeur = oBu.getValeur();
                if (sValeur) {
                    oVal = document.createTextNode(sValeur);
                    oDivBu.appendChild(oVal);
                }
                // Etoile
                var sEtoileVal = oBu.getEtoileValeur();
                if (sEtoileVal) {
                    oEtoile = document.createElement('img');
                    oEtoile.src = gdbcImagesStaticPath+"/etoiles/"+sEtoileVal+"-star.gif";
                    oEtoile.alt = oBu.getLibelle();
                    oEtoile.height = "15";
                    oEtoile.width = "75";
                    oDivBu.appendChild(oEtoile);
                }
            }
            else {
                // Pas de BU, creation d une cellule vide
                oTexteBu = document.createTextNode('');
                oDivBu.appendChild(oTexteBu);
            }
                
            // Ajout du BU dans la colonne du modele
            oDivColMod.appendChild(oDivBu);
                
            // Affichage du titre de la BU (premier modele uniquement)
            if (i < 1) {
                oDivCtitre = document.createElement('div');
                oDivCtitre.className = "gdbc-titreligne gdbc-cellht2 gdbc-cellborder";
                oSpanCtitre = document.createElement("span");
                var myTitle = gdbcBuListe[j];
                var myReg=new RegExp("/", "g");
                myTitle = myTitle.replace(myReg," / ");
                oTexteCtitre = document.createTextNode(myTitle);
                    
                oSpanCtitre.appendChild(oTexteCtitre);
                oDivCtitre.appendChild(oSpanCtitre);
                blocBuTitre.appendChild(oDivCtitre);
            }

        }

        // Ajout des donnes modele a la div du bloc
        blocBu.appendChild(oDivColMod);
    }

}

/********************************************************************/
/**
 * This function is used to create BU liste
 * _oMod : models list (obj gdbcModeles)
 * _aBuListe : array containing BU liste
  */
function _gdbcCreateBuListe(_oMod, _aBuListe) {
    for (var j = 0; j < _oMod.lengthBu(); j++) {
        var trouve = false;
        var oBu = _oMod.getBuByIndex(j);
        if (oBu != -1) {
            if (oBu.getValeur() != '' || oBu.getEtoileValeur() != '' || oBu.getNameImage1() != '') {
                for (var k = 0; k < _aBuListe.length; k++) if (_aBuListe[k] == oBu.getLibelle()) trouve = true;
                if (!trouve) _aBuListe.push(oBu.getLibelle());
            }
        }
    }

    return _aBuListe;
}