var s;                                                                                        // liste des articles
var urlDivLocalPrice;                                                             // url de la div localprice avec ou sans resa (affectee dans manage-connexion)
var idUnivers;
var titleUnivers;
var multiLangCatNameRayon;                                        // Nom multilangue de l univers
var idRayon;
var titleRayon;
var idSsRayon;
var titleSsRayon;
var idFamille;
var urlRayon;
var ie=document.all                                                                 //script execute sur IE ou non
var ns6=document.getElementById && !document.all     //script execute sur FF ou non
var curX = "" ;                                                                             //position X de la souris
var curY = "" ;                                                                             //position Y de la souris
var timeMasque = "" ;                                                              //la variable correspondant au setTimeout de la fonction masque()
var ratioImg = 2 ;                                                                      //rapport entre largeur de la grande image et largeur de la petite image ici 800 et 400
var ratioDiv = '';                                                                         //rapport entre largeur de la div contenant la grande image et celle contenant la petite image
var img = '';                                                                                //div contenant l'image en 400*400
var debLargeur = '';                                                                 // position gauche de 'img' en abscisse
var finLargeur = '';                                                                    // position droite en abscisse
var debLongueur = '';                                                             // position haute en ordonnee
var finLongueur = '';                                                                // position basse en ordonnee
var positionPointeur = 412.5;                                               //la position du pointeur est arbitraire et permet doptimiser au maximum laffiche du zoom
var zoom = '';                                                                            // div contenant l'image 800*600
var productNotExistInStore = false;                                    // Boolean indiquant si le modele existe ou non dans le magasin sur lequel le client est connecte.
var affichagePsd = false;                                                      // Boolean indiquant si le bouton affiche correspond a celui renvoyant vers la popup productStoresDisponibility ou a celui renvoyant vers la popup de prix et stock local
var prixModeleInt = '';                                                              // Servira dans la popup des stocks multi-mags pour l'appel au service des VS
var prixModeleDec = '';                                                           // Servira dans la popup des stocks multi-mags pour l'appel au service des VS

