1/*! oxFramework - lazyDirectives - all - v2.152.0 2022-08-18 */ 2 3"use strict";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?ownKeys(Object(c),!0).forEach(function(b){_defineProperty(a,b,c[b])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):ownKeys(Object(c)).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(c,b))})}return a}function _defineProperty(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _typeof(a){"@babel/helpers - typeof";return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}!function(a,b){var c=b.module("oxFramework");c.run(["sessionData",function(a){c.hasLazyDirectivesAll=!0,a.gaScriptsTracker.lazyDirectivesAll||(a.gaScriptsTracker.lazyDirectivesAll=1,c.sessionStorage.set("gaScriptsTracker",a.gaScriptsTracker),setTimeout(function(){},1e3))}])}(window,window.angular),function(a,b,c,d){var e="csAccountBox";b.module("oxFramework").addDirective(e,["Directive","oxDirective","$parse","oxWs","ngDialog",function(f,g,h,i,j){return new(f.extend({restrict:"AC",replace:!0,scope:{create:"<",forgotPassword:"<",onLogin:"&",userWelcomeTemplate:"<",userWelcomeTemplateUrl:"<",redirectToUrl:"@?",creationUrl:"@?"},link:function(f,k,l){new(g.extend({init:function(){this._super(),this.recallMe(),this.$scope.creationUri=l.creationUrl||"/PBSubscribe.asp",this._checkIfUserIsLogged();var b=a.oxFramework.canLoginByCode()?"loginOrCodePlaceHolder":"loginPlaceHolder";this.$scope.translation.loginPlaceHolder=this.$scope.translation[b],d.defer(d.bind(function(){this.$scope.$root.$emit(e+"-rdy")},this))},name:e,localStorageType:"localStorage",translation:[{connect:"Identifiez-vous",pass:"Mot de passe :",loginPlaceHolder:"Adresse e-mail",loginOrCodePlaceHolder:"Adresse e-mail / code client",passPlaceHolder:"Mot de passe",connectBtn:"Connexion",rememberMe:"Se souvenir de moi",error:"Merci de corriger les identifiants",newUser:"Je n'ai pas encore de compte",askAccount:"Faire une demande",welcome:"Bienvenue ",goToAccount:"Acc\xe9der \xe0 mon compte",publicBtn:"Se d\xe9connecter",forgotPassword:{link:"Mot de passe oubli\xe9 ?",title:"Mot de passe oubli\xe9 ?",error:"Merci de renseigner une adresse e-mail valide",validate:"Envoyer",back:"retour"},matchingUsers:{title:"Votre email"}},{connect:"Sign in",pass:"Password",loginPlaceHolder:"Email",loginOrCodePlaceHolder:"Email / Customer code",passPlaceHolder:"Password",connectBtn:"Sign In",rememberMe:"Remember me",error:"Please check your email and password",newUser:"New customer?",askAccount:"Start here",welcome:"Hello ",goToAccount:"Your Account",publicBtn:"Sign Out",forgotPassword:{link:"Forgot your password?",title:"Reset your password",error:"Please enter your email address",validate:"Reset password",back:"back"},matchingUsers:{title:"Your email address"}},{connect:"Ind\xedcanos tu usuario",pass:"Contrase\xf1a:",loginPlaceHolder:"Usuario",loginOrCodePlaceHolder:"E-mail / C\xf3digo de cliente",passPlaceHolder:"Contrase\xf1a",connectBtn:"Conexi\xf3n",rememberMe:"Recordarme",error:"Por favor, comprueba los datos de acceso",newUser:"A\xfan no tengo una cuenta",askAccount:"Solicitar una cuenta",welcome:"Bienvenido(a)",goToAccount:"Acceder a mi cuenta",publicBtn:"Desconectarme",forgotPassword:{link:"\xbfHas olvidado tu contrase\xf1a?",title:"Recuperar contrase\xf1a",error:"Esta direcci\xf3n de e-mail no est\xe1 asociada a ninguna cuenta",validate:"Recuperar contrase\xf1a",back:"Volver"},matchingUsers:{title:"Direcci\xf3n de e-mail"}},{connect:"Melden Sie sich an",pass:"Ihr Passwort:",loginPlaceHolder:"Ihre E-Mail-Adresse",loginOrCodePlaceHolder:"E-Mail / Kundencode",passPlaceHolder:"Ihr Passwort",connectBtn:"Anmelden",rememberMe:"Angemeldet bleiben",error:"Bitte korrigieren Sie Ihren Benutzernamen",newUser:"Sie haben noch kein Konto?",askAccount:"Anmeldung",welcome:"Willkommen",goToAccount:"Ihr Konto",publicBtn:"Abmeldung",forgotPassword:{link:"Sie haben Ihr Passwort vergessen?",title:"Zur\xfccksetzen Ihres Passworts",error:"Leider entspricht diese E-Mail-Adresse keinem Konto",validate:"Mein Passwort zur\xfccksetzen",back:"Zur\xfcck"},matchingUsers:{title:"Ihre E-Mail-Adresse"}},{connect:"Login",pass:"La tua password :",loginPlaceHolder:"Il tuo indirizzo email",loginOrCodePlaceHolder:"EMail / Codice cliente",passPlaceHolder:"La tua password",connectBtn:"Accedi al tuo account",rememberMe:" Rimani collegato",error:"Correggi i tuoi dati",newUser:"Non hai ancora un account?",askAccount:"Registrati",wel
3come:"Salve ",goToAccount:"Accedi",publicBtn:"Esci",forgotPassword:{link:"Hai dimenticato la tua password?",title:"Recupero password",error:"Questo indirizzo email non appartiene a nessun account.",validate:"Recupero password",back:"Ritorna"},matchingUsers:{title:"Il tuo indirizzo email"}},{connect:"Uw account",pass:"Paswoord:",loginPlaceHolder:"Emailadres",loginOrCodePlaceHolder:"Email / Cli\xebntcode",passPlaceHolder:"Paswoord",connectBtn:"Inloggen",rememberMe:"Ingelogd blijven",error:"Corrigeer uw emailadres en paswoord",newUser:"Heeft u nog geen account?",askAccount:"Nieuw account",welcome:"Welkom ",goToAccount:"Mijn account",publicBtn:"Uitloggen",forgotPassword:{link:"Paswoord vergeten",title:"Nieuw paswoord aanvragen",error:"Dit emailadres is incorrect",validate:"Stuur mij een nieuw paswoord",back:"Terug naar inloggen"},matchingUsers:{title:"Uw emailadres"}},{connect:"Sign in",pass:"Password",loginPlaceHolder:"Email",loginOrCodePlaceHolder:"Email / Customer code",passPlaceHolder:"Password",connectBtn:"Sign In",rememberMe:" Remember me",error:"Please check your email and password",newUser:"New customer?",askAccount:"Start here",welcome:"Hello ",goToAccount:"Your Account",publicBtn:"Sign Out",forgotPassword:{link:"Forgot your password?",title:"Reset your password",error:"Please enter your email address",validate:"Reset password",back:"back"},matchingUsers:{title:"Your email address"}},{connect:"Sign in",pass:"Password",loginPlaceHolder:"Email",loginOrCodePlaceHolder:"Email / Customer code",passPlaceHolder:"Password",connectBtn:"Sign In",rememberMe:" Remember me",error:"Please check your email and password",newUser:"New customer?",askAccount:"Start here",welcome:"Hello ",goToAccount:"Your Account",publicBtn:"Sign Out",forgotPassword:{link:"Forgot your password?",title:"Reset your password",error:"Please enter your email address",validate:"Reset password",back:"back"},matchingUsers:{title:"Your email address"}}],rootScopeEvents:{"user-update":"updateScope"},watchers:{"fields.login":function(a){this.oxHelpers.emailValidation(a)&&(this.$scope.params.forgotPasswordError=!1)}},defineScope:{fields:{},params:{step:"login"},matchingUsers:[],user:h("oxInfos.oxUser")(a),logout:function(){var b=this;i.logout().$promise.then(function(){b.$scope.user=null,d.defer(function(){b.$scope.$root.$emit("csAccountBox",b.$scope.user),b.$scope.$root.$emit("user-update",b.$scope.user),a.oxInfos=a.oxInfos||{},a.oxInfos.oxUser=null})})},connect:function(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",b=this,c=i.login({email:a||this.$scope.fields.login,password:this.$scope.fields.pass});c.$promise.then(function(){if(c.error)switch(c.error){case 13:var a=i.createPassword({email:this.$scope.fields.login});a.$promise.then(function(){if(1===a.result&&a.message){var b='<div class="lz-text">'+a.message+'</div> <div style="text-align: center;"><a href="" class="btnmain" ng-click="scOnClickClose($event)"><span>{{::translation.forgotPassword.back}}</span></a></div>';this.dialog=j.open({template:b,plain:!0,scope:this.$scope,className:"ngdialog-theme-oxatis cs-account-box-alert",showClose:!0,closeByEscape:!0,closeByDocument:!0})}}.bind(this));break;case 20:b.$scope.matchingUsers=c.matchingUsers,b.$scope.params.step="matchingUsers",b.$scope.$root.safeApply();break;default:b.$scope.fields.error=c.error}1===c.result&&(b.rememberMe(),b.$scope.fields.error=0,b.goToUrl())}.bind(this))},scOnInputKeyPress:function(a){if(13===a.keyCode)return this.$scope.connect(),!1},scBeforeForgotPassword:function(){return this.$scope.params.forgotPasswordError=!this.oxHelpers.emailValidation(this.$scope.fields.login),!this.$scope.params.forgotPasswordError},scOnForgotPasswordKeyPress:function(a){if(13===a.keyCode)return c(".lz-btn-forgotpassword",this.elem).click(),!1},scOnClickClose:function(a){a.preventDefault(),this.dialog.close()}},updateScope:function(a,b){this.$scope.user=b,this.$scope.$root.safeApply()},goToUrl:function(){var b=this;if(this.$scope.redirectToUrl)a.location.assign(this.$scope.redirectToUrl);else{var c=i.getInfos();c.$promise.then(function(){b.$scope.user=c.user,b._checkIfUserIsLogged(),d.defer(function(){b.$scope.$root.$emit("csAccountBox",b.$
3scope.user),b.$scope.$root.$emit("user-update",b.$scope.user),a.oxInfos=a.oxInfos||{},a.oxInfos.oxUser=b.$scope.user})})}},recallMe:function(){var c=this.localStorage.get("&a1$23");c&&(this.$scope.fields=b.fromJson(a.atob(c)))},rememberMe:function(){this.$scope.fields.rememberMe?this.localStorage.set("&a1$23",a.btoa(b.toJson(this.$scope.fields))):this.localStorage.remove("&a1$23")},_checkIfUserIsLogged:function(){this.$scope.user&&this.$scope.onLogin&&this.$scope.onLogin({user:this.$scope.user})}}))(f,{elem:k,attrs:l})},template:function(a,b){return b.template,'<div class="logBlock"> <div ng-switch on="!!user.email"> <div ng-switch-when="false" class="userLogin"> <div ng-if="params.step === \'login\'" class="lz-step-login"> <div class="userIdentification"> <div class="PBSTitle" ng-bind-html="translation.connect"></div> <div class="lz-login-input" ng-class="{\'error\' : fields.error == 4}"> <input placeholder="{{translation.loginPlaceHolder}}" type="text" name="username" class="PB" ng-model="fields.login" ng-keypress="scOnInputKeyPress($event)"> </div> <div class="lz-pass-input" ng-class="{\'error\' : fields.error == 2}"> \x3c!--div class="PBStatic">{{translation.pass}}</div--\x3e <input placeholder="{{translation.passPlaceHolder}}" type="password" name="password" class="PB" ng-model="fields.pass" ng-keypress="scOnInputKeyPress($event)"> </div> <div class="PBErrMsg" ng-if="fields.error">{{translation.error}}</div> <div ng-if="forgotPassword" class="lz-forgotpassword-link"> <a ng-click="params.step = \'forgotPassword\'; $event.preventDefault();" ng-href="#forgotpassword">{{translation.forgotPassword.link}}</a> </div> <div class="rememberme-wrapper"> <input type="checkbox" ng-model="fields.rememberMe"> <span class="PBMsg">{{translation.rememberMe}}</span> </div> <a class="btnmain lz-btn-login" ng-click="connect()"><span>{{translation.connectBtn}}</span></a> </div> <div ng-if="create" class="userCreation"> <div class="PBSTitle">{{translation.newUser}}</div> <a class="PBLink" href="{{creationUri}}">{{translation.askAccount}}</a> </div> </div> <div ng-if="params.step === \'forgotPassword\'" class="lz-step-forgotpassword"> <div class="PBSTitle">{{translation.forgotPassword.title}}</div> <div ng-class="{\'error\' : params.forgotPasswordError}"> <input placeholder="{{translation.loginPlaceHolder}}" type="text" class="PB" ng-model="fields.login" ng-keypress="scOnForgotPasswordKeyPress($event)"> </div> <div class="PBErrMsg" ng-if="params.forgotPasswordError && forgotPassword">{{translation.forgotPassword.error}}</div> <div class="lz-actions"> <a class="lz-btn-back" ng-click="params.step = \'login\'; $event.preventDefault();" ng-href="#back"><span>{{translation.forgotPassword.back}}</span></a> <a class="btnmain lz-btn-forgotpassword" before-send="scBeforeForgotPassword()" cs cs-redirect url="PBUserLogin.asp" params="{ActionID: 3, EMail: fields.login, CCode: 33, CPID: 0}"><span>{{translation.forgotPassword.validate}}</span></a> </div> </div>\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div ng-if="params.step === \'matchingUsers\'" class="lz-step-matchingusers"> <div class="PBSTitle">{{translation.matchingUsers.title}}</div> <div> <select name="matchingUserMail" ng-model="fields.matchingMail">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<option ng-repeat="matchingUser in matchingUsers" value="{{matchingUser.email}}">{{matchingUser.email}}</option>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</select> </div> <div class="lz-actions"> <a class="lz-btn-back" ng-click="params.step = \'login\'; $event.preventDefault();" ng-href="#back"><span>{{translation.forgotPassword.back}}</span></a> <a class="btnmain lz-btn-login" ng-if="fields.matchingMail" ng-click="connect(fields.matchingMail)"><span>{{translation.connectBtn}}</span></a> </div> </div> </div> <div ng-switch-when="true" class="userWelcome"> <div ng-if="userWelcomeTemplateUrl" cs-include="{{userWelcomeTemplateUrl}}" class="user-welcome-inner"></div> <div ng-if="userWelcomeTemplate" cs-bind-html="userWelcomeTemplate" class="user-welcome-inner"></div> <div ng-if="!userWelcomeTemplate && !userWelcomeTemplateUrl" class="user-welcome-inner"> <div class="PBSTitle"> <sp
3an class="lz-welcome">{{translation.welcome}}</span> <span class="lz-username"> <span ng-if="user.firstname||user.lastname">{{user.firstname}} {{user.lastname}}</span> <span ng-if="!user.firstname && !user.lastname">{{user.email}}</span> </span> </div> <a class="PBLink lz-link" href="/PBUserAccount.asp?PBMInit=1">{{translation.goToAccount}}</a> <a class="btnmain lz-btn-logout" ng-click="logout()"><span>{{translation.publicBtn}}</span></a> </div> </div> </div> </div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d,e){var f="csAddToCart";b.module("oxFramework").addDirective(f,["Directive","oxDirective","oxWs","oxProductHelper","oxCartService",function(d,g,h,i,j){return new(d.extend({scope:{pdtId:"<?",analyticsList:"<?",cancelPropagation:"<",beforeSend:"&",afterSend:"&"},link:function(d,k,l){new(g.extend({init:function(){var a=this;k.removeAttr("onclick"),k.click(function(b){if(b.preventDefault(),l.beforeSend){var c=a.$scope.beforeSend({pdtId:a.$scope.pdtId});c&&c.then?c.then(function(){a.addToCart(b)}):a.addToCart(b)}else if(j.hasBeforeSend()){var c=j.runBeforeSend({pdtId:a.$scope.pdtId,place:a.$scope.analyticsList});c&&c.then?c.then(function(){a.addToCart(b)}):a.addToCart(b)}else a.addToCart(b)}),this.shopCartFlag=c("#maincontainer.scshopcart").length,this.attrs&&this.elem&&!this.attrs.pdtId&&(this._getParentPdtId(),this.elem.closest("[cs-product-init]").length&&this.addRootScopeEvt({"update-pdtId":function(){this._getParentPdtId()}})),this._super()},name:f,redirect:function(){if(j.getRedirectConfig())switch(b.module("oxFramework").device){case"mobile":a.location.assign("MBShoppingCart.asp");break;default:a.location.assign("/PBShoppingCart.asp")}else this.wsManager.getCartContent()},addToCart:function(c){var d=this;this.$scope.cancelPropagation&&c.stopPropagation();var f=a.OxAddToCart;a.OxAddToCart=function(a,c){var g={},k=c.split(/&/g);b.forEach(k,function(a){var b=a.split(/=/g);g[b[0]]=b[1]}),g.relatedPdtIDs&&(g.relatedPdtIDs=g.relatedPdtIDs.split(/,\s?/g));var m=i.getAddToCartParams(a);return m&&(m.relatedPdtIDs&&b.isArray(m.relatedPdtIDs)&&(m.relatedPdtIDs=(g.relatedPdtIDs||[]).concat(m.relatedPdtIDs)),m.itemQty&&e.isDecimal(m.itemQty)&&(m.itemQty=m.itemQty.toNumber()),g.PackagingID&&"0"!==g.PackagingID&&(m.PackagingID=g.PackagingID),b.extend(g,m)),b.isUndefined(g.PackagingID)&&(g.PackagingID=0),!d.shopCartFlag&&f?(g.relatedPdtIDs&&(g.relatedPdtIDs=g.relatedPdtIDs.join(",")),g.bundleIDs&&(g.bundleIDs=g.bundleIDs.join(",")),g.linkedIDs&&(g.linkedIDs=g.linkedIDs.join(",")),c=h.helpers.serialize(g),f.apply(this,[a,c])):(g.customFieldValue&&(g.customFieldValue=h.helpers.encodeHTMLEntities(g.customFieldValue)),h.sendToCart(g).$promise.then(function(){if(l.afterSend){var a=d.$scope.afterSend({pdtId:d.$scope.pdtId});a?a.then&&a.then(function(a){a||d.redirect()}):d.redirect()}else if(j.hasAfterSend()){var a=j.runAfterSend({pdtId:d.$scope.pdtId});a?a.then&&a.then(function(a){a||d.redirect()}):d.redirect()}else d.redirect()}),!0)},a.AddToCart?AddToCart(this.$scope.pdtId,null,c):a.OxAddToCart(this.$scope.pdtId,"ItmID="+this.$scope.pdtId),a.OxAddToCart=f}}))(d,{elem:k,attrs:l})}}))({name:f})}])}(window,window.angular,window.angular.element,window._,window.Decimal),function(a,b,c,d){var e="csAddToCartBtn";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk","oxProductHelper",function(a,b,c){return new(a.extend({scope:{pdtId:"<?",beforeSend:"&"},link:function(a,d,f){new(b.extend({name:e,translation:[{addToCart:"Ajouter au panier",detail:"+ d'infos"},{addToCart:"Add to Cart",detail:"More details"}
3,{addToCart:"A\xf1adir a la cesta",detail:"M\xe1s informaci\xf3n"},{addToCart:"Zum Warenkorb hinzuf\xfcgen",detail:"Mehr informationen"},{addToCart:"Aggiungi al carrello",detail:"Maggiori informazioni"},{addToCart:"In winkelwagentje",detail:"Meer informatie"},{addToCart:"Afegeix a la cistella",detail:"M\xe9s informaci\xf3"},{addToCart:"Adicionar ao carrinho",detail:"Mais informa\xe7\xf5es"}],detailLevel:["list"],defineScope:{scIsAddableToCart:function(){return c.isAddableToCart(this.$scope.pdtId)},ready:!1},process:function(){this.$scope.ready=!0}}))(a,{elem:d,attrs:f})},template:function(a,b){var c="";switch(b.template){case"mobile":c='<button ng-if="ready && scIsAddableToCart()" cs cs-add-to-cart pdt-id="pdtId"',c+='class="c-button c-button--medium c-button--primary" cancel-propagation="true"',b.beforeSend&&(c+=' before-send="beforeSend()" '),c+='><span class="c-button__inner">{{translation.addToCart}}</span></button>',c+='<button ng-if="ready && !scIsAddableToCart()" class="c-button c-button--medium c-button--primary" cs cs-product-url pdt-id="pdtId"><span class="c-button__inner">{{translation.detail}}</span></button>';break;default:c='<a ng-if="ready && scIsAddableToCart()" cs cs-add-to-cart pdt-id="pdtId"',c+='class="btnaddtocart btnmain" cancel-propagation="true"',b.beforeSend&&(c+=' before-send="beforeSend()" '),c+="><span>{{translation.addToCart}}</span></a>",c+='<a ng-if="ready && !scIsAddableToCart()" class="btndetail btnmain c-button c-button--primary c-button--medium" cs cs-product-url pdt-id="pdtId"><span class="c-button__inner">{{translation.detail}}</span></a>'}return c}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csAdjacentCategories";b.module("oxFramework").addDirective(e,["Directive","oxLnk","$filter",function(c,d,f){return new(c.extend({scope:{catId:"=?",spa:"<?"},link:function(c,g,h){new(d.extend({name:e,detailLevel:["name"],modeLevel:["adjacent","canonical"],component:"shop",wsType:"category",defineScope:{catId:c.catId||a.OxCatID1||a.OxCatID2||a.OxCatID3,setCategories:function(a){this.$scope.catId=a}},process:function(){var a=this.$scope.categories=this.sharedData.categoryTree.data;b.forEach(a,function(b){b.canonicalUrl=b.canonicalUrl||"PBSCCatalog.asp?CatID="+b.id,b.strechName=f("oxStrechName")(a[b.id].name)})}}))(c,{elem:g,attrs:h})},template:function(a,b){var c="";switch(b.template){case"dropdownlist":c='<select ng-options="id as categories[id].name for id in category.adjCatIds" ng-model="catId"></select>';break;default:c='<ul> <li ng-repeat="id in ::category.adjCatIds" class="{{::categories[id].strechName}}" ng-class="{current: catId == id }"> <a ng-if="::!spa" class="PBBtnStd" href="{{::categories[id].canonicalUrl}}">{{::categories[id].name}}</a> <a ng-if="::spa" class="PBBtnStd" ng-click="setCategories(id)">{{::categories[id].name}}</a> </li> </ul>'}return c}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a){a.module("oxFramework").addDirective("csAlert",["Directive","oxDirective",function(b,c){return new(b.extend({restrict:"EA",transclude:!0,scope:{type:"@?",icon:"@?",closable:"<?",onClose:"&?"},link:function(b,d,e){new(c.extend({name:"csAlert",init:function(){this.addCssModifier(this.$scope.type||"warning")},defineScope:{close:function(){a.isFunction(this.$scope.onClose)?this.$scope.onClose({elem:this.elem}):this.elem.remove()}}}))(b,{elem:d,attrs:e})},template:'<cs-icon class="c-cs-alert__close" icon="close" ng-if="closable" ng-click="close()"></cs-icon><cs-icon class="c-cs-alert__icon" ng-if="icon" icon="{{icon}}"></cs-icon><div class="c-cs-alert__content" ng-transclude></div>'}))({name:"csAlert"})}])}(window.angular),function(a,b,c,d){var e="csAppAccountBox",f=b.module("oxFramework");f.addDirective(e,["Directive","oxDirective","oxWs","oxUserHelper","ngDialog",function(b,c,g,h,i){return new(b.extend({scope:{redirectUrl:"@?",inscription:"<?"},link:function(b,j,k){new(c.extend({name:e,localStorageType:"localStorage",translation:[{connexion:{email:"Votre Email",emailOrCode:"Votre email / code client",passwd:"Votre mot de passe",btnConnexion:"Se connecter",errorEmail:"Votre email n'est pas valide",errorPasswd:"Veuillez entrer un mot de passe avec minimum 4 caract\xe8res",errorLogin:"Veuillez corriger vos identifiants",forgetPasswd:"Vous avez oubli\xe9 votre mot de passe ?",title:"Identifiez-vous",titleSub:"Vous n'avez pas encore de compte ?",buttonSub:"Inscription",stayConnected:"Rester connect\xe9"},connected:{hello:"Bienvenue",account:"Votre compte",disconect:"D\xe9connexion"},forgetPasswd:{title:"R\xe9cup\xe9ration de mot de passe",email:"Veuillez entrer votre email",returnConnection:"Retour \xe0 la connexion",errorEmail:"D\xe9sol\xe9 mais cet email ne correspond \xe0 aucun compte",successEmail
3:"Votre mot de passe vous a \xe9t\xe9 envoy\xe9 par email.",button:"R\xe9cup\xe9rer mon mot de passe"},matchingUser:{title:"Votre email",returnConnection:"Retour \xe0 la connexion",btnConnexion:"Se connecter"},subscription:{title:"Cr\xe9ation de votre compte :",returnConnection:"Retour \xe0 la connexion",name:"Votre nom",firstName:"Votre pr\xe9nom",email:"Votre email",passwd:"Votre mot de passe",passwd2:"Confirmez votre mot de passe",button:"Je m'inscris",errorName:"Votre nom doit contenir au moins 2 caract\xe8res",errorFirstName:"Votre pr\xe9nom doit contenir au moins 2 caract\xe8res",errorEmail:"Veuillez entrer un email valide",errorPasswd:"Vos mots de passe doivent \xeatres identiques et contenir au moins 4 caract\xe8res",error:"Une erreur est survenue veuillez r\xe9essayer dans quelques instants",errorAlreadyExist:"Cette adresse email est d\xe9j\xe0 utilis\xe9e"}},{connexion:{email:"Your email address",emailOrCode:"Email / Customer code",passwd:"Your password",btnConnexion:"Sign in",errorEmail:"Invalid email address",errorPasswd:"Please enter a password containing at least 4 characters",errorLogin:"Please correct your email address and password",forgetPasswd:"Forgot your password?",title:"Sign in",titleSub:"Create a new account",buttonSub:"Register",stayConnected:"Stay logged in"},connected:{hello:"Welcome",account:"My account",disconect:"Sign out"},forgetPasswd:{title:"Reset your password",email:"Please enter your email address",returnConnection:"Back to login",errorEmail:"Incorrect email address",successEmail:"We sent you a new password by mail.",button:"Reset password"},matchingUser:{title:"Your email address",returnConnection:"Back to login",btnConnexion:"Sign in"},subscription:{title:"Create an account:",returnConnection:"Back to login",name:"Last name",firstName:"First name",email:"Email address",passwd:"Password",passwd2:"Confirm your password",button:"Submit",errorName:"Your last name must be at least two characters long",errorFirstName:" Your first name must be at least two characters long ",errorEmail:"Please enter a valid email address",errorPasswd:"The passwords must be identical and contain at least 4 characters",error:"We have encountered a problem, please wait a few seconds and try again",errorAlreadyExist:"This email address is already associated with an account"}},{connexion:{email:"Direcci\xf3n de e-mail",emailOrCode:"E-mail / C\xf3digo de cliente",passwd:"Contrase\xf1a",btnConnexion:"Conectarse",errorEmail:"La direcci\xf3n de e-mail no es v\xe1lida",errorPasswd:"La contrase\xf1a debe tener 4 caracteres como m\xednimo",errorLogin:"Por favor, revisa los datos de acceso a tu cuenta",forgetPasswd:"\xbfHas olvidado tu contrase\xf1a?",title:"Con\xe9ctate",titleSub:"\xbfTodav\xeda no tienes una cuenta?",buttonSub:"Crear cuenta",stayConnected:"Permanecer conectado"},connected:{hello:"Hola",account:"Tu cuenta",disconect:"Desconectarse"},forgetPasswd:{title:"Recuperar contrase\xf1a",email:"Por favor, indica tu direcci\xf3n de e-mail",returnConnection:"Volver",errorEmail:"Esta direcci\xf3n de e-mail no est\xe1 asociada a ninguna cuenta",successEmail:"Te hemos enviado un e-mail con tu contrase\xf1a.",button:"Recuperar contrase\xf1a"},matchingUser:{title:"Direcci\xf3n de e-mail",returnConnection:"Volver",btnConnexion:"Conectarse"},subscription:{title:"Crea tu cuenta:",returnConnection:"Volver",name:"Apellidos",firstName:"Nombre",email:"Direcci\xf3n de e-mail",passwd:"Contrase\xf1a",passwd2:"Confirmar contrase\xf1a",button:"Confirmar",errorName:"El apellido debe tener 2 caracteres como m\xednimo",errorFirstName:"El nombre debe tener 2 caracteres como m\xednimo",errorEmail:"Por favor, indica una direcci\xf3n de e-mail v\xe1lida",errorPasswd:"Las contrase\xf1as deben ser id\xe9nticas y tener 4 caracteres como m\xednimo",error:"Se ha producido un error. Por favor, int\xe9ntalo de nuevo en unos minutos",errorAlreadyExist:"Ya existe una cuenta asociada a esta direcci\xf3n de e-mail"}},{connexion:{email:"Ihre E-Mail-Adresse",emailOrCode:"E-Mail / Kundencode",passwd:"Ihr Passwort",btnConnexion:"Anmelden",errorEmail:"Ihre E-Mail-Adresse ist ung\xfcltig",errorPasswd:"Bitte geben Sie ein Passwort mit mindestens 4 Zeichen ein",errorLogin:"Bitte korrigieren Sie Ihren Benutzernamen",forgetPasswd:"Sie haben Ihr Passwort vergessen?",title:"Melden Sie sich an",titleSub:"Sie haben noch kein Konto?",buttonSub:"Anmeldung",stayConnected:"Angemeldet bleiben"},connected:{hello:"Willkommen",account:"Ihr Konto",disconect:"Abmeldung"},forgetPasswd:{title:"Zur\xfccksetzen Ihres Passworts",email:"Bitte geben Sie Ihre E-Mail-Adresse ein",returnConnection:"Zur\xfcck zur Anmeldung",errorEmail:"Leider entspricht diese E-Mail-Adresse keinem Konto",successEmail
3:"Ihr Passwort wurde Ihnen per E-Mail zugesandt.",button:"Mein Passwort zur\xfccksetzen"},matchingUser:{title:"Ihre E-Mail-Adresse",returnConnection:"Zur\xfcck zur Anmeldung",btnConnexion:"Anmelden"},subscription:{title:"Anlegen Ihres Kontos:",returnConnection:" Zur\xfcck zur Anmeldung",name:"Ihr Name",firstName:"Ihr Vorname",email:"Ihre E-Mail-Adresse",passwd:"Ihr Passwort",passwd2:"Ihr Passwort best\xe4tigen",button:"Anmelden",errorName:"Ihr Name muss mindestens 2 Zeichen enthalten",errorFirstName:"Ihr Vorname muss mindestens 2 Zeichen enthalten",errorEmail:"Bitte geben Sie eine g\xfcltige E-Mail-Adresse an",errorPasswd:"Ihre Passw\xf6rter m\xfcssen identisch sein und mindestens 4 Zeichen enthalten",error:"Ein Fehler ist entstanden, bitte versuchen Sie es in K\xfcrze erneut",errorAlreadyExist:"Diese E-Mail-Adresse wird bereits verwendet"}},{connexion:{email:"Il tuo indirizzo email",emailOrCode:"EMail / Codice cliente",passwd:"La tua password",btnConnexion:"Accedi al tuo account",errorEmail:"Il tuo indirizzo email non \xe8 valido",errorPasswd:"Inserisci una password con almeno 4 caratteri",errorLogin:"Correggi i tuoi dati",forgetPasswd:"Hai dimenticato la tua password?",title:"Login",titleSub:"Non hai ancora un account?",buttonSub:"Registrati",stayConnected:"Rimani collegato"},connected:{hello:"Salve",account:"Accedi",disconect:"Esci"},forgetPasswd:{title:"Recupero password",email:"Inserisci il tuo indirizzo email", 4returnConnection:"Ritorna al login",errorEmail:"Questo indirizzo email non appartiene a nessun account.",successEmail:"La tua password \xe8 stata inviata al tuo indirizzo email.",button:"Recupero password"},matchingUser:{title:"Il tuo indirizzo email",returnConnection:"Ritorna al login",btnConnexion:"Accedi al tuo account"},subscription:{title:"Crea il tuo account:",returnConnection:"Ritorna al login",name:"Cognome",firstName:"Nome",email:"Indirizzo email",passwd:"Password",passwd2:"Conferma password",button:"Accedi",errorName:"Il tuo cognome deve contenere almeno 2 caratteri",errorFirstName:" Il tuo nome deve contenere almeno 2 caratteri ",errorEmail:"Inserisci un indirizzo email valido",errorPasswd:"Le password devono essere identiche e contenere almeno 4 caratteri",error:"Si \xe8 verificato un errore. Riprova pi\xf9 tardi",errorAlreadyExist:"Questo indirizzo email \xe8 gi\xe0 in uso"}},{connexion:{email:"Uw emailadres",emailOrCode:"Email / Cli\xebntcode",passwd:"Uw wachtwoord",btnConnexion:"Inloggen",errorEmail:"Ongeldig emailadres",errorPasswd:"Uw wachtwoord moet minstens 4 tekens bevatten",errorLogin:"Corrigeer uw gegevens",forgetPasswd:"Wachtwoord vergeten?",title:"Inloggen",titleSub:"Nieuwe klant",buttonSub:"Account aanmaken",stayConnected:"Ingelogd blijven"},connected:{hello:"Welkom",account:"Uw account",disconect:"UItloggen"},forgetPasswd:{title:"Wachtwoord opvragen",email:"Vul uw emailadres in",returnConnection:"Terug naar inloggen",errorEmail:"Onbekend emailadres",successEmail:"Uw wachtwoord is verzonden",button:"Wachtwoord opvragen"},matchingUser:{title:"Uw emailadres",returnConnection:"Terug naar inloggen",btnConnexion:"Inloggen"},subscription:{title:"Account aanmaken",returnConnection:"Terug naar inloggen",name:"Achternaam",firstName:"Voornaam",email:"Emailadres",passwd:"Wachtwoord",passwd2:"Herhaalwachtwoord",button:"Maak account aan",errorName:"Uw naam moet minstens 2 tekens bevatten",errorFirstName:"Uw voornaam moet minstens 2 tekens bevatten",errorEmail:"Vul een geldig emailadres in",errorPasswd:"Beidde wachtwoorden moeten identiek zijn en minstens 4 tekens bevatten",error:"Er is een fout opgetreden. Probeer het over enkele ogenblikken nog eens.",errorAlreadyExist:"Dit emailadres is al in gebruik"}},{connexion:{email:"La vostra adre\xe7a de correu electr\xf2nic",emailOrCode:"E-mail / Codi del client",passwd:"La vostra contrasenya",btnConnexion:"Inicieu la sessi\xf3",errorEmail:"Adre\xe7a de correu electr\xf2nic no v\xe0lida",errorPasswd:"Introdu\xefu una contrasenya que contingui almenys 4 car\xe0cters",errorLogin:"Corregiu la vostra adre\xe7a de correu electr\xf2nic i la vostra contrasenya",forgetPasswd:"Has oblidat la teva contrasenya?",title:"Inicieu la sessi\xf3",titleSub:"Crea un compte nou",buttonSub:"Registrar-se",stayConnected:"Resta connectat"},connected:{hello:"Benvinguts",account:"El meu compte",disconect:"Tanqueu la sessi\xf3"},forgetPasswd:{title:"Restableix la teva contrasenya",email:"Introdu\xefu la vostra adre\xe7a de correu electr\xf2nic",returnConnection:"Tornar al registre",errorEmail:"Adre\xe7a de correu electr\xf2nic incorrecta",successEmail
4:"Us hem enviat una nova contrasenya per correu electr\xf2nic.",button:"Restableix la contrasenya"},matchingUser:{title:"La vostra adre\xe7a de correu electr\xf2nic",returnConnection:"Tornar al registre",btnConnexion:"Inicieu la sessi\xf3"},subscription:{title:"Creeu un compte:",returnConnection:"Tornar al registre",name:"Cognom",firstName:"Nom",email:"Adre\xe7a de correu electr\xf2nic",passwd:"Contrasenya",passwd2:"Confirma la teva contrasenya",button:"Enviar",errorName:"El vostre cognom ha de tenir com a m\xednim dos car\xe0cters",errorFirstName:" El vostre nom ha de tenir com a m\xednim dos car\xe0cters ",errorEmail:"Introdu\xefu una adre\xe7a de correu electr\xf2nic v\xe0lida",errorPasswd:"Les contrasenyes han de ser id\xe8ntiques i han de contenir almenys 4 car\xe0cters",error:"Hem trobat un problema, espereu uns segons i torna-ho a provar",errorAlreadyExist:"Aquesta adre\xe7a electr\xf2nica ja est\xe0 associada a un compte"}},{matchingUser:{returnConnection:"Voltar ao login",btnConnexion:"Iniciar Sess\xe3o",title:"O seu endere\xe7o de e-mail"},connected:{hello:"Bem-vindo",disconect:"Sair da sess\xe3o",account:"A minha conta"},forgetPasswd:{button:"Redefinir senha",returnConnection:"Voltar ao login",title:"Redefinir sua senha",successEmail:"N\xf3s lhe enviamos uma nova senha pelo correio.",email:"Por favor introduza o seu endere\xe7o de e-mail",errorEmail:"Endere\xe7o de e-mail incorreto"},connexion:{btnConnexion:"Iniciar Sess\xe3o",title:"Iniciar Sess\xe3o",passwd:"A sua senha",errorEmail:"Endere\xe7o de e-mail inv\xe1lido",titleSub:"Criar uma nova conta",email:"O seu endere\xe7o de e-mail",emailOrCode:"E-mail / C\xf3digo do cliente",buttonSub:"Registe-se",stayConnected:"Fique logado",forgetPasswd:"Esqueceu sua senha?",errorLogin:"Por favor corrija o seu endere\xe7o de e-mail e a sua senha",errorPasswd:"Por favor digite uma senha contendo pelo menos 4 caracteres"},subscription:{firstName:"Primeiro nome",email:"Endere\xe7o de e-mail",name:"Sobrenome",passwd2:"Confirme sua senha",passwd:"Senha",button:"Envie para",returnConnection:"Voltar ao login",title:"Crie uma conta:",errorAlreadyExist:"Este endere\xe7o de e-mail j\xe1 est\xe1 associado a uma conta",errorEmail:"Por favor introduza um endere\xe7o de e-mail v\xe1lido",errorPasswd:"As senhas devem ser id\xeanticas e conter pelo menos 4 caracteres",errorName:"O seu sobrenome deve ter pelo menos dois caracteres.",error:"Encontramos um problema por favor espere alguns segundos e tente novamente.",errorFirstName:"O seu primeiro nome deve ter pelo menos dois caracteres."}}],bindConfigToScope:!0,defaultConfig:{redirectUrl:null,inscription:0},defineScope:{ctx:{canLoginByCode:a.oxFramework.canLoginByCode(),selectedMatchingUser:null,config:{},coEmail:"",coPasswd:"",setConnect:function(){},coErrorPasswd:"",coErrorMail:"",coError:"",isErrorMail:!1,isErrorPasswd:!1,isConnectError:!1,isConnected:!1,user:{},currentStep:"",passwdMail:"",isErrorForgetPasswd:!1,isSuccessForgerPasswd:!1,coStayCo:!1,subName:"",subFirstName:"",subMail:"",subPasswd:"",subPasswd2:"",subErrName:!1,subErrFirstName:!1,subErrMail:!1,subErrPasswd:"",subError:!1,subErrorAlready:!1},setConnect:function(a){a&&a.preventDefault(),this.setConnect()},setDisconnect:function(a){a&&a.preventDefault(),this.setDisconnect()},goForgetPasswd:function(a){a&&a.preventDefault(),this.goForgetPasswd()},goConnect:function(a){a&&a.preventDefault(),this.goConnect()},setForgetPasswd:function(a){a&&a.preventDefault(),this.setForgetPasswd()},goSubscription:function(a){a&&a.preventDefault(),this.goSubscription()},goToSubscriptionPage:function(b){switch(b&&b.preventDefault(),f.device){case"mobile":a.location.assign("/PBSubscribe.asp?exitMobile=1");break;default:a.location.assign("/PBSubscribe.asp")}},goToAccountPage:function(b){b&&b.preventDefault(),"mobile"!==f.device||a.mobileConfig.mobileToRoot?a.location.assign("/PBUserAccount.asp"):a.location.assign("/MBUserAccount.asp")},setSubscription:function(a){a&&a.preventDefault(),this.setSubscription()},submitConnect:function(a){a&&a.preventDefault(),this.submitConnect()},submitMatchingUsers:function(a){a&&a.preventDefault(),this.submitMatchingUsers()},submitForgetPassword:function(a){a&&a.preventDefault(),this.submitForgetPassword()},submitSubscription:function(a){a&&a.preventDefault(),this.submitSubscription()},scOnClickClose:function(a){a.preventDefault(),this.dialog.close()}},rootScopeEvents:{},watchers:{"ctx.coEmail":"resetAllError","ctx.coPasswd":"resetAllError","ctx.Passwd":"resetAllError","ctx.subName":"resetAllError","ctx.subFirstName":"resetAllError","ctx.subPasswd":"resetAllError","ctx.subPasswd2":"resetAllError"},watchersCollection:{},promises:{},init:function(){this._super();var a=this.$scope.ctx.canLoginByCode?"emailOrCode":"email";this.$scope.translation.connexion.email=this.$scope.translation.connexion[a],this.isConnected(),this.autoConnect()},isConnected:function(){h.isConnected()?(this.$scope.ctx.user=h.getUser(),this.$scope.ctx.isConnected=!0):(this.$scope.ctx.isConnected=!1,this.$scope.ctx.currentStep="connect")}
4,validMail:function(a){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(a)},validCustomerCode:function(a){return/^[a-z0-9\-]{1,50}$/i.test(a)},validPasswd:function(a){a.length;return!0},verifSubscriptionForm:function(){var a=new Array;return this.resetErrorSubscription(),this.$scope.ctx.subName.length<1&&(a.push(!0),this.$scope.ctx.subErrName=!0),this.$scope.ctx.subFirstName.length<1&&(a.push(!0),this.$scope.ctx.subErrFirstName=!0),this.validMail(this.$scope.ctx.coEmail)||(a.push(!0),this.$scope.ctx.subErrMail=!0),this.$scope.ctx.subPasswd!=this.$scope.ctx.subPasswd2?(a.push(!0),this.$scope.ctx.subErrPasswd=!0):this.validPasswd(this.$scope.ctx.subPasswd)||(a.push(!0),this.$scope.ctx.subErrPasswd=!0),a.length},resetAllError:function(){this.resetErrorSubscription(),this.cleanErrorConnexion(),this.$scope.ctx.isErrorForgetPasswd=!1},resetErrorSubscription:function(){this.$scope.ctx.subErrName=!1,this.$scope.ctx.subErrFirstName=!1,this.$scope.ctx.subErrMail=!1,this.$scope.ctx.subErrPasswd=!1},cleanErrorConnexion:function(){this.$scope.ctx.isErrorMail=!1,this.$scope.ctx.coErrorMail="",this.$scope.ctx.isErrorPasswd=!1,this.$scope.ctx.coErrorPasswd=""},connect:function(b,c){var e=g.login({email:b,password:c});e.$promise.then(function(){if(e.error)switch(e.error){case 13:this.getGeneratePasswd();break;case 16:this.$scope.ctx.coError=e.message,this.$scope.ctx.isConnectError=!0;break;case 20:this.$scope.ctx.matchingUsers=e.matchingUsers,this.goMatchingUser();break;default:this.$scope.ctx.coError=this.$scope.translation.connexion.errorLogin,this.$scope.ctx.isConnectError=!0}else if(this.$scope.ctx.coStayCo&&this.setLoginToLocalStorage(this.$scope.ctx.coEmail,this.$scope.ctx.coPasswd),-1==this.$scope.redirectUrl){var b=g.getInfos();b.$promise.then(function(){b.user&&b.user.email&&(b.user.userid=11111),this.$scope.ctx.user=b.user,this.$scope.ctx.isConnected=!0,this.safeApply(),d.defer(function(){a.oxInfos=a.oxInfos||{},a.oxInfos.oxUser=this.$scope.ctx.user,this.$scope.$root.$emit("csAccountBox",this.$scope.ctx.user),this.$scope.$root.$emit("csAppAccountBox",this.$scope.ctx.user),this.emitRootScopeEvt({name:"connect",arg:[this.$scope.ctx.user]}),this.$scope.$root.$emit("user-update",this.$scope.ctx.user)}.bind(this))}.bind(this))}else 0==this.$scope.redirectUrl?a.location.reload():a.location.href=this.$scope.redirectUrl}.bind(this))},getGeneratePasswd:function(){var a=g.createPassword({email:this.$scope.ctx.coEmail});a.$promise.then(function(){if(1===a.result&&a.message){var b='<div class="c-cs-app-account-box__modal-content">'+a.message+'</div> <div class="c-cs-app-account-box__button-container"> <a href="" class="btnmain" ng-click="scOnClickClose($event)"> <span>{{::translation.forgetPasswd.returnConnection}}</span> </a> </div>';this.dialog=i.open({template:b,plain:!0,scope:this.$scope,className:"ngdialog-theme-oxatis cs-app-account-box-alert",showClose:!0,closeByEscape:!0,closeByDocument:!0})}}.bind(this))},subscribe:function(){var a=this,b=g.subScribe({lastName:a.$scope.ctx.subName,firstName:a.$scope.ctx.subFirstName,email:a.$scope.ctx.coEmail,passWord:a.$scope.ctx.subPasswd});b.$promise.then(function(){b.error?this.$scope.ctx.subError=!0:"updated"==b.user?this.$scope.ctx.subErrorAlready=!0:this.connect(this.$scope.ctx.coEmail,this.$scope.ctx.subPasswd)}.bind(this))},autoConnect:function(){if(this.$scope.ctx.isConnected)return!1;this.localStorage.get("login")&&this.localStorage.get("passwd")&&this.connect(this.localStorage.get("login"),this.localStorage.get("passwd"))},goForgetPasswd:function(){this.$scope.ctx.currentStep="forgetPasswd"},goMatchingUser:function(){this.$scope.ctx.currentStep="matchingUser"},goConnect:function(){this.$scope.ctx.currentStep="connect"},goSubscription:function(){this.$scope.ctx.currentStep="subscription"},setConnect:function(){this.cleanErrorConnexion();var a=this.validMail(this.$scope.ctx.coEmail),b=this.validCustomerCode(this.$scope.ctx.coEmail),c=this.$scope.ctx.canLoginByCode?a||b:a,d=this.validPasswd(this.$scope.ctx.coPasswd);c&&d?this.connect(this.$scope.ctx.coEmail,this.$scope.ctx.coPasswd):this.setErrorConnexion(c,d)},setErrorConnexion:function(a,b){a||(this.$scope.ctx.coErrorMail=this.$scope.translation.connexion.errorEmail,this.$scope.ctx.isErrorMail=!0),b||(this.$scope.ctx.coErrorPasswd=this.$scope.translation.connexion.errorPasswd,this.$scope.ctx.isErrorPasswd=!0)},setForgetPasswd:function(){var a=this,b=g.passwordRecovery({email:a.$scope.ctx.coEmail});b.$promise.then(function(){b.error?this.setErrorForgetPassword():this.setSuccessFordetPassword()}.bind(this))},setErrorForgetPassword:function(){this.$scope.ctx.isErrorForgetPasswd=!0},setSuccessFordetPassword:function(){this.$scope.ctx.isErrorForgetPasswd=!1,this.$scope.ctx.isSuccessForgetPasswd=!0},setLoginToLocalStorage:function(a,b){this.localStorage.set("login",a),this.localStorage.set("passwd",b)},setDisconnect:function(){this.localStorage.remove("login"),this.localStorage.remove("passwd"),a.oxTrackings("disconnect"),g.logout({}).$promise.then(function(){a.location.reload()})},setSubscription:function(){0==this.verifSubscriptionForm()&&this.subscribe()},submitConnect:function(){this.$scope.ctx.coEmail.length>0&&this.setConnect()},submitMatchingUsers:function(){this.$scope.ctx.selectedMatchingUser&&(this.$scope.ctx.coEmail=this.$scope.ctx.selectedMatchingUser.email,this.submitConnect())},submitForgetPassword:function(){this.$scope.ctx.coEmail.length>0&&this.setForgetPasswd()},submitSubscription:function(){this.$scope.ctx.subName.length>0&&this.$scope.ctx.subFirstName.length>0&&this.$scope.ctx.coEmail.length>0&&this.$scope.ctx.subPasswd.length>0&&this.$scope.ctx.subPasswd2.length>0&&this.setSubscription()}}))(b,{elem:j,attrs:k})}}))({name:e,hasExternalTemplate:!0,hasMobileTemplate:!0,type:"lazyDirective"})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csAppCrossSales";b.module("oxFramework").addDirective(e,["Directive","oxDirective","oxProductHelper","$window","$parse",function(a,c,d,f,g){return new(a.extend({scope:{maxCarouselElems:"<?",template:"@"},link:function(a,b,g){new(c.extend({name:e,translation:[{title:"Nos clients ont \xe9galement achet\xe9",addToCart:"Ajouter au panier",seeAllOptions:"Voir les d\xe9clinaisons",details:"D\xe9tails"},{title:"Our customers also purchased",addToCart:"Add to Cart",seeAllOptions:"See All Options",details:"Details"},{title:"Nuestros clientes tambi\xe9n han comprado",addToCart:"A\xf1adir a la cesta",
4seeAllOptions:"Ver las variaciones",details:"Detalles"},{title:"Passende Artikel",addToCart:"In den Warenkorb legen",seeAllOptions:"Ausf\xfchrungen ansehen",details:"weitere Infos"},{title:"I nostri clienti hanno acquistato anche",addToCart:"Acquista",seeAllOptions:"Vedere le variazioni",details:"Dettagli"},{title:"Anderen bekeken ook",addToCart:"In winkelwagen",seeAllOptions:"Zie alle opties",details:"artikelspecificaties"},{title:"Our customers also purchased",addToCart:"Add to Cart",seeAllOptions:"See All Options",details:"Details"},{title:"Os nossos clientes tambem comprarem",addToCart:"Adicionar ao cesto",seeAllOptions:"Ver as declina\xe7oes",details:"Detalhes"}],defineScope:{elemMinWidth:0,elemMaxWidth:0,responsive:!1,scGoTo:function(a,b){this._goToProduct(b)},scIsAddableToCart:function(a){return d.isAddableToCart(a)},scIsParentOptionSelected:function(a){return d.isParentOptionSelected(a)||!d.isAddableToCart(a)&&d.isOption(a)},scGetDiscountPourcent:function(a){return(100-100*a.discount).toFixed(0)}},init:function(){this.$scope.products=this.getConfig("cartRelatedProducts.products"),this.$scope.currencies=this.sharedData.currencies,this.attrs.maxCarouselElems||(this.$scope.maxCarouselElems=this.getConfig("cartRelatedProducts.maxCarouselElems")),this.attrs.template||(this.$scope.template=this.getConfig("cartRelatedProducts.template")),"-1"==this.$scope.maxCarouselElems&&(this.$scope.elemMaxWidth=400,this.$scope.responsive=!0)},_goToProduct:function(a){f.location.assign(a.url)}}))(a,{elem:b,attrs:g})},template:function(a,c){var d=c.template?c.template.toLowerCase():g("appConfig."+e+".cartRelatedProducts.template")(f)||"(id)npa",h=d.split(""),i='<div ng-if="products.length" class="lz-inner"><div class="lz-title PBSTitle c-cs-app-cross-sales__title">{{::translation.title}}</div><div class="lz-content c-cs-app-cross-sales__content"><div cs-carrousel max-elements="maxCarouselElems" elem-min-width="elemMinWidth" elem-max-width="elemMaxWidth" responsive="responsive" class="c-cs-app-cross-sales__carrousel"><div cs-carrousel-pane class="lz-pdt-wrapper" ng-repeat="product in products" cs-product-init pdt-id="product.id">',j={n:'<div class="lz-pdt-name"><a class="PBLink" href="{{::product.url}}" title="{{::product.name}}"><span class="PBShortTxt" ng-bind-html="::product.name"></span></a></div>',p:'<div class="lz-pdt-price"><div cs-price original-price="product.priceorg" price="product.price" original-secondary-price="product.secondaryPriceorg" secondary-price="product.secondaryPrice" secondary-currency="currencies.scndryCur" currency="currencies.mainCur"></div></div>',i:'<div class="lz-pdt-img" ng-if="product.itemImgFile || product.smallimg"><a href="{{::product.url}}"><img cs-data-src="{{::product.itemImgFile || product.smallimg}}"></a></div>',a:'<div class="lz-pdt-action"><a ng-show="scIsAddableToCart(product)" cs cs-add-to-cart pdt-id="product.id" class="btnmain btnaddtocart" cancel-propagation="true"><span>{{::translation.addToCart}}</span></a>
4<a ng-show="scIsParentOptionSelected(product)" href="{{::product.url}}" class="btnmain btnviewoptions"><span>{{::translation.seeAllOptions}}</span></a></div>',d:'<div class="lz-pdt-discount" ng-if="product.discount > 0"><span class="designBackColorMain designTextColorMain">- {{::scGetDiscountPourcent(product)}}%</span></div>',"(":'<div class="lz-group">',")":"</div>"};return b.forEach(h,function(a){var b=j[a];b&&(i+=b)}),i+="</div></div></div></div>"}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csAppOutofstockNotification";b.module("oxFramework").addDirective(e,["oxDirective","oxProductLnk","ngDialog","oxWs","$window","$parse",function(a,b,f,g,h,i){return{restrict:"AE",scope:{dynamic:"<?",pdtId:"<?",showBtnTriggerWhen:"<?"},link:function(j,k,l){new((j.dynamic?b:a).extend({name:e,translation:[{btnTrigger:"\xcatre alert\xe9 de la disponibilit\xe9",text:"Recevez un e-mail d\xe8s que cet article est disponible",placeholder:"Indiquez votre adresse e-mail",btnValidate:"Valider",msgOK:"Votre demande a \xe9t\xe9 prise en compte",btnClose:"Fermer",errorEmail:"Veuillez renseigner une adresse e-mail valide",errorExist:"Cette adresse e-mail a d\xe9j\xe0 \xe9t\xe9 utilis\xe9e pour cet article",error:"Une erreur est survenue"},{btnTrigger:"In stock alert",text:"Receive an email as soon as this item is available",placeholder:"Email address",btnValidate:"Confirm",msgOK:"Success! You will be notified as soon as this item is in stock",btnClose:"Close",errorEmail:"Please provide a valid email address",errorExist:"This email address has already been used for this item",error:"An error has occured"},{btnTrigger:"Recibir un aviso de disponibilidad",text:"Recibes un e-mail cuando el art\xedculo est\xe9 disponible",placeholder:"Indica tu direcci\xf3n de e-mail",btnValidate:"Confirmar",msgOK:"Tu solicitud ha sido registrada",btnClose:"Cerrar",errorEmail:"Por favor, indica una direcci\xf3n de e-mail v\xe1lida",errorExist:"Esta direcci\xf3n de e-mail ya ha sido utilizada para este producto",error:"Se ha producido un error"},{btnTrigger:"Nachricht erhalten, wenn Artikel verf\xfcgbar ist",text:"Lassen Sie sich per E-Mail benachrichtigen, sobald der Artikel verf\xfcgbar ist",placeholder:"Tragen Sie Ihre E-Mail-Adresse ein",btnValidate:"Best\xe4tigen",msgOK:"Ihre Bestellung/Anfrage wurde registriert",btnClose:"Schlie\xdfen",errorEmail:"Bitte geben Sie eine g\xfcltige E-Mail-Adresse ein",errorExist:"Diese E-Mail-Adresse wurde f\xfcr diesen Artikel bereits verwendet",error:"Es ist ein Fehler aufgetreten"},{btnTrigger:"Essere avvisato della disponibilit\xe0",text:"Ricevi un'email quando l'articolo \xe8 disponibile",placeholder:"Indica il tuo indirizzo email",btnValidate:"Conferma",msgOK:"La tua richiesta \xe8 stata registrata",btnClose:"Chiudi",errorEmail:"Indica un indirizzo email valido",errorExist:"L'indirizzo email indicato \xe8 stato utilizzato per quest'articolo",error:"Si \xe8 verificato un errore"},{btnTrigger:"Direct bericht bij voorraad",text:"Ontvang een bericht per email als het weer op voorraad is",placeholder:"uw email adres",btnValidate:"OK",msgOK:"Gelukt ! U ontvangt een berichtje als het artikel weer op voorraad is",btnClose:"Sluiten",errorEmail:"Geef een geldig emailadres op",errorExist:"Dit emailadres is al in gebruik voor dit artikel",error:"Er is een probleem opgetreden"},{btnTrigger:"Informa'm de la disponibilitat",text:"Rebeu un correu electr\xf2nic aix\xed que l'article estigui disponible",placeholder:"Indiqueu la vostra adre\xe7a electr\xf2nica",btnValidate:"Validar",msgOK:"La vostra sol\xb7licitud s'ha rebut correctament",btnClose:"Tancar",errorEmail:"Indiqueu una adre\xe7a electr\xf2nica v\xe0lida",errorExist:"Aquesta adre\xe7a electr\xf2nica ja s 19ha utilitzat per a aquest article",error:"S'ha produ\xeft un error"},{btnTrigger:"Ser avisado da disponibilidade",text:"Receba um e-mail logo que este artigo estiver dispon\xecvel",placeholder:"Introduza o seu em-mail",btnValidate:"Validar",msgOK:"O seu pedido foi feito com succeso",btnClose:"Fechar",errorEmail:"Introduza um e-mail valido",errorExist:"Este e-mail ja foi utilisado por este artigo",error:"Ocorreu um problema"}],defaultConfig:{showBtnTriggerWhen:[]},defineScope:{params:{patternEmail:/^.+@.+\..+$/,showBtnTrigger:!1,errorMsg:null},scOnClickTrigger:function(a){a.preventDefault(),a.stopPropagation(),this.showDialog()},scOnSubmitForm:function(a){return a.preventDefault(),this.sendData(),!1},scOnClickClose:function(a){a.preventDefault(),this.dialog.close()}},watchers:{"params.alertForm.email.$error.pattern && (params.alertForm.$submitted || params.alertForm.email.$touched)":function(a){a&&(this.$scope.params.errorMsg=this.$scope.translation.errorEmail)}},init:function(){this.$scope.dynamic?this._super():this.processStatic()},process:function(){var a=this.$scope.product,b=!1;if(a.outofstock||a.quantity<a.packagingqty){var c=this._getBtnTriggerConf();c&&c.length?(c.indexOf(".PBMsgOutOfStock")>-1&&1===a.stockscenario&&(b=!0),c.indexOf(".PBMsgAvailSupplier")>-1&&2===a.stockscenario&&(b=!0),c.indexOf(".PBMsgDiscontinued")>-1&&3===a.stockscenario&&(b=!0),c.indexOf(".PBMsgDaysToShip")>-1&&a.availabilitydelay&&a.showavailabilitydelay&&(b=!0)):b=!0}this.$scope.params.showBtnTrigger=b},_getBtnTriggerConf:function(){return this.$scope.showBtnTriggerWhen?this.$scope.showBtnTriggerWhen:this.getConfig("showBtnTriggerWhen")},processStatic:function(){this._getParentPdtId();var a=this.isAvailable();
4if(this.$scope.pdtId&&!a){var b=this._getBtnTriggerConf();b&&b.length?c(b.join(","),this.elem.closest("[data-pdt-id]").find(".PBStockTbl")).length&&(this.$scope.params.showBtnTrigger=!0):this.$scope.params.showBtnTrigger=!0}this.log("isAvailable",this.$scope.pdtId,this.$scope.params.isAvailable)},isAvailable:function(){var a=this.elem.closest("[data-pdt-id]"),b=a.find("[data-qty]").first().filter(function(){return!c(this).closest(".PBOptLstTable").length}).attr("data-max");if(d.isUndefined(b)){return"OutOfStock"!==a.find('[itemprop="availability"]').attr("content")}return b>0},sendData:function(){if(this.log("sendData",this.$scope.pdtId,this.$scope.params.alertForm,this.$scope.params.email),this.$scope.params.alertForm.$valid){this.log("setStockAlert","ProductID",this.$scope.pdtId,"Email",this.$scope.params.email);var a=g.setStockAlert({ProductID:this.$scope.pdtId,Email:this.$scope.params.email});a.$promise.then(d.bind(function(){if(this.log("promise then",a),"OK"===a.status)this.log("Status OK"),this.$scope.showOkMsg=!0;else switch(this.log("Status KO"),this.$scope.params.alertForm.email.$valid=!1,this.$scope.params.alertForm.$valid=!1,a.error){case"INVALID_EMAIL":this.$scope.params.errorMsg=this.$scope.translation.errorEmail;break;case"ALERT_ALREAY_EXIST":this.$scope.params.errorMsg=this.$scope.translation.errorExist;break;default:this.$scope.params.errorMsg=this.$scope.translation.error}},this))}},showDialog:function(){this.$scope.params.errorMsg=null,this.$scope.showOkMsg=!1,this.$scope.params.email=i("oxInfos.oxUser.email")(h);this.dialog=f.open({template:'<div class="lz-text">{{::translation.text}}</div><form ng-if="!showOkMsg" name="params.alertForm" novalidate class="lz-form"> <div class="lz-form-row" ng-class="{error: (params.alertForm.$submitted || params.alertForm.email.$touched) && !params.alertForm.email.$valid}"> <div class="lz-form-control lz-form-input"> <input type="text" name="email" ng-required="true" ng-model="params.email" placeholder="{{::translation.placeholder}}" ng-pattern="params.patternEmail"> </div> <div class="lz-form-msg" cs-bind-html="params.errorMsg"></div> </div> <div class="lz-form-actions"><a ng-click="scOnSubmitForm($event)" href="" class="btnmain" ng-disabled="!params.alertForm.$valid"><span>{{::translation.btnValidate}}</span></a></div></form><div ng-if="showOkMsg" class="lz-msg-ok"> <p><cs-icon icon="check"></cs-icon> {{::translation.msgOK}}</p> <div><a href="" class="btnmain" ng-click="scOnClickClose($event)"><span>{{::translation.btnClose}}</span></a></div></div>',plain:!0,scope:this.$scope,className:"ngdialog-theme-oxatis outofstock-notification",showClose:!0,closeByEscape:!0,closeByDocument:!0})}}))(j,{elem:k,attrs:l})},template:function(a,b){return b.template,'<a href="#outofstocknotification" ng-if="params.showBtnTrigger" class="btnmain" ng-click="scOnClickTrigger($event)"><span><cs-icon icon="bell-o"></cs-icon> {{::translation.btnTrigger}}</span></a>'}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csAppPriceInXInstallments";b.module("oxFramework").addDirective(e,["oxClass",function(a){return{restrict:"AE",scope:{},link:function(b,c,d){new(a.extend({name:e,defaultConfig:{installments:3,min:0},init:function(){var a=c.closest(".PBItemPrice").find(".PBSalesPrice").html(),b=a.replace(",",".").replace(/[^\d\.]+/g,"");this.$scope.price=b,this.$scope.installments=this.getConfig("installments"),this.$scope.min=this.getConfig("min")}}))(b,{elem:c,attrs:d})},template:function(a,b){return b.template,'<div cs-price-in-x-installments is-app="true" price="price" installments="installments" min="min"></div>'}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csBackToTop";b.module("oxFramework").addDirective(e,["Directive","oxDirective","$window",function(a,b,f){return new(a.extend({transclude:!0,scope:{trigger:"<?"},link:function(a,g,h){new(b.extend({name:e,defineScope:{params:{},animateToTop:function(){c("body, html").animate({scrollTop:0},800)}},init:function(){this.$scope.trigger=this.$scope.trigger||100,c(f).scroll(d.bind(this.process,this)),this.process(),this._super()},process:function(){(c(f).scrollTop()||0)>this.$scope.trigger?g.fadeIn():g.fadeOut()}}))(a,{elem:g,attrs:h})},template:function(a,b){return b.template,'<div ng-click="animateToTop()" class="lz-wrapper designBackColorMain designTextColorMain" ng-transclude></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csBrandIcon";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk",function(a,b){var c=b.extend({name:e,detailLevel:["brand"],defineScope:{params:{}},init:function(){this.$scope.fade=this.$scope.grayScale||1,this._super()},process:function(){var a=this;if(this.$scope.product.brandimgBW=this.$scope.product.brandimgBW||{},this.$scope.product.brandimg&&this.$scope.grayScale&&!this.$scope.product.brandimgBW[this.$scope.fade]){var b=this.localStorage.get(this.$scope.product.brandimg+"-"+this.$scope.fade);if(b)this.$scope.product.brandimgBW[this.$scope.fade]=b;else{this.$scope.product.brandimgBW[this.$scope.fade]="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=";var c=new Image;c.onload=function(){a.createThumbs(c)},c.src=this.$scope.product.brandimg}}},createThumbs:function(a){var b=this.localStorage.get(this.$scope.product.brandimg+"-"+this.$scope.fade);if(b)this.$scope.product.brandimgBW[this.$scope.fade]=b;else{var c=document.createElement("canvas"),d=c.getContext&&c.getContext("2d");if(d){c.width=a.width,c.height=a.height,d.drawImage(a,0,0,a.width,a.height);for(var e=d.getImageData(0,0,c.width,c.height),f=e.data,g=0,h=f.length;g<h;g+=4){var i=.4*f[g]+.5*f[g+1]+.16*f[g+2];i<this.$scope.fade&&(i=this.$scope.fade),f[g]=i,f[g+1]=i,f[g+2]=i}d.putImageData(e,0,0);var j=c.toDataURL("image/png");this.$scope.product.brandimgBW[this.$scope.fade]=j,this.localStorage.set(this.$scope.product.brandimg+"-"+this.$scope.fade,j)}}this.$scope.$root.safeApply()}});
4return new(a.extend({scope:{pdtId:"<?",grayScale:"<"},link:function(a,b,d){new c(a,{elem:b,attrs:d})},template:function(a,b){return b.template,'<div class="brandIcon"> <img ng-if="product.brandimg && !grayScale" cs-data-src="{{product.brandimg}}"> <img ng-if="grayScale && product.brandimgBW[fade]" ng-src="{{product.brandimgBW[fade]}}"> <div ng-if="!product.brandimg && product.brand" class="PBShortTxt">{{product.brand}}</div> </div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csBreadcrumb";b.module("oxFramework").addDirective(e,["Directive","oxLnk",function(c,d){return new(c.extend({scope:{catId:"<?",noClick:"<?",all:"<?"},link:function(c,f,g){new(d.extend({name:e,detailLevel:["name"],modeLevel:["hierarchy","canonical"],component:"shop",wsType:"category",translation:[{allProducts:"Tous les articles"},{allProducts:"All Products"},{allProducts:"Todos los productos"},{allProducts:"Alle Artikel"},{allProducts:"Tutti i prodotti"},{allProducts:"Alle artikelen"},{allProducts:"Tots els productes"},{allProducts:"Todos os artigos"}],defineScope:{params:{}},init:function(){this.$scope.catId=this.$scope.catId||a.OxCatID1||a.OxCatID2||a.OxCatID3,this._super()},process:function(){var a=c.categories=this.sharedData.categoryTree.data;b.forEach(a,function(a){a.canonicalUrl=a.canonicalUrl||"PBSCCatalog.asp?CatID="+a.id})}}))(c,{elem:f,attrs:g})},template:function(a,b){var c="";switch(oxFramework.device){case"mobile": 5c='<ul class="c-cs-breadcrumb__inner">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li ng-if="all" class="c-cs-breadcrumb__all" id="catbclevel0"><a class="PBBtnStd" href="/PBSCCatalog.asp?PBMInit=1">{{translation.allProducts}}</a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li ng-repeat-start="catId in category.hierarchy" class="c-cs-breadcrumb__separator" ng-show="($index || all)" ng-if="catId != \'root\'">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<cs-icon icon="angle-right" />\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li ng-repeat-end class="c-cs-breadcrumb__item" id="catbclevel{{all ? ($index + 1) : $index}}" ng-if="catId != \'root\'">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a ng-if="!noClick" class="c-cs-breadcrumb__link" href="{{categories[catId].canonicalUrl}}">{{categories[catId].name}}</a>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a ng-if="noClick" class="c-cs-breadcrumb__text">{{categories[catId].name}}</a>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>';break;default:c='<ul class="catbreadcrumb">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li ng-if="all" class="catbcall" id="catbclevel0"><a class="PBBtnStd" href="/PBSCCatalog.asp?PBMInit=1">{{translation.allProducts}}</a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li ng-repeat-start="catId in category.hierarchy" class="catbcsep" ng-show="$index || all">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class="PBBtnStd"><span class="catbcseptex">></span></a>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li ng-repeat-end class="catbcname" id="catbclevel{{all ? ($index + 1) : $index}}">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a ng-if="!noClick" class="PBBtnStd" href="{{categories[catId].canonicalUrl}}">{{categories[catId].name}}</a>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a ng-if="noClick" class="PBBtnStd">{{categories[catId].name}}</a>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>'}return c}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csBundle",["Directive","oxProductLnk","oxClass",function(a,c,e){return new(a.extend({scope:{pdtId:"<?",shopcartLine:"=?",outputIdList:"=?"},controller:["$scope",function(a){var c=e.extend({name:"csBundle",detailLevel:["list","bundleContent"],data:{prices:{},currencies:{},bundleItems:[],idList:[]},watchers:{pdtId:"_whenPdtIdChange"},_whenPdtIdChange:function(){this.$scope.pdtId&&(this.data.bundleItems.length=0,void 0!==this.$scope.shopcartLine?(this.addRootScopeEvt({"csCartContent-data":"getPdtDataFromCart"}),this.wsManager.getCartContent()):(this.addRootScopeEvt({"csProducts-data":"getPdtData"}),this.wsManager.getProductById(this.$scope.pdtId,this.detailLevel)))},getPdtDataFromCart:function(){var a=this.sharedData.cartContent.data;if(a.products&&a.products[this.$scope.shopcartLine]){this.killRootScopeEvt("csCartContent-data");var c=a.products[this.$scope.shopcartLine];c.bundlecontent&&c.bundlecontent.length?(this.$scope.product=c,this.isLineProduct=!0,b.extend(this.data.bundleItems,c.bundlecontent),this.data.idList=d.pluck(this.data.bundleItems,"pdtid"),this.getBundleContent()):(this.addRootScopeEvt({"csProducts-data":"getPdtData"}),this.wsManager.getProductById(this.$scope.pdtId,this.detailLevel))}},getPdtData:function(){var a=this.sharedData.products.data[this.$scope.pdtId];a&&this.wsManager.areAllInArray(a.detailLevel,this.detailLevel)&&(this.killRootScopeEvt("csProducts-data"),a.bundledItems&&a.bundledItems.length&&(this.$scope.product=a,b.extend(this.data.bundleItems,a.bundledItems),this.data.idList=d.pluck(this.data.bundleItems,"pdtid"),this.getBundleContent()))},getBundleContent:function(){this.$scope.outputIdList=this.data.idList,d.extend(this.data.currencies,this.sharedData.currencies),this.$scope.$root.safeApply(),this.addRootScopeEvt({"csProducts-data":"checkBundleElements"}),this.wsManager.getProductById(this.data.idList,["list"])},checkBundleElements:function(){var a=!0;d.each(this.data.bundleItems,d.bind(function(b,c){b.data=this.sharedData.products.data[this.data.idList[c]],b.data&&this.wsManager.areAllInArray(b.data.detailLevel,["list"])||(a=!1)},this)),a&&(this.killRootScopeEvt("csProducts-data"),this.calculate())},calculate:function(){var a=this.$scope.product;this.data.prices.priceorg=0,this.data.prices.price=this.isLineProduct?a.itemPrice:a.price,!this.isLineProduct&&a.secondaryPrice&&(this.data.prices.secondaryPrice=a.secondaryPrice,this.data.prices.secondaryPriceorg=0),this.isLineProduct&&this.sharedData.currencies.scndryRate&&(this.data.prices.secondaryPrice=a.itemPrice*this.sharedData.currencies.scndryRate,this.data.prices.secondaryPriceorg=0),d.each(this.data.bundleItems,d.bind(function(a){this.data.prices.priceorg+=a.data.price*a.qty,a.data.secondaryPrice&&(this.data.prices.secondaryPriceorg+=a.data.secondaryPrice*a.qty)},this)),this.data.prices.discount=parseFloat((this.data.prices.priceorg&&this.data.prices.priceorg!==this.data.prices.price?this.data.prices.price/this.data.prices.priceorg:1).toFixed(2)),d.each(this.data.bundleItems,d.bind(function(a){a.price=a.data.price*this.data.prices.discount,a.secondaryPrice=a.data.secondaryPrice*this.data.prices.discount},this))}});
5this.ctrl=new c(a)}],link:function(a,b,d){new(c.extend({init:function(){this.attrs&&this.elem&&!this.attrs.pdtId&&(this._getParentPdtId(),this.addRootScopeEvt({"update-pdtId":function(){this._getParentPdtId()}}))}}))(a,{elem:b,attrs:d})}}))({name:"csBundle"})}]);b.module("oxFramework").addDirective("csBundlePrice",["Directive","oxDirective",function(a,b){return new(a.extend({require:"^csBundle",scope:{showDiscount:"<?"},link:function(a,c,d,e){new(b.extend({name:"csBundlePrice",init:function(){this.$scope.currencies=e.ctrl.data.currencies,this.$scope.prices=e.ctrl.data.prices},watchers:{prices:{name:function(){this.$scope.discount=!!this.$scope.showDiscount&&this.$scope.prices.discount},deep:!0}}}))(a,{elem:c,attrs:d})},template:'<div cs-price original-price="prices.priceorg" price="prices.price" discount="discount" original-secondary-price="prices.secondaryPriceorg" secondary-price="prices.secondaryPrice" secondary-currency="currencies.scndryCur" currency="currencies.mainCur"></div>'}))({name:"csBundlePrice"})}]);b.module("oxFramework").addDirective("csBundleList",["Directive","oxDirective",function(a,b){return new(a.extend({require:"^csBundle",restrict:"A",priority:10,scope:{showDiscount:"<?",template:"@",maxElements:"@",auto:"@",delay:"@"},link:function(a,c,d,e){new(b.extend({init:function(){this.$scope.bundleItems=e.ctrl.data.bundleItems,this.$scope.currencies=e.ctrl.data.currencies,this.$scope.prices=e.ctrl.data.prices},watchers:{prices:{name:function(){this.$scope.discount=!!this.$scope.showDiscount&&this.$scope.prices.discount},deep:!0}}}))(a,{elem:c,attrs:d})},template:function(a,b){var c;switch(b.template){case"carrousel+prices":c='<div cs-carrousel ng-if="bundleItems.length"'+(b.maxElements?' max-elements="'+b.maxElements+'"':"")+(b.auto?' auto="'+b.auto+'"':"")+(b.delay?' delay="'+b.delay+'"':"")+'><div cs-carrousel-pane ng-repeat="item in bundleItems"><div cs cs-product-img pdt-id="item.data.id"></div><div cs cs-product-name pdt-id="item.data.id"></div><div ng-if="item.qty > 1" class="CS-bundleQty">x {{item.qty}}</div><div cs cs-price original-price="item.data.priceorg" price="item.price" discount="discount" original-secondary-price="item.data.secondaryPriceorg" secondary-price="item.secondaryPrice" secondary-currency="currencies.scndryCur" currency="currencies.mainCur"></div></div>';break;case"carrousel":c='<div cs-carrousel ng-if="bundleItems.length"'+(b.maxElements?' max-elements="'+b.maxElements+'"':"")+(b.auto?' auto="'+b.auto+'"':"")+(b.delay?' delay="'+b.delay+'"':"")+'><div cs-carrousel-pane ng-repeat="item in bundleItems"><div cs cs-product-img pdt-id="item.data.id"></div><div cs cs-product-name pdt-id="item.data.id"></div><div ng-if="item.qty > 1" class="CS-bundleQty">x {{item.qty}}</div></div>';break;case"prices":c='<div ng-repeat="item in bundleItems"><div cs cs-product-img pdt-id="item.data.id"></div><div cs cs-product-name pdt-id="item.data.id"></div><div ng-if="item.qty > 1" class="CS-bundleQty">x {{item.qty}}</div><div cs-price original-price="item.data.priceorg" price="item.price" discount="discount" original-secondary-price="item.data.secondaryPriceorg" secondary-price="item.secondaryPrice" secondary-currency="currencies.scndryCur" currency="currencies.mainCur"></div></div>';break;case"prices+ecopart":c='<div ng-repeat="item in bundleItems"><div cs cs-product-name pdt-id="item.data.id"></div><div cs cs-product-img pdt-id="item.data.id"></div><div ng-if="item.qty > 1" class="CS-bundleQty">x {{item.qty}}</div><div cs-price original-price="item.data.priceorg" price="item.price" discount="discount" original-secondary-price="item.data.secondaryPriceorg" secondary-price="item.secondaryPrice" secondary-currency="currencies.scndryCur" currency="currencies.mainCur"></div><div cs cs-product-eco-part pdt-id="item.data.id"></div></div>';break;default:c='<div ng-repeat="item in bundleItems"><div cs cs-product-img pdt-id="item.data.id"></div><div cs cs-product-name pdt-id="item.data.id"></div><div ng-if="item.qty > 1" class="CS-bundleQty">x {{item.qty}}</div></div>'}return c}}))({name:"csBundleList"})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csCartWeight";b.module("oxFramework").addDirective(e,["Directive","oxDirective","oxWs","$filter","$parse",function(b,c,f,g,h){return new(b.extend({scope:{},link:function(b,f,i){new(c.extend({name:e,localStorageType:"sessionStorage",translation:[{text:'Votre panier p\xe8se actuellement <span class="c-cs-cart-weight__total-weight">{{totalWeight}} {{unit}}</span>.',kg:"Kilo",kgs:"Kilos",g:"grammes"},{text:'Your cart weights <span class="c-cs-cart-weight__total-weight">{{totalWeight}} {{unit}}</span>.',kg:"Kilos",kgs:"Kilos",g:"grams"},{},{},{},{},{},{}],bindConfigToScope:!0,defaultConfig:{},defineScope:{ctx:{}},watchersCollection:{"cartContent.data":"process"},_getCartContent:function(){this.wsManager.getCartContent()},init:function(){this._super(),this.$scope.cartContent=this.sharedData.cartContent,this.initProcess()},initProcess:function(){if(this.localStorage.get("totalWeight")&&d.isEqual(this.localStorage.get("oxCart"),h("oxInfos.oxCart")(a))){var b={totalWeight:this.localStorage.get("totalWeight"),unit:this.localStorage.get("cartWeightUnit")};this.$scope.ctx.text=g("template")(this.$scope.translation.text,b)}else this._getCartContent()},process:function(b){if(b&&b.cartFeatures){var c=b.cartFeatures.cartTotalWeight,d={totalWeight:null,unit:""};c&&(c>999?(d.unit=1e3===c?this.$scope.translation.kg:this.$scope.translation.kgs,c/=1e3):d.unit=this.$scope.translation.g,d.totalWeight=c.toString(),this.localStorage.set("totalWeight",d.totalWeight),this.localStorage.set("cartWeightUnit",d.unit),this.localStorage.set("oxCart",h("oxInfos.oxCart")(a)),this.$scope.ctx.text=g("template")(this.$scope.translation.text,d))}}}))(b,{elem:f,attrs:i})},template:function(a,b){return b.template,'<div cs-bind-html="ctx.text"></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csCatHeader";b.module("oxFramework").addDirective(e,["Directive","oxLnk",function(b,c){return new(b.extend({restrict:"A",replace:!0,scope:{catId:"<?"},link:function(b,d,f){new(c.extend({name:e,detailLevel:["header"],modeLevel:["infos"],component:"shop",wsType:"category",defineScope:{params:{}},init:function(){this.$scope.catId=this.$scope.catId||a.OxCatID1||a.OxCatID2||a.OxCatID3,this._super()},process:function(){}}))(b,{elem:d,attrs:f})},template:function(a,b){return b.template,'<div class="PBLongTxt" cs-bind-html="category.header"></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csCatInfo",["Directive","oxLnk","$sce","oxWs",function(b,c,d,e){return new(b.extend({scope:{catId:"<?",info:"@",component:"@",maxChar:"<?",data:"=?"},link:function(b,f,g){new(c.extend({name:"csCatInfo",detailLevel:[],modeLevel:["infos"],wsType:"category",init:function(){this.$scope.catId=this.$scope.catId||a.OxCatID1||a.OxCatID2||a.OxCatID3,this.component=this.$scope.component||"shop";var b=g.info.replace(/imageAsBg/gi,"image");this.detailLevel.push(b),this._super()}
5,process:function(){switch(g.info){case"description":case"header":this.$scope.result=d.trustAsHtml(this.$scope.category[this.$scope.info]);break;case"image":case"imageAsBg":this.$scope.alt=this.$scope.category.name,this.$scope.result=this.$scope.category.imgfilename;break;default:this.$scope.result=this.$scope.category[this.$scope.info]}this.$scope.originalResult=this.$scope.result,g.data&&(this.$scope.data=this.$scope.result),this.reduce()},watchers:{maxChar:"reduce"},reduce:function(){this.$scope.originalResult&&(this.$scope.maxChar?this.$scope.result=e.helpers.reduce(this.$scope.result,this.$scope.maxChar):this.$scope.result=this.$scope.originalResult)}}))(b,{elem:f,attrs:g})},template:function(a,b){var c="";switch(b.info){case"description":case"header":c='<div cs-bind-html="result"></div>';break;case"image":c='<img ng-if="result" cs-data-src="{{result}}" alt="{{alt}}">';break;case"imageAsBg":c="<div ng-if=\"result\" class=\"imageAsBg\" ng-style=\"{'background-image' : 'url(' + result + ')' }\">";break;default:c="{{result}}"}return c}}))({name:"csCatInfo"})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csCatUrl",["Directive","oxLnk","$compile","oxLocationService",function(c,e,f,g){return new(c.extend({scope:{catId:"<",component:"@",method:"@",beforeGoto:"&"},link:function(c,f,h){new(e.extend({name:"csCatUrl",detailLevel:["url"],modeLevel:["canonical","infos"],wsType:"category",init:function(){this.$scope.catId=this.$scope.catId||a.OxCatID1||a.OxCatID2||a.OxCatID3,this.component=this.$scope.component||"shop",this._super()},process:function(){switch(this.url=this.$scope.category.canonicalUrl||this.$scope.category.url||"PBSCCatalog.asp?PBMInit=1","mobile"===b.module("oxFramework").device&&"PBSCCatalog.asp?PBMInit=1"===this.url&&(this.url="MBSCCatalog.asp"),h.method){case"href":this.elem.attr("href",this.url),(this.attrs.beforeGoto||g.hasBeforeAssign())&&this.elem.on("click",function(a){this.goTo(a)}.bind(this));break;case"event":this.elem.on("click",d.bind(this.goTo,this));break;default:this.elem.attr("onclick","window.location.assign('"+this.url+"')"),(this.attrs.beforeGoto||g.hasBeforeAssign())&&this.elem.on("click",function(a){this.goTo(a)}.bind(this))}},goTo:function(a){a&&a.preventDefault(),this.attrs.beforeGoto?this.oxHelpers.deferFn(this.$scope.beforeGoto).then(function(){g.assign(this.url,{catId:this.$scope.catId})}.bind(this)):g.assign(this.url,{catId:this.$scope.catId})},whenScopeDestroy:function(){this.elem.off(),this._super()}}))(c,{elem:f,attrs:h})}}))({name:"csCatUrl"})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csCheaperProduct",["$compile","oxWs","sharedData","ngDialog","$rootScope",function(b,d,e,f,g){return{restrict:"A",replace:!1,transclude:!0,template:'<div><span ng-click="openCheaperProduct()" ng-transclude></span></div>',scope:{wbId:"=",wbIdCallBack:"=",sessionCache:"=",preRender:"&",preCompile:"&",location:"=",className:"=",onEvent:"=?",ngdialogTheme:"@?"},link:function(b,d,e){b.openCheaperProduct=function(){f.open({template:'<div><form name="cheaperProductForm"><div cs cs-webblock wb-id="'+b.wbId+'" pre-render="preTotoRender(htmlContent)"></div></form></div>',plain:!0,className:"cheaperProductDialog cheaperProductDialog--main ngdialog-theme-"+(b.ngdialogTheme||"default"),scope:b})},g.$on("csWebblock-data",function(a,c){setTimeout(function(){b.controlValue()},100)}),g.$on("ngDialog.opened",function(a,c){setTimeout(function(){b.controlValue()},100)}),b.controlValue=function(){var b=c('[name="cheaperProductForm"]'),d=c('input[name="WBFlocation"]',b),e=c('input[name="WBFName"]',b),f=c('input[name="WBFFirstname"]',b),g=c('input[name="WBFEmail"]',b),h=c('input[name="WBFsku"]',b);d.length&&d.val(a.location.href),e.length&&a.oxInfos.oxUser&&e.val(a.oxInfos.oxUser.lastname),f.length&&a.oxInfos.oxUser&&f.val(a.oxInfos.oxUser.firstname),g.length&&a.oxInfos.oxUser&&g.val(a.oxInfos.oxUser.email),h.length&&void 0!==a.OxPdtFields&&a.OxPdtFields.sku&&h.val(a.OxPdtFields.sku)},b.submitCheaperProduct=function(){var a=c('[name="cheaperProductForm"]'),d=!1;if(c("input, textarea",a).each(function(){c(this).removeClass("val
5idationError"),c(this).attr("required")&&""===c(this).val()&&(c(this).addClass("validationError"),d=!0)}),!d){var e=a.serialize();c.post("PBCPPlayer.asp?PFORM=1&PW=1&ID="+b.wbId,e+"&ActionID=0",function(a){if(f.closeAll(),!b.wbIdCallBack)return!1;f.open({template:'<div><div cs cs-webblock wb-id="'+b.wbIdCallBack+'" ></div></div>',plain:!0,className:"cheaperProductDialog cheaperProductDialog--callback ngdialog-theme-"+(b.ngdialogTheme||"default"),scope:b})})}},b.preTotoRender=function(a){var b=a.replace(/onclick.+javascript:SubmitWBForm\(0\)"/gi,'ng-click="submitCheaperProduct()"');return b=b.replace(/onkeypress.+Key\(\)"/gi,""),b=b.replace(/wbvalreq\=\"1\"/gi,"required")}}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csChildrenCategories";b.module("oxFramework").addDirective(e,["oxLnk",function(c){return{restrict:"A",replace:!0,scope:{catId:"=?",outputId:"=?",changeCat:"=?",spa:"=?"},link:function(d,f,g){new(c.extend({name:e,detailLevel:["name"],modeLevel:["children","canonical","hierarchy"],component:"shop",wsType:"category",defineScope:{setCategories:function(a){!1!==this.$scope.changeCat?this.$scope.catId=a:this.$scope.outputId=a}},init:function(){this.$scope.catId=this.$scope.catId||a.OxCatID1||a.OxCatID2||a.OxCatID3,this._super()},process:function(){this.$scope.categories=this.sharedData.categoryTree.data,b.forEach(this.$scope.categories,function(a){a.canonicalUrl=a.canonicalUrl||"PBSCCatalog.asp?CatID="+a.id})}}))(d)},template:function(a,b){return b.template,'<ul><li ng-repeat="id in category.subCatIds" ng-class="{current : catId == id || outputId == id }"><a ng-if="!spa" class="PBBtnStd" href="{{categories[id].canonicalUrl}}">{{categories[id].name}}</a><a ng-if="spa" class="PBBtnStd" ng-click="setCategories(id)">{{categories[id].name}}</a></li></ul>'}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csChildrenSelectCategories";b.module("oxFramework").addDirective(e,["oxLnk","Directive",function(c,d){return new(d.extend({scope:{catId:"=?",outputId:"=?",initCatId:"=?",preFilter:"&",placeholder:"@?"},link:function(d,f,g){new(c.extend({name:e,detailLevel:["name"],modeLevel:["children","canonical"],component:"shop",wsType:"category",watchers:{selectedCatId:"updateCatId",catId:"resetCatId"},init:function(){this.$scope.catId=this.$scope.catId||a.OxCatID1||a.OxCatID2||a.OxCatID3,this._super()},process:function(){this.$scope.categories=jQuery.extend(!0,{},this.sharedData.categoryTree.data),this.$scope.subCatIds=b.copy(this.$scope.category.subCatIds),g.preFilter&&(this.$scope.subCatIds=this.$scope.preFilter({subCatIds:this.$scope.subCatIds})),this.$scope.placeholder&&this.$scope.subCatIds.length&&(this.$scope.subCatIds.unshift(0),this.$scope.categories[0]={name:this.$scope.placeholder},this.$scope.selectedCatId=0),this.$scope.initCatId&&(this.$scope.selectedCatId=this.$scope.initCatId),b.forEach(this.$scope.categories,function(a){a.canonicalUrl=a.canonicalUrl||"PBSCCatalog.asp?CatID="+a.id})},updateCatId:function(){d.outputId=d.selectedCatId,d.$root.$emit("csChildrenSelectCategories-change",d.outputId)},resetCatId:function(){d.outputId=null}}))(d,{elem:f,attrs:g})},template:function(a,b){return b.template,'<select ng-show="subCatIds.length > 0" ng-class="{current : catId == id }" ng-model="selectedCatId" ng-options="categories[id].name for id in subCatIds"></select>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csCompile",["oxClass","$compile",function(a,b){return{restrict:"A",link:function(c,d,e){new(a.extend({name:"csCompile",init:function(){var a=this.$scope.$eval(e.directive);d.removeAttr("cs-compile").removeAttr("directive"),d.attr(a,"");var c=this.$scope.$new();b(d[0])(c),this.$scope.$root.safeApply()}}))(c)}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csCountDown",["oxClass","$interval",function(c,d){return{restrict:"A",replace:!0,scope:{endTime:"@",interval:"=?",template:"=?",shortTranslations:"<?",usePlatformTime:"<?"},link:function(b,e,f){new(c.extend({name:"csCountDown",defineScope:{params:{},timer:null,displayTranslation:function(a){return this.$scope.shortTranslations?a.slice(0,1):a}},translation:[{hours:"Heure(s)",minutes:"Minute(s)",seconds:"Secondes",mseconds:" Milli Secondes",days:"Jour(s)",months:"Mois",years:"Ann\xe9(s)"},{hours:"Hour(s)",minutes:"Minute(s)",seconds:"Seconds",mseconds:" Milli Seconds",days:"Day(s)",months:"Month(s)",years:"Year(s)"},{hours:"Hour(s)",minutes:"Minute(s)",seconds:"Seconds",mseconds:" Milli Seconds",days:"Day(s)",months:"Month(s)",years:"Year(s)"},{hours:"Hour(s)",minutes:"Minute(s)",seconds:"Seconds",mseconds:" Milli Seconds",days:"Day(s)",months:"Month(s)",years:"Year(s)"},{hours:"Hour(s)",minutes:"Minute(s)",seconds:"Seconds",mseconds:" Milli Seconds",days:"Day(s)",months:"Month(s)",years:"Year(s)"},{hours:"Uur",minutes:"Minuten",seconds:"Seconden",mseconds:"Milliseconden",days:"Dagen",months:"Maanden",years:"Jaren"},{hours:"Hour(s)",minutes:"Minute(s)",seconds:"Seconds",mseconds:" Milli Seconds",days:"Day(s)",months:"Month(s)",years:"Year(s)"},{hours:"Hour(s)",minutes:"Minute(s)",seconds:"Seconds",mseconds:" Milli Seconds",days:"Day(s)",months:"Month(s)",years:"Year(s)"}],init:function(){this._super(),this.process()},process:function(){var b=this;this.$scope.interval=this.$scope.interval||1e3,this.$scope.template=this.$scope.template||"YMdhmsS",this.$scope.usePlatformTime&&a.oxInfos.serverDatetime?this.$scope.now=new Date(a.oxInfos.serverDatetime).getTime():this.$scope.now=(new Date).getTime(),this.$scope.futur=new Date(this.$scope.endTime).getTime(),this.$scope.futur<this.$scope.now||(this.$scope.timeStamp=this.$scope.futur-this.$scope.now,this.$scope.timer=d(function(){b.calculateTime()},this.$scope.interval),b.calculateTime())},calculateTime:function(){this.$scope.timeStamp=this.$scope.timeStamp-this.$scope.interval,this.$scope.timeStamp<=0&&(d.cancel(this.$scope.timer),this.emitRootScopeEvt({name:"finished",args:e})),this.$scope.mseconds=Math.floor(this.$scope.timeStamp/1e3%60),this.$scope.seconds=Math.floor(this.$scope.timeStamp/1e3%60),this.$scope.minutes=Math.floor(this.$scope.timeStamp/6e4%60),this.$scope.hours=Math.floor(this.$scope.timeStamp/36e5%24),this.$scope.days=Math.floor(this.$scope.timeStamp/36e5/24%30),this.$scope.months=Math.floor(this.$scope.timeStamp/36e5/24/30%12),this.$scope.years=Math.floor(this.$scope.timeStamp/36e5/24/365)}}))(b)},template:function(a,c){var d=(c.template||"YMDhmsS").split(""),e={Y:'<div class="lz-years" ng-show="years > 0">{{years}}<span>{{::displayTranslation(translation.years)}}</span> </div>',M:'<div class="lz-months" ng-show="months > 0">{{months}}<span>{{::displayTranslation(translation.months)}} </span> </div>',D:'<div class="lz-days" ng-show="days > 0">{{days}}<span>{{::displayTranslation(translation.days)}} </span> </div>',h:'<div class="lz-hours" ng-show="hours > 0">{{hours}}<span>{{::displayTranslation(translation.hours)}} </span> </div>',m:'<div class="lz-minutes" ng-show="minutes > 0">{{minutes}}<span>{{::displayTranslation(translation.minutes)}} </span> </div>',s:'<div class="lz-seconds" ng-show="minutes >= 0">{{seconds}}<span>{{::displayTranslation(translation.seconds)}} </span> </div>',S:'<div class="lz-mseconds" ng-show="intervals > 1000">{{mseconds}}<span>{{::displayTranslation(translation.mseconds)}}</span> </div>'},f="<div>";return b.forEach(d,function(a){var b=e[a];b&&(f+=b)}),f+="</div>"}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csCountry",["oxClass","oxWs",function(a,b){return{restrict:"A",scope:{countryId:"="},link:function(b,c,e){new(a.extend({name:"csCountry",watchers:{countryId:"_getCountries"},_getCountries:function(){this.addRootScopeEvt({"csCountryList-data":"_whenCountries"}),this.wsManager.getCountryList()},_whenCountries:function(){this.$scope.country=d.findWhere(this.sharedData.countryList.data.list.countries,{id:this.$scope.countryId}),this.killRootScopeEvt("csCountryList-data")}}))(b)},template:function(a,b){return b.template,'<span class="cs-countryName">{{country.name}}</div>'}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csCouponCode",f=b.module("oxFramework");b.module("oxFramework").addDirective(e,["Directive","oxDirective","oxWs","$parse",function(a,b,c,d){return new(a.extend({scope:{},link:function(a,f,g){new(b.extend({name:e,defineScope:{form:{},data:{error:!1},valid:function(a){a.stopPropagation(),a.preventDefault(),this.validate()},blur:function(){this.$scope.data.error=!1;var a=d("couponForm.code")(this.$scope.form);a&&a.$setValidity("error",!0)},remove:function(a){a.stopPropagation(),a.preventDefault(),this.remove()}},translation:[{validateBtn:"OK",couponTitle:"Code promotionnel",n
5otExists:"Le code promotionnel saisi n'existe pas.",remove:"Supprimer",couponHasValueTitle:"Votre code promotionnel : "},{validateBtn:"OK",couponTitle:"Code promotionnel",notExists:"Le code promotionnel saisi n'existe pas.",remove:"Supprimer",couponHasValueTitle:"Votre code promotionnel : "},{validateBtn:"OK",couponTitle:"Code promotionnel",notExists:"Le code promotionnel saisi n'existe pas.",remove:"Supprimer",couponHasValueTitle:"Votre code promotionnel : "},{validateBtn:"OK",couponTitle:"Code promotionnel",notExists:"Le code promotionnel saisi n'existe pas.",remove:"Supprimer",couponHasValueTitle:"Votre code promotionnel : "},{validateBtn:"OK",couponTitle:"Code promotionnel",notExists:"Le code promotionnel saisi n'existe pas.",remove:"Supprimer",couponHasValueTitle:"Votre code promotionnel : "},{validateBtn:"OK",couponTitle:"Kortingscode",notExists:"Deze kortingscode bestaat niet",remove:"Verwijderen",couponHasValueTitle:"Uw kortingscode"},{validateBtn:"OK",couponTitle:"Code promotionnel",notExists:"Le code promotionnel saisi
5n'existe pas.",remove:"Supprimer",couponHasValueTitle:"Votre code promotionnel : "},{validateBtn:"OK",couponTitle:"Code promotionnel",notExists:"Le code promotionnel saisi n'existe pas.",remove:"Supprimer",couponHasValueTitle:"Votre code promotionnel : "}],init:function(){this.$scope.cartContent=this.sharedData.cartContent,this._getCart(),this._super()},watchersCollection:{cartContent:"_whenCartData"},_getCart:function(){this.wsManager.getCartContent()},_whenCartData:function(){this.$scope.data.coupon=this.$scope.data.coupon||d("data.cartFeatures.discountCoupon.value")(this.$scope.cartContent)},validate:function(){var a=c.sendCoupon({discountCoupon:this.$scope.data.coupon});a.$promise.then(function(){if(!a.discountCoupon.used){this.$scope.data.error=!0;var b=d("couponForm.code")(this.$scope.form);b&&b.$setValidity("error",!1)}this._getCart()}.bind(this))},remove:function(){this.$scope.data.coupon=null,c.sendCoupon({discountCoupon:""}).$promise.then(function(){this._getCart()}.bind(this))}}))(a,{elem:f,attrs:g})},template:function(a,b){var c;switch(f.device){case"mobile":c='<div class="c-cs-coupon-code__inner" ng-if="cartContent.data.cartFeatures.discountCoupon.exists"> <form class="c-cs-coupon-code__form-container" ng-if="!cartContent.data.cartFeatures.discountCoupon.value" novalidate name="form.couponForm" ng-submit="valid($event)"> <md-input-container md-no-float class="c-cs-coupon-code__input-container"> <input type="text" name="code" ng-blur="blur()" ng-model="data.coupon" placeholder="{{::translation.couponTitle}}"> <div ng-messages="form.couponForm.$error"> <div ng-message="error">{{::translation.notExists}}</div> </div> </md-input-container> <button class="c-cs-coupon-code__btn c-cs-coupon-code__btn--submit c-button c-button--secondary c-button--medium" type="submit"><span class="c-button__inner">{{::translation.validateBtn}}</span></button> </form> <div class="c-cs-coupon-code__value-container" ng-if="cartContent.data.cartFeatures.discountCoupon.value"> <span class="c-cs-coupon-code__value-label">{{::translation.couponHasValueTitle}}</span> <span class="c-cs-coupon-code__value-code">{{data.coupon}}</span> <button class="c-cs-coupon-code__btn c-cs-coupon-code__btn--remove c-button c-button--secondary c-button--medium" ng-click="remove($event)"><span class="c-button__inner">{{::translation.remove}}</span></button> </div></div>';break;default:c='<div ng-if="cartContent.data.cartFeatures.discountCoupon.exists"><div class="PBStatic">{{translation.couponTitle}}</div><div><input class="PB" type="text" ng-model="data.coupon" ng-blur="blur()"><a class="btnmain" ng-click="valid()"><span>{{translation.validateBtn}}</span></a><div ng-if="data.error"> {{translation.notExists}} </div></div></div>'}return c}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csCrossSales",["$filter","oxClass","$window",function(a,c,e){return{restrict:"A",scope:{checkLimit:"=?",priority:"=?",maxElements:"=?",source:"=?",hasElements:"=?",template:"@",beforeSend:"&?"},link:function(f,g,h){new(c.extend({name:"csCrossSales",defineScope:{hasElements:!1,crossSales:{},goTo:function(a,b){if(this.$scope.beforeSend){a.preventDefault();var c=this.$scope.beforeSend({pdtId:b.id});!0===c?this._goToProduct(b):c&&d.isFunction(c.then)&&c.then(function(){this._goToProduct(b)})}else this._goToProduct(b)}},rootScopeEvents:{"csCartContent-data":"getCrossSales"},init:function(){this.$scope.checkLimit=parseInt(this.$scope.checkLimit||4),this.$scope.priority=this.$scope.priority||"itemPrice",this.wsManager.getCartContent(),this._super()},getCrossSales:function(){if(this.sharedData.cartContent.data.products){var c=this,d=a("limitTo")(a("orderBy")(this.sharedData.cartContent.data.products,this.$scope.priority),this.$scope.checkLimit);this.calls=d.length,this.detailLevel=this.$scope.source||["cross"],!b.isArray(this.detailLevel)&&(this.detailLevel=[this.detailLevel]),this.addRootScopeEvt({"csRelatedProducts-data":"updateScope"}),b.forEach(d,function(a){c.wsManager.getRelatedProducts(a.itemID,c.detailLevel)})}},updateScope:function(a,c){var d=this,e=this.sharedData.relatedProducts.data[c];e&&this.wsManager.areAllInArray(e.detailLevel,this.detailLevel)&&(e.crossIds.length&&(this.$scope.hasElements=!0),b.forEach(e.crossIds,function(a){d.$scope.hasElements=!0,d.$scope.crossSales[a]=d.sharedData.products.data[a]}),this.end())},end:function(){--this.calls<=0&&(this.killRootScopeEvt("csRelatedProducts-data"),this.$scope.$root.$emit("csCrossSales-data"))},process:function(){},_goToProduct:function(a){e.location.assign(a.url)}}))(f)},template:function(a,c){var d=c.template?c.template.toLowerCase():"nip",e=d.split(""),f='<div class="CS-crossSalesContent"><div cs-carrousel max-elements="maxElements"><div cs-carrousel-pane ng-repeat="crossSale in crossSales" ng-click="goTo($event, crossSale)">',g={n:'<div cs cs-product-name pdt-id="crossSale.id"></div>', 6p:'<div cs cs-product-price pdt-id="crossSale.id" show-prices-at-zero="false"></div>',v:'<div cs cs-product-alt-vat-price pdt-id="crossSale.id"></div>',i:'<div cs cs-product-img pdt-id="crossSale.id"></div>',a:'<div cs cs-add-to-cart-btn pdt-id="crossSale.id"></div>'};return b.forEach(e,function(a){var b=g[a];b&&(f+=b)}),f+="</div></div></div>"}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csCurrencySelect";b.module("oxFramework").addDirective(e,["Directive","oxClass","$parse","oxWs","oxPriceHelper","$filter",function(c,f,g,h,i,j){return new(c.extend({restrict:"A",replace:!1,scope:{template:"@"},link:function(c,g,h){new(f.extend({name:e,defaultConfig:{currencyList:[]},defineScope:{selectCurrency:function(a){this.$scope.ctx.selected=a,this.$scope.ctx.show=!1},toggle:function(){this.$scope.ctx.show=!this.$scope.ctx.show},close:function(){this.$scope.ctx.show=!1},ctx:{selected:null,show:!1}},watchers:{"ctx.selected":"update"},update:function(){if(this.$scope.ctx.selected){var a=this.$scope.currencies[this.$scope.ctx.selected];a&&(this.$scope.currentCurrency=a,i.setAlternativeCurrency(a.name),this.$scope.$root.$emit("currency-update"))}},init:function(){this._super(),this.addRootScopeEvt({"csCurrencies-data":"showCurrencies"}),this.wsManager.getCurrencies()},translation:[{EUR:"Euro",USD:"Dollar am\xe9ricain",NZD:"Dollar n\xe9o z\xe9landais",CAD:"Dollar canadien",BOB:"Dollar bolivien",AUD:"Dollar australien",NOK:"Couronne norv\xe9gienne",SEK:"Couronne su\xe9doise",P
6LN:"Zloty polonais",GBP:"Livre anglaise",CHF:"Franc suisse",XPF:"Franc pacifique",XOF:"Franc CFA",XAF:"Franc CFA d'Afrique centrale",CRC:"Colon costaricien",JPY:"Yen japonais",PEN:"Nouveau sol p\xe9ruvien",MXN:"Peso mexicain",ARS:"Peso argentin",CLP:"Peso chilien",COP:"Peso colombien",EGP:"Livre \xe9gyptienne",BRL:"R\xe9al br\xe9silien",ZAR:"Rand sud-africain"},{EUR:"Euro",USD:"US Dollar",NZD:"New Zealand Dollar",CAD:"Canadian Dollar",BOB:"Bolivian Boliviano",AUD:"Australian Dollar",NOK:"Norwegian Krone",SEK:"Swedish Krona",PLN:"Polish zloty",GBP:"Pound Sterling",CHF:"Swiss Franc",XPF:"CFP Franc",XOF:"CFA BEAC Franc",XAF:"CFA BCEAO Franc",CRC:"Costa Rican Colon",JPY:"Japanese Yen",PEN:"Peruvian Nuevo Sol",MXN:"Mexican Peso",ARS:"Argentine Peso",CLP:"Chilean Peso",COP:"Colombian Peso",EGP:"Egyptian Pound",BRL:"Brazilian Real",ZAR:"South African Rand"},{EUR:"Euro",USD:"D\xf3lar estadounidense",NZD:"D\xf3lar neozeland\xe9s",CAD:"D\xf3lar canadiense",BOB:"D\xf3lar boliviano",AUD:"D\xf3lar australiano",NOK:"Corona noruega",SEK:"Corona sueca",PLN:"Zloty polaco",GBP:"Libra brit\xe1nica",CHF:"Franco suizo",XPF:"Franco pac\xedfico",XOF:"Franco CFA",XAF:"Franco CFA de \xc1fica central",CRC:"Col\xf3n costarricense",JPY:"Yen japon\xe9s",PEN:"Nuevo sol peruano",MXN:"Peso mexicano",ARS:"Peso argentino",CLP:"Peso chileno",COP:"Peso colombiano",EGP:"Libra egipcia",BRL:"Real Brasile\xf1o",ZAR:"Rand sudafricano"},{EUR:"Euro",USD:"US-Dollar",NZD:"Neuseeland-Dollar",CAD:"Kanadischer Dollar",BOB:"Boliviano",AUD:"Australischer Dollar",NOK:"Norwegische Kronen",SEK:"Schwedische Kronen",PLN:"Zloty (Polen)",GBP:"Britisches Pfund",CHF:"Schweizer Franken",XPF:"CFP-Franc",XOF:"CFA-Franc",XAF:"CFA-Franc (BEAC)",CRC:"Col\xf3n (CRC)",JPY:"Yen",PEN:"Peruanischer Sol",MXN:"Mexikanischer Peso",ARS:"Argentinischer Peso",CLP:"Chilenischer Peso",COP:"Kolumbianischer Peso",EGP:"\xc4gyptisches Pfund",BRL:"Brasilianischer Real",ZAR:"S\xfcdafrikanischer Rand"},{EUR:"Euro",USD:"Dollaro americano",NZD:"Dollaro neozelandese",CAD:"Dollaro canadese",BOB:"Dollaro boliviano",AUD:"Dollaro australiano",NOK:"Corona norvegese",SEK:"Corona svedese",PLN:"Zloty polacco",GBP:"Sterlina inglese ",CHF:"Franco svizzero",XPF:"Franco pacifico",XOF:"Franco CFA",XAF:"Franco CFA d'Africa centrale",CRC:"Colon costaricano",JPY:"Yen giapponese",PEN:"Nuovo sol peruviano",MXN:"Peso messicano",ARS:"Peso argentino",CLP:"Peso cileno",COP:"Peso colombiano",EGP:"Libbra egiziano",BRL:"Reale brasiliano",ZAR:"Rand sudafricano"},{EUR:"Euro",USD:"Dollar - US",NZD:"Dollar - Nieuw-Zeeland",CAD:"Dollar - Canada",BOB:"Dollar - Bolivia",AUD:"Dollar - Australi\xeb",NOK:"Kroon - Noorwegen",SEK:"Kroon - Zweden",PLN:"Zloty - Polen",GBP:"Pond - UK",CHF:"Frank - Zwitserland",XPF:"Frank - Pacifique",XOF:"Franc CFA",XAF:"Franc CFA - Centraal-Afrika",CRC:"Colon - Costa Rica",JPY:"Yen - Japan",PEN:"Sol - Peru",MXN:"Peso - Mexico",ARS:"Peso - Argentini\xeb",CLP:"Peso - Chili",COP:"Peso - Colombia",EGP:"Egyptisch pond",BRL:"Braziliaanse Echte",ZAR:"Zuid-Afrikaanse rand"},{EUR:"Euro",USD:"D\xf2lar estatunidenc",NZD:"D\xf2lar neozeland\xe8s",CAD:"D\xf2lar canadenc",BOB:"D\xf2lar bolivi\xe0",AUD:"D\xf2lar australi\xe0",NOK:"Corona noruega",SEK:"Corona sueca",PLN:"Zloty polon\xe8s",GBP:"Lliura esterlina",CHF:"Franc su\xeds",XPF:"Franc CFP",XOF:"Franc CFA",XAF:"Franc CFA d'\xc0frica central",CRC:"Col\xf3n costa-riqueny",JPY:"Ien japon\xe8s",PEN:"Sol peru\xe0 actual",MXN:"Peso mexic\xe0",ARS:"Peso argent\xed",CLP:"Peso xil\xe8",COP:"Peso colombi\xe0",EGP:"Lliura eg\xedpcia",BRL:"Brazilian Real",ZAR:"South African Rand"},{EUR:"Euro",USD:"D\xf3lar americano",NZD:"D\xf3lar neozeland\xeas",CAD:"D\xf3lar canadiano",BOB:"D\xf3lar boliviano",AUD:"D\xf3lar australiano",NOK:"Coroa norueguesa",SEK:"Coroa sueca",PLN:"Zl\xf3ti polaco",GBP:"Libra inglesa",CHF:"Franco su\xed \xe7o",XPF:"Franco do Pac\xedfico",XOF:"Franco FA",XAF:"Franco CFA da \xc1frica Central",CRC:"Col\xf3n costa-riquenho",JPY:"Iene japon\xeas",PEN:"Novo Sol peruano",MXN:"Peso mexicano",ARS:"Peso argentino",CLP:"Peso chileno",COP:"Peso colombiano",EGP:"Libra eg\xedpcia",BRL:"Real brazylijski",ZAR:"Po\u0142udniowoafryka\u0144ski Rand"}],showCurrencies:function(){this.$scope.currencies=b.copy(this.sharedData.currencyList.data.list.currencies.currencyList),b.forEach(this.$scope.currencies,function(a){a.symbol='<span class="c-currency-select__currency-name">'+a.name+'</span> <span class="c-currency-select__currency-separator">-</span> <span class="c-currency-select__currency-symbol">'+a.format.replace(/(?:^|[^&])([#\s]+)/g,function(a,b){return a.replace(b,"")})+"</span>"});var c=this.getConfig("currencyList");c&&c.length||(c=["EUR","USD","GBP","NZD","CAD","AUD","NOK","SEK","BOB","CHF","PLN","XPF","XOF","XAF","CRC","JPY","PEN","MXN","ARS","CLP","COP","EGP","ZAR","BRL"]);var e=i._getCurrencyName(a.oxInfos.oxCurrency.mainFormat),f=a.oxInfos.oxCurrency.scndryFormat&&i._getCurrencyName(a.oxInfos.oxCurrency.scndryFormat);f&&(c=d.without(c,e)),f||d.contains(c,e)||c.unshift(e),this.$scope.userList=c;var g=i.getAlternativeCurrency();
6this.$scope.ctx.selected=g&&g.name||f||e}}))(c)},template:function(a,b){var c;switch(b.template){case"combo":c='<div class="c-currency-select"> <div ng-click="toggle()" class="c-currency-select__selected c-currency-select__item {{ctx.selected}}"> <span class="c-currency-select__name">{{translation[ctx.selected]}}</span> <span class="c-currency-select__currency" cs-bind-html="currencies[ctx.selected].symbol"></span> </div> <div class="c-currency-select__overlay" ng-if="ctx.show" ng-click="close()"></div> <ul class="c-currency-select__list" ng-if="ctx.show"> <li class="c-currency-select__list-elem c-currency-select__item {{currency}}" ng-repeat="currency in userList" ng-click="selectCurrency(currency)"> <span class="c-currency-select__name">{{translation[currency]}}</span> <span class="c-currency-select__currency" cs-bind-html="currencies[currency].symbol"></span> </li> </ul></div>';break;default:c='<select class="" ng-model="ctx.selected" ng-options="currency as ( translation[currency] + \' - \' + currencies[currency].name ) for currency in userList"> </select>'}return c}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csDateFromSku",["oxProductLnk",function(a){return{restrict:"A",replace:!1,scope:{pdtId:"=?"},link:function(b,c,d){new(a.extend({name:"csDateFromSku",detailLevel:["list"],process:function(){this.$scope.date=this.$scope.product.sku.split("-")[0]+"T000000Z"}}))(b,{elem:c,attrs:d})},template:function(a,b){return b.template,'<div class="PBDate" ng-if="date">{{date | date:"dd/MM/yyyy"}}</div>'}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d,e){b.module("oxFramework").addDirective("csDevBanner",["oxDirective","$parse","oxRoute",function(a,b,d){return{restrict:"A",scope:{env:"@?"},link:function(b,e,f){new(a.extend({name:"csDevBanner",translation:[{text:"VERSION"}],defineScope:{ctx:{showEnv:!1}},init:function(){this.process()},process:function(){this.$scope.ctx.frameworkEnv=d.frameworkEnvConfig,this.$scope.ctx.frontendAppsEnv=d.frontendAppsEnvConfig,this.$scope.ctx.appEnv=d.appEnvConfig,this.$scope.ctx.designEnv=d.designEnvConfig,/^prod$/i.test(d.designEnvConfig.env)&&(/^prod$/i.test(d.appEnvConfig.env)||/^idle$/i.test(d.appEnvConfig.env))?(this.elem.remove(),c("body").removeClass("has-dev-banner")):(this.$scope.ctx.showEnv=!0,c("body").addClass("has-dev-banner"))}}))(b,{elem:e,attrs:f})},template:function(a,b){var c=function(a){return'<div ng-if="ctx.showEnv && ctx.'.concat(a,"Env && ctx.").concat(a,"Env.env !== 'idle' && ctx.").concat(a,"Env.env !== 'prod'\" class=\"c-cs-dev-banner__container c-cs-dev-banner__container--{{ctx.").concat(a,'Env.env | lowercase}}">\n <div class="c-cs-dev-banner__inner" title="{{::ctx.').concat(a,'Env.version}}">\n <span class="c-cs-dev-banner__name">{{::ctx.').concat(a,'Env.shortName}}</span>\n <span class="c-cs-dev-banner__env">{{::ctx.').concat(a,"Env.env}}</span>\n </div>\n </div>")};return"".concat(c("design")).concat(c("app"))}}}])}(window,window.angular,window.angular.element,window._,window.oxFramework),function(a,b,c,d){b.module("oxFramework").addDirective("csDictionary",["oxClass","oxWs","oxRoute","$parse",function(c,d,e,f){return{restrict:"A",scope:{text:"="},link:function(g,h,i){new(c.extend({name:"csDictionary",init:function(){this.lngId=f("oxInfos.oxLang")(a)||0,this.languageFilePath=b.module("oxFramework").lang[this.lngId]||"fr";var c=this;this.sharedData.dictionary||(this.sharedData.dictionary=d.getCSV({file:e.config("root")+"dictionary_"+c.languageFilePath+".csv",separator:"|",firstColumnAsIndex:!0}))},defineScope:{match:function(a){return g.text&&(this.sharedData.dictionary[g.text.toLowerCase()]||g.text)}}}))(g)},template:function(a,b){return b.template,'<div class="PBShortTxt" ng-bind="match()"></div>'}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csDisclamer";b.module("oxFramework").addDirective(e,["oxDirective","ngDialog","oxLocalStorage",function(b,f,g){return{restrict:"AE",replace:!1,scope:{acceptOnLinks:"<?",acceptUrl:"@?",closingAction:"@?",content:"@?",contentHtml:"@?",customPageTrigger:"@?",dateBegin:"@?",dateEnd:"@?",declineUrl:"@?",displayOnAllPages:"<?",excludeList:"<?",localStorageExpiry:"@?",localStorageType:"@?",mobileDisplay:"@?",pageTrigger:"@?",template:"@?",theme:"@?",triggerAction:"@?",triggerDelay:"<?",triggerList:"<?",triggerPixels:"<?",urlParam:"@?",wbId:"<?",wbName:"
6<?"},link:function(h,i,j){return new(b.extend({name:e,bindConfigToScope:!0,localStorageType:"cookie",translation:[{confirm:{accept:"J'accepte",decline:"Je refuse"},alert:{accept:"OK"},cookies:{accept:"J'accepte"}},{confirm:{accept:"Accept",decline:"Decline"},alert:{accept:"OK"},cookies:{accept:"Accept"}},{confirm:{accept:"Acepto",decline:"Me niego a aceptar"},alert:{accept:"OK"},cookies:{accept:"Acepto"}},{confirm:{accept:"Ich akzeptiere",decline:"Ich weigere mich."},alert:{accept:"OK"},cookies:{accept:"Ich akzeptiere"}},{confirm:{accept:"Accetto",decline:"Io rifiuto"},alert:{accept:"OK"},cookies:{accept:"Accetto"}},{confirm:{accept:"Ik ga akkoord",decline:"Ik ga niet akkoord"},alert:{accept:"OK"},cookies:{accept:"Ik ga akkoord"}},{confirm:{accept:"Estic d'acord amb",decline:"Em nego"},alert:{accept:"OK"},cookies:{accept:"Estic d'acord amb"}},{confirm:{accept:"Eu aceito",decline:"Eu recuso"},alert:{accept:"OK"},cookies:{accept:"Eu aceito"}}],init:function(){this._super(),this.$scope.contentHtml||this.$scope.wbName||this.$scope.wbId||!this.$scope.content||(this.$scope.contentHtml=this.$scope.content),this.$scope.localStorageExpiry?this.localStorage.setStorageExpiry(60*this.$scope.localStorageExpiry):"localStorage"===this.$scope.localStorageType&&this.localStorage.setStorageExpiry(31536e5)},defineScope:{accept:function(){if(this.storeView(),this.emitRootScopeEvt({name:"accepted"}),this.$scope.acceptUrl&&""!==this.$scope.acceptUrl)return void a.location.assign(this.$scope.acceptUrl);this.dialog.close()},decline:function(){if(this.emitRootScopeEvt({name:"declined"}),"appPromoPopupNgdialog"!==j.componentId)return this.$scope.declineUrl&&""!==this.$scope.declineUrl?void a.location.assign(this.$scope.declineUrl):!a.history.length||a.history.length<2?void a.location.assign("http://www.google.com/"):void a.history.go(-1);this.storeView(),this.dialog.close()},ctx:{active:!1}},rootScopeEvents:{"csDisclamer-remote":"remote","ngDialog.opened":function(a,b){if(this.dialog&&b.attr("id")===this.dialog.id){var d=this;this.emitRootScopeEvt({name:"opened"}),this.$scope.acceptOnLinks&&c("#"+this.dialog.id+" .ngdialog-content").on("click","a[href]",function(a){d.storeView()})}},"ngDialog.closed":function(a,b){this.dialog&&b.attr("id")===this.dialog.id&&this.emitRootScopeEvt({name:"closed"})}},watchers:{wbId:"launch",wbName:"launch",contentHtml:"launch"},remote:function(a,b,c){if(b==this.$scope.requestValue)switch(c){case"clear":this.resetView();break;case"accept":this.storeView();break;case"acceptAndClose":this.storeView(),this.close();break;case"show":this.showWebBlock();break;case"show-once":this.showWebBlock(),this.storeView()}},parseUrl:function(){var a=document.location.search,b={};if(!a)return b;a=a.replace(/^\?/,"");for(var c=a.split(/[;&]/),d=0,e=c.length;d<e;d++){var f=c[d].split("=");if(f&&2===f.length){var g=unescape(f[0]).toLowerCase(),h=unescape(f[1]).replace(/\+/g," ");(b[g]=b[g]||[]).push(h)}}return b},launch:function(b){if(this.storage=new g({storageType:"sessionStorage",cookieFallback:!1}),this.$scope.excludeList&&c("#maincontainer"+this.$scope.excludeList.join(", #maincontainer")).length)return void this.emitRootScopeEvt({name:"notLaunched"});if(this.$scope.pageTrigger&&!parseInt(this.$scope.displayOnAllPages)){var f,h,i=(j.componentId||e)+"-pageCount",k=oxFramework.isMobile&&!a.mobileConfig.mobileToRoot?"/mobile/M":"/P",l=a.location.pathname;if("cartStep"===this.$scope.pageTrigger)f=k+"BShoppingCart.asp";else if(f=this.$scope.customPageTrigger,a.location.pathname===k+"BSCCatalog.asp"||a.location.pathname===k+"BSCProduct.asp"||a.location.pathname===k+"BCPPlayer.asp"){var m=a.location.search;m=m.replace(/(\&.*)/g,""),l+=m}else"/Default.asp"===l&&(l="/");var n=l.toLowerCase();if(this.storage.get(i)?(h=JSON.parse(this.storage.get(i)),h.length<3&&!h.includes(n)&&h.push(n)):h=[n],this.storage.set(i,JSON.stringify(h)),/^\d+$/.test(this.$scope.pageTrigger)){if(h.length!=this.$scope.pageTrigger)return void this.emitRootScopeEvt({name:"notLaunched"})}else if(l.toLowerCase()!==f.toLowerCase())return void this.emitRootScopeEvt({name:"notLaunched"})}if(a.location&&"secure.oxatis.com"===a.location.hostname)return void this.emitRootScopeEvt({name:"notLaunched"});if(!b||this.$scope.contentHtml&&d.isEmpty(this.$scope.template))return void this.emitRootScopeEvt({name:"notLaunched"});if(this.$scope.dateBegin&&this.$scope.dateEnd){this.$scope.ctx.beginDate=this.$scope.dateBegin.split("/"),this.$scope.ctx.endDate=this.$scope.dateEnd.split("/");var o=new Date(this.$scope.ctx.beginDate[2],this.$scope.ctx.beginDate[1]-1,this.$scope.ctx.beginDate[0],this.$scope.ctx.beginDate[3],this.$scope.ctx.beginDate[4]),p=new Date(this.$scope.ctx.endDate[2],this.$scope.ctx.endDate[1]-1,this.$scope.ctx.endDate[0],this.$scope.ctx.endDate[3],this.$scope.ctx.endDate[4]),q=new Date;if(o>q||p<q)return void this.emitRootScopeEvt({name:"notLaunched"})}switch(this.$scope.triggerAction){case"timer":var r=this.$scope.triggerDelay||3e3;d.delay(function(){this._launchDisclamer()}.bind(this),r);break;case"scroll":c(a).on("scroll.csDisclamer",function(){c(a).off("scroll.csDisclamer");var b=this.$scope.triggerDelay||400;d.delay(function(){this._launchDisclamer()}.bind(this),b)}.bind(this));break;case"setScroll":var s=this.$scope.triggerPixels||300;c(a).on("scroll.csDisclamer",function(){a.scrollY>s&&(this._launchDisclamer(),c(a).off("scroll.csDisclamer"))}.bind(this));break;default:this._launchDisclamer()}},_launchDisclamer:function(){if(this.$scope.wbId?(this.requestName="wb-id",this.$scope.requestValue=this.$scope.wbId):this.$scope.wbName?(this.requestName="wb-name",this.$scope.requestValue=this.$scope.wbName):this.$scope.contentHtml&&(this.requestName="html",this.$scope.requestValue=this.$scope.template),j.urlParam){this.parseUrl()[j.urlParam]&&this.storeView()}var a=this.localStorage.get(this.$scope.requestValue);a&&"undefined"!==a||this.showWebBlock()},storeView:function(){this.localStorage.set(this.$scope.requestValue,"true")},resetView:function(){this.localStorage.remove(this.$scope.requestValue)},close:function(){this.dialog&&this.dialog.close()},showWebBlock:function(){var a=oxFramework.isMobile&&"appPromoPopupNgdialog"===j.componentId,b=this,c="body",d="ngdialog-theme-default disclamer",e=this._getTemplate(),g=!this.$scope.closingAction||"none"!==this.$scope.closingAction;!a||"1"!==this.$scope.pageTrigger&&1!==this.$scope.displayOnAllPages&&"banner-display"!==this.$scope.mobileDisplay?(this.$scope.theme&&(d+=" "+this.$scope.theme),this.$scope.template&&(d+=" ngdialog-flex "+this.$scope.template)):(d=this.$scope.theme,this.$scope.template&&(d+=" "+this.$scope.template),c=".js-fixed-bottom-container"),this.dialog=f.open({template:e,plain:!0,scope:this.$scope,className:d,showClose:g,closeByEscape:g,closeByDocument:g,appendTo:c}),this.dialog.closePromise.then(function(a,c){switch(b.$scope.closingAction){case"decline":b.$scope.decline();break;
6case"close":b.storeView(),b.close();break;case"none":break;case"accept":default:b.$scope.accept()}})},_getTemplate:function(){var a;switch(a="html"===this.requestName?'<div cs-bind-html="contentHtml" html-encoded="true" class="disclamer-inner"></div>':"<div cs cs-webblock "+this.requestName+'="requestValue" class="disclamer-inner"></div>',this.$scope.template){case"confirm":a+='<div class="disclamer-actions"><a class=" c-button c-button--secondary disclamer-btn decline" ng-click="decline()"><span>{{::translation.confirm.decline}}</span></a><a class=" c-button c-button--primary disclamer-btn accept" ng-click="accept()"><span>{{::translation.confirm.accept}}</span></a></div>';break;case"alert":a+='<div class="disclamer-actions"><a class="btnmain accept" ng-click="accept()"><span>{{::translation.alert.accept}}</span></a></div>';break;case"custom":a+='<div class="disclamer-actions"></div>';break;case"cookies":a+='<div class="disclamer-actions"><a class="disclamer-btn accept" ng-click="accept()"><span>{{::translation.cookies.accept}}</span></a></div>'}return a}}))(h,{elem:i,attrs:j})}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csDiscount";b.module("oxFramework").addDirective(e,["Directive","oxDirective",function(a,b){return new(a.extend({scope:{discount:"<"},link:function(a,c,d){new(b.extend({name:e,defineScope:{discountPercent:0,showDiscount:!1},watchers:{discount:function(){this.$scope.discount<1&&this.$scope.discount>0?(this.$scope.showDiscount=!0,this.$scope.discountPercent=(100-100*this.$scope.discount).toFixed(0)):this.$scope.showDiscount=!1}},init:function(){this._super()}}))(a,{elem:c,attrs:d})},template:function(a,b){return b.template,'<div ng-if="showDiscount" class="c-cs-discount__inner"><div class="PBCurrency c-cs-discount__discount-value">- {{discountPercent}}%</div></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csDoubleSlider";b.module("oxFramework").addDirective(e,["Directive","oxDirective","$filter",function(a,b,f){return new(a.extend({replace:!0,scope:{min:"<",max:"<",step:"<",sliderValues:"=",unity:"<?",decimals:"<?",minRange:"<?",maxRange:"<?"},link:function(a,g,h){new(b.extend({name:e,defineScope:{params:{}},init:function(){this.downEvent="mousedown.csdoubleslider touchstart.csdoubleslider",this.upEvent="mouseup.csdoubleslider touchend.csdoubleslider",this.moveEvent="mousemove.csdoubleslider touchmove.csdoubleslider",this.killInitWatcher=this.$scope.$watch("sliderValues",d.bind(this.process,this)),this._super()},process:function(){if(this.$scope.sliderValues){this.killInitWatcher();for(var a,b,e,f,h,i=c(".sliderContainer",g),j=c(".sliderInfos",g),k=[],l=0,m=this.$scope.sliderValues.length;l<m;l++)b=c('<span class="cursor"></span>'),f=c('<span class="ruler"></span>'),a=c('<span class="pointer"></span>'),e=c('<span class="preview"></span>'),j.append(e),b.append(a),b.append(f),i.append(b),h={cursor:b,value:this.$scope.sliderValues[l],preview:e,idx:l},jQuery.data(a,"csDoubleSliderInfos",h),k.push(a),a.on(this.downEvent,d.bind(this.onPress,this,a));this.$scope.sliders=k,this.udateBar()}},watchers:{sliderValues:{name:"udateSource",deep:!0},min:"udateSource",max:"udateSource",unity:"udateSource"},udateSource:function(){if(this.$scope.sliders&&this.$scope.sliders.length){for(var a,b,c=0,d=this.$scope.sliders.length;c<d;c++)a=this.$scope.sliders[c],b=jQuery.data(a,"csDoubleSliderInfos"),b.value=this.$scope.sliderValues[c];this.udateBar()}},udateBar:function(){if(this.$scope.sliders)for(var a,b,c,d,e,g=0,h=this.$scope.sliders.length;g<h;g++)c=this.$scope.sliders[g],b=jQuery.data(c,"csDoubleSliderInfos"),d=b.idx>0&&jQuery.data(this.$scope.sliders[b.idx-1],"csDoubleSliderInfos"),e=b.idx<h-1&&jQuery.data(this.$scope.sliders[b.idx+1],"csDoubleSliderInfos"),a=b.value,a=Math.min(a,parseFloat(this.$scope.max)),e&&a>=e.value&&(a=e.value-this.$scope.step),a=Math.max(a,parseFloat(this.$scope.min)),d&&a<=d.value&&(a=d.value+this.$scope.step),this.$scope.minRange&&d&&a<=d.value+this.$scope.minRange&&(a=Math.ceil((d.value+this.$scope.minRange)/this.$scope.step)*this.$scope.step),this.$scope.maxRange&&d&&a>=d.value+this.$scope.maxRange&&(a=Math.ceil((d.value+this.$scope.maxRange)/this.$scope.step)*this.$scope.step),a=parseFloat(a.toFixed(2)),b.width=(parseFloat(a)-parseFloat(this.$scope.min))/(parseFloat(this.$scope.max)-parseFloat(this.$scope.min))*100,d&&(b.width-=d.width),b.cursor.width(b.width+"%"),this.$scope.unity?b.preview.html(this.$scope.unity.replace(/#/g,f("number")(a||"",this.$scope.decimals))):b.preview.html(f("number")(a||"",this.$scope.decimals)),b.value=a,this.$scope.sliderValues[g]=a},onPress:function(a,b){var e=jQuery.data(a,"csDoubleSliderInfos");e.origValue=e.value,b.pageX?e.offset=b.pageX:e.offset=b.originalEvent.touches[0].pageX,this.caculateNewValue(e,b),c(document).on(this.moveEvent,d.bind(this.caculateNewValue,this,e)),c(document).on(this.upEvent,d.bind(function(a){c(document).off(this.moveEvent),c(document).off(this.upEvent)},this))},caculateNewValue:function(a,b){var c;c=b.pageX?b.pageX-a.offset:b.originalEvent.touches[0].pageX-a.offset;var d=c/g.width();a.value=a.origValue+Math.round(d*(this.$scope.max-this.$scope.min)/parseFloat(this.$scope.step))*parseFloat(this.$scope.step),this.$scope.$root.safeApply(),this.udateBar()}}))(a,{elem:g,attrs:h})},template:function(a,b){return b.template,'<div><div class="sliderContainer"></div><div class="sliderInfos"></div></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csFacet",["oxClass","$parse",function(a,b){return{restrict:"A",replace:!1,scope:{name:"=",typeId:"=?",selectedId:"=?",outputId:"=?",multiple:"=?",imgRoot:"@"},link:function(c,e,f){new(a.extend({name:"csFacet",defineScope:{optionType:null,checkSelected:function(a){return this.$scope.multiple?-1!==d.indexOf(this.$scope.selectedId,a):this.$scope.selectedId===a}
6,setSelectedValue:function(a){if(this.$scope.multiple){this.$scope.selectedId=this.$scope.selectedId||[];var b=d.indexOf(this.$scope.selectedId,a);-1===b?this.$scope.selectedId.push(a):(delete this.$scope.selectedId[b],this.$scope.selectedId=d.compact(this.$scope.selectedId))}else this.$scope.selectedId=a;this.$scope.outputId=this.$scope.outputId||{},this.$scope.outputId[this.$scope.typeId]=this.$scope.selectedId}},watchers:{name:"whenNameChange"},whenNameChange:function(){this.$scope.name&&(this.addRootScopeEvt({"csOptionTypes-data":"whenData"}),this.wsManager.getOptionType(this.$scope.name))},whenData:function(){var a=b('sharedData.optionTypes.idList["'+this.$scope.name+'"].linkTo')(this);if(a){(this.$scope.optionType=this.sharedData.optionTypes.data[a])&&(this.killRootScopeEvt("csOptionTypes-data"),this.process())}},process:function(){this.$scope.typeId&&(this.$scope.outputId&&this.$scope.outputId[this.$scope.typeId]&&delete this.$scope.outputId[this.$scope.typeId],this.$scope.selectedId&&delete this.$scope.selectedId),this.$scope.typeId=this.$scope.optionType.typeId}}))(c)},template:function(a,b){return b.template,'<div class="CS-facet-name"><div cs cs-image-from-name name="optionType.name" root-cat="'+(b.imgRoot?b.imgRoot:"thumbs")+'"></div>{{optionType.name}}</div> <ul class="CS-facet-list"> <li ng-repeat="value in optionType.data" ng-class="{selected: checkSelected(value.id)}"> <span class="CS-facet-value" ng-click="setSelectedValue(value.id)"><span cs cs-image-from-name name="value.name" root-cat="'+(b.imgRoot?b.imgRoot:"thumbs")+'"></span> {{value.name}}</span> </li> </ul>'}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csFacetIcons",["oxProductLnk","$q","oxWs","oxRoute",function(a,c,e,f){return{restrict:"A",scope:{rootPath:"@",rootCat:"@",include:"=?",exclude:"=?",pdtId:"=?",searchImg:"=?",extension:"@"},link:function(g,h,i){new(a.extend({name:"csFacetIcons",init:function(){this.sharedData.facetImages=this.sharedData.facetImages||{},this.$scope.facetImages=this.sharedData.facetImages,this.extension=this.$scope.extension||"png",this._super()},detailLevel:["facets"],process:function(){this.$scope.searchImg=void 0===this.$scope.searchImg||this.$scope.searchImg,this.addClasses(),this.updateImage().then(d.bind(function(){this.$scope.$root.$emit("csFacetIcons-data",this.$scope.pdtId)},this))},updateImage:function(){function a(){--i<=0&&h.resolve()}var g,h=c.defer(),i=0;return b.forEach(this.$scope.product.facets,d.bind(function(c){if(this.$scope.include&&-1===d.indexOf(this.$scope.include,c.sysName)||this.$scope.exclude&&-1!==d.indexOf(this.$scope.exclude,c.sysName))return void(c.exclude=!0);i+=c.values&&c.values.length||0,b.forEach(c.values,d.bind(function(b){if(g=this.sharedData.facetImages[b.valueId])return void a();this.sharedData.facetImages[b.valueId]={};var c=new Image,h=(this.$scope.rootPath||f.config("root"))+(this.$scope.rootCat?this.$scope.rootCat+"/":"")+e.helpers.strechName(b.name)+"."+this.extension;c.onload=d.bind(function(){this.sharedData.facetImages[b.valueId].src=h,a()},this),c.onerror=a,c.src=h},this))},this)),h.promise},addClasses:function(){b.forEach(this.$scope.product.facets,d.bind(function(a){a.stretchedName=a.stretchedName||e.helpers.strechName(a.name),b.forEach(a.values,function(a){a.stretchedName=a.stretchedName||e.helpers.strechName(a.name)})},this))}}))(g,{elem:h,attrs:i})},template:function(a,b){var c="";return b.template,c+='<div ng-repeat="facet in product.facets" ng-if="!facet.exclude" class="CS-facet {{facet.stretchedName}} {{facet.sysName}}" ><div class="CS-facet-value {{facetValue.stretchedName}}" ng-repeat="facetValue in facet.values"><img ng-if="facetImages[facetValue.valueId].src" alt="{{facetValue.name}}" itemprop="image" ng-src="{{facetImages[facetValue.valueId].src}}"><span class="PBShortTxt facetImgSubsit" ng-if="!facetImages[facetValue.valueId].src">{{facetValue.name}}</span></div></div>'}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csFacetList";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk",function(a,b){return new(a.extend({scope:{pdtId:"<?",include:"<?",exclude:"<?",template:"@",rootCat:"@",dis
6playAltText:"@",extension:"@"},link:function(a,c,f){new(b.extend({name:e,detailLevel:["facets"],defineScope:{facets:[]},process:function(){var a=[];this.$scope.facets=[],this.$scope.include?(d.isArray(this.$scope.include)||(this.$scope.include=[this.$scope.include]),d.each(this.$scope.include,d.bind(function(b){var c=d.where(this.$scope.product.facets,{sysName:b});c.length&&(a=d.union(a,c))},this))):a=this.$scope.product.facets,this.$scope.exclude&&!d.isArray(this.$scope.exclude)&&(this.$scope.exclude=[this.$scope.exclude]),d.each(a,d.bind(function(a){this.$scope.exclude&&-1!==d.indexOf(this.$scope.exclude,a.sysName)||this.$scope.facets.push(a)},this))}}))(a,{elem:c,attrs:f})},template:function(a,b){var c,d=b.extension||"png",e="";switch(b.orderby&&(e="|orderBy:'"+b.orderby+"'"),b.template){case"icon-dictionary":c='<div class="facetBlock lz-facet-block {{facet.sysName | oxStrechName}}" ng-repeat="facet in facets"><div class="leftCol" cs cs-image-from-name name="facet.name" root-cat="'+(b.rootCat?b.rootCat:"thumbs")+'" display-alt-text="'+(!b.displayAltText||b.displayAltText)+'" extension="'+d+'"></div><div class="rightCol"><div ng-repeat="facetValue in facet.values'+e+'" class="PBShortTxt lz-facet-value {{facetValue.name | oxStrechName}}"><span cs cs-dictionary text="facetValue.name"></span></div></div></div>';break;case"icon-text":c='<div class="facetBlock lz-facet-block {{facet.sysName | oxStrechName}}" ng-repeat="facet in facets"><div class="leftCol" cs cs-image-from-name name="facet.name" root-cat="'+(b.rootCat?b.rootCat:"thumbs")+'" display-alt-text="'+(!b.displayAltText||b.displayAltText)+'" extension="'+d+'"></div><div class="rightCol"><div ng-repeat="facetValue in facet.values'+e+'" class="PBShortTxt lz-facet-value {{facetValue.name | oxStrechName}}">{{facetValue.name}}</div></div></div>';break;case"icon-icon":c='<div class="facetBlock lz-facet-block {{facet.sysName | oxStrechName}}" ng-repeat="facet in facets"><div class="leftCol" cs cs-image-from-name name="facet.name" root-cat="'+(b.rootCat?b.rootCat:"thumbs")+'" display-alt-text="'+(!b.displayAltText||b.displayAltText)+'" extension="'+d+'"></div><div class="rightCol"><div ng-repeat="facetValue in facet.values'+e+'" class="PBShortTxt lz-facet-value {{facetValue.name | oxStrechName}}" cs cs-image-from-name name="facetValue.name" root-cat="'+(b.rootCat?b.rootCat:"thumbs")+'" display-alt-text="'+(!b.displayAltText||b.displayAltText)+'"></div></div></div>';break;case"text-icon":c='<div class="facetBlock lz-facet-block {{facet.sysName | oxStrechName}}" ng-repeat="facet in facets"><div class="leftCol PBShortTxt">{{facet.name}}</div><div class="rightCol"><div ng-repeat="facetValue in facet.values'+e+'" class="PBShortTxt lz-facet-value {{facetValue.name | oxStrechName}}" cs cs-image-from-name name="facetValue.name" root-cat="'+(b.rootCat?b.rootCat:"thumbs")+'" display-alt-text="'+(!b.displayAltText||b.displayAltText)+'" extension="'+d+'"></div></div></div>';break;case"text-icon+text": 7c='<div class="facetBlock lz-facet-block {{facet.sysName | oxStrechName}}" ng-repeat="facet in facets"><div class="leftCol PBShortTxt">{{facet.name}}</div><div class="rightCol"><div ng-repeat="facetValue in facet.values'+e+'" class="lz-facet-value {{facetValue.name | oxStrechName}}"><div cs cs-image-from-name name="facetValue.name" root-cat="'+(b.rootCat?b.rootCat:"thumbs")+'" display-alt-text="'+(!b.displayAltText||b.displayAltText)+'" extension="'+d+'"></div><div class="PBShortTxt" >{{facetValue.name}}</div></div></div></div>';break;case"null-icon":c='<div class="facetBlock lz-facet-block {{facet.sysName | oxStrechName}}" ng-repeat="facet in facets"><div ng-repeat="facetValue in facet.values'+e+'" class="PBShortTxt lz-facet-value {{facetValue.name | oxStrechName}}" cs cs-image-from-name name="facetValue.name" root-cat="'+(b.rootCat?b.rootCat:"thumbs")+'" display-alt-text="'+(!b.displayAltText||b.displayAltText)+'" extension="'+d+'"></div></div>';break;case"null-icon/dictionary":c='<div class="facetBlock lz-facet-block {{facet.sysName | oxStrechName}}" ng-repeat="facet in facets"> <div ng-repeat="facetValue in facet.values'+e+'" class="lz-facet-value {{facetValue.name | oxStrechName}}"> <div cs cs-image-from-name name="facetValue.name" root-cat="'+(b.rootCat?b.rootCat:"thumbs")+'" extension="'+d+'"></div> <div cs cs-dictionary text="facetValue.name"></div> </div>';break;case"null-text":c='<div class="facetBlock lz-facet-block {{facet.sysName | oxStrechName}}" ng-repeat="facet in facets"><div ng-repeat="facetValue in facet.values'+e+'" class="PBShortTxt lz-facet-value {{facetValue.name | oxStrechName}}">{{facetValue.name}}</div></div>';break;default:c='<div class="facetBlock lz-facet-block" ng-repeat="facet in facets"><div class="leftCol PBShortTxt">{{facet.name}}</div><div class="rightCol"><div ng-repeat="facetValue in facet.values'+e+'" class="PBShortTxt lz-facet-value" >{{facetValue.name}}</div></div></div>'}return c}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csFacetSelect";b.module("oxFramework").addDirective(e,["Directive","$parse","$timeout","oxClass",function(a,c,f,g){return new(a.extend({scope:{facetData:"=",outValue:"=?"},link:function(a,c,h){new(g.extend({name:e,translation:[{defaultComboValue:"Aucun filtre",inStock:"En stock"},{defaultComboValue:"No filter",inStock:"In stock"}],delayed:null,cursorDelay:500,defineScope:{params:{reseted:!0},hasEnoughDelta:function(){return!d.isUndefined(this.$scope.tempoutValue[0])&&!d.isUndefined(this.$scope.tempoutValue[1])&&Math.abs(this.$scope.tempoutValue[0]-this.$scope.tempoutValue[1])>=1},isFacetHidden:function(){var a=this.$scope.facetData,b=this.$scope.minValue;return-2==a.typeId&&!this.$scope.hasEnoughDelta()&&b<1||(-5==a.typeId&&11!=a.renderType&&!this.$scope.hasEnoughDelta()&&b<1||-5==a.typeId&&11==a.renderType&&(a.data[0].MinValue>0||a.data[0].MinValue==a.data[0].MaxValue))},reset:function(){this.reset()},toggle:function(a,b){this.toggle(a,b)}},rootScopeEvents:{"csFacetSelect-reset":"reset"},init:function(){if(this.$scope.sharedData=this.sharedData,this.$scope.labelID="input-"+this.$scope.$id,this.$scope.outValue)this.instanciate();else var a=this.$scope.$watch("outValue",d.bind(function(){a(),this.instanciate()},this))},instanciate:function(){this.$scope.tempoutValue=[],this.grabValues(),this.$scope.delayedValue=b.copy(this.$scope.tempoutValue),this.addWatcher({delayedValue:{name:"onSetDelayed",deep:!0},tempoutValue:{name:"onValueUpdate",deep:!0}}),this.testSelected()},grabValues:function(){var a,c;if(-2==this.$scope.facetData.typeId||-5==this.$scope.facetData.typeId){var e=Math.floor(this.$scope.facetData.data[0].MinValue),f=Math.ceil(this.$scope.facetData.data[0].MaxValue);this.nameFacetSliderValues=-2==this.$scope.facetData.typeId?"facetSliderValuesPrice":"facetSliderValuesStock",this.$scope.facetData.data[0].MinSliderValue?this.sharedData[this.nameFacetSliderValues]={min:Math.floor(this.$scope.facetData.data[0].MinSliderValue),max:Math.ceil(this.$scope.facetData.data[0].MaxSliderValue)}:(this.sharedData[this.nameFacetSliderValues]=this.sharedData[this.nameFacetSliderValues]||{min:999999999999999,max:0},!d.isUndefined(e)&&(this.sharedData[this.nameFacetSliderValues].min=Math.min(e,this.sharedData[this.nameFacetSliderValues].min)),!d.isUndefined(f)&&(this.sharedData[this.nameFacetSliderValues].max=Math.max(f,this.sharedData[this.nameFacetSliderValues].max))),this.$scope.minValue=this.sharedData[this.nameFacetSliderValues].min,this.$scope.maxValue=this.sharedData[this.nameFacetSliderValues].max,this.$scope.outValue&&this.$scope.outValue.length?(a=this.$scope.outValue[0].split(/:/),c=a[1].split(/\|/),this.$scope.tempoutValue.push(Math.floor(parseFloat(c[0]))),this.$scope.tempoutValue.push(Math.ceil(parseFloat(c[1])))):(this.$scope.tempoutValue.push(e),this.$scope.tempoutValue.push(f))}else{var g={};b.forEach(this.$scope.outValue,d.bind(function(b){a=b.split(/:/),g[a[1]]=!0},this)),b.forEach(this.$scope.facetData.data,d.bind(function(a,b){if(g[a.ValueID])switch(parseInt(this.$scope.facetData.renderType)){case 0:case 5:case
76:case 7:case 8:case 9:case 10:this.$scope.tempoutValue[b]=a.ValueID;break;default:this.$scope.tempoutValue[0]=a.ValueID}},this))}},onSetDelayed:function(a,c){b.equals(a,c)||(this.delayed&&f.cancel(this.delayed),this.delayed=f(d.bind(function(){this.$scope.tempoutValue.length=0,b.extend(this.$scope.tempoutValue,this.$scope.delayedValue)},this),1e3))},onValueUpdate:function(a,c){if(this.$scope.facetData&&this.$scope.outValue&&!b.equals(a,c)){var e=[];switch(this.$scope.facetData.typeId){case-2:b.equals([this.$scope.minValue,this.$scope.maxValue],this.$scope.tempoutValue)||e.push("-2:"+this.$scope.tempoutValue[0]+"|"+this.$scope.tempoutValue[1]);break;case-5:b.equals([this.$scope.minValue,this.$scope.maxValue],this.$scope.tempoutValue)||e.push("-5:"+this.$scope.tempoutValue[0]+"|"+this.$scope.tempoutValue[1]);break;default:b.forEach(this.$scope.tempoutValue,d.bind(function(a){a&&e.push(this.$scope.facetData.typeId+":"+a)},this))}this.$scope.outValue.length=0,b.extend(this.$scope.outValue,e),this.testSelected()}},testSelected:function(){var a=!1;b.forEach(this.$scope.tempoutValue,function(b){b&&(a=!0)}),this.$scope.params.reseted=!a||(-2==this.$scope.facetData.typeId||-5==this.$scope.facetData.typeId)&&b.equals(this.$scope.tempoutValue,[this.sharedData[this.nameFacetSliderValues].min,this.sharedData[this.nameFacetSliderValues].max])},toggle:function(a,b){this.$scope.tempoutValue[a]?this.$scope.tempoutValue[a]=null:this.$scope.tempoutValue[a]=b},reset:function(){switch(this.$scope.facetData.typeId){case-2:case-5:this.$scope.tempoutValue.length=0,this.$scope.tempoutValue.push(this.$scope.minValue),this.$scope.tempoutValue.push(this.$scope.maxValue),b.extend(this.$scope.delayedValue,this.$scope.tempoutValue);break;default:this.$scope.tempoutValue.length=0}}}))(a,{elem:c,attrs:h})},template:function(a,b){return b.template,'<div class="lz-reset" ng-if="!params.reseted" ng-click="reset()"></div><div ng-if="facetData.typeId == -2" class="lz-facet-2"> <div cs cs-double-slider min="minValue" max="maxValue" step="1" slider-values="delayedValue" unity="sharedData.currencies.mainFormat"></div></div><div ng-if="facetData.typeId == -5" class="lz-facet-5"> <div cs cs-double-slider min="minValue" max="maxValue" step="1" slider-values="delayedValue"></div></div> <div ng-if="facetData.renderType == 0" class="lz-facet0"> <div ng-repeat="value in facetData.data" class="lz-checkbox"> <label> <input type="checkbox" ng-model="tempoutValue[$index]" ng-true-value="{{value.ValueID}}" ng-false-value="null"> <span>{{value.ValueName}}</span> </label> </div> </div> <div ng-if="facetData.renderType == 1" class="lz-facet1"> <div ng-repeat="value in facetData.data"> <label> <input type="radio" name="facetRadio-{{facetData.typeId}}" ng-model="tempoutValue[0]" ng-value="value.ValueID"> <span>{{value.ValueName}}</span> </label> </div> </div> <div ng-if="facetData.renderType == 2" class="lz-facet2"> <select ng-options="value.ValueID as value.ValueName for value in facetData.data" ng-model="tempoutValue[0]"></select> </div> <div ng-if="facetData.renderType == 5" class="lz-facet5"> <div ng-repeat="value in facetData.data" class="lz-colorbox" ng-class="{selected:tempoutValue[$index]}" ng-style="{\'background-color\' : value.RenderValue}" title="value.ValueName" ng-click="toggle($index, value.ValueID)"></div> </div> <div ng-if="facetData.renderType == 6" class="lz-facet6"> <div ng-repeat="value in facetData.data" class="lz-listbox-color" ng-class="{selected:tempoutValue[$index]}" ng-click="toggle($index, value.ValueID)"><span class="lz-listbox-color__color" ng-style="{\'background-color\' : value.RenderValue}" ></span><span class="lz-listbox-color__name">{{value.ValueName}}</span></div> </div> <div ng-if="facetData.renderType == 7" class="lz-facet7"> <div ng-repeat="value in facetData.data" class="lz-gridbox" ng-class="{selected:tempoutValue[$index]}" ng-click="toggle($index, value.ValueID)">{{value.ValueName}}</div> </div> <div ng-if="facetData.renderType == 8" class="lz-facet8"> <div ng-repeat="value in facetData.data" class="lz-gridbox lz
7-css {{value.RenderValue}}" ng-class="{selected:tempoutValue[$index]}" ng-click="toggle($index, value.ValueID)">{{value.ValueName}}</div> </div> <div ng-if="facetData.renderType == 9" class="lz-facet9"> <div ng-repeat="value in facetData.data" class="lz-grid-image" ng-class="{selected:tempoutValue[$index]}" ng-style="{\'background-image\' : \'url=(\' + value.RenderValue + \')\'}" title="value.ValueName" ng-click="toggle($index, value.ValueID)"></div> </div> <div ng-if="facetData.renderType == 10" class="lz-facet10"> <div ng-repeat="value in facetData.data" class="lz-listbox-image" ng-class="{selected:tempoutValue[$index]}" ng-click="toggle($index, value.ValueID)"><span class="lz-listbox-image__color" ng-style="{\'background-color\' : \'url=(\' +value.RenderValue + \')\'}" ></span><span class="lz-listbox-image__name">{{value.ValueName}}</span></div> </div>'}}))({name:e,parent:"oxClass"})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csFacetSlider",["oxClass","$timeout",function(b,d){return{restrict:"A",replace:!1,scope:{type:"@"},link:function(c,e,f){new(b.extend({name:"csFacetSlider",defineScope:{params:{}},init:function(){this.isStock="stock"===this.$scope.type,this.isStock?(this.$scope.values=[parseInt(f.minVal),parseInt(f.maxVal)],this.$scope.unity="",this.actionId=-5):(this.$scope.values=[parseFloat(f.minVal),parseFloat(f.maxVal)],this.$scope.unity=this.sharedData.currencies.mainFormat||a.oxInfos.oxCurrency.mainFormat,this.actionId=-2),this.process(),this._super()},process:function(){},watchers:{values:{name:"updateRange",deep:!0}},updateRange:function(){if(!this.ready)return void(this.ready=!0);this.timeOut&&d.cancel(this.timeOut);var b=this;this.timeOut=d(function(){a.applyRange&&a.applyRange(b.actionId,b.$scope.values[0],b.$scope.values[1])},1e3)}}))(c)},template:function(a,b){var d=c("script",a),e=c("<div/>").append(c(".facetreset",a).clone()).html(),f=[],g="stock"===b.type?0:2;if(d.length){var h=d.html();d.remove();for(var i,j=/,\s?(\d+)/gi;i=j.exec(h);)f.push(i[1]);f[2]=Math.max(f[0],f[2]).toString(),f[3]=Math.min(f[1],f[3]).toString()}else var k=c("input.facetrangemin",a).eq(0),l=c("input.facetrangemax",a).eq(0),f=[k.attr("default"),l.attr("default"),Math.max(k.attr("default"),k.val()),Math.min(l.attr("default"),l.val())];if(b.minVal=f[2],b.maxVal=f[3],b.minVal===b.maxVal)return a.closest(".blockfacet").hide(),null;return b.template,e+'<div cs cs-double-slider min="'+f[0]+'" max="'+f[1]+'" step="1" unity="unity" decimals="'+g+'" slider-values="values"'+(b.minRange?' min-range="'+b.minRange+'"':"")+"></div>"}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csFileManager";b.module("oxFramework").addDirective(e,["Directive","oxDirective",function(a,b){return new(a.extend({scope:{file:"=",allowed:"<?",duration:"<?",dragndrop:"<?",labelId:"<?",maxSize:"<?"},link:function(a,f,g){new(b.extend({name:e,translation:[{dropZone:"Glissez votre fichier ici ou cliquez pour le selectionner",errorExtension:"Erreur : L'extension {{extension}} n'est pas autoris\xe9e.",errorSize:"Erreur : Le fichier est trop volumineux."},{dropZone:"Drag and drop your files or click here to upload",errorExtension:"Error: {{extension}} extension is not allowed.",errorSize:"Error: The file is too large."},{dropZone:"Arrastre el archivo aqu\xed o hace clic para seleccionarlo",errorExtension:"Error: No se permite la extensi\xf3n {{extension}}.",errorSize:"Error: El archivo es demasiado grande."},{dropZone:"Ziehen Sie Ihre Dateien per Drag & Drop oder klicken Sie hier, um sie hochzuladen",errorExtension:"Fehler: Die {{extension}}-Erweiterung ist nicht erlaubt.",errorSize:"Fehler: Die Datei ist zu gro\xdf."},{},{},{},{}],bindConfigToScope:!0,defaultConfig:{allowed:["htm","html","doc","docx","pdf","txt","xls","xlsx","zip","7z","rar","mid","wav","mp3","mp4","swf","mov","js","jsfl","mpeg","mpg","avi","wmv","jpg","gif","tif","bmp","png","psd","pps","ppt","pptx","ear","jar","egg","xml","ico","css","ram","wma","kmz","as","3gp","flv","gpx","eot","svg","ttf","woff","htc","csv","json","ai","eps"],duration:30,dragndrop:!0,maxSize:0},defineScope:{ctx:{isImg:!1},fileOpen:function(){this.$scope.file.fichier&&"ko"!==this.$scope.file.fichier.status||(c(".c-cs-file-manager__input",this.elem).click(),c(".c-cs-file-manager__miniature",this.elem).hide())}},watchersCollection:{"file.fichier":"fileChange"},init:function(){this._super()}
7,fileChange:function(a){if(!a)return void c(".c-cs-file-manager__miniature",this.elem).html("").hide();this.$scope.ctx.isImg=!1,"ok"===a.status?(d.each(["jpg","jpeg","gif","tif","bmp","png"],function(b){if(a.fileExtension.toLowerCase()==b)return void(this.$scope.ctx.isImg=!0)}.bind(this)),this.$scope.ctx.isImg||this.createMiniature(a.fileExtension)):c(".c-cs-file-manager__miniature",this.elem).html("").hide()},createMiniature:function(a){c(".c-cs-file-manager__miniature",this.elem).html('<div class="c-cs-file-manager__round">'+a+"</div>").css("display","flex")}}))(a,{elem:f,attrs:g})}}))({name:e,hasExternalTemplate:!0,type:"lazyDirective"})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csFileUpload",["oxClass","$q","oxWs","$parse",function(a,c,e,f){return{restrict:"A",priority:1,require:"?ngModel",link:function(g,h,i,j){new(a.extend({name:"csFileUpload",defineScope:{params:{}},init:function(){j&&(this.process(),this._super())},stop:function(a){a.stopPropagation(),a.preventDefault()},process:function(){var a,c=this;if(this.maxSize=i.maxSize&&f(i.maxSize)(this.$scope)||0,this.allowed=i.allowed&&(a=f(i.allowed)(this.$scope))&&b.isArray(a)&&a||["htm","html","doc","docx","pdf","txt","xls","xlsx","zip","7z","rar","mid","wav","mp3","mp4","swf","mov","js","jsfl","mpeg","mpg","avi","wmv","jpg","jpef","gif","tif","bmp","png","psd","pps","ppt","pptx","ear","jar","egg","xml","ico","css","ram","wma","kmz","as","3gp","flv","gpx","eot","svg","ttf","woff","htc","csv","json"],i.type&&"file"==i.type.toLowerCase()&&h.bind("change",function(a){if(!a.target.files||!a.target.files.length||!a.target.files[0])return!0;var d=a.target.files[0];return d&&(c.fileType=d.name.substr(d.name.lastIndexOf(".")+1)),!c.fileType||c.wsManager.indexOf(c.allowed,c.fileType.toLowerCase())<0?(d=null,void c.fail()):d&&0!==c.maxSize&&d.size>c.maxSize?(d=null,void c.fail({status:"ko",error:-201,errorDesc:"Your file is too big",fileExtension:c.fileType,filename:null,originalName:null,fullUrl:null})):void(d?(j.$render=function(){},c.$scope.$index=void 0,c.toData(d).then(function(a){var d=f(i.ngModel)(c.$scope)||{};f(i.ngModel).assign(c.$scope,b.extend(a,d))},function(a){c.fail(a)})):c.fail())}),"undefined"!==i.dropZone){j&&(j.$render=function(){});var d=[],e=!1;h.bind("dragenter",function(a){if(c.stop(a),a.target===this&&!e)return i.overClass&&h.addClass(i.overClass),void(e=!0);d.push(a.target)}),h.bind("dragleave",function(a){if(c.stop(a),0===d.length&&e)return i.overClass&&h.removeClass(i.overClass),void(e=!1);d.pop()}),h.bind("dragover",function(a){c.stop(a)}),h.bind("drop",function(a){c.stop(a),i.overClass&&h.removeClass(i.overClass),e=!1,a=a.originalEvent||a;var d=a.dataTransfer.files;if(d&&d.length){var g=d[0];g&&(c.fileType=g.name.substr(g.name.lastIndexOf(".")+1)),(!c.fileType||c.wsManager.indexOf(c.allowed,c.fileType.toLowerCase())<0)&&(g=null),g?c.toData(g).then(function(a){var d=f(i.ngModel)(c.$scope)||{};f(i.ngModel).assign(c.$scope,b.extend(a,d))},function(a){c.fail(a)}):c.fail()}})}},toData:function(a){var b=this,h=c.defer(),j=!d.isUndefined(i.upload)&&"false"===i.upload;return this.loadFile(a).then(function(c){var d;if(c)if(j)h.resolve({fileData:c,fileExtension:b.fileType}),b.$scope.$root.$emit("csFileUpload-data",{fileData:c,fileExtension:b.fileType});else{var k=f(i.duration)()||30,l=i.fileName&&f(i.fileName)(g)||null,m={fileData:c,duration:k,fileExtension:b.fileType,chunkSize:14e4};l&&(m.fileName=l),d=e.uploadFullFile(m),h.resolve(d),d.$promise.then(function(){d.originalName=a.name,b.$scope.$root.$emit("csFileUpload-data",d)},function(a){b.fail(a)})}else setTimeout(h.abort(d),1)},function(){setTimeout(h.reject(null),1)}),h.promise},loadFile:function(a){var d=c.defer(),e=this,f=b.extend(new FileReader,{onload:function(a){d.resolve(a.target.result),e.$scope.$root.safeApply()},onerror:function(a){d.reject(a),e.$scope.$root.safeApply()},onabort:function(a){d.reject(a),e.$scope.$root.safeApply()}});if(a){var g=i.readAs||"DataURL";f["readAs"+g](a)}else setTimeout(f.onabort,1);return b.extend(d.promise,{abort:function(){f.onabort()}})},fail:function(a){var c=a||{status:"ko",error:-200,errorDesc:this.fileType+" is not a valid extension",fileExtension:this.fileType,filename:null,originalName:null,fullUrl:null},d=f(i.ngModel)(this.$scope)||{};f(i.ngModel).assign(this.$scope,b.extend(d,c)),this.$scope.$root.$emit("csFileUpload-error",c),this.$scope.$root.safeApply()}}))(g)}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csFlashSale",["oxClass",function(a){return{restrict:"A",replace:!0,scope:{endTime:"@",template:"=?"},link:function(b,c,d){new(a.extend({name:"csFlashSale",translation:[{sellMsg:"Vente Flash",sellDone:"La Vente Flash est termin\xe9e..."}],defineScope:{showFlash:!0},rootScopeEvents:{"csCountDown-finished":"updateScope"},updateScope:function(a,b){c.find(b).length&&(this.$scope.showFlash=!1)}}))(b)},template:function(a,b){var c="";return b.template,c="<div>",c+='<div><span ng-show="showFlash">{{translation.sellMsg}}</span><div cs cs-count-down end-time="{{endTime}}" template="YMDhms"></div></div>',c+='<div><span ng-show="!showFlash">{{translation.sellDone}}</span></div>
7',c+="</div>",c}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csFreeProduct",["oxProductLnk",function(a){return{restrict:"A",replace:!1,scope:{pdtId:"=?",detail:"=?"},link:function(b,c,d){new(a.extend({name:"csFreeProduct",detailLevel:["list"],translation:[{freeMsg:"Gratuit"},{freeMsg:"Free"},{freeMsg:"Gratis"}],defineScope:{show:!1},process:function(){this.$scope.show=!this.$scope.product.price}}))(b,{elem:c,attrs:d})},template:function(a,b){return b.template,'<div ng-if="show"> <div class="PBCurrency">{{translation.freeMsg}}</div> </div>'}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d,e){e.addDirective("csFreeShipping",["Directive","oxClass","$parse","oxWs","$filter","$sce",function(b,f,g,h,i,j){return new(b.extend({scope:{amount:"=?",showAfter:"=?",isApp:"<?"},link:function(b,k,l){new(f.extend({name:"csFreeShipping",rootScopeEvents:{"csDynamicCart-complete":"onDynamicCartComplete","csFreeShipping:update":"getCartTotalFromWs"},translation:[{before:"Plus que {{amount}} pour b\xe9n\xe9ficier des frais de port offerts",after:"Vous b\xe9n\xe9ficiez des frais de port offerts"},{before:"Spend {{amount}} more and get free shipping",after:"Your order qualifies for free shipping"},{before:"Te faltan {{amount}} para el env\xedo gratuito",after:"El env\xedo de este pedido es gratuito"},{before:"Spend {{amount}} more and get free shipping",after:"Your order qualifies for free shipping"},{before:"A partire da ulteriori {{amount}} d'acquisto potrai usufruire della spedizione gratuita",after:"Beneficia delle spese di spedizione gratuite"},{before:"Bestel nog voor{{amount}}extra aan artikelen en uw bestelling wordt gratis verzonden",after:"Uw bestelling wordt gratis verzonden"},{before:"Spend {{amount}} more and get free shipping",after:"Your order qualifies for free shipping"},{before:"S\xf3 falta {{amount}} pontos para beneficiar do portes gratis",after:"Voc\xea benefica dos portes gratis"}],init:function(){if(this._super(),e.isMobile&&(this.$scope.cartContent=this.sharedData.cartContent,this.addWatcherCollection({cartContent:"_whenCartData"})),this.$scope.isApp&&c("#maincontainer.scshopcart .cartshipping .oxfreeshipping").length)return void this.elem.closest(".freeShippingInfo").remove();d.isUndefined(this.$scope.showAfter)&&(d.isUndefined(this.getConfig("showAfter"))?this.$scope.showAfter=!0:this.$scope.showAfter=this.getConfig("showAfter")),c("#maincontainer.scshopcart .cartshipping .oxfreeshipping").length&&(this.$scope.showAfter=!1),this.$scope.amount=this.$scope.amount||this.getConfig("amount")||0,this.process()},onDynamicCartComplete:function(){this.process()},_whenCartData:function(){this.process()},process:function(){var b=g("oxInfos.oxCart.total")(a);g("oxInfos.oxCart.subTotalNet")(a)&&(b=g("oxInfos.oxCart.subTotalNet")(a));var c=g("oxInfos.oxCart.qty")(a)||0;b?this.updateMessage(b,c):this.getCartTotalFromWs()},getCartTotalFromWs:function(){var a=this,b=h.getCart();b.$promise.then(function(){a.updateMessage(b.cartFeatures.cartTotal,b.cartqtytotal)})},updateMessage:function(a,b){var a=a||0,c=this.$scope.amount-a;this.$scope.qty=b||0,c>0?this.$scope.text=j.trustAsHtml(i("template")(this.$scope.translation.before,{amount:'<span cs-price price="'+c+'"></span>',amountTrigger:'<span cs-price price="'+c+'"></span>'})):c<=0&&this.$scope.showAfter?this.$scope.text=j.trustAsHtml(this.$scope.translation.after):this.$scope.text="",this.$scope.$root.safeApply()}}))(b,{elem:k,attrs:l})},template:function(a,b){return b.template,'<div cs-bind-html="text" ng-if="qty > 0" class="lz-text"></div>'}}))}])}(window,window.angular,window.angular.element,window._,window.oxFramework),function(a,b,c,d){var e="csFromMarketing";b.module("oxFramework").addDirective(e,["Directive","oxDirective",function(f,g){return new(f.extend({scope:{maxElements:"<?",source:"@",hasElements:"=?",maxChar:"@",template:"@"},link:function(b,f,h){new(g.extend({name:e,defineScope:{hasElements:!1,goTo:function(b){var c=this.sharedData.products.data[b];c&&a.location.assign(c.url)}},init:function(){var a=h.source||"blockmktgbestseller",b=c(".blockmktg#"+a+" li.item"),e=[];b.each(function(){var a=c(this);e.push(a.attr("data-pdt-id"))}),this.$scope.elements=d.uniq(e),this.$scope.elements.length&&(this.$scope.hasElements=!0),this._super()},process:function(){}}))(b,{elem:f,attrs:h})},template:function(a,d){var e=d.source||"blockmktgbestseller",f=c(".blockmktg#"+e+" li.item:first-child .PBShortTxt").prop("tagName")||"span",g=d.template?d.template.toLowerCase():"nip",h=g.split(""),i='<div class="CS-fromMarketingContent c-cs-from-marketing__wrapper"><div cs-carrousel max-elements="maxElements" class="c-cs-from-marketing__carousel"><div cs-carrousel-pane ng-repeat="pdtId in elements" ng-click="goTo(pdtId)" data-pdtid="{{pdtId}}" class="c-cs-from-marketing__carousel-pane"><div cs cs-product-exists pdt-id="pdtId">',j={"{":'<div class="lz-container c-cs-from-marketing-item">',n:'<div class="c-cs-from-marketing-item__name" cs cs-product-name pdt-id="pdtId" tag-name="'+f+'" detail="[\'detail\']"></div>',p:'<div class="c-cs-from-marketing-item__price" cs cs-product-price pdt-id="pdtId" show-prices-at-zero="false"></div>',i:'<div class="c-cs-from-marketing-item__img" cs cs-product-img pdt-id="pdtId"></div>',a:'<div class="c-cs-from-marketing-item__cart-btn" cs cs-add-to-cart-btn pdt-id="pdtId"></div>
7',q:'<div class="c-cs-from-marketing-item__quantity" cs cs-quantity-box pdt-id="pdtId"></div>',d:'<div class="c-cs-from-marketing-item__small-description" cs cs-small-description pdt-id="pdtId"'+(d.maxChar?' max-char="maxChar"':"")+"></div>","}":"</div>"};return b.forEach(h,function(a){var b=j[a];b&&(i+=b)}),i+="</div></div></div></div>"}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d,e){b.module("oxFramework").addDirective("csGoToAnchor",["oxClass",function(a){return{restrict:"A",replace:!1,transclude:!0,scope:{target:"@",duration:"@?",offset:"<?"},link:function(b,f,g){new(a.extend({name:"csGoToAnchor",defineScope:{duration:400,animateToAnchor:function(){var a=c(this.$scope.target),b=c("#headercontainer");if(a.length){var f=d.isUndefined(this.attrs.offset)?0:parseInt(this.$scope.offset,10);c("body, html").animate({scrollTop:a.offset().top-f},{step:function(d,f){if(b.length){var g=a.position().top;if(g<b.offset().top){var h=e.sub(f.options.duration,d).toNumber();c("body, html").stop().animate({scrollTop:g},h)}}}},parseInt(this.$scope.duration,10))}}}}))(b,{elem:f,attrs:g})},template:function(a,b){return b.template,'<div ng-click="animateToA
7nchor()" ng-transclude></div>'}}}])}(window,window.angular,window.angular.element,window._,window.Decimal),function(a,b,c,d){b.module("oxFramework").addDirective("csGrab",["oxDirective","$rootScope",function(b,e){return{restrict:"A",replace:!1,scope:{target:"@",all:"<?",clone:"<?",triggerEvent:"@?",replace:"<?",matchMedia:"@?",onGrab:"&?"},link:function(f,g,h){new(b.extend({name:"csGrab",init:function(){this.process(),this._super()},process:function(){if(c(this.$scope.target).length)this._moveTarget();else if(this.$scope.triggerEvent)var a=e.$on(this.$scope.triggerEvent,function(){this._moveTarget(),a()}.bind(this));else this.elem.remove()},_moveTarget:function(){if(this.target=c(this.$scope.target),this.$scope.all||(this.target=this.target.eq(0)),this.$scope.clone&&(this.target=this.target.clone()),oxFramework.isMobile&&this.target.is("#OxSiteRating")&&this.target.show(),this.$scope.replace){var b=c("\x3c!-- oxFramework: cs-grab:ghost ".concat(this.$scope.target," --\x3e"));this.elem.replaceWith(b),this.elem=b}this.$scope.matchMedia&&!this.$scope.all&&!this.$scope.clone&&a.matchMedia?(this.targetGhost=c("\x3c!-- oxFramework: cs-grab:ghost-target ".concat(this.$scope.target," --\x3e")),this.target.before(this.targetGhost),this._matchMedia()):this._moveTargetToElem()},_matchMedia:function(){var b=a.matchMedia(this.$scope.matchMedia);this._matchMediaTest(b),b.addListener(this._matchMediaTest.bind(this))},_matchMediaTest:function(a){a.matches?(this.targetMoved=!0,this._moveTargetToElem()):this.targetMoved&&(this.targetMoved=!1,this._moveTargetToGhost())},_moveTargetToElem:function(){d.delay(function(){this.$scope.replace?this.target.insertAfter(this.elem):this.elem.html("").append(this.target),this.$scope.$emit("cs-grab-complete",this.$scope.target,g)}.bind(this))},_moveTargetToGhost:function(){d.delay(function(){this.target.insertAfter(this.targetGhost),this.$scope.$emit("cs-grab-complete",this.$scope.target,g)}.bind(this))}}))(f,{elem:g,attrs:h})}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csHint",["oxDirective","ngDialog",function(a,c){return{restrict:"AC",replace:!1,transclude:!0,scope:{message:"<?",wbName:"<?",wbId:"<?",useDialog:"=csHint",forceDialog:"<?"},link:function(d,e,f,g,h){new(a.extend({name:"csHint",defineScope:{visible:!1,requestValue:null,scOpenDialog:function(){var a;if((this.$scope.useDialog||this.$scope.forceDialog)&&this.$scope.dialogMessage)a='<div class="c-cs-hint__dialog-message">'.concat(this.$scope.dialogMessage,"</div>");else{var b;if(this.$scope.wbId?(b="wb-id",this.$scope.requestValue=this.$scope.wbId):this.$scope.wbName&&(b="wb-name",this.$scope.requestValue=this.$scope.wbName),!b)return;a="<div cs cs-webblock ".concat(b,'="requestValue"></div>')}c.open({template:a,plain:!0,scope:this.$scope,className:"ngdialog-theme-default ngdialog-theme-oxatis ngdialog-theme-cshint",showClose:!0,closeByEscape:!0,closeByDocument:!0})}},init:function(){this.$scope.forceDialog&&(this.$scope.dialogMessage=this.$scope.message);var a=h();if(a.length){var c=b.element("<div />").append(a).html();this.$scope.useDialog?this.$scope.dialogMessage=c:this.$scope.message=c}}}))(d,{elem:e,attrs:f})},template:function(a,b){return b.template,'<div class="c-cs-hint__inner" ng-show="!!message || !!wbName || !!wbId || !!dialogMessage" ng-click="(!!wbName || !!wbId || !!dialogMessage) && scOpenDialog()" ng-mouseover="!dialogMessage && (visible = true)" ng-mouseleave="!dialogMessage && (visible = false)">\n <span class="PBShortTxt hint c-cs-hint__trigger">?</span>\n <div class="hintContent c-cs-hint__content" ng-show="visible && !!message">\n <div class="arrow c-cs-hint__content-arrow"></div>\n <div class="content c-cs-hint__content-html" cs-bind-html="message"></div>\n </div>\n </div>'}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csImageFromName",["sharedData","$q","wsManager","oxWs","oxRoute",function(a,b,c,d,e){return{restrict:"A",scope:{rootPath:"@",rootCat:"@",name:"<",displayAltText:"<?",useBackgroun
7d:"<?",extension:"@"},link:function(c,f,g){function h(){function f(){g.resolve()}c.strechName=d.helpers.strechName(c.name);var g=b.defer(),h=c.extension||"png";if(c.imageRootPath=(c.rootCat?c.rootCat+"/":"")+c.strechName+"."+h,a.images[c.imageRootPath])setTimeout(f,1);else{a.images[c.imageRootPath]={};var i=new Image,j=(c.rootPath||e.config("root"))+c.imageRootPath;i.onload=function(){a.images[c.imageRootPath].src=j,f()},i.onerror=f,i.src=j}return g.promise}a.images=a.images||{},c.sharedData=a,c.imageRootPath="",c.rootCat&&c.$watch("name",function(){h().then(function(){c.$root.safeApply(),c.$root.$emit("csImageFromName",c.name)})})},template:'<span><span class="CS-facetImg" ng-if="sharedData.images[imageRootPath].src && useBackground" style="background-image: url({{sharedData.images[imageRootPath].src}}); background-repeat: no-repeat; background-position: center center;"></span><img ng-if="sharedData.images[imageRootPath].src && !useBackground" alt="{{name}}" itemprop="image" cs-data-src="{{sharedData.images[imageRootPath].src}}"><span class="PBShortTxt facetImgSubsit" ng-if="!sharedData.images[imageRootPath].src && displayAltText">{{name}}</span></span>'}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csImageSwiper",["oxProductLnk",function(a){return{restrict:"A",replace:!1,scope:{pdtId:"=?",detail:"=?"},link:function(b,c,d){new(a.extend({name:"csImageSwiper",detailLevel:["detail"],init:function(){this._super()},process:function(){this.$scope.imgs=this.$scope.product.imagelist&&this.$scope.product.imagelist.images||[],this.$scope.imgs.length&&this.$scope.imgs[0].normal&&this.$scope.imgs[0].thumb?c.removeClass("ng-hide"):c.addClass("ng-hide")}}))(b,{elem:c,attrs:d})},template:function(a,b){var c="";switch(b.template){case"imgAsBackground": 8c='<div cs-carrousel responsive="true" max-elements="1"><div cs-carrousel-pane ng-repeat="img in imgs" style="background-image: url({{img.normal}})"></div></div>';break;default:c='<div cs-carrousel responsive="true" max-elements="1"><div cs-carrousel-pane ng-repeat="img in imgs"><img src="{{img.normal}}" ></div></div>'}return c}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csImportProducts";b.module("oxFramework").addDirective(e,["Directive","oxDirective","oxWs","$q",function(a,b,c,f){return new(a.extend({scope:{qtyColumn:"@"},link:function(a,g,h){new(b.extend({name:e,translation:[{btnImportFile:"Choisissez un fichier",dropzone:"D\xe9poser un fichier ici",add2cart:"Ajouter les produits",goToCart:"Voir votre panier",totalToAdd:"{{total}} r\xe9f\xe9rences produit \xe0 ajouter",adding:"Ajout au panier en cours... {{pourcent}}%",successText:"{{success}}/{{total}} r\xe9f\xe9rences produit ont \xe9t\xe9 ajout\xe9es correctement \xe0 votre panier",warnText:"<b>IMPORTANT :</b> les \xe9l\xe9ments suivants ne sont pas disponibles dans les quantit\xe9s que vous avez demand\xe9es. Pour ce ou ces \xe9l\xe9ments, les quantit\xe9s ont \xe9t\xe9 ramen\xe9es au nombre maximum d'\xe9l\xe9ments disponibles.",failText:"<b>IMPORTANT :</b> Certaines r\xe9f\xe9rences produit sont introuvables ou retir\xe9es de la vente",errorMsg:['Le fichier est au mauvais format, il doit y avoir une colonne "id" et une colonne "quantity"',"Vous ne pouvez pas ajouter plus de {{limit}} r\xe9f\xe9rences diff\xe9rentes","L'extension {{extension}} n'est pas autoris\xe9e, le fichier doit \xeatre au format csv","Il n'y a aucun produit \xe0 ajouter"]},{btnImportFile:"Choose a file",dropzone:"Drop your file here",add2cart:"Add products to cart",goToCart:"Go to cart",totalToAdd:"{{total}} product(s) added",adding:"Adding to cart... {{pourcent}}%",successText:"{{success}}/{{total}} product(s) successfully added to cart",warnText:"<b>IMPORTANT:</b> stock insufficient to meet your demand for the following product(s). For the product(s) concerned, quantities have been set to their maximum available number.",failText:"<b>IMPORTANT:</b> Some of these products are unavailable or unbuyable",errorMsg:['File format is incorrect, "id" and "quantity" columns are mandatory',"You can't add more than {{limit}} different products","Extension {{extension}} is unauthorized, file extension must be csv","There's no product to add"]},{},{},{btnImportFile:"Scegli File da PC",dropzone:"Trascina qui il File",add2cart:"Aggiungi al carrello",goToCart:"Vedi Carrello",totalToAdd:"{{total}} Articoli da Aggiungere",adding:"Caricamento carrello in corso {{pourcent}}%",successText:"{{success}}/{{total}} Articoli caricati correttamente nel carrello",warnText:"<b>ATTENZIONE</b>: I sguenti elementi non sono disponibili nelle quantit\xe0 desiderate. \xc8 stato possibile caricare solo le quantit\xe0 disponibili a catalogo.",failText:"<b>ATTENZIONE</b>: Alcuni articoli sono introvabili o non disponibili all'acquisto.",errorMsg:['Il formato del file utilizzato \xe8 errato. Il file deve contenere la colonna "id" e la colonna "quantity".',"Non \xe8 possibile inserire pi\xf9 di {{limit}}
8 articoli diversi","L'estensione {{extension}} non \xe8 valida, \xe8 obbligatoria l'estensione .csv","Non c'\t\xe8 nessun prodotto da aggiungere"]},{},{},{}],defaultConfig:{CART_LIMIT:500},_opts:{},defineScope:{productsToAdd:[],status:{status:"PENDING",errorMsg:0,limitCart:null,items:{total:0,added:0,success:[],warn:[],fail:[]}},file:{},scAdd2Cart:function(a){a.preventDefault(),this.addProducts()}},rootScopeEvents:{"csFileUpload-data":"whenImportIsDone","csFileUpload-error":"whenImportError"},init:function(){this._super(),this._opts.qtyColumn=this.$scope.qtyColumn||"quantity"},whenImportError:function(a,b){this.$scope.status.status="ERROR",this.$scope.status.errorId=2,this.$scope.status.items.total=0},whenImportIsDone:function(a,b){this.$scope.status.status="PROCESSING",this.$scope.status.items.added=0,this.$scope.status.items.fail=[],this.$scope.status.items.warn=[],this.$scope.status.items.success=[];var e=c.helpers.parseCSV(b.fileData,{firstLineAsIndex:!0});if(e=d.values(e),d.isUndefined(e[0].id)||d.isUndefined(e[0][this._opts.qtyColumn]))return this.$scope.status.status="ERROR",this.$scope.status.errorId=0,this.$scope.status.items.total=0,this.safeApply(),!1;if(this.$scope.productsToAdd=d.filter(e,function(a){return parseInt(a[this._opts.qtyColumn])>0},this),this.$scope.status.items.total=this.$scope.productsToAdd.length,!this.$scope.status.items.total)return this.$scope.status.status="ERROR",this.$scope.status.errorId=3,this.$scope.status.items.total=0,this.safeApply(),!1;var f=c.getCart();f.$promise.then(d.bind(function(){var a=f.cartitemcount||0;this.$scope.status.limitCart=Math.max(0,this.getConfig("CART_LIMIT")-a);var b=this.$scope.productsToAdd.length;if(f.products&&f.products.length){var c=d.pluck(f.products,"itemID"),e=d.map(d.pluck(this.$scope.productsToAdd,"id"),function(a){return parseInt(a)});b=d.difference(e,c).length}b<=this.$scope.status.limitCart?this.$scope.status.status="PROCESSING_DONE":(this.$scope.status.status="ERROR",this.$scope.status.errorId=1),this.safeApply()},this)),this.safeApply()},addProducts:function(){if(this.$scope.productsToAdd.length){this.$scope.status.status="ADDING";var a=[];this.$scope.status.items.pourcentAdded=0,d.each(this.$scope.productsToAdd,function(b){var e=c.sendToCart({itemId:b.id,itemQty:b[this._opts.qtyColumn]});a.push(e.$promise),e.$promise.then(d.bind(function(){e.alertMsg?this.$scope.status.items.fail.push({pdt:b,alertMsg:e.alertMsg}):e.displayMsg?this.$scope.status.items.warn.push({pdt:b,displayMsg:e.displayMsg}):this.$scope.status.items.success.push({pdt:b}),this.$scope.status.items.added++,this.$scope.status.items.pourcentAdded=Math.ceil(100*this.$scope.status.items.added/this.$scope.status.items.total)},this))},this),f.all(a).then(d.bind(function(){this.$scope.status.items.fail.length||this.$scope.status.items.warn.length?this.$scope.status.status="WARNING":this.$scope.status.status="SUCCESS",this.$scope.productsToAdd=[],this.safeApply()},this))}}}))(a,{elem:g,attrs:h})},template:function(a,b){var c="";return b.template,c+='<div class="lz-input-file"> <a href="#upload" class="btnmain"> <span>{{::translation.btnImportFile}}</span> <input type="file" cs cs-file-upload ng-model="file.fichier" allowed="[\'csv\']" upload="false" read-as="Text"> </a></div><div class="lz-dropzone"> <div class="lz-dropzone-text">{{::translation.dropzone}}</div> <div cs cs-file-upload drop-zone ng-model="file.fichier" allowed="[\'csv\']" over-class="lz-on-drag" upload="false" read-as="Text"></div></div><div class="lz-total-to-add" ng-if="status.status === \'PROCESSING_DONE\' || (status.status === \'ERROR\' && status.errorId === 1)"> {{translation.totalToAdd| template:status.items }}</div><div class="oxApps-alert oxApps-alert-error" ng-if="status.status === \'ERROR\'"> <div ng-if="status.status === \'ERROR\'">{{translation.errorMsg[status.errorId]| template:{limit: status.limitCart, extension: file.fichier.fileExtension} }}</div></div><div ng-if="status.status === \'PROCESSING_DONE\'"> <a class="btnmain" ng-click="scAdd2Cart($event)"><span>
8{{::translation.add2cart}}</span></a></div><div class="oxApps-alert oxApps-alert-info" ng-if="status.status === \'ADDING\'"> {{translation.adding| template:{pourcent: status.items.pourcentAdded} }}</div><div class="oxApps-alert oxApps-alert-warning" ng-if="status.status === \'WARNING\'"> <div class="lz-success-text"> {{translation.successText| template:{total: status.items.total, success: status.items.success.length} }} </div> <div class="lz-warn-text" ng-if="status.items.warn.length" cs-bind-html="translation.warnText"></div> <ul class="lz-warn-list" ng-if="status.items.warn.length"> <li ng-repeat="warn in status.items.warn" pdt-id="warn.pdt.id"> <span cs cs-product-info info="name"></span> </li> </ul> <div class="lz-fail-text" ng-if="status.items.fail.length" cs-bind-html="translation.failText"></div></div><div class="oxApps-alert oxApps-alert-success" ng-if="status.status === \'SUCCESS\'"> {{translation.successText| template:{total: status.items.total, success: status.items.success.length} }}</div><div ng-if="status.status === \'SUCCESS\' || status.status === \'WARNING\'"> <a class="btnmain" href="/PBShoppingCart.asp"><span>{{::translation.goToCart}}</span></a></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csInputCustom",["sharedData",function(a){return{restrict:"A",scope:{pdtId:"=",maxLength:"=?",placeholder:"@?"},link:function(b,c,d){a.products.data[b.pdtId]=a.products.data[b.pdtId]||{},b.maxLength=b.maxLength||150,b.product=a.products.data[b.pdtId],b.$watch("product",function(a){a&&a.length>b.maxLength&&a.substring(0,b.maxLength)})},template:'<div><input placeholder="{{placeholder}}" type="text" ng-model="product.customFieldValue"></div>'}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csLastNews",["oxWs",function(a){return{restrict:"A",replace:!0,scope:{elements:"@",maxChar:"@",template:"@"},link:function(b,c,e){var f=a.getNews({detail:["id"],pagesize:b.elements||1,sort:"date",sortdir:-1});f.$promise.then(function(){f.items&&(b.idList=d.pluck(f.items,"id"))})},template:function(a,b){var c='<div ng-repeat="id in idList" class="CS-lastNewsElement"><div cs cs-show-news itm-id="id"';return b.template&&(c+=' template="'+b.template+'"'),b.maxChar&&(c+=' max-char="'+b.maxChar+'"'),c+="></div></div>"}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csLinkToNews",["oxLnk",function(b){var c=b.extend({name:"csLinkToNews",detailLevel:["nameDateAndUrl"],component:"hotnews",wsType:"item",defineScope:{switch:!1,go:function(){a.location.assign(this.$scope.hotnews.url)}},init:function(){this.$scope.showImg&&this.detailLevel.push("imageAndDescription"),this._super()},process:function(){this.$scope.output=this.$scope.hotnews,this.$scope.switch=this.$scope.hotnews.imgfilename&&this.$scope.showImg}});return{restrict:"A",replace:!1,scope:{name:"=",showImg:"=?",output:"=?"},link:function(a,b,d){new c(a,{elem:b,attrs:d})},template:function(a,b){return b.template,'<div class="linkToNews" ng-if="hotnews.name" ng-click="go()"> <img ng-if="switch" cs-data-src="{{hotnews.imgfilename}}"> <span ng-if="!switch" class=""></span> </div>'}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csLogin",["Directive","oxDirective","oxWs","$parse","ngDialog","$rootScope",function(b,c,d,e,f,g){return new(b.extend({scope:{loginUrl:"@",logoutUrl:"@",showCreateAccountLink:"<?",createAccountLinkUrl:"@?"},link:function(b,h,i){new(c.extend({name:"csLogin",bindConfigToScope:!0,defaultConfig:{showCreateAccountLink:e("oxInfos.oxProps.allowCreation")(a),createAccountLinkUrl:"/PBUserLogin.asp?CCode=33"},defineScope:{fields:{},user:e("oxInfos.oxUser")(a),logout:function(){var b=this;d.logout().$promise.then(function(){b.$scope.user=null,b.$scope.$root.$emit("csLogin-update",b.$scope.user),b.$scope.$root.$emit("user-update",b.$scope.user),a.oxInfos=a.oxInfos||{},a.oxInfos.oxUser=null,b.$scope.logoutUrl&&a.location.assign(b.$scope.logoutUrl)})},connect:function(){var b=this,c=d.login({email:this.$scope.fields.login,password:this.$scope.fields.pass});c.$promise.then(function(){if(c.error)switch(c.error){case 20:b.showMatchingUser(c.matchingUsers);break;default:a.location.assign(b.$scope.accountUri)}if(1===c.result){var e=d.getInfos();e.$promise.then(function(){b.$scope.user=e.user,b.$scope.$root.$emit("csLogin-update",b.$scope.user),b.$scope.$root.$emit("user-update",b.$scope.user),a.oxInfos=a.oxInfos||{},a.oxInfos.oxUser=b.$scope.user,b.$scope.loginUrl&&a.location.assign(b.$scope.loginUrl)})}})}
8,scOnInputKeyPress:function(a){if(13===a.keyCode)return a.preventDefault(),this.$scope.connect(),!1},onFocusInput:function(){this.elem.addClass("is-focus")},onBlurInput:function(){this.elem.removeClass("is-focus")}},rootScopeEvents:{"user-update":"updateScope"},translation:[{connexion:"Connexion",login:"E-mail",loginOrCode:"Adresse e-mail / code client",pass:"Mot de passe",ok:"Se connecter",account:"Mon Compte",logout:"Se d\xe9connecter",myOrders:"Mes Commandes",newCustomer:"Nouveau client ?",createAccount:"Cr\xe9er un compte"},{connexion:"Sign in",login:"E-mail",loginOrCode:"Email / Customer code",pass:"Password",ok:"Sign in",account:"My Account",logout:"Sign out",myOrders:"My Orders",newCustomer:"New customer?",createAccount:"Create an account"},{connexion:"Conectarse",login:"E-mail",loginOrCode:"E-mail / C\xf3digo de cliente",pass:"Contrase\xf1a",ok:"OK",account:"Mi cuenta",logout:"Desconectarse",myOrders:"Mis pedidos",newCustomer:"\xbfNuevo cliente?",createAccount:"Crea una cuenta"},{connexion:"Anmelden",login:"E-Mail",loginOrCode:"E-Mail / Kundencode",pass:"Passwort",ok:"Anmelden",account:"Mein Konto",logout:"Abmelden",myOrders:"Meine Bestellungen",newCustomer:"Neuer Kunde?",createAccount:"Registrieren"},{connexion:"Il tuo account",login:"E-mail",loginOrCode:"EMail / Codice cliente",pass:"Password",ok:"Ok",account:"Account",logout:"Esci",myOrders:"I miei ordini",newCustomer:"Nuovo Cliente?",createAccount:"Crea un account"},{connexion:"Inloggen",login:"Emailadres",loginOrCode:"Email / Cli\xebntcode",pass:"Wachtwoord",ok:"Inloggen",account:"Accountoverzicht",logout:"Uitloggen",myOrders:"Mijn bestellingen",newCustomer:"New customer?",createAccount:"Create an account"},{connexion:"Sign in",login:"E-mail",loginOrCode:"E-mail / Codi del client",pass:"Password",ok:"Ok",account:"My Account",logout:"Sign out",myOrders:"My Orders",newCustomer:"New customer?",createAccount:"Create an account"},{connexion:"Conex\xe3o",login:"E-mail",loginOrCode:"Email / C\xf3digo do cliente",pass:"Palavra passe",ok:"Ok",account:"Conta",logout:"Desconex\xe7ao",myOrders:"As minhas encomendas",newCustomer:"New customer?",createAccount:"Create an account"}],init:function(){this._super(),this.$scope.accountUri="/PBUserLogin.asp?CCode=33",this.$scope.logoutUrl="null"==this.$scope.logoutUrl?null:this.$scope.logoutUrl||a.location.href,this.$scope.loginUrl="null"==this.$scope.loginUrl?null:this.$scope.loginUrl||a.location.href;var b=a.oxFramework.canLoginByCode()?"loginOrCode":"login";this.$scope.translation.login=this.$scope.translation[b]},updateScope:function(a,b){this.$scope.user=b,this.$scope.$root.safeApply()},showMatchingUser:function(a){var b=this;if(a){var c=g.$new();c.translation=this.$scope.translation,c.ctx={users:a,selectedUser:null},c.submit=function(){b.$scope.fields.login=c.ctx.selectedUser.email,b.$scope.connect()};this.dialog=f.open({template:'\t<ul class="oxApps-list-unstyled">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li ng-repeat="user in ctx.users">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="radio" ng-model="ctx.selectedUser" ng-value="user" name="selectedUser">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{user.email}} ({{user.firstname}} {{user.lastname}})\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t\t\t\t\t\t<a ng-if="ctx.selectedUser && ctx.selectedUser.email" class="loginButton" ng-click="submit()"><span>{{translation.connexion}}</span></a>',plain:!0,scope:c})}}}))(b,{elem:h,attrs:i})},template:function(a,b){var c="";switch(b.template){case"dropdown-account":case"dropdown":c='<div class="c-cs-login__wrapper lz-wrapper" ng-class="{\'lz-not-logged\': !user, \'lz-logged\': user}"><div class="c-cs-login__dropdown-toggle lz-dropdown-toggle"><a ng-if="!user" href="{{accountUri}}" class="accountLink lz-link-login c-cs-login__link-login"><span>{{::translation.connexion}}</span></a>',"dropdown-account"===b.template?c+='<a ng-if="user" href="{{accountUri}}" class="accountLink lz-link-account c-cs-login__link-account"><span>{{::translation.account}}</span></a>':c+='<a ng-if="user" href="{{accountUri}}" class="accountLink lz-link-username c-cs-login__link-username"><span>{{::user.firstname && user.lastname ? (user.firstname + " " + user.lastname) : user.email}}</span></a>',c+='</div><div class="c-cs-login__dropdown lz-dropdown"><div ng-if="!user" class="c-cs-login__dropdown-inner lz-dropdown-inner"><form autocomplete="off" class="c-cs-login__login-container"><input class="lz-input lz-user-login c-cs-login__input c-cs-login__input--login" ng-focus="onFocusInput()" ng-blur="onBlurInput()" autocomplete="off" type="text" ng-model="fields.login" placeholder="{{::translation.login}}" ng-keypress="scOnInputKeyPress($event)"><input class="lz-input lz-user-pass c-cs-login__input c-cs-login__input--password" ng-focus="onFocusInput()" ng-blur="onBlurInput()" autocomplete="new-password" type="password" ng-model="fields.pass" placeholder="{{::translation.pass}}" ng-keypress="scOnInputKeyPress($event)"><div class="lz-actions c-cs-login__actions c-cs-login__actions--login">
8<button ng-click="connect()" class="blockbtn c-button c-button--primary lz-btn-login c-cs-login__btn c-cs-login__btn--login"><span>{{::translation.ok}}</span></button></form></div><div ng-if="showCreateAccountLink" class="lz-actions c-cs-login__actions c-cs-login__actions--create c-cs-login__create-container"><span class="c-cs-login__create-title">{{translation.newCustomer}}</span> <a class="PBLink c-cs-login__create-link" ng-href="{{createAccountLinkUrl}}">{{translation.createAccount}}</a></div></div><div ng-if="user" class="c-cs-login__dropdown-inner lz-dropdown-inner"><ul class="c-cs-login__account_links lz-account-links">',"dropdown-account"===b.template&&(c+='<li class="c-cs-login__link-username lz-link-username">{{::user.firstname && user.lastname ? (user.firstname + " " + user.lastname) : user.email}}</li>'),c+='<li class="c-cs-login__link-item c-cs-login__link-item--account"><a class="c-cs-login__link lz-link" href="{{accountUri}}">{{::translation.account}}</a></li><li class="c-cs-login__link-item c-cs-login__link-item--orders"><a class="c-cs-login__link lz-link" cs cs-redirect url="PBUserAccount.asp" params="::{ActionID: 8}" href="">{{::translation.myOrders}}</a></li><li class="c-cs-login__link-item c-cs-login__link-item--logout"><button class="c-cs-login__btn c-cs-login__btn--logout lz-btn-logout blockbtn" ng-click="logout()">{{::translation.logout}}</button></li></ul></div></div>';break;case"logBox":c='<div ng-if="!user" class="CS-userLoggedOut"><a href="{{accountUri}}" class="CS-accountButton"><span class="PBShortTxt">{{translation.connexion}}</span></a><input class="CS-userLogin" type="text" ng-model="fields.login" placeholder="{{translation.login}}"><input class="CS-userPass" type="password" ng-model="fields.pass" placeholder="{{translation.pass}}"><a ng-click="connect()" class="CS-loginButton btnmain" href=""><span>{{translation.ok}}</span></a></div><div ng-if="user" class="CS-userLoggedIn"><a href="{{accountUri}}" class="CS-userName"><span>{{user.firstname && user.lastname ? (user.firstname + " " + user.lastname) : user.email}}</span></a><a ng-click="logout()" class="CS-logoutButton btnmain" href=""><span>×</span></a></div>';break;case"myAccount":c='<a ng-if="!user" class="loginButton" href="{{accountUri}}"><span>{{translation.connexion}}</span></a><a ng-if="user" href="{{accountUri}}" class="accountButton"><span>{{translation.account}}</span></a>';break;default:c='<a ng-if="!user" class="loginButton" href="{{accountUri}}"><span>{{translation.connexion}}</span></a><a ng-if="user" href="{{accountUri}}" class="accountButton"><span>{{user.firstname && user.lastname ? (user.firstname + " " + user.lastname) : user.email}}</span></a><a ng-if="user" ng-click="logout()" class="logoutButton" href=""><span>×</span></a>'}return c}}))}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csMagicScrollThumbs";b.module("oxFramework").addDirective(e,["Directive","oxDirective",function(b,d){return new(b.extend({scope:{useBackground:"=csMagicScrollThumbs"},restrict:"ACE",link:function(b,f,g){new(d.extend({name:e,bindConfigToScope:!0,defaultConfig:{},defineScope:{ctx:{}},init:function(){this._super(),this.checkMagicScrollReady()},checkMagicScrollReady:function(){var b=this.elem.attr("data-magicscroll-id")||"";b&&(a.MagicScroll&&a.MagicScroll.running(b)?this.process():a.setTimeout(this.checkMagicScrollReady.bind(this),32))},process:function(){var b=this,d=this,e=c(".MagicScroll",this.elem);if(!e.length)return void this.elem.removeClass(this._cssName);if(1!==e.data("items"))return void this.elem.removeClass(this._cssName);if(c(".mcs-item",this.elem).each(function(a){var b,e=c(this).data("item"),f=".mcs-bullet-"+e;if(d.$scope.useBackground){var g=c('.ox-div[style*="background-image"]',this).first();g.length&&(b=g.css("backgroundImage"))}if(!b){var h=c(".ox-img",this).first();h.length&&(b="url(".concat(h.attr("src"),")"))}b&&c(f,d.elem).css({backgroundImage:b})}),a.MutationObserver){var f={attributes:!1,subtree:!1,childList:!0,characterData:!1},g=c(".ox-carousel-items-container",this.elem),h=new MutationObserver(function(a){h.disconnect(),b.process()});h.observe(g.get(0),f)}}}))(b,{elem:f,attrs:g})}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csMagicZoom";b.module("oxFramework").addDirective(e,["Directive","oxDirective","$timeout",function(f,g,h){return new(f.extend({scope:{config:"<?",images:"<?",controlId:"<?"},link:function(f,h,i){new(g.extend({name:e,watchersCollection:{config:"whenConfigChanged",images:"whenConfigChanged"},defineScope:{ctx:{ready:!1,magicZoomLoaded:!1,MagicZoomOptions:{},MagicScrollOptions:{}},imgConfig:{current:0,imgWidth:400,imgHeight:400,thumbnailChangeMode:"click",thumbnailDis
8playMode:"carousel",thumbnailImgWidth:85,thumbnailCarrouselPos:"bottom",thumbnailCarrouselImgCount:3,zoomStyle:"zoom",zoomPosition:"left",zoomWidth:400,zoomHeight:400},imgList:[],formateDataOptions:function(a){return JSON.stringify(a).replace(/[\{\}"]/g,"").replace(/,/g,";")}},init:function(){var c=this;this.$scope.controlId=this.$scope.controlId||this.$scope.$id,this.handleImages(),b.isUndefined(a.magicJS)?jQuery.ajax({url:"/JavaScript/MagicZoom/V3/magiczoomplus-scroll.js",dataType:"script",cache:!0}).done(function(){c.$scope.ctx.magicZoomLoaded=!0,c.whenConfigChanged()}):d.delay(function(){c.$scope.ctx.magicZoomLoaded=!0,c.whenConfigChanged()})},handleImages:function(){this.$scope.imgList=this.$scope.images||[],b.forEach(this.$scope.imgList,function(a){a.normal||(a.normal=a.thumb),a.zoom||(a.zoom=a.normal)})},whenConfigChanged:function(){this.$scope.ctx.magicZoomLoaded&&(a.MagicZoom.running("zoom-"+this.$scope.controlId)&&a.MagicZoom.stop("zoom-"+this.$scope.controlId),a.MagicScroll.running("scroll-"+this.$scope.controlId)&&a.MagicScroll.stop("scroll-"+this.$scope.controlId),this.handleImages(),d.extend(this.$scope.imgConfig,this.$scope.config),"carousel"===this.$scope.imgConfig.thumbnailDisplayMode?this.$scope.imgConfig.thumbnailDisplayMode="scroll":(this.$scope.imgConfig.orientation="horizontal",this.$scope.imgConfig.thumbnailCarrouselPos="bottom"),"disabled"===this.$scope.imgConfig.zoomMode&&(this.$scope.imgConfig.zoomMode="off"),"left"===this.$scope.imgConfig.thumbnailCarrouselPos||"right"===this.$scope.imgConfig.thumbnailCarrouselPos?this.$scope.imgConfig.orientation="vertical":this.$scope.imgConfig.orientation="horizontal",this.$scope.ctx.MagicZoomOptions={hint:"off",upscale:!1,lazyZoom:!0,zoomMode:this.$scope.imgConfig.zoomStyle,zoomPosition:this.$scope.imgConfig.zoomPosition,zoomWidth:this.$scope.imgConfig.zoomWidth+(_typeof("number"===this.$scope.imgConfig.zoomWidth)?"px":""),zoomHeight:this.$scope.imgConfig.zoomHeight+(_typeof("number"===this.$scope.imgConfig.zoomWidth)?"px":""),selectorTrigger:this.$scope.imgConfig.thumbnailChangeMode,autostart:!1},this.$scope.ctx.MagicScrollOptions={items:this.$scope.imgConfig.thumbnailCarrouselImgCount,orientation:this.$scope.imgConfig.orientation,mode:this.$scope.imgConfig.thumbnailDisplayMode,autostart:!1},this.$scope.style={main:{width:this.$scope.imgConfig.imgWidth+(_typeof("number"===this.$scope.imgConfig.imgWidth)?"px":""),height:this.$scope.imgConfig.imgHeight+(_typeof("number"===this.$scope.imgConfig.imgHeight)?"px":"")},carousel:{"max-width":"horizontal"===this.$scope.imgConfig.orientation?this.$scope.imgConfig.imgWidth+"px":this.$scope.imgConfig.thumbnailImgWidth+"px","min-width":"horizontal"===this.$scope.imgConfig.orientation?this.$scope.imgConfig.imgWidth+"px":this.$scope.imgConfig.thumbnailImgWidth+"px","max-height":"horizontal"===this.$scope.imgConfig.orientation?this.$scope.imgConfig.thumbnailImgWidth+"px":this.$scope.imgConfig.imgHeight+"px","min-height":"horizontal"===this.$scope.imgConfig.orientation?this.$scope.imgConfig.thumbnailImgWidth+"px":this.$scope.imgConfig.imgHeight+"px"}},this.$scope.ctx.ready=!0,this.launch())},launch:function(){var b=this,e="";d.each(this.$scope.imgList,function(a){e+='<a data-image="'.concat(a.normal,'" href="').concat(a.zoom,'" data-zoom-id="zoom-').concat(b.$scope.controlId,'">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img src="').concat(a.thumb,'" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>')});var f=function(){var b=this;this.safeApply();var d=this.$scope.imgList.length>1&&"scroll"===this.$scope.imgConfig.thumbnailDisplayMode,g=0===c(".magic-hidden-wrapper").length,i=0===c(".c-cs-product-magic-zoom__thumbs-carousel",h).length;if(g||d&&i)return void a.setTimeout(f,32);d&&c(".c-cs-product-magic-zoom__thumbs-carousel",this.elem).html(e),this.safeApply(),a.setTimeout(function(){a.MagicZoom.start("zoom-"+b.$scope.controlId),a.MagicScroll.start("scroll-"+b.$scope.controlId)},16)}.bind(this);f()}}))(f,{elem:h,attrs:i})},template:function(a,b){var c='<div ng-if="ctx.ready" class="imgcontainer c-ox-imgzoom c-ox-imgzoom--{{imgConfig.thumbnailCarrouselPos}} c-ox-imgzoom--{{imgConfig.orientation}}" ng-class="{\'has-carousel\':(imgList.length > 1)}">';return b.template,c+=' <div ng-if="ctx.ready" id="imgmain" class="c-ox-imgzoom__main c-cs-product-magic-zoom__main" ng-style="style.main">
8 <a ng-href="{{imgList[imgConfig.current].zoom}}" class="MagicZoom" title="{{imgList[imgConfig.current].title}}" id="zoom-{{controlId}}" data-options="{{formateDataOptions(ctx.MagicZoomOptions)}}" > <img cs-data-src="{{imgList[imgConfig.current].normal}}"/> </a> </div> <div ng-if="ctx.ready && imgList.length > 1 && imgConfig.thumbnailDisplayMode == \'scroll\' " ng-style="style.carousel" class="c-ox-imgzoom__thumbs-carousel c-cs-product-magic-zoom__thumbs-carousel MagicScroll" id="scroll-{{controlId}}" data-options="{{formateDataOptions(ctx.MagicScrollOptions)}}"> </div> <div ng-if="ctx.ready && imgList.length > 1 && imgConfig.thumbnailDisplayMode != \'scroll\'" class="c-ox-imgzoom__thumbs-list c-cs-product-magic-zoom__thumbs-list imgthumblist"> <ul class="c-ox-imgzoom__thumbs-list-inner c-cs-product-magic-zoom__thumbs-list-inner"> <li ng-repeat="img in imgList" class="c-ox-imgzoom__thumb"> <a data-image="{{img.normal}}" ng-href="{{img.zoom}}" data-zoom-id="zoom-{{controlId}}"> <img cs-data-src="{{img.thumb}}" /> </a> </li> </ul> </div>',c+="</div>"}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csMap",["$q",function(d){return{restrict:"CA",replace:!1,scope:{places:"=",home:"=?",markerIcon:"@",token:"@"},link:function(e,f,g){function h(){function a(a){var b=d.defer();return(new google.maps.Geocoder).geocode({address:a.replace(/<br>/gi," ")},function(a,c){if(c!=google.maps.GeocoderStatus.OK)return void b.resolve(null);b.resolve(a[0])}),b.promise}function g(a,b){var d=new google.maps.Marker({position:a.geometry.location,map:l,icon:new google.maps.MarkerImage(e.marker||"/Files/0/icon-map-black-20X20.png"),title:b.name});j.extend(d.position),l.fitBounds(j),google.maps.event.addListener(d,"click",function(){h&&h.close(),e.$root.$emit("csMap-open",b);var a=new google.maps.InfoWindow({}),f="";f+=b.name?'<div class="PBMainTxt" >'+b.name+"</div>":"",f+='<div class="PBShortTxt" >'+b.address+"</div>",f+=b.description?'<div class="PBLongTxt">'+b.description+"</div>":"";var g=c("<div/>",{class:"mapInfoZone",html:f});a.setContent(g.get(0)),a.setPosition(d.position),a.open(l),google.maps.event.addListener(a,"closeclick",function(){}),h=a,i=d})}var h,i,j=new google.maps.LatLngBounds,k={mapTypeId:google.maps.MapTypeId.ROADMAP},l=new google.maps.Map(f.get(0),k);b.forEach(e.places,function(b){b.address&&a(b.address).then(function(a){a&&g(a,b)})}),e.home&&a(e.home.replace(/<br>/gi," ")).then(function(a){if(a){l.setCenter(a.geometry.location);var b=new google.maps.Marker({position:a.geometry.location,map:l,icon:new google.maps.MarkerImage(e.marker||"/Files/0/icon-Home-black-20X20.png")});j.extend(b.position),l.fitBounds(j)}})}var i="loadGoogleMaps_"+(new Date).getTime();a[i]=h,c('script[src*="key='+e.token+'"]').length||c.ajax({url:"https://maps.googleapis.com/maps/api/js?key="+e.token+"&sensor=false&callback="+i,cache:!0,dataType:"script"})}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csMenu100",["oxClass",function(a){return{restrict:"A",replace:!1,scope:{},link:function(b,d,e){new(a.extend({name:"csMenu100",init:function(){this.rebuild(),this._super()},addNewDiv:function(a){var b=c('<li class="hmenuSubGroup"></li>'),d=c('<ul class="hmenuSubList"></ul>');return b.append(d),a.push(b),d},rebuild:function(){var a=[];c(".submenu",d).each(function(b,d){a.length=0;var e=this.addNewDiv(a),f=c(d);c("> li",f).each(function(b,d){var g=c(d);if(g.hasClass("misep"))return e=this.addNewDiv(a),void g.remove();if(g.hasClass("background")||g.hasClass("backGround")){var h=c("img",g).eq(0).attr("src");return h&&f.css("background-image","url("+h+")"),void g.remove()}e.append(g)}.bind(this));for(var g=0,h=a.length;g<h;g++)f.append(a[g]);e=null,a[h-1].className+=(a[h-1].className?" ":"")+"lastMenuCol"}.bind(this)),a.length=0,a=null}}))(b)}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csMenuCol",["oxClass",function(a){return{restrict:"A",replace:!1,scope:{},link:function(b,d,e){new(a.extend({name:"csMenuCol",init:function(){this.process(),this._super()},process:function(){var a=1;c("li",d).each(function(){if(c(this).hasClass("misep")||c(this).hasClass("end")){var b=c(this).prevAll("li:not(.lz-menu-col)").addClass("lz-menu-item");b.length&&(c(this).wrap('<li class="lz-menu-col lz-menu-col-'+a+'"><ul></ul></li>'),c(this).after(c(b.get().reverse())),a++),c(this).remove()}}),c("li.lz-menu-col",d).outerWidth(100/(a-1)+"%"),c("li.end, li.begin, li.misep",d).remove(),d.show()}}))(b)}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csMinOrderAmount";b.module("oxFramework").addDirective(e,["Directive","oxDirective","oxWs",function(b,d,f){return new(b.extend({scope:{trigger:"<",beforeDiscount:"
8<?"},link:function(b,g,h){new(d.extend({name:e,translation:[{amountLeft1:"Il vous reste",amountLeft2:"avant d'atteindre le montant minimum de commande.",alert:"Vous n'avez pas atteint le montant minimum de commande."},{amountLeft1:"Only",amountLeft2:"left to reach the minimum order amount",alert:"You didn't reach the minimum order amount yet."},{},{},{},{},{},{}],bindConfigToScope:!0,defaultConfig:{},defineScope:{ctx:{cart:null}},watchers:{"ctx.cart":{name:"cartIsUpdated",deep:!0}},init:function(){this.process(),this._super()},process:function(){this.getCartValue()}, 9getCartValue:function(){var b=a.oxInfos.oxCart;if(this.$scope.beforeDiscount)if(b.totalBeforeReduction)this.$scope.ctx.cart=b.totalBeforeReduction;else{var c=f.getCart();c.$promise.then(function(){this.$scope.ctx.cart=c.cartFeatures.totalBeforeReduction||c.cartFeatures.subTotalNet}.bind(this))}else this.$scope.ctx.cart=b.subTotalNet},cartIsUpdated:function(){this.$scope.ctx.cart<this.$scope.trigger?c("body").addClass("cs-min-order-amount-invalid"):c("body").removeClass("cs-min-order-amount-invalid"),this.$scope.ctx.cart&&a.ContinueCart&&(this.ContinueCartMonkey=a.ContinueCart,a.ContinueCart=this.monkeyContinueCart.bind(this))},monkeyContinueCart:function(a){this.$scope.ctx.cart<this.$scope.trigger?alert(this.$scope.translation.alert):this.ContinueCartMonkey(a)}}))(b,{elem:g,attrs:h})},template:function(a,b){return b.template,' <div ng-init="cart = (trigger - ctx.cart)" ng-if="ctx.cart" class="c-cs-min-order-amount__message-holder">\n <div ng-show="cart > 0">{{translation.amountLeft1}}\n <div cs cs-price price="cart" class="c-cs-min-order-amount__message-holder--price" ></div> \n {{translation.amountLeft2}}\n </div>\n </div>\n '}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csMoveDiscount";b.module("oxFramework").addDirective(e,["Directive","oxDirective",function(b,d){return new(b.extend({scope:{round:"@?"},link:function(b,f,g){new(d.extend({name:e,translation:[{discount:"-#%"},{},{},{},{},{},{},{}],bindConfigToScope:!0,defaultConfig:{},defineScope:{ctx:{}},init:function(){this.parent=this.elem.closest("[data-pdt-id]").eq(0),this.parent&&this.parent.length&&(this.discountNode=c(".PBItemPrice .PBDiscount",this.parent).eq(0),this.discountNode&&this.discountNode.length&&(this._super(),this.grabDiscount(),this.formatDiscount(),this.insertDiscount()))},grabDiscount:function(){var a=this.discountNode.text(),b=/(\d+)[,\?]?(\d+)?\s?%/g.exec(a);b&&b.length?this.discount=parseFloat([b[1],b[2]||0].join(".")):this.discount=0},formatDiscount:function(){var b;switch(this.$scope.round){case"ceil":b=Math.ceil(this.discount).toString();break;case"floor":b=Math.floor(this.discount).toString();break;case"round":b=Math.round(this.discount).toString();break;default:b=this.discount.toFixed(2).replace(/\./,a.oxInfos.oxCurrency.decSep)}this.discountFormated=this.$scope.translation.discount.replace(/#/,function(){return b})},insertDiscount:function(){this.elem.html(this.discountFormated),this.elem.addClass("c-cs-move-discount--active")}}))(b,{elem:f,attrs:g})}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csNextDiscount";b.module("oxFramework").addDirective(e,["Directive","oxDirective","$parse","oxWs","$filter","$sce",function(c,f,g,h,i,j){return new(c.extend({scope:{rules:"<?"},link:function(c,k,l){new(f.extend({name:e,defineScope:{params:{}},defaultConfig:{rules:[{amount:0,discount:0}]},rootScopeEvents:{"csDynamicCart-complete":"onDynamicCartComplete","csFreeShipping:update":"getCartTotalFromWs"},translation:[{one:"Plus que {{amount}} pour b\xe9n\xe9ficier de {{discount}} de remise.",two:"Plus que {{amount}} pour b\xe9n\xe9ficier de {{discount}} de remise, et {{amount2}} pour une remise de {{discount2}}.",after:"Vous b\xe9n\xe9ficiez de {{discount}} de remise."},{one:"Plus que {{amount}} pour b\xe9n\xe9ficier de {{discount}} de remise.",two:"Plus que {{amount}} pour b\xe9n\xe9ficier de {{discount}} de remise, et {{amount2}} pour une remise de {{discount2}}.",after:"Vous b\xe9n\xe9ficiez de {{discount}} de remise."},{one:"Plus que {{amount}} pour b\xe9n\xe9ficier de {{discount}} de remise.",two:"Plus que {{amount}} pour b\xe9n\xe9ficier de {{discount}} de remise, et {{amount2}} pour une remise de {{discount2}}.",after:"Vous b\xe9n\xe9ficiez de {{discount}} de remise."},{one:"Plus que {{amount}} pour b\xe9n\xe9ficier de {{discount}} de remise.",two:"Plus que {{amount}} pour b\xe9n\xe9ficier de {{discount}} de remise, et {{amount2}} pour une remise de {{discount2}}.",after:"Vous b\xe9n\xe9ficiez de {{discount}} de remise."},{one:"Plus que {{amount}} pour b\xe9n\xe9ficier de {{discount}} de remise.",two:"Plus que {{amount}} pour b\xe9n\xe9ficier de {{discount}} de remise, et {{amount2}} pour une remise de {{discount2}}.",after:"Vous b\xe9n\xe9ficiez de {{discount}} de remise."},{one:"Besteed nog {{amount}} en krijg {{discount}} korting",two:"Besteed nog {{amount}} en krijg {{discount}} korting en {{amount2}} voor {{discount2}} korting.",after:"U krijgt {{discount}} korting"},{one:"Plus que {{amount}} pour b\xe9n\xe9ficier de {{discount}} de remise.",two:"Plus que {{amount}} pour b\xe9n\xe9ficier de {{discount}} de remise, et {{amount2}} pour une remise de {{discount2}}.",after:"Vous b\xe9n\xe9ficiez de {{discount}} de remise."},{one:"Plus que {{amount}} pour b\xe9n\xe9ficier de {{discount}} de remise.",two:"Plus que {{amount}} pour b\xe9n\xe9ficier de {{discount}} de remise, et {{amount2}} pour une remise de {{discount2}}.",after:"Vous b\xe9n\xe9ficiez de {{discount}} de remise."}],init:function(){this._super(),this.$scope.rules=this.$scope.rules||this.getConfig("rules"),this.process()},onDynamicCartComplete:function(){this.process()},process:function(){var b=g("oxInfos.oxCart.total")(a);g("oxInfos.oxCart.subtotal")(a)&&(b=g("oxInfos.oxCart.subtotal")(a));var c=g("oxInfos.oxCart.qty")(a)||0;b?this.updateMessage(b,c):this.getCartTotalFromWs()},getCartTotalFromWs:function(){var a=this,b=h.getCart();b.$promise.then(function(){a.updateMessage(b.cartFeatures.cartTotal,b.cartqtytotal)})},updateMessage:function(a,c){var e,f,g,h,k,l,a=a||0;b.forEach(this.$scope.rules,d.bind(function(b){b.amount*(1-b.discount/100)-a<=0&&(!e||e<b.discount)&&(e=b.discount)},this)),e&&(a=100*a/(100-e)),b.forEach(this.$scope.rules,d.bind(function(b){var c=b.amount-a;c>0&&(!g||g>c?(g=c,f=b.discount):(!l||l>c)&&(l=c,k=b.discount)),c<=0&&(!h||h<b.discount)&&(h=b.discount)},this)),this.$scope.qty=c||0,this.$scope.next="",this.$scope.current="",g&&f?this.$scope.next=l&&k?j.trustAsHtml(i("template")(this.$scope.translation.two,{amount:'<span class="PBCurrency">'+i("currency")(g)+"</span>",discount:'<span class="PBDiscount">'+i("number")(parseFloat(f.toFixed(2)))+"%</span>",amount2:'<span class="PBCurrency">'+i("currency")(l)+"</span>",discount2:'<span class="PBDiscount">'+i("number")(parseFloat(k.toFixed(2)))+"%</span>"})):j.trustAsHtml(i("template")(this.$scope.translation.one,{amount:'<span class="PBCurrency">'+i("currency")(g)+"</span>",discount:'<span class="PBDiscount">'+i("number")(parseFloat(f.toFixed(2)))+"%</span>"})):h&&(this.$scope.current=j.trustAsHtml(i("template")(this.$scope.translation.after,{discount:'<span class="PBDiscount">'+i("number")(parseFloat(h.toFixed(2)))+"%</span>"}))),this.$scope.$root.safeApply()}}))(c)},template:function(a,b){return b.template,'<div ng-if="qty > 0" class="lz-text"><div class="lz-next-discount" ng-bind-html="next"></div><div class="lz-current-discount" ng-bind-html="current"></div></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csOpenTabs";b.module("oxFramework").addDirective(e,["oxClass","oxProductLnk","$sce",function(a,b,f){return{restrict:"A",replace:!1,scope:{tolerance:"@",pdtId:"=?",selected:"=?",id:"@"},controller:["$scope",function(b){var g=a.extend({name:e,panes:[],defineScope:{params:{titles:[]},scGotoPane:function(a){this.gotoPane(a)}},init:function(){this.$scope.tolerance=this.$scope.tolerance?parseInt(this.$scope.tolerance):40},rootScopeEvents:{"csOpenTabs:gotoPane":function(a,b){if(this.$scope.id&&b.openTabsId===this.$scope.id&&!d.isNaN(parseInt(b.tabIndex))){var c=d.sortBy(d.filter(this.$scope.params.titles,function(a){return!!d.isUndefined(a.scope.ngShow)||a.scope.ngShow}),function(a){return a.idx}),e=c.splice(b.tabIndex,1);e[0]&&this.gotoPane(e[0].position)}}},watchers:{pdtId:function(a){a&&(this.$scope.params.titles=d.filter(this.$scope.params.titles,function(a){return!a.scope.dynamic},this),this.panes=d.filter(this.panes,function(a){return!a.scope.dynamic},this))}},addTitle:function(a,b){return this.$scope.params.titles.push({html:f.trustAsHtml(b.html()),idx:this.getIndex(b),position:this.$scope.params.titles.length,scope:a,elem:b}),b.hide(),this.$scope.params.titles.length-1},addPane:function(a,b){return this.panes.push({elem:b,position:this.panes.length,scope:a}),this.panes.length-1},gotoPane:function(a){var b=this.panes[a];b&&c("body, html").animate({scrollTop:b.elem.offset().top-this.$scope.tolerance},400)},updateTitleHtml:function(a,b){var c=this.$scope.params.titles[a];c&&(c.html=f.trustAsHtml(b))},getIndex:function(a,b){var c=a.index();b&&(c+=b/10);var e=a.parent();return d.isUndefined(e.attr("cs-open-tabs"))?this.getIndex(e,c):c}});
9this.ctrl=new g(b)}],link:function(a,c,d){new(b.extend({name:e,detailLevel:["detail"]}))(a,{elem:c,attrs:d})}}}]);b.module("oxFramework").addDirective("csOpenPane",["oxClass",function(a){return{require:"^csOpenTabs",restrict:"A",transclude:!0,scope:{dynamic:"=?"},link:function(b,c,d,e){new(a.extend({name:"csOpenPane",defineScope:{params:{index:0}},init:function(){this.$scope.ctrl=e.ctrl.$scope,this.$scope.params.index=e.ctrl.addPane(b,c)}}))(b)},template:function(a,b){return b.template,'<div class="lz-open-titles"> <div class="lz-open-titles-inner"> <div ng-repeat="title in ctrl.params.titles | orderBy : \'idx\'" ng-show="!_.isUndefined(title.scope.ngShow) ? title.scope.ngShow : true" class="lz-open-title" ng-bind-html="title.html" ng-click="ctrl.scGotoPane(title.position)" ng-class="{\'active designBackColorMain designTextColorMain\': title.position === params.index}"></div> </div> </div> <div ng-transclude class="lz-open-tab"></div>'}}}]);b.module("oxFramework").addDirective("csOpenTitle",["oxClass",function(a){return{require:"^csOpenTabs",restrict:"A",scope:{dynamic:"=?",text:"@",ngShow:"=?"},link:function(b,c,d,e){new(a.extend({name:"csOpenTitle",index:0,init:function(){this.index=e.ctrl.addTitle(b,c,d)},watchers:{text:function(a){a&&e.ctrl.updateTitleHtml(this.index,a)}}}))(b)}}}]);b.module("oxFramework").addDirective("csOpenTabsGoto",["oxClass",function(a){return{restrict:"A",scope:{opentabsId:"@",tabIndex:"@"},link:function(b,c,d){new(a.extend({name:"csOpenTabsGoto",init:function(){var a=this;c.click(function(b){b.stopImmediatePropagation(),b.preventDefault(),a.goto()})},goto:function(){this.$scope.$root.$emit("csOpenTabs:gotoPane",{openTabsId:this.$scope.opentabsId,tabIndex:this.$scope.tabIndex})},whenScopeDestroy:function(){c.off()}}))(b,{elem:c,attrs:d})}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csOptionSelect";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk","$filter",function(a,c,f){return new(a.extend({restrict:"A",replace:!1,scope:{pdtId:"=?",selectDefault:"=",outputId:"=?",outputTempId:"=?",optionIndex:"@",extension:"@",findImg:"@",rootPath:"@",useBackground:"=?",selectionStorage:"=?",outputStatus:"=?"},link:function(a,g,h){new(c.extend({name:e,detailLevel:["list"],getOptions:!0,statusMap:{withOptions:1,buyable:2,selected:4,exist:8},defineScope:{params:{},select:function(a){this.$scope.storageVar[this.optionIndex]=a.id}},watchers:{storageVar:{name:"update",deep:!0}},watchersCollection:{outputStatus:"_updateStatus"},init:function(){this._super(),this._initOutputStatus(),this.$scope.productOptions=null,this.$scope.optionValues=null},_initOutputStatus:function(){this.attrs.outputStatus&&(this.$scope.outputStatus=this.$scope.outputStatus||{},d.extend(this.$scope.outputStatus,{buyable:!1,selected:!1,exist:!1,withOptions:!0,status:1,lastId:parseInt(this.$scope.pdtId)}))},process:function(){if(this.attrs.outputStatus&&(this.$scope.outputStatus.lastId=parseInt(this.$scope.pdtId)),!this.$scope.productOptions)return void(this.attrs.outputStatus&&(this.$scope.outputStatus.selected=!1,this.$scope.outputStatus.exist=!1,this.$scope.outputStatus.buyable=!this.$scope.product.outofstock||this.$scope.product.buybtn,this.$scope.outputStatus.withOptions=!1));this.optionIndex=parseInt(this.$scope.optionIndex)||0,this.$scope.selectionStorage&&b.isArray(this.$scope.selectionStorage)?this.$scope.storageVar=this.$scope.selectionStorage:(this.$scope.productOptions.currentSelection=this.$scope.productOptions.currentSelection||[],this.$scope.storageVar=this.$scope.productOptions.currentSelection),this.$scope.optidx=this.optionIndex;var a=this.$scope.productOptions.optionTypes[this.optionIndex];if(a&&(b.forEach(a.values,d.bind(function(a,b){a.rendervalue&&(this.$scope.renderType=5)},this)),this.$scope.optionValues=f("orderBy")(a.values,this.attrs.orderby||"pos",!1),this.$scope.selectDefault)){var c;for(var e in this.$scope.productOptions.optionsPointers)if(this.$scope.productOptions.optionsPointers[e]==this.$scope.pdtId){c=e;break}if(c){var g=c.split(/-/g)[this.optionIndex];this.$scope.select(f("filter")(this.$scope.optionValues,{id:parseInt(g)},!0)[0])}else this.$scope.select(f("filter")(this.$scope.optionValues,{id:this.$scope.productOptions.defaultOptions[this.optionIndex]},!0)[0])}},update:function(){var a=this;if(this.$scope.productOptions){var c=!0;this.$scope.currentOption=null,b.forEach(this.$scope.optionValues,function(b,d){b.selected=b.id==a.$scope.storageVar[a.optionIndex],b.selected&&(a.$scope.currentOption=b,c=!1)}),this.$scope.productOptions.selected=this.$scope.productOptions.optionsPointers[this.$scope.storageVar.join("-")],this.$scope.outputTempId=this.$scope.productOptions.selected,this.$scope.productOptions.selected&&!this.sharedData.products.data[this.$scope.productOptions.selected].buybtn&&this.sharedData.products.data[this.$scope.productOptions.selected].outofstock&&(this.$scope.productOptions.selected=null),this.$scope.outputId=this.$scope.productOptions.selected;var e=0;b.forEach(this.$scope.storageVar,function(a,b){a&&e++});var f=this.$scope.productOptions.optionTypes.length-e,g=f>1||!c&&1===f;b.forEach(this.$scope.optionValues,function(c){var d,e=b.copy(a.$scope.storageVar);e[a.optionIndex]=c.id,d=a.$scope.productOptions.optionsPointers[e.join("-")],c.isUnaivailable=!(g||d&&(!a.sharedData.products.data[d].outofstock||a.sharedData.products.data[d].buybtn)),c.maxStock=d&&a.sharedData.products.data[d].quantity||0,c.quantityToAdd=c.quantityToAdd||0}),this.$scope.$root.$emit("csOptionSelect-change",this.$scope.outputId);var h=this.$scope.productOptions.optionTypes.length;this.attrs.outputStatus&&(d.compact(this.$scope.storageVar).length===
9h?(this.$scope.outputStatus.selected=!0,this.$scope.outputTempId?(this.$scope.outputStatus.exist=!0,this.$scope.outputStatus.buyable=!this.sharedData.products.data[this.$scope.outputTempId].outofstock||this.sharedData.products.data[this.$scope.outputTempId].buybtn):(this.$scope.outputStatus.exist=!1,this.$scope.outputStatus.buyable=!1)):this._initOutputStatus(),this.$scope.outputTempId&&(this.$scope.outputStatus.lastId=parseInt(this.$scope.outputTempId)))}},_updateStatus:function(a){a&&!d.isEmpty(a)&&(a.status=0,d.each(a,function(b,c){this.statusMap[c]&&b&&(a.status+=this.statusMap[c])},this))}}))(a,{elem:g,attrs:h})},template:function(a,b){var c;switch(b.template){case"select":c='<select ng-if="optionValues.length" ng-options="value.id as value.name for value in optionValues" ng-model="storageVar[optidx]"></select>';break;case"color":c='<ul ng-if="optionValues.length"><li ng-repeat="value in optionValues" ng-click="select(value)" ng-class="{selected : value.selected, isUnaivailable: value.isUnaivailable}"><span class="CS-value" ng-style="{\'background-color\':\'{{value.rendervalue ? value.rendervalue : \'#FFF\'}}\'}"></span><span class="CS-name">{{value.name}}</span></li></ul>';break;case"image":c='<ul ng-if="optionValues.length"><li ng-repeat="value in optionValues" ng-click="select(value)" ng-class="{selected : value.selected, isUnaivailable: value.isUnaivailable}"><div cs cs-image-from-name name="value.name" root-cat="{{findImg}}" extension="{{extension}}" use-background="useBackground"></div><span class="CS-name">{{value.name}}</span></li></ul>';break;case"colorOrText":c='<ul ng-if="optionValues.length"><li ng-repeat="value in optionValues" ng-click="select(value)" ng-class="{selected : value.selected, isUnaivailable: value.isUnaivailable, typeColor: value.rendervalue, typeName: !value.rendervalue}"><span ng-if="value.rendervalue" class="CS-valueColor" ng-style="{\'background-color\':\'{{value.rendervalue}}\'}"></span><span ng-if="!value.rendervalue" class="CS-name">{{value.name}}</span></li></ul>';break;case"preview":c='<div class="lz-option-line" ng-if="optionValues.length"><div class="lz-current-value" ng-repeat="value in optionValues" ng-if="value.selected" ng-class="{isUnaivailable: value.isUnaivailable}"><span class="lz-name">{{value.name}}</span><span ng-if="value.rendervalue" class="lz-valueColor" ng-style="{\'background-color\':\'{{value.rendervalue}}\'}"></span></div></div>';break;case"mobile-preview":c='<div class="option-preview" ng-class="{isUnaivailable: currentOption.isUnaivailable}"><div ng-if="currentOption.rendervalue" class="option-rendervalue" ng-style="{\'background-color\': currentOption.rendervalue}"></div> <div class="option-value">{{currentOption.name}}</div></div>';break;default:c='<ul ng-if="optionValues.length"><li ng-repeat="value in optionValues" ng-click="select(value)" ng-class="{selected : value.selected, isUnaivailable: value.isUnaivailable}"><span class="CS-name">{{value.name}}</span></li></ul>'}return c}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csOptionsInputTable",["sharedData","wsManager","$filter",function(a,b,c){return{restrict:"A",scope:{pdtId:"=",onAdd:"&"},link:function(c,d,e){function f(){c.pdtId&&b.getProductOptions(c.pdtId)}function g(b,d,e){e&&delete c.options;var f=a.productOptions.data[c.pdtId];!f||f.optionTypes.length<1||(c.testPdt=function(b,c){var d;return(d=f.optionsPointers[b+"-"+c])&&(!a.products.data[d].outofstock||a.products.data[d].buybtn)},c.returnPdt=function(b,c){var d=f.optionsPointers[b+"-"+c];return a.products.data[d]},c.options=f,h(),c.execAction=function(a,b){var d=f.optionsPointers[a+"-"+b];d&&c.onAdd&&(c.onAdd({pdtId:d}),c.$root.$emit("csOptionsInputTable",c.pdtID,d))})}var h=c.$root.$on("csProductOptions-data",g);b.getProductOptions(c.pdtId),c.optionValue=c.optionValue||{},c.$watch("pdtId",f)},template:'<div class="CS-firstCol"><div ng-repeat="optionT2Value in options.optionTypes[1].values" class="optionFirstColValues">{{optionT2Value.name}}</div></div><div class="CS-column" ng-repeat="optionT1Value in options.optionTypes[0].values track by $index" ng-init="idx = $index"><div class="CS-firstLine"><div class="CS-T1Name">{{optionT1Value.name}}</div></div><div class="CS-secondLine"><div ng-repeat="optionT2Value in options.optionTypes[1].values" class="optionT2Values"><div class="CS-T2Name" ng-class="{ isUnaivailable: !testPdt(optionT1Value.id, optionT2Value.id), isSelected: returnPdt(optionT1Value.id, optionT2Value.id).quantityToAdd > 0 }" data-value="{{optionT2Value.name}}"><div cs cs-quantity-box min="0" pdt-id="returnPdt(optionT1Value.id, optionT2Value.id).id"></div></div></div><div class="optionT2Values" ng-show="options.optionTypes.length === 1"><div class="CS-T2Name"><div cs cs-quantity-box min="0" pdt-id="options.optionsIds[idx]"></div></div></div></div></div>'}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csOptionsTable",["sharedData","wsManager","$filter",function(a,b,c){return{restrict:"A",scope:{pdtId:"=",onAdd:"&",onMouseEnter:"&",onMouseOut:"&",extension:"@",findImg:"@",rootPath:"@"},link:function(c,d,e){function f(){c.pdtId&&b.getProductOptions(c.pdtId)}function g(b,d,e){e&&delete c.options;var f=a.productOptions.data[c.pdtId];f&&2==f.optionTypes.length&&(c.testPdt=function(b,c){var d;return(d=f.optionsPointers[b+"-"+c])&&(!a.products.data[d].outofstock||a.products.data[d].buybtn)},c.options=f,h(),c.execAction=function(a,b){var d=f.optionsPointers[a+"-"+b];d&&c.onAdd&&(c.onAdd({pdtId:d}),c.$root.$emit("csOptionsTable",c.pdtID,d))},c.mouseoverAction=function(a,b){var d=f.optionsPointers[a+"-"+b];d&&c.onMouseEnter&&c.onMouseEnter({pdtId:d})},c.mouseleaveAction=function(a,b){var d=f.optionsPointers[a+"-"+b];d&&c.onMouseOut&&c.onMouseOut({pdtId:d})})}var h=c.$root.$on("csProductOptions-data",g);b.getProductOptions(c.pdtId),c.optionValue=c.optionValue||{};parseInt(c.optionIndex);c.$watch("pdtId",f)},template:function(a,b){var c,d="";return b.orderby&&(d="|orderBy:'"+b.orderby+"'"),b.template,c='<div class="CS-column" ng-repeat="optionT1Value in options.optionTypes[0].values '+d+'" style="width:{{100/options.optionTypes[0].values.length}}%;"><div class="CS-firstLine"><div cs cs-image-from-name name="optionT1Value.name" root-cat="{{findImg}}" extension="{{extension}}"></div><div class="CS-T1Name">{{optionT1Value.name}}</div></div><div class="CS-secondLine"><div ng-repeat="optionT2Value in options.optionTypes[1].values '+d+'" class="optionT2Values" ng-mouseover="mouseoverAction(optionT1Value.id, optionT2Value.id)" ng-mouseleave="mou
9seleaveAction(optionT1Value.id, optionT2Value.id)" ><div ng-click="execAction(optionT1Value.id, optionT2Value.id)" class="CS-T2Name" ng-class="{isUnaivailable: !testPdt(optionT1Value.id, optionT2Value.id)}" data-value="{{optionT2Value.name}}">{{optionT2Value.name}}</div></div></div></div>',c}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csPriceByWeight",["oxProductLnk","$filter",function(a,b){return{restrict:"A",replace:!1,scope:{pdtId:"=?",litreField:"@",litreSymbol:"@"},link:function(c,d,e){new(a.extend({name:"csPriceByWeight",detailLevel:["extra"],translation:[{pricePerKilo:"soit #price le #weight"},{pricePerKilo:"#price per #weight"},{pricePerKilo:"#price el #weight"},{pricePerKilo:"#price/#weight"},{pricePerKilo:"#price/#weight"},{pricePerKilo:"of #price per #weight"},{pricePerKilo:"#price/#weight"},{pricePerKilo:"#price/#weight"}],init:function(){this.$scope.litreField&&this.detailLevel.push("facets"),this._super()},process:function(){var a;if(this.$scope.litreField&&this.$scope.product.facets&&(a=b("filter")(this.$scope.product.facets,{name:this.$scope.litreField})[0])){var c=(a.values[0]&&a.values[0].name||1).replace(/([^\d\.]+)/g,""),d=this.$scope.product.price/parseFloat(c);this.$scope.product.pricePerKg=this.$scope.translation.pricePerKilo&&this.$scope.translation.pricePerKilo.replace(/#price/gi,b("currency")(d)).replace(/#weight/g,e.litreSymbol||"l"),this.$scope.product.secondaryPrice&&(d=this.$scope.product.secondaryPrice/parseFloat(c),this.$scope.product.pricePerKgSecCur=this.$scope.translation.pricePerKilo&&this.$scope.translation.pricePerKilo.replace(/#price/gi,b("currency")(d,this.sharedData.currencies.scndryCur)).replace(/#weight/g,e.litreSymbol||"l"))}else if(this.$scope.product.weight){var d=1e3*this.$scope.product.price/this.$scope.product.weight;this.$scope.product.pricePerKg=this.$scope.translation.pricePerKilo&&this.$scope.translation.pricePerKilo.replace(/#price/gi,b("currency")(d)).replace(/#weight/g,"kg"),this.$scope.product.secondaryPrice&&(d=1e3*this.$scope.product.secondaryPrice/this.$scope.product.weight,this.$scope.product.pricePerKgSecCur=this.$scope.translation.pricePerKilo&&this.$scope.translation.pricePerKilo.replace(/#price/gi,b("currency")(d,this.sharedData.currencies.scndryCur)).replace(/#weight/g,"kg"))}this.$scope.$root.$emit("csProducts-weight",this.$scope.pdtId)}}))(c,{elem:d,attrs:e})},template:function(a,b){return b.template,'<div ng-show="product.pricePerKg" class="lz-main-cur">{{product.pricePerKg}}</div><div ng-show="product.pricePerKgSecCur" class="lz-second-cur">{{product.pricePerKgSecCur}}</div>'}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csPriceInXInstallments";b.module("oxFramework").addDirective(e,["oxClass","Directive",function(a,b){return new(b.extend({scope:{price:"<?",installments:"<?",min:"<?",max:"<?"},link:function(b,c,d){new(a.extend({name:e,defineScope:{ctx:{splittedPrice:null}},translation:[{pre:"ou ",post:" sans frais"},{pre:"or",post:" interest-free"},{pre:"o",post:" sin intereses"},{pre:"oder",post:" kostenlos"},{pre:"o",post:" senza alcun costo"},{pre:"of ",post:"Gratis"},{pre:"or",post:" interest-free"},{pre:"ou",post:" sem custo"}],watchers:{price:"watchPrice"},init:function(){this.$scope.installments=this.$scope.installments||3},watchPrice:function(){if(!this.$scope.price)return void(this.$scope.ctx.splittedPrice=null);this.$scope.max&&this.$scope.price>parseInt(this.$scope.max)||this.$scope.min&&this.$scope.price<parseInt(this.$scope.min)?this.$scope.ctx.splittedPrice=null:this.$scope.ctx.splittedPrice=(this.$scope.price/parseFloat(this.$scope.installments)).toFixed(2)}}))(b)},template:function(a,b){return b.template,'<div ng-if="ctx.splittedPrice"> <span class="PBShortTxt lz-text-pre">{{translation.pre}}</span> <span class="PBShortTxt lz-text-installments">{{installments}} x </span> <span cs-price price="ctx.splittedPrice"></span>
9 <span class="PBShortTxt lz-text-post">{{translation.post}}</span> </div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csPricePerUnit",["sharedData","wsManager","$filter",function(a,b,d){return{restrict:"A",replace:!0,scope:{pdtId:"=",detail:"=?",map:"=?"},link:function(e,f,g){function h(){e.pdtId&&(j=e.$root.$on("csProducts-data",i),b.getProductById(e.pdtId,k))}function i(){if(e.product=a.products.data[e.pdtId],e.product&&b.areAllInArray(e.product.detailLevel,k)){j();var c,f,g,h,i,l;switch(e.product.facets&&((c=d("filter")(e.product.facets,{name:e.map.Unity},!0)[0])&&(g=(c.values[0]&&c.values[0].name||"U").toUpperCase()),(c=d("filter")(e.product.facets,{name:e.map.Capacity},!0)[0])&&(f=c.values[0]&&c.values[0].name,(!f||/null/gi.test(f))&&(f=1),h=parseFloat(f.toString().replace(/([^\d\.]+)/g,""))),(c=d("filter")(e.product.facets,{name:e.map.DisplayUnity},!0)[0])&&(i=c.values[0]&&c.values[0].name||"")),(!g||/null/gi.test(g))&&(g="U"),(!h||isNaN(h))&&(h=1),i&&/null/gi.test(i)&&(i=null),g){case"L":case"KG":l=(e.product.price/h).toFixed(2),i&&(e.product.pricePerKg=d("currency")(l)+i);break;default:e.product.pricePerKg=null}e.$root.$emit("csProducts-weight",e.pdtId)}}var j,k=["facets"];(void 0===e.detail?!!c("#maincontainer.itemdetail").length:e.detail)&&k.push("detail"),e.map=e.map||{Unity:"Unity",Capacity:"Capacity",DisplayUnity:"DisplayUnity"},e.$watch("pdtId",h)},template:'<div ng-if="product.pricePerKg">{{product.pricePerKg}}</div>'}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductAltVatPrice";b.module("oxFramework").addDirective(e,["oxProductLnk","Directive",function(a,b){return new(b.extend({priority:500,scope:{detail:"<?",discountGrid:"<?",pdtId:"<?",template:"@",updateWithQty:"<?",unitPrice:"<?"},link:function(b,c,d){var f=["list"];b.discountGrid&&(f=["list","discountGrid"]),new(a.extend({name:e,translation:[{htFormat:"# HT",ttcFormat:"# TTC"},{htFormat:"# Exc. VAT",ttcFormat:"# Inc. VAT"},{htFormat:"# +IVA",ttcFormat:"# IVA Incl."},{htFormat:"# o. MwSt.",ttcFormat:"# inkl. MwSt."},{htFormat:"# IVA esc.",ttcFormat:"# IVA inc."},{htFormat:"# Excl. BTW",ttcFormat:"# Incl. BTW"},{htFormat:"# +IVA",ttcFormat:"# IVA Incl."}],init:function(){this._super(),this.$scope.updateWithQty&&this.addWatcherCollection({product:"updateScope"})},detailLevel:f,process:function(){this.updateScope()},updateScope:function(){if(this.$scope.product){var a=this.oxProductHelper.getPrice(this.$scope.pdtId,this.$scope.updateWithQty,this.$scope.unitPrice);a.priceHT!==a.priceTTC&&"none"!==this.sharedData.priceConf.vatMode?this.sharedData.priceConf.ttc?(this.$scope.price=a.priceHT,this.$scope.secondaryPrice=a.secondaryPriceHT,this.$scope.wrapper=this.$scope.translation.htFormat):(this.$scope.price=a.priceTTC,this.$scope.secondaryPrice=a.secondaryPriceTTC,this.$scope.wrapper=this.$scope.translation.ttcFormat):this.$scope.price=0}}}))(b,{elem:c,attrs:d})},template:function(a,b){return b.template,'<div ng-show="price" cs-price price="price" secondary-price="secondaryPrice" wrapper="wrapper" prevent-vat="true"></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductAttribute";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk","$parse",function(a,b,c){return new(a.extend({scope:{pdtId:"<?",attributeIndex:"=",keepInStorage:"<?"},link:function(a,f,g){new(b.extend({name:e,detailLevel:["detail"],watchersCollection:{"xmlopt.current":"select"},defineScope:{ctx:{attributeIndex:1}},init:function(){this._super()},process:function(){if(this.$scope.ctx.attributeIndex=parseInt(this.$scope.attributeIndex||1),this.$scope.xmlopt=c("xmlopt"+this.$scope.ctx.attributeIndex)(this.$scope.product),this.$scope.xmlopt){var a;this.$scope.keepInStorage&&(a=this.localStorage.get(this.$scope.product.globalId+"-"+this.$scope.ctx.attributeIndex)),this.$scope.xmlopt.current=a||this.oxProductHelper.getGlobalAttribute(this.$scope.pdtId,this.$scope.ctx.attributeIndex),this.select()}},select:function(){this.$scope.product&&(this.oxProductHelper.setGlobalAttribute(this.$scope.pdtId,this.$scope.ctx.attributeIndex,this.$scope.xmlopt.current),this.$scope.product["xmlopt"+this.$scope.ctx.attributeIndex+"Value"]=!d.isUndefined(this.$scope.xmlopt.current)&&this.$scope.xmlopt.attributes[this.$scope.xmlopt.current].priceoffset||null,this.$scope.keepInStorage&&this.localStorage.set(this.$scope.product.globalId+"-"+this.$scope.ctx.attributeIndex,this.$scope.xmlopt.current))}}))(a,{elem:f,attrs:g})},template:function(a,b){var c="";
9switch(b.template){case"mobile-preview":c='<div class="option-preview"> <div class="option-value">{{xmlopt.attributes[xmlopt.current].name}}</div></div>';break;case"mobile-radio":c='<md-radio-group ng-model="xmlopt.current" class="l-check-list l-section" ng-if="xmlopt.attributes.length"> <div ng-repeat="(key,attribute) in xmlopt.attributes" class="l-check-list__item"> <md-radio-button ng-value="key"> <div class="l-check-list__item-text"> {{attribute.name}} </div> <div ng-if="attribute.priceoffset" class="l-check-list__item-text u-text-right"> <div class="l-check-list__item-price"> <span cs cs-price original-price="attribute.priceToAddOrg" price="attribute.priceToAdd" discount="product.discount" original-secondary-price="attribute.secondaryPriceToAddOrg" secondary-price="attribute.secondaryPriceToAdd"></span> </div> </div> </md-radio-button> </div></md-radio-group>';break;case"preview":c='<div class="lz-attribute-line" ng-if="xmlopt"><span class="lz-name">{{xmlopt.attributes[xmlopt.current].name}}</span></div>';break;case"image": 10c='<div class="c-cs-product-attribute__item" ng-repeat="(key,attribute) in xmlopt.attributes" ng-class="{\'is-selected\': xmlopt.current === key}"> <label class="c-cs-product-attribute__item-inner"> <input class="c-cs-product-attribute__item-radio" name="XMLOpt{{ctx.attributeIndex}}" type="radio" ng-model="xmlopt.current" ng-value="key"> <div class="c-cs-product-attribute__item-image" cs cs-image-from-name name="attribute.code" root-cat="product-attributes"></div> <div class="c-cs-product-attribute__item-hover"> <div class="c-cs-product-attribute__item-image-hover" cs cs-image-from-name name="attribute.code" root-cat="product-attributes"></div> <div class="c-cs-product-attribute__item-name-container"> <span class="c-cs-product-attribute__item-name">{{attribute.name}}</span> <span class="c-cs-product-attribute__item-price" ng-if="attribute.priceoffset" cs-price original-price="attribute.priceToAddOrg" price="attribute.priceToAdd" discount="product.discount"></span> </div> </div> </label></div>';break;case"combo":c='<ul class="c-cs-product-attribute__item c-cs-product-attribute__item--combo" ng-if="xmlopt.attributes"> <li ng-repeat="(key,attribute) in xmlopt.attributes" ng-click="xmlopt.current = key" ng-class="{\'is-selected\': xmlopt.current === key}"> <span class="lz-name">{{attribute.name}}</span> <span class="c-cs-product-attribute__item-price" ng-if="attribute.priceoffset" cs-price original-price="attribute.priceToAddOrg" price="attribute.priceToAdd" discount="product.discount"></span> </li></ul>';break;default:c='<div class="lz-attribute-line" ng-repeat="(key,attribute) in xmlopt.attributes" > <label> <input type="radio" ng-model="xmlopt.current" ng-value="key"> <span class="PBMainTxt lz-name">{{attribute.name}}</span> <span class="lz-price" ng-if="attribute.priceoffset" cs-price original-price="attribute.priceToAddOrg" price="attribute.priceToAdd" discount="product.discount"></span> </label></div>'}return c}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csProductByCategory",["sharedData","wsManager",function(c,d){return{restrict:"A",scope:{catId:"=",translation:"=?",template:"=?"},link:function(e,f,g){function h(){e.catId&&(l=e.$root.$on("csProductsByCat-data",i),d.getProductByCatId(e.catId,m))}function i(){e.productsByCat=c.productsByCat.data[e.catId],e.productsByCat&&d.areAllInArray(e.productsByCat.detailLevel,m)&&(l(),e.products=c.products.data,e.currencies=c.currencies)}var j=[{addToCart:"Ajouter au panier"},{addToCart:"Add To cart"},{addToCart:"Add To cart"},{addToCart:"Add To cart"},{addToCart:"Add To cart"},{addToCart:"Add To cart"}],k=(b.module("oxFramework").lang,a.oxInfos&&a.oxInfos.oxLang||0);e.translation=e.translation||j[k];var l,m=["list"];e.$watch("catId",h),e.goTo=function(b){a.location.assign(b)}},template:function(a,b){return b.template,'<div type="{{products[product].pdttype}}" ng-repeat="product in productsByCat.productsIds" ng-click="goTo(products[product].url)"><h4 class="PBMainTxt" cs-bind-html="products[product].name"></h4><div cs cs-product-price pdt-id="products[product].id" show-prices-at-zero="false"></div><div class="PBItemImg"><img class="imgthumbnail" alt="{{products[product].name}}" itemprop="image" cs-data-src="{{products[product].smallimg || products[product].bigimg}}"></div> <a ng-show="products[product].buybtn" cs cs-add-to-cart pdt-id="products[product].id" class="btnmain btnaddtocart" cancel-propagation="true"><span>{{translation.addToCart}}</span></a></div>'}}}])}(window,window.angular,window.angular.element,window._),function(a){var b="csProductByFacetList",c=a.module("oxFramework");c.addDirective(b,["Directive","oxProductLnk","oxProductHelper","oxWs","sharedData",function(a,d,e,f,g){return new(a.extend({restrict:"A",scope:{pdtId:"<?",associationFacet:"@",dis
10play:"@?",structure:"<?",navAction:"<?",isProductPage:"<?",hasTopBtn:"<?"},link:function(a,h,i){i.structure=["sku","ean","name","image","stock","description","price","qty"],new(d.extend({name:b,detailLevel:["facets"],bindConfigToScope:!0,defaultConfig:{isProductPage:!0,display:"table",structure:["sku","ean","name","image","stock","description","price","qty"],navAction:!0,hasTopBtn:!0},translation:[{sku:"Code Sku",s:"Code Sku",ean:"Code Ean",e:"Code Ean",name:"Nom du produit",n:"Nom du produit",image:"Image",i:"Image",stock:"Stock",S:"Stock",description:"Description",d:"Description",qty:"Quantit\xe9",q:"Quantit\xe9",price:"Prix",p:"Prix",btn:"Action",b:"Action",addToCart:"Ajouter au panier",title:"Nos d\xe9clinaisons pour cet article :"}],defineScope:{ctx:{isAvailable:!1,associationValue:[],parentFacetId:0,products:[],isProductPage:!1,device:"",addProductToCart:function(){var a={},b=!0;_.each(this.products,function(c){g.products.data[c.id].quantityToAdd&&g.products.data[c.id].quantityToAdd>0&&(b?(a.itemId=c.id,a.itemQty=g.products.data[c.id].quantityToAdd,a.relatedPdtIds=[],b=!1):a.relatedPdtIds.push(c.id+"*"+g.products.data[c.id].quantityToAdd))}.bind(this)),f.sendToCart(a).$promise.then(function(){"undefined"!=typeof oxCart?oxCart.oxAddToCart():c.isMobile?window.location.assign("MBShoppingCart.asp"):window.location.href="/PBShoppingCart.asp"})}}},init:function(){this._super()},process:function(){this.isAvailableProduct()},isAvailableProduct:function(){e.hasFacet(this.$scope.pdtId,this.$scope.associationFacet).then(function(a){this.$scope.isAvailable=!0,this.getFacetValue()}.bind(this))},getFacetValue:function(){this.$scope.ctx.isAvailable=!0,e.getFacetValues(this.$scope.pdtId,this.$scope.associationFacet).then(function(a){_.each(a[this.$scope.associationFacet],function(a){this.$scope.ctx.associationValue.push(a.valueId)}.bind(this)),this.getFacetId()}.bind(this))},getFacetId:function(){if(this.localStorage.get(this.$scope.associationFacet)){this.$scope.ctx.parentFacetId=this.localStorage.get(this.$scope.associationFacet);var a=this.formatDataToOxWs();this.getProducts(a)}else{var b=f.getOptionType({internalName:this.$scope.associationFacet});b.$promise.then(_.bind(function(){this.$scope.ctx.parentFacetId=b.typeId,this.localStorage.set(this.$scope.associationFacet,b.typeId);var a=this.formatDataToOxWs();this.getProducts(a)},this))}},formatDataToOxWs:function(){var a="";return _.each(this.$scope.ctx.associationValue,function(b){a+=this.$scope.ctx.parentFacetId+":"+b+","}.bind(this)),a},getProducts:function(a){var b=f.getProducts({catId:"",selectedFacets:a,detailLevel:"extra"});b.$promise.then(_.bind(function(){this.$scope.isProductPage||window.mobileConfig&&"itemDetail"==window.mobileConfig.pagname?this.$scope.ctx.products=_.reject(b.products,function(a){return a.id===this.$scope.pdtId}.bind(this)):this.$scope.ctx.products=b.products},this))}}))(a,{elem:h,attrs:i})},template:function(a,b){if(c.isMobile)var d="is-mobile";else var d="is-desktop";switch(b.display){case"table":var e='<div class="c-cs-product-by-facet-list__inner '+d+'"> <table class="c-cs-product-by-facet-list__table-display" ng-if="display == \'table\'"> <thead class="c-cs-product-by-facet-list__table-head"> <tr> <th ng-repeat="elem in structure" class="c-cs-product-by-facet-list__head is-{{elem}}">{{translation[elem]}}</th> </tr> </thead>',f='<tbody class="c-cs-product-by-facet-list__table-body"> <tr cs cs-product-display structure="'+b.structure+'" display="'+b.display+'" nav-action="'+b.navAction+'" class="c-cs-product-by-facet-list__line" ng-repeat="product in ctx.products" pdt-id="product.id"> </tr> </tbody></table></div>';break;case"block":var e='<div class="c-cs-product-by-facet-list__content-products">',f='<div cs cs-product-display structure="'.concat(b.structure,'" display="').concat(b.display,'" nav-action="').concat(b.navAction,'" class="c-cs-product-by-facet-list__product" ng-repeat="product in ctx.products" pdt-id="product.id">\n </div>\n </div>\n </div>')}if("true"==b.hasTopBtn)var g='<div class="c-cs-product-by-facet-list__container-all" ng-if="ctx.isAvailable">\n <div class="c-cs-product-by-facet-list__title-facet-list PBMainTxt">\n {{translation.title}}\n </div>\n <div class="c-cs-product-by-facet-list__btn-container '.concat(d,'">\n <a id="btnaddtocart" class="btnmain btnaddtocart c-button c-button--primary" ng-click="ctx.addProductToCart()">
10\n <span>{{translation.addToCart}}</span>\n </a>\n </div>');else var g='<div class="c-cs-product-by-facet-list__container-all" ng-if="ctx.isAvailable">\n <div class="c-cs-product-by-facet-list__title-facet-list PBMainTxt">\n {{translation.title}}\n </div>';return g+e+f+'<div class="c-cs-product-by-facet-list__btn-container '.concat(d,'">\n <a id="btnaddtocart" class="btnmain btnaddtocart c-button c-button--primary" ng-click="ctx.addProductToCart()">\n <span>{{translation.addToCart}}</span>\n </a>\n </div>\n </div>')}}))({name:b})}])}(window.angular),function(a,b,c,d){var e="csProductComment";b.module("oxFramework").addDirective(e,["oxProductLnk",function(a){return{restrict:"A",replace:!1,scope:{pdtId:"=?",detail:"=?"},link:function(b,c,d){new(a.extend({name:e,detailLevel:["list","taskcomment"]}))(b,{elem:c,attrs:d})},template:function(a,b){var c="";switch(b.template){case"noLink":c='<span class="PBMainTxt">{{product.taskcomment}}</span>';break;default:c='<a class="PBLink" href="{{product.url}}"><span class="PBMainTxt">{{product.taskcomment}}</span></a>'}return c}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductCrossSales";b.module("oxFramework").addDirective(e,["Directive","oxLnk","oxProductHelper","wsManager","oxLocationService",function(f,g,h,i,j){return new(f.extend({restrict:"A",scope:{pdtId:"<?",showOutofstockMsg:"<",hasElem:"=",maxElements:"@",click:"&",type:"@"},link:function(f,i,k){new(g.extend({name:e,translation:[{title:"Articles compl\xe9mentaires",addToCart:"Ajouter au panier",seeAllOptions:"Voir les d\xe9clinaisons",details:"D\xe9tails",outofstock:"En r\xe9assort"},{title:"Complementary items",addToCart:"Add to Cart",seeAllOptions:"See All Options",details:"Details",outofstock:"Out of stock"},{title:"Art\xedculos complementarios",addToCart:"A\xf1adir a la cesta",seeAllOptions:"Ver las variantes",details:"Detalles",outofstock:"No est\xe1 disponible"},{title:"Passende Artikel",addToCart:"In den Warenkorb legen",seeAllOptions:"Ausf\xfchrungen ansehen",details:"weitere Infos",outofstock:"Nicht verf\xfcgbar"},{title:"I nostri clienti hanno acquistato anche",addToCart:"Acquista",seeAllOptions:"Vedere le variazioni",details:"Dettagli",outofstock:"Non disponibile"},{title:"Aanvullende artikelen",addToCart:"In winkelwagen",seeAllOptions:"Bekijk opties",details:"Details",outofstock:"In afwachting van bevoorrading"},{title:"Complementary items",addToCart:"Add to Cart",seeAllOptions:"See All Options",details:"Details",outofstock:"Out of stock"},{title:"Complementary items",addToCart:"Add to Cart",seeAllOptions:"See All Options",details:"Details",outofstock:"Out of stock"}],component:"shop",wsType:"relatedItems",detailLevel:["list"],defineScope:{ctx:{selectionList:{}},goTo:function(a){c(".c-cs-product-cross-sales__product-action",i).length?this.$scope.addRelated(a.id):j.assign(a.url,{pdtId:a.id,place:this.$scope.analyticsList})},stopPropagation:function(a){a.stopPropagation()},elemClick:function(a,b){k.click?this.$scope.click({$event:a,pdt:b}):this.$scope.goTo(b)},toggle:function(a){var b=this.$scope.product&&this.$scope.product.relatedPdtIDs||[],c=b.indexOf(a);-1===c?b.push(a):b.splice(c,1)},scIsAddableToCart:function(a){return h.isAddableToCart(a)},scIsParentOptionSelected:function(a){return h.isParentOptionSelected(a)},check:function(a){return!(!this.$scope.product||!this.$scope.product.relatedPdtIDs)&&d.contains(this.$scope.product.relatedPdtIDs,a)},addRelated:function(a,b){b&&b.stopPropagation(),this.$scope.product.relatedPdtIDs=this.$scope.product.relatedPdtIDs||[],this.$scope.check(a)?this.$scope.product.relatedPdtIDs.splice(d.indexOf(this.$scope.product.relatedPdtIDs,a),1):this.$scope.product.relatedPdtIDs.push(a)}},updatePdtCrossSalesList:function(){this.sharedData.products.data[this.$scope.pdtId].relatedPdtIDs},init:function(){switch(this.attrs&&this.elem&&!this.attrs.pdtId&&(this._getParentPdtId(),this.elem.closest("[cs-product-init]").length&&this.addRootScopeEvt({"update-pdtId":function(){this._getParentPdtId()}})),this.$scope.type){case"up":this.detailLevel=["up"],this.$scope.typeOfData="upIds",this.$scope.type="up",this.$scope.anal
10yticsList="up-sales";break;default:this.detailLevel=["cross"],this.$scope.typeOfData="crossIds",this.$scope.type="cross",this.$scope.analyticsList="cross-sales"}this._super()},process:function(){this.$scope.product=this.sharedData.products.data[this.$scope.pdtId],this.$scope.relatedPdtIDs=this.$scope.ctx.relatedPdtIDs=this.$scope.relatedProducts[this.$scope.typeOfData],this.$scope.productsData=this.sharedData.products.data,k.hasElem&&(this.$scope.hasElem=!!this.$scope.ctx.relatedPdtIDs.length),this.sendToOxAnalytics()},sendToOxAnalytics:function(){if(a.oxTrackings){var c=[];b.forEach(this.$scope.relatedPdtIDs,function(a,b){var d=this.$parse("productsData["+a+"]")(this.$scope);d&&(d.position=b,c.push(d))}.bind(this)),c.length&&a.oxTrackings("impressions",{products:c,list:this.$scope.analyticsList})}}}))(f,{elem:i,attrs:k})},template:function(a,c){var d,e={n:'<div class="c-cs-product-cross-sales__product-name"><a class="PBLink" href="{{::productsData[relatedId].url}}" title="{{::productsData[relatedId].name}}"><span class="PBShortTxt" cs-bind-html="::productsData[relatedId].name"></span></a></div>',p:'<div class="c-cs-product-cross-sales__product-price" cs cs-product-price show-prices-at-zero="false"></div>',v:"<div cs cs-product-alt-vat-price></div>",i:'<div class="c-cs-product-cross-sales__product-image" cs cs-product-img nav-action="false"></div>',a:'<div class="c-cs-product-cross-sales__product-action"><a ng-show="scIsAddableToCart(relatedId)" cs cs-add-to-cart analytics-list="analyticsList" class="c-button c-button--primary c-button--medium" cancel-propagation="true"><span class="c-button__inner">{{::translation.addToCart}}</span></a>
10<a ng-show="scIsParentOptionSelected(relatedId)" href="{{::productsData[relatedId].url}}" class="c-button c-button--secondary c-button--medium"><span class="c-button__inner">{{::translation.seeAllOptions}}</span></a></div>',c:'<div class="c-cs-product-cross-sales__product-action"><label ng-click="stopPropagation($event)" ng-show="!scIsParentOptionSelected(relatedId)" class="c-cs-product-cross-sales__label"><input type="checkbox" ng-checked="check(relatedId)" ng-click="toggle(relatedId)" ng-show="scIsAddableToCart(relatedId)"><span></span></label><a ng-show="scIsParentOptionSelected(relatedId)" href="{{::productsData[relatedId].url}}" class="c-button c-button--secondary c-button--medium"><span class="c-button__inner">{{::translation.seeAllOptions}}</span></a></div>',d:'<div class="c-cs-product-cross-sales__product-discount" cs cs-product-discount></div>',"(":'<div class="c-cs-product-cross-sales__product-group">',")":"</div>"};switch(b.module("oxFramework").device){case"mobile":c.template,d='<oxm-slider max-elements="maxElements" ng-if="ctx.relatedPdtIDs.length" class="c-cs-product-cross-sales__inner"><oxm-slider-container><oxm-slider-element class="c-cs-product-cross-sales__product-container" ng-class="{\'has-no-image\': !productsData[relatedId].smallimg, \'has-discount\': productsData[relatedId].price !== productsData[relatedId].priceorg}" cs-product-init pdt-id="relatedId" ng-repeat="relatedId in ctx.relatedPdtIDs"><div class="c-cs-product-cross-sales__product-inner" cs cs-product-url>';var f=c.template.split("");b.forEach(f,function(a){var b=e[a];b&&(d+=b)}),d+="</div></oxm-slider-element></oxm-slider-container><oxm-slider-chips></oxm-slider-chips></oxm-slider>";break;default:switch(c.template){case"view":d='<div class="CS-crossElem" id="CS-{{type}}Elem{{productsData[relatedId].id}}" type="{{productsData[relatedId].pdttype}}" ng-repeat="relatedId in ctx.relatedPdtIDs" ng-click="elemClick($evet, productsData[relatedId] )"><h4 class="PBMainTxt" cs-bind-html="::productsData[relatedId].name"></h4><div cs cs-product-price pdt-id="productsData[relatedId].id" show-prices-at-zero="false"></div><div class="PBItemImg"><img class="imgthumbnail" alt="{{productsData[relatedId].name}}" itemprop="image" cs-data-src="{{productsData[relatedId].smallimg || productsData[relatedId].bigimg}}"></div></div>';break;case"custom":d='<div class="c-cs-product-cross-sales__element" id="CS-{{type}}Elem{{productsData[relatedId].id}}" type="{{productsData[relatedId].pdttype}}" ng-repeat="relatedId in ctx.relatedPdtIDs" cs-product-init pdt-id="relatedId" ng-click="elemClick($event, productsData[relatedId])">';var f=c.structure.split("");b.forEach(f,function(a){var b=e[a];b&&(d+=b)}),d+="</div>";break;default:d='<div class="CS-crossElem" id="CS-{{type}}Elem{{productsData[relatedId].id}}" type="{{productsData[relatedId].pdttype}}" ng-repeat="relatedId in ctx.relatedPdtIDs" ng-click="elemClick($event, productsData[relatedId])"><h4 class="PBMainTxt" cs-bind-html="::productsData[relatedId].name"></h4><div cs cs-product-price pdt-id="productsData[relatedId].id" show-prices-at-zero="false"></div><div class="PBItemImg"><img class="imgthumbnail" alt="{{productsData[relatedId].name}}" itemprop="image" cs-data-src="{{productsData[relatedId].smallimg || productsData[relatedId].bigimg}}"></div><a ng-show="scIsAddableToCart(relatedId)" cs cs-add-to-cart pdt-id="productsData[relatedId].id" class="btnmain btnaddtocart" cancel-propagation="true"><span>{{translation.addToCart}}</span></a>
10<a ng-show="scIsParentOptionSelected(relatedId)" class="btnmain btnviewoptions"><span>{{translation.seeAllOptions}}</span></a><span class="PBShortTxt PBMsgOutOfStock" ng-if="showOutofstockMsg && productsData[relatedId].outofstock" cs-bind-html="productsData[relatedId].stockscenariomessage || translation.outofstock"></span></div>'}}return d}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductDescription";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk","$sce",function(a,b,c){return new(a.extend({scope:{pdtId:"<?",type:"@",detail:"<?",maxChar:"@?",urlCorrection:"@?",strict:"@?",template:"@",hasContent:"=?",onlyText:"<?"},link:function(a,d,f){new(b.extend({name:e,detailLevel:["list"],defineScope:{desc:""},init:function(){this.$scope.type=this.$scope.type||"short","long"===this.$scope.type&&this.detailLevel.push("detail"),this._super()},process:function(){"long"===this.$scope.type&&this.$scope.product.longdescription&&this.$scope.product.longdescription.length?(this.$scope.desc=c.trustAsHtml(this.$scope.product.longdescription),this.$scope.hasContent=!0):this.$scope.product.description&&this.$scope.product.description.length?(this.$scope.desc=c.trustAsHtml(this.$scope.product.description),this.$scope.hasContent=!0):(this.$scope.desc=null,this.$scope.hasContent=!1)}}))(a,{elem:d,attrs:f})},template:function(a,b){return b.template,'<div class="PBLongTxt" itemprop="description" cs-bind-html="desc" only-text="onlyText" max-char="{{maxChar}}" strict="{{strict}}" url-correction="{{urlCorrection}}"></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductDiscount";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk",function(a,b){var c=b.extend({name:e,detailLevel:["list"],defineScope:{show:!1,discount:0},process:function(){this.$scope.show=!1!==this.$scope.product.showstrikeprice&&this.$scope.product.price<this.$scope.product.priceorg,this.$scope.discount=(100-100*this.$scope.product.discount).toFixed(0)}});return new(a.extend({scope:{pdtId:"<?",detail:"<?"},link:function(a,b,d){new c(a,{elem:b,attrs:d})},template:function(a,b){return b.template,'<div ng-if="show" class="c-cs-product-discount__inner"><div class="PBCurrency c-cs-product-discount__discount-value">- {{discount}}%</div></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductDiscountGrid";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk",function(a,c){return new(a.extend({scope:{pdtId:"<?",showDiscount:"<?",showPrice:"<?",template:"@"},link:function(a,d,f){new(c.extend({name:e,translation:[{step:"A partir de",discount:"Remise de",price:"Prix"},{step:"From",discount:"Discount of",price:"Price"}],init:function(){this._super()},defineScope:{ctx:{trigger:"qty",display:"discount",ready:!1}},detailLevel:["list","discountGrid"],process:function(){if(this.$scope.currencies=this.sharedData.currencies,this.$scope.product.discountGrid&&this.$scope.product.discountGrid.values.length?d.show():d.hide(),this.$scope.product&&this.$scope.product.discountGrid&&5!==this.$scope.product.discountGrid.type&&6!==this.$scope.product.discountGrid.type){switch(this.$scope.product.discountGrid.type){case 2:this.$scope.ctx.trigger="price",this.$scope.ctx.display="discount";break;case 3:this.$scope.ctx.trigger="qty",this.$scope.ctx.display="price";break;default:this.$scope.ctx.trigger="qty",this.$scope.ctx.display="discount"}this.$scope.showDiscount&&"discount"!==this.$scope.ctx.display&&(this.$scope.ctx.display="forcedDiscount"),this.$scope.showPrice&&"price"!==this.$scope.ctx.display&&(this.$scope.ctx.display="forcedPrice"),this.$scope.discountGrid=b.copy(this.$scope.product.discountGrid),b.forEach(this.$scope.discountGrid.values,function(a){switch(this.$scope.ctx.display){case"discount":a.finalValue=a.discount;break;case"forcedDiscount":a.finalValue=100*a.discount/this.$scope.product.price;break;case"price":a.finalValue=a.discount;break;case"forcedPrice":a.finalValue=(100-a.discount)/100*this.$scope.product.price}}.bind(this)),this.$scope.ctx.ready=!0}}}))(a,{elem:d,attrs:f})},template:function(a,b){return b.template,'<div class="colHead c-cs-product-discount-grid__line c-cs-product-discount-grid__line--head" ng-show="ctx.ready"> <span class="step stepHead c-cs-product-discount-grid__cell c-cs-product-discount-grid__cell--step-head">{{::translation.step}}</span> <span class="stepDiscount c-cs-product-discount-grid__cell c-cs-product-discount-grid__cell--discount-head" ng-if="ctx.display === \'discount\' || ctx.display === \'forcedDiscount\'">{{::translation.discount}}</span> <span class="stepPrice c-cs-product-discount-grid__cell c-cs-product-discount-grid__cell--price-head" ng-if="ctx.display == \'price\' || ctx.display == \'forcedPrice\'">{{::translation.price}}</span></div><div class="stepValues c-cs-product-discount-grid__line c-cs-product-discount-grid__line--values" ng-repeat="step in discountGrid.values"> <div ng-if="ctx.trigger == \'qty\'" class="stepHead c-cs-product-discount-grid__cell c-cs-product-discount-grid__cell--set-value">{{step.lowerStep}}</div> <div ng-if="ctx.trigger == \'price\'" class="stepHead c-cs-product-discount-grid__cell c-cs-product-discount-grid__cell--set-value" cs-price price="step.lowerStep"></div> <div ng-if="ctx.display === \'discount\' || ctx.display === \'forcedDiscount\'" class="stepDiscount c-cs-product-discount-grid__cell c-cs-product-discount-grid__cell--discount-value" >{{step.finalValue}} %</div> <div ng-if="ctx.display === \'price\' || ctx.display === \'forcedPrice\'" class="stepPrice c-cs-product-discount-grid__cell c-cs-product-discount-grid__cell--price-value" ><div cs-price price="step.finalValue"></div></div></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductDisplay";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk","$compile","sharedData",function(a,b,c,f){return new(a.extend({scope:{pdtId:"<?",dis
10play:"@?",structure:"<?",navAction:"<?",priceOptions:"<?",clickCallback:"&?",clickStructureElement:"<?",list:"<?"},link:function(a,f,g){new(b.extend({name:e,detailLevel:"list",bindConfigToScope:!0,defaultConfig:{display:"table",structure:"snipSb"},defineScope:{ctx:{}},init:function(){this._super();var a=this.getTemplate(),b=c(a)(this.$scope);this.elem.html(b),this.$scope.clickCallback&&"all"==this.$scope.clickStructureElement&&this.elem.click(function(){this.$scope.clickCallback({pdtId:this.$scope.product.id,productData:this.$scope.product})}.bind(this))},process:function(){(this.$scope.structure.indexOf("q")>-1||this.$scope.structure.indexOf("qty")>-1)&&(this.$scope.product.quantityToAdd=0)},getTemplate:function(){var a="",b=this.$scope.structure,c=this.$scope.clickStructureElement;if(this.$scope.navAction)var e="",f='nav-action="true"';else var e='template="noLink"',f='nav-action="false"';switch(this.$scope.display){case"table":var h="td";break;case"block":default:var h="div"}return b&&!d.isArray(b)&&(b=b.split("")),d.each(b,function(b){var d="";switch(b){case"ean":case"e":"ean"!=c&&"e"!=c||(d='ng-click="clickCallback({pdtId:product.id})"'),a+="<".concat(h," ").concat(d,' class="c-cs-product-display__cell-').concat(g.display," is-").concat(b,'">\n <div class="c-cs-product-display__cell-inner is-').concat(b,'">\n {{product.ean}}\n </div>\n </').concat(h,">");break;case"sku":case"s":"sku"!=c&&"s"!=c||(d='ng-click="clickCallback({pdtId:product.id})"'),a+="<".concat(h," ").concat(d,' class="c-cs-product-display__cell-').concat(g.display," is-").concat(b,'">\n <div class="c-cs-product-display__cell-inner is-').concat(b,'">\n {{product.sku}}\n </div>\n </').concat(h,">");break;case"name":case"n":"name"!=c&&"n"!=c||(d='ng-click="clickCallback({pdtId:product.id})"'),a+="<".concat(h," ").concat(d,' class="c-cs-product-display__cell-').concat(g.display," is-").concat(b,'">\n <div class="c-cs-product-display__cell-inner is-').concat(b,'" cs cs-product-name pdt-id="product.id" ').concat(e,">\n </div>\n </").concat(h,">");break;case"price":case"p":"price"!=c&&"p"!=c||(d='ng-click="clickCallback({pdtId:product.id})"'),a+="<".concat(h," ").concat(d,' class="c-cs-product-display__cell-').concat(g.display," is-").concat(b,'">\n <div class="c-cs-product-display__cell-inner is-').concat(b,'">\n <div cs cs-product-price pdt-id="product.id" \n discount-grid="priceOptions.discountGrid" \n show-discount="priceOptions.showDiscount" \n show-strike="priceOptions.showStrike" \n show-prices-at-zero="priceOptions.showPricesAtZero"\n update-with-qty="priceOptions.updateWithQty" \n unit-price="priceOptions.unitPrice"> </div>\n </div>\n </').concat(h,">");break;case"qty":case"q":a+="<".concat(h,' class="c-cs-product-display__cell-').concat(g.display," is-").concat(b,'">\n <div class="c-cs-product-display__cell-inner is-').concat(b,'" cs cs-product-quantity pdt-id="product.id" template="mip" default-value="0" min="0" is-app="true">\n </').concat(h,">");break;case"QTY":case"Q":"QTY"!=c&&"Q"!=c||(d='ng-click="clickCallback({pdtId:product.id})"'),a+="<".concat(h," ").concat(d,' class="c-cs-product-display__cell-').concat(g.display," is-").concat(b,'">\n <div class="c-cs-product-display__cell-inner is-').concat(b,'" cs cs-product-quantity pdt-id="product.id" template="mip" keep-initial-qty="true" min="0" is-app="true">\n </').concat(h,">");break;
10case"image":case"i":"image"!=c&&"i"!=c||(d='ng-click="clickCallback({pdtId:product.id})"'),a+="<".concat(h," ").concat(d,' class="c-cs-product-display__cell-').concat(g.display," is-").concat(b,'">\n <div class="c-cs-product-display__cell-inner is-').concat(b,'" cs cs-product-img pdt-id="product.id" ').concat(f,">\n </div>\n </").concat(h,">");break;case"description":case"d":"description"!=c&&"d"!=c||(d='ng-click="clickCallback({pdtId:product.id})"'),a+="<".concat(h," ").concat(d,' class="c-cs-product-display__cell-').concat(g.display," is-").concat(b,'">\n <div class="c-cs-product-display__cell-inner is-').concat(b,'" cs cs-product-description pdt-id="product.id" type="short">\n </div>\n </').concat(h,">");break;case"stock":case"S":"stock"!=c&&"S"!=c||(d='ng-click="clickCallback({pdtId:product.id})"'),a+="<".concat(h," ").concat(d,' class="c-cs-product-display__cell-').concat(g.display," is-").concat(b,'">\n <div class="c-cs-product-display__cell-inner is-').concat(b,'" cs cs-product-stock pdt-id="product.id" template="detail">\n </div>\n </').concat(h,">");break;case"btn":case"b":"btn"!=c&&"b"!=c||(d='ng-click="clickCallback({pdtId:product.id})"'),a+="<".concat(h," ").concat(d,' class="c-cs-product-display__cell-').concat(g.display," is-").concat(b,'">\n <div class="c-cs-product-display__cell-inner is-').concat(b,'" cs cs-add-to-cart-btn pdt-id="product.id">\n </div>\n </').concat(h,">")}}),a}}))(a,{elem:f,attrs:g})}}))({name:e,module:"oxFramework"})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductEcoPart";b.module("oxFramework").addDirective(e,["oxProductLnk","oxPriceHelper",function(a,b){var c=a.extend({name:e,detailLevel:["detail"],defineScope:{ecopart:0},translation:[{ecoLabel:"Ecopart :"}],process:function(){this.$scope.ecopart=this.$scope.product.ecopart?b.formatCurrency(this.$scope.product.ecopart):null}});return{restrict:"A",replace:!1,scope:{pdtId:"<?"},link:function(a,b,d){new c(a,{elem:b,attrs:d})},template:function(a,b){return b.template,'<div class="c-cs-product-eco-part__inner lz-text" ng-show="ecopart"><span class="c-cs-product-eco-part__label">{{translation.ecoLabel}}</span> <span class="c-cs-product-eco-part__ecopart" ng-bind-html="ecopart"></span></div>'}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductExists";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk","$compile","$parse",function(a,b,c,d){return new(a.extend({compile:function(a,f){var g=d(f.pdtId);return a.addClass("ng-hide"),c.$$addBindingClass(a),{post:function(a,d,f){c.$$addBindingInfo(d,f.ngBindHtml),a.pdtId=g(a),new(b.extend({name:e,detailLevel:["list"],process:function(){ 11this.$scope.product.error||this.elem.removeClass("ng-hide")}}))(a,{elem:d,attrs:f})}}}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductFacets";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk","$sce","$filter","oxWs",function(c,f,g,h,i){return new(c.extend({scope:{pdtId:"<?",include:"<?",exclude:"<?",template:"@",showAllValues:"<?",renderType:"@?",handleLang:"<?",target:"@?",hideName:"<?",defaultValues:"<?"},link:function(c,j,k){new(f.extend({name:e,detailLevel:["facets"],defineScope:{facets:[]},bindConfigToScope:!0,defaultConfig:{target:"self"},process:function(){var a=[];this.$scope.facets=[],this.$scope.include?(d.isArray(this.$scope.include)||(this.$scope.include=[this.$scope.include]),d.each(this.$scope.include,d.bind(function(b){var c=d.where(this.$scope.product.facets,{sysName:b});c.length&&(a=d.union(a,c))},this))):a=this.$scope.product.facets,this.$scope.exclude&&!d.isArray(this.$scope.exclude)&&(this.$scope.exclude=[this.$scope.exclude]),this.$scope.defaultValues&&d.each(this.$scope.defaultValues,function(b){d.findWhere(a,{sysName:b.sysName})||a.push(b)}),d.each(a,function(a){var c=this;if(!this.$scope.exclude||-1===d.indexOf(this.$scope.exclude,a.sysName)){var e=b.copy(a);if(this.$scope.showAllValues){var f=i.getOptionType({internalName:a.sysName}),g=[];f.$promise.then(function(){f.data&&f.data.length&&(g=f.data.map(function(a){return a.pos=a.position,a.valueId=a.id,a=c._buildValueHtml(a,e)}),e.values=g),c.$scope.facets.push(e),c.safeApply()})}else d.each(e.values,function(a){a=c._buildValueHtml(a,e)}),this.$scope.facets.push(e)}}.bind(this))},_buildValueHtml:function(b,c){switch("images"===c.renderType&&"imageslist"===this.$scope.renderType?c.renderType="imageslist":"imageLnk"===this.$scope.renderType?c.renderType="imageLnk":"imageCategoryLnk"===this.$scope.renderType?c.renderType="imageCategoryLnk":"facetToLink"===this.$scope.renderType&&(c.renderType="facetToLink"),b.html='<div class="c-cs-product-facets__value '+h("oxStrechName")(b.name)+'"',c.renderType){case"colors":b.html+=' style="background-color:'+(b.renderValue||"#ffffff")+'">';break;case"images":this.$scope.handleLang?b.html+='><img class="c-cs-product-facets__value-img" alt="'+b.name+'" src="'+b.renderValue.replace(/_fr|_en|_es|_de|_it|_ne|_ca|_pt/gi,"_"+oxFramework.lang[a.oxInfos.oxLang])+'">':b.html+='><img class="c-cs-product-facets__value-img" alt="'+b.name+'" src="'+b.renderValue+'">';break;case"imageslist":this.$scope.handleLang?b.html+='><img class="c-cs-product-facets__value-img" alt=" '+b.name+'" src="'+b.renderValue.replace(/_fr|_en|_es|_de|_it|_ne|_ca|_pt/gi,"_"+oxFramework.lang[a.oxInfos.oxLang])+'"><span class="c-cs-product-facets__value-text">'+b.name+"</span>":b.html+='><img class="c-cs-product-facets__value-img" alt=" '+b.name+'" src="'+b.renderValue+'"><span class="c-cs-product-facets__value-text">'+b.name+"</span>";break;case"imageLnk":this.$scope.handleLang?b.html+='\n ><a target="_blank" class="c-cs-product-facets__imageLnk-link" ng-href="/files/'.concat(a.oxInfos.oxAccid,"/").concat(b.name,'" ng-click="$event.stopPropagation()">\n <img ng-src="').concat(b.renderValue.replace(/_fr|_en|_es|_de|_it|_ne|_ca|_pt/gi,"_"+oxFramework.lang[a.oxInfos.oxLang]),'" alt="').concat(b.name,'" class="c-cs-product-facets__imageLnk-image" >\n </a> '):b.html+='\n ><a target="_blank" class="c-cs-product-facets__imageLnk-link" ng-href="/files/'.concat(a.oxInfos.oxAccid,"/").concat(b.name,'" ng-click="$event.stopPropagation()">\n <img ng-src="').concat(b.renderValue,'" alt="').concat(b.name,'" class="c-cs-product-facets__imageLnk-image" >\n </a> ');break;case"imageCategoryLnk":b.html+='\n ><a target="_{{target}}" class="c-cs-product-facets__imageCategoryLnk-link" ng-href="'.concat(b.name,'" ng-click="$event.stopPropagation()">\n <img alt="').concat(b.name,'" ng-src="').concat(b.renderValue,'" class="c-cs-product-facets__imageCategoryLnk-image" >\n </a> ');break;case"facetToLink":b.html+='\n ><a target="_{{target}}" class=" c-cs-product-facets__facetToLink-link" ng-href="'.concat(b.name,'" ng-click="$event.stopPropagation()">').concat(c.name,"\n </a> ");break;case"values":default:b.html+=">
11"+b.name}return b.html+="</div>",b.html=g.trustAsHtml(b.html),d.findWhere(c.values,{valueId:b.valueId})||(b.isUnavailable=!0),b}}))(c,{elem:j,attrs:k})},template:function(a,b){var c,d=(b.extension,"");return b.orderby&&(d="|orderBy:'"+b.orderby+"'"),b.template,c='<div class="facetBlock c-cs-product-facets__container {{facet.sysName | oxStrechName}}" ng-repeat="facet in facets"><div ng-if="!hideName" class="c-cs-product-facets__facet-name PBShortTxt">{{facet.name}}</div><div class="c-cs-product-facets__facet-values"><div ng-repeat="facetValue in facet.values'+d+'" class="c-cs-product-facets__facet-value cs-product-facet__facets-value--type-{{facet.renderType || \'text\'}}" ng-class="{\'is-unavailable\': facetValue.isUnavailable, \'is-available\': !facetValue.isUnavailable}" cs-bind-html="facetValue.html"></div></div>',c}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductFidelityPoints";b.module("oxFramework").addDirective(e,["oxProductLnk","$filter","oxPriceHelper",function(a,b,c){return{restrict:"A",replace:!1,scope:{pdtId:"=?",step:"<?",stepBenefit:"<?",reward:"<?",rewardBenefit:"<?",outputFidelityPoints:"=?",outputFidelityReward:"=?",updateWithQty:"=?"},link:function(d,f,g){new(a.extend({name:e,translation:[{other:"<b>{{points}} points</b> de fid\xe9lit\xe9",all:"<b>{{points}} points</b> de fid\xe9lit\xe9, soit <b>{{rewardsFormatted}}</b> {{rewardsSecondaryFormatted}}"},{other:"<b>{{points}} loyalty points</b>",all:"<b>{{points}} loyalty points</b>, <b>{{rewardsFormatted}}</b> {{rewardsSecondaryFormatted}}"},{other:"<b>{{points}} puntos</b> de fidelidad",all:"<b>{{points}} puntos</b> de fidelidad, <b>{{rewardsFormatted}}</b> {{rewardsSecondaryFormatted}}"},{other:"<b>{{points}} loyalty points</b>",all:"<b>{{points}} loyalty points</b>, <b>{{rewardsFormatted}}</b> {{rewardsSecondaryFormatted}}"},{other:"<b>{{points}} punten</b>",all:"<b>{{points}} punten</b>, <b>{{rewardsFormatted}}</b> {{rewardsSecondaryFormatted}}"},{other:"<b>{{points}} loyalty points</b>",all:"<b>{{points}} loyalty points</b>, <b>{{rewardsFormatted}}</b> {{rewardsSecondaryFormatted}}"},{other:"<b>{{points}} loyalty points</b>",all:"<b>{{points}} loyalty points</b>, <b>{{rewardsFormatted}}</b> {{rewardsSecondaryFormatted}}"}],detailLevel:["list"],bindConfigToScope:!0,defaultConfig:{step:1,stepBenefit:1,reward:1,rewardBenefit:1},defineScope:{points:0,rewards:0},init:function(){this._super(),this.$scope.updateWithQty&&this.addWatcher({"product.quantityToAdd":"watchQtyTodd"})},watchQtyTodd:function(a){a&&this.process()},process:function(){var a=this.$scope.product.quantityToAdd||1;this.$scope.outputFidelityPoints=this.$scope.points=Math.floor(this.$scope.product.price*a/this.$scope.step)*this.$scope.stepBenefit,this.$scope.outputFidelityReward=this.$scope.rewards=Math.floor(this.$scope.points/this.$scope.reward)*this.$scope.rewardBenefit;var d=this.sharedData.currencies;d&&d.scndryRate&&d.scndryFormat&&this.$scope.rewards>0?(this.$scope.rewardsSecondary=this.$scope.rewards*d.scndryRate,this.$scope.rewardsSecondaryFormatted=c.formatCurrency(this.$scope.rewardsSecondary,"secondary")):(this.$scope.rewardsSecondary=null,this.$scope.rewardsSecondaryFormatted=null),this.$scope.rewardsFormatted=c.formatCurrency(this.$scope.rewards),this.$scope.textPoints=b("template")(this.$scope.translation.other,this.$scope),this.$scope.textAll=b("template")(this.$scope.translation.all,this.$scope)}}))(d,{elem:f,attrs:g})},template:function(a,b){var c="";switch(b.template){case"points":c='<span cs-bind-html="points">';break;case"rewards":c='<span cs-bind-html="rewardsFormatted"></span>',c+='<span cs-bind-html="rewardsSecondaryFormatted"></span>';break;case"all":c='<div cs-bind-html="textAll" ng-if="points > 0"></div>';break;default:c='<div cs-bind-html="textPoints" ng-if="points > 0"></div>'}return c}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductForcedPrice";b.module("oxFramework").addDirective(e,["oxProductLnk",function(a){return{restrict:"A",priority:500,scope:{pdtId:"=?",detail:"=?",priceId:"=?",template:"@",active:"=?",label:"<?"},link:function(b,c,f){new(a.extend({name:e,init:function(){this._super(),this.addWatcher({priceId:"_whenDataChange"}),this.$scope.label=this.label},detailLevel:["list"],_whenDataChange:function(){this.detailLevel=d.reject(this.detailLevel,function(a){return a=="price"+this.priceId}),this.priceId=this.$scope.priceId||4,this.detailLevel.push("price"+this.priceId),this._super()},process:function(){var a=this.$scope.product,b=a.discount||1;this.$scope.price=a.prices[this.priceId].price/b,this.$scope.currencies=this.sharedData.currencies,this.$scope.active=this.$scope.price&&!0}}))(b,{elem:c,attrs:f})},template:function(a,b){return b.template,'<div ng-if="price"><span class="c-cs-product-forced-price--label" ng-if="label">{{label}}</span><span class="PBStrike c-cs-product-forced-price--price">{{price | currency:currencies.mainCur}}</span></div>'}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductImagesZoom";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk","$compile",function(a,b,c){return new(a.extend({scope:{pdtId:"<?",imagesListPosition:"<?",maxElements:"<?"},link:function(a,d,f){new(b.extend({name:e,translation:[{},{},{},{},{},{},{}],bindConfigToScope:!0,defaultConfig:{maxElements:3,imagesListPosition:"left"},defineScope:{data:{}},init:function(){switch(this._super(),this.elem.addClass("ox-img-list-position-"+this.$scope.imagesListPosition),this.$scope.imagesListPosition){case"bottom":case"top":this.$scope.data.orientation="horizontal";break;case"left":case"right":this.$scope.data.orientation="vertical"}this.elem.append(c('<div cs cs-zoom-list max-elements="maxElements" orientation="'+this.$scope.data.orientation+'"></div>')(this.$scope))}}))(a,{elem:d,attrs:f})},template:function(a,b){return b.template,'<div cs cs-zoom-detail zoom-tmpl="flexNavigation" ngdialog-theme="oxatis"></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductImg";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk",function(c,d){return new(c.extend({scope:{pdtId:"<?",priority:"<?",navAction:"<?",hasImg:"=?",place:"@"},link:function(c,f,g){new(d.extend({name:e,detailLevel:["list"],defineScope:{url:"",img:"",alt:"",squaredColor:""},priorityDefault:"small",init:function(){this.$scope.priority=this.$scope.priority||this.priorityDefault,b.isUndefined(this.$scope.navAction)&&(this.$scope.navAction=!0),this.setSquaredColor(),this._super()},process:function(){var a=this.$scope.product;this.$scope.url=a.canonicalurl,this.$scope.alt=a.name,this.$scope.img=a[this.$scope.priority+"img"]?a[this.$scope.priority+"img"]:!!a[this.priorityDefault+"img"]&&a[this.priorityDefault+"img"],this.$scope.hasImg=!!this.$scope.img},setSquaredColor:function(){if(a.oxFramework.hasDynamicImages()){var b=oxInfos.dynImages.renderer;if(b){var c=null;switch(this.$scope.place){case"Item List":c=b.products.listing.squaredColor}this.$scope.squaredColor=c}}}}))(c,{elem:f,attrs:g})},template:function(a,b){return b.template,'<a ng-if="navAction && img" ng-href="{{url}}" cs cs-product-url pdt-id="product.id" place="{{place}}" class="PBLink c-cs-product-img__image-link">\t\t\t\t\t\t\t\t\t<img alt="{{alt}}" cs-data-src="{{img}}" data-squared="{{squaredColor}}" class="c-cs-product-img__image">\t\t\t\t\t\t\t\t</a>\t\t\t\t\t\t\t\t<img ng-if="!navAction && img" cs-data-src="{{img}}" alt="{{alt}}" class="c-cs-product-img__image" data-squared="{{squaredColor}}">'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csProductInfo",["oxProductLnk","$sce",function(a,b){return{restrict:"A",replace:!1,scope:{pdtId:"<?",info:"@",type:"@",detailLevel:"<",data:"=?"},link:function(c,d,e){new(a.extend({name:"csProductInfo",detailLevel:["list"],init:function(){this.$scope.detailLevel&&(this.detailLevel=this.$scope.detailLevel),this._super()},process:function(){switch(e.type.toLowerCase()){case"html":this.$scope.result=b.trustAsHtml(this.$scope.product[this.$scope.info]);break;default:this.$scope.result=this.$scope.product[this.$scope.info]}e.data&&(this.$scope.data=this.$scope.result)}}))(c,{elem:d,attrs:e})},template:function(a,b){b.type=b.type||"";var c="";switch(b.type.toLowerCase()){case"html":case"header":c='<div ng-bind-html="result"></div>';break;default:c="{{result}}"}return c}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductInfoOptions";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk",function(a,b){return new(a.extend({scope:{pdtId:"<?"},link:function(a,c,f){new(b.extend({name:e,detailLevel:["detail"],process:function(){var a=[];d.each(this.$scope.product.options,function(b){a.push({label:d.keys(b)[0],value:d.values(b)[0]})}),this.$scope.optionsFormatted=a}}))(a,{elem:c,attrs:f})},template:function(a,b){return b.template,'<div class="c-cs-product-info-options__option-container" ng-repeat="option in optionsFormatted"> <span class="c-cs-product-info-options__option-name">{{option.label}} :</span> <span class="c-cs-product-info-options__option-value">{{option.value}}</span></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductMagicZoom";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk",function(a,c){return new(a.extend({scope:{pdtId:"<?",config:"<?",controlId:"<?"},link:function(a,f,g){new(c.extend({name:e,detailLevel:["detail"],defineScope:{ctx:{ready:!1},imgConfig:{},imgList:[],imgConfigDefault:{current:0,imgWidth:400,imgHeight:400,thumbnailChangeMode:"click",thumbnailDis
11playMode:"carousel",thumbnailImgWidth:85,thumbnailCarrouselPos:"bottom",thumbnailCarrouselImgCount:3,zoomStyle:"zoom",zoomPosition:"left",zoomWidth:400,zoomHeight:400}},watchersCollection:{config:"whenConfigChanged"},process:function(){this.$scope.ctx.ready=!0,this.whenConfigChanged()},whenConfigChanged:function(){if(this.$scope.product){d.defaults(this.$scope.config,this.$scope.imgConfigDefault),this.$scope.imgList=this.$scope.product.imagelist.images,b.forEach(this.$scope.imgList,function(a){a.title=this.$scope.product.name}.bind(this)),this.$scope.controlId=this.$scope.controlId||this.$scope.pdtId+"-"+this.$scope.$id;var a=d.clone(this.$scope.product.imagelist.conf);d.extend(this.$scope.imgConfig,a,this.$scope.config)}}}))(a,{elem:f,attrs:g})},template:function(a,b){return b.template,'<div ng-if="ctx.ready" cs cs-magic-zoom config="imgConfig" images="imgList" control-id="controlId"></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductName";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk","$interpolate",function(a,b,c){return new(a.extend({scope:{pdtId:"<?",tagName:"@?"},link:function(a,c,d){new(b.extend({name:e,detailLevel:["list"]}))(a,{elem:c,attrs:d})},template:function(a,b){var c=b.tagName||"span",d="";switch(b.template){case"noLink":d="<"+c+' class="PBMainTxt c-cs-product-name__name" cs-bind-html="product.name"></'+c+">";break;default:d='<a class="PBLink c-cs-product-name__name-link" ng-href="{{product.canonicalurl}}"><'+c+' class="PBMainTxt c-cs-product-name__name" cs-bind-html="product.name"></'+c+"></a>"}return d}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b){var c="csProductNavAction";b.module("oxFramework").addDirective(c,["Directive","oxProductLnk",function(a,d){return new(a.extend({scope:{pdtId:"<?"},link:function(a,b,e){new(d.extend({name:c,detailLevel:["extra"],defineScope:{ctx:{navAction:""}},translation:[{title:"Information compl\xe9mentaire"},{title:"Additional Information"},{title:"Informaci\xf3n complementaria"},{title:"Zusatzinformation"},{title:"Informazione complementare"},{title:"Extra informatie"},{title:"Informaci\xf3 complement\xe0ria"},{title:"Informa\xe7\xe3o complementar"}],process:function(){this.$scope.ctx.navAction="";var a=this.$scope.product.navaction;a&&(0===a.indexOf("PBFilePlayer.asp")?this.$scope.ctx.navAction="/".concat(a):this.$scope.ctx.navAction=a)}}))(a,{elem:b,attrs:e})},template:function(){var a="";switch(b.module("oxFramework").device){case"mobile":a+=' <div class="l-actions-container" ng-if="ctx.navAction"> <a ng-href="{{ctx.navAction}}" class="c-button c-button--secondary c-button--fullwidth" target="_blank"> <span class="c-button__inner">{{::translation.title}}</span> </a> </div>';break;default:a+='<a ng-if="ctx.navAction" class="btnsub" id="btnattachment" ng-href="{{ctx.navAction}}" target="_blank"><span>{{::translation.title}}</span></a>'}return a}}))({name:c})}])}(window,window.angular),function(a,b,c,d){var e="csProductOptionList";b.module("oxFramework").addDirective(e,["Directive","oxOptionsLnk",function(a,b){return new(a.extend({scope:{click:"&"},require:"^csProductInit",link:function(a,c,d,f){new(b.extend({name:e,translation:[{},{},{},{},{},{},{}],bindConfigToScope:!0,defaultConfig:{},defineScope:{params:{},select:function(a,b){f.ctrl.setOptionId(a),this.attrs.click&&this.$scope.click({infos:{layout:this.attrs.template||"imageGrid",pdtId:a},$event:b})},getSelectedId:function(){return f.ctrl.getSelectedId()}},process:function(){}}))(a,{elem:c,attrs:d,ctrl:f.ctrl})},template:function(a,b){return b.template,'<div class="l-grid l-grid--bordered l-grid--2-columns"> <div class="l-grid__item" ng-repeat="id in productOptions.optionsIds" ng-class="{\'current-option\' : id == getSelectedId()}" cs-product-init pdt-id="id" ng-click="select(id, $event)"> <div cs cs-product-img nav-action="false"></div> <div cs cs-product-info-options></div> <div cs cs-product-price show-prices-at-zero="false"></div> <div cs cs-add-to-cart-btn></div> </div></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductOptions";b.module("oxFramework").addDirective(e,["Directive","oxOptionsLnk",function(a,b){return new(a.extend({scope:{click:"&",forceMode:"@?"},require:"^csProductInit",link:function(a,c,d,f){new(b.extend({name:e,translation:[{},{},{},{},{},{},{}],bindConfigToScope:!0,defaultConfig:{},defineScope:{params:{},comboClick:function(a,b){this.attrs.click&&this.$scope.click({infos:{layout:this.$scope.mode,optTypeIdx:a},$event:b})},listClick:function(a,b){this.attrs.click&&this.$scope.click({infos:{layout:this.$scope.mode,pdtId:a},$event:b})}},process:function(){this.$scope.productOptions.optionTypes.length||c.addClass("ng-hide"),this.$scope.forceMode?this.$scope.mode=this.$scope.forceMode:this.$scope.mode=this.$scope.productOptions.configuration.layout}}))(a,{elem:c,attrs:d,ctrl:f.ctrl})},template:function(a,b){var c=b.cssModifier?'css-modifier="'.concat(b.cssModifier,'"'):"",d="";switch(b.templateCombo){default:d="".concat('<div ng-if="mode == \'combo\'" ng-repeat="optionType in productOptions.optionTypes"><div class="c-cs-product-options__option-name lz-name">
11{{optionType.name}}</div><div cs cs-product-option-select ').concat(c,' option-idx="$index" template="combo" ng-click="comboClick($index, $event)"></div>')+"</div>";break;case"mobile-preview":d='<div ng-if="mode == \'combo\'" class="c-product-options__option-container" ng-repeat="optionType in productOptions.optionTypes"><div class="c-product-options__option-name">{{optionType.name}}</div><div cs cs-product-option-select option-idx="$index" template="mobile-preview" ng-click="comboClick($index, $event)"></div></div>';break;case"select":d='<div ng-if="mode == \'combo\'" class="c-product-options__option-container" ng-repeat="optionType in productOptions.optionTypes"><div class="c-product-options__option-name">{{optionType.name}}</div><div cs cs-product-option-select option-idx="$index" template="select" ng-click="comboClick($index, $event)"></div></div>';break;case"disabled":d=""}var e="";switch(b.templateImageGrid){case"disabled":e="";break;default:e='<div ng-if="mode == \'imageGrid\'" cs cs-product-option-list click="listClick(id, $event)" template="imageGrid"></div>'}var f="";switch(b.templateList){case"disabled":f="";break;default:f='<div ng-if="mode == \'list\'" cs cs-product-option-list click="listClick(id, $event)" template="imageGrid"></div>'}var g="";return b.template,g=d+e+f,g}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductOptionSelect";b.module("oxFramework").addDirective(e,["Directive","oxOptionsLnk","$filter",function(a,c,d){return new(a.extend({scope:{optionIdx:"<"},require:"^csProductInit",link:function(a,f,g,h){new(c.extend({name:e,translation:[{unavailable:"(indisponible)"},{unavailable:"(unavailable)"},{unavailable:"(unavailable)"},{unavailable:"(unavailable)"},{unavailable:"(unavailable)"},{unavailable:"(niet op voorraad)"},{unavailable:"(unavailable)"}],bindConfigToScope:!0,defaultConfig:{},defineScope:{params:{selected:null},select:function(a){this.$scope.params.selected=a.id}},process:function(){var a=this.$scope.productOptions.optionTypes[this.$scope.optionIdx];a&&(this.$scope.list=a.values,this.$scope.name=a.name,this.$scope.isColor=5===a.renderType,this.$scope.isGrid=7===a.renderType,this.$scope.isImage=9===a.renderType,this.$scope.isImageList=10===a.renderType),this.addWatcher({"params.selected":"selectOptionType","scopeController.optionTypes":{deep:!0,name:"updateOptionType"}})},selectOptionType:function(a,b){a!==b&&(this.$scope.params.selected&&h.ctrl.setOptionType(this.$scope.optionIdx,this.$scope.params.selected),this._changeOptionType())},_changeOptionType:function(){if(this.$scope.params.selected){var a=d("filter")(this.$scope.list,{id:this.$scope.params.selected},!0);this.$scope.currentOption=a&&a.length&&a[0]||null}b.forEach(this.$scope.list,function(a){var b=h.ctrl.checkOptionType(this.$scope.optionIdx,a.id);if(b){var c=h.ctrl.getStatus(b);a.available=!0,a.buyable=c.buyable,a.inStock=c.inStock}else a.available=!1,a.buyable=!1,a.inStock=!1;a.statusName=a.name+(a.available?"":" "+this.$scope.translation.unavailable),a.status=h.ctrl.getStatus(b)}.bind(this))},updateOptionType:function(){this.$scope.scopeController.optionTypes&&(this.$scope.params.selected=h.ctrl.getOptionType(this.$scope.optionIdx),this._changeOptionType())}}))(a,{elem:f,attrs:g,ctrl:h.ctrl})},template:function(a,b){var c="";switch(b.template){default:c='<select ng-if="list.length" ng-options="value.id as value.statusName for value in list" ng-model="params.selected"></select>';break;case"combo":c='<ul ng-if="list.length"> <li ng-repeat="value in list | orderBy : \'pos\'" ng-click="select(value)" ng-class="{selected : value.id == params.selected, isUnavailable: !value.available,isNotBuyable: !value.buyable, isOutOfStock: !value.inStock, isColor: isColor, isImage: isImage || isImageList}"> <span ng-if="isColor" class="lz-valueColor" ng-style="{\'background-color\':\'{{value.rendervalue || \'#fff\'}}\'}"></span> <span ng-if="isImage || isImageList" class="lz-valueImage" ng-style="{\'background-image\':\'url({{value.rendervalue }})\'}"></span> <span class="lz-name">{{value.name}}</span> </li></ul>';break;case"comboPlatform":c='<ul ng-if="list.length && (isColor || isGrid || isImage || isImageList)" class="facetlist" ng-class="{facettypevaluegrid: (!isColor && !isImage), facettypecolorgrid: isColor, facettypeimagegrid: isImage, facettypeimagelist : isImageList}"> <li ng-repeat="value in list | orderBy : \'pos\'" class="facet" ng-click="select(value)" ng-class="{selectedfacet : (value.id == params.selected), isUnavailable: !value.available}"> <div ng-if="isImage" class="facetimage" ng-style="{\'background-image\':\'url({{value.rendervalue }})\'}" title="{{value.name}}"> <div class="facetimageselected"></div>
11 </div> <div ng-if="isImageList" class="facetimage" ng-style="{\'background-image\':\'url({{value.rendervalue }})\'}" title="{{value.name}}"> <div class="facetimageselected"></div> </div> <div ng-if="isColor" class="facetcolor" ng-style="{\'background-color\':\'{{value.rendervalue || \'#fff\'}}\'}" title="{{value.name}}"> <div class="facetcolorselected"></div> </div> <div ng-if="isGrid || isImageList" class="facetvalue"> <span class="Facetvaluename">{{value.name}}</span> </div> </li></ul><select ng-if="list.length && !isColor && !isGrid && !isImage && !isImageList" ng-options="value.id as value.statusName for value in list | orderBy: \'pos\'" ng-model="params.selected"></select>';break;case"mobile-preview":c='<div class="c-product-options__option-preview"> <div class="option-preview" ng-class="{\'is-unavailable\': currentOption.isUnaivailable ,\'is-not-buyable\': !value.buyable, \'is-out-of-stock\': !value.inStock}"> <div ng-if="isColor" class="option-rendervalue" ng-style="{\'background-color\': currentOption.rendervalue}"></div> <div ng-if="isImage || isImageList" class="option-rendervalue option-rendervalue--image" ng-style="{\'background-image\':\'url(\'+ currentOption.rendervalue +\')\'}"></div> <div class="option-value">{{currentOption.name}}</div> </div></div>';break;case"big-image-grid":c='<ul ng-if="list.length && isImage" class="facetlist facettypeimagegrid">\n\t\t\t\t\t\t\t\t\t\t<li ng-repeat="value in list | orderBy : \'pos\'" class="facet" ng-click="select(value)" ng-class="{selectedfacet : (value.id == params.selected), isUnavailable: !value.available}">\n\t\t\t\t\t\t\t\t\t\t\t <div ng-if="isImage" class="" title="{{value.name}}">\n\t\t\t\t\t\t\t\t\t\t\t\t <img ng-src="{{value.rendervalue }}" alt="{{value.name}}">\n\t\t\t\t\t\t\t\t\t\t\t\t <div class="facetcolorselected"></div>\n\t\t\t\t\t\t\t\t\t\t\t </div>\n\t\t\t\t\t\t\t\t\t\t\t <div ng-if="isImage" class="facetvalue">\n\t\t\t\t\t\t\t\t\t\t\t\t <span class="Facetvaluename">{{value.name}}</span>\n\t\t\t\t\t\t\t\t\t\t\t </div>\n\t\t\t\t\t\t\t\t\t\t </li>\n\t\t\t\t\t\t\t\t\t</ul>'}return c}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductOutOfStockNotification";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk","ngDialog","oxWs","$window","$parse",function(a,b,c,f,g,h){return new(a.extend({scope:{pdtId:"<?"},link:function(a,i,j){new(b.extend({name:e,translation:[{btnTrigger:"\xcatre alert\xe9 de la disponibilit\xe9",text:"Recevez un e-mail d\xe8s que cet article est disponible",placeholder:"Indiquez votre adresse e-mail",btnValidate:"Valider",msgOK:"Votre demande a \xe9t\xe9 prise en compte",btnClose:"Fermer",errorEmail:"Veuillez renseigner une adresse e-mail valide",errorExist:"Cette adresse e-mail a d\xe9j\xe0 \xe9t\xe9 utilis\xe9e pour cet article",error:"Une erreur est survenue"},{btnTrigger:"In stock alert",text:"Receive an email as soon as this item is available",placeholder:"Email address",btnValidate:"Confirm",msgOK:"Success! You will be notified as soon as this item is in stock",btnClose:"Close",errorEmail:"Please provide a valid email address",errorExist:"This email address has already been used for this item",error:"An error has occured"},{btnTrigger:"Recibir un aviso de disponibilidad",text:"Recibes un e-mail cuando el art\xedculo est\xe9 disponible",placeholder:"Indica tu direcci\xf3n de e-mail",btnValidate:"Confirmar",msgOK:"Tu solicitud ha sido registrada",btnClose:"Cerrar",errorEmail:"Por favor, indica una direcci\xf3n de e-mail v\xe1lida",errorExist:"Esta direcci\xf3n de e-mail ya ha sido utilizada para este producto",error:"Se ha producido un error"},{btnTrigger:"In stock alert",text:"Receive an email as soon as this item is available",placeholder:"Email address",btnValidate:"Confirm",msgOK:"Success! You will be notified as soon as this item is in stock",btnClose:"Close",errorEmail:"Please provide a valid email address",errorExist:"This email address has already been used for this item",error:"An error has occured"},{btnTrigger:"Essere avvisato della disponibilit\xe0",text:"Ricevi un'email quando l'articolo \xe8 disponibile",placeholder:"Indica il tuo indirizzo email",btnValidate:"Conferma",msgOK:"La tua ric
11hiesta \xe8 stata registrata",btnClose:"Chiudi",errorEmail:"Indica un indirizzo email valido",errorExist:"L'indirizzo email indicato \xe8 stato utilizzato per quest'articolo",error:"Si \xe8 verificato un errore"},{btnTrigger:"Houd mij op de hoogte van bevoorrading",text:"Stuur mij een email zodra dit artikel weer op voorraad is.",placeholder:"Uw emailadres",btnValidate:"OK",msgOK:"Wij hebben uw aanvraag ontvangen",btnClose:"Sluiten",errorEmail:"Geef een geldig emailadres op",errorExist:"Dit emailadres is al een keer gebruikt voor dit artikel",error:"Er is een fout opgetreden"},{btnTrigger:"In stock alert",text:"Receive an email as soon as this item is available",placeholder:"Email address",btnValidate:"Confirm",msgOK:"Success! You will be notified as soon as this item is in stock",btnClose:"Close",errorEmail:"Please provide a valid email address",errorExist:"This email address has already been used for this item",error:"An error has occured"}],bindConfigToScope:!0,defaultConfig:{},defineScope:{params:{patternEmail:/^.+@.+\..+$/,showBtnTrigger:!1,errorMsg:null},scOnClickTrigger:function(a){a.preventDefault(),this.showDialog()},scOnSubmitForm:function(a){return a.preventDefault(),this.sendData(),!1},scOnClickClose:function(a){a.preventDefault(),this.dialog.close()}},watchers:{"params.alertForm.email.$error.pattern && (params.alertForm.$submitted || params.alertForm.email.$touched)":function(a){a&&(this.$scope.params.errorMsg=this.$scope.translation.errorEmail)}},init:function(){this._super();var a=this.getConfig("csAppOutofstockNotification.translation.btnTrigger",!0);a&&(this.$scope.translation.btnTrigger=a)},process:function(){var a=this.$scope.product,b=!1;if(a.outofstock||a.quantity<a.packagingqty){var c=this.getConfig("csAppOutofstockNotification.showBtnTriggerWhen",!0);c&&c.length?(c.indexOf(".PBMsgOutOfStock")&&1===a.stockscenario&&(b=!0),c.indexOf(".PBMsgAvailSupplier")&&2===a.stockscenario&&(b=!0),c.indexOf(".PBMsgDiscontinued")&&3===a.stockscenario&&(b=!0),c.indexOf(".PBMsgDaysToShip")&&a.availabilitydelay&&a.showavailabilitydelay&&(b=!0)):b=!0}this.$scope.params.showBtnTrigger=b},sendData:function(){if(this.log("sendData",this.$scope.pdtId,this.$scope.params.alertForm,this.$scope.params.email),this.$scope.params.alertForm.$valid){this.log("setStockAlert","ProductID",this.$scope.pdtId,"Email",this.$scope.params.email);var a=f.setStockAlert({ProductID:this.$scope.pdtId,Email:this.$scope.params.email});a.$promise.then(d.bind(function(){if(this.log("promise then",a),"OK"===a.status)this.log("Status OK"),this.$scope.showOkMsg=!0;else switch(this.log("Status KO"),this.$scope.params.alertForm.email.$valid=!1,this.$scope.params.alertForm.$valid=!1,a.error){case"INVALID_EMAIL":this.$scope.params.errorMsg=this.$scope.translation.errorEmail;break;case"ALERT_ALREAY_EXIST":this.$scope.params.errorMsg=this.$scope.translation.errorExist;break;default:this.$scope.params.errorMsg=this.$scope.translation.error}},this))}},showDialog:function(){this.$scope.params.errorMsg=null,this.$scope.showOkMsg=!1,this.$scope.params.email=h("oxInfos.oxUser.email")(g);this.dialog=c.open({ 12template:'<div class="lz-text">{{::translation.text}}</div><form ng-if="!showOkMsg" name="params.alertForm" novalidate class="lz-form"> <div class="lz-form-row" ng-class="{error: (params.alertForm.$submitted || params.alertForm.email.$touched) && !params.alertForm.email.$valid}"> <div class="lz-form-control lz-form-input"> <input type="text" name="email" ng-required="true" ng-model="params.email" placeholder="{{::translation.placeholder}}" ng-pattern="params.patternEmail"> </div> <div class="lz-form-msg" cs-bind-html="params.errorMsg"></div> </div> <div class="lz-form-actions"><a ng-click="scOnSubmitForm($event)" href="" class="btnmain" ng-disabled="!params.alertForm.$valid"><span>{{::translation.btnValidate}}</span></a></div></form><div ng-if="showOkMsg" class="lz-msg-ok"> <p><cs-icon icon="check"></cs-icon> {{::translation.msgOK}}</p> <div><a href="" class="btnmain" ng-click="scOnClickClose($event)"><span>{{::translation.btnClose}}</span></a></div></div>',plain:!0,scope:this.$scope,className:"ngdialog-theme-oxatis outofstock-notification",showClose:!0,closeByEscape:!0,closeByDocument:!0})}}))(a,{elem:i,attrs:j})},template:function(a,b){return b.template,'<a href="#outofstocknotification" ng-if="params.showBtnTrigger" class="btnmain" ng-click="scOnClickTrigger($event)"><span><cs-icon icon="bell-o"></cs-icon> {{::translation.btnTrigger}}</span></a>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductPackaging";b.module("oxFramework");b.module("oxFramework").addDirective(e,["oxProductLnk","oxWs","oxPriceHelper","$filter",function(a,c,d,f){return{restrict:"A",replace:!1,require:"^csProductInit",scope:{pdtId:"<?"},link:function(f,g,h,i){new(a.extend({name:e,detailLevel:["packagings"],defineScope:{data:{selectedPackaging:null,packagingsData:{}},select:function(a){this.selectPackaging(a)}},init:function(){this._super()},process:function(){this.$scope.packagings=this.$scope.product.packagings,this.$scope.packagings&&(this.$scope.data.selectedPackaging=this.$scope.packagings[0].id,this.$scope.packagingsData=this.$scope.packagings.reduce(function(a,b){return a[b.id]=b,a},{}),this.$scope.current=this.$scope.packagingsData[this.$scope.product.selectedPackaging],this.addPrices(this.$scope.product),this.update(),this.addWatcherCollection({"data.selectedPackaging":"select","product.selectedPackaging":"update"}))},selectPackaging:function(a){this.$scope.data.selectedPackaging=a,i.ctrl.getStatus()},update:function(){this.$scope.product&&(this.safe=!0,this.selectPackaging(this.$scope.product.selectedPackaging),this.safe=!1)},showSelected:function(){b.forEach(this.$scope.packagings,function(a){a.selected=a.id===this.$scope.product.selectedPackaging}.bind(this))},sendChangeEvent:function(){i.ctrl.setPackagingId(this.$scope.product.selectedPackaging,b.copy(this.$scope.packagingsData[this.$scope.product.selectedPackaging]))},select:function(a,b){if(!this.safe&&this.$scope.packagings)if(this.$scope.current=this.$scope.packagingsData[this.$scope.data.selectedPackaging],this.$scope.current.priceCalled)this.$scope.product.selectedPackaging=this.$scope.data.selectedPackaging,this.showSelected(),a!==b&&this.sendChangeEvent();else{this.$scope.current.priceCalled=!0;var d=c.getProducts({pdtId:this.$scope.product.id,packagingId:this.$scope.data.selectedPackaging,detail
12:["packagings"]});d.$promise.then(function(){var c=d.products[0];c&&(this.addPrices(c),this.$scope.packagingsData[this.$scope.data.selectedPackaging]=c,this.$scope.product.selectedPackaging=this.$scope.data.selectedPackaging,this.showSelected(),a!==b&&this.sendChangeEvent())}.bind(this))}},addPrices:function(a){this.$scope.current.price=a.price,this.$scope.current.priceorg=a.priceorg,this.$scope.current.vatrate=a.vatrate,this.$scope.current.advancedVatRate=a.advancedVatRate,d.addPricesTo(this.$scope.current)}}))(f,{elem:g,attrs:h})},template:function(a,b){var c;if(b.templateUrl)c='<div cs-include="'+b.templateUrl+'"></div>';else switch(b.template){case"mobile-preview":c='<div ng-if="packagings.length" class="option-preview"><div class="option-value">{{current.packagingname || current.packagingqty}}</div></div>';break;case"mobile-slide":c='<div ng-if="packagings.length" class="select-container"><div class="facet-value" ng-class="{selected: packaging.selected}" ng-repeat="packaging in packagings" ng-click="select(packaging.id)">{{packaging.packagingname || packaging.packagingqty}}</div></div>';break;default:c='<div ng-if="packagings.length" class="select-container"> <select ng-model="data.selectedPackaging" ng-options="packaging.id as (packaging.packagingname || packaging.packagingqty) for packaging in packagings"> </select></div>'}return c}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductPrice";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk","oxGlobalSettingsService",function(a,b,c){return new(a.extend({priority:500,scope:{discountGrid:"<?",pdtId:"<?",showDiscount:"<?",showStrike:"<?",showPricesAtZero:"<?",template:"@",updateWithQty:"<?",unitPrice:"<?",usePlatformHtmlTags:"<?"},link:function(a,f,g){var h=["list"];a.discountGrid&&(h=["list","discountGrid"]),new(b.extend({name:e,init:function(){this._super(),this.$scope.updateWithQty&&this.addWatcherCollection({product:"updateScope"})},process:function(){this.$scope.currencies=this.sharedData.currencies,this.updateScope()},updateScope:function(){this.$scope.product&&(this.$scope.discount=this.$scope.showDiscount&&this.$scope.product.discount,this.$scope.price=this.oxProductHelper.getPrice(this.$scope.pdtId,this.$scope.updateWithQty,this.$scope.unitPrice),this.$scope.showNullPrices=d.isUndefined(this.attrs.showPricesAtZero)?c.getParam("showPricesAtZero"):this.$scope.showPricesAtZero,this.$scope.showStrike=d.isUndefined(this.attrs.showStrike)?this.$scope.price.showstrikeprice||this.$scope.product.showstrikeprice:this.$scope.showStrike)}}))(a,{elem:f,attrs:g,detailLevel:h})},template:function(a,b){return b.template,'<div cs-price original-price="showStrike && price.priceorg" price="price.price" discount="showStrike && discount" original-secondary-price="showStrike && price.secondaryPriceorg" secondary-price="price.secondaryPrice" show-null-prices="showNullPrices" '.concat(b.usePlatformHtmlTags?'use-platform-html-tags="true"':"","></div>")}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductPriceInXInstallments";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk",function(a,b){return new(a.extend({scope:{pdtId:"<?",installments:"<?",max:"<?",min:"<?"},link:function(a,c,d){new(b.extend({name:e,detailLevel:["list"],_whenDataChange:function(){if(this.target.scopeWatcherById&&this.$scope[this.target.scopeWatcherById]){var a=this.sharedData[this.target.receiver].data[this.$scope[this.target.scopeWatcherById]];a&&a.detailLevel&&this.wsManager.areAllInArray(a.detailLevel,"option")?(this.$scope[this.target.scopeReceiver]=a,this.process()):this._super()}else this._super()}}))(a,{elem:c,attrs:d})},template:function(a,b){return b.template,'<div cs cs-price-in-x-installments price="product.price" installments="installments" min="min" max="max"></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductPricePerUnit";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk","$filter",function(a,b,c){return new(a.extend({scope:{pdtId:"<?",unitName:"@",unitSymbol:"@"},link:function(a,d,f){new(b.extend({name:e,detailLevel:["facets"],translation:[{pricePerUnit:"{{price}} / {{unit}}",priceStrikePerUnit:"au lieu de {{price}} / {{unit}}"},{},{},{},{},{pricePerUnit:"{{price}} / {{unit}}",priceStrikePerUnit:"in plaats van {{price}} / {{unit}}"},{},{}],bindConfigToScope:!0,defaultConfig:{},defineScope:{ctx:{showPriceStrike:!1,showPrice:!1}},process:function(){this.$scope.unitName&&this.$scope.product.facets&&this.oxProductHelper.getFacetValues(this.$scope.pdtId,this.$scope.unitName,{pluckProperty:"name",onlyFirstValue:!0}).then(function(a){this.$scope.ctx.showPrice=!0;var b=(a[this.$scope.unitName]||1).replace(",",".").replace(/([^\d\.]+)/g,""),d=this.$scope.product.price/parseFloat(b),e=this.$scope.product.secondaryPrice?this.$scope.product.secondaryPrice/parseFloat(b):null;if(this.$scope.translation.pricePerUnit=c("template")(this.$scope.translation.pricePerUnit,{price:'<div cs-price class="c-cs-product-price-per-unit__price" price="'+d+'" secondary-price="'+e+'"></div>',unit:this.$scope.unitSymbol}),this.$scope.product.discount&&this.$scope.product.discount<1){var f=this.$scope.product.priceorg/parseFloat(b),g=this.$scope.product.secondaryPriceorg?this.$scope.product.secondaryPriceorg/parseFloat(b):null;this.$scope.translation.priceStrikePerUnit=c("template")(this.$scope.translation.priceStrikePerUnit,{price:'<div cs-price class="c-cs-product-price-per-unit__price c-cs-product-price-per-unit__price--strike" price="'+f+'" secondary-price="'+g+'"></div>',unit:this.$scope.unitSymbol}),this.$scope.ctx.showPriceStrike=!0}else this.$scope.ctx.showPriceStrike=!1;this.safeApply()}.bind(this),function(){this.$scope.ctx.showPrice=!1,this.$scope.ctx.showPriceStrike=!1,this.safeApply()}.bind(this))}}))(a,{elem:d,attrs:f})},template:function(a,b){return b.template,'<div class="c-cs-product-price-per-unit__price-container" ng-if="ctx.showPrice" cs-bind-html="translation.pricePerUnit"></div><div class="c-cs-product-price-per-unit__price-strike-container" ng-if="ctx.showPriceStrike" cs-bind-html="translation.priceStrikePerUnit"></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductQuantity";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk",function(a,c){return new(a.extend({scope:{pdtId:"<?",min:"@?"},link:function(a,d,f){new(c.extend({name:e,detailLevel:["list"],defineScope:{step:1,ctx:{}},process:function(){this.$scope.ctx.possible=!1,this.safeApply(),setTimeout(function(){var a=!0;switch(this.$scope.product.packagingqty&&(this.$scope.ctx.step=this.$scope.product.packagingqty),this.$scope.product.packagingversion){case 2:this.$scope.ctx.step=1}var c=b.isUndefined(f.min)?this.$scope.ctx.step:parseFloat(f.min);this.$scope.product.saleifoutofstock?(this.$scope.ctx.max=null,this.$scope.ctx.min=c):(this.$scope.ctx.max=this.$scope.product.quantity>0?this.$scope.product.quantity:0,this.$scope.ctx.min=Math.min(this.$scope.ctx.max,c),this.$scope.ctx.max||(a=!1)),this.$scope.ctx.default=this.$scope.product.quantityToAdd||this.$scope.ctx.min,this.$scope.ctx.possible=a,this.safeApply()}.bind(this))}}))(a,{elem:d,attrs:f})},template:function(a,c){if(b.isDefined(c.keepInitialQty))var d='<div ng-if="product && ctx.possible" cs cs-quantity model="product.quantityToAdd" default-value="{{ctx.default}}" min="ctx.min" max="ctx.max" step="ctx.step" template="'+(c.template||"mip")+'"></div>';else var d='<div ng-if="product && ctx.possible" cs cs-quantity model="product.quantityToAdd" min="ctx.min" max="ctx.max" step="ctx.step" template="'+(c.template||"mip")+'"></div>';return d}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d,e){var f="csProductReviews";b.module("oxFramework").addDirective(f,["Directive","oxDirective","oxWs","$parse",function(a,c,g,h){var i=b.module("oxFramework").getReviewsSrc();return new(a.extend({scope:{pdtId:"<?"},link:function(a,j,k){new(c.extend({name:f,getPdtId:!0,translation:[{all:"Tous",reviewSource:"Avis collect\xe9 par:",showMore:"Voir plus d'avis",aggregateTitle:"Note de l'article",aggregateCount:"<span>{{reviewsCount}}</span> avis",barCount:"({{reviewsCount}})",certifiedReviews:"Avis V\xe9rifi\xe9s",siteResponse:"Le site"},{all:"All",reviewSource:"Review collected by:",showMore:"See more reviews",aggregateTitle:"Product Rating",aggregateCount:"<span>{{reviewsCount}}</span> reviews",barCount:"({{reviewsCount}})",certifiedReviews:"Verified Reviews",siteResponse:"The site"},{all:"Todos",reviewSource:"Opini\xf3n recolectada por:",showMore:"Ver m\xe1s rese\xf1as",aggregateTitle:"Puntuaci\xf3n del art\xedculo",aggregateCount:"<span>{{reviewsCount}}</span> opiniones",barCount:"({{reviewsCount}})",certifiedReviews:"Opiniones Verificadas",siteResponse:"El sitio"},{all:"Alle",reviewSource:"\xdcberpr\xfcfung gesammelt von:",showMore:"Sehen Sie mehr Bewertungen",aggregateTitle:"Product Rating",aggregateCount:"<span>{{reviewsCount}}</span> reviews",barCount:"({{reviewsCount}})",certifiedReviews:"Echte Bewertungen",siteResponse:"Die Webseite"},{all:"Tutte",reviewSource:"Recensione recuperata da:",showMore:"Vedi altre recensioni",aggregateTitle:"voto dell'articolo",aggregateCount:"<span>{{reviewsCount}}</span>
12 recensione",barCount:"({{reviewsCount}})",certifiedReviews:"Recensioni Verificate",siteResponse:"El sito"},{all:"Alle",reviewSource:"Recensie verzameld door:",showMore:"Bekijk meer reviews",aggregateTitle:"Product Rating",aggregateCount:"<span>{{reviewsCount}}</span> reviews",barCount:"({{reviewsCount}})",certifiedReviews:"Echte Beoordelingen",siteResponse:"De site"},{all:"Totes",reviewSource:"Opini\xf3 recollida per:",showMore:"Veure m\xe9s comentaris",aggregateTitle:"Puntuaci\xf3n del art\xedculo",aggregateCount:"<span>{{reviewsCount}}</span> opiniones",barCount:"({{reviewsCount}})",certifiedReviews:"Opiniones Verificadas",siteResponse:"El lloc"},{all:"Totes",reviewSource:"Revis\xe3o recolhida por:",showMore:"Ver mais reviews",aggregateTitle:"Nota ao artigo",aggregateCount:"<span>{{reviewsCount}}</span> revis\xe3o",barCount:"({{reviewsCount}})",certifiedReviews:"Opini\xf5es Verificadas",siteResponse:"O site"}],defineScope:{loading:!1,search:{rating:"all",pageIndex:1,recordPerPage:25},filters:{rating:["all","5","4","3","2","1"]},datas:{},reviews:[],changeRating:function(a){a!=this.$scope.search.rating&&(this.$scope.search.pageIndex=1,this.$scope.search.rating=a)},insertNextPage:function(){this.$scope.search.pageIndex++}},watchersCollection:{search:"whenSearchChanged"},init:function(){this._super(),this.$scope.search.pdtId=this.$scope.pdtId,"CertifiedReviews"===i&&(this.$scope.search.parentId=this._getProductParentId()),this.safeApply()},_getProductParentId:function(){var a=this.elem.closest("[data-pdt-parent-id]"),b=this.$scope.$parent;if(a.length){d.isFunction(a.scope)&&a.scope()&&(b=a.scope().$new());var c=h(a.attr("data-pdt-parent-id"))(b);if(c)return c}return null},whenSearchChanged:function(){if(this.$scope.search.pdtId)switch(this.$scope.loading=!0,i){case"CertifiedReviews":this.loadCertifiedReviews();break;default:this.loadDefault()}},loadDefault:function(){var a=g.getProductsReviews(this.$scope.search);a.$promise.then(function(){b.forEach(a.reviews,function(a){a.dateFormated=new Date(a.date.y,a.date.m-1,a.date.d)}),this.whenDataLoaded(a)}.bind(this))},loadCertifiedReviews:function(){var a=this;e("modules.avisVerifies",function(c){var d="all"!==a.$scope.search.rating?a.$scope.search.rating:null,e=a.$scope.search.parentId||a.$scope.search.pdtId;c.api.getAverageById(e).then(function(f){c.api.getReviewsById(e,{page:a.$scope.search.pageIndex,filter:d}).then(function(c){b.forEach(c.reviews,function(a){var b=a.review_date,c=void 0===b?"":b;if(c){var d=c.split(" ")[0].split("-");a.dateFormated=new Date(d[0],d[1]-1,d[2])}}),a.whenDataLoaded(_objectSpread(_objectSpread(_objectSpread({},c),f),{},{global:{all:c.recordCount,5:c.stats[4],4:c.stats[3],3:c.stats[2],2:c.stats[1],1:c.stats[0]}}))})})})},whenDataLoaded:function(a){this.$scope.datas=a,this.$scope.search.pageIndex>1?this.$scope.reviews=this.$scope.reviews.concat(this.$scope.datas.reviews):this.$scope.reviews=this.$scope.datas.reviews,this.$scope.loading=!1,this.$scope.fullLoading=!1,this.safeApply(),this.emitRootScopeEvt({name:"done"})}}))(a,{elem:j,attrs:k})},_externalTemplate:function(a,b){return"ShoppingSatisfaction"===i||b.template||b.$set("template",i),this._super(a,b)}}))({name:f,hasExternalTemplate:!0,hasMobileTemplate:!0,type:"lazyDirective"})}])}(window,window.angular,window.angular.element,window._,window.oxImport),function(a,b,c,d,e){var f="csProductReviewsData";b.module("oxFramework").addDirective(f,["Directive","oxProductLnk","$parse",function(c,d,g){var h=b.module("oxFramework").getReviewsSrc();return new(c.extend({restrict:"A",replace:!1,scope:{pdtId:"<?",hasElem:"=?",limit:"<?"},link:function(c,i,j){var k="ShoppingSatisfaction"===h?["detail","reviews"]:["detail"];new(d.extend({name:f,translation:[{showMore:"Voir plus d'avis",reviewSource:"Avis collect\xe9 par:",siteResponse:"Le site",certifiedReviews:"Avis V\xe9rifi\xe9s"},{showMore:"See more reviews",reviewSource:"Review collected by:",siteResponse:"The site",certifiedReviews:"Verified Reviews"},{showMore:"See more reviews",reviewSource:"Opini\xf3n recolectada por:",siteResponse:"El sitio",certifiedReviews:"Opiniones Verificadas"},{showMore:"See more reviews",reviewSource:"Review collected by:",siteResponse:"Die Webseite",certifiedReviews:"Echte Bewertungen"},{showMore:"See more reviews",reviewSource:"Recensione recuperata da:",siteResponse:"El sito",certifiedReviews:"Recensioni Verificate"},{showMore:"Meer beoordelingen lezen",reviewSource:"klantbeoordelingen ontvangen door:",siteResponse:"De site",certifiedReviews:"Echte Beoordelingen"},{showMore:"See more reviews",reviewSource:"Opini\xf3 recollectada per:",siteResponse:"El lloc",certifiedReviews:"Opiniones Verificadas"},{showMore:"Ver mais reviews",reviewSource:"Revis\xe3o recolhida por:",siteResponse:"O site",certifiedReviews:"Opini\xf5es Verificadas"}],detailLevel:k,init:function(){this.attrs.limit?this.$scope.step=this.$scope.limit:this.$scope.limit=10,this.$scope.ctx.accountId=g("oxInfos.oxAccid")(a),"mobile"===b.module("oxFramework").device&&(this.$scope.ctx.showMoreBtn=!1),this._super()},defineScope:{ctx:{accountId:null,showMoreBtn:!0},scPreRenderMsg:function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").replace(/(?:\r\n|\r|\n)/g,"<br>")},showMoreReviews:function(){this.$scope.limit+=this.$scope.step||5}},process:function(){var a=this;switch(h){case"CertifiedReviews":e("modules.avisVerifies",function(b){var c=a.$scope.product.globalId||a.$scope.product.parentId||a.$scope.product.parentid||a.$scope.pdtId;a.$scope.certifiedReviewsId=c,b.api.getReviewsById(c).then(function(b){a.$scope.reviewSource="Avis Verifies",a.$scope.product.reviewData=b&&b.reviews||[],a.end(),a.safeApply()})});break;default:this.end()}},end:function(){this.attrs.hasElem&&(this.$scope.hasElem=!(!this.$scope.product.reviewData||!this.$scope.product.reviewData.length))}}))(c,{elem:i,attrs:j})},template:function(a,b){var c="";switch(h){case"CertifiedReviews":b.template,c='<div class="PrdReviewsContainer"><div ng-repeat="review in product.reviewData | limitTo:limit" class="sectiondata PrdReview" itemprop="review" itemscope="" itemtype="http://schema.org/Review"> <div cs cs-star-rating rating="review.rate" rating-max="5" show-score="true" class="PBReviewRating"></div> <div class="PBReviewMsg sectiondataarea PBShortTxt" firstname="description" ng-bind-html="scPreRenderMsg(review.review)"></div> <div class="PBReviewAuthor" itemprop="author">{{review.firstname}} {{review.lastname}} <span class="PBLongTxt PBMention">{{::translation.reviewSource}} {{::translation.certifiedReviews}}</span></div> <div ng-if="review.moderation" ng-repeat="moderation in review.moderation | orderBy:\'-\'" class="c-cs-product-reviews-data__reply-container"> \t<div class="PBReviewReply sectiondataarea PBShortTxt">{{moderation.comment}}</div> <div class="PBReviewMerchant" ng-if="$index % 2 == 0">{{::translation.siteResponse}}</div> <div class="PBReviewMerchant" ng-if="$index % 2 == 1">{{review.firstname}} {{review.lastname}}</div> </div></div></div><div ng-if="ctx.showMoreBtn" class="c-cs-product-reviews-data__more-btn-container"> <a class="btnmain showMoreReviews" id="moreReviewsBtn" ng-href="/OxSiteRating.asp?RatedAccID={{ctx.accountId}}&ProductID={{certifiedReviewsId}}"><span>{{translation.showMore}}</span></a></div>';break;default:b.template,c='<div class="PrdReviewsContainer"><div ng-repeat="review in product.reviewData | limitTo:limit" class="sectiondata PrdReview" itemprop="review" itemscope="" itemtype="http://schema.org/Review"> <div cs cs-star-rating rating="review.rating" show-score="true" class="PBReviewRating"></div> <div class="PrdVariantsContainer" ng-if="review.optionData"><span class="PrdVariant PBShortTxt" ng-repeat="option in review.optionData"><span class="PrdVariantLabel">{{option.name}} : </span><span class="PrdVariantValue">{{option.value}}</span></span></div> <div class="PBReviewMsg sectiondataarea PBShortTxt" itemprop="description" ng-bind-html="scPreRenderMsg(review.msg)"></div> <div class="PBReviewAuthor" itemprop="author">{{review.nickname}} <span ng-if="review.reviewSource" class="PBLongTxt PBMention">{{::translation.reviewSource}} {{review.reviewSource}}</span></div> <div ng-if="review.replyReserved === 0 && review.rightOfReply" class="c-cs-product-reviews-data__reply-container"> <div class="PBReviewReply sectiondataarea PBShortTxt">{{review.rightOfReply}}</div> <div ng-if="review.merchantName" class="PBReviewMerchant">{{review.merchantName}}</div> </div></div></div><div ng-if="ctx.showMoreBtn" class="c-cs-product-reviews-data__more-btn-container"> <a class="btnmain showMoreReviews" id="moreReviewsBtn" ng-href="/OxSiteRating.asp?RatedAccID={{ctx.accountId}}&ProductID={{pdtId}}"><span>{{translation.showMore}}</span></a></div>'}return c}}))({name:f})}])}(window,window.angular,window.angular.element,window._,window.oxImport),function(a,b,c,d,e){var f="csProductReviewsRating";b.module("oxFramework").addDirective(f,["Directive","oxProductLnk",function(c,d){var g=b.module("oxFramework").getReviewsSrc(),h="ShoppingSatisfaction"===g?["reviews"]:[],i=d.extend({name:f,detailLevel:h,defineScope:{ctx:{ratingMax:500,ready:!1}},process:function(){switch(this.$scope.starLink=!(!b.isUndefined(this.$scope.link)&&!this.$scope.link)&&this.$scope.product.url,this.$scope.ratingPageUrl="OxSiteRating.asp?RatedAccID="+a.oxInfos.oxAccid+"&ProductID="+this.$scope.pdtId,g){case"CertifiedReviews":this.$scope.ctx.ratingMax=5,this.processCertifiedReviews();break;default:this.$scope.ctx.ratingMax=500,this.end()}},processCertifiedReviews:function(){var b=this;e("modules.avisVerifies",function(c){var d=b.$scope.product.globalId||b.$scope.product.parentId||b.$scope.product.parentid||b.$scope.pdtId;b.$scope.ratingPageUrl="OxSiteRating.asp?RatedAccID="+a.oxInfos.oxAccid+"&ProductID="+d,c.api.getAverageById(d).then(function(a){b.$scope.product.reviewCount=parseInt(a.count||0,10),b.$scope.product.reviewRating=parseFloat(a.rate||0),b.end(),b.s
12afeApply()})})},end:function(){this.$scope.ctx.ready=!0,this.$scope.product.reviewRating?this.elem.removeClass("ng-hide"):this.elem.addClass("ng-hide"),this.safeApply()}});return new(c.extend({scope:{pdtId:"<?",link:"<?",showScore:"<?",showCounter:"<?"},link:function(a,b,c){new i(a,{elem:b,attrs:c})},template:function(a,b){var c="";switch(b.template){case"rating-page":c='<div ng-if="ctx.ready" cs cs-star-rating class="c-cs-product-reviews-rating__stars" rating="product.reviewRating" rating-max="ctx.ratingMax" show-score="showScore" link="ratingPageUrl" alt="product.name">\n <div ng-cloak class="OxReviewCount c-cs-product-reviews-rating__counter-container" ng-if="showCounter">\n <a ng-if="starLink" class="PBLink c-cs-product-reviews-rating__counter has-link" href="{{ratingPageUrl}}">(<span itemprop="ratingCount">{{product.reviewCount || "0"}}</span>)</a>\n <span ng-if="!starLink" class="c-cs-product-reviews-rating__counter">(<span itemprop="ratingCount">{{product.reviewCount || "0"}}</span>)</span>\n </div>\n </div>';break;default:c='<div ng-if="ctx.ready" cs cs-star-rating class="c-cs-product-reviews-rating__stars" rating="product.reviewRating" rating-max="ctx.ratingMax" show-score="showScore" link="starLink" alt="product.name">\n <div ng-cloak class="OxReviewCount c-cs-product-reviews-rating__counter-container" ng-if="showCounter">\n <a ng-if="starLink" class="PBLink c-cs-product-reviews-rating__counter has-link" href="{{product.url}}#ProductReviews">(<span itemprop="ratingCount">{{product.reviewCount || "0"}}</span>)</a>\n <span ng-if="!starLink" class="c-cs-product-reviews-rating__counter">(<span itemprop="ratingCount">{{product.reviewCount || "0"}}</span>)</span>\n </div>\n </div>'}return c}}))({name:f})}])}(window,window.angular,window.angular.element,window._,window.oxImport),function(a,b,c,d){var e="csProductShippingDate";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk","oxWs","oxRoute",function(a,b,c,f){return new(a.extend({scope:{pdtId:"<?",dayToShip:"<?",shippingName:"@?",rootImg:"@?",openDay:"<?",bankHoliday:"<?",deliveryDays:"<?",outOfStock:"<?",limitHour:"<?",extension:"@"},link:function(a,g,h){new(b.extend({name:e,detailLevel:["extra"],defineScope:{imgUrl:!1},bindConfigToScope:!0,defaultConfig:{openDay:!1,deliveryDays:["lu","ma","me","je","ve","sa","di"]},translation:[{shippingLabel:"Livraison prevue le :",shippingTranspoteur:" avec le transporteur "},{},{},{},{},{shippingLabel:"Bezorging vanaf:",shippingTranspoteur:" avec le transporteur "},{},{}],init:function(){this._super(),this.idxDays=["di","lu","ma","me","je","ve","sa"],!0===this.$scope.openDay&&(this.$scope.deliveryDays=d.without(this.$scope.deliveryDays,"di"))},process:function(){var a=this.$scope.product,b=(new Date).getTime();for(this.$scope.dayToShip&&(b+=60*this.$scope.dayToShip*60*24*1e3),!a.outofstock&&a.quantity<=0&&"false"!==this.$scope.outOfStock&&null!==a.daytoship&&!d.isUndefined(a.daytoship)&&(b+=60*a.daytoship*60*24*1e3),this.$scope.limitHour&&new Date(b).getHours()>=this.$scope.limitHour&&(b+=864e5);!this.canDeliverToday(b);)b+=864e5;this.$scope.shippingDate=b,this.$scope.rootImg&&(this.$scope.imgUrl=f.config("root")+(this.$scope.rootImg?this.$scope.rootImg+"/":"")+c.helpers.strechName(this.$scope.shippingName)+"."+(this.$scope.extension||"jpg"))},isBankHoliday:function(a){var b=a.getFullYear(),c=new Date(b,"00","01"),d=new Date(b,"04","01"),e=new Date(b,"04","08"),f=new Date(b,"06","14"),g=new Date(b,"07","15"),h=new Date(b,"10","01"),i=new Date(b,"10","11"),j=new Date(b,"11","25"),k=b%19,l=Math.floor(b/100),m=(l-Math.floor(l/4)-Math.floor((8*l+13)/25)+19*k+15)%30,n=m-Math.floor(m/28)*(1-Math.floor(m/28)*Math.floor(29/(m+1))*Math.floor((21-k)/11)),o=(1*b+Math.floor(b/4)+n+2-l+Math.floor(l/4))%7,p=n-o,q=3+Math.floor((p+40)/44),r=p+28-31*Math.floor(q/4),s=new Date(b,q-1,r+1),t=new Date(b,q-1,r+39),u=new Date(b,q-1,r+50);return 0===this.dateDiff(a,c)||0===this.dateDiff(a,s)||0===this.dateDiff(a,d)||0===this.dateDiff(a,e)||0===this.dateDiff(a,t)||0===this.dateDiff(a,u)||0===this.dateDiff(a,f)||0===this.dateDiff(a,g)||0===this.dateDiff(a,h)||0===this.dateDiff(a,i)||0===this.dateDiff(a,j)},dateDiff:function(a,b){return Math.floor((Date.UTC(b.getFullYear(),b.getMonth(),b.getDate())-Date.UTC(a.getFullYear(),a.getMonth(),a.getDate()))/864e5)},canDeliverToday:function(a){return!(!a||d.isNaN(a))&&(!(this.$scope.deliveryDays.length>0&&-1===d.indexOf(this.$scope.deliveryDays,this.idxDays[new Date(a).getDay()]))&&(!this.$scope.bankHoliday||!this.isBankHoliday(new Date(a))))}}))(a,{elem:g,attrs:h})},template:function(a,b){return b.template,'<div class="c-cs-product-shipping-date__inner"><label class="PBShortTxt c-cs-product-shipping-date__label">{{translation.shippingLabel}} </label> <span class="PBMainTxt c-cs-product-shipping-date__date">{{ shippingDate | date }}</span> <div class="PBShortTxt c-cs-product-shipping-date__shipping-container"><span class="c-cs-product-shipping-date__shipping-text">{{translation.shippingTranspoteur}}</span><span class="PBMainTxt c-cs-product-shipping-date__shipping-name">{{shippingName}}</span> <span class="imgShipping c-cs-product-shipping-date__shipping-image" ng-if="imgUrl" style="background-image: url({{imgUrl}})"></span></div></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductStock";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk",function(a,b){return new(a.extend({scope:{pdtId:"<?"},link:function(a,c,d){new(b.extend({name:e,detailLevel:["list"]}))(a,{elem:c,attrs:d})},template:function(a,b){var c="",d='<div class="CS-PBStock c-cs-product-stock__message"><span class="c-cs-product-stock__message-text PBShortTxt PBMsgInStock" ng-if="product.showstocknote && product.stocknote" ng-bind-html="product.stocknote"></span><span class="c-cs-product-stock__message-text PBShortTxt PBMsgOutOfStock" ng-if="product.stockscenariomessage" ng-bind-html="product.stockscenariomessage"></span></div>';switch(b.template){case"detail":c=d+'<div class="CS-PBStock-detail c-cs-product-stock__detail"><span class="c-cs-product-stock__detail-text PBShortTxt PBMsgDaysToShip" ng-if="product.availabilitydelaymessage" ng-bind-html="product.availabilitydelaymessage"></span><span class="c-cs-product-stock__detail-text PBShortTxt PBMsgStockLvl" ng-if="product.showstocklevel && product.stocklevelmessage" ng-bind-html="product.stocklevelmessage"></span></div>';break;default:c=d}return c}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductTabs";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk","$sce","$parse",function(a,f,g,h){return new(a.extend({scope:{pdtId:"<?",animation:"@",defaultTexts:"<?",paneId:"=?",tag:"<?",preRender:"&"},link:function(a,h,i){new(f.extend({name:e,detailLevel:["detail"],regExp:/\|([^\|]+)\|/g,defineScope:{params:{},paneIds:[]},init:function(){this.$scope.tag&&(this.regExp=d.isRegExp(this.$scope.tag)?regExp:new RegExp("\\|([^\\|]+)\\|".replace(/\|/g,this.$scope.tag),"g")),this._super()},process:function(){var a=this;if(!this.$scope.product.tabs){this.$scope.paneIds=[],this.$scope.product.tabs=[];var e=i.preRender?this.$scope.preRender({description:this.$scope.product.longdescription}):this.$scope.product.longdescription,f=c("<div>",{html:e}),h=c("ol:first-of-type",f);c("> li",h).each(function(b){var c,d=this.innerHTML.replace(a.regExp,function(a,b){return c=b,""});a.$scope.product.tabs.push({title:c||a.$scope.defaultTexts&&a.$scope.defaultTexts[b]||b+1,pane:g.trustAsHtml(d)})}),h.remove(),this.$scope.product.noTabs=g.trustAsHtml(f.html())}d.defer(d.bind(function(){if("titles"===i.template||"both"===i.template){this.previousIds=a.previousIds||[];var c=this.previousIds.indexOf(this.$scope.paneId);if(c>=0)this.$scope.paneId=this.$scope.paneIds[c]||this.$scope.paneIds[0]||1,this.$scope.$root.safeApply();else if(!this.$scope.paneId){var e=null;b.forEach(this.$scope.paneIds,d.bind(function(a){e=Math.min(e||1e4,a)},this)),this.$scope.paneId=e||1}this.previousIds=b.copy(this.$scope.paneIds||[])}this.emitRootScopeEvt({args:[this.$scope.pdtId]})},this))}}))(a,{elem:h,attrs:i})},template:function(a,b){var c;switch(b.template){case"panes":c='<div ng-repeat="tab in product.tabs" cs-pane cs-bind-html="tab.pane" animation="{{animation}}"></div>';break;case"titles":c='<div ng-repeat="tab in product.tabs" cs-title pane-id="paneIds[$index]">{{tab.title}}</div>';break;case"open-tabs":c='<div class="lz-product-open-tabs"><div ng-repeat="tab in product.tabs" cs-open-title dynamic="true" text="{{tab.title}}"></div><div ng-repeat="tab in product.tabs" cs-open-pane dynamic="true"><div cs-bind-html="tab.pane"></div></div></div>';break;default: 13c='<div class="productTabs"><div ng-repeat="tab in product.tabs" cs-title pane-id="paneIds[$index]">{{tab.title}}</div><div ng-repeat="tab in product.tabs" cs-pane cs-bind-html="tab.pane" animation="{{animation}}"></div></div>'}return c}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductUrl";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk","oxLocationService",function(a,b,c){return new(a.extend({scope:{pdtId:"<?",method:"@",beforeGoto:"&",place:"@"},link:function(a,f,g){new(b.extend({name:e,detailLevel:["list"],process:function(){switch(this.url=this.$scope.product.canonicalurl,g.method){case"href":this.attrs.beforeGoto||c.hasBeforeAssign()?this.elem.on("click",function(a){this.goTo(a)}.bind(this)):f.attr("href",this.url);break;case"event":f.on("click",d.bind(this.goTo,this));break;default:this.attrs.beforeGoto||c.hasBeforeAssign()?this.elem.on("click",function(a){this.goTo(a)}.bind(this)):f.attr("onclick","window.location.assign('"+this.url+"')")}},goTo:function(a){a&&a.stopPropagation(),a&&a.preventDefault(),this.attrs.beforeGoto?this.oxHelpers.deferFn(this.$scope.beforeGoto,[{$elem:{node:this.elem},$product:this.$scope.product||{}}]).then(function(){c.assign(this.url,{pdtId:this.$scope.pdtId,place:this.attrs.place})}.bind(this)):c.assign(this.url,{pdtId:this.$scope.pdtId,place:this.attrs.place})}}))(a,{elem:f,attrs:g})}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductVatInfo";b.module("oxFramework").addDirective(e,["Directive","oxDirective",function(c,d){return new(c.extend({scope:{taxMode:"<?"},link:function(c,f,g){new(d.extend({name:e,bindConfigToScope:!0,translation:[{HTLabel:"HT",TTCLabel:"TTC"},{HTLabel:"Exc. VAT",TTCLabel:"Inc. VAT"},{HTLabel:"+IVA",TTCLabel:"IVA Incl."},{HTLabel:"o. MwSt.",TTCLabel:"inkl. MwSt."},{HTLabel:"IVA esc.",TTCLabel:"IVA inc."},{HTLabel:"Excl. BTW",TTCLabel:"Incl. BTW"},{HTLabel:"+IVA",TTCLabel:"IVA Incl."},{HTLabel:"s/ IVA",TTCLabel:"c/ IVA"}],updateHTML:function(){var c,d=a.oxInfos.oxCurrency.taxMode;b.isUndefined(this.$scope.taxMode)||(d=this.$scope.taxMode),4===d&&(c=this.$scope.translation.TTCLabel),3===d&&(c=this.$scope.translation.HTLabel),this.sharedData.priceConf&&"none"===this.sharedData.priceConf.vatMode&&(c=null),c&&f.html(c),this.killRootScopeEvt("VATUpdate")},init:function(){this._super(),a.oxInfos.oxCurrency.taxMode?this.updateHTML():this.addRootScopeEvt({VATUpdate:"updateHTML"})}}))(c,{elem:f,attrs:g})}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csProductWebblock";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk",function(a,b){return new(a.extend({scope:{pdtId:"<?",facetName:"@",facetValuesMap:"<"},link:function(a,c,f){new(b.extend({name:e,detailLevel:["facets"],bindConfigToScope:!0,defaultConfig:{},defineScope:{ctx:{wbName:null,wbId:null,sessionCache:!0,ready:!1}},process:function(){var a=this.$scope.facetName,b=this.$scope.facetValuesMap,c={},e=null;a&&(c[a]=d.without(d.keys(b),"defaultValue"),e=b.defaultValue,this.oxProductHelper.hasFacet(this.$scope.pdtId,c).then(function(c){var d=c[this.$scope.pdtId].facets[a],e=d[0],f=b[e];this._setCtxWb(f),this._processEnd()}.bind(this),function(){e&&this._setCtxWb(e),this._processEnd()}.bind(this)))},_setCtxWb:function(a){/^\d+$/.test(a)?this.$scope.ctx.wbId=a:this.$scope.ctx.wbName=a},_processEnd:function(){this.$scope.ctx.ready=!0,this.safeApply()}}))(a,{elem:c,attrs:f})},template:'<div ng-if="ctx.ready" class="c-cs-product-webblock__inner" cs cs-webblock wb-name="ctx.wbName" wb-id="ctx.wbId" session-cache="ctx.sessionCache"></div>'}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d,e){var f="csQuantity",g=b.module("oxFramework");b.module("oxFramework").addDirective(f,["Directive","oxDirective",function(a,c){return new(a.extend({scope:{min:"<?",max:"<?",step:"<?",defaultValue:"@?",model:"=",trigger:"&?"},link:function(a,b,d){new(c.extend({name:f,watchers:{min:"setBounds",max:"setBounds",step:"setBounds"},translation:[{quantity:"Quantit\xe9"},{quantity:"Quantity"},{quantity:"Cantidad"},{quantity:"Anzahl"},{quantity:"Quantit\xe0"},{quantity:"Hoeveelheid"},{quantity:"Quantitat"},{quantity:"Quantidade"}
13],nbDecimal:g.getDecimalPlaces(),defineScope:{isFocused:!1,decrement:function(a){a.stopPropagation(),this.$scope.allowMinus()&&(this.$scope.model=e.sub(this.$scope.model,this.step).toNumber(),this.control(),this.sendUpdateEvent())},increment:function(a){a.stopPropagation(),this.$scope.allowPlus()&&(this.$scope.model=e.add(this.$scope.model,this.step).toNumber(),this.control(),this.sendUpdateEvent())},stopProp:function(a){a.stopPropagation()},scOnFocus:function(){this.$scope.isFocused=!0},scOnBlur:function(){this.$scope.isFocused=!1,""===this.$scope.model&&(this.$scope.model=this.defaultValue),this.control(),this.sendUpdateEvent()},allowMinus:function(){return this.min<=e.sub(this.$scope.model,this.step).toNumber()},allowPlus:function(){return this.max>=e.add(this.$scope.model,this.step).toNumber()}},init:function(){this.$scope.model=this.$scope.defaultValue||this.$scope.min,this.setBounds(),this._super()},setBounds:function(){this.min=this.$scope.min||0,this.max=this.$scope.max||99999999999999,this.step=this.$scope.step||1,this.defaultValue=this.$scope.defaultValue||this.$scope.min,this.control()},control:function(){this.$scope.isFocused&&""===this.$scope.model||(isNaN(this.$scope.model)&&(this.$scope.model=this.min),this.$scope.model=Math.max(this.$scope.model,this.min),this.$scope.model=Math.min(this.$scope.model,this.max),this.$scope.model=e.sub(this.$scope.model,e.mod(this.$scope.model,this.step)).toNumber(),this.$scope.model=new e(this.$scope.model).toDecimalPlaces(this.nbDecimal).toNumber())},sendUpdateEvent:function(){this.$scope.$root.$emit(f+"-update",this.$scope.model),this.$scope.trigger&&this.$scope.trigger({value:this.$scope.model})}}))(a,{elem:b,attrs:d})},template:function(a,c){var d=c.template?c.template.toLowerCase():"ipm",e=d.split(""),f="";switch(g.device){case"mobile":var h={i:'<input aria-label="{{::translation.quantity}}" class="c-cs-quantity__input-value" ng-click="stopProp($event)" type="text" ng-model="model" ng-focus="scOnFocus()" ng-blur="scOnBlur()" cs-prevent-enter ng-model-options="{ debounce: 400 }" >',m:'<button ng-disabled="!allowMinus()" class="c-cs-quantity__button c-cs-quantity__button--minus c-button c-button--secondary" ng-click="decrement($event)"><span class="c-button__inner"><cs-icon icon="minus"></cs-icon></span></button>',p:'<button ng-disabled="!allowPlus()" class="c-cs-quantity__button c-cs-quantity__button--plus c-button c-button--secondary" ng-click="increment($event)"><span class="c-button__inner"><cs-icon icon="plus"></cs-icon></span></button>'};break;default:var h={i:'<input aria-label="{{::translation.quantity}}" class="c-cs-quantity__input-value lz-value CS-value" ng-click="stopProp($event)" type="text" ng-model="model" ng-focus="scOnFocus()" ng-blur="scOnBlur()" cs-prevent-enter ng-model-options="{ debounce: 400 }" >',m:'<a ng-class="{impossible: !allowMinus(), \'is-disabled\': !allowMinus()}" class="c-cs-quantity__button c-cs-quantity__button--minus lz-btn lz-decr CS-btn CS-decr" ng-click="decrement($event)"><span>-</span></a>',p:'<a ng-class="{impossible: !allowPlus(), \'is-disabled\': !allowPlus()}" class="c-cs-quantity__button c-cs-quantity__button--plus lz-btn lz-incr CS-btn CS-incr" ng-click="increment($event)"><span>+</span></a>'}}return b.forEach(e,function(a){var b=h[a];b&&(f+=b)}),f}}))({name:f})}])}(window,window.angular,window.angular.element,window._,window.Decimal),function(a,b,c,d){var e="csQuantityBox";b.module("oxFramework").addDirective(e,["Directive","oxDirective",function(a,b){return new(a.extend({scope:{pdtId:"<?",min:"<?",max:"<?",step:"<?",defaultValue:"@?"},link:function(a,c,d){new(b.extend({name:e,translation:[{quantity:"Quantit\xe9 :"},{quantity:"Quantity:"},{quantity:"Cantidad:"},{quantity:"Menge:"},{quantity:"Quantit\xe0 :"},{quantity:"Aantal:"},{quantity:"Quantitat:"},{quantity:"Quantidade:"}],watchers:{pdtId:"whenPdtIdChange","sharedData.products.data[pdtId].quantityToAdd":"whenQtyChange"},init:function(){this.$scope.product=this.sharedData.products.data[this.$scope.pdtId]=this.sharedData.products.data[this.$scope.pdtId]||{},this.$scope.sharedData=this.sharedData,d.min||(this.$scope.min=1),d.max||(this.$scope.max=99999999999999),d.step||(this.$scope.step=1),this.$scope.defaultValue=this.$scope.defaultValue||this.$scope.min,this.attrs&&this.elem&&!this.attrs.pdtId&&(this._getParentPdtId(),this.addRootScopeEvt({"update-pdtId":function(){this._getParentPdtId()}})),this.safeApply(),this._super()},updateBounds:function(){},whenPdtIdChange:function(a,b){a!==b&&this.$scope.pdtId&&(this.$scope.product=this.sharedData.products.data[this.$scope.pdtId]=this.sharedData.products.data[this.$scope.pdtId]||{},this.$scope.product.quantityToAdd=this.$scope.product.quantityToAdd||this.$scope.defaultValue)},whenQtyChange:function(a,b){a!==b&&this.$scope.$root.$emit(e+"-update",this.$scope.pdtId)}}))(a,{elem:c,attrs:d})},template:function(a,b){var c="",e=d.extend({template:"ipm"},b);return e.defaultValue=e.defaultValue||e.min,b.template,c='<span class="PBShortTxt lz-label c-cs-quantity-box__label">{{translation.quantity}}</span><span class="c-cs-quantity-box__quantity-box" cs cs-quantity model="sharedData.products.data[pdtId].quantityToAdd" min="min" max="max" step="step" default-value="'+e.defaultValue+'" template="'+e.template+'"><span>',c}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csRedirect";b.module("oxFramework").addDirective(e,["Directive","oxDirective",function(a,b){return new(a.extend({scope:{url:"@",params:"<?",beforeSend:"&"},link:function(a,f,g){new(b.extend({name:e,init:function(){this._super(),this.process()},process:function(){f.click(d.bind(function(a){a.preventDefault(),this.oxHelpers.deferFn(this.$scope.beforeSend).then(d.bind(this.redirect,this))},this))},redirect:function(){c.redirect(this.$scope.url,this.$scope.params)}}))(a,{elem:f,attrs:g})}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csSearchProductByFacets";b.module("oxFramework").addDirective(e,["oxDirective","oxWs",function(a,c){return{restrict:"A",replace:!1,scope:{rootFacet:"<",afterSearch:"&",deep:"<?",facetNamePlacement:"@?",wordingPlacement:"@?",wordings:"<?"},link:function(f,g,h){new(a.extend({name:e,bindConfigToScope:!0,translation:[{placeholder:"-S\xe9lectionner-",search:"Valider"},{placeholder:"-Select-",search:"OK"}
13,{placeholder:"-Seleccionar-",search:"Confirmar"},{placeholder:"-Ausw\xe4hlen-",search:"Best\xe4tigen"},{placeholder:"-Seleziona-",search:"Confermare"},{placeholder:"-Selecteer-",search:"OK"},{placeholder:"-Selecciona-",search:"Valida"},{placeholder:"-Selecionar-",search:"Validar"}],defineScope:{ctx:{facets:[],selectedFacets:[],showSubmitBnt:!1},labels:[],placeholders:[],deep:1,wordings:[],facetNamePlacement:"label",wordingPlacement:"none",submitSearch:function(){var a=[];b.forEach(this.$scope.ctx.selectedFacets,function(b,c){a.push(b.typeId+":"+b.id)});var e=c.getProducts({selectedFacets:a.toString(),detail:["id"]});e.$promise.then(function(){this.$scope.afterSearch({data:{pdtIds:d.pluck(e.products,"id"),search:a}})}.bind(this))}},defaultConfig:{},watchers:{rootFacet:function(a,b){a!=b&&this._retrieveFacetValues(a,0)}},watchersCollection:{"ctx.selectedFacets":function(a,b){var c=d.pluck(a,"name"),e=d.pluck(b,"name"),f=d.difference(c,e)[0];if(f){var g=d.indexOf(c,f);g++,this._retrieveFacetValues(f,g)}}},init:function(){this._super(),this._retrieveFacetValues(this.$scope.rootFacet,0)},_retrieveFacetValues:function(a,d){d<this.$scope.ctx.facets.length&&(this.$scope.ctx.facets=this.$scope.ctx.facets.slice(0,d),this.$scope.ctx.selectedFacets=this.$scope.ctx.selectedFacets.slice(0,d));var e=c.getOptionType({InternalName:a});e.$promise.then(function(){if(0==e.data.length||d>=this.$scope.deep)return void(this.$scope.ctx.showSubmitBnt=!0);this.$scope.ctx.showSubmitBnt=!1,this.$scope.placeholders[d]=this.$scope.translation.placeholder,this.$scope.labels[d]=e.name,"placeholder"==this.$scope.facetNamePlacement&&(this.$scope.placeholders[d]=e.name),"label"==this.$scope.facetNamePlacement&&(this.$scope.labels[d]=e.name),"placeholder"==this.$scope.wordingPlacement&&this.$scope.wordings&&this.$scope.wordings[d]&&(this.$scope.placeholders[d]=this.$scope.wordings[d]),"label"==this.$scope.wordingPlacement&&this.$scope.wordings&&this.$scope.wordings[d]&&(this.$scope.labels[d]=this.$scope.wordings[d]),b.forEach(e.data,function(a){a.typeId=e.typeId}),this.$scope.ctx.facets[d]=e.data||[],this.$scope.ctx.selectedFacets[d]={},this.safeApply()}.bind(this))}}))(f,{elem:g,attrs:h})},template:function(a,c){var d="";switch(b.module("oxFramework").device){case"mobile":c.template,d+=' <div class="l-section"> <div ng-repeat="facets in ctx.facets" class="select-container c-cs-search-product-by-facets__item"> <label ng-if="labels[$index]" class="c-cs-search-product-by-facets__label" for="c-cs-search-product-by-facets__input-{{$id}}-{{$index}}">{{labels[$index]}}</label> <select class="c-cs-search-product-by-facets__input" ng-model="ctx.selectedFacets[$index]" ng-options="facet.name for facet in facets" id="c-cs-search-product-by-facets__input-{{$id}}-{{$index}}"> <option value="" disabled selected>{{placeholders[$index]}}</option> </select> </div> <div class="l-actions-container"> <button ng-if="ctx.showSubmitBnt" ng-click="submitSearch()" class="c-button c-button--primary c-button--fullwidth c-cs-search-product-by-facets__btn"> <span class="c-button__inner">{{::translation.search}}</span> </button> </div> </div>';break;default:c.template,d=' <div ng-repeat="facets in ctx.facets" class="c-cs-search-product-by-facets__item"> <label ng-if="labels[$index]" class="c-cs-search-product-by-facets__label" for="c-cs-search-product-by-facets__input-{{$id}}-{{$index}}">{{labels[$index]}}</label> <select class="c-cs-search-product-by-facets__input" ng-model="ctx.selectedFacets[$index]" ng-options="facet.name for facet in facets" id="c-cs-search-product-by-facets__input-{{$id}}-{{$index}}"> <option value="" disabled selected>{{placeholders[$index]}}</option> </select> </div> <div ng-if="ctx.showSubmitBnt" class="c-cs-search-product-by-facets__btn-wrapper"> <a class="btnmain c-cs-search-product-by-facets__btn" ng-click="submitSearch()"><span>{{::translation.search}}</span></a> </div>'}return d}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d,e){var f="csShippingEstimation";b.module("oxFramework").addDirective(f,["Directive","oxDirective","oxUserHelper","oxPriceHelper","$parse","oxWs","$q",function(c,d,e,g,h,i,j){return new(c.extend({scope:{defaultCountry:"@",returnedShipping:"=?",template:"@",priceType:"@?",showOffer:"<?"},link:function(c,k,l){new(d.extend({name:f,rootScopeEvents:{"csShippingEstimation:update":"cartRefresh","csDynamicCart-complete":"cartRefresh"},watchersCollection:{cartContent:"_whenCartData"},startProcess:function(){},init:function(){this.isTouch=function(a){return!(!/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)&&!/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|
13sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))}(navigator.userAgent||navigator.vendor||a.opera||"");var b=h("oxInfos.oxLang")(a)||0;switch(this.$scope.selectedCountry=this.$scope.defaultCountry||this.defaultCountries[b],this.$scope.selectedCountry=parseInt(this.$scope.selectedCountry),this.$scope.cartContent=this.sharedData.cartContent,this.$scope.isMobile=a.oxFramework.isMobile,this.$scope.isConnected=e.isConnected(),this.$scope.priceType=this.$scope.priceType||"platform",this.$scope.template){case"auto":this.$scope.limit=1,this.startProcess=this.autoProcess;break;default:this.$scope.limit=10,this.startProcess=this.manuelProcess}this.startProcess(),this._super()},cartRefresh:function(){var a=this;if(this.forced=!0,this.startProcess(),this.$scope.total){var b=this.$scope.selectedShipping;this.launchEstimation().then(function(){a.$scope.selectedShipping=b,a.evalTotal(),a.$scope.$root.safeApply()})}},translation:[{mainTitle:"Estimation des frais de port",launch:"Estimer",country:"Pays",zip:"Code postal",totalTitle:"Total avec les frais de port",offer:"Offert",taxesRecalculation:"Cette information sera recalcul\xe9e quand vous serez connect\xe9 \xe0 votre compte.",orPrice:"Soit",TotalNote:"Total hors remise"},{mainTitle:"Shipping fee estimate",launch:"Estimate",country:"Country",zip:"Postcode",totalTitle:"Total price including shipping",offer:"Free",taxesRecalculation:"This information will be recalculated once logged into your account.",orPrice:"Or",TotalNote:"Total excluding discount"},{mainTitle:"Calcula los gastos de env\xedo",launch:"Calcular",country:"Pa\xeds",zip:"C\xf3digo Postal",totalTitle:"Total con los gastos de env\xedo",offer:"ofrecido",taxesRecalculation:"Esta informaci\xf3n se volver\xe1 a calcular cuando se inicia la sesi\xf3n en su cuenta.",orPrice:"Oder",TotalNote:"Total sin descuento"},{mainTitle:"Versandkosten berechnen",launch:"Berechnen",country:"Land",zip:"Postleitzahl",totalTitle:"Gesamtpreis zuz\xfcglich Versandkosten",offer:"angeboten",taxesRecalculation:"Diese Informationen werden neu berechnet werden, wenn Sie sich in Ihrem Konto angemeldet sind.",orPrice:"O",TotalNote:"Gesamt ohne Rabatt"},{mainTitle:"Calcolo delle spese di spedizione",launch:"Calcola",country:"Paese",zip:"Codice di avviamento postale",totalTitle:"Totale con le spese di spedizione",offer:"offerta",taxesRecalculation:"Queste informazioni verranno ricalcolato quando si \xe8 connessi al proprio account.",orPrice:"O",TotalNote:"Totale escluso sconto"},{mainTitle:"Shipping fee estimate",launch:"Estimate",country:"Country",zip:"Postcode",totalTitle:"Total price including shipping",offer:"aangeboden",taxesRecalculation:"Deze informatie wordt herberekend wanneer u bent aangemeld bij uw account.",orPrice:"Of",TotalNote:"Total excluding discount"},{mainTitle:"Shipping fee estimate",launch:"Estimate",country:"Country",zip:"Postcode",totalTitle:"Total price including shipping",offer:"ofert",taxesRecalculation:"Esta informaci\xf3n se volver\xe1 a calcular cuando se inicia la sesi\xf3n en su cuenta.",orPrice:"O",TotalNote:"Total excluding discount"},{mainTitle:"Estimativa de portes",launch:"Estimativa",country:"Pa\xeds",zip:"C\xf3digo postal",totalTitle:"Total com portes",offer:"oferecido",taxesRecalculation:"Esta informa\xe7\xe3o ser\xe1 recalculado quando voc\xea est\xe1 logado em sua conta.",orPrice:"Ou",TotalNote:"Total excluindo desconto"}],defaultCountries:{0:66,1:61,2:171,3:71,4:91,5:134,6:171},autoProcess:function(){var a=this;this.grabInfos(),this.getUserDetail().then(function(){a.setDefault(),a.launchEstimation().then(function(){a.safeApply()})})},scStartProcess:function(){this.processStarted||(this.processStarted=!0,this.grabInfos(),this.addRootScopeEvt({"csCountryList-data":"manualRun"}),this.wsManager.getCountryList())},manuelProcess:function(){var a=this;this.$scope.scSelect=function(b){a.$scope.selectedShipping=b,a.evalTotal()},this.$scope.scStartProcess=this.scStartProcess.bind(this),this.isTouch&&this.scStartProcess()},manualRun:function(){var a=this;this.killRootScopeEvt("csCountryList-data"),this.$scope.countries=this.sharedData.countryList.data.list.countries,this.getUserDetail().then(function(){a.setDefault(),a.$scope.scLaunchEstimation=function(){a.lau
13nchEstimation().then(function(){a.safeApply()})}})},_whenCartData:function(){h("data.cartFeatures")(this.sharedData.cartContent)&&this.grabInfos()},grabInfos:function(){var b=this.sharedData.cartContent.data.cartFeatures;if(!b)return void this.wsManager.getCartContent();b.reductionAmount&&(this.$scope.hasReduction=!0),this.$scope.htMode=b.renderTaxesAmount,this.$scope.totalHT=b.cartTotalExclVat,this.$scope.totalTTC=b.cartTotalInclVat,this.email=h("oxInfos.oxUser.email")(a)},getUserDetail:function(){var a=j.defer(),b=this;if(this.forced||this.email&&!this.userDetail){var c=i.getUserDetail();c.$promise.then(function(){b.userDetail=c,a.resolve()})}else setTimeout(a.resolve);return a.promise},setDefault:function(){this.$scope.selectedCountry||(this.$scope.selectedCountry=this.userDetail&&(this.userDetail.shippingCountryValue||this.userDetail.billingCountryValue)||this.defaultCountry,this.$scope.zip=this.userDetail&&(this.userDetail.shippingZipCode||this.userDetail.billingZipCode))},launchEstimation:function(){var a=j.defer(),b=this;return this.$scope.shippingList=i.getShipping({estimateShippingCost:"1",estimateCountryID:this.$scope.selectedCountry,estimateZipCode:this.$scope.zip}),this.$scope.shippingList.$promise.then(function(){b.convertPrice(),b.$scope.selectedShipping=0,b.evalTotal(),a.resolve()}),a.promise},convertPrice:function(){b.forEach(this.$scope.shippingList.shippingOptions,function(a){a.price=parseFloat((parseInt(a.shipAmount.replace(/[\.,]+/g,""))/100).toFixed(2)),a.priceorg=a.price,a.vatrate=parseFloat(a.shipValue.split("|")[8]||0),g.addPricesTo(a)})},evalTotal:function(){if(this.$scope.shippingList.shippingOptions){this.$scope.displayTotalHT=this.$scope.totalHT+this.$scope.shippingList.shippingOptions[this.$scope.selectedShipping].priceHT,this.$scope.displayTotalTTC=this.$scope.totalTTC+this.$scope.shippingList.shippingOptions[this.$scope.selectedShipping].priceTTC,this.$scope.htMode?this.$scope.total=this.$scope.displayTotalHT:this.$scope.total=this.$scope.displayTotalTTC;var a=this.$scope;this.$scope.taxesRecalculationMsg='<div class="c-cs-shipping-estimation__modal">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p> \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'.concat(a.translation.orPrice,' \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span cs-price price="').concat(this.$scope.total,'" /> <span cs cs-product-vat-info/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t').concat(a.isConnected?"":"<p>".concat(a.translation.taxesRecalculation,"</p>"),"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>"),this.$scope.returnedShipping=this.$scope.shippingList.shippingOptions[this.$scope.selectedShipping].price}}}))(c,{elem:k,attrs:l})},template:function(a,b){var c,d={mainTitle:' <div class="PBSTitle">{{translation.mainTitle}}</div>',config:'<div class="shipConfig" ng-mouseenter="scStartProcess()"> <div class="shipCountry"> <div class="shipLabel">{{translation.country}}</div> <select ng-model="selectedCountry" ng-options="country.id as country.name for country in countries"></select> </div> <div class="shipZip"> <div class="shipLabel">{{translation.zip}}</div> <input type="text" ng-model="zip"> </div> <div class="shipButton"> <a class="btnmain" ng-click="scLaunchEstimation()"> <span>{{translation.launch}}</span> </a> </div></div>',select:'<div class="shipSelect" ng-show="shippingList.shippingOptions || shippingList.shipUnavailable"> <div class="shippingLine" ng-show="shippingList.shippingOptions" ng-repeat="shipping in shippingList.shippingOptions | orderBy:\'price\':false | limitTo:limit" ng-click="scSelect ($index)" ng-class="{\'shipActive\': $index == selectedShipping, freeShipping: shipping.shipFree || !shipping.price}"> <div class="shipPicture"> <img src="{{shipping.shipPicture}}"> </div> <div class="shipName" ng-bind-html="shipping.shipName"></div>\t\t\t<div class="shipPrice"> \t<span ng-if="(!showOffer || showOffer && shipping.price > 0) && priceType === \'platform\'" cs-price price="shipping.price"></span> \t<span ng-if="(!showOffer || showOffer && shipping.priceHT > 0) && (priceType === \'HT\' || priceType === \'both\')" cs-price price="shipping.priceHT"></span> \t<span ng-if="(!showOffer || showOffer && shipping.priceHT > 0) && (priceType === \'HT\' || priceType === \'both\')" cs cs-product-vat-info tax-mode="3"></span> \t<span ng-if="(!showOffer || showOffer && shipping.priceTTC > 0) && (priceType === \'TTC\' || priceType === \'both\')" cs-price price="shipping.priceTTC"></span> \t<span ng-if="(!showOffer || showOffer && shipping.priceTTC > 0) && (priceType === \'TTC\' || priceType === \'both\')" cs cs-product-vat-info tax-mode="4"></span> \t<div ng-if="(showOffer && shipping.price === 0)" class="shipPrice offer">{{translation.offer}}</div> \t\t</div> </div> <span ng-if="shippingList.shipUnavailable" class="noShipping" ng-bind="shippingList.shipUnavailable"></span></div>',total:'<div ng-if="shippingList.shippingOptions.length" class="shiptotal"> <div class="PBColHead totalTitle">{{translation.totalTitle}}<span cs cs-hint ng-if="!htMode && taxesRecalculationMsg" message="taxesRecalculationMsg" use-
13dialog="isMobile" force-dialog="isMobile" class="c-cs-hint--cart-taxes"></span></div><div class="totalPriceWrapper"> <div class="totalPrice" ng-if="(priceType === \'TTC\' || priceType === \'both\')"><span cs-price price="displayTotalTTC"></span><span cs cs-product-vat-info tax-mode="4"></span></div> <div class="totalPrice" ng-if="(priceType === \'HT\' || priceType === \'both\')"><span cs-price price="displayTotalHT"></span><span cs cs-product-vat-info tax-mode="3"></span></div> <div class="totalPrice" ng-if="(priceType === \'platform\')"><span cs-price price="total"></span><span cs cs-product-vat-info></span></div></div></div>'};switch(b.template){case"auto":c=d.mainTitle+d.select+d.total;break;default:c=d.mainTitle+d.config+d.select+d.total}return c}}))({name:f})}])}(window,window.angular,window.angular.element,window._,window.Decimal),function(a,b,c,d){var e="csShowBlog";b.module("oxFramework").addDirective(e,["Directive","oxLnk","$sce","oxWs",function(c,d,f,g){return new(c.extend({scope:{name:"<?",itmId:"<?",hasElem:"=?",maxChar:"@",template:"@",clickable:"@"},link:function(b,c,h){new(d.extend({name:e,detailLevel:["id","nameDateAndUrl","imageAndDescription"],defineScope:{scGo:function(){a.location.assign(this.$scope.blog.url)}},wsType:"item",component:"blog",process:function(){this.$scope.hasElem=this.$scope.blog&&!0;var a=this.$scope.maxChar?g.helpers.reduce(this.$scope.blog.desc,this.$scope.maxChar):this.$scope.blog.desc;this.$scope.description=f.trustAsHtml(a)}}))(b,{elem:c,attrs:h})},template:function(a,c){var d=c.template?c.template.toLowerCase():"ndic",e=d.split(""),f='<div class="CS-blogContent"';c.clickable&&"true"!==c.clickable||(f+=' ng-click="scGo()"'),f+=">";var g={h:'<h3 class="PBMainTxt CS-blogName" ng-bind-html="blog.name"></h3>',c:'<div class="PBShortTxt CS-blogContent" ng-bind-html="description"></div>',i:'<div class="CS-blogImg"><img cs-data-src="{{blog.imgfilename}}"></div>',n:'<div class="PBMainTxt CS-blogName" ng-bind-html="blog.name"></div>',d:'<div class="PBDate CS-blogDate">{{blog.date.timestamp | date:"fullDate"}}</div>'};return b.forEach(e,function(a){var b=g[a];b&&(f+=b)}),f+="</div>"}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csShowNews";b.module("oxFramework").addDirective(e,["Directive","oxLnk","$sce","oxWs",function(c,d,f,g){return new(c.extend({scope:{name:"<?",itmId:"<?",hasElem:"=?",maxChar:"@",template:"@",clickable:"@"},link:function(b,c,h){new(d.extend({name:e,detailLevel:["id","nameDateAndUrl","imageAndDescription"],defineScope:{scGo:function(){a.location.assign(this.$scope.hotnews.url)}},wsType:"item",component:"hotnews",process:function(){this.$scope.hasElem=this.$scope.hotnews&&!0;var a=this.$scope.maxChar?g.helpers.reduce(this.$scope.hotnews.desc,this.$scope.maxChar):this.$scope.hotnews.desc;this.$scope.description=f.trustAsHtml(a)}}))(b,{elem:c,attrs:h})},template:function(a,c){if("h3"===c.template)d="ihdc";else var d=c.template?c.template.toLowerCase():"ndic";var e=d.split(""),f='<div class="CS-hotNnewsContent"';c.clickable&&"true"!==c.clickable||(f+=' ng-click="scGo()"'),f+=">";var g={h:'<h3 class="PBMainTxt CS-hotnewsName" ng-bind-html="hotnews.name"></h3>',c:'<div class="PBShortTxt CS-hotnewsContent" ng-bind-html="description"></div>',i:'<div class="CS-hotnewsImg"><img cs-data-src="{{hotnews.imgfilename}}"></div>',n:'<div class="PBMainTxt CS-hotnewsName" ng-bind-html="hotnews.name"></div>',d:'<div class="PBDate CS-hotnewsDate">{{hotnews.date.timestamp | date:"fullDate"}}</div>'};return b.forEach(e,function(a){var b=g[a];b&&(f+=b)}),f+="</div>"}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csShowPartner";b.module("oxFramework").addDirective(e,["Directive","oxLnk","$sce","oxWs",function(c,d,f,g){return new(c.extend({scope:{name:"<?",itmId:"<?",hasElem:"=?",maxChar:"@",template:"@",clickable:"@"},link:function(b,c,h){new(d.extend({name:e,detailLevel:["id","nameAndUrl","imageAndDescription","more"],defineScope:{scGo:function(){a.location.assign(this.$scope.partners.url)}},wsType:"item",component:"partners",process:function(){this.$scope.hasElem=this.$scope.partners&&!0;var a=this.$scope.maxChar?g.helpers.reduce(this.$scope.partners.desc,this.$scope.maxChar):this.$scope.partners.desc;this.$scope.description=f.trustAsHtml(a)}}))(b,{elem:c,attrs:h})},template:function(a,c){var d=c.template?c.template.toLowerCase():"nsidac",e=d.split(""),f='<div class="CS-partnerContent"';c.clickable&&"true"===c.clickable&&(f+=' ng-click="scGo()"'),f+=">";var g={a:'<div class="PBShortTxt CS-partnerAddress"><div ng-bind-html="partners.address"></div><div ng-if="partners.zipcode || partners.city"><span ng-bind-html="partners.zipcode"></span><span> - </span><span ng-bind-html="partners.city"></span></div><div cs cs-country country-id="partners.countryid"></div></div>', 14c:'<div class="PBShortTxt CS-partnerContact"><div ng-if="partners.phone" class="phone" ng-bind-html="partners.phone"></div><div ng-if="partners.fax" class="fax" ng-bind-html="partners.fax"></div><div ng-if="partners.urlwebsite" class="urlwebsite"><a target="_blank" href="http://{{partners.urlwebsite}}">{{partners.urlwebsite}}</a></div></div>',i:'<div class="CS-partnerImg"><img cs-data-src="{{partners.imgfilename}}"></div>',s:'<div class="PBMainTxt CS-partnerSlogan" ng-bind-html="partners.slogan"></div>',n:'<div class="PBMainTxt CS-partnerName" ng-bind-html="partners.name"></div>',d:'<div class="PBShortTxt CS-partnerDescription" ng-bind-html="description"></div>'};return b.forEach(e,function(a){var b=g[a];b&&(f+=b)}),f+="</div>"}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csSlider",["Directive","oxDirective",function(a,b){return new(a.extend({scope:{min:"<?",max:"<?",step:"<?",sliderValue:"=",unity:"<?"},link:function(a,e,f){new(b.extend({name:"csSlider",defineScope:{params:{}}
14,init:function(){this.downEvent="mousedown.csslider touchstart.csslider",this.upEvent="mouseup.csslider touchend.csslider",this.moveEvent="mousemove.csslider touchmove.csslider",this.process(),this._super()},process:function(){this.bar=c("span.cursor",e),e.on(this.downEvent,d.bind(this.onPress,this))},watchers:{sliderValue:"udateBar"},udateBar:function(){this.$scope.sliderValue&&(this.$scope.sliderValue=Math.min(this.$scope.sliderValue,parseFloat(this.$scope.max)),this.$scope.sliderValue=Math.max(this.$scope.sliderValue,parseFloat(this.$scope.min)),this.$scope.sliderValue=parseFloat(this.$scope.sliderValue.toFixed(2))),this.bar.width((parseFloat(this.$scope.sliderValue)-parseFloat(this.$scope.min))/(parseFloat(this.$scope.max)-parseFloat(this.$scope.min))*100+"%"),this.$scope.sliderPreview=(this.$scope.sliderValue||"")+(this.$scope.unity||"")},onPress:function(a){this.width||(this.width=e.width()),this.offset||(this.offset=this.bar.offset().left),this.caculateNewValue(a),c(document).on(this.moveEvent,d.bind(this.caculateNewValue,this)),c(document).on(this.upEvent,d.bind(function(a){c(document).off(this.moveEvent),c(document).off(this.upEvent)},this))},caculateNewValue:function(a){var b;if((b=a.pageX?a.pageX-this.offset:a.originalEvent.touches[0].pageX-this.offset)<0)this.$scope.sliderValue=this.$scope.min,this.bar.width("0%");else if(b>this.width)this.$scope.sliderValue=this.$scope.max,this.bar.width("100%");else{var c=b/this.width;this.$scope.sliderValue=Math.round(c*(parseFloat(this.$scope.max)-parseFloat(this.$scope.min))/parseFloat(this.$scope.step))*parseFloat(this.$scope.step)+parseFloat(this.$scope.min)}this.$scope.$root.safeApply()}}))(a,{elem:e,attrs:f})},template:function(a,b){return b.template,'<div><span class="cursor"></span><span class="pointer"><span class="value" ng-bind-html="sliderPreview"></span></span></div>'}}))({name:"csSlider"})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csSmallDescription";b.module("oxFramework").addDirective(e,["oxProductLnk","oxWs","$sce",function(a,b,c){var d=a.extend({name:e,detailLevel:["list"],defineScope:{params:{desc:""}},process:function(){this.$scope.desc=this.$scope.product.smallDescription||b.helpers.reduce("long"===this.$scope.source?this.$scope.product.longdescription:this.$scope.product.description,this.$scope.maxChar),this.$scope.desc=c.trustAsHtml(this.$scope.desc)}});return{restrict:"A",replace:!1,scope:{pdtId:"=?",maxChar:"=?",detail:"=?",source:"@"},link:function(a,b,c){new d(a,{elem:b,attrs:c})},template:function(a,b){return b.template,'<div ng-bind-html="desc"></div>'}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csSnapshot",["oxClass","oxWs",function(b,d){return{restrict:"A",replace:!1,scope:{ngModel:"=",translation:"=?",captureWidth:"=?",captureHeight:"=?",outputFormat:"=?"},link:function(e,f,g){new(b.extend({name:"csSnapshot",defineScope:{capturing:!1,params:{},capture:function(){this.$scope.$root.$emit("csSnapshot-capture")},close:function(){this.$scope.$root.$emit("csSnapshot-close")},launch:function(){this.$scope.$root.$emit("csSnapshot-launchCam")}},rootScopeEvents:{"csSnapshot-close":"closeSnapshot","csSnapshot-capture":"capture","csSnapshot-launchCam":"launchCam"},translations:[{start:"Photographier avec ma webcam",capture:"Prendre la photo",close:"X"}],init:function(){a.navigator.getUserMedia=a.navigator.getUserMedia||a.navigator.webkitGetUserMedia||a.navigator.mozGetUserMedia||a.navigator.msGetUserMedia,this.$scope.captureWidth=this.$scope.captureWidth||1280,this.$scope.captureHeight=this.$scope.captureHeight||720,this.$scope.outputFormat=this.$scope.outputFormat||"image/png",this.canvas=document.createElement("canvas"),this.ctx=this.canvas.getContext("2d"),this.$scope.isCompatible=a.navigator.getUserMedia&&this.ctx&&!0,this.video=c("video",f).get(0),this.process(),this._super()},closeSnapshot:function(){this.stream&&this.stream.stop(),this.video.src="",this.$scope.capturing=!1},capture:function(){var a=this;this.video.src&&(this.canvas.width=this.$scope.captureWidth,this.canvas.height=this.$scope.captureHeight,this.ctx.drawImage(this.video,0,0),this.$scope.ngModel=d.uploadImage({imgData:a.canvas.toDataURL(e.outputFormat)}),this.$scope.ngModel.$promise.then(function(){a.$scope.$root.$emit("csSnapshot-data",a.$scope.ngModel)}),this.$scope.close())},launchCam:function(){this.$scope.capturing||this.lauchMediaStream(),this.$scope.capturing=!0},lauchMediaStream:function(){var b=this;a.navigator.getUserMedia&&a.navigator.getUserMedia({video:{mandatory:{minWidth:b.$scope.captureWidth,minHeight:b.$scope.captureHeight}},audio:!1},function(c){b.$stream=c,b.$video=document.querySelector("video"),b.$video.src=a.URL.createObjectURL(b.$stream)},function(b){a.console&&console.log("The following error occured: "+b)})},process:function(){}}))(e)},template:function(a,b){return b.template,'<div class="CS-captureZone" ng-show="isCompatible">
14<a ng-show="!capturing" class="btnmain startWebcam" ng-click="launch()"><span>{{translation.start}}</span></a><a ng-show="capturing" class="btnmain snapshot take" ng-click="capture()"><span>{{translation.capture}}</span></a><a ng-show="capturing" class="btnmain snapshot close" ng-click="close()"><span>{{translation.close}}</span></a><video autoplay ng-show="capturing" ></video></div>'}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csSocialShare",f=b.module("oxFramework");f.addDirective(e,["Directive","oxDirective","oxProductLnk","oxWs",function(b,d,g,h){return new(b.extend({scope:{socialNetwork:"<?",hasLike:"<?",url:"@?",twittertext:"@?",aspect:"@?",pinterestimg:"@?",textSharing:"<?"},link:function(b,h,i){new((f.isMobile?g:d).extend({name:e,translation:[{share:"Partager sur :"},{share:"Share on :"},{share:"Compartir en :"},{share:"Teilen auf :"},{share:"Condividi su :"},{share:"Deel op :"},{share:"Comparteix a :"},{share:"Compartilhe em :"}],bindConfigToScope:!0,defaultConfig:{socialNetwork:["facebook","twitter","pinterest"],hasLike:!1,pinterestimg:"",twittertext:"",aspect:"-square"},defineScope:{ctx:{finalUrl:""},sharing:function(a,b,c){this.sendGaEvent("Shared With",c),this._sharing(a,b,c)}},init:function(){this._super(),this.$scope.hasLike&&function(a,b,c){var d,e=a.getElementsByTagName(b)[0];a.getElementById(c)||(d=a.createElement(b),d.id=c,d.src="//connect.facebook.net/fr_FR/sdk.js#xfbml=1&version=v2.8&appId=405928789785152",d.async=!0,d.defer=!0,e.parentNode.insertBefore(d,e))}(document,"script","facebook-jssdk"),f.isMobile||this.getLink()},_sharing:function(a,b,c){var d=this;switch(c){case"facebook":d._sharingFacebook(a,b);break;case"twitter":d._sharingTwitter(a,b);break;case"pinterest":d._sharingPinterest(a,b)}},process:function(){this.getLink(!0)},getLink:function(b){if(this.$scope.url)this.$scope.ctx.finalUrl=this.$scope.url;else if(c("#maincontainer.sccatalog.itemlist").length>0){var d=c(h).closest(".oxcell")[0],e=c(d).find(".PBLink");this.$scope.ctx.finalUrl="http://"+a.location.hostname+"/"+c(e)[0].getAttribute("href")}else this.$scope.ctx.finalUrl=b?this.$scope.product.canonicalSEO:a.location.href},getTwitterText:function(){var a="";if(this.$scope.twittertext)a=this.$scope.twittertext;else if(c("#maincontainer.sccatalog.itemlist").length>0){var b=c(h).closest(".oxcell")[0];a=c(b).find(".PBItemName .PBMainTxt")[0].innerHTML}else a=document.title;if(a.length)return encodeURIComponent(a)},getPinterestImg:function(){if(this.$scope.pinterestimg)return this.$scope.pinterestimg;if(f.isMobile)return a.location.protocol+"//"+a.location.hostname+"/"+this.$scope.product.bigimg;if(c("#maincontainer.sccatalog.itemlist").length>0){var b=c(h).closest(".oxcell")[0];return a.location.protocol+"//"+a.location.hostname+"/"+c(b).find(".PBItemImg .imgthumbnail")[0].getAttribute("src")}return c("head").find('meta[property="og:image"]').attr("content")},_sharingFacebook:function(b,c){b.stopPropagation(),a.open("https://www.facebook.com/sharer.php?u="+c,"","width=600,height=500").moveTo(screen.width/2-300,screen.height/2-250)},_sharingTwitter:function(b,c){b.stopPropagation();var d=this.getTwitterText();a.open("https://twitter.com/intent/tweet?text="+d+" "+c,"","width=600,height=320").moveTo(screen.width/2-300,screen.height/2-160)},_sharingPinterest:function(b,c){b.stopPropagation();var d=this.getPinterestImg();a.open("https://www.pinterest.com/pin/create/button/?media="+d+"&url="+c,"","width=700,height=800").moveTo(screen.width/2-200,screen.height/2-400)}}))(b,{elem:h,attrs:i})}}))({name:e,hasExternalTemplate:!0,hasMobileTemplate:!0,type:"lazyDirective"})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csStarRating";b.module("oxFramework").addDirective(e,["Directive","oxDirective",function(a,b){return new(a.extend({transclude:!0,scope:{rating:"<",ratingMax:"<?",link:"<?",showScore:"<?",alt:"<?",hasTransclude:"<?"},link:function(a,c,d){new(b.extend({name:e,bindConfigToScope:!0,defaultConfig:{hasTransclude:!0},defineScope:{scCalculPercent:function(a){var b=a||0;return b=Math.max(0,Math.min(b,this.$scope.ratingMax||500)),(100*b/(this.$scope.ratingMax||500)).toString()+"%"},scCalculScore:function(a){var b=a||0;return b=Math.max(0,Math.min(b,this.$scope.ratingMax||500)),parseFloat(b/(this.$scope.ratingMax||500)*5).toFixed(1)}}}))(a,{elem:c,attrs:d})},template:function(a,b){return b.template,'<div class="OxRatingBk"> <div class="OxRatingGauge" ng-style="{width: scCalculPercent(rating)}"> <a ng-if="link" class="PBLink" href="{{link}}#ProductReviews" aria-label="{{alt}}"><img class="OxReviewBar" src="../Images/Transparent.gif" alt="{{alt}}"></a> <img ng-if="!link" class="OxReviewBar" src="../Images/Transparent.gif" alt="{{alt}}"> </div> </div><span ng-if="showScore" class="CS-PBReviewScoreContainer">
14 <span class="PBNumber PBReviewScore" itemprop="ratingValue">{{scCalculScore(rating)}}</span> <span class="PBNumber PBReviewScore">/</span> <span class="PBNumber PBReviewScore" itemprop="bestRating">5</span></span><span ng-if="hasTransclude" ng-transclude></span>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csSubscribeToNews";b.module("oxFramework").addDirective(e,["Directive","oxDirective","oxWs",function(b,c,d){return new(b.extend({scope:{},link:function(b,f,g){new(c.extend({name:e,translation:[{subscribeTitle:"Recevez notre lettre d'information",subscribePlaceHolder:"Email",subscribeLabel:"Je m'abonne",subscribeOK:"Ok"},{subscribeTitle:"Sign up to our newsletter",subscribePlaceHolder:"Email",subscribeLabel:"Subscribe",subscribeOK:"OK"},{subscribeTitle:"Recibe nuestra newsletter",subscribePlaceHolder:"Email",subscribeLabel:"Subscribe",subscribeOK:"OK"},{subscribeTitle:"Sign up to our newsletter",subscribePlaceHolder:"Email",subscribeLabel:"Subscribe",subscribeOK:"OK"},{subscribeTitle:"Iscriviti alla newsletter",subscribePlaceHolder:"Email",subscribeLabel:"Subscribe",subscribeOK:"OK"},{subscribeTitle:"Ontvang onze nieuwsbrief",subscribePlaceHolder:"Email",subscribeLabel:"Inschrijven",subscribeOK:"OK"},{subscribeTitle:"Sign up to our newsletter",subscribePlaceHolder:"Email",subscribeLabel:"Subscribe",subscribeOK:"OK"},{subscribeTitle:"Sign up to our newsletter",subscribePlaceHolder:"Email",subscribeLabel:"Subscribe",subscribeOK:"OK"}],defineScope:{fields:{},error:!1,subscribe:function(){this.$scope.error||a.location.assign("PBSubscribe.asp?newsradio=1&EMail="+d.helpers.encodeURIComponent(this.$scope.fields.email))}},watchers:{"fields.email":"watchEmail"},watchEmail:function(a){this.$scope.error=a&&!d.helpers.emailValidation(a)}}))(b,{elem:f,attrs:g})},template:function(a,b){return b.template,'<div class="CS-newstagline PBShortTxt">{{translation.subscribeTitle}}</div> <div class="CS-newsBox" ng-class="{error: error}"> <label ng-bind-html="translation.subscribeLabel"></label> <input type="text" ng-model="fields.email" placeholder="{{translation.subscribePlaceHolder}}"> <a class="btnmain" ng-click="subscribe()"><span>{{translation.subscribeOK}}</span></a> </div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csTestWsmanager",["oxLnk","$parse",function(a,b){return{restrict:"A",scope:{catId:"=",component:"@"},link:function(b,c,d){new(a.extend({detailLevel:[],init:function(){this.component=this.$scope.component,this._super(),this.wsManager.getProductBySku("AS1",["detail"])},defineScope:{},wsType:"category",process:function(){}}))(b)},template:'<div class="CS-blogContent">ok</div>'}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csUserFbSubscription",["oxWs","sharedData","getTranslation",function(b,c,d){return{restrict:"AC",replace:!0,scope:{redirectTo:"@",translation:"=?",appId:"="},template:'<div class="subscriptionFbBlock" ng-switch on="!!state"><div ng-switch-when="false"><div ng-click="fblogin()" class="fbLogin">{{translation.connexion}}</div></div><div ng-switch-when="true"><div>{{translation.welcome}}</div></div><div ng-show="scope.error"><span class="PBMsg">{{translation.error}}</span></div></div>',link:function(e,f,g){function h(){FB.getLoginStatus(function(a){"connected"===a.status?FB.api("/me",function(a){a.email?j(a):i()}):i()})}function i(){FB.login(function(a){a.authResponse&&FB.api("/me",function(a){j(a)})},{scope:"email, user_likes",return_scopes:!0})}function j(a){var c=b.subScribe({lastName:a.last_name,firstName:a.first_name,email:a.email});c.$promise.then(function(){e.user=a,1===c.result?l():e.error=!0})}function k(){"undefined"!=typeof FB?h():(a.fbAsyncInit=function(){FB.init({appId:e.appId,cookie:!0,xfbml:!0,version:"v2.1"}),h()},function(a,b,c){var d,e=a.getElementsByTagName(b)[0];a.getElementById(c)||(d=a.createElement(b),d.id=c,d.src="//connect.facebook.net/fr_FR/sdk.js",e.parentNode.insertBefore(d,e))}(document,"script","facebook-jssdk"))}function l(){e.$root.$emit("csUserFbSubscription",e.user)}e.translation||(d("csUserFbSubscription"),e.translation=c.translations.csUserFbSubscription),e.error=!1,e.state=!1,e.user=a.oxInfos&&a.oxInfos.oxUser,e.fblogin=function(){a.console&&console.log("Login Facebook"),k()}}}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csUserFidelityPoints";b.module("oxFramework").addDirective(e,["Directive","oxDirective","$parse","oxWs","oxUserHelper","$filter","$sce",function(a,b,d,f,g,h,i){return new(a.extend({transclude:!0,scope:{fidelityRatio:"<?"},link:function(a,i,j,k,l){new(b.extend({name:e,translation:[{classicTitle:"Votre fid\xe9lit\xe9 r\xe9compens\xe9e",discountTitle:"Remise fid\xe9lit\xe9 appliqu\xe9e",notConnected:"Connectez-vous \xe0 votre compte pour acc\xe9der \xe0 vos points de fid\xe9lit\xe9.",notConnectedBtn:"Je me connecte",applyDiscountBtn:"Je convertis mes points",loosenDiscountBtn:"J'annule ma remise",totalPoints:'Convertissez vos <span class="c-cs-user-fidelity-points__total-points">{{userPoints}} points</span> et profitez d\'une <span class="c-cs-user-fidelity-points__discount-text">remise imm\xe9diate de {{userDiscount}}</span>',connectedAndApplied:'Vous avez utilis\xe9 <span class="c-cs-user-fidelity-points__total-points">{{userPointsUsed}} points</span>
14, pour cette commande.<br> Votre nouveau solde est de <span class="c-cs-user-fidelity-points__total-points">{{userPointsLeft}} points</span>.'},{},{},{},{},{},{},{}],bindConfigToScope:!0,defaultConfig:{},defineScope:{ctx:{isConnected:!1,isUsed:!1,textMsg:"",textNote:"",textTitle:"",textBtn:"",textUsed:""}},init:function(){var a=this;this._super();var b=c("<div />").html(l());if(c(".fidelitytriggernotreached",b).length)return this.$scope.ctx.textTitle=this.$scope.translation.classicTitle,void(this.$scope.ctx.textMsg=c(".fidelitytriggernotreached",b).html());if(this.$scope.ctx.href=c("a",b).attr("href"),this.$scope.ctx.isConnected=g.isConnected(),this.$scope.ctx.isConnected){var e=f.getCart();e.$promise.then(function(){var b={userPoints:0,userDiscount:""},c=d("fidelity.userPoints")(e)||0,f=(d("cartFeatures.subTotalNet")(e),c*(a.$scope.fidelityRatio||1)),g=f,i=d("fidelity.userReward.pointsChecked")(e)||!1;a.$scope.ctx.isUsed=i,b.userPoints=c,b.userDiscount='<span cs-price price="'+g+'" class="c-cs-user-fidelity-points__user-discount"></span>',d("fidelity.userReward.pointsChecked")(e)?(a.$scope.ctx.status="discountApplied",b.userPointsUsed=e.cartFeatures.reductionAmount,b.userPointsLeft=b.userPoints-e.cartFeatures.reductionAmount,a.$scope.ctx.textTitle=a.$scope.translation.discountTitle,a.$scope.ctx.textMsg=h("template")(a.$scope.translation.connectedAndApplied,b),a.$scope.ctx.textBtn=a.$scope.translation.loosenDiscountBtn,a.elem.closest(".viewFidelity").addClass("viewFidelity--discount-applied")):(a.$scope.ctx.status="discountNotApplied",a.$scope.ctx.textTitle=a.$scope.translation.classicTitle,a.$scope.ctx.textMsg=a.$scope.translation.noPoints,b.userPoints>0&&(a.$scope.ctx.textMsg=h("template")(a.$scope.translation.totalPoints,b),a.$scope.ctx.textBtn=a.$scope.translation.applyDiscountBtn)),a.safeApply()})}else this.$scope.ctx.status="notConnected",this.$scope.ctx.textTitle=this.$scope.translation.classicTitle,this.$scope.ctx.textMsg=this.$scope.translation.notConnected,this.$scope.ctx.textBtn=this.$scope.translation.notConnectedBtn}}))(a,{elem:i,attrs:j})},template:function(a,b){return b.template,'\n <div class="c-cs-user-fidelity-points__inner-container">\n <div class="c-cs-user-fidelity-points__title PBSTitle">{{ctx.textTitle}}</div>\n <div class="c-cs-user-fidelity-points__msg PBMsg" cs-bind-html="ctx.textMsg"></div>\n <a class="c-cs-user-fidelity-points__cta btnmain" ng-if="ctx.textBtn" ng-href="{{ctx.href}}">\n <span>{{ctx.textBtn}}</span>\n </a>\n </div>\n '}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csUserSubscription";b.module("oxFramework").addDirective(e,["Directive","oxDirective","oxWs","$parse",function(b,c,d,f){return new(b.extend({scope:{redirectTo:"@",subscribeCondition:"<?"},link:function(b,g,h){new(c.extend({name:e,translation:[{firstname:"Pr\xe9nom :",name:"Nom :",email:"Email :",subscribeBtn:"S'inscrire",error:"Merci de corriger votre email.",welcome:"Merci ",confirmation:"Votre inscription a \xe9t\xe9 prise en compte."},{firstname:"First Name:",name:"Last Name:",email:"Email:",subscribeBtn:"Sign Up",error:"Por favor, comprueba el email.",welcome:"Thank you ",confirmation:"Your subscription has been saved."},{firstname:"Nombre:",name:"Apellido:",email:"Email:",subscribeBtn:"Reg\xedstrate",error:" Por favor, comprueba el email.",welcome:"Gracias ",confirmation:"Tu inscripci\xf3n ha sido realizada con \xe9xito."}],init:function(){h.subscribeCondition||(this.$scope.subscribeCondition=!0),this._super()},defineScope:{fields:{},error:!1,user:f("oxInfos.oxUser")(a),subscribe:function(){var a=this,b={lastname:this.$scope.fields.lastname,firstname:this.$scope.fields.firstname,email:this.$scope.fields.email},c=d.subScribe(b);c.$promise.then(function(){1===c.result?a.goToUrl(b):a.$scope.error=!0})}},goToUrl:function(b){this.$scope.redirectTo?a.location.assign(this.$scope.redirectTo):(this.$scope.user=b,this.$scope.$root.$emit("csUserSubscription",b))}}))(b,{elem:g,attrs:h})},template:function(a,b){return b.template,'<div class="subscriptionBlock" ng-switch on="!!user.email"><div class="subscriptionArea" ng-switch-when="false"> <div class="lz-name"> <div class="PBStatic">{{translation.name}}</div>
14 <span><input type="text" ng-model="fields.lastname"></span> </div> <div class="lz-firstname"> <div class="PBStatic">{{translation.firstname}}</div> <span><input type="text" ng-model="fields.firstname"></span> </div> <div class="lz-email" ng-class="{\'error\' : error}"> <div class="lz-email-title" class="PBStatic ">{{translation.email}}</div> <div class="lz-email-input"><input type="text" ng-model="fields.email"></div> </div> <div class="PBErrMsg" ng-if="error"> <span>{{translation.error}}</span> </div> <div class="lz-button" ng-show="subscribeCondition"> <a class="btnmain" ng-click="subscribe()"><span>{{translation.subscribeBtn}}</span></a> </div></div><div ng-switch-when="true" class="userWelcome"> <div class="PBSTitle">{{translation.welcome}}{{user.firstname}} {{user.lastname}},</div> <div class="PBShortTxt">{{translation.confirmation}}</div></div></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csVideoInMagicZoom";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk","oxProductHelper","ngDialog",function(b,f,g,h){return new(b.extend({scope:{pdtId:"<?",position:"<?",facetName:"@",videoType:"@",autoplay:"<?",forcedMiniature:"@?"},link:function(b,i,j){new(f.extend({name:e,detailLevel:["detail"],ctx:{jqZoom:{},jqScroll:{},jqNoZoom:{},zoomCase:"",video:{}},bindConfigToScope:!0,defaultConfig:{position:0,facetName:"video",videoType:"youtube",autoplay:0,forcedMiniature:!1},translation:[{video:"Voir la vid\xe9o"},{video:"Watch the video"},{video:"Ver el video"},{video:"Sehen Sie sich das Video an"},{video:"Guarda il video"},{video:"Bekijk de video"}],process:function(){this.isAvailable()},isAvailable:function(){var a=this;g.hasFacet(this.$scope.pdtId,this.$scope.facetName).then(function(){a.getVideoUrl()})},getVideoUrl:function(){var a=this;g.getFacetValues(this.$scope.pdtId,this.$scope.facetName,{onlyFirstValue:!0}).then(function(b){a.ctx.video.url=b[a.$scope.facetName].name,a.ctx.video.miniature=a.getUrlMiniature(b[a.$scope.facetName].renderValue),a.defineCase()})},getUrlMiniature:function(a){return a||(this.$scope.forcedMiniature?this.$scope.forcedMiniature:"/Files/0/player.png")},defineCase:function(){var b=this;a.oxFramework.isMobile?(c(this.elem).addClass("is-mobile"),this.setPopupVideo(!0)):a.MagicZoom&&c(".has-carousel",this.elem).length&&c(".c-ox-imgzoom__thumbs-carousel",this.elem).length?(this.setCustomScroll(),this.setCustomZoom(),a.MagicScroll.running(this.ctx.jqScroll.id)?this.resetZoomWithVideo():d.delay(function(){return b.defineCase()},100)):this.setPopupVideo()},setPopupVideo:function(a){var b=this;this.ctx.jqZoom.conf={width:"100%",height:300},this.createVideo();var d={};a?(this.ctx.jqNoZoom.dom=c(this.elem),d=c('<div class="c-cs-video-in-magic-zoom__miniature-container c-button c-button--medium c-button--secondary"> <img class="c-cs-video-in-magic-zoom__miniature-img" src="'.concat(this.ctx.video.miniature,'"> <span class="c-cs-video-in-magic-zoom__mobile-text">').concat(this.$scope.translation.video,"</span> </div>"))):(this.ctx.jqNoZoom.dom=c(".c-ox-product-detail .c-ox-product-detail__img-container"),d=c('<div class="c-cs-video-in-magic-zoom__miniature-container"> <img class="c-cs-video-in-magic-zoom__miniature-img" src="'.concat(this.ctx.video.miniature,'"> </div>'))),d.on("click",function(){h.open({template:b.ctx.video.html,plain:!0,className:"ngdialog ngdialog-theme-oxatis c-cs-video-in-magic-zoom__modal"})}),a?this.ctx.jqNoZoom.dom.html(d):this.ctx.jqNoZoom.dom.append(d)},setCustomZoom:function(){this.ctx.jqZoom.conf={width:this.$scope.product.imagelist.conf.imgWidth?this.$scope.product.imagelist.conf.imgWidth:300,height:this.$scope.product.imagelist.conf.imgHeight?this.$scope.product.imagelist.conf.imgHeight:300},this.ctx.jqZoom.dom=c(".c-ox-imgzoom__main .MagicZoom",this.elem),this.ctx.jqZoom.id=this.ctx.jqZoom.dom.attr("id")},setCustomScroll:function(){this.ctx.jqScroll.dom=c(".c-ox-imgzoom__thumbs-carousel.MagicScroll",this.elem),this.ctx.jqScroll.id=this.ctx.jqScroll.dom.attr("id")},resetZoomWithVideo:function(){var b=this;this.$scope.position||(this.ctx.jqScroll.structure='<a data-zoom-id="video" data-video="'.concat(this.ctx.videoUrl,'" class="mz-thumb"> <img src="').concat(this.ctx.video.miniature,'"></a>
14')),this.$scope.product.imagelist.images.forEach(function(a){b.ctx.jqScroll.structure+='<a data-zoom-id="'.concat(b.ctx.jqZoom.id,'" data-image="').concat(a.normal,'" href="').concat(a.zoom,'" class="mz-thumb">\n <img src="').concat(a.thumb,'">\n </a>')}),this.$scope.position&&(this.ctx.jqScroll.structure+='<a data-zoom-id="video" data-video="'.concat(this.ctx.videoUrl,'" href="#" class="mz-thumb"> <img src="').concat(this.ctx.video.miniature,'"></a>')),this.createVideo(),this.ctx.jqZoom.dom.after(this.ctx.video.dom),this.ctx.video.dom.hide(),a.MagicScroll.stop(this.ctx.jqScroll.id),a.MagicZoom.stop(this.ctx.jqZoom.id),this.ctx.jqScroll.dom.html(this.ctx.jqScroll.structure),d.delay(function(){a.MagicScrollOptions=a.MagicScrollOptions||{};var d=a.MagicScrollOptions.onReady;a.MagicScrollOptions.onReady=function(){if(d){for(var e=arguments.length,f=new Array(e),g=0;g<e;g++)f[g]=arguments[g];d.apply(b,f)}b.$scope.position||(a.MagicZoom.prev(b.ctx.jqZoom.id),b.launchVideo(),b.resetActiveThumb(c(".mz-thumb[data-video]",b.elem))),b.setCustomEvent()},a.MagicScroll.start(b.ctx.jqScroll.id),a.MagicZoom.start(b.ctx.jqZoom.id)},16)},createVideo:function(){if("youtube"===this.$scope.videoType){var a=this.$scope.autoplay?"?autoplay=1&":"?";this.ctx.video.url.split("watch?v=").length>1?this.ctx.video.url="".concat(this.ctx.video.url.split("watch?v=")[0],"/embed/").concat(this.ctx.video.url.split("watch?v=")[1]).concat(a,"enablejsapi=1"):this.ctx.video.url="https://www.youtube.com/embed/".concat(this.ctx.video.url.split("watch?v=")[0]).concat(a,"enablejsapi=1"),this.ctx.video.html='<iframe id="video-mz" width="'.concat(this.ctx.jqZoom.conf.width,'" height="').concat(this.ctx.jqZoom.conf.height,'" src="').concat(this.ctx.video.url,'" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>'),this.ctx.video.dom=c('<iframe id="video-mz" width="'.concat(this.ctx.jqZoom.conf.width,'" height="').concat(this.ctx.jqZoom.conf.height,'" src="').concat(this.ctx.video.url,'" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>'))}else if("local"===this.$scope.videoType){var b=this.$scope.autoplay?"autoplay muted":"";this.ctx.video.html='<video class="c-cs-video-in-magic-zoom__video-local" controls '.concat(b,'><source src="').concat(this.ctx.video.url,'" type="video/mp4"></video>'),this.ctx.video.dom=c('<video class="c-cs-video-in-magic-zoom__video-local" controls '.concat(b,'><source src="').concat(this.ctx.video.url,'" type="video/mp4"></video>'))}},launchVideo:function(){this.$scope.autoplay&&"youtube"===this.$scope.videoType&&this.ctx.video.dom[0].contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}',"*"),this.ctx.video.dom.show(),this.ctx.jqZoom.dom.hide()},hideVideo:function(){"youtube"===this.$scope.videoType&&this.ctx.video.dom[0].contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}',"*"),this.ctx.jqZoom.dom.show(),this.ctx.video.dom.hide()},setCustomEvent:function(){var a=this;"hover"===this.$scope.product.imagelist.conf.thumbnailChangeMode?(c('.mcs-item a[data-image][data-zoom-id="'.concat(this.ctx.jqZoom.id,'"]')).on("mouseenter",function(b){a.hideVideo(),a.resetActiveThumb(c(b.currentTarget),"mouseenter")}),c(".mcs-item a[data-video]").on("mouseenter",function(b){a.launchVideo(),a.resetActiveThumb(c(b.currentTarget),"mouseenter")})):(c('.mcs-item a[data-image][data-zoom-id="'.concat(this.ctx.jqZoom.id,'"]')).on("click",function(b){a.hideVideo(),a.resetActiveThumb(c(b.currentTarget),"click")}),c(".mcs-item a[data-video]").on("click",function(b){a.launchVideo(),a.resetActiveThumb(c(b.currentTarget),"click")}))},resetActiveThumb:function(a,b){"click"===b?a.attr("data-video")?(c(".mz-thumb",this.elem).removeClass("mz-thumb-selected"),a.addClass("mz-thumb-selected")):c(".mz-thumb[data-video]",this.elem).removeClass("mz-thumb-selected"):"mouseenter"===b&&(a.attr("data-video")?a.addClass("mz-thumb-selected"):c("[data-vi
14deo]",this.elem).removeClass("mz-thumb-selected"))}}))(b,{elem:i,attrs:j})}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){b.module("oxFramework").addDirective("csWbSlideshow",["$timeout","oxWs","sharedData",function(b,d,e){return{restrict:"A",replace:!1,scope:{wbId:"=",alsoSetTo:"@",thumbsWidth:"="},link:function(f,g,h){var i=c("<div>"),j=null;if(f.thumbsWidth=f.thumbsWidth||180,e.webblocks=e.webblocks||{},e.webblocks[f.wbId])setTimeout(function(){f.$root.$emit("csWebblock-data",f.wbId)},1);else{(e.webblocks[f.wbId]=d.getWebBlock({wbid:f.wbId})).$promise.then(function(){f.$root.$emit("csWebblock-data",f.wbId)})}var k=f.$root.$on("csWebblock-data",function(d,h){function l(a,b){var a=f.slides[u++];if(a){var c=new Image;c.onload=function(){m(c,a),l()},c.src=a.img}}function m(a,b){var c=document.createElement("canvas"),d=c.getContext&&c.getContext("2d"),e=a.height/a.width;if(d){c.width=f.thumbsWidth,c.height=c.width*e,d.drawImage(a,0,0,a.width,a.height,0,0,c.width,c.height),f.slides[b.id].vngColor=c.toDataURL("image/png");for(var g=d.getImageData(0,0,c.width,c.height),h=g.data,i=0,j=h.length;i<j;i+=4){var k=.34*h[i]+.5*h[i+1]+.16*h[i+2];h[i]=k,h[i+1]=k,h[i+2]=k}d.putImageData(g,0,0),f.slides[b.id].vngBW=c.toDataURL("image/png")}f.slides[b.id].ready=!0,f.$root.safeApply()}function n(){var a=parseInt(f.position)%f.slides.length+1;f.slides[a-1].ready&&(f.position=a)}function o(){p(),j=b(function(){n(),o()},1e3*t)}function p(){j&&b.cancel(j)}function q(a,b,c){"insertRule"in r?r.insertRule(a+"{"+b+"}",c):"addRule"in r&&r.addRule(a,b,c)}if(h==f.wbId&&f.contentWbId!=h){k(),f.position=1,e.webblocks[h].htmlContent&&!e.webblocks[h].error||(e.webblocks[h].htmlContent=""),i.html(e.webblocks[h].htmlContent);var r=function(){try{var a=document.createElement("style");return a.appendChild(document.createTextNode("")),document.head.appendChild(a),a.sheet}catch(a){return null}}();f.slides=[],c(".CS-slidePane-wrapper",g).css({height:0});var s=0,t=c(".ox-slider",i).attr("data-time")||6;if(c(".ox-slider-page",i).each(function(){this.style.height&&c(".CS-slidePane-wrapper",g).css({height:this.style.height});var a=this.style.backgroundImage||"",b=/url\(["']?([^\)"']+)["']?\)/gi.exec(a),d=this.style.backgroundColor;if(b){ 15var e=b[1].replace(/http:\/\/[^\/]+\//,""),h=(this.getAttribute("onclick")||"").replace(/(^document.location=')|(')/gi,"");f.slides.push({img:e,onclick:h,color:d||"#fff",id:s,ready:!1}),f.$root.safeApply(),r&&f.alsoSetTo&&d&&q(f.alsoSetTo+".slider"+(s+1),"background-color:"+d+";"),s++}}),!f.slides.length)return void(a.console&&console.log("no slides in webBlock"));var u=0;l(),c(".CS-slidePane-callToAction",g).on("mouseenter",p),c(".CS-slidePane-callToAction",g).on("mouseleave",o);var v=f.$watch("slides[0].ready",function(){v(),o()});f.goTo=function(){var b=f.slides[f.position-1];b.onclick&&a.location.assign(b.onclick)},f.alsoSetTo&&f.$watch("position",function(a,b){c(f.alsoSetTo).removeClass("slider"+b).addClass("slider"+a)})}})},template:' <div cs-tabs selected="position">\n <div class="CS-slidePane-wrapper">\n <div class="CS-slidePane" ng-repeat="slide in slides | orderBy:\'id\':false" ng-if="slide.ready">\n <div cs-pane style="background-image: url({{slide.img}}); background-color:{{slide.color}};"></div>\n </div>\n <div class="CS-slidePane-callToAction" ng-click="goTo()"></div>\n </div>\n <div class="CS-slideThumb-wrapper">\n <div class="CS-slideThumb" ng-repeat="slide in slides | orderBy:\'id\':false" ng-if="slide.ready" >\n <div cs-title>\n <div class="blacknWhite" style="background-image: url({{slide.vngBW}});"></div>\n <div class="color" style="background-image: url({{slide.vngColor}});"></div>\n </div>\n </div>\n </div>\n </div>'}}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csWebblock";b.module("oxFramework").addDirective(e,["Directive","oxDirective","$compile","oxWs",function(a,d,f,g){return new(a.extend({template:"<div></div>
15",scope:{wbId:"<?",wbName:"<?",sessionCache:"<?",preRender:"&",preCompile:"&",onEvent:"@?",target:"@?",targetTrigger:"<?",method:"@?"},link:function(a,h,i){new(d.extend({name:e,init:function(){if(i.onEvent){this.wait=!0;var a={};a[this.$scope.onEvent]="launchFromEvt",this.addRootScopeEvt(a)}this.$scope.target&&c(this.$scope.target).length?c(this.$scope.target)[this.$scope.method||"append"](h):this.$scope.target&&this.$scope.targetTrigger&&(this.wait=!0),this._super()},defineScope:{},rootScopeEvents:{"csWebblock-data":"remote"},watchers:{wbId:"launchFromWatch",wbName:"launchFromWatch"},remote:function(b,c){var d=this.$scope.requestValue;if(c==d&&a.contentWbId!=d&&this.sharedData.webblocks[d].htmlContent){this.sharedData.webblocks[d].htmlContent&&!this.sharedData.webblocks[d].error||(this.sharedData.webblocks[d].htmlContent=""),i.preRender&&(this.sharedData.webblocks[d].htmlContent=this.$scope.preRender({htmlContent:this.sharedData.webblocks[d].htmlContent}),this.$scope.$root.$emit("csWebblock-preRender",d)),h.addClass(this.sharedData.webblocks[d].cssClassList).html(this.sharedData.webblocks[d].htmlContent),this.$scope.contentWbId=d,this.$scope.preCompile();var e=this.$scope.$parent||this.$scope.$new();f(h.contents())(e),a.$root.$emit("csWebblock-compiled",d)}},launchFromEvt:function(){this.launch()||(this.wait=!1)},launchFromWatch:function(a){a&&!this.wait&&this.launch()},launch:function(){if(this.$scope.wbId)this.requestName="wbId",this.$scope.requestValue=this.$scope.wbId;else{if(!this.$scope.wbName)return!1;this.requestName="wbName",this.$scope.requestValue=this.$scope.wbName}return this.getData(),!0},getData:function(){var c=this,d=this.$scope.requestValue;if(c.sharedData.webblocks=this.sharedData.webblocks||{},this.sharedData.webblocks[d])a.$root.$emit("csWebblock-data",d);else{if(this.$scope.sessionCache&&this.localStorage.isSupported){var e=this.localStorage.get(d);if(e&&"undefined"!==e){var f=b.fromJson(e);if(!f.error)return this.sharedData.webblocks[d]=f,void a.$root.$emit("csWebblock-data",d)}}var h={};h[this.requestName]=d;var i=this.sharedData.webblocks[d]=g.getWebBlock(h);i.$promise.then(function(){i.htmlContent&&(i.htmlContent=c.oxHelpers.parseHtmlContent(i.htmlContent,c.$scope.wbId,{version:i.version})),c.$scope.sessionCache&&c.localStorage.set(d,b.toJson(i)),a.$root.$emit("csWebblock-data",d)})}}}))(a,{elem:h,attrs:i})}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a){a.module("oxFramework").addDirective("csZoneClick",[function(){return{restrict:"AEC",link:function(a,b,c){var d=$("a[href]",b).first(),e=d.attr("href");d.length&&""!==e&&(b.addClass("has-link"),d.click(function(a){a.stopPropagation()}),b.click(function(a){a.stopPropagation(),window.location.assign(e)}))}}}])}(window.angular),function(a,b,c,d){var e="csZoomDetail";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk","ngDialog","$parse",function(a,b,d,f){return new(a.extend({restrict:"A",scope:{pdtId:"<?",zoomTmpl:"@",ngdialogTheme:"@"},link:function(a,f,g){new(b.extend({name:e,detailLevel:["list","detail"],defineScope:{params:{},open:function(){var a=this;if(a.$scope.imagelist){var b=a.$scope.imagelist.images[a.$scope.imagelist.current],c=this.$scope.zoomTmpl||"default",e=this.$scope.ngdialogTheme||"default",f=this.popupTemplate[c]||this.popupTemplate.default;b&&b.zoom&&d.open({template:f,plain:!0,scope:a.$scope,className:"ngdialog-theme-"+e+" zoomImg "+c})}},navigate:function(a){var b=this.$scope.imagelist.current+a;b=Math.min(this.$scope.imagelist.images.length-1,b),b=Math.max(0,b),this.$scope.imagelist.images[b].youtube||(this.$scope.imagelist.current=b),this.chekNavigateBtn()}},init:function(){this._super()},watchers:{imagelist:{name:"watchImageList",deep:!0}},popupTemplate:{default:'<p><img cs-data-src="{{imagelist.images[imagelist.current].zoom}}"></p>',navigation:'<p><img cs-data-src="{{imagelist.images[imagelist.current].zoom}}"></p><div class="navButtons"><a ng-click="navigate(-1)" ng-class="{\'toHide\':leftHide}" class="leftBtn btnmain"><span><</span></a><a ng-click="navigate(1)" ng-class="{\'toHide\':rightHide}" class="rightBtn btnmain"><span>></span></a></div>',flexNavigation:'<div ng-if="imagelist.images.length > 1" ng-click="navigate(-1)" ng-class="{inactive: leftHide}" class="lz-zoom-left lz-zoom-arrow"><i class="fa fa-angle-left"></i></div><div class="lz-zoom-img" ng-style="{\'background-image\' : \'url(\' + imagelist.images[imagelist.current].zoom + \')\' }"><img cs-data-src="{{imagelist.images[imagelist.current].zoom}}"></div><div ng-if="imagelist.images.length > 1" ng-click="navigate(1)" ng-class="{inactive: rightHide}" class="lz-zoom-right lz-zoom-arrow"><i class="fa fa-angle-right"></i></div>'},chekNavigateBtn:function(){this.$scope.leftHide=!1,this.$scope.rightHide=!1,0===this.$scope.imagelist.current&&(this.$scope.leftHide=!0),this.$scope.imagelist.current===this.$scope.imagelist.images.length-1&&(this.$scope.rightHide=!0)},watchImageList:function(){var a=this;a.img=a.$scope.imagelist&&a.$scope.imagelist.images&&a.$scope.imagelist.images[a.$scope.imagelist.current],a.img&&(this.$scope.hasZoom=a.img.zoom,a.tempNode&&a.tempNode.remove(),a.tempNode=null,a.img&&a.img.youtube?(a.$scope.style={"background-image":"none"},a.tempNode=c(a.img.youtube.replace(/#W#/g,a.width).replace(/#H#/g,a.height)),c("div.zoom",f).append(a.tempNode),a.$scope.$root.safeApply()):(a.$scope.style={"background-image":"url("+a.img.normal+")"},a.$scope.$root.safeApply()),this.chekNavigateBtn())},process:function(){var a=this;a.$scope.imagelist=a.$scope.product.imagelist;var b,d,e=c(".zoom",f);this.width=e.outerWidth(),this.height=e.outerHeight(),e.off("mouseenter mousemove mouseout").mouseenter(function(){if(a.img&&a.img.zoom){var c=new Image;c.onload=function(){b=c.width-a.width,d=c.height-a.height,a.$scope.style={"background-image":"url("+a.img.zoom+")","background-size":"auto"},a.$scope.$root.safeApply()},c.src=a.img.zoom}}).mousemove(function(f){if(a.img&&a.img.zoom){var g=b*(f.pageX-c(this).offset().left)/a.width,h=d*(f.pageY-c(this).offset().top)/a.height;e.css({"background-position":-g.toFixed(0)+"px "+-h.toFixed(0)+"px"})}}).mouseout(function(){a.img&&a.img.zoom&&(e.css({"background-position":"center center"}),a.$scope.style={"background-image":"url("+a.img.normal+")"},a.$scope.$root.safeApply())})}}))(a,{elem:f,attrs:g})},template:function(a,b){return b.template,'<div><div class="zoom" ng-class="{\'no-zoom\': !hasZoom}" ng-style="style" ng-click="open()"></div></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csZoomList";b.module("oxFramework").addDirective(e,["Directive","oxProductLnk",function(a,b){return new(a.extend({restrict:"A",scope:{pdtId:"<?",maxElements:"<?",orientation:"@",addVideoFrom:"@",minElements:"<?"},link:function(a,c,f){new(b.extend({name:e,detailLevel:["list","detail"],addVideo:!1,defineScope:{params:{}
15,select:function(a){this.$scope.imgs&&(this.$scope.imgs.current=a),this.$scope.$root.$emit(e+"-change",this.$scope.pdtId,a)}},init:function(){switch(this.$scope.addVideoFrom){case"longdescription":this.addVideo="longdescription",this.detailLevel=["detail"];break;case"shortdescription":this.addVideo="description",this.detailLevel=["detail"];break;case"comment":this.addVideo="taskcomment",this.detailLevel=["detail","extra"];break;default:this.addVideo=!1,this.detailLevel=["detail"]}this._super()},process:function(){var a=this;this.$scope.minElements=parseInt(this.$scope.minElements||2),this.$scope.imgs=this.$scope.product.imagelist,this.$scope.imgs.images=this.$scope.imgs.images||[],this.addVideo&&this.addVideoFn(),this.$scope.$root.$emit(e+"-data",this.$scope.pdtId,this.$scope.imgs.images.length),setTimeout(function(){a.$scope.select(a.$scope.imgs.current)},100)},addVideoFn:function(){for(var a,b=[],c=/(?:(?:youtube\.com)|(?:youtu\.be))[^'"=]+[\/=]([\w-_]+)/gi;a=c.exec(this.$scope.product[this.addVideo]);)b.push(a[1]);b=d.uniq(b),d.each(b,function(a){this.$scope.imgs.images.push({normal:"http://img.youtube.com/vi/"+a+"/maxresdefault.jpg",thumb:"http://img.youtube.com/vi/"+a+"/mqdefault.jpg",youtube:'<iframe type="text/html" width="#W#" height="#H#" allowfullscreen="allowfullscreen" src="http://www.youtube.com/embed/'+a+'?controls=1&autoplay=1&rel=0&fs=1&modestbranding=1&showinfo=0" frameborder="0"/>'})},this)}}))(a,{elem:c,attrs:f})},template:function(a,b){var c="";switch(b.template){case"background-image":c='<div cs-carrousel max-elements="maxElements" orientation="'+b.orientation+'" ng-if="imgs.images.length >= minElements"><div cs-carrousel-pane ng-repeat="img in imgs.images" ng-click="select($index)" ng-class="{active: imgs.current == $index}"><div class="lz-bgZone" ng-style="{\'background-image\': \'url({{img.thumb}})\'}" ><div ng-if="img.youtube" class="play"></div></div></div>';break;default:c='<div cs-carrousel max-elements="maxElements" orientation="'+b.orientation+'" ng-if="imgs.images.length >= minElements"><div cs-carrousel-pane ng-repeat="img in imgs.images" ng-click="select($index)" ng-class="{active: imgs.current == $index}"><img src="{{img.thumb}}" ><div ng-if="img.youtube" class="play"></div></div></div>'}return c}}))({name:e})}])}(window,window.angular,window.angular.element,window._),function(a,b,c,d){var e="csZoomSimple";b.module("oxFramework").addDirective(e,["Directive","oxDirective","ngDialog",function(a,b,d){return new(a.extend({restrict:"A",replace:!0,scope:{img:"<?",bigImg:"<?"},link:function(a,f,g){new(b.extend({name:e,bindConfigToScope:!0,defaultConfig:{},defineScope:{ctx:{},open:function(){d.open({template:'<p><img class="zoomFullview" cs-data-src="{{bigImg || img}}"></p>',plain:!0,scope:this.$scope,className:"ngdialog-theme-default zoomImg"})}},init:function(){this._super(),this.process()},process:function(){if(this.$scope.img){this.safeApply();var a,b,d,e,f=c(this.elem),g=this;f.mouseenter(function(){var c=new Image;c.onload=function(){d=f.width(),e=f.height(),a=c.width-d,b=c.height-e,f.css({"background-size":"auto"}),g.$scope.bigImg&&f.css({"background-image":"url("+g.$scope.bigImg+")"})},c.src=g.$scope.bigImg||g.$scope.img}).mousemove(function(g){var h=a*(g.pageX-c(this).offset().left)/d,i=b*(g.pageY-c(this).offset().top)/e;f.css({"background-position":-h.toFixed(0)+"px "+-i.toFixed(0)+"px"})}).mouseout(function(){f.css({"background-size":"contain","background-position":"center center"}),g.$scope.bigImg&&f.css({"background-image":"url("+g.$scope.img+")"})})}}}))(a,{elem:f,attrs:g})},template:function(a,b){return b.template,'<div class="CS-zoom" ng-click="open()" style="background: url({{img}}) no-repeat center center; background-size: contain;"></div>'}}))({name:e})}])}(window,window.angular,window.angular.element,window._);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.