/**
* FICHIER JS pour la gestion de la mise en avant des produits
* author : KIG
* version : 1.0
* date : 20070504
* historique :
*    => [KIG] 20070504 : Cration
*/

var contenuDecouvrirPlus = "" ; //Le contenu html qui contiendra les produit  decouvrir
var contenuScript = "" ;
var nbProduitAAfficher = 3 ;
var nbProduitVraimentAAfficher = 3 ;
var verifVC=false;
var indexGa=0;

/** #########################################
* Permet de recuperer le sous rayon passes a l'url
*/
function getSousRayon() {
    arrayUrl = new Array();
    arrayUrl = parent.document.location.href.split('/');
    //arrayUrl[7] correspond au sous rayon.
    if(arrayUrl[7]){
        return arrayUrl[7] ;
    }
}

/** #########################################
* Permet de recuprer la famille passes a l'url
*/
function getFamilleCourante() {
    arrayUrl = new Array();
    arrayUrl = parent.document.location.href.split('/');
    //arrayUrl[8] correspond a la famille
    if(arrayUrl[8]){
        return arrayUrl[8] ;
    }
}

/** #########################################
* Permet de recuperer la reference du produit
*/
function getIndexProduit() {
    arrayUrl = new Array();
    arrayUrl = parent.document.location.href.split('/');
    //arrayUrl[9] correspond au produit
    if(arrayUrl[9]){
        var productLabel = arrayUrl[9] ;
        productLabel = productLabel.split("_") ;
        if(productLabel[1]){
            return productLabel[1] ;
        }
        else{
            return "0" ;
        }
    }    
}

/** #########################################
* Permet de choisir au hasard une famille
*/
function randomizeFamille(nbTotalFamille){
   var randomNumber = Math.ceil(Math.random()*nbTotalFamille) ;
   return randomNumber ;
}

/** #########################################
* Permet de choisir au hasard un produit
*/           
function randomizeProduct(nbProduit){
   var randomProductId = Math.ceil(Math.random()*nbProduit) ;   
   
   return randomProductId ;               
} 
            
/** #########################################
* Permet de generer la zone "Decouvrir plus"
*/                      
function getDecouvrirPlus(langue, sousRayon, referenceProduit, labelDecouvrez, nbFamilleSousRayon, arrayParamFamille,urlFamille,urlRayon){
    //Recuperation des ventes complementaires associees aux differents niveaux
     var urlVcToCheck = new Array() ;
    urlVcToCheck[0] = document.location.href ;
    urlVcToCheck[1] = urlFamille ;
    urlVcToCheck[2] = urlRayon;
    _indexUrlToCheck = 0 ;
    if(document.getElementById("produits-associes")){
        getVc(urlVcToCheck, langue, sousRayon, referenceProduit, labelDecouvrez, nbFamilleSousRayon, arrayParamFamille) ; //la VC par itool est desactive
    }
   /* var randomIdFamille = 0 ;
    
    //Pour chaque famille, on va recuperer le lien vers le depth.html de la famille
   //pour pouvoir recuperer un produit
   for(var i=0 ; i<arrayParamFamille.length() ; i++){
       var currentFamilleObj = arrayParamFamille.get(i)  ;

       if(currentFamilleObj != ""){
           var currentUrlFamille = currentFamilleObj.getUrl() ;

           //Recupration d'un modele de cette famille
           getAutreModele(langue, referenceProduit, currentUrlFamille, nbFamilleSousRayon, labelDecouvrez) ;
       }
   }*/
}