/************************************************************************************************************************************************************/          			
/* Appellee a la fin de la page modele pour afficher les blocs adequats ne dependant pas du cookie */
function showBlocModeleClassic() {

    // Test du unpublisharbo.js
    for(var i = 0; i < tab_FAMILY.length; i++) {
        if(tab_FAMILY[i] == modeleFamilleId) {
            document.location.href = rootPath;
            return false;
        }
    }
    
    // Liste deroulante de selection d article
    s = document.getElementById('listeArticles');

    // Boolean pour savoir si le modele existe pour le magasin en cours
    productNotExistInStore = false;

    // Si le produit n est pas autorise a s afficher on cache les blocs adequats
    if (desactiveAffichageProduit =="Y"){
        if(window.location.search.indexOf('emailing=')==-1){
            hideBloc ("produitInteraction");
            productNotExistInStore = true;
            return false;
        }
    }
    
    // Si 1 seul article force la selection de cet article  
    if (s.options.length==2) s.selectedIndex=1;

    // si la liste contient au plus un article ou si nous sommes dans le cas centrale et que les prix sont homogenes alors on cache la liste des articles         
    if (s.options.length<3 || cacheListeArticles && !casmagasin) hideBloc('selectionProduit');
    else {
        var params = window.location.search;
        if(params.indexOf('emailing=') == -1) {
            var paramToSearch = '';
            if(params.indexOf('articleValue') != -1) paramToSearch = 'articleValue';
            if(params.indexOf('openItem') != -1) paramToSearch = 'openItem';
            if(paramToSearch){
                var selectValue = params.substr(params.indexOf(paramToSearch) + paramToSearch.length + 1);
                for(var i=1;i<s.options.length && s.selectedIndex==0;i++)
                    if(s[i].value == selectValue) s.selectedIndex = i;
                // Ouverture de la popup prx et stock local de l article passe en parametre
                if(paramToSearch == "openItem" && s.selectedIndex != 0) {
                    show_filter('filter');
                    positionPopup('affWait');
                    showBloc('affWait');
                    loadArticle(_client, _siteNumber, _centralNumber, idMagasin, selectValue, _language);
                }
            }
        }
    }

    // Date pour les ML
    var dateVeille=getDateVeilleEnFonctionDuFormat(formatDate);
    setBlocByHtml("date"," " + dateInfoLegale+" "+dateVeille+". ");

    // Logo fin de collection
    if (_siteNumber != '6721215' && (etape==3 || etape==7 || etape==8) )changeBlocClass("encart-contour", "fin-collection");

    // Lien envoyer a un ami
    if(getSwitchSite('ENVOYER_AMI')) {
        showBloc('lien-envoi-ami');
        setHref("btnSend1",lienMailTo);
        setHref("btnSend2",lienMailTo);
    }

    // Acheter en ligne
    if (getSwitchSite('KOODZA')) {
        if (boolKoodza == "true" || (urlBuyOnline != "" && (_siteNumber == "4809998" || _passion == "true" ))) {
            showBloc("blocAchatLigne");
            if (urlBuyOnline != '') showBloc("infoLegalesBuyOnline","inline");
            else showBloc("infoLegalesKoodzaDispo","inline");
        }
        else showBloc("infoLegalesKoodzaIndispo","inline");
    }

    // Encart conepts :  si les concepts du produit ne sont pas des liages,on cache le texte decouvrez  le site
    if(!lienConcept) hideBloc ("en-concepts-titreDecouvrez");	         

     // Gestion encart tailles et coloris
    if (s.options.length > 1 || (color != '') ) {
        showBloc("encartTaille");
        showBloc('ongletTaille');
    }

    // Gestion encart doc associee
    if (getSwitchSite('DOCUMENTS_ASSOCIES') && typeof docsAssociesNb != "undefined") {
        // Localisation des dates
        for (var k=1; k < docsAssociesNb +1 ; k++) {
            oDocDate = document.getElementById('daDate_'+k)
            if (oDocDate) {
                var sDate = oDocDate.firstChild.nodeValue;
                var titi = getDateAuFormat(formatDate,sDate.substring(0,2),sDate.substring(3,5),sDate.substring(6));
               oDocDate.firstChild.nodeValue = getDateAuFormat(formatDate,sDate.substring(0,2),sDate.substring(3,5),sDate.substring(6));
            }
        }
        // Affichage onglet et encart
        if (docsAssociesNb > 0) {
            showBloc('encartDocs');
            showBloc('ongletDocs');
        }
    }

    // Gestion simulateur de credit
    if (getSwitchSite('ALSOLIA')) credSimExecute();

    // Gestion typologie
    if (getSwitchSite('DESACTIVATION_TYPOLOGIE')) {
        hideBloc("typo-modele");
        hideBloc("typo");
    }
    
    // Recuperation marque du produit
    var myBrand = "";    
    var tmp = document.getElementById("logoMarqueCourante");
    if (tmp) myBrand = tmp.title;
    
    // temporaire : les produits Tribord sous le rayon natation changent de marque pour Nabaiji
    if (multiLangCatNameRayon == "swimming" && myBrand == "TRIBORD") {
        var blocMarque = document.getElementById('blocMarques');
        var lienMarque = document.getElementById('lienMarqueCourante');
        var logoMarqueOld = document.getElementById('logoMarqueCourante');
        var logoMarqueNew = new Image();
        logoMarqueNew = createElement_img("logoMarqueCourante","logo",logoMarqueOld.src.replace('marque-asset_302537.jpg','marque-asset_16530589.jpg'),logoMarqueOld.alt,"","","");
        logoMarqueNew.title = 'NABAIJI';
        if(lienMarque) blocMarque.replaceChild(logoMarqueNew,lienMarque);
        else blocMarque.replaceChild(logoMarqueNew,logoMarqueOld);
    }
    else if(myBrand.toUpperCase() == "TRIBORD" || myBrand.toUpperCase() == "TRIBORD-DBW") setHref('lienMarqueCourante',"http://www.tribord.com");
    
    showBloc("logoMarqueCourante");
    showBloc("lienMarqueCourante");

    // Gestion des avis Oxylane
    try { 
        if (getSwitchSite('AVIS') && (getBlocHtml('marquePassion') == 'true' || getSwitchSite('AVIS_AMI'))) {
            loadAvis(getSwitchSite('AVIS'));
            showBloc('ongletOxylaneAvis');
            showBloc("oxylaneFullAvis");
        }
    }
    catch (err) {}

    // Gestion du menu des ancres
    menuAncresHandler();
}
  
