/* Parametres globaux */
var isAllSwitchError = false ;

var SWITCH_ACTIVATION_DEEE = "DEEE" ;
var SWITCH_ACTIVATION_DEEE_KOODZA = "DEEE_KOODZA" ;
var SWITCH_ACTIVATION_MDR = "ACTIVATION_MDR" ;
var SWITCH_ACTIVATION_MDR_SAISIE_PREDICTIVE = "SAISIE_PREDICTIVE" ;
var SWITCH_ACTIVATION_DOCUMENTS_ASSOCIES = "DOCUMENTS_ASSOCIES" ;
var SWITCH_ACTIVATION_VOCAL = "ACTIVATION_VOCAL" ;
var SWITCH_ACTIVATION_KOODZA = "KOODZA" ;
var SWITCH_ACTIVATION_PRIX = "ACTIVATION_PRIX_CENTRAL" ;
var SWITCH_ACTIVATION_ARBO_MULTI = "ARBO_MULTICRITERES" ;
var SWITCH_ACTIVATION_OXYLANE_PROFIL = "OXYLANE" ;
var SWITCH_ACTIVATION_OXYLANE_AVIS = "AVIS" ;
var SWITCH_ACTIVATION_OXYLANE_PLUS_BT = "OFFRES" ;
var SWITCH_ACTIVATION_OXYLANE_PLUS_ONGLET = "OFFRES" ;
var SWITCH_ACTIVATION_LIAGE_DKT ="ACTIVATION_LIAGE_DKT";

var isErrorErepSwtich = false ;

var isDeactivationOxylaneProfil = false ;
var isDeactivationOxylaneService = false ;
var isDeactivationOxylaneAvis = false ;

var isDeactivationPrixCom = false ;