/** #########################################
* Permet de setter la VC ou de chercher la VC suivante
*/     
var POST_LOAD_VC_FUNCTION = function postGetVc(xmlHttp, httpStatus){
    //Si une VC repond, on va afficher l'iframe dans la bloc produit concerne 
    if(httpStatus == "200"){
        //Url de la VC qui a repondu
        
       var urlVc = _urlVcToCheck[_indexUrlToCheck];
       
       if(xmlHttp.responseText.indexOf('<body id="vc-body"')==-1){
             _indexUrlToCheck++ ;
            getVc(_urlVcToCheck, _langue, _sousRayon, _referenceProduit, _labelDecouvrez, _nbFamilleSousRayon, _arrayParamFamille) ;
        }else{
             var iframeVc = "<iframe id='iframe-vc' name='iframe-vc' src='"+urlVc+"VC.html?refProduit="+_referenceProduit+"' scrolling='no' frameborder='0'></iframe>" ;
            setHtml("bloc-vc", iframeVc) ;
        }
    }
    //Sinon on va chercher la VC au niveau superieur
    else{
        _indexUrlToCheck++ ;
        getVc(_urlVcToCheck, _langue, _sousRayon, _referenceProduit, _labelDecouvrez, _nbFamilleSousRayon, _arrayParamFamille) ;        
    }
}

/** #########################################
* Permet de recuperer les VC
*/     
function getVc(urlVcToCheck, langue, sousRayon, referenceProduit, labelDecouvrez, nbFamilleSousRayon, arrayParamFamille){
    _urlVcToCheck = urlVcToCheck ;
    _langue = langue ;
    _sousRayon = sousRayon ; 
    _referenceProduit = referenceProduit ;
    _labelDecouvrez = labelDecouvrez ;
    _nbFamilleSousRayon = nbFamilleSousRayon ;
    _arrayParamFamille = arrayParamFamille ; 
    
    //Pour tous les niveaux (rayon, famille, produit) on va verifier si une VC y est associer
    if(_indexUrlToCheck < _urlVcToCheck.length){
        var urlVc = _urlVcToCheck[_indexUrlToCheck] ;
        if(urlVc && urlVc != ""){
             urlVc = urlVc + "VC.html"
            var oProcess = new IAjaxProcess(urlVc, POST_LOAD_VC_FUNCTION);
            oProcess.run();             
        }
    }
    //sinon on va recuperer la VC propre au marque
    else{    
        var randomIdFamille = 0 ;
        
        //Pour chaque famille, on va recuperer le lien vers le depth.html de la famille
       //pour pouvoir recuperer un produit
       for(var i=0 ; i<arrayParamFamille.length() ; i++){
           var currentFamilleObj = arrayParamFamille.get(i)  ;
    
           if(currentFamilleObj != ""){
               var currentUrlFamille = currentFamilleObj.getUrl() ;
    
               //Recupration d'un modele de cette famille
               getAutreModele(langue, referenceProduit, currentUrlFamille, nbFamilleSousRayon, labelDecouvrez) ;
           }
       }
   }
}