/************************************************************************************************************************************************************/          			
// Dans le cas ou le cookie est null (cas centrale ou si local_stock=false), 
// cette fonction met a jour le cartouche prix avec le prix de l article selectionne
function ouvreDivOuMajPrix() {
    if (s.value!='' && cookieMagasin==null) {               
                // Cas centrale                   
                loadArticle(_client, _siteNumber, _centralNumber, null, s.value, _language);                  
    }
    else if(affichagePsd){
        hideBloc('boutonPsdOnclick');
        hideBloc('articleSelectionIndispo');
        hideBloc('articleIndispo');
        showBloc('boutonPrixTpsreelOnclick','inline');
        showBloc('boutonPopupChaude');
        affichagePsd = false;
    }
    gestionBoutonPrixTpsReel();
}

/*********************************************************************************************************************************************************/
// Fonction qui construit notre objet IAjaxProcess pour pouvoir recuperer le titre de l univers et du rayon dans un XML
function loadUniversRayon() {
    urlFamillePath = rootPath+urlFamille+'path.xml';   
    loaded = false;
    var func = function (xmlHttp, httpStatus) {
        oGlobalXml = xmlHttp.responseXML;
        if(oGlobalXml!=null) {
            var root = oGlobalXml.documentElement;
            var cs = root.childNodes;
            var l = cs.length;
            for (var i = 0; i < l; i++) {
                    if (cs[i].tagName == "Famille"){
                        // Titre de l univers
                        titleUnivers = getChildNodeValue(getChild(getChild(cs[i], 'path'),'Univers'),'userTitle');           
                       if (titleUnivers==null) {
                            titleUnivers = getChildNodeValue(getChild(getChild(cs[i], 'path'),'Univers'),'title');
                       }
                        // Nom multilangue du rayon
                        multiLangCatNameRayon = getChildNodeValue(getChild(getChild(cs[i], 'path'),'Rayon'),'multilingualCategoryName');
                       //  Titre du rayon
                       titleRayon = getChildNodeValue(getChild(getChild(cs[i], 'path'),'Rayon'),'userTitle');
                       if (titleRayon==null) {
                            titleRayon = getChildNodeValue(getChild(getChild(cs[i], 'path'),'Rayon'),'title');
                       }
                       //  Titre du rayon
                       titleSsRayon = getChildNodeValue(getChild(getChild(cs[i], 'path'),'SousRayon'),'userTitle');
                       if (titleSsRayon==null) {
                            titleSsRayon = getChildNodeValue(getChild(getChild(cs[i], 'path'),'SousRayon'),'title');
                       }
                        idUnivers = getChildNodeValue(getChild(getChild(cs[i], 'path'),'Univers'),'id'); 
                        idRayon = getChildNodeValue(getChild(getChild(cs[i], 'path'),'Rayon'),'id');
                        idSsRayon = getChildNodeValue(getChild(getChild(cs[i], 'path'),'SousRayon'),'id');
                        idFamille = getChildNodeValue(cs[i],'id');
                        urlRayon=getChildNodeValue(getChild(getChild(cs[i], 'path'),'Rayon'),'url');      
                    }
            }
            loaded = true;
        }
    };
    var oProcess = new IAjaxProcess(urlFamillePath, func);	
    oProcess.run();
}

/****************************************************************************************************************************************************************/
// on appelle la fonction qui va charger la bonne vente complementaire (rayon - famille - modele)
function _loadedUniversRayon() {
    if (loaded) { 
        setBlocByHtml('nomRayon', titleRayon);
        document.getElementById('urlRayon').href = rootPath+urlRayon;    
        displayVC();
    }
    else {	         
                window.setTimeout('_loadedUniversRayon()', 10);
    } 
}

/****************************************************************************************************************************************************************/
//  Permet de fournir a Google Analytics certains elements pour la page modele
function _loadedGoogleAnalytics() {
    if (loaded) {
        googleanalytics_path = titleUnivers + '#' + titleRayon + '#' + titleSsRayon + "#" + googleanalytics_path;
        gaMtree(googleanalytics_path);
    }
    else window.setTimeout("_loadedGoogleAnalytics()", 10);
}