var isFromOtherCounrty = false ;
var isMdr=false;
var _idModel = "" ; //le code modele du produit
var _globalKind1= -1;
var serviceIdSwitch = "" ;
/**
 * Permet de recuperer le switch et de faire le traitement lie a ce switch
 * @param :
 *    - httpStatus : le statut HTTP apres l'appel ajax
 * @desc :
 *    - pour chaque switch, on va recuperer l'objet et faire le traitement d'affichage ou d'activation lie a ce switch
*/
var POST_LOAD_SWITCH_FUNCTION = function postSwitchService(httpStatus){
    if(httpStatus == "200"){
    
        var listeSwitch=getMySwitches(serviceIdSwitch)
        if(listeSwitch == null || listeSwitch.length == 0){
            isErrorErepSwtich = true ;
        }        
       
       /* if(SWITCH_ARRAY == null || SWITCH_ARRAY.length == 0){
            isErrorErepSwtich = true ;
        }*/

        if(!isErrorErepSwtich){
            //Si le client a choisit un pays autre que FR, on ne va pas activer les switchs Oxylane et le prix Koodza
            //Pour cela, on va tester l'existence du cookie                
            var valueCookieCountry = getCookie("country") ;
            if(valueCookieCountry){
                if(valueCookieCountry != "FR"){
                    isFromOtherCounrty = true ;
                }
            }
                
            var isMultiSwitchesChecked = false ;
            var isFromModelPage = false ;
            if(thisModelList != ""){
                isMultiSwitchesChecked = true ;
                
                if(thisModelList.length() == 1 && !isMdr){
                    isFromModelPage = true ;
                }
            }
            
            for(var i=0 ; i<switchNameOrArray.length ; i++){
                var switchName = switchNameOrArray[i] ;
                
                //1- Traitement des switchs prix
               //traitement de plusieurs blocs
                    if(isMultiSwitchesChecked){                
                        for(var k=0 ; k<thisModelList.length() ; k++){
                            var model = thisModelList.get(k) ;
                            
                            if(model){
                                if(switchName == SWITCH_ACTIVATION_PRIX)
                                 checkSwitch(switchName, kind, number, subNumber, null, "bloc-decathlon"+model, true) ;               
                                
                                 if(switchName == SWITCH_ACTIVATION_DEEE)
                                 checkSwitch(switchName, kind, number, subNumber, _language, "zone-ecotaxe-decath"+model, false) ;                    
                                
                                 if(switchName == SWITCH_ACTIVATION_DEEE_KOODZA)
                                checkSwitch(switchName, kind, number, subNumber, _language, "zone-ecotaxe-koodza"+model, false) ;
                                
                                if(switchName == SWITCH_ACTIVATION_LIAGE_DKT)
                                checkSwitchLiage(switchName, kind, number, subNumber, _language, "txtAchatDecath"+model, false,model) ;
                                           
                                 if(switchName == SWITCH_ACTIVATION_KOODZA){
                                        _idModel=model;                                 
                                    checkSwitch(switchName, kind, number, subNumber, _language, "bloc-koodza"+model, true) ;      
                                }
                                
                                if(!isFromOtherCounrty){                                 
                                    if(switchName == SWITCH_ACTIVATION_OXYLANE_AVIS){
                                        checkSwitch(switchName, kind, number, subNumber, _language,"mdr-avis"+model, isFromModelPage) ;
                                        checkSwitch(switchName, kind, number, subNumber, _language,"oxylaneAvisPleinPage", isFromModelPage) ;        
                                    }
                                }
                            }
                        }
                    }
                    else{//traitement d'un bloc
                        if(switchName == SWITCH_ACTIVATION_PRIX)
                        checkSwitch(switchName, kind, number, subNumber, null, "bloc-decathlon", true) ;                
                        
                         if(switchName == SWITCH_ACTIVATION_DEEE)
                        checkSwitch(switchName, kind, number, subNumber, _language, "zone-ecotaxe-decath", false) ;                    
                        
                         if(switchName == SWITCH_ACTIVATION_DEEE_KOODZA)
                        checkSwitch(switchName, kind, number, subNumber, _language, "zone-ecotaxe-koodza", false) ;
                                    
                         if(switchName == SWITCH_ACTIVATION_KOODZA)
                        checkSwitch(switchName, kind, number, subNumber, _language, "bloc-koodza", true) ;                
                        
                                                
                        if(!isFromOtherCounrty){                                 
                                    if(switchName == SWITCH_ACTIVATION_OXYLANE_AVIS){
                                        checkSwitch(switchName, kind, number, subNumber, _language,"oxylaneAvisPleinPage", isFromModelPage) ;
                                    }
                                }
                    }
                //2- Traitement des autres switchs
                if(switchName == SWITCH_ACTIVATION_MDR)    
                checkSwitch(switchName, kind, number, subNumber, null, "mdr", false) ;                    
                
                  if(switchName == SWITCH_ACTIVATION_MDR_SAISIE_PREDICTIVE)       
                 checkSwitchRecherchePredictive(switchName, kind, number, subNumber, null, "mdrech_form", false) ;                    
                
                 if(switchName == SWITCH_ACTIVATION_DOCUMENTS_ASSOCIES)      
                checkSwitch(switchName, kind, number, subNumber, null, "doc-associes", false) ;                    
                
                 if(switchName == SWITCH_ACTIVATION_ARBO_MULTI)      
                checkSwitch(switchName, kind, number, subNumber, null, "encartgaucheint-arbo", false) ;                    
                
                
                if(!isFromOtherCounrty){
                    if(switchName == SWITCH_ACTIVATION_OXYLANE_PROFIL)
                checkSwitchOxylane(switchName, kind, number, subNumber, _language, isFromModelPage) ;
               
                 if(switchName == SWITCH_ACTIVATION_OXYLANE_AVIS)
                checkSwitchOxylane(switchName, kind, number, subNumber, _language, isFromModelPage) ;
                               
                 if(switchName == SWITCH_ACTIVATION_OXYLANE_PLUS_ONGLET)
                checkSwitchOxylane(switchName, kind, number, subNumber, _language, isFromModelPage) ;
                    
                }
                else{
                    isDeactivationOxylaneProfil = true ;
                    isDeactivationOxylaneAvis = true ;
                    isDeactivationOxylaneService = true ;
                }
                
                //on verifie si tous les switchs prix ont ete desactive pour desactive le bloc koodza
                if(isDeactivationPrixCom){
                    //on va cacher le bloc koodza
                    var eltBlocKoodza = getElement("bloc-koodza"+model, true, "") ;
                    if(eltBlocKoodza){
                        hideBloc(eltBlocKoodza) ;                        
                    }
                }
            }
            
            //on verifie si tous les switchs oxylane ont ete desactive pour desactive le bloc oxylane club de la fiche produit
            if(isDeactivationOxylaneProfil && isDeactivationOxylaneAvis && isDeactivationOxylaneService){           
                var divOxyClubElement1 = getElement("ongletOxylaneAvis", true, "") ;
                var divOxyClubElement2 = getElement("ongletOxylaneService", true, "") ;
                var divOxyClubElement3 = getElement("oxylaneRecapAvis", true, "") ;
                if(divOxyClubElement1){
                    hideBloc(divOxyClubElement1) ;
                }
                if(divOxyClubElement2){
                    hideBloc(divOxyClubElement2) ;
                }
                if(divOxyClubElement3){
                    hideBloc(divOxyClubElement3) ;
                }
            }
        }
        else{
            isAllSwitchError = true ;    
            setSwitchesErrorStatus(switchNameOrArray) ;
        }
    }
    else{
        isAllSwitchError = true ;    
        setSwitchesErrorStatus(switchNameOrArray) ;
    }
    
    //en cas d'erreur sur le switch prix decath et prix koodza, on va cacher le bloc vente
    if(isAllSwitchError){
        if(parent.document.getElementById("bloc-vente")){
            parent.document.getElementById("bloc-vente").style.display = "none" ;
        }
    }
}

