var urlKoodza = 'http://fr.decathlon.com/';
var mapPrixKoodza = new Map ;
var nbModeleKoodzaToLoad = 0 ;

/*
 * KoodzaInfoBean class
 */
function KoodzaInfoBean(urlKoodzaFile, idModeleDecath, isDisplayedPrice, toLoad) {
        this.loaded = false;
        this.loading = false;        
        this.src = urlKoodzaFile ;
        this.idModeleDecath = idModeleDecath ;
        this.idModele;
        this.finURL;
        this.prxVntTTC;
        this.devise;
        this.fraisPort;
        this.delaiLivraison;
        this.accroche;
        this.ecoTaxe;
        this.isDisplayedPrice = isDisplayedPrice ;
        if(toLoad){
            loadKoodzaInfo(this);
        }
}

/*
* Fonction qui permet d'afficher le resultat HTML
*/
KoodzaInfoBean.prototype.displayInfo = function(_idModel) {
    
    if (this.loaded && this.isDisplayedPrice) {
        var blocKoodza = getElement("bloc-koodza"+_idModel, true, "") ;

        if(blocKoodza){
            var prixKoodza = "" ;
            if(typeof _isFromProduct != "undefined" && _isFromProduct){ //boolean _isFromProduct declare dans la page HTML : concerne page mes favoris et fiche produit
                prixKoodza = this.getPrice() ;
                if(this.getPriceEco() != ""){
                    prixKoodza = prixKoodza + "<div class='deee' id='zone-ecotaxe-koodza"+_idModel+"'>"+this.getPriceEco()+"</div>" ;
                }
                setHtml("prixKoodza"+_idModel, prixKoodza) ;
                
                //on va mettre le liage sur le lien decathlon.com
                var blocTexteAchat = getElement("txtAchatKoodza"+_idModel) ;
                var elts = blocTexteAchat.getElementsByTagName("A");
                var prix=this.getPrice();
                function taggage(){
                         var tagCountry = "/"+_language+"/" ;
                         var splitPrix=prix.split(',');
                         if(splitPrix.length==1)splitPrix=prix.split('.');
                         var entier=splitPrix[0];
                         var decimal=splitPrix[1];
                         var devise="";
                         if(entier.indexOf('&nbsp;')>-1){
                             entier =entier.split("&nbsp;");
                         }else{
                             entier =entier.split(" ");
                         }
                         
                         if(entier.length==1){
                             entier=entier[0];
                         }else{
                             entier=entier[1];
                             devise=entier[0];
                         }
                          if(decimal.indexOf('&nbsp;')>-1){
                             decimal =decimal.split("&nbsp;");
                         }else{
                             decimal =decimal.split(" ");
                         }                    
                          if(decimal.length>1){
                             devise=decimal[1];
                         }
                         decimal=decimal[0];
                         var tag = tagCountry + tagLink + "shop_txt_"+_idModel+"_"+entier+"_"+decimal+"_"+devise ;      
                            for(i=0;i<listeIdGa.split('#').length;i++){                                
                               doLinkTag(tag,i);
                            }
                         }
                for(var i=0 ; i<elts.length ; i++){
                    var elt = elts[i];
                    if(elt && elt.href && elt.href != ''){
                        var anchor = elt ;
                        if(_IdNetAffiliation!=""){
                            elt.href = "http://action.metaffiliation.com/suivi.php?mclic="+_IdNetAffiliation+"&redir="+this.getUrlKoodza() ;
                        }else{
                            elt.href=this.getUrlKoodza() ;
                        }
                         elt.target = "_blank" ;
                         elt.onclick=taggage;
                    }
                }
                displayBloc(getElement("bloc-koodza"+_idModel, true, "")) ;                
            }
            else{
                prixKoodza = "<br/><span class='slash-separation'>/ &nbsp;</span>"+_libDecathCom+"<br/>"+
                    "<span class='slash-separation'>/ &nbsp;</span>"+this.getPrice() +"<span class='liv'>"+this.getPriceFrais()+"</span>" ;
                
                if(this.getPriceEco() != ""){
                    prixKoodza = prixKoodza + "<br/><span class='slash-separation'>/ &nbsp;</span>"+"<span class='deee' id='zone-ecotaxe-koodza"+_idModel+"'>"+this.getPriceEco()+"</span>" ;
                }
                setHtml("bloc-koodza"+_idModel, prixKoodza) ;
                displayBloc(getElement("bloc-koodza"+_idModel, true, "")) ;
            }
        }
    }
}

