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 résultat HTML
*/
KoodzaInfoBean.prototype.displayInfo = function(_idModel) {
    
    if (this.loaded && this.isDisplayedPrice) {
        var blocKoodza = getElement("bloc-koodza"+_idModel, true, "") ;

        if(blocKoodza){
            var prixKoodza = "<div class='accrochevente'>"+_accrocheDecathCom+"</div><a href='"+this.getUrlKoodza()+"' target='_blank'><img src='/"+_language+"/images/static/080311-int-logo-decath-com.gif' align='absmiddle'></a>&nbsp;"+
            "<div class='prix'>"+this.getPrice() + "<span class='liv'>"+this.getPriceFrais()+"</span></div>" ;            
            
            if(this.getPriceEco() != ""){
                prixKoodza = prixKoodza + "<div class='deee' id='zone-ecotaxe-koodza"+_idModel+"'>"+this.getPriceEco()+"</div>" ;
            }
        
            setHtml("bloc-koodza"+_idModel, prixKoodza) ;            
        }
    }
}

/*
* Fonction qui permet de récupérer le prix koodza formaté
*/
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 récupérer le prix koodza formaté
*/
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 récupérer 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 récupérer 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 modèle les infos spécifiques de koodza
function loadKoodzaInfo(koodzaInfoBean) {
    var xhr = getXhr();
    xhr.onreadystatechange = function(){
        if(xhr.readyState == 4 && xhr.status == 200){
            responseAjax = xhr.responseXML ;
            loadKoodzaObj(responseAjax, koodzaInfoBean) ;
        }
    }
    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.idModele) ;
        }
        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 à comparer
        var modele = listeRefModele.get(k) ;
        if(modele){
            loadKoodzaInfoBean(urlXMLKoodza, modele, listeRefModele) ;
        }
    }
}



/** #########################################
* Permet de récupérer 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 ;
}