/**
 * Permet de dasactiver toutes les zones associaes a tous les switches en cas d'erreur, par ex: http status = 404
 * @param :
 *    - switchNameArray : le tableau contenant tous les switches a traiter
 * @desc :
 *    - va servir a desactiver toutes les zones associees aux switches, cad DEEE, DEEE koodza, PRIX Decathlon, PRIX Koodza, LIAGE
*/
function setSwitchesErrorStatus(switchNameArray){
     for(var i=0 ; i<switchNameArray.length ; i++){
        var switchName = switchNameArray[i] ;
        setSwitchErrorStatus(switchName) ;
    }
}

/**
 * Permet de desactiver les zones associees au switch en cas d'erreur
 * @param :
 *    - switchName : le nom du switch
 * @desc :
 *    - va servir a desactiver les zones DEEE, DEEE koodza, PRIX Decathlon, PRIX Koodza, LIAGE si un pb est detecte sur le switch associe
*/
function setSwitchErrorStatus(switchName){
    if(switchName == SWITCH_ACTIVATION_PRIX){
        disableElementSwitch("bloc-decathlon") ;
    }
    if(switchName == SWITCH_ACTIVATION_DEEE){
        disableElementSwitch("zone-ecotaxe-decath") ;
    }
    if(switchName == SWITCH_ACTIVATION_DEEE_KOODZA){
        disableElementSwitch("zone-ecotaxe-koodza") ;
    }
    if(switchName == SWITCH_ACTIVATION_KOODZA){
        disableElementSwitch("bloc-koodza") ;
    }
    if(switchName == SWITCH_ACTIVATION_VOCAL){
        disableElementSwitch("bloc-vocalisation") ;
    }
    if(switchName == SWITCH_ACTIVATION_MDR){
        disableElementSwitch("mdr") ;
    }    
    if(switchName == SWITCH_ACTIVATION_DOCUMENTS_ASSOCIES){
        disableElementSwitch("doc-associes") ;
    }
    if(switchName == SWITCH_ACTIVATION_ARBO_MULTI){
        disableElementSwitch("encartgaucheint-arbo") ;
    }
}

/**
 * Permet de traiter les elements associer au switchs
 * @param :
 *    - switchName : le nom du switch
 *    - kind : le type de tiers a traiter : THIRD_KIND_SITE
 *    - number : l'identifiant du site
 *    - subNumber : l'identifiant du site
 *    - language : la langue du switch (p vide)
 *    - divObjName : l'identifiant du bloc associe au switch
 *    - checkErrorStatus : true/false : permet de gerer ou non les erreurs
*/
function checkSwitch(switchName, kind, number, subNumber, language, divObjName, checkErrorStatus){    
    var divElement = document.getElementById(divObjName) ;

    if(divElement){
        var oSwitch = getMySwitch(serviceIdSwitch,switchName,kind, number, subNumber,language);
       
        var activationSwitch=false;
        if(oSwitch){
            activationSwitch = oSwitch.isEnabled() ;
        }
        if(checkErrorStatus){
            isAllSwitchError = false ;
        }
        if(!activationSwitch){
            divElement.style.display = "none" ;
            
            if(switchName == SWITCH_ACTIVATION_KOODZA){
                isDeactivationPrixCom = true ;
            }
        }
        else{
            //on va gere l'affichage du bloc koodza selon que le prix existe ou pas
            if(switchName == SWITCH_ACTIVATION_KOODZA){
                if(!isFromOtherCounrty){
                    var urlKoodzaFile = urlXMLKoodza + _idModel + ".xml" ;
                    var koodza = new KoodzaInfoBean(urlKoodzaFile, _idModel, true, true) ;
                }
                else{
                    isDeactivationPrixCom = true ;
                }
            }
            else{
                divElement.style.display = "block" ;
                
            }
        }
    }
    else{
        if(checkErrorStatus){
            isAllSwitchError = true ;
        }
        setSwitchErrorStatus(switchName) ;
    }
}