/***********************************************************************************************************************************************/
// fonction qui affiche le bouton J achete en ligne et definit le lien vers"urlBuyOnline
function activeBuyOnline(titreLien,url,sBrandCurrent,sbrandsIncluded) {
    var boutonKoodza;

    var bBrandOk = true;

    // Test filtrage a la marque
    if (typeof sBrandCurrent != 'undefined' && typeof sbrandsIncluded != 'undefined') {
        if (sbrandsIncluded != '') {
            var reg=new RegExp(sBrandCurrent,"gi");
             if (sbrandsIncluded.match(reg) == null) bBrandOk = false;
        }
    }

    if (url && bBrandOk && (_siteNumber == '4809998' || _passion == 'true' ) ) {
        urlBuyOnline = url;
        if (boutonKoodza = document.getElementById("boutonKoodza")) {
            boutonKoodza.title = titreLien;
            setHref('boutonKoodza',urlBuyOnline);
         }
     }

}

/***********************************************************************************************************************************************/
// Fonction pour modifier la class du premier et du dernier onglet
function menuAncresHandler() {
    var enMenuFirst = "";
    var enMenuLast = "";
    var oListe = document.getElementById("menu-ancres-ul");
    
    for (var k=0; k < oListe.childNodes.length; k++) {

        // Recherche premier et dernier element
        if (oListe.childNodes[k].style.display != "") {
            if (enMenuFirst == "") enMenuFirst = oListe.childNodes[k].id; 
            enMenuLast = oListe.childNodes[k].id; 
        }
    }
    
    // Gestion premier et dernier element du menu
    if (enMenuFirst != '' && enMenuLast != "") {
        // Menu first
        changeBlocClass(enMenuFirst, "menu menu-first");
        // Menu last
        changeBlocClass(enMenuLast, "menu menu-last");
    }
}

/*************************************/
/* ZOOM PHOTO */
/*************************************/
/***********************************************************************************************************************************************/
//fonction de zoom sur la grande photo
function showZoomImg()   {
    var imgcourante = document.getElementById('ZoomImg');
    var source = imgcourante.src;

    if (source) show_popup_std("sizeAndColors.html?image="+source, 970, 620);
    else show_popup_std("sizeAndColors.html", 970, 620);
} 

/***********************************************************************************************************************************************/
// fonction permettant de remplacer la grande photo par la photo de la vignette sur laquelle on a clique
function ZoomIt(id) {
    var sSrc = document.getElementById(id).src;
    sSrc = sSrc.replace("pt-","gd-");
    sSrc = sSrc.replace("50/","250/");
    
    document.getElementById('ZoomImg').src = sSrc;

}

/***********************************************************************************************************************************************/
// fonction permettant de remplacer la grande photo par une photo disposant d une version HD lors du clique sur le picto HD
function ZoomItHD(img) {
    if (img) document.getElementById('ZoomImg').src=img.replace("pt-asset","gd-asset");
}

/***********************************************************************************************************************************************/
// [Modele Zoom] fontion permettant d afficher directement sur la page zoom la photo qui a ete cliquee sur la fiche produit
function zoomChargePhotoPrincipale(pictPath){
    var params = getUrlParameters() ;
    if(params[0][1] && params[0][1] != ""){
        var urlImage = decodeURI(params[0][1]) ;
        urlImage = urlImage.replace("gd-","");
        urlImage = urlImage.replace("250/","400/");
        setSrc("main-photo", urlImage) ;

        var reg1=new RegExp('products-pictures.*.jpg');
        var tmp = urlImage.match(reg1).toString();
        tmp = tmp.replace("products-pictures/","");
        zoomSwitchBetweenFlashAndPicture(tmp, pictPath);
    }
}