/** #########################################
* Permet de recuperer un autre modele  afficher dans "Decouvrez egalement"
* params :
*    => indexFamille : l'index de la famille a traiter
*    => urlFamille : l'url de la famille a traiter
*    => currentModele : le modele courant de la page
*    => familleModele : le nom R3 de la famille a traiter
*    => maxFamille : le nombre de famille trouvee
*/
function getAutreModele(langue, referenceProduit, urlFamille, maxFamille, labelDecouvrez) {
    var urlCeProduit = document.location.href ;
    urlFamille = langue+urlFamille + "depth.html" ; //Recuperation de l'url depth.html
   
    var POST_LOAD_CONTENT_DEC_FUNC = function postILoadContentDecouvrir(xhr, httpstatus){        
    
        if(httpstatus == 200){
            var propertiesDivObjSr = document.getElementById("bloc-vc"); //le div qui va contenir les produits a mettre en avant
            
            var responseAjax = xhr.responseText ;
            var isPhotoNonDispo = "false" ;
            var aucunProduitAAffiche = "false" ;
            
            //Le bloc html qui contient tous les produits de la famille actuellement analyse
            var contenuDepthProduit = responseAjax.split('<div class="produits" id="produits" style="display:none;">')[1] ;            
                
             
            if(contenuDepthProduit){
                var informationsProduit = contenuDepthProduit.split('<li ') ; //on va recuperer le flux html de chaque produit dans un tableau
                var produitPossibleFamille = new Array ; //va contenir les produits possibles de la famille a mettre en avant

                //traitement sur la reponse ajax pour pouvoir recuperer l'url, le nom et l'image des produits possibles a mettre en avant
                if(informationsProduit.length > 1){
                    var indexProduitPossibleFamille = 0 ;
                    
                    for(var p=1 ; p<informationsProduit.length ; p++){
                        var currentInformationsProduit = informationsProduit[p] ;
                        
                        if(currentInformationsProduit){
                            var infoProduit = currentInformationsProduit.split('</li>')[0] ;
                            
                            if(currentInformationsProduit.split('id="vignetteproduit-')[1]){
                                var refProduit = currentInformationsProduit.split('id="vignetteproduit-')[1].split('"')[0] ;
                                var libelleProduit = infoProduit.split('<dt class="titre">')[1].split('">')[1].split("</a>")[0] ; //lien du produit avec le libelle                    
                                var imageProduit = infoProduit.split('<dt class="visuel">')[1].split('src="')[1].split('"')[0] ; //lien du produit avec l'image
                                var urlProduit = infoProduit.split('<a')[1].split('href="')[1].split('"')[0] ; //lien du produit avec l'image
                                var coloramaProduit = infoProduit.split('<dt class="stitre">')[1].split("</dt>")[0] ; //lien du produit avec la couleur
                                var blocinfoplus = infoProduit.split('<div class="infoproduit" id="infoproduit'+refProduit+'" ')[1].split("</h4></div></div>")[0] //permet de recuperer le bloc info plus
                              
                                var funcVC = setLinkTag(tagProduit+"cross_selling#indexGa","");                       
                                
                                if(imageProduit != ''){
                                    if(imageProduit.indexOf("mh-asset") > 0){                                
                                        isPhotoNonDispo = "false" ;
                                    }
                                    else if(imageProduit.indexOf("photo-non-dispo") > 0){
                                        isPhotoNonDispo = "true" ;
                                    }
                                    
                                   imageProduit = '<a href="'+urlProduit+'" onmouseout="hideddrivetip(\'vignetteproduitimg'+refProduit+'\');" onmouseover="ddrivetip2(this, \'infoproduit'+refProduit+'\', \'transparent\', \'270\', \'430\',\'vignetteproduitimg'+refProduit+'\');" onclick="'+funcVC+'">'+
                                    '<img src="' + imageProduit + '"/>' +'</a>';
                                    
                                    libelleProduit = '<a href="'+urlProduit+'" onclick="'+funcVC+'">'+ libelleProduit +'</a>';
                                    
                                    
                                    if(isPhotoNonDispo == "false"){
                                        var blocProduit = refProduit + "__" + 
                                            "<dl>"+
                                                "<dt class='visuel' id='vignetteproduitimg"+refProduit+"'>"+imageProduit+"</dt>"+
                                                "<dt class='titre'>"+libelleProduit+"</dt>" +
                                                "<dt class='stitre'>"+coloramaProduit+"</dt>" ;
                                               
                                        if(blocinfoplus){
                                            blocProduit = blocProduit + 
                                                "<div class='infoproduit' id='infoproduit"+refProduit+"'" + blocinfoplus + "</h4></div></div>" ;
                                        }
                                        produitPossibleFamille[indexProduitPossibleFamille] = blocProduit + "</dl>";
        
                                        indexProduitPossibleFamille++;
                                    }
                                }
                            }
                        }
                    }
                    
                    //On recupere pour la famille selectionne, la liste des produits potentiellement affichable
                    //Pour chacun de ces produits on en prend un au hasard et on le met dans la liste final a proposer a l'internaute                       
                    if(produitPossibleFamille){
                        //************** 1- Cas particulier d'une seule famille
                        if(maxFamille == 1){
                            var produitDejaSelect = "" ;
                            var nbProduitSelect = 0 ;
                            var nbProduitToDisplay = nbProduitAAfficher ; //Par defaut, le nb de produit a afficher est de 4
                            if(produitPossibleFamille.length <= nbProduitAAfficher){ //On recalcule donc pour determiner si il ne faut pas en afficher moins car la famille peut contenir moins de 4 produits
                                nbProduitToDisplay = produitPossibleFamille.length - 1 ; //on enleve un produit qui correspond au produit courant
                            }
                            
                            if(nbProduitToDisplay > 0){ //Si la famille possede au moins un produit, on va afficher au maxi 4 produits a mettre en avant
                                while(nbProduitSelect != nbProduitToDisplay){ //Tant que le nb de produit trouve est inferieur au nb de produit a afficher on continue de chercher des produits
                                    var randomIdProduct = randomizeProduct(produitPossibleFamille.length) ; //on determine un produt au hasard dans cette famille mais dont l'index doit etre different du produit courant
                                    if(produitDejaSelect.indexOf(randomIdProduct) == -1){ //Si c ok et que le produit n'a pas encore ete choisi, on va former le contenu html et le fichier script pour le js price
                                        produitDejaSelect = produitDejaSelect + ";" + randomIdProduct ;
                                        
                                        var blocProduit = produitPossibleFamille[randomIdProduct-1] ;
                                        if(blocProduit){
                                            if(blocProduit.indexOf(urlCeProduit) == -1){ //Si le produit scanne est different du produit vue actuellement par l'internaute
                                                var nomModele = blocProduit.split("__")[0] ;
                                                var blocProduitHtml = blocProduit.split("__")[1] ;
                                                modelesADecouvrir = modelesADecouvrir + nomModele + ";" ;
                                                if(nomModele!=referenceProduit){modelList.add(nomModele);
                                                nbProduitSelect++;
                                                indexGa++;
                                                var  reg=new  RegExp("#indexGa", "g");
                                                contenuDecouvrirPlus = contenuDecouvrirPlus +
                                                    "<li id='decouvrirplus"+nomModele+"'>" +
                                                    blocProduitHtml.replace(reg,indexGa)+
                                                    "</li>" ;
                                                    }
                                           }
                                        }
                                    }
                                }
                            }
                            else{ //Si la famille ne contient qu'un seul produit, ne pas afficher de mise en avant
                                contenuDecouvrirPlus = contenuDecouvrirPlus +
                                    "<li></li>" ;
                                aucunProduitAAffiche = "true" ;  
                                
                            }
                        }
                        //************** 2- Cas particulier, si le nb de famille est inferieur ou egale a 4  
                        else if(maxFamille <= nbProduitVraimentAAfficher){                                                         
                            
                                var randomIdProduct = randomizeProduct(produitPossibleFamille.length) ;
                                var blocProduit = produitPossibleFamille[randomIdProduct-1] ;
                                if(blocProduit){
                                    if(blocProduit.indexOf(urlCeProduit) == -1){ //Si le produit scanne est different du produit vue actuellement par l'internaute
                                        var nomModele = blocProduit.split("__")[0] ;
                                        var blocProduitHtml = blocProduit.split("__")[1] ;
                                        modelesADecouvrir = modelesADecouvrir + nomModele + ";" ;
                                        if(nomModele!=referenceProduit){modelList.add(nomModele);
                                        indexGa++;
                                        var  reg=new  RegExp("#indexGa", "g");
                                        contenuDecouvrirPlus = contenuDecouvrirPlus +
                                            "<li id='decouvrirplus"+nomModele+"'>" +
                                            blocProduitHtml.replace(reg,indexGa)+
                                            "</li>" ;
                                            }
                                    }
                                }
                        }
                        //************** 3- Cas particulier, si le nb de famille est strictement superieur a 4  
                        else{
                            var randomIdProduct = randomizeProduct(produitPossibleFamille.length) ;
                            if(randomIdProduct){
                                var blocProduit = produitPossibleFamille[randomIdProduct-1] ;
                                if(blocProduit){
                                    if(blocProduit.indexOf(urlCeProduit) == -1){ //Si le produit scanne est different du produit vue actuellement par l'internaute
                                        var nomModele = blocProduit.split("__")[0] ;
                                        var blocProduitHtml = blocProduit.split("__")[1] ;
                                        modelesADecouvrir = modelesADecouvrir + nomModele + ";" ;
                                        if(nomModele!=referenceProduit){modelList.add(nomModele);
                                        indexGa++;
                                        var  reg=new  RegExp("#indexGa", "g");
                                        contenuDecouvrirPlus = contenuDecouvrirPlus +
                                            "<li id='decouvrirplus"+nomModele+"'>" + 
                                            blocProduitHtml.replace(reg,indexGa)+
                                            "</li>" ;
                                            }
                                    }
                                }
                            }
                        }                                    
                    }    

                    //Traitement des id modele pour supprimer les doublons
                    var arrayModelesADecouvrirTmp = modelesADecouvrir.split(";") ;
                    if(maxFamille < nbProduitVraimentAAfficher || (maxFamille >= nbProduitVraimentAAfficher && arrayModelesADecouvrirTmp.length == nbProduitAAfficher+1)){
                        if(contenuDecouvrirPlus && contenuDecouvrirPlus != ''){
                            if(aucunProduitAAffiche == "false"){
                                theInnerHTML = "<ul>" + contenuDecouvrirPlus+"</ul>"  ;                        
                            }
                            else{
                                theInnerHTML = contenuDecouvrirPlus  ;
                                document.getElementById("produits-associes").style.display = "none" ;
                            }
                            if(propertiesDivObjSr){
                                propertiesDivObjSr.innerHTML = theInnerHTML ;
                                verifVC=true;
                                getModels(_client, _siteNumber, _centralNumber);
                                
                                displayProduct(referenceProduit, arrayModelesADecouvrirTmp) ;
                            } else{
                                document.getElementById("produits-associes").style.display = "none" ;
                            }
                        }
                        else{
                            theInnerHTML = contenuDecouvrirPlus  ;
                            document.getElementById("produits-associes").style.display = "none" ;
                        }
                    }
                }
            }
            if(verifVC){
                document.getElementById("produits-associes").style.display = "block" ;
            }else{
                document.getElementById("produits-associes").style.display = "none" ;
            }
        }else{
            document.getElementById("produits-associes").style.display = "none" ;
        }
    }
    
    var ajaxProc = new IAjaxProcess(urlFamille, POST_LOAD_CONTENT_DEC_FUNC) ;
    ajaxProc.run() ;
}