/**
 * Permet de traiter les elements associer au switchs Oxylane
 * @param :
 *    - switchName : le nom du switch
 *    - kind : le type de tiers a traiter : THIRD_KIND_SITE
 *    - number : l'identifiant du site
 *    - subNumber : l'identifiant du site
 *    - language : la langue du switch (pe vide)
*/
function checkSwitchOxylane(switchName, kind, number, subNumber, language, isFromModelPage){
    var oSwitch = getMySwitch(serviceIdSwitch,switchName,kind, number, subNumber,language);
      
      var activationSwitch=false;
        if(oSwitch){
            activationSwitch = oSwitch.isEnabled() ;
        }
    
    if(activationSwitch){
        if(switchName == SWITCH_ACTIVATION_OXYLANE_PROFIL){
            if(isFromModelPage){
                loadProfil(activationSwitch) ;
            }
        }
        else if(switchName == SWITCH_ACTIVATION_OXYLANE_AVIS){
             if(isFromModelPage){
                loadAvis(activationSwitch);                
            }
        }        
        else if(switchName == SWITCH_ACTIVATION_OXYLANE_PLUS_ONGLET){
            if(isFromModelPage){
                loadOxylaneServices(activationSwitch);
            }
            /*else{ // on commente cette zone car sur strenfit on affiche oxylane que sur les fiches pdts
                loadBoutonOxylane(activationSwitch);
            }*/
        }
    }
}


/**
 * Permet de cacher les blocs correspondant a un switch
 * @param :
 *    - divElement : l'id de l'element a cacher
*/
function disableElementSwitch(divElement){

    var divElementObj = document.getElementById(divElement) ;
    
    if(divElementObj){
        divElementObj.style.display = "none" ;
    }
}

/**
 * Permet de verifier les switches utiliser pour la vente (prix decath+prix koodza)
 * @param :
 *    - _switchNameArray : le tableau contenant les switches a checker
 *    - _client : ITOOL
 *    - _kind1 : le type de tiers a traiter : THIRD_KIND_SITE
 *    - _number1 : l'identifiant du site
 *    - _subNumber1 : l'identifiant du site
 *    - _kind2 : ""
 *    - _number2 : ""
 *    - _subNumber2 : ""
 * @desc :
 *    - appelle la methode loadSwitches
*/
function checkSwitches(_switchNameArray, _client, _kind1, _number1, _subNumber1, _kind2, _number2, _subNumber2, _modelList){
    loadSwitches(_switchNameArray, _client, _kind1, _number1, _subNumber1, _kind2, _number2, _subNumber2, POST_LOAD_SWITCH_FUNCTION, _modelList) ;
}