/***********************************************************************************************************************************************/
// [Modele Zoom] fontion permettant d afficher soit la photo classique du modele ou le flash
function zoomSwitchBetweenFlashAndPicture(pictName, pictPath) {
    var pictId = getBlocHtml(pictName+'_is_hd');
    var div;
    var mainPhoto = document.getElementById('main-photo');
    var blocZoom = document.getElementById("bloczoom");

    if (pictId == "true") {
        if(div = document.getElementById('picture-main'))
            div.id = 'picture-zoom';
            
        blocZoom.style.display = 'block';
        mainPhoto.onmouseover =  function(){masque();};
        mainPhoto.onmouseout = function(){desactiveMasque();};
        
        zoom =  document.getElementById("zoom");
        if (pictName.match("/")) pictName = pictName.replace("400/asset","800/h1-asset");
        else pictName = "h1-" + pictName;
        zoom.style.backgroundImage="url("+pictPath+'/'+pictName+")"; // image HD

        var largeurImg = document.getElementById("contain-main-photo").clientWidth;
        var largeurImgZoom = document.getElementById("zoom").clientWidth;
        ratioDiv = largeurImg / largeurImgZoom;

        calculOffsets();
        window.onresize = function(){calculOffsets();}; // recalcul de la position de la div en abscisse lors du redimensionnement de la fenetre
              
        if(curX == "" && curY == "")
            document.onmousemove = positioncurseur ; //on lance le calcul du positionnement de la souris
    }
    else {
       if(div = document.getElementById('picture-zoom'))
                div.id = 'picture-main';
        blocZoom.style.display = 'none';        
        mainPhoto.onmouseover = "";
        mainPhoto.onmouseout = "";    
    }
}
 
/***********************************************************************************************************************************************/
 /* Permet de bouger l'image HD en fonction de l'image SD
 * Cette fonction utilise la position du curseur curX et curY
*/
function masque() {
    timeMasque = setTimeout("masque()",10);
    var bgX = ((curX - debLargeur)/ratioDiv)*-ratioImg + 200; //position du background en abscisse (1.2625 est le rapport entre la largeur de la div de la photo en 400*400 et la div de celle en 800*800 : 505/400)
    var bgY = curY*-ratioImg + 400; //position du background en ordonnee
   bgY = bgY + ietruebody().scrollTop*ratioImg; //position du background en ordonnee + positionnement du scroll
   zoom.style.backgroundPosition = bgX+"px "+bgY+"px";
}

/***********************************************************************************************************************************************/
//Calcul la position en abscisse de la div de gauche contenant l'image en 400*400
function calculOffsets(){
    img = document.getElementById("contain-main-photo"); 
    debLargeur = img.offsetLeft; 
    while(img.offsetParent){
        img = img.offsetParent;
        debLargeur += img.offsetLeft;
    }
}

/***********************************************************************************************************************************************/
// Permet de detruire l'appel a la fonction masque
function desactiveMasque(){
    clearTimeout(timeMasque) ;
}




/*************************************/
/* VIDEOS */
/*************************************/
/***********************************************************************************************************************************************/
//fonction pour changer la video affichee
function changeVideo(sTitre, sFlv) {
    document.getElementById('so-flash-flash-player-video').changeVideo(sTitre, sFlv);
    return false;
}

/***********************************************************************************************************************************************/
//fonction pour afficher la popup video
function showVideoPopup(widthPopup,heightPopup,fileToOpen) {

    // On verifie que le contenu de la popup est bien cree
    if (typeof videoPopupContent != "string") return false;

    // Tailles par defaut
    if (widthPopup=='' | heightPopup=='') {
        widthPopup = 280;
        heightPopup = 240;
    }

    // Creation de la popup
    var popupVideo = window.open('','_blank', 'width='+widthPopup+',height='+heightPopup+', location=no, menubar=no,toolbar=no, scrollbars=no, resizable=no');
    popupVideo.document.write(videoPopupContent.replace("#flv#",fileToOpen));
    popupVideo.document.close();
}




/*************************************/
/* POPUP PRODUCT NOT EXIST */
/*************************************/
/***********************************************************************************************************************************************/
// Permet de remplir la div popup-productNotExist par le contenu de la page du meme nom
function loadPopupProductNotExist(pneStoreNumber, pneStoreUrl, pneStoreName, pneModelId) {
    _loadPopupProductNotExist(pneStoreNumber, pneStoreUrl, pneStoreName, pneModelId, POST_LOAD_PNE_FUNCTION);
}