/*
* Fonction qui permet de recuperer le prix koodza formate
*/
KoodzaInfoBean.prototype.getUrlKoodza = function () {
    if(this.loaded) {
        if(this.finURL){
            var url = urlKoodza + this.finURL + "?T1=" + _tagTracageKoodzaT1 +"&T2=" + _tagTracageKoodzaT2 ;
            return url ;
        }
        else{
            return "" ;
        }
    }
    else{
        return "" ;
    }
}

/*
* Fonction qui permet de recuperer le prix koodza formate
*/
KoodzaInfoBean.prototype.getPrice = function () {
    if(this.loaded) {
        if(this.prxVntTTC && this.devise){
            var priceToDisplay = formatPrice(this.prxVntTTC, this.devise) ;
            return priceToDisplay ;
        }
        else{
            return "" ;
        }
    }
    else{
        return "" ;
    }
}

/*
* Fonction qui permet de recuperer les prix koodza ecotaxe et frais de port
*/
KoodzaInfoBean.prototype.getPriceEco = function () {
    if(this.loaded) {
        var priceToDisplay = "" ;
        var priceEcoTaxe = "" ;
        if(this.ecoTaxe && this.ecoTaxe != 0){
            priceEcoTaxe = formatPrice(this.ecoTaxe, this.devise) ;
            priceToDisplay = priceToDisplay + libelleEcotaxe.replace("__ECOTAXE__", priceEcoTaxe) + "&nbsp;" ;
        }
        
        return priceToDisplay ;
    }
}

/*
* Fonction qui permet de recuperer les prix koodza ecotaxe et frais de port
*/
KoodzaInfoBean.prototype.getPriceFrais = function () {
    if(this.loaded) {
        var priceToDisplay = "" ;
        var priceFraisPort = "" ;
        if(this.fraisPort){
            priceFraisPort = formatPrice(this.fraisPort, this.devise) ;
            priceToDisplay = priceToDisplay + libelleFraisPort.replace("__FRAIS__", priceFraisPort) ;
        }
        
        return priceToDisplay ;
    }
}

function formatPrice(price, devise){
    var priceToDisplay = "" ;
    var pricePart = price.split(".") ;
    var intPart = pricePart[0] ;
    var decimalPart = "00" ;                
    priceToDisplay = intPart ;
    if(pricePart[1]){
        decimalPart = pricePart[1] ;
        if(decimalPart.length == 1){
            decimalPart = decimalPart + "0" ;
        }        
    }
    
    return priceToDisplay = priceToDisplay + "," + decimalPart  + "&nbsp;" + devise ;
}

// Fonction qui construit notre objet IAjaxProcess pour pouvoir recuperer pour un modele les infos specifiques de koodza
function loadKoodzaInfo(koodzaInfoBean) {
    var xhr = getXhr();
    xhr.onreadystatechange = function(){
        if(xhr.readyState == 4 && xhr.status == 200){
            responseAjax = xhr.responseXML ;
            loadKoodzaObj(responseAjax, koodzaInfoBean) ;
        }
        else{
            var blocKoodza = document.getElementById("bloc-koodza"+koodzaInfoBean.idModeleDecath) ;
            hideBloc(blocKoodza) ;
        }
    }
    xhr.open("GET", koodzaInfoBean.src, true);
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xhr.send(null);
}