/**
 * Permet de charger tous les switchs et de lancer le tratement post appel Ajax
 * @param :
 *    - _switchNameArray : le tableau contenant les switches a checker
 *    - _client : ITOOL
 *    - _kind1 : le type de tiers a traiter : THIRD_KIND_SITE
 *    - _number1 : l'identifiant du site
 *    - _subNumber1 : l'identifiant du site
 *    - _kind2 : ""
 *    - _number2 : ""
 *    - _subNumber2 : ""
 *    - _localfunc : la fontion post ajax a appeler : par ex, POST_LOAD_SWITCH_VENTE_FUNCTION
 * @desc :
 *    - recupere le serveur erep, initialise ce serveur et charge tous les switches
*/
function loadSwitches(_switchNameOrArray, _client, _kind1, _number1, _subNumber1, _kind2, _number2, _subNumber2, _localfunc, _modelList) {
    switchNameOrArray = _switchNameOrArray ; //va servir a la fonction post ajax    
    kind = _kind1 ; //va servir a la fonction post ajax
    number = _number1 ; //va servir a la fonction post ajax
    subNumber = _subNumber1 ; //va servir a la fonction post ajax    
    thisModelList = _modelList //va servir a la fonction post ajax    
    
    if(parent.document.getElementById("resultats-mdr")){
        isMdr=true;
    }
    _urlErep = getUrlErep(_SERVICE_SWITCH, _client, _kind1, _number1, _subNumber1, _kind2, _number2, _subNumber2, _localfunc) ; //recupere le serveur eRep
    var oContext = new JoServiceContext(_urlErep, _language, _siteNumber, _centralNumber, _storeNumber);
    
    
    if(_urlErep && _urlErep != ""){          
         setModeContextSwitch(oContext, CONTEXT_MODE_SWITCH,  _kind1, _number1, _subNumber1, _kind2, _number2, _subNumber2);
        serviceIdSwitch = executeService(oContext, _localfunc);
    } else{
        setSwitchesErrorStatus(switchNameOrArray) ;     
        if(parent.document.getElementById("bloc-vente")){
            parent.document.getElementById("bloc-vente").style.display = "none" ;
        }
    }
}


/**
 * Permet de traiter les elements associer au switch de la recherche predictive
 * @param :
 *    - switchName : le nom du switch
 *    - kind : le type de tiers a traiter : THIRD_KIND_SITE
 *    - number : l'identifiant du site
 *    - subNumber : l'identifiant du site
 *    - language : la langue du switch (pe vide)
 *    - divObjName : l'identifiant du bloc associe au switch
 *    - checkErrorStatus : true/false : permet de gerer ou non les erreurs
*/
function checkSwitchRecherchePredictive(switchName, kind, number, subNumber, language, divObjName, checkErrorStatus){    
    var divElement = getElement(divObjName, true, "") ;
    var oSwitch = getMySwitch(serviceIdSwitch,switchName,kind, number, subNumber,language);
    
    
    if(divElement){
        var activationSwitch = false ;
        if(oSwitch && oSwitch.isEnabled()){
            activationSwitch = oSwitch.isEnabled() ;
        }
        else{
            activationSwitch = false ;
        }
        
        if(checkErrorStatus){
            isAllSwitchError = false ;
        }
        
        /*si le switch est actif on autorise l'appele  la fonction de la recherche predictive*/
        if(activationSwitch){
            divElement.onkeyup = function() {
                searchSuggest(document.getElementById('searchForm' )); 
             }
        }
    }
}

/**
 * Permet de traiter les elements associer au switch du liage dkt
 * @param :
 *    - switchName : le nom du switch
 *    - kind : le type de tiers a traiter : THIRD_KIND_SITE
 *    - number : l'identifiant du site
 *    - subNumber : l'identifiant du site
 *    - language : la langue du switch (pe vide)
 *    - divObjName : l'identifiant du bloc associe au switch
 *    - checkErrorStatus : true/false : permet de gerer ou non les erreurs
*/
function checkSwitchLiage(switchName, kind, number, subNumber, language, divObjName, checkErrorStatus,refModel){    
    var divElement = getElement(divObjName, true, "") ;
    var oSwitch = getMySwitch(serviceIdSwitch,switchName,kind, number, subNumber,language);
    
    
    if(divElement){
        var activationSwitch = false ;
        if(oSwitch && oSwitch.isEnabled()){
            activationSwitch = oSwitch.isEnabled() ;
        }
        else{
            activationSwitch = false ;
        }
        
        if(checkErrorStatus){
            isAllSwitchError = false ;
        }
        
        /*si le switch est actif on autorise l'appele  la fonction de la recherche predictive*/
        if(!activationSwitch && language=="FR" ){
            var elts = divElement.getElementsByTagName("A");
            for(var i=0 ; i<elts.length ; i++){
                var elt = elts[i];
                if(elt && elt.href && elt.href != ''){
                    elt.href = "" ;
                    elt.target = "_self" ;
                }
            }
        }
    }
}