/*********************************************************************************************************************************************************/
// Charge la page du produit non existant et lance la fonction de post associee
function _loadPopupProductNotExist(_pneStoreNumber, _pneStoreUrl,  _pneStoreName, _pneModelId, _localFunc) {
    var func = function (xmlHttp, httpStatus) {
        oGlobalText = xmlHttp.responseText;
        if(oGlobalText != null) {
            setBlocByHtml('popup-product-not-exist',xmlHttp.responseText);
        }
        
        if (_localFunc != null) {
            try {
                _localFunc(httpStatus, _pneStoreNumber, _pneStoreUrl, _pneStoreName, _pneModelId);
            } catch (e) {
                return false;
            }
        }
        
    return true;
    };

    //Lancement du processus
    var oProcess = new IAjaxProcess(urlProductNotExist, func);
    oProcess.run();
    return true;
}

/*********************************************************************************************************************************************************/
// Gere l affichage de la popup du produit non existant
var POST_LOAD_PNE_FUNCTION = function postLoadPne(httpStatus, theStoreNumber, theStoreUrl, theStoreName, theModelId) {
    if(httpStatus != null && httpStatus==200) {
        if(desactiveAffichageProduit == 'N'){
            // Si body2 renseigne dans la rubrique, on l affiche seul
            var body2 = document.getElementById("pne-body2");
            if (body2) {
                // Maj des tags places dans le texte
                var txt = body2.innerHTML;
                txt = txt.replace("#store_name", '<span style="color:#00B4F1;">'+magasin+'</span>');
                txt = txt.replace("#mod_ref", '<span style="color:#00B4F1;">'+theModelId+'</span>');
                body2.innerHTML = txt;
    
                // Recuperation des infos magasin
                getStoreInfos(theStoreUrl,POST_LOAD_PNE_STOREINFOS_FUNCTION);
    
                // Affichage
                showBloc("pne-body2");
            }
            else showBloc("pne-body1");
        }
        else{
            if(cookieMagasin != null){
                var txt = getBlocHtml('pne-comm2');
                txt = txt.replace("#store_name", magasin);
                setBlocByHtml('pne-comm2',txt);
                showBloc("pne-comm2");
            }
            else showBloc("pne-comm1");
            document.getElementById('pneCloseLink').onclick = '';
            setHref('pneCloseLink',rootPath + urlFamille);
        }
        // Affichage de la popup produit non existant 			
        show_filter('filter');			
        show_popup('popup-product-not-exist');
    }
    else document.location.href = rootPath + urlFamille;
}

/*********************************************************************************************************************************************************/
// Gere l affichage de la popup du produit non existant
var POST_LOAD_PNE_STOREINFOS_FUNCTION = function postLoadPneSi(httpStatus, theFlow) {
    if(httpStatus != null && httpStatus==200 && theFlow != "") {
        // Coordonnees du magasin
        var coordMag = theFlow.substring(theFlow.indexOf('<div class="coord">#BEGIN'));
        coordMag = coordMag.substring(0,coordMag.indexOf('#END</div>'));
        coordMag = coordMag.replace(/#BEGIN/, '');
        coordMag = coordMag.replace(/#END/, '');
        coordMag += "</div>";
        
        var infosSup = '';
        // Infos supplementaires
        if(theFlow.indexOf('<div class="infosupp"') != -1) {
            infosSup= theFlow.substr(theFlow.indexOf('<div class="infosupp">#BEGIN'));
            infosSup = infosSup.substring(0,infosSup.indexOf('#END</div>'));
            infosSup = infosSup.replace(/#BEGIN/, '');
            infosSup = infosSup.replace(/#END/, '');
            infosSup += "</div>";
        }

        if (coordMag != "") setBlocByHtml("coordMag",coordMag);
        if (infosSup != "") setBlocByHtml("infosSup",infosSup);
    }
 }
 
 
 

 /*************************************/
/* AVIS OXYLANE */
/*************************************/
/***********************************************************************************************************************************************/
//fonction pour afficher tous les avis Oxylane
function showAllAvis(_sUrl)   {
    if (_sUrl != "") openNewWindow (_sUrl + '?avis', 'avis', 'width=1020, height=700, scrollbars=yes, resizable=yes');
}

/***********************************************************************************************************************************************/
//fonction pour changer la video affichee
function avisOxylaneHandler(_display) {
    showBloc('encartOxylaneAvis');
    showBloc('oxylaneAvis');
    document.location.href = '#AVIS';
}


 /*************************************/
/* PARTAGE */
/*************************************/
/***********************************************************************************************************************************************/
// Affiche les liens de partage
function showShareItLinks() {
    showBloc("share");
}