/** #########################################
* Permet de charger l'objet Koodza
*/    
function loadKoodzaObj(xmlDoc, koodzaInfoBean){
    if(xmlDoc && koodzaInfoBean){
        var produitTag = xmlDoc.getElementsByTagName("produit")[0] ;
        for (i=0; i<produitTag.childNodes.length; i++){
            if (produitTag.childNodes[i].nodeName=="idModele"){
                koodzaInfoBean.idModele = produitTag.childNodes[i].firstChild.nodeValue ;
            }
            if (produitTag.childNodes[i].nodeName=="finURL"){
                koodzaInfoBean.finURL = produitTag.childNodes[i].firstChild.nodeValue ;
            }
            if (produitTag.childNodes[i].nodeName=="prxVntTTC"){
                koodzaInfoBean.prxVntTTC = produitTag.childNodes[i].firstChild.nodeValue ;
            }
            if (produitTag.childNodes[i].nodeName=="ecoTaxe"){
                koodzaInfoBean.ecoTaxe = produitTag.childNodes[i].firstChild.nodeValue ;
            }
            if (produitTag.childNodes[i].nodeName=="devise"){
                koodzaInfoBean.devise = produitTag.childNodes[i].firstChild.nodeValue ;
            }
            if (produitTag.childNodes[i].nodeName=="fraisPort"){
                koodzaInfoBean.fraisPort = produitTag.childNodes[i].firstChild.nodeValue ;
            }
            if (produitTag.childNodes[i].nodeName=="delaiLivraison"){
                koodzaInfoBean.delaiLivraison = produitTag.childNodes[i].firstChild.nodeValue ;
            }
            if (produitTag.childNodes[i].nodeName=="accroche"){
                koodzaInfoBean.accroche = produitTag.childNodes[i].firstChild.nodeValue ;
            }
            if(!koodzaInfoBean.loaded){
                koodzaInfoBean.loaded = true ;
            }
        }
        if(koodzaInfoBean.isDisplayedPrice){
            koodzaInfoBean.displayInfo(koodzaInfoBean.idModeleDecath) ;
        }
        else{            
            mapPrixKoodza.put(koodzaInfoBean.idModeleDecath, koodzaInfoBean) ;
        }
    }
}


function displayPage(listeRefModele){
    for(var k=0 ; k<listeRefModele.length() ; k++){
        var ref = listeRefModele.get(k) ;
        var koodzaBean = mapPrixKoodza.get(ref) ;
        if(koodzaBean){
            var prixKoodza = getPrixKoodza(koodzaBean.idModeleDecath, _language) ;
            setHtml("bloc-koodza"+koodzaBean.idModeleDecath, prixKoodza) ;
        }
    }
}

/** #########################################
* Permet de charger tous les objets Koodza
*/    
function loadKoodzaInfoBean(urlXMLKoodza, ref, listeRefModele){        
    var url = urlXMLKoodza + ref + ".xml" ;
    var koodzaBean = new KoodzaInfoBean(url, ref, false, false) ;
    
    var func = function loadKoodzaInfo(xmlHttp, httpstatus){
        if(httpstatus == 200){
            oXmlDoc = xmlHttp.responseXML ;
            if( oXmlDoc == null) {
                return;
            } 
            else {
                try{
                    loadKoodzaObj(oXmlDoc, koodzaBean) ;
                    displayPage(listeRefModele) ;
                }
                catch(e){
                    displayPage(listeRefModele) ;
                }
            }
        }
        else{            
            nbModeleKoodzaToLoad = nbModeleKoodzaToLoad - 1 ;
        }
    }
    var ajaxProc = new IAjaxProcess(koodzaBean.src, func) ;
    ajaxProc.run() ;
    
    return true ;
}

/** #########################################
* Permet de charger tous les objets Koodza
*/    
function loadKoodzaInfoBeans(urlXMLKoodza, listeRefModele){
    nbModeleKoodzaToLoad = listeRefModele.length() ;
    for(var k=0 ; k<listeRefModele.length() ; k++){
        //Appeler la fonction ajax autant de fois qu'il y a des produits a comparer
        var modele = listeRefModele.get(k) ;
        
        if(modele){
            loadKoodzaInfoBean(urlXMLKoodza, modele, listeRefModele) ;
        }
    }
}



/** #########################################
* Permet de recuperer le prix Koodza du produit
*/
function getPrixKoodza(refModele, pays){    
    var prix = "" ;
    
    if(mapPrixKoodza.get(refModele)){
        var koodzaBean = mapPrixKoodza.get(refModele) ;
        prix = "<a href='"+koodzaBean.getUrlKoodza()+"' target='_blank'><img src='/"+pays+"/images/static/080311-int-logo-decath-com.gif' align='absmiddle'></a>&nbsp;"+
            "<div class='prix'>"+koodzaBean.getPrice() + "<span class='liv'>"+koodzaBean.getPriceFrais()+"</span></div>" ;
        
        if(koodzaBean.getPriceEco() != ""){
            prix = prix + "<div class='deee' id='zone-ecotaxe-koodza"+refModele+"'>"+koodzaBean.getPriceEco()+"</div>" ;
        }
    }
    return prix ;
}