/** #########################################
* Permet d'afficher les produits
* params :
*    => referenceProduitCourant : la reference du modele courant
*    => arrayModelesADecouvrir : la liste des modeles a decouvrir
*/
function displayProduct(referenceProduitCourant, arrayModelesADecouvrir){
    var nbProduitTrouve = 0 ;

    //on va verifier si il ne faut pas cacher le produit
    for(var q=0 ; q<arrayModelesADecouvrir.length ; q++){
        if(arrayModelesADecouvrir[q]){                 
            var modeleCourant = arrayModelesADecouvrir[q] ;

            if(modeleCourant != referenceProduitCourant){
                if(arrayModelesADecouvrir.length >= nbProduitVraimentAAfficher){                    
                    if(nbProduitTrouve < nbProduitVraimentAAfficher && document.getElementById("decouvrirplus"+modeleCourant)){
                        document.getElementById("decouvrirplus"+modeleCourant).style.display = "block" ;
                        nbProduitTrouve++ ;
                    }
                    else{
                        if(document.getElementById("decouvrirplus"+modeleCourant)){
                            document.getElementById("decouvrirplus"+modeleCourant).style.display = "none" ;
                        }
                    }
                }
                else{
                    if(document.getElementById("decouvrirplus"+modeleCourant)){
                        document.getElementById("decouvrirplus"+modeleCourant).style.display = "block" ;
                    }                        
                }
            }
            else{
                if(document.getElementById("decouvrirplus"+modeleCourant)){
                    document.getElementById("decouvrirplus"+modeleCourant).style.display = "none" ;
                }
            }
        }
    }  
}
