1/** 2 * jquery-match-height 0.7.2 by @liabru 3 * http://brm.io/jquery-match-height/ 4 * License: MIT 5 */ 6!function(factory){"use strict";"function"==typeof define&&define.amd?define(["jquery"],factory):"undefined"!=typeof module&&module.exports?module.exports=factory(require("jquery")):factory(jQuery)}(function($){var _previousResizeWidth=-1,_updateOnLoadDone=!1,_updateTimeout=-1,_lastUid=0,_debounceTimeouts={},_parse=function(value){return parseFloat(value)||0},_rows=function(elements){var lastTop=null,rows=[];return $(elements).each(function(){var $that=$(this),top=$that.offset().top-_parse($that.css("margin-top")),lastRow=rows.length>0?rows[rows.length-1]:null;null===lastRow?rows.push($that):Math.floor(Math.abs(lastTop-top))<=1?rows[rows.length-1]=lastRow.add($that):rows.push($that),lastTop=top}),rows},_parseOptions=function(options){var opts={byRow:!0,property:"height",target:null,remove:!1,apply:!0};return"object"==typeof options?$.extend(opts,options):("boolean"==typeof options?opts.byRow=options:"remove"===options&&(opts.remove=!0),opts)},_apply=function(elements,options,considerParents){if(_updateOnLoadDone){var opts=_parseOptions(options),$elements=$(elements),rows=[$elements];if(matchHeight._maintainScroll)var scrollTop=$(window).scrollTop(),htmlHeight=$("html").outerHeight(!0);var $hiddenParents=$elements.parents().filter(":hidden");$hiddenParents.each(function(){var $that=$(this);$that.data("style-cache",$that.attr("style"))}),$hiddenParents.css("display","block"),opts.byRow&&!opts.target&&($elements.each(function(){var $that=$(this),display=$that.css("display");"inline-block"!==display&&"flex"!==display&&"inline-flex"!==display&&(display="block"),$that.data("style-cache",$that.attr("style")),$that.css({display:display,"padding-top":"0","padding-bottom":"0","margin-top":"0","margin-bottom":"0","border-top-width":"0","border-bottom-width":"0",height:"100px",overflow:"hidden"})}),rows=_rows($elements),$elements.each(function(){var $that=$(this);$that.attr("style",$that.data("style-cache")||"")})),$.each(rows,function(key,row){var $row=$(row),targetHeight=0;if(opts.target)targetHeight=opts.target.outerHeight(!1);else{if(opts.byRow&&$row.length<=1)return void $row.css(opts.property,"");$row.each(function(){var $that=$(this),style=$that.attr("style"),display=$that.css("display");"inline-block"!==display&&"flex"!==display&&"inline-flex"!==display&&(display="block");var css={display:display};css[opts.property]="",$that.css(css);var outerHeight=$that.outerHeight(!1);outerHeight>targetHeight&&(targetHeight=outerHeight),style?$that.attr("style",style):$that.css("display","")})}$row.each(function(){var $that=$(this),verticalPadding=0;opts.target&&$that.is(opts.target)||("border-box"!==$that.css("box-sizing")&&(verticalPadding+=_parse($that.css("border-top-width"))+_parse($that.css("border-bottom-width")),verticalPadding+=_parse($that.css("padding-top"))+_parse($that.css("padding-bottom"))),$that.css(opts.property,targetHeight-verticalPadding+"px"))})}),$hiddenParents.each(function(){var $that=$(this);$that.attr("style",$that.data("style-cache")||null)}),matchHeight._maintainScroll&&$(window).scrollTop(scrollTop/htmlHeight*$("html").outerHeight(!0)),considerParents&&matchHeight._applyParents(elements)}},_update=function(event){event=event||{};var debounceTimeout=_debounceTimeouts._update||{timeoutId:-1,events:[]},timeoutId=debounceTimeout.timeoutId||-1;-1!==timeoutId&&window.clearTimeout(timeoutId);var eventType=event.type||"unknown",existsInList=!1;$.each(debounceTimeout.events,function(index,event){var known_event_type=event.type||"unknown";if(eventType===known_event_type)return existsInList=!0,!1}),!1===existsInList&&debounceTimeout.events.push(event);debounceTimeout.timeoutId=window.setTimeout(function(){var events;events=debounceTimeout.events,!1===Array.isArray(events)&&(events=[events]),matchHeight._beforeUpdate&&$.each(events,function(index,event){matchHeight._beforeUpdate(event,matchHeight._groups)}),$.each(matchHeight._groups,function(){matchHeight._apply(this.elements,this.options)}),matchHeight._afterUpdate&&$.each(events,function(index,event){matchHeight._afterUpdate(event,matchHeight._groups)}),_debounceTimeouts._update=null},50),_debounceTimeouts._update=debounceTimeout};$.fn.matchHeight=function(options){var opts=_parseOptions(options),elements=this,apply=!1!==(opts.apply||!1);if(opts.apply=!0,opts.remove)return this.css(opts.property,""),$.each(matchHeight._groups,function(key,group){group.elements=group.elements.not(elements)}),$.each(elements,function(index,element){var $that=$(element),linkedGroups=$that.data("match-height-groups")||[];$.each(linkedGroups,function(index,group){group.elements=group.elements.not(elements)}),linkedGroups=linkedGroups.filter(function(group){return(group.length||0)>0}
6),$that.data("match-height-groups",linkedGroups)}),matchHeight._groups=matchHeight._groups.filter(function(group){return(group.elements.length||0)>0}),this;if(this.length<=1&&!opts.target)return this;matchHeight._groups=matchHeight._groups.filter(function(group){let identicalElements=0===group.elements.not(elements).length,identicalOptions=Object.entries(group.options).sort().toString()===Object.entries(opts).sort().toString();return!(identicalElements&&identicalOptions)});var new_group={elements:this,options:opts};return matchHeight._groups.push(new_group),$.each(elements,function(index,element){var $that=$(element),linked_groups=$that.data("match-height-groups")||[];linked_groups.push(new_group),$that.data("match-height-groups",linked_groups)}),apply&&matchHeight._apply(this,opts),this},$.fn.removeMatchHeight=function(){return this.matchHeight({remove:!0})},$.fn.matchHeightElementOrParents=function(){return $.fn.matchHeight._applyElementsOrParents(this),this},$.fn.registerMatchHeight=function(options){return(options=options||{}).apply=!1,options.remove=!1,this.matchHeight(options)};var matchHeight=$.fn.matchHeight;matchHeight.version="0.7.2",matchHeight._groups=[],matchHeight._throttle=80,matchHeight._maintainScroll=!1,matchHeight._beforeUpdate=null,matchHeight._afterUpdate=null,matchHeight._rows=_rows,matchHeight._parse=_parse,matchHeight._parseOptions=_parseOptions,matchHeight._applyElementsOrParents=function(elements){var groups;if(elements.length||Array.isArray(elements)||(elements=[elements]),$.each(elements,function(index,element){var $that=$(element);if((groups=(groups=$that.data("match-height-groups")||[]).filter(function(group){return group&&void 0!==group.elements}))&&groups.length>0)return!1}),groups&&groups.length>0){var firstGroup=groups.pop();_apply(firstGroup.elements,firstGroup.options,!0)}else matchHeight._applyParents(elements)},matchHeight._applyParents=function(elements){var groups;$.each(elements,function(index,element){var parents=$(element).parents();if($.each(parents,function(parent_index,parent_el){var $parent_el=$(parent_el);if(groups=(groups=$parent_el.data("match-height-groups")||[]).length>0?groups:null)return!1}),groups)return!1}),groups&&$.each(groups,function(key,group){_apply(group.elements,group.options,!0)})},matchHeight._applyByGroups=function(groups,considerParents){$.each(groups,function(index,group){matchHeight._apply(group.elements,group.options,considerParents)})},matchHeight._apply=function(elements,options,considerParents){var shadowIds=[];$.each(elements,function(index,element){var $element=$(element),shadow_id=$element.data("match-height-id")||null;null===shadow_id&&(shadow_id="shadow_uid_"+ ++_lastUid,$element.data("match-height-id",shadow_id)),shadowIds.push(shadow_id)});var timeoutIndex="_apply_"+JSON.stringify([shadowIds,options]),timeoutId=_debounceTimeouts[timeoutIndex]||-1;-1!==timeoutId&&window.clearTimeout(timeoutId);return _debounceTimeouts[timeoutIndex]=window.setTimeout(function(){_apply(elements,options,considerParents),_debounceTimeouts[timeoutIndex]=-1},50),this},matchHeight._applyDataApi=function(){var groups={};$("[data-match-height], [data-mh]").each(function(){var $this=$(this),groupId=$this.attr("data-mh")||$this.attr("data-match-height");groups[groupId]=groupId in groups?groups[groupId].add($this):$this}),$.each(groups,function(){this.matchHeight(!0)})},matchHeight._update=function(throttle,event){if(_updateOnLoadDone){if(event&&"resize"===event.type){var windowWidth=$(window).width();if(windowWidth===_previousResizeWidth)return;_previousResizeWidth=windowWidth}throttle?-1===_updateTimeout&&(_updateTimeout=setTimeout(function(){_update(event),_updateTimeout=-1},matchHeight._throttle)):_update(event)}},$(matchHeight._applyDataApi);var on=$.fn.on?"on":"bind",onLoad=function(event){_updateOnLoadDone||(_updateOnLoadDone=!0,matchHeight._update(!1,event))};$(window)[on]("load",onLoad),$(window)[on]("resize orientationchange",function(event){matchHeight._update(!0,event)}),window.setTimeout(onLoad,5e3)}),function($){T.Commons=T.Commons||{},$.extend(T.Commons,{AnchorLinkObserver:{timer:null,observer:null,observing:!1,startObserving(){let self=T.Commons.AnchorLinkObserver;
6self.isAnchorLink()&&!self.observing&&(self.observing=!0,window.MutationObserver?(self.observer=new MutationObserver(self.domMutated),self.observer.observe(document.documentElement,{childList:!0,subtree:!0,attributes:!1})):document.documentElement&&document.documentElement.addEventListener&&document.documentElement.addEventListener("DOMNodeInserted",self.observeDomModified,!0),self.observerHandler(!1))},stopObserving(){let self=T.Commons.AnchorLinkObserver;self.observing&&(self.observing=!1,window.MutationObserver?self.observer.disconnect():document.documentElement.removeEventListener("DOMNodeInserted",self.observeDomModified))},isAnchorLink(){let hash=window.location.hash;return hash.length>0&&hash.indexOf("#/")<0},domMutated(mutations){let mustSetHashAgain=!1,docViewTop=$(window).scrollTop();mutations.forEach(function(mutation){$(mutation.target).offset().top<docViewTop&&(mustSetHashAgain=!0)}),mustSetHashAgain&&T.Commons.AnchorLinkObserver.observerHandler(!0)},observeDomModified(event){var docViewTop=$(window).scrollTop();$(event.currentTarget).offset().top<docViewTop&&T.Commons.AnchorLinkObserver.observerHandler(!0)},observerHandler(modified){let self=T.Commons.AnchorLinkObserver;self.timer&&clearTimeout(self.timer),self.timer=setTimeout(()=>{const self=T.Commons.AnchorLinkObserver,hash=window.location.hash,$element_to_scroll_to=$(hash);$element_to_scroll_to.length&&$element_to_scroll_to.get(0).scrollIntoView(),window.location.hash=hash,self.stopObserving()},modified?500:2e3)}}})}(jQuery),function($){T.Commons=T.Commons||{},$.extend(T.Commons,{ControllerInitializer:{register(controllerComponent,controllerConfigSelector){T.Utils.registerContentInitializer(function(container){T.Commons.ControllerInitializer._processConfiguration(container,controllerComponent,controllerConfigSelector)},!1)},_processConfiguration(container,controllerComponent,controllerConfigSelector){$(container).find(`[${controllerConfigSelector}]`).addBack(`[${controllerConfigSelector}]`).each(function(index,ctx){let ctrl;const $ctx=$(ctx),controllerConfigurations=controllerConfigSelector.replace(/^(data-)?(.*)/,"$2").replace(/-([a-z])/g,match=>match[1].toUpperCase());let controllers=$ctx.data(controllerConfigurations);if("object"!=typeof controllers)return!1;const updateControllers=JSON.parse($ctx.attr(controllerConfigSelector));if(updateControllers.length>=controllers.length)for(let newCtrl of updateControllers){let found=!1;for(ctrl of controllers)newCtrl.id&&newCtrl.id==ctrl.id&&(ctrl.configuration=newCtrl.configuration,found=!0);newCtrl.id&&!found&&(controllers=controllers.concat(newCtrl))}for(ctrl of controllers){var configuration;const{controller:controller}=ctrl,decorators=ctrl.decorators?ctrl.decorators.split(","):void 0;if("string"==typeof ctrl.configuration){const configAttr=ctrl.configuration;let configData=$ctx.attr(configAttr);configData||(configData=$ctx.find(`[${configAttr}]`).attr(configAttr)),configData&&(configuration=JSON.parse(configData))}else({configuration:configuration}=ctrl);if(configuration){const controllerConfig=controller.charAt(0).toLowerCase()+controller.slice(1)+"Configuration";$ctx.data(controllerConfig,configuration)}const moduleId=ctrl["data-t-id"];if(moduleId){const mod=T.Utils.application.getModuleById(moduleId);mod.initialize&&mod.initialize(!0);continue}const tId=$ctx.attr("data-t-id");tId&&$ctx.removeAttr("data-t-id");const module=T.Utils.application.registerModule(ctx,controllerComponent,decorators);T.Utils.application.start([module]),ctrl["data-t-id"]=$ctx.attr("data-t-id"),tId&&$ctx.attr("data-t-id",tId)}})}}})}(jQuery),function($){T.Commons=T.Commons||{},$.extend(T.Commons,{LazyLoadingInitializer:{initLazyLoadingImages(container){$(container).find("img").each((index,element)=>{let $element=$(element);const $imagesSources=$element.siblings("source");let dataSrcSet=!1;$imagesSources.length>0&&(dataSrcSet=$imagesSources.first()[0].hasAttribute("data-srcset")),dataSrcSet&&($element.attr("loading","lazy"),$imagesSources.each((index,elem)=>{let $elem=$(elem);const dataSrcset=$elem.data("srcset");$elem.attr("srcset",dataSrcset)})),$element[0].naturalHeight>1&&$element.addClass("lazyloaded"),$element.on("load",ev=>{$(ev.currentTarget).addClass("lazyloaded")})})},disableLazyLoading($images){$images.attr("loading","eager")}}})}(jQuery),function($){T.Commons=T.Commons||{},window.performance&&window.mbmdPerformanceMode?$.extend(T.Commons,{PerformanceAnalyser:{measures:[],modules:{organisms:0,molecules:0,atoms:0,"images (part of atoms)":0,unknown:0,all:0},moduleNames:{},cleanUpMeasures(){performance.clearMeasures()},startPerformanceMark(markName){performance.mark(markName)},endPerformanceMark(measureObj){performance.mark(measureObj.markName),performance.measure(measureObj.measureName,measureObj.startMark,measureObj.markName),this.measures.push(measureObj.measureName)}
6,trackComponents(ctx){const moduleClass=ctx.className,dataAttrs=ctx.dataset;let moduleType="";if(moduleClass.indexOf("a-")>=0?(moduleType="atom",this.modules.atoms++,moduleClass.indexOf("a-image")>=0&&this.modules["images (part of atoms)"]++):moduleClass.indexOf("m-")>=0?(moduleType="molecule",this.modules.molecules++):moduleClass.indexOf("o-")>=0?(moduleType="organism",this.modules.organisms++):(moduleType="unknown",this.modules.unknown++),this.modules.all++,dataAttrs){let tName=dataAttrs.tName;if(tName){let moduleName=tName.toLowerCase();this.moduleNames[moduleName]?this.moduleNames[moduleName].occurrence++:this.moduleNames[moduleName]={"Type of Module":moduleType,occurrence:1}}}},logOutPerformanceData(){let componentName,calcResult,eventName="",data=[],uniqueMeasures=this.measures.filter((value,index,self)=>self.indexOf(value)===index);for(let i=0;i<uniqueMeasures.length;i++)calcResult=this._calculateTimeForExecution(uniqueMeasures[i]),componentName=this._parseComponentName(uniqueMeasures[i]),eventName=`${this._parseEventName(uniqueMeasures[i])} (${calcResult.count})`,this.moduleNames[componentName]&&(componentName=`${componentName} (${this.moduleNames[componentName].occurrence})`),data.push({"Component Name":componentName,"Event Name":eventName,"Event Execution Time (total in msec)":calcResult.execTime});this._log(data,"table")},logOutComponentsData(){this._log(this.modules,"table")},_calculateTimeForExecution(measureName){let sum=0,entries=performance.getEntriesByName(measureName);if(entries.length>0)for(let i=0;i<entries.length;i++)sum+=entries[i].duration;return{execTime:sum,count:entries.length}},_parseComponentName:measure=>measure.match(/module-(.*)[-*]/)[1],_parseEventName:measure=>measure.match(/module-.*-(.*)/)[1],_log(message,type){"table"===type&&console.table?console.table(message):console.log(JSON.stringify(message,null,2))}}}):$.extend(T.Commons,{PerformanceAnalyser:{cleanUpMeasures(){},startPerformanceMark(markName){},endPerformanceMark(measureObj){},trackComponents(ctx){},logOutPerformanceData(){},logOutComponentsData(){},isPerformanceModeSupported:()=>!!window.performance,isPerformanceModeEnabled:()=>!!window.mbmdPerformanceMode}})}(jQuery),function($){T.Commons=T.Commons||{},$.extend(T.Commons,{ScriptLoader:{loadOnce(src,callback,check_object,additionalAttribute){const self=T.Commons.ScriptLoader;return self.registerCallback(src,callback),self.registerObjectNameToCheck(src,check_object),!!self.isCurrentlyLoading(src)||(self.scriptAlreadyExists(src)?(self.executeCallbacks(src),!1):(self.setCurrentlyLoading(src),self.appendScripToBody(src,additionalAttribute),!0))},loadOnceGoogleRecaptchaAPI(siteKey,locale,isEnterprise){isEnterprise?T.Commons.ScriptLoader.loadOnce(`https://www.google.com/recaptcha/enterprise.js?render=${siteKey}&hl=${locale}`):T.Commons.ScriptLoader.loadOnce(`https://www.google.com/recaptcha/api.js?render=${siteKey}&hl=${locale}`)},loadOnceIframeResizerLibrary(callback){T.Commons.ScriptLoader.loadOnce(`${window.jsBasePath}libs/iframeResizer/iframe.js`,callback,"iFrameResize")},loadOnceMagic360Library(callback){T.Commons.ScriptLoader.loadOnce(`${window.jsBasePath}libs/magic360/magic360.js`,callback,"Magic360")},loadOnceEmpathy(empathyUri,callback){T.Commons.ScriptLoader.loadOnce(empathyUri,callback)},loadOnceScrollytellingLibrary(callback){T.Commons.ScriptLoader.loadOnce(`${window.jsBasePath}scrollytelling.js`,callback)},loadOnceDataTablesLibrary(callback){T.Commons.ScriptLoader.loadOnce(`${window.jsBasePath}datatables.js`,callback)},loadOnceZoovuAssistant(product_adviser_id){T.Commons.ScriptLoader.loadOnce(`https://api-tiger.zoovu.com/api/v1/launchers/xdmvvz/${product_adviser_id}`)},loadOnceYouTubeLibrary(callback){T.Commons.ScriptLoader.loadOnce("//www.youtube.com/iframe_api",()=>{YT.ready(callback)},"YT")},loadOnceVimeoLibrary(callback){T.Commons.ScriptLoader.loadOnce("https://player.vimeo.com/api/player.js",callback,"Vimeo")},loadOnceCliplisterLibrary(callback){T.Commons.ScriptLoader.loadOnce(`${window.jsBasePath}libs/cliplister/cliplister.js`,callback,"Cliplister")},loadOnceBaiduMapsApi(key){const self=T.Commons.ScriptLoader;window.onBaiduMapsApiLoaded=(()=>{self.loadOnce(`${window.jsBasePath}baidusupport.js`,()=>{T.Utils.application.getModuleById(1)._events.emit("baiduMaps:loaded")})}),self.loadOnce(`https://api.map.baidu.com/api?v=2.0&ak=${key}&callback=onBaiduMapsApiLoaded`)},google_maps_api_loading:!1,google_maps_api_modules:[],loadOnceGoogleMapsApi(jsonConfig,forceSingleLoading){jsonConfig.key&&(delete jsonConfig.client,delete jsonConfig.channel);const self=T.Commons.ScriptLoader;if(!forceSingleLoading&&self.google_maps_api_loading)return;
6let targetUrl="https://maps.googleapis.com/maps/api/js?";$.each(jsonConfig,(name,value)=>{value&&(targetUrl+=`&${name}=${value}`)});let modules=self.google_maps_api_modules.slice(0)||[];const richMarkerIndex=modules.indexOf("richmarker"),loadRichMarker=-1!==richMarkerIndex;loadRichMarker&&modules.splice(richMarkerIndex,1),modules.length>0&&(targetUrl+=`&libraries=${modules.join(",")}`),window.onGoogleMapsApiLoaded=(()=>{if(loadRichMarker){const src=`${window.jsBasePath}richmarker.js`,callback=()=>T.Utils.application.getModuleById(1)._events.emit("googleMaps:richmarker:loaded");self.loadOnce(src,callback)}T.Utils.application.getModuleById(1)._events.emit("googleMaps:loaded",{googleMaps:window.google.maps,jsonConfig:jsonConfig})}),$(document).on("googleMapsApiLoaded",window.onGoogleMapsApiLoaded),targetUrl+="&callback=onGoogleMapsApiLoaded",self.loadOnce(targetUrl)||window.onGoogleMapsApiLoaded()},registerGoogleMapsApiModules(module,requestSingleLoading){const self=T.Commons.ScriptLoader;if(requestSingleLoading&&(self.google_maps_api_loading=!0),module){if(-1!==self.google_maps_api_modules.indexOf(module))return;self.google_maps_api_modules.push(module)}},loadOnceIovationLibrary(ioblackbox){window.IGLOO=window.IGLOO||{bbout_element_id:ioblackbox,enable_rip:!0,enable_flash:!1,install_flash:!1,loader:{version:"general5",fp_static:!1}},T.Commons.ScriptLoader.loadOnce(`${window.jsBasePath}libs/iovation/iovation-loader-5.x.js`,()=>{T.Utils.application.getModuleById(1)._events.emit("iovation:loaded")},"igloo")},loadOnceModelViewerLibrary(callback){T.Commons.ScriptLoader.loadOnce(`${window.jsBasePath}modelviewer.js`,callback,null,{type:"module"})},loadOnceGigyaAssistant(websdk,onLibraryLoaded){T.Commons.ScriptLoader.loadOnce(`${websdk}`,onLibraryLoaded)},loadOnceAdyen(adyensdk,onLibraryLoaded,additionalAttribute){T.Commons.ScriptLoader.loadOnce(`${adyensdk}`,onLibraryLoaded,null,additionalAttribute)},loadOnceCIB(cibsdk,onLibraryLoaded,additionalAttribute){T.Commons.ScriptLoader.loadOnce(`${cibsdk}`,onLibraryLoaded,null,additionalAttribute)},loadOncePayU(payusdk,onLibraryLoaded,additionalAttribute){T.Commons.ScriptLoader.loadOnce(`${payusdk}`,onLibraryLoaded,null,additionalAttribute)},loadOnceOneyWidgetSdk(websdk,onLibraryLoaded){T.Commons.ScriptLoader.loadOnce(`${websdk}`,onLibraryLoaded)},loadOnceRazorpay(razorpaysdk,onLibraryLoaded,additionalAttribute){T.Commons.ScriptLoader.loadOnce(`${razorpaysdk}`,onLibraryLoaded,null,additionalAttribute)},scriptAlreadyExists(src){const self=T.Commons.ScriptLoader;return!0===self.isLoadingFinished(src)||!0===self.existsScriptAlreadyInDom(src)},registerObjectNameToCheck(src,check_object){if("string"!=typeof check_object)return;if(""===(check_object=check_object.trim()))return;const self=T.Commons.ScriptLoader,check_object_list=self.getCheckObjects(src);check_object_list.push(check_object),self.setCheckObjects(src,check_object_list)},getCheckObjects:src=>T.Commons.ScriptLoader.objects_to_check_by_src[src]||[],setCheckObjects(src,check_object_list){T.Commons.ScriptLoader.objects_to_check_by_src[src]=check_object_list||[]},hasCheckObjects:src=>T.Commons.ScriptLoader.getCheckObjects(src).length>0,resetCheckObjects(src){T.Commons.ScriptLoader.setCheckObjects(src,null)},isLoadingFinished:src=>!0===(T.Commons.ScriptLoader.loading_finished[src]||!1),setLoadingFinished(src){const self=T.Commons.ScriptLoader;self.setCurrentlyNotLoading(src),self.loading_finished[src]=!0},setLoadingNotFinished(src){T.Commons.ScriptLoader.loading_finished[src]=!1},isCurrentlyLoading:src=>!0===(T.Commons.ScriptLoader.loading_in_progress[src]||!1),setCurrentlyLoading(src){const self=T.Commons.ScriptLoader;self.setLoadingNotFinished(src),self.loading_in_progress[src]=!0},setCurrentlyNotLoading(src){T.Commons.ScriptLoader.loading_in_progress[src]=!1},registerCallback(src,callback){if("function"!=typeof callback)return;const self=T.Commons.ScriptLoader,callback_list=self.getCallbacks(src);callback_list.push(callback),self.setCallbacks(src,callback_list)},executeCallbacks(src){const self=T.Commons.ScriptLoader;
6self.getCallbacks(src).forEach(callback=>callback()),self.resetCallbacks(src)},getCallbacks:src=>T.Commons.ScriptLoader.callbacks_by_src[src]||[],setCallbacks(src,callback_list){T.Commons.ScriptLoader.callbacks_by_src[src]=callback_list||[]},resetCallbacks(src){T.Commons.ScriptLoader.setCallbacks(src,null)},existsScriptAlreadyInDom:src=>null!==(document.querySelector(`script[src='${src}']`)||null),appendScripToBody(src,additionalAttribute){const script=document.createElement("script");script.addEventListener("load",()=>T.Commons.ScriptLoader.scriptOnLoad(src)),script.setAttribute("src",src),null!==additionalAttribute&&void 0!==additionalAttribute&&Object.keys(additionalAttribute).forEach(key=>{script.setAttribute(key,additionalAttribute[key])}),document.body.appendChild(script)},scriptOnLoad(src){T.Commons.ScriptLoader.checkObjectBeforeExecuteCallbacks(src)},finishOnLoad(src){const self=T.Commons.ScriptLoader;self.executeCallbacks(src),self.setLoadingFinished(src)},checkObjectBeforeExecuteCallbacks(src){const self=T.Commons.ScriptLoader,check_object_list=self.getCheckObjects(src);for(let check_object of check_object_list){if(void 0===window[check_object])return void window.setTimeout(()=>self.checkObjectBeforeExecuteCallbacks(src),100)}self.resetCheckObjects(src),self.finishOnLoad(src)},callbacks_by_src:{},objects_to_check_by_src:{},loading_in_progress:{},loading_finished:{}}})}(jQuery),function($){T.Config=T.Config||{},$.extend(T.Config,{paths:{}})}(jQuery);var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source)Object.prototype.hasOwnProperty.call(source,key)&&(target[key]=source[key])}return target},JSON_Helpers=JSON_Helpers||{};_extends(JSON_Helpers,{jsonObjectPathVariable:"@_path",getValueByJsonPath:function(rootObj,path){if(!(rootObj instanceof Object)||void 0===path)return console.log("getValueByJsonPath failed, no valid arguments"),null;let obj=rootObj;return path.replace(/\[(\w+)\]/g,".$1").split(".").forEach(function(key){key in obj&&null!==obj[key]&&(obj=obj[key])}),obj},getPathOfJsonObject:function(obj){return obj instanceof Object?obj[this.jsonObjectPathVariable]:(console.log("getPathOfJsonObject failed, no valid argument"),null)},getParentOfJsonObject:function(rootObj,obj){if(!(rootObj instanceof Object&&obj instanceof Object))return console.log("getParentOfJsonObject failed, no valid arguments"),null;let path=this.getPathOfJsonObject(obj);if(!path)return console.log("getParentOfJsonObject failed, no valid path"),null;let lastPathSeparatorIdx=path.lastIndexOf(".");if(lastPathSeparatorIdx<=0)return rootObj;let parentPath=path.substring(0,lastPathSeparatorIdx);return this.getValueByJsonPath(rootObj,parentPath)},findClosestJsonObject:function(rootObj,obj,pathSelector){if(!(rootObj instanceof Object&&obj instanceof Object&&void 0!==pathSelector))return console.log("findClosestJsonObject failed, no valid arguments"),null;let path=this.getPathOfJsonObject(obj);if(!path)return console.log("findClosestJsonObject failed, no valid path"),null;let pathIdx=path.lastIndexOf(pathSelector);if(pathIdx<0)return null;if(path.lastIndexOf(".")<=0)return rootObj;let closestPath=path.substring(0,pathIdx+pathSelector.length);return this.getValueByJsonPath(rootObj,closestPath)},isJsonObjectChildOf:function(obj,pathSelector){if(!(obj instanceof Object)||void 0===pathSelector)return console.log("isJsonObjectChildOf failed, no valid arguments"),null;let path=this.getPathOfJsonObject(obj);if(!path)return console.log("isJsonObjectChildOf failed, no valid path"),null;let pathIdx=path.lastIndexOf(pathSelector);return 0===pathIdx||pathIdx>=0&&"."===path[pathIdx-1]}});_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source)Object.prototype.hasOwnProperty.call(source,key)&&(target[key]=source[key])}return target};var ready,BSH=BSH||{};function __guard__(value,transform){return void 0!==value&&null!==value?transform(value):void 0}_extends(BSH,{adaptStyleTag:function(selector){var el=document.querySelector(selector);if(el){var styles=el.innerHTML;el.innerHTML=`${styles} @page:-ro-nth(n+2){ margin-top: ${BSH.page.marginTop};}`}},init:function(){this.adaptStyleTag("#firstPageOnly")}}),function($){const glob_config=window.localization.configurations;var ready;T.Utils=T.Utils||{},$.extend(T.Utils,{_events:{}
6,allSynced:!1,loaderRequestCounter:$(".js-loader-static").length,fix_match_height_update_done:!1,modulesSynced(){T.Utils.initialRendering(),T.Utils.allSynced=!0},loadEcrScript:url=>($.getScript(url),window._ecr=window._ecr||{}),addSkusToEcr(sku){if(window._ecr&&sku)return window._ecr[`ecr-${sku}`]=sku},debounce(func,threshold,execAsap){let timeout=null;return function(...args){const obj=this;return timeout?clearTimeout(timeout):execAsap&&func.apply(obj,args),timeout=setTimeout(function(){return execAsap||func.apply(obj,args),timeout=null},threshold||100)}},cookieHandling(data,method,config){switch(method){case"isset":return document.cookie.split("; ").indexOf(data)>-1;case"get":var key=data+"=";for(let c of Array.from(document.cookie.split(";")))if(0===(c=c.replace(/^\s+/g,"")).indexOf(key))return c.substring(key.length,c.length);return null;case"return":return document.cookie;default:return config&&(null!=config.domain&&(data=data+"; domain="+config.domain),null!=config.path&&(data=data+"; path="+config.path),null!=config.expires&&(data=data+"; expires="+config.expires)),document.cookie=data}},currentViewport:"mobile",registerMq:(breakpoint,enquireObject,type)=>(null==type&&(type="min"),breakpoint=T.Utils.breakpoints[breakpoint],enquire.register(`screen and (${type}-width: ${breakpoint})`,enquireObject)),viewportRegistered:!1,registerViewportQuery(){if(!this.viewportRegistered)return enquire.register(`screen and (max-width: ${T.Utils.breakpoints.md})`,{match:()=>T.Utils.enquireViewportChanged("mobile")}),enquire.register(`screen and (min-width: ${T.Utils.breakpoints.md}) and (max-width: ${T.Utils.breakpoints.lg})`,{match:()=>T.Utils.enquireViewportChanged("tablet")}),enquire.register(`screen and (min-width: ${T.Utils.breakpoints.lg})`,{match:()=>T.Utils.enquireViewportChanged("desktop")}),this.viewportRegistered=!0},getViewportBreakpoint:viewport=>T.Utils.breakpoints[viewport],viewportEventsEnabled:!1,enquireViewportChanged(viewport){const oldViewport=T.Utils.currentViewport;if(T.Utils.currentViewport=viewport,T.Utils.viewportEventsEnabled&&oldViewport!==viewport)return $(window).trigger("jquery:viewportChanged",viewport),null!=T.Utils.application?T.Utils.application.getModuleById(1)._events.emit("viewportChanged",viewport):void 0},currentWindowWidth:$(window).width(),trackWindowWidth(){window.addEventListener("resize",e=>{T.Utils.currentWindowWidth!=$(window).width()&&(T.Utils.currentWindowWidth=$(window).width(),T.Utils.application.getModuleById(1)._events.emit("windowWidthChanged",{e:e}))})},getViewport:()=>T.Utils.currentViewport,isViewport(vp){switch(vp){case"md":case"tablet":return"tablet"===T.Utils.currentViewport;case"lg":case"desktop":return"desktop"===T.Utils.currentViewport;case"mobile":case void 0:return"mobile"===T.Utils.currentViewport}},isVisibleOnScreen($el){const $window=$(window),elHeight=$el.outerHeight(),elOffset=$el.offset(),elWidth=$el.outerWidth(),winHeight=$window.height(),winScrollLeft=$window.scrollLeft(),winScrollTop=$window.scrollTop(),winWidth=$window.width();return elOffset.top+elHeight>winScrollTop&&elOffset.left+elWidth>winScrollLeft&&elOffset.top<winScrollTop+winHeight&&elOffset.left<winScrollLeft+winWidth},getOffScreenDirection($el){if(T.Utils.isVisibleOnScreen($el))return"none";{const $window=$(window),elHeight=$el.outerHeight(),elOffset=$el.offset(),elWidth=$el.outerWidth(),winHeight=$window.height(),winScrollLeft=$window.scrollLeft(),winScrollTop=$window.scrollTop(),winWidth=$window.width();if(elOffset.top+elHeight<=winScrollTop)return"top";if(elOffset.left+elWidth<=winScrollLeft)return"left";if(elOffset.left>=winScrollLeft+winWidth)return"right";if(elOffset.top>=winScrollTop+winHeight)return"bottom"}},getOverlapDirection($el){if(T.Utils.isVisibleOnScreen($el)){const $window=$(window),elHeight=$el.outerHeight(),elOffset=$el.offset(),elWidth=$el.outerWidth(),winHeight=$window.height(),winScrollLeft=$window.scrollLeft(),winScrollTop=$window.scrollTop(),winWidth=$window.width();return elOffset.left<winScrollLeft&&elOffset.left+elWidth>winScrollLeft+winWidth||elWidth>
6winWidth?"horizontal":elOffset.top<winScrollTop&&elOffset.top+elHeight>winScrollTop+winHeight||elHeight>winHeight?"vertical":elOffset.top<winScrollTop?"top":elOffset.left<winScrollLeft?"left":elOffset.left+elWidth>winScrollLeft+winWidth?"right":elOffset.top+elHeight>winScrollTop+winHeight?"bottom":"none"}return"none"},getHashIds:scope=>T.Utils.parseHashUrl(location.hash)[scope]||[],hashContains(scope,id){const hashObject=T.Utils.parseHashUrl(location.hash);return hashObject.hasOwnProperty(scope)&&-1!==hashObject[scope].indexOf(id)},isValid($query){let valid=!0;return $query.filter(':not(button):not([type="hidden"]):not([readonly]):not([disabled])').each(function(){if(!(valid=$(this).is(":valid")))return!1}),valid},setInvalidStateClasses(obj){let field=obj instanceof jQuery?obj.get(0):obj,$field=obj instanceof jQuery?obj:$(obj);if(!field.validity.valid){if($field.addClass("had-focus"),field.validity.patternMismatch||field.validity.typeMismatch||field.validity.badInput)$field.removeClass("is-empty has-min-length-error").addClass("is-bad-input");else if(field.validity.tooShort)$field.removeClass("is-empty is-bad-input").addClass("has-min-length-error");else if(field.validity.valueMissing){$field.removeClass("is-bad-input has-min-length-error").addClass("is-empty"),$field.siblings('[data-t-name="FormInput"]').parent().addClass("had-focus").addClass("is-not-selected")}let invalidHook=$field.data("invalidHook");invalidHook&&invalidHook.cb(field)}},localizePrice(price){const config=this.getConfigFromDecimalFormat(glob_config.priceFormat),outputPrice=[],formated=[config.prefix];let priceArray=price.toFixed(config.maximumFractionDigits).replace(/0+$/,"").split(".");return priceArray[1].length<config.minimumFractionDigits&&(priceArray=price.toFixed(config.minimumFractionDigits).split(".")),priceArray[0].toString().split("").reverse().map((n,i)=>{i>0&&i%3==0&&outputPrice.push(glob_config.groupingSeparator),outputPrice.push(n)}),priceArray[0]=outputPrice.reverse().join(""),formated.push(priceArray.join(glob_config.decimalSeparator)),formated.push(config.suffix),formated.join("").replace("¤",glob_config.currencySymbol)},parseHashUrl(hash){const urlParts=[];""!==hash&&hash.split("/").map(hashStr=>{""!=hashStr&&hashStr.indexOf("=")>0&&hashStr.indexOf("=")<hashStr.length-1&&urlParts.push(hashStr)});const result={};if(urlParts&&urlParts.length)for(let p of Array.from(urlParts)){const parts=p.split("=");result.hasOwnProperty(parts[0])||(result[parts[0]]=[]),result[parts[0]].push(parts[1]),result[parts[0]].sort()}return result},getConfigFromDecimalFormat(pattern){const config={},format=pattern.match(/([^#0,.]*)([#0,.]*)([^#0,.]*)/),fraction=format[2].split(".")[1]||[],minimumFraction=fraction.match(/0/g)||[];return config.prefix=format[1],config.suffix=format[3],config.maximumFractionDigits=fraction.length,config.minimumFractionDigits=minimumFraction.length,config},escapeSpecialCharacter:text=>text.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),renderHashUrl(hashObject){const parts=[];for(let key in hashObject)for(let val of Array.from(hashObject[key]))parts.push(`${key}=${val}`);return parts.length?`#/${parts.join("/")}/`:""},replaceHistory(options,noQueryParams){void 0!==(options=options||{}).state&&null!==options.state||(options.state=history.state),"string"!=typeof options.title&&(options.title=document.title),"string"!=typeof options.url&&(options.url=window.location.href),"?"===options.url&&noQueryParams&&(options.url=window.location.href.split("?")[0]||window.location.href),history.replaceState(options.state,options.title,options.url)},replaceHash(scope,oldId,newId,replaceHistory){const searchPattern=new RegExp(`/${scope}=${oldId}/`,"g"),replacePattern=`/${scope}=${newId}/`;if(replaceHistory){const options={url:window.location.href.replace(searchPattern,replacePattern)};T.Utils.replaceHistory(options)}else location.hash=location.hash.replace(searchPattern,replacePattern)},removeHash(scope,id,replaceHistory){const hashObject=T.Utils.parseHashUrl(location.hash);for(let item of Array.from(id)){if(!hashObject.hasOwnProperty(scope))continue;const index=hashObject[scope].indexOf(item);-1!==index&&hashObject[scope].splice(index,1),hashObject[scope].length||delete hashObject[scope]}let hash=T.Utils.renderHashUrl(hashObject);if(hash||(hash="#"),replaceHistory){const options={url:window.location.origin+window.location.pathname+window.location.search+hash};T.Utils.replaceHistory(options)}else location.hash=hash},setHash(scope,id,replaceHistory){const hashObject=T.Utils.parseHashUrl(location.hash);hashObject.hasOwnProperty(scope)||(hashObject[scope]=[]),-1===hashObject[scope].indexOf(id)&&hashObject[scope].push(id);const hash=T.Utils.renderHashUrl(hashObject);if(replaceHistory){const options={url:window.location.origin+window.location.pathname+window.location.search+hash};T.Utils.replaceHistory(options)}else location.hash=hash},splitUrl(url){const urlSplPre=url.split("?");let urlSpl=void 0,urlGet=void 0;const urlObj={};if(urlObj.base=urlSplPre[0],urlSplPre.length>2){const temp=urlSplPre.slice(1,urlSplPre.length);urlSplPre[1]=temp.join("?")}return urlSplPre.length>1&&(urlSpl=urlSplPre[1].split("#"),urlObj.get={},urlGet=urlSpl[0].split("&"),urlSpl.length>1&&(urlObj.hash=urlSpl[1]),$.each(urlGet,function(){const part=this.toString().split("=");if(part.length>2){const tempGet=part.slice(1,part.length);part[1]=tempGet.join("=")}if(void 0!==urlObj.get[part[0]]){if("object"!=typeof urlObj.get[part[0]]){const existingV
6alue=urlObj.get[part[0]];urlObj.get[part[0]]=[],urlObj.get[part[0]].push(existingValue)}return urlObj.get[part[0]].push(part[1])}if("string"==typeof part[0]&&""!==part[0])return urlObj.get[part[0]]=part[1]})),urlObj},getURLParameterByName(name,url=window.location.href){name=name.replace(/[\[\]]/g,"\\$&");const results=new RegExp("[?&]"+name+"(=([^&#]*)|&|#|$)").exec(url);return results?results[2]?decodeURIComponent(results[2].replace(/\+/g," ")):"":null},scrollToTop(reference,callback,$scrollEl){const speed=T.Utils.toTop.animateDuration;let scrollTop=0,callbackCalled=!1;return"object"==typeof reference&&"function"==typeof reference.offset&&(scrollTop=reference.offset().top),"number"==typeof reference&&(scrollTop=reference),$scrollEl&&$scrollEl.length>0?$scrollEl.animate({scrollTop:scrollTop},speed):$("html,body").animate({scrollTop:scrollTop},speed,function(){if(!callbackCalled&&(null!=callback&&(callbackCalled=!0,callback()),"function"==typeof reference))return callbackCalled=!0,reference()})},configDoTJS:()=>(doT.templateSettings.evaluate=/\[\{([\s\S]+?(\}?)+)\}\]/g,doT.templateSettings.interpolate=/\[\{=([\s\S]+?)\}\]/g,doT.templateSettings.encode=/\[\{!([\s\S]+?)\}\]/g,doT.templateSettings.use=/\[\{#([\s\S]+?)\}\]/g,doT.templateSettings.define=/\[\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\]/g,doT.templateSettings.conditional=/\[\{\?(\?)?\s*([\s\S]*?)\s*\}\]/g,doT.templateSettings.iterate=/\[\{~\s*(?:\}\]|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\])/g,doT.templateSettings.strip=!1),onAjaxControllerTriggered(ev,current=null){let elm;ev?(elm=current?ev.currentTarget:ev.target,null==$(ev.currentTarget).data("followuplink")&&ev.preventDefault()):elm=current[0];const id=T.Utils.getAjaxId(elm);let config=$(elm).data("request");return"object"!=typeof config&&(config=!1),id?config.requestWaitForPrecondition?void T.Utils.waitForPrecondition(config.requestWaitForPrecondition,()=>T.Utils.startAjaxRequest(id,config)):T.Utils.startAjaxRequest(id,config):(console.error("trigger element has to be placed in ajax form or data data-attribute ajaxRequestID is required on trigger element:"),console.error(elm),!1)},getAjaxId(elm){const $trigger=$(elm);let id=$trigger.attr("data-ajax-request-id");if(void 0===id){id=$trigger.closest(".js-ajax-request").attr("data-ajax-id");try{const idArray=JSON.parse(id);"[object Array]"===Object.prototype.toString.call(idArray)&&(id=idArray[0])}catch(error){}}return id},getAjaxRequestObj(id,formdata,$scope){let request,multi=!1,$ajaxobj=$(`.js-ajax-request[data-ajax-id="${id}"]`);if(!$ajaxobj.length){if(!($ajaxobj=$(`.js-ajax-request[data-ajax-id*="${id}"]`)).length)return"noid";try{multi=JSON.parse($ajaxobj.attr("data-ajax-id")).indexOf(id)>-1}catch(error2){}}try{const dataajax=JSON.parse($ajaxobj.attr("data-ajax"));request=multi?dataajax[id]:dataajax;const dataajaxComplete=$ajaxobj.attr("data-ajax-complete"),onAjaxCompleteTriggerClickSelector=$ajaxobj.attr("data-ajax-complete-click-selector");if(dataajaxComplete)try{request.complete=(()=>{console.info("The functionality was removed")})}catch(buildError){console.error(`content '${dataajaxComplete}' of ${data-ajax-complete} could not be parsed to function`)}onAjaxCompleteTriggerClickSelector&&(request.complete=(()=>{setTimeout(function(){$(onAjaxCompleteTriggerClickSelector).click()})}))}catch(error1){console.error('"data-ajax" value has to be an object')}if(!request)return!1;if(request.id=id,request.obj=$ajaxobj,formdata&&(request.formdata=$scope?T.Utils.getFormDataPairs($ajaxobj,request.customNameAttr,$scope):T.Utils.getFormDataPairs($ajaxobj,request.customNameAttr)),request.paramFormat&&"json"===request.paramFormat.toLowerCase())try{request.formdata=JSON.stringify(request.formdata),request.contentType="application/json; charset=utf-8"}catch(error3){}return request.async=T.Utils.setDefaultValue(request.async,!0),request.method=T.Utils.setDefaultValue(request.method,"GET"),request.dataType=T.Utils.setDefaultValue(request.dataType,"json").toLowerCase(),request.restoreValues=T.Utils.setDefaultValue(request.restoreValues,!1),request.dataRendering=T.Utils.setDefaultValue(request.dataRendering,"TRUE"),request.trigger={},request},initialRendering(id){$(id?`[data-init-data=${id}]`:"[data-init-data]").each(function(){const $target=$(this),initdata=JSON.parse($target.text()),blockCallupFunction=$target.attr("data-no-initial-callup");T.Utils.startInitialRendering($target.data("initData"),initdata,blockCallupFunction)})},initialAjaxRequestTrigger(container){$(".js-trigger-ajax-request[data-onload=true]",container).each(function(el){$(this).trigger("allsynced")})},startInitialRendering(id,initdata,blockCallupFunction){const request=this.getAjaxRequestObj(id);
6if("object"==typeof request)return request.triggerRendering=!0,this.handleAjaxResponse(request,initdata,blockCallupFunction);console.error('"data-ajax" value has to be an object')},startAjaxRequest(id,_config,data,cbAfterAjax,cbAfterSync,$scope){let event,request;const config=_config,ctx={};let elemTriggerAjaxRequest=$("[data-ajax-request-id="+id+"]").first();if(0===elemTriggerAjaxRequest.length&&(elemTriggerAjaxRequest=$("[data-ajax-id="+id+"]").first()),elemTriggerAjaxRequest.hasClass("js-prevent-ajax"))return;let sendFormContent=!0;if(null!=config&&!0===config.dontSendFormContent&&(sendFormContent=!1),id){if("noid"===(request=$scope?this.getAjaxRequestObj(id,sendFormContent,$scope):this.getAjaxRequestObj(id,sendFormContent)))return void console.error("no request id:",id)}else{if("object"!=typeof config||null===config)return!1;(request=config).async=T.Utils.setDefaultValue(request.async,!0),request.method=T.Utils.setDefaultValue(request.method,"GET"),request.dataType=T.Utils.setDefaultValue(request.dataType,"json").toLowerCase(),request.restoreValues=T.Utils.setDefaultValue(request.restoreValues,!1),request.dataRendering=T.Utils.setDefaultValue(request.dataRendering,"FALSE"),request.crossDomain=!0,request.formdata={},request.trigger={}}if(request.validateRequired){const item=request.customNameAttr||"name";if(!this.isValid($(`[${item}]`,$(request.obj))))return!1}if("object"==typeof config&&null!==config&&(request.trigger=config,config.method&&(request.method=config.method),config.url&&(request.url=config.url),config.dataRendering&&(request.dataRendering=config.dataRendering),config.errorCase&&(request.errorCase=config.errorCase),"object"==typeof config.data&&(request.formdata=$.extend(request.formdata,config.data)),request.beforeSend=T.Utils.setDefaultValue(config.beforeSend,null)),"object"==typeof data&&(request.formdata=$.extend(request.formdata,data)),"object"!=typeof request)return void console.error('"data-ajax" value has to be an object');if(this.loaderRequestCounter&&request.requiresLoaderRequestsDone)return!1;if(request.obj&&(event="request"===request.obj.attr("data-loader-event")),event&&!request.preventLoader&&(request.obj.length>1?console.warn("Warning, there are more than one ajax trigger objects to open loader layer"):request.obj.trigger("request")),request.httpheader="POST"===request.method||"DELETE"===request.method?T.Utils.getCSRFTokenHeader():{},request.contentType=T.Utils.setDefaultValue(request.contentType,"application/x-www-form-urlencoded; charset=UTF-8"),"application/json"===request.contentType&&(request.formdata=JSON.stringify(request.formdata)),"string"==typeof request.url){const urls=[request.url];request.url=urls}this.response={};const urlobj=request.url,last=urlobj.length;let callnr=0;const returnObject={};request.obj&&(request.errorelms=$(".js-show-on-requesterror",request.obj)),request.obj&&(request.successelms=$(".js-show-on-requestsuccess",request.obj)),request.errorelms&&request.errorelms.length&&request.errorelms.toggleClass("is-hidden",!0),request.successelms&&request.successelms.length&&request.successelms.toggleClass("is-hidden",!0);for(let key in urlobj){var url=urlobj[key];{if("post"===request.method.toLowerCase()){if(elemTriggerAjaxRequest.hasClass("js-prevent-double-ajax-requests"))continue;elemTriggerAjaxRequest.addClass("js-prevent-double-ajax-requests")}let actualDataType=request.dataType;request.dataTypeMap&&(actualDataType=T.Utils.setDefaultValue(request.dataTypeMap[key],actualDataType).toLowerCase()),returnObject[key]=$.ajax({async:request.async,beforeSend:request.beforeSend,cache:!1,data:request.formdata,headers:request.httpheader,url:url,method:request.method,dataType:actualDataType,contentType:"get"!==request.method.toLowerCase()&&request.contentType,crossDomain:request.crossDomain||null,context:document.body}).done(function(result){++callnr;const json=ctx.response;return elemTriggerAjaxRequest.hasClass("js-prevent-double-ajax-requests")&&elemTriggerAjaxRequest.removeClass("js-prevent-double-ajax-requests"),elemTriggerAjaxRequest.hasClass("js-prevent-multiple-ajax")&&elemTriggerAjaxRequest.addClass("js-prevent-ajax"),"[object Array]"===Object.prototype.toString.call(result)?ctx.response=result:("json"===request.dataType&&(ctx.response=$.extend(!0,{},json,result)),callnr===last&&(ctx.response||(ctx.response={}),ctx.response.requestdata=request.formdata,"html"===request.dataType&&(ctx.response=result))),event&&!request.preventLoader&&T.Utils.application.getModuleById(1)._events.emit("loader:close",{$trigger:request.obj}),request.dataRendering&&"FALSE"!==request.dataRendering||request.errorCase?T.Utils.handleAjaxResponse(request,ctx.response,cbAfterSync,$scope):request.successelms&&request.successelms.length&&request.successelms.toggleClass("is-hidden",!1),"function"==typeof request.complete&&request.complete(),"function"==typeof cbAfterAjax?cbAfterAjax(null,ctx.response.response):void 0}).fail(function(xhr,ajaxOptions,thrownError){switch(elemTriggerAjaxRequest.removeClass("js-prevent-double-ajax-requests"),console.info("url:: %s",url),ctx.allsuccess=!1,xhr.status){case 400:console.error("Bad Request");break;case 402:console.error("Payment Required");break;case 403:console.error("Forbidden");break;case 404:console.error("Request URL not found");break;case 408:console.error("Request Timeout");break;default:"abort"!==xhr.statusText&&console.error("an request error occoured")}return event&&!request.preventLoader&&T.Utils.application.getModuleById(1)._events.emit("loader:close",{$trigger:request.obj}),request.errorelms&&request.errorelms.length&&request.errorelms.toggleClass("is-hidden",!1),"function"==typeof cbAfterAjax?cbAfterAjax(thrownError):void 0})}}return returnObject},renderTemplateMarkup(request,result,errorCase,$scope){const container=errorCase?"error":"success";let $tempContainer;if(0===($tempContainer=$scope?$scope.find(`[data-ajax-template="${container}"]`):$(`[data-ajax-template="${container}"]`,request.obj)).length)return void console.error("no ",container," template defined");const resultAfterFootnoteReplacement=errorCase?result:this.replaceFootnotePlaceholdersByMarkup(result);return doT.template($tempContainer.html())(resultAfterFootnoteReplacement)},replaceFootnotePlaceholdersByMarkup(responseJson){try{const responseString=JSON.stringify(responseJson);if(document.getElementsByClassName("m-footnotes-rebrush").length>0){const responseStringWithFootnotesAsMarkup=responseString.replaceAll(/\{Footnote-\d*\}/g,match=>`<sup class='js-footnote-reference-number'>${match}</sup>`);return JSON.parse(responseStringWithFootnotesAsMarkup)}{const responseStringWithoutFootnotes=responseString.replaceAll(/\{Footnote-\d*\}/g,"");return JSON.parse(responseStringWithoutFootnotes)}}catch(error){return console.error(error),responseJson}},ajaxResponseErrorCaseCheck(errorCase,result){let hasError=!1;for(let checkobj in errorCase)if(hasError=T.Utils.checkObjNode(result,checkobj,errorCase[checkobj]))break;return hasError},handleAjaxResponse(request,result,cbAfterSync,$scope){const startRendering=request.triggerRe
6ndering||"FALSE"!==request.dataRendering;let hasErrorInResponse=!1;if(request.errorCase&&(hasErrorInResponse=T.Utils.ajaxResponseErrorCaseCheck(request.errorCase,result)),request.errorelms&&request.errorelms.length&&hasErrorInResponse&&request.errorelms.toggleClass("is-hidden",!1),startRendering){let $batch;$batch="html"===request.dataType?$("<div/>").append(result):$("<div/>").html(T.Utils.renderTemplateMarkup(request,result,hasErrorInResponse,$scope));let callbackRegistrations=null;null!=this.ajaxCallbacksAfterSync&&(callbackRegistrations=this.ajaxCallbacksAfterSync[request.id]);let cbWrapper=()=>{if(null!=callbackRegistrations)for(let registration of callbackRegistrations)"function"==typeof registration.callback&®istration.callback(result);"function"==typeof cbAfterSync&&cbAfterSync()};if("object"==typeof request.trigger.render){const renderObj=request.trigger.render;let renderArray=[];"[object Array]"===Object.prototype.toString.call(renderObj)?renderArray=renderObj:renderArray.push(renderObj);for(let render of Array.from(renderArray))T.Utils.syncContent($batch,render.id,render.method,request.restoreValues,cbWrapper)}else T.Utils.syncContent($batch,null,null,request.restoreValues,cbWrapper);let afterRequestCallback=request.trigger.callback;"function"==typeof afterRequestCallback&&afterRequestCallback();const nextCall=request.followUpRequest,nextCallPrecondition=request.followUpRequestWaitForPrecondition;void 0!==nextCall&&"object"==typeof nextCall&&(nextCallPrecondition?T.Utils.waitForPrecondition(nextCallPrecondition,()=>{T.Utils.startAjaxRequest(nextCall.id,nextCall.data,nextCall.config)}):T.Utils.startAjaxRequest(nextCall.id,nextCall.data,nextCall.config))}request.successelms&&request.successelms.length&&!hasErrorInResponse&&request.successelms.toggleClass("is-hidden",!1)},getFormDataPairs($form,customNameAttr,$scope){const keyValue={};let formdata=[];if($form.is("fieldset")||$form.is("div")){formdata=$form.filter("input, select").add("input, select",$form).serializeArray()}else formdata=$form.serializeArray();for(var obj of(customNameAttr&&(formdata=$scope?T.Utils.remapFormdata(formdata,$form,customNameAttr,!0,$scope):T.Utils.remapFormdata(formdata,$form,customNameAttr,!0)),Array.from(formdata))){let valueobj="";try{valueobj=JSON.parse(obj.value)}catch(error){}const isarray="[object Array]"===Object.prototype.toString.call(valueobj);if("object"!=typeof valueobj||isarray)keyValue[obj.name]=isarray?valueobj:keyValue[obj.name]?keyValue[obj.name]+","+obj.value:obj.value;else for(let keyname in valueobj)if(valueobj.hasOwnProperty(keyname))switch(obj.name){case"keyValuePair":keyValue[keyname]=valueobj[keyname];break;default:keyValue[obj.name+"."+keyname]=valueobj[keyname]}}$(".m-rangeslider .js-slider",$form).each(function(){const $slider=$(this),conf=$slider.data(),$sliderinput=$slider.find("input.js-value"),lower=$sliderinput[0],upper=$sliderinput[1],ident=$slider.find("input:not(.js-value)")[0],typeval=$slider.find("input:not(.js-value)")[1];if(keyValue[lower.name]===String(conf.rangeMin)&&(keyValue[lower.name]=null),keyValue[upper.name]===String(conf.rangeMax)&&(keyValue[upper.name]=null),null===keyValue[lower.name]&&null===keyValue[upper.name])return delete keyValue[ident.name],delete keyValue[typeval.name],delete keyValue[lower.name],delete keyValue[upper.name]});const conf=$form.data();if(conf&&conf.ajax){const serializeArray=conf.ajax.requestParamSeries;if(serializeArray){const unsortedData={};for(let serie of Array.from(serializeArray)){var value;const seriename=serie.name;unsortedData[seriename]=[];
6const nameRegEx=new RegExp(seriename);for(var key of Object.keys(keyValue||{}))if(value=keyValue[key],nameRegEx.test(key)){delete keyValue[key];const name=key.split(".");if(name.length>=2)switch(unsortedData[seriename][name[0]]=unsortedData[seriename][name[0]]||{},name.length){case 2:unsortedData[seriename][name[0]][name[1]]=value;break;case 3:unsortedData[seriename][name[0]][name[1]]=unsortedData[seriename][name[0]][name[1]]||{},unsortedData[seriename][name[0]][name[1]][name[2]]=value}}let count0=0;for(key of Object.keys(unsortedData[seriename]||{}))if(obj=unsortedData[seriename][key],!serie.checkFor||obj.hasOwnProperty(serie.checkFor)||serie.checkFor&&serie.checkFor2&&(obj.hasOwnProperty(serie.checkFor)||obj.hasOwnProperty(serie.checkFor2))){for(let subkey of Object.keys(obj||{})){value=obj[subkey];const requestname=String(seriename+"["+count0+"]."+subkey);if("object"==typeof value&&null!==value){let count1=0;for(let valuekey of Object.keys(value||{})){const valueval=value[valuekey];keyValue[requestname+"["+count1+"]"]=valueval,++count1}}else keyValue[requestname]=value}++count0}}}}return keyValue},checkObjNode:(obj,path,testvalue)=>T.Utils.getObjectValofPath(obj,path)===testvalue,getObjectValofPath(obj,path){var recompose=function(obj,string){const parts=string.split(".");if(void 0===obj[parts[0]])return!1;const newObj=obj[parts[0]];if(parts[1]){parts.splice(0,1);const newString=parts.join(".");return recompose(newObj,newString)}return newObj};return recompose(obj,path)},getScrollbarWidth(){const $body=$("body");$body.append('<div class="scrollbar-measure js-scrollbar-measure"></div>');const $measure=$body.find(".js-scrollbar-measure"),scrollbarWidth=$measure[0].offsetWidth-$measure[0].clientWidth;return $measure.remove(),scrollbarWidth},remapFormdata(formdata,$form,attr,filter,$scope){let $mappings=$form.filter(`[${attr}]`).add(`[${attr}]`,$form);if($scope&&($mappings=$scope.filter(`[${attr}]`).add(`[${attr}]`,$scope)),$mappings.length>0){const formdataJavaObj=filter?[]:formdata;for(var key of Object.keys(formdata||{})){var obj=formdata[key];$mappings.each(function(){const $e=$(this);if($e.prop("name")===obj.name){const newobj={name:$e.attr(attr),value:obj.value};return filter?formdataJavaObj.push(newobj):formdataJavaObj[key]=newobj}})}return formdataJavaObj}return formdata},syncContent($template,replaceContainerId,addmethod,restoreValues,cb){let $sections;$sections=$(replaceContainerId?`[data-replace-id="${replaceContainerId}"]`:"[data-replace-id]",$template);const sectionArray=Array.from($sections);let counter=sectionArray.length,counterCallback=success=>{0==--counter&&"function"==typeof cb&&cb(success)};if(0==sectionArray.length)cb(!0);else for(let section of sectionArray)$(section).parents("[data-replace-id]").length?counter--:T.Utils.replaceContent(section,addmethod,restoreValues,counterCallback)},replaceContent(part,addmethod,restoreValues,cb){let $container;const $part=$(part),method=addmethod||$part.data("add-method")||"replace",closeLoader=$part.data("close-loader"),scrollto=$part.data("scrollto"),scrolltocontainer=$part.data("scrollto-container"),openMoreContentToggleBox=$part.data("scrollto-container"),id=$part.data("replace-id");switch(id){case"head":$container=$("head");break;case"body":$container=$("body");break;default:$container=$(`[data-replace-container="${id}"]`)}const height=$container.outerHeight();if(T.Utils.isIE()?$container.css({height:height,overflow:"hidden",transform:"scale(1)"}):$container.css({height:height,overflow:"hidden"}),"replace"===method&&restoreValues){let $restoreItems=$('[data-restore-value="true"]',$container);$restoreItems.each(function(){const elmId=$(this).attr("id");$(this).is(":checkbox")?$part.find(`#${elmId}`).attr("checked",$(this).prop("checked")):$part.find(`#${elmId}`).attr("value",$(this).val())}),($restoreItems=$("[data-restore-class]",$container)).each(function(){const elmId=$(this).attr("id"),elmClass=$(this).data("restoreClass");$(this).hasClass(elmClass)&&$part.find(`#${elmId}`).addClass(elmClass)})}const content=$part.html();switch(method){case"replace":T.Utils.destroyModules($container),$container.html(content);break;case"append":$container.append(content);break;
6case"prepend":$container.prepend(content)}let scrollTop;scrollto&&(scrollTop=$(window).scrollTop());var checkSyncStatus=setInterval(function(){if(T.Utils.allSynced){if(clearInterval(checkSyncStatus),T.Utils.initializeModules($container,cb),closeLoader&&T.Utils.application.getModuleById(1)._events.emit("loader:close",{$trigger:$container}),T.Utils.application.getModuleById(1)._events.emit("loader:register",{$ctx:$container}),openMoreContentToggleBox){const moduleID=$container.closest(".a-morecontenttogglelink").data("t-id");if(moduleID){T.Utils.application.getModuleById(moduleID).openContent(!0)}}(scrollto||scrolltocontainer)&&(T.Utils.application.getModuleById(1)._events.emit("header:temporarily-turnoff-sticky",{howLongShouldItBeDisaled:1400}),setTimeout(()=>{scrolltocontainer?T.Utils.scrollToTop($container):$(window).scrollTop(scrollTop)},200)),T.Utils.isIE()?$container.css({height:"",overflow:"",transform:""}):$container.css({height:"",overflow:""})}},200)},setDefaultValue:(a,value)=>(void 0===a&&(a=value),a),genericFormKeepDisabledFieldsOnShow($container){$container.find("input, textarea, select").each(function(){$(this).attr("data-origindisabled")?$(this).prop("disabled",!0):$(this).prop("disabled",!1)})},genericFormDisableFieldsOnHide($container,onlyFilledFields){$container.find("input, textarea, select").each(function(){onlyFilledFields&&($(this).is(":hidden, :checkbox, :radio")||null===$(this).val()||0===$(this).val().length)||($(this).prop("disabled")?$(this).attr("data-origindisabled",!0):$(this).removeAttr("data-origindisabled"),$(this).prop("disabled",!0))})},getUrlforBase64Pdf(base64String){for(var byteCharacters=atob(base64String),byteNumbers=new Array(byteCharacters.length),i=0;i<byteCharacters.length;i++)byteNumbers[i]=byteCharacters.charCodeAt(i);var byteArray=new Uint8Array(byteNumbers),blob=new Blob([byteArray],{type:"application/pdf"});return URL.createObjectURL(blob)},initializeModules($element,cb){try{$element.each((index,element)=>{T.Utils.performContentInitializationOnReplacement(!0,element)});const modules=T.Utils.application.registerModules($element.toArray());T.Utils.application.start(modules,!0).then(()=>{try{const appModule=T.Utils.application.getModuleById(1);$element.each((index,element)=>{appModule._events.emit("dom:replacement",element)}),appModule._events.emit("recalc",{$ctx:$element,$element:$element}),$element.find("img").on("load",()=>{}).each(function(){this.complete&&T.Utils.application.getModuleById(1)._events.emit("recalc",{$ctx:$element,$element:$element})});for(let k in null!=$.fn.matchHeight?$.fn.matchHeight._groups:void 0){const matchHeightElement=(null!=$.fn.matchHeight?$.fn.matchHeight._groups:void 0)[k];$element.each((index,element)=>{if($(element).closest(matchHeightElement).length>0){performance.now();matchHeightElement.matchHeight(!0)}})}"function"==typeof cb&&cb(!0)}catch(e){"function"==typeof cb&&cb(!1),console.error(e)}})}catch(e){"function"==typeof cb&&cb(!1),console.error(e)}},destroyModules($element){try{return T.Utils.application._sandbox.removeModules($element[0])}catch(e){return console.error(e)}},functionCallTest(data){console.log("this is the ajax response data handling function"),console.info(data)},getCSRFTokenHeader(){const header={},$meta=$("head meta"),name=$meta.filter('[name="_csrf_header"]').attr("content"),value=$meta.filter('[name="_csrf"]').attr("content");return header[name]=value,header},collectJson(obj1,obj2){var jsonArrayToObject=function(obj,prefix){const pre=prefix||"prfx_";for(let k in obj)if("object"==typeof obj[k]&&null!==obj[k]){if(!0===Array.isArray(obj[k])){const newobj={},len=obj[k].length;let i=0;for(;i<len;)newobj[pre+i]=obj[k][i],++i;obj[k]=newobj}jsonArrayToObject(obj[k],pre)}return obj},jsonRestoreObjectToArray=function(obj,prefix){const pre=prefix||"prfx_";for(let k in obj)if("object"==typeof obj[k]&&null!==obj[k]){if(obj[k].hasOwnProperty(pre+"0")){const newarray=[];for(let key in obj[k])newarray.push(obj[k][key]);obj[k]=newarray}jsonRestoreObjectToArray(obj[k],pre)}return obj};const object=$.extend(!0,jsonArrayToObject(obj1),jsonArrayToObject(obj2,"prfx_2"));return jsonRestoreObjectToArray(object)},localStorageGetItem(key){let value=localStorage.getItem(key);try{JSON.parse(value)&&(value=JSON.parse(value))}catch(error){console.error("localStorage parse error")}return value},localStorageSetItem:(key,value)=>("object"==typeof value&&(value=JSON.stringify(value)),localStorage.setItem(key,value)),onStorage(ev){const storageKey=ev.originalEvent.key;if(null!=storageKey&&(storageKey===T.Utils.localStorageKey.productC
6ompare.mkt||storageKey===T.Utils.localStorageKey.productCompare.shop))return T.Utils.application.getModuleById(1)._events.emit("utils:storageUpdateSkuCompare",{key:storageKey,val:JSON.parse(ev.originalEvent.newValue)})},updateActiveFilter(availableFilter,selectedFilter,availableFilters){switch(availableFilter.type){case"slider":return availableFilter.lowerMarker=selectedFilter.minValue,availableFilter.upperMarker=selectedFilter.maxValue,!0;default:if("category"==selectedFilter.type){var availableCategoryFilterHasValue=!1;for(let availableFilterIndex in availableFilters)for(let entryIndex in availableFilters[availableFilterIndex].entries){const filterEntry=availableFilters[availableFilterIndex].entries[entryIndex];"category"==filterEntry.type&&filterEntry.value==selectedFilter.value&&(availableCategoryFilterHasValue=!0)}if(!availableCategoryFilterHasValue){let i;for(selectedFilter.hidden=!0,selectedFilter.checked=!0,i=0;i<availableFilter.entries.length&&!availableFilter.entries[i].hidden;i++);availableFilter.entries.splice(i,0,selectedFilter)}}var oneValueWasMarkedAsChecked=!1;for(let a in availableFilter.entries){const filterEntry=availableFilter.entries[a];switch(filterEntry.type){case"range":filterEntry.minValue===selectedFilter.minValue&&filterEntry.maxValue===selectedFilter.maxValue&&(filterEntry.selected=!0,filterEntry.checked="checked",oneValueWasMarkedAsChecked=!0);break;default:if(filterEntry.value===selectedFilter.value&&(filterEntry.selected=!0,filterEntry.checked="checked",oneValueWasMarkedAsChecked=!0,"singlevalue"===availableFilter.type))return!0}}if(oneValueWasMarkedAsChecked)return!0;if("multivalue"===availableFilter.type){const hiddenvalue=selectedFilter;return hiddenvalue.hidden=!0,hiddenvalue.checked="checked",availableFilter.entries.push(hiddenvalue),!0}}return!1},setSelectedFilter(filterName,filter,availableFilters,selectedFilters){if("category"==filter.type){let mostSpecificSelectedCategory=null;for(let selectedFilterIndex in selectedFilters){let selectedFilter=selectedFilters[selectedFilterIndex];if("category"==selectedFilter.type)for(let entryIndex in selectedFilter.entries){let entry=selectedFilter.entries[entryIndex];(null==mostSpecificSelectedCategory||entry.value.length>mostSpecificSelectedCategory.length)&&(mostSpecificSelectedCategory=entry.value)}}if(null!=mostSpecificSelectedCategory&&filter.value.length<mostSpecificSelectedCategory.length)return!1}let found=!1;for(let i in availableFilters){const availableFilter=availableFilters[i];availableFilter.attribute===filterName&&(found=found||this.updateActiveFilter(availableFilter,filter,availableFilters))}return!found},createHiddenElementForReadonly(target,wrapperselector){const $target=$(target);if($target.length>0){const valueToSetAsHidden=$target.val(),nameToSetForHidden=$target.prop("name"),$wrapper=$target.closest(wrapperselector),$hiddenReplacement=$wrapper.find(`input:hidden[name="${nameToSetForHidden}"]`);$target.attr("id");if(0===$hiddenReplacement.length){const $hidden=`<input type="hidden" name="${nameToSetForHidden}" value="${valueToSetAsHidden}" />`;$wrapper.append($hidden)}else $hiddenReplacement.val(valueToSetAsHidden).prop("disabled",!1);return $target.addClass("readonly").prop("disabled",!0),$wrapper.addClass("readonly")}},hideLayer:()=>T.Utils.application.getModuleById(1)._events.emit("hideLayer"),hasUrlVariable:variable=>-1!==window.location.search.substring(1).split("&").indexOf(`${variable}=true`),setupPerformanceLogging(){const profileMode=T.Utils.hasUrlVariable("profileMode"),perfMode=T.Utils.hasUrlVariable("perfMode");if(!profileMode&&!perfMode)return;let profilerRunning=!1;window.console&&window.console.profile&&(console.profile("pageInit"),profilerRunning=!0);let lastEventTime=0;var intervalTimer=setInterval(function(){const current=window.performance.now();if(lastEventTime>0&¤t-lastEventTime>3e3){clearInterval(intervalTimer);const lastEventTimeRounded=Math.round(1e3*lastEventTime)/1e3;profilerRunning&&console.profileEnd(),perfMode&&console.log(`[EVENT];Offset:${current};Action:RECORD_END;LastTime:${lastEventTimeRounded}`)}},500);let eventCounter=0;return T.Sandbox.prototype.dispatch=function(){const theArguments=arguments,startTime=Math.round(1e3*window.performance.now())/1e3,eventEmitters=this._eventEmitters,eventId=`ev${++eventCounter}`;let eventsCalled=0;const event=theArguments[0];perfMode&&console.log(`[EVENT];Offset:${startTime};Action:START;Name:${event};Id:${eventId}`);for(let i=0,end=eventEmitters.length,asc=0<=end;asc?i<end:i>end;asc?i++:i--){const eventEmitter=eventEmitters[i];eventEmitter&&(eventsCalled+=(eventEmitter._listeners[`$${event}`]||[]).length,eventEmitter.handle.apply(eventEmitter,arguments))}const endTime=Math.round(1e3*window.performance.now())/1e3,diffTime=Math.round(1e3*(endTime-startTime))/1e3;return lastEventTime=endTime,perfMode&&console.log(`[EVENT];Offset:${endTime};
6Action:END;Name:${event};Id:${eventId};HandlersCalled:${eventsCalled};MsUsed:${diffTime}`),this}},isRTL:()=>"rtl"===__guard__($("html"),x=>x.attr("dir"))||"rtl"===__guard__($("body"),x1=>x1.attr("dir")),isIE:()=>"Microsoft Internet Explorer"===navigator.appName||!(!navigator.userAgent.match(/Trident/)&&!navigator.userAgent.match(/rv:11/))||void 0!==$.browser&&1===$.browser.msie,isKeySpace:e=>"Spacebar"===e.key||" "===e.key,isKeyEscape:e=>"Escape"===e.key,isKeyEnter:e=>"Enter"===e.key,contentInitializerListener:[],registerContentInitializer(cb,preAppStart){null==preAppStart&&(preAppStart=!1),T.Utils.contentInitializerListener.push({listener:cb,preAppStart:preAppStart})},unregisterContentInitializer(cb,preAppStart){null==preAppStart&&(preAppStart=!1);let reducedList=T.Utils.contentInitializerListener.filter(listenerData=>!(listenerData.preAppStart===preAppStart&&listenerData.listener===cb));T.Utils.contentInitializerListener=reducedList},performContentInitializationOnStartup:preAppStart=>T.Utils.contentInitializerListener.forEach(function(listenerData){if(listenerData.preAppStart===preAppStart)return listenerData.listener(document)}),performContentInitializationOnReplacement:(preAppStart,container)=>T.Utils.contentInitializerListener.forEach(function(listenerData){if(listenerData.preAppStart===preAppStart)return listenerData.listener(container)}),startContentInitialization:()=>T.Utils.application.getModuleById(1)._events.on("dom:replacement",container=>T.Utils.performContentInitializationOnReplacement(!1,container)),slideMarkupCloned:T.Utils.slideMarkupCloned||[],registerSlideMarkupCloned(cb){T.Utils.slideMarkupCloned.push(cb)},notifySlideMarkupCloned:data=>T.Utils.slideMarkupCloned.forEach(listener=>listener(data)),copyVoucherCode(target){const textToCopy=target.textContent;navigator.clipboard&&navigator.clipboard.writeText&&navigator.clipboard.writeText(textToCopy)},createController($domElement,name,decorator,dataAttributes){$domElement.append(`<div class='js-technical-controller' data-t-name='${name}' data-t-decorator='${decorator}'></div>`);const $controller=$domElement.children(".js-technical-controller").last();if(null!=dataAttributes)for(let key of Array.from(Object.keys(dataAttributes)))$controller.data(key,dataAttributes[key]);if($controller.length>0){const controllerMap=T.Utils.application._sandbox.addModules($controller[0]);return controllerMap[Object.keys(controllerMap)[0]]}},one_hour_in_milliseconds:36e5,getCookie(name){const nameValuePairStrings=document.cookie.split(";");for(let nameValuePairString of Array.from(nameValuePairStrings)){const[cookieName,cookieValue]=Array.from(nameValuePairString.split("="));if(cookieName.trim()===name)return cookieValue}return null},setCookie(name,value,hours){let expires="";if(hours){const date=new Date;date.setTime(date.getTime()+hours*T.Utils.one_hour_in_milliseconds),expires=`; expires=${date.toGMTString()}`}return document.cookie=name+"="+value+expires+"; path=/"},deleteCookie:name=>T.Utils.setCookie(name,"",-24),getPageDimensions:()=>$("body").data("page-dimensions"),replaceImagePlaceholder:(url,width,height)=>null===url||void 0===url?url:url.replace("{width}",width).replace("{height}",height),replaceImageExtension(url,width,height,isWebpConversion){return null===url||void 0===url||url.includes(".webp")?url:isWebpConversion&&url.includes(".png")?this.replaceImagePlaceholder(url.replace(".png",".webp"),width,height):!(!isWebpConversion||!url.includes(".jpg"))&&this.replaceImagePlaceholder(url.replace(".jpg",".webp"),width,height)},splitStringBySeparator(splitString,separator){if(splitString){return splitString.split(separator)}return!1},updateHeadWithSchemaLDJson(jsonData,id,type){const script=document.createElement("script");script.setAttribute("type",type),script.setAttribute("id",id),document.body.appendChild(script),script.append(jsonData),$("head").append(script)},isInViewport(element){var elementTop=$(element).offset().top,elementBottom=elementTop+$(element).outerHeight(),viewportTop=$(window).scrollTop(),viewportBottom=viewportTop+$(window).height();return elementBottom>viewportTop&&elementTop<viewportBottom},registerAjaxCallbackAfterSync(id,callback,namespace){null==this.ajaxCallbacksAfterSync&&(this.ajaxCallbacksAfterSync={});let registrations=this.ajaxCallbacksAfterSync[id];null==registrations&&(registrations=[]);let overwroteByNamespace=!1;if(null!=namespace)for(let registration of registrations)if(registration.namespace==namespace){registration.callback=callback,overwroteByNamespace=!0;break}overwroteByNamespace||(registrations.push({callback:callback,namespace:namespace}),this.ajaxCallbacksAfterSync[id]=registrations)},registerPopStateHandler(id,handler){null==this.popStateHandlers&&(this.popStateHandlers={}),this.popStateHandlers[id]=handler},getLayout:()=>T.Utils.application._sandbox.getModuleById($("body").data("t-id")),isObject(obj){var type=typeof obj;return!(!obj||"object"!==type&&"function"!==type||Array.isArray(obj))},isComponentAvailableInTerrific(elementsToCheck){Array.isArray(elementsToCheck)||(elementsToCheck=[elementsToCheck]);for(let elToCheck of elementsToCheck){let terrificComponent=null;if(!elToCheck.hasAttribute("data-t-id"))return!1;try{terrificComponent=T.Utils.application._sandbox.getModuleById(elToCheck.getAttribute("data-t-id"))}catch(e){return!1}if(!terrificComponent||!terrificComponent.$ctx)return!1}return!0},escapeQuotesForTracking:value=>value.replace(/"/g,'\\"').replace(/'/g,"'"),htmlEncodeValue:(name,value)=>(("string"==typeof value||value instanceof String)&&(value=T.Utils.escapeQuotesForTracking(value)),value),preconditions:{}
6,preconditionCallbacks:{},waitForPrecondition(id,handler){this.preconditions[id]?handler():(null==this.preconditionCallbacks[id]&&(this.preconditionCallbacks[id]=[]),this.preconditionCallbacks[id].push(handler))},resetPrecondition(id){id&&this.preconditions[id]&&(this.preconditions[id]=!1,delete this.preconditionCallbacks[id])},fulfillPrecondition(id){if(this.preconditions[id]=!0,null!=this.preconditionCallbacks[id])for(let callback of this.preconditionCallbacks[id])"function"==typeof callback&&callback()},registerAjaxRequestHandler(container,selector){$(container).find(`:not(:input).${selector}, button.${selector}`).on("click allsynced",function(ev){ev.currentTarget&&null!=$(ev.currentTarget).data("followuplink")?T.Utils.onAjaxControllerTriggered(ev,!0):(ev.preventDefault(),T.Utils.debounce(ev=>T.Utils.onAjaxControllerTriggered(ev,!0),250)(ev))})},handleThrottleEvent(fn,waitTime){let inThrottle;return function(){const args=arguments,context=this;inThrottle||(fn.apply(context,args),inThrottle=!0,setTimeout(()=>inThrottle=!1,waitTime))}},handleAutoCloseModalPopUp(eventType){this.isAutoClosePopup="keypress"!==eventType},setAnchorTargetScrollMargin(height){$("body [id]").css("scroll-margin-top",height)},getRandomValueWithInRange:(minValue,maxValue)=>minValue+(maxValue-minValue+1)*crypto.getRandomValues(new Uint32Array(1))[0]/2**32|0,sanitizeText:text=>(text=text.replaceAll("'","").replaceAll('"',""),$("<div>").text(text).html())}),window.addEventListener("popstate",function(event){if(null!=T.Utils.popStateHandlers)for(let handlerId in T.Utils.popStateHandlers){let handler=T.Utils.popStateHandlers[handlerId];"function"==typeof handler&&handler()}}),T.Utils.configDoTJS(),T.Utils.registerContentInitializer(container=>$(container).find(".js-print-dialog").on("click",function(ev){return ev.preventDefault(),T.Utils.debounce(ev=>window.print(),250)(ev)})),T.Utils.registerContentInitializer(container=>{T.Commons.LazyLoadingInitializer.initLazyLoadingImages(container)},!0),T.Utils.registerContentInitializer(container=>{T.Utils.registerAjaxRequestHandler(container,"js-trigger-ajax-request"),T.Utils.initialAjaxRequestTrigger(container)}),T.Utils.registerContentInitializer(container=>{T.Utils.registerAjaxRequestHandler(container,"js-trigger-prepare-ajax-request")},!0),ready=function(){const allImages=$(".a-image img"),imagesInViewport=[];if(T.Utils.areThereImages=!1,T.Utils.areThereImagesInViewport=!1,allImages.length>0&&(T.Utils.areThereImages=!0,allImages.each((index,image)=>{T.Utils.isVisibleOnScreen($(image))&&$(image).is(":visible")&&imagesInViewport.push(image)}),imagesInViewport.length>0)){T.Utils.areThereImagesInViewport=!0;var interval=setInterval(()=>(()=>{const result=[];for(let index=0;index<imagesInViewport.length;index++){const imageInViewport=imagesInViewport[index];if(!$(imageInViewport).hasClass("lazyloaded"))break;index===imagesInViewport.length-1?(null!=T.Utils.application&&void 0!==this._modules&&T.Utils.application.getModuleById(1)._events.emit("images:allImagesInViewPortAreLoaded"),result.push(clearInterval(interval))):result.push(void 0)}return result})(),300);return setTimeout(()=>clearInterval(interval),2e4)}},$(document).ready(ready),$(document).on("change",":input:not(button).js-trigger-ajax-request, span.js-trigger-ajax-request",T.Utils.debounce(ev=>{T.Utils.onAjaxControllerTriggered(ev)},250)),$(document).on("allsynced",":input:not(button).js-trigger-ajax-request, span.js-trigger-ajax-request",ev=>T.Utils.onAjaxControllerTriggered(ev)),function(){let parser=new UAParser,$html=$("html"),results=parser.getResult(),browserData={browser:{name:results.browser.name?results.browser.name.toLowerCase().split(" ")[0]:"unknown",version:results.browser.version?results.browser.version.toLowerCase().split(".")[0]:"unknown"},os:results.os.name?results.os.name.toLowerCase().split(" ")[0]:"unknown"};$html.attr("data-magic-ua",browserData.browser.name),T.Utils.browserName=browserData.browser.name,$html.attr("data-magic-ua-ver",browserData.browser.version),$html.addClass(`${browserData.os}-os`)}(),T.Utils.registerViewportQuery(),$(window).on("storage",T.Utils.onStorage),$.fn.matchHeight._maintainScroll=!0}(jQuery),function($){T.Module.prototype.$=function(selector){return $(this._ctx).find(selector)}}(jQuery),ready=function(){if(window.performance&&window.mbmdPerformanceMode&&0===$(".js-performance-analyser-log").length&&(console.log("PerformanceAnalyser: Start analysis"),setTimeout(()=>{T.Commons.PerformanceAnalyser.logOutPerformanceData(),T.Commons.PerformanceAnalyser.logOutComponents
6Data(),T.Commons.PerformanceAnalyser.cleanUpMeasures(),console.log("PerformanceAnalyser: End analysis")},1e4)),null!=T.Utils.application)return;let isAppStartupExecuted=!1;!function(){if(isAppStartupExecuted)return;isAppStartupExecuted=!0,T.Utils.setupPerformanceLogging(),T.Utils.performContentInitializationOnStartup(!0),T.Utils.isTouchDevice="ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0,T.Utils.trackWindowWidth();const application=new T.Application($("body")[0]);T.Utils.application=application,application.registerModules(),application.start(void 0,!1,!0).then(function(){application.getModuleById($("body").data("t-id")).performPageLoadTracking(),T.Utils.viewportEventsEnabled=!0,T.Utils.performContentInitializationOnStartup(!1),T.Utils.startContentInitialization()})}(),window.location.hash&&T.Commons.AnchorLinkObserver.startObserving()},$(document).ready(ready); 7function __guard__(value,transform){return void 0!==value&&null!==value?transform(value):void 0}function __guardMethod__(obj,methodName,transform){return void 0!==obj&&null!==obj&&"function"==typeof obj[methodName]?transform(obj,methodName):void 0}function __guard__(value,transform){return void 0!==value&&null!==value?transform(value):void 0}function __guard__(value,transform){return void 0!==value&&null!==value?transform(value):void 0}function __guard__(value,transform){return void 0!==value&&null!==value?transform(value):void 0}!function($){T.Module.BackgroundImage=T.createModule({start(resolve){const mod=this;this.$ctx=$(this._ctx),this.$template=this.$(".tpl-backgroundimage"),T.Utils.registerMq("lg",{match:()=>mod._events.on("backgroundimage:set",$.proxy(mod.onSetImage,mod)),unmatch:()=>mod._events.off("backgroundimage:set")});const src=this.$ctx.data("src");return null!=src&&this.renderImage(src,!1),resolve()},renderImage(src,fadeable){const tplCode=this.$template.html(),template=doT.template(tplCode);if(null!=src){const $newImage=$(template({fadeable:fadeable,src:src})).filter(".a-image");return this.swapImage($newImage)}{const $oldImage=this.$(".a-image"),$img=$oldImage.find("img");return $img.one("transitionend",()=>$oldImage.remove()),$img.removeClass("fade-in")}},swapImage($newImage){const $oldImage=this.$(".a-image");$newImage.appendTo(this.$ctx);const $img=$newImage.find("img");if(!Modernizr.csstransitions||!$img.hasClass("fadeable"))return $img.addClass("fade-in"),$oldImage.remove();$img.on("load",function(){if($img.hasClass("lazyloading")||$img.hasClass("lazyloaded"))return $img.one("transitionend",()=>$oldImage.remove()),setTimeout(()=>$img.addClass("fade-in"),10)})},onSetImage(data){return this.renderImage(data.src,!0)}})}(jQuery),function($){T.Module.ErrorMessage=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$ctx.hide(),this.$ctx.slideDown(),resolve()}})}(jQuery),jQuery,T.Module.FormLabel=T.createModule({start:resolve=>resolve(),sync(){}}),function($){T.Module.ImageHotspots=T.createModule({start(resolve,reject){const $hotspots=this.$(".image-hotspot");$hotspots.each(function(){const $trigger=$(this);$trigger.css({left:$trigger.data("x"),top:$trigger.data("y")})}),$hotspots.on("click",function(ev){return ev.preventDefault(),ev.stopPropagation()}),resolve()}})}(jQuery),function($){T.Module.ImageOcr=T.createModule({start(resolve,reject){this.$ctx=$(this._ctx),this.zoomFactor=1,this.oldFrameLeft=0,this.oldFrameTop=0,this.isOCRframeDragged=!1,this.selector={sparepartScanFrame:".js-sparepart-scan-frame"},this.vikbeValue=this.$ctx.data("vikbe-value"),this.ocrUrlImageSmall=this.$ctx.data("ocr-url-small"),this.ocrUrlImageLarge=this.$ctx.data("ocr-url-large"),this.$image=this.$ctx.find("img"),this.$ocrFrame=this.$ctx.find(this.selector.sparepartScanFrame),this.initialPosLeft=parseInt(this.$ocrFrame.data("initial-pos-left"),10),this.initialPosTop=parseInt(this.$ocrFrame.data("initial-pos-top"),10),this.ocrFrameDefaultSizes={mobile:{width:parseInt(this.$ocrFrame.data("width-mobile")),height:parseInt(this.$ocrFrame.data("height-mobile"))},tablet:{width:parseInt(this.$ocrFrame.data("width-tablet")),height:parseInt(this.$ocrFrame.data("height-tablet"))},desktop:{width:parseInt(this.$ocrFrame.data("width-desktop")),height:parseInt(this.$ocrFrame.data("height-desktop"))}},isNaN(this.initialPosLeft)&&(this.initialPosLeft=0),isNaN(this.initialPosTop)&&
7(this.initialPosTop=0),this.zoomFactor=1,this.oldFrameLeft=0,this.oldFrameTop=0,this._events.on("resetFramePosition",ev=>this.onResetFramePosition(ev)),this._events.on("setZoom",data=>this.onSetZoom(data)),this.initializeEvents(),resolve()},transmitOCRData(ev,ocrData){let url;url="mobile"===T.Utils.getViewport()?this.ocrUrlImageSmall:this.ocrUrlImageLarge;const request=T.Utils.startAjaxRequest(!1,{url:url,dataType:"JSON",data:ocrData});if(!request)return!1;request[0].done(response=>this.transmitOCRDataSuccessCallback(response)).fail(xhr=>this.transmitOCRDataErrorCallback(xhr))},transmitOCRDataErrorCallback(xhr){this.isOCRframeDragged=!1,console.info(xhr)},transmitOCRDataSuccessCallback(response){response.number?(this._events.emit("sparepartNumberResult",{$component:this.$ocrFrame,sparepartnumber:response.number,result:"location_number_success",action:this.isOCRframeDragged?"drag":"click"}),this._events.emit("findsparepart",{sparepartnumber:response.number}),this.isOCRframeDragged=!1,this._events.emit("sparepartsCloseLayer")):(this._events.emit("sparepartNumberResult",{$component:this.$ocrFrame,sparepartnumber:"",result:"location_number_failure",action:this.isOCRframeDragged?"drag":"click"}),this.isOCRframeDragged=!1,this.showNoPartNumberFoundPopover())},showNoPartNumberFoundPopover(){this._events.emit("popover:open",this.$ocrFrame)},collectOCRData(ev){const realWidth=this.$image[0].naturalWidth,displayWidth=this.$image.width()||0;if(0===displayWidth)return void console.log("Can't do OCR because image is not loaded yet");const currentDisplayFactor=displayWidth*this.zoomFactor/realWidth,topLeftX=parseInt(this.$ocrFrame.offset().left)-parseInt(this.$image.offset().left),topLeftY=parseInt(this.$ocrFrame.offset().top)-parseInt(this.$image.offset().top),bottomRightX=topLeftX+parseInt(this.$ocrFrame.css("width")),bottomRightY=topLeftY+parseInt(this.$ocrFrame.css("height")),normalizedTopLeftX=Math.round(topLeftX/currentDisplayFactor),normalizedTopLeftY=Math.round(topLeftY/currentDisplayFactor),normalizedBottomRightX=Math.round(bottomRightX/currentDisplayFactor),normalizedBottomRightY=Math.round(bottomRightY/currentDisplayFactor);this.transmitOCRData(ev,{vikbe:this.vikbeValue,x1:normalizedTopLeftX,x2:normalizedBottomRightX,y1:normalizedTopLeftY,y2:normalizedBottomRightY})},initializeEvents(){this.$ocrFrame.removeClass("hidden"),this.$ctx.on("click",$.proxy(this.onFrameClick,this)),this.$ctx.on("touchstart mousedown",this.selector.sparepartScanFrame,$.proxy(this.onFrameTouchStart,this)),this.$ctx.on("touchmove mousemove",this.selector.sparepartScanFrame,$.proxy(this.onFrameTouchMove,this)),this.$ctx.on("touchmove mousemove",$.proxy(this.onFrameTouchMove,this)),this.$ctx.on("touchend mouseup",this.selector.sparepartScanFrame,$.proxy(this.onFrameTouchEnd,this))},setFramePosition(leftPos,topPos){const leftPosCtx=parseInt(this.$ctx.css("left")),topPosCtx=parseInt(this.$ctx.css("top")),widthFrame=parseInt(this.$ocrFrame.css("width")),heightFrame=parseInt(this.$ocrFrame.css("height"));if(-1===leftPos&&(leftPos=parseInt(this.$ocrFrame.css("left"))),-1===topPos&&(topPos=parseInt(this.$ocrFrame.css("top"))),leftPos<0&&(leftPos=0),topPos<0&&(topPos=0),this.$ctx.width()>0){const rightMax=this.$ctx.width();leftPos+widthFrame+leftPosCtx>rightMax&&(leftPos=rightMax-widthFrame)}if(this.$ctx.height()>0){const bottomMax=this.$ctx.height();topPos+heightFrame+topPosCtx>bottomMax&&(topPos=bottomMax-heightFrame)}this.$ocrFrame.css({left:leftPos+"px ",top:topPos+"px "})},setFrameZoom(data){this.zoomFactor=data.zoomFactor;const viewport=T.Utils.getViewport(),frameWidth=this.ocrFrameDefaultSizes[viewport].width,frameHeight=this.ocrFrameDefaultSizes[viewport].height,newWidth=frameWidth*data.zoomFactor,newHeight=frameHeight*data.zoomFactor;this.$ocrFrame.css("width",newWidth+"px"),this.$ocrFrame.css("height",newHeight+"px"),this.setFramePosition(-1,-1)},onFrameTouchStart(ev){switch(this.oldFrameLeft=parseInt(this.$ocrFrame.css("left")),this.oldFrameTop=parseInt(this.$ocrFrame.css("top")),ev.type){case"touchstart":this.touchOrigin=ev.originalEvent.touches[0];break;default:this.touchOrigin=ev,ev.preventDefault(),ev.stopPropagation()}},onFrameTouchEnd(ev){this.isOCRframeDragged=!0,delete this.touchOrigin},onFrameTouchMove(ev){let evData=ev;if(this.touchOrigin){let horizontalDistance,verticalDistance;switch(ev.type){case"touchmove":evData=ev.originalEvent.touches[0],horizontalDistance=ev.originalEvent.touches[0].pageX-this.touchOrigin.pageX,verticalDistance=ev.originalEvent.touches[0].pageY-this.touchOrigin.pageY;break;default:horizontalDistance=ev.pageX-this.touchOrigin.pageX,verticalDistance=ev.pageY-this.touchOrigin.pageY}const newFrameLeft=this.oldFrameLeft+horizontalDistance,newFrameTop=this.oldFrameTop+verticalDistance;this.setFramePosition(newFrameLeft,newFrameTop)}this.lastMove||ev.preventDefault(),this.lastMove=evData},onFrameClick(ev){const viewport=T.Utils.getViewport();let newFrameLeft,newFrameTop;switch("mobile"!==viewport&&"tablet"!==viewport||(this.isOCRframeDragged=!1),this.oldFrameLeft=parseInt(this.$ocrFrame.css("left")),this.oldFrameTop=parseInt(this.$ocrFrame.css("top")),ev.type){case"touchmove":var horizontalDistance=ev.originalEvent.touches[0].pageX-this.touchOrigin.pageX,verticalDistance=ev.originalEvent.touches[0].pageY-this.touchOrigin.pageY;newFrameLeft=this.oldFrameLeft+horizontalDistance,newFrameTop=this.oldFrameTop+verticalDistance;break;default:newFrameLeft=ev.pageX-this.$ctx.offset().left-parseInt(this.$ocrFrame.css("width"))/2,newFrameTop=ev.pageY-this.$ctx.offset().top-parseInt(this.$ocrFrame.css("height"))/2}delete this.touchOrigin,this.setFramePosition(newFrameLeft,newFrameTop),this.collectOCRData(ev)},onResetFramePosition(data){this.$ctx.closest(data.$ctx).length&&this.setFramePosition(this.initialPosLeft,this.initialPosTop)},onSetZoom(data){this.$ctx.closest(data.$ctx).length&&this.setFrameZoom(data)}})}(jQuery),function($){T.Module.Link=T.createModule({start(resolve){this.$ctx=$(this._ctx),resolve()}})}(jQuery),function($){T.Module.Loader=T.createModule({start(resolve){return this._events.on("loader:close",$.proxy(this.onCloseLoa
7der,this)),this._events.on("loader:open",$.proxy(this.onOpenLoader,this)),this._events.on("loader:register",$.proxy(this.onRegisterLoader,this)),this._events.on("loader:reposition",$.proxy(this.onRepositionLoader,this)),this._events.emit("loader:register",{$ctx:$("body")}),$(window).on("resize",T.Utils.debounce($.proxy(this.onWindowResize,this),50)),resolve()},sync(){},createLoader(conf){if(null!=conf.$trigger.data("$loader"))return;const loaderMarkup=doT.template(this.$(".tpl-loader").html())({area:"area"===conf.loaderType,inlineArea:"inline-area"===conf.loaderType,layer:"layer"===conf.loaderType}),$loader=$(loaderMarkup);$loader.data("loader-configuration",conf);const $loadingIndicator=$loader.find(".js-loading-indicator, .loading-indicator");for(let i=0,end=T.Utils.loader.cssElementAmount,asc=0<=end;asc?i<end:i>end;asc?i++:i--)$loadingIndicator.append(`<span class="loader-el loader-el-${i}" />`);function setTextAndDoEventTracking(){conf.loaderTextConfig.doEventTracking&&T.Utils.getLayout().trackValues("Delay checkout process",{}),conf.loaderTextConfig.redirect||$loadingIndicator.append(`<span class="loading-text">${conf.loaderTextConfig.text}</span>`)}return conf.loaderClass&&$loader.addClass(conf.loaderClass),conf.loaderTextConfig&&conf.loaderTextConfig.text&&(conf.loaderTextConfig.delayInMilliSeconds?(conf.loaderTextConfig.redirect&&$loadingIndicator.append(`<span class="loading-text">${conf.loaderTextConfig.text}</span>`),this.timeout=setTimeout(()=>{setTextAndDoEventTracking()},conf.loaderTextConfig.delayInMilliSeconds)):setTextAndDoEventTracking()),this.setPosition($loader),"inline"===conf.loaderType?conf.$trigger.find(".a-loader").length||$loader.appendTo(conf.$trigger):"inline-area"===conf.loaderType?$loader.appendTo(conf.loaderArea):$loader.appendTo("body"),conf.$trigger.data("$loader",$loader),$loader},registerLoader($trigger){const mod=this,event=$trigger.data("loader-event");return $trigger.on(event,function(){return mod._events.emit("loader:open",$.extend($(this).data(),{$trigger:$trigger}))})},setPosition($loader){const conf=$loader.data("loader-configuration");if("area"===conf.loaderType){const $area=$(conf.loaderArea);if($loader.css({height:$area.outerHeight(),left:$area.offset().left,top:$area.offset().top,width:$area.outerWidth()}),"fixed"===$area.css("position"))return $loader.css({position:"fixed"})}},onCloseLoader(data){let $loader;if(null!=data.$trigger&&data.$trigger.length){data.$trigger.length>1&&console.warn("Warning, can't remove multiple loaders="+data.$trigger.length);const{$trigger:$trigger}=data;$loader=$trigger.data("$loader"),$trigger.removeData("$loader")}if(null!=data.$loader&&data.$loader.length&&({$loader:$loader}=data),null!=$loader&&$loader.remove(),this.timeout=clearTimeout(this.timeout),T.Utils.loaderRequestCounter>0)return--T.Utils.loaderRequestCounter},onOpenLoader(conf){this.createLoader(conf);return++T.Utils.loaderRequestCounter},onRegisterLoader(data){const mod=this;return data.$ctx.find("[data-loader]").each(function(){return mod.registerLoader($(this))})},onRepositionLoader(data){return this.setPosition(data.$loader)},onWindowResize(){const mod=this;return $(".a-loader.area").each(function(){return mod._events.emit("loader:reposition",{$loader:$(this)})})}})}(jQuery),function($){T.Module.LoadMore=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.elm={$body:$("body"),$button:$("button,.js-rebrush-loadmore",this.$ctx)},this.config=this.$ctx.data(),this.isActive=!1,this.closeLoader=$.proxy(this.closeLoader,this),this.openLoader=$.proxy(this.openLoader,this),this.onClickButton=$.proxy(this.onClickButton,this),this.elm.$button.on("click",$.proxy(this.onClickButton,this)),resolve()},sync(){}
7,closeLoader(){if(this.isActive)return this._events.emit("loader:close",{$trigger:this.elm.$button})},openLoader(){return this._events.emit("loader:open",{$trigger:this.elm.$button}),this.isActive=!0},onClickButton(ev){}})}(jQuery),function($){T.Module.Menu=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$ctx.on("click",()=>{this.toggleHeader()}),this.$ctx.on("keydown",e=>this.handleKeyDown(e)),$(window).on("keydown",e=>this.handleEscKeyDown(e)),resolve()},handleKeyDown(e){13===e.keyCode&&this.toggleHeader()},handleEscKeyDown(e){27===e.keyCode&&this.$ctx.hasClass("open")&&(this.toggleHeader(),this.$ctx.trigger("focus"))},toggleHeader(){this._events.emit("toggleHeader")}})}(jQuery),function($){T.Module.MenuLinks=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$menuLinks=this.$ctx.find(".menu-link"),this.$navigationFlyout=$(".m-navigation-flyout"),this.$menuLinks.on("click",e=>{this.handleLink(e)}),this.$ctx.on("keydown",e=>this.handleKeyDown(e)),resolve()},handleKeyDown(e){13===e.keyCode&&this.handleLink(e)},handleLink(e){const $currentTarget=$(e.currentTarget);this.hasLinkSubLevels($currentTarget)&&!this.isLinkLastlevel($currentTarget)&&(e.preventDefault(),this._events.emit("openHeader",e))},isLinkLastlevel($currentTarget){const id=$currentTarget.data("reference-id"),$link=this.$navigationFlyout.find(`.js-navigation-link[data-reference-id="${id}"]`);return this.getDataLinkHierarchy($link)>2},hasLinkSubLevels($currentTarget){const id=$currentTarget.data("reference-id");return 0!==this.$navigationFlyout.find(`.js-navigation-link-list[data-submenu-id="${id}"]`).length},getDataLinkHierarchy:$element=>$element.closest(".js-navigation-col").data("link-hierarchy")})}(jQuery),function($){T.Module.MoreContentToggleLink=T.createModule({start(resolve){const mod=this;this.$ctx=$(this._ctx),this.selectors={inTransition:"is-in-transition"},this.events={transitionFinished:"transitionend"},this.disableFormInputsOnToggle=this.$ctx.data("disable-form-inputs-on-toggle"),this.triggerContentUpdate=this.$ctx.data("trigger-content-update"),this.isVisibleMobile=this.$ctx.data("is-visible-mobile"),this.isVisibleTablet=this.$ctx.data("is-visible-tablet"),this.isVisibleDesktop=this.$ctx.data("is-visible-desktop"),this.isVisibleViewPortDefined=this.isVisibleMobile||this.isVisibleTablet||this.isVisibleDesktop,this.isVisibleViewPortDefined&&(this.isVisibleMobile=!!this.isVisibleMobile,this.isVisibleTablet=!!this.isVisibleTablet,this.isVisibleDesktop=!!this.isVisibleDesktop),this.$contentToggle=this.$(".js-content-toggle"),this.$contentLessToggle=this.$(".js-content-less-toggle"),this.$content=this.$ctx.data("content-selector")?$(`.${this.$ctx.data("content-selector")}`):this.$(".content"),this.moreText=this.$contentToggle.data("more-text"),this.lessText=this.$contentToggle.data("less-text"),this.$toggleText=this.$contentToggle.find(".text"),this.$inputs=this.disableFormInputsOnToggle?$(":input",this.$content):{},this.$morelessbutton=this.$(".more-less-button, .js-more-less-button"),this._events.on("t.sync",()=>this.sync()),this.$ctx.on("click",".js-content-toggle, .js-content-less-toggle",$.proxy(this.onClickContentToggle,this)),this.$ctx.on("closeMoreLessContent",$.proxy(this.onCloseMoreLessContent,this)),$(window).on("resize",T.Utils.debounce($.proxy(this.onResize,this),50)),this._events.on("openMoreLessLink",$.proxy(this.onOpenMoreLessLink,this)),this.$ctx.on("morecontenttogglelink:openMoreLessLink",data=>{this.onOpenMoreLessLink(data)}),this.$ctx.on("morecontenttogglelink:toggleMoreLessLink",()=>{this.onToggleMoreLessLink()}),this.$content.on(this.events.transitionFinished,()=>mod.sendRecalc(mod.$content)),this.onResize();const validationHandling=this.$ctx.data("validation-handling");return(this.$ctx.data("initial-open")||validationHandling&&this.$ctx.find(".has-error, :input[required]").length>0)&&this.toggleContent(),resolve()},sync(){this.isSynced||(setTimeout(()=>{this.disableFormInputsOnToggle&&this.toggleFormInputsState(!0)},150),this.isSynced=!0)},activate(){this.$contentToggle.removeClass("hidden"),this.$contentLessToggle.removeClass("hidden"),this.$morelessbutton.removeClass("hidden"),this.$content.hasClass("is-open")&&(this.$contentToggle.addClass("is-open"),this.$contentLessToggle.addClass("is-open"))},closeContent(){const mod=this;return Modernizr.csstransitions?(this.$content.addClass(mod.selectors.inTransition),this.setContentHeight(),this.$content.off(mod.events.transitionFinished).one(mod.events.transitionFinished,()=>mod.$content.removeClass(mod.selectors.inTransition).css("max-height","")),this.$content.removeClass("is-open"),setTimeout(()=>mod.$content.css("max-height","0"),10)):this.$content.removeClass("is-open"),this.$contentToggle.removeClass("is-open"),this.$toggleText.text(this.moreText),this.sendRecalc(this.$content)},deactivate(){return this.$contentToggle.addClass("hidden"),this.$contentLessToggle.addClass("hidden"),this.$morelessbutton.addClass("hidden"),this.$content.addClass("is-open").css("max-height","")},openContent(noAnimation){const mod=this;return Modernizr.csstransitions&&!noAnimation?(this.setContentHeight(),this.$content.off(mod.events.transitionFinished).one(mod.events.transitionFinished,()=>{mod.$content.removeClass("is-in-transition").css("max-height","")}).addClass(mod.selectors.inTransition),this.$content.addClass("is-open").css("max-height","")):(this.setContentHeight(),this.$content.addClass("is-open").css("max-height","")),this.$contentToggle.addClass("is-open"),this.$toggleText.text(this.lessText),this.sendRecalc(this.$content)},sendRecalc($element){this._events.emit("recalc",{$element:$element,$ctx:this.$ctx})},setContentHeight(){return this.$content.css("max-height",this.$content[0].scrollHeight),this.sendRecalc(this.$content)},toggleFormInputsState(state){this.$inputs.prop("disabled",state)},toggleContent(){if(this.$contentToggle.hasClass("is-open"))this.closeContent(),this.disableFormInputsOnToggle&&this.toggleFormInputsState(!0);else{if(this.disableFormInputsOnToggle&&this.toggleFormInputsState(!1),this.triggerContentUpdate){let $contentUpdate=this.$content.find(".js-content-update");if($contentUpdate.length>0)return this.openContent(!0),void $contentUpdate.trigger("morecontenttogglelink.contentUpdate")}this.openContent(!1)}},onClickContentToggle(ev){return this.toggleContent(),ev.preventDefault()},onCloseMoreLessContent(ev){return this.$contentToggle.hasClass("is-open")&&this.toggleContent(),ev.preventDefault()},onOpenMoreLessLink(data){const mod=this;!mod.$ctx.closest(`[data-t-id='${data.parentId}']`).length&&mod.$contentToggle.hasClass("is-open")||mod.toggleContent()},onToggleMoreLessLink(){this.toggleContent()},onResize(){if(this.activate(),this.isVisibleViewPortDefined)switch(T.Utils.getViewport()){case"mobile":this.isVisibleMobile||this.deactivate();break;case"tablet":this.isVisibleTablet||this.deactivate();break;
7case"desktop":this.isVisibleDesktop||this.deactivate()}}})}(jQuery),function($){T.Module.ProgressBar=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.score=this.$ctx.data("score"),this.totalScore=this.$ctx.data("total-score"),this.$progressBar=this.$ctx.find(".js-progress-bar"),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.calculateProgress(),this.isSynced=!0)},calculateProgress(){if(this.score>0){const width=parseInt(this.score/this.totalScore*100);this.$progressBar.css("width",width+"%")}else this.$progressBar.css("width",0)}})}(jQuery),jQuery,T.Module.Rating=T.createModule({start(resolve){const $score=this.$("[data-score]"),scoreVal=parseFloat($score.data("score"));if(scoreVal>0){const scoreRel=parseInt(scoreVal.toFixed(2).substring(2));if($score.children(".icon").slice(0,Math.floor(scoreVal)).addClass("is-active"),scoreRel>0){const $scorePos=$score.children().eq(Math.floor(scoreVal)-1),$scorePosClone=$scorePos.clone();setTimeout(function(){const width=$score.children().eq(0).width(),$rel=$scorePosClone.addClass("is-active-partly").css("width",Math.round(scoreRel/100*width)+"px");return $scorePos.after(" ").after($rel).after(" ")},100)}}return resolve()},sync(){}}),function($){T.Module.RatingDimension=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$score=this.$ctx.find("[data-score]"),this.$scoreVal=parseFloat(this.$score.data("score")),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.calculateRating(),this.isSynced=!0)},calculateRating(){if(this.$scoreVal>0){const scoreRel=parseInt(this.$scoreVal.toFixed(2).substring(2));if(this.$score.children().slice(0,Math.floor(this.$scoreVal)).addClass("is-active"),scoreRel>0){const $scorePos=this.$score.children().eq(Math.floor(this.$scoreVal)-1),$scorePosClone=$scorePos.clone(),width=this.$score.children().eq(0).width(),$rel=$scorePosClone.addClass("is-active-partly").css("width",Math.round(scoreRel/100*width)+"px");return $scorePos.after(" ").after($rel).after(" ")}}}})}(jQuery),function($){T.Module.SelectedFilter=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.name=this.$ctx.data("input-name"),this.value=this.$ctx.data("input-value"),this.minValue=this.$ctx.data("input-minvalue"),this.maxValue=this.$ctx.data("input-maxvalue"),this.type=this.$ctx.data("input-type"),this.deselectable=this.$ctx.data("input-deselectable"),this.targeturl=this.$ctx.data("input-targeturl"),this.$ctx.on("click",e=>this.onClick(e)),resolve()},sync(){},onClick(e){return e.preventDefault(),null==this.deselectable&&null==this.targeturl||!0===this.deselectable&&(""===this.targeturl||null==this.targeturl)?this._events.emit("selectedfilter:clicked",{name:this.name,value:this.value,minValue:this.minValue,maxValue:this.maxValue,valueType:this.valuetype,type:this.type,resetValue:!0,$ctx:this.$ctx}):!0===this.deselectable&&""!==this.targeturl?location.href=this.targeturl:void 0},onReset:()=>!0})}(jQuery),function($){T.Module.Text2col=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$initText=$([]);const $images=this.$ctx.find("img");return this._events.on("recalc.tab",$.proxy(this.onRecalc,this)),this._events.on("t.sync",$.proxy(this.sync,this)),this.isSynced=!1,T.Commons.LazyLoadingInitializer.disableLazyLoading($images),resolve()},sync(){if(!this.isSynced){const mod=this;this.isSynced=!0,this.$text=this.$(".columnize"),T.Utils.registerMq("lg",{match:()=>mod.doColumnize(),unmatch:()=>mod.unColumnize()})}},doColumnize(){const mod=this;if(this.$('.lazyload, .lazyloading, img[loading="lazy"]').not(".lazyloaded").length<1){const $images=mod.$ctx.find("img");return $images.each(function(i,img){const $img=$(img);return $img.css({height:$img.height(),width:$img.width()})}),this.$text=this.$(".columnize"),this.$initText=this.$text.clone(!0,!0),this.$text.columnize({columns:2}),$images.each(function(i,img){return $(img).css({height:"",width:""})})}return setTimeout(()=>mod.doColumnize(),200)},unColumnize(){return this.$text=this.$(".columnize").replaceWith(this.$initText),this.$initText=$([])},onRecalc(data){if($(data.$element).find(".columnize").length>0)return this.unColumnize(),this.doColumnize()}})}(jQuery),function($){T.Module.Tooltip=T.createModule({start(resolve){return this._events.on("tooltip:open",$.proxy(this.onOpenTooltip,this)),this._events.on("tooltip:close",$.proxy(this.onCloseTooltip,this)),resolve()},sync(){},correctPosition($tooltip){let overlap=T.Utils.getOverlapDirection($tooltip);const offscreen=T.Utils.getOffScreenDirection($tooltip);switch("none"===overlap&&"none"!==offscreen&&(overlap=offscreen),overlap){case"top":case"left":case"right":return $tooltip.data("position-correct","bottom"),this.positionTooltip($tooltip)}},createTooltip($trigger){const position=$trigger.data("tooltip-position")||"top",tooltipMarkup=doT.template(this.$(".tpl-tooltip").html())({text:$trigger.attr("title"),position:position}),$tooltip=$(tooltipMarkup);return $tooltip.appendTo("body"),$trigger.data("$tooltip",$tooltip),$tooltip.data("$trigger",$trigger),$tooltip},hideTooltip:$tooltip=>$tooltip.removeClass("is-active"),positionTooltip($tooltip){let left,top;const $trigger=$tooltip.data("$trigger"),triggerOffset=$trigger.offset();$tooltip.removeClass("tooltip-bottom tooltip-left tooltip-right tooltip-top");const position=$tooltip.data("position-correct")||$trigger.data("tooltip-position")||"top",baseX=triggerOffset.left,baseY=triggerOffset.top;switch(position){case"bottom":$tooltip.addClass("tooltip-bottom"),left=baseX+$trigger.outerWidth()/2-$tooltip.outerWidth(!0)/2,to
7p=baseY+$trigger.outerHeight();break;case"left":$tooltip.addClass("tooltip-left"),left=baseX-$tooltip.outerWidth(!0),top=baseY+$trigger.outerHeight()/2-$tooltip.outerHeight(!0)/2;break;case"right":$tooltip.addClass("tooltip-right"),left=baseX+$trigger.outerWidth(),top=baseY+$trigger.outerHeight()/2-$tooltip.outerHeight(!0)/2;break;case"top":$tooltip.addClass("tooltip-top"),left=baseX+$trigger.outerWidth()/2-$tooltip.outerWidth(!0)/2,top=baseY-$tooltip.outerHeight(!0)}return $tooltip.css({left:left,top:top}),this.correctPosition($tooltip)},showTooltip:$tooltip=>$tooltip.addClass("is-active"),onCloseTooltip(data){const{$trigger:$trigger}=data,$tooltip=$trigger.data("$tooltip");if($tooltip&&$tooltip.length)return $tooltip.remove(),this.hideTooltip($tooltip),$trigger.removeData("$tooltip"),$trigger.attr("title",$trigger.data("title")),$trigger.removeData("title"),$(window).off("orientationchange.tooltip resize.tooltip")},onOpenTooltip(data){const{$trigger:$trigger}=data;if($trigger.length){const $tooltip=this.createTooltip($trigger);return this.positionTooltip($tooltip),this.showTooltip($tooltip),$trigger.data("title",$trigger.attr("title")),$trigger.removeAttr("title"),$(window).on("orientationchange.tooltip resize.tooltip",$.proxy(this.onWindowResize,this))}},onWindowResize(){const mod=this;return $(".a-tooltip").each(function(){return mod.positionTooltip($(this))})}})}(jQuery),function($){T.Module.ToTop=T.createModule({start(resolve){return $(this._ctx).on("click","",$.proxy(this.onClick,this)),resolve()},onClick:ev=>(T.Utils.scrollToTop(),ev.preventDefault())})}(jQuery),function($){T.Module.MyprofileAddNewCard=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this._selector={myprofileAddCard:".js-myprofile-add-card",addNewCardBtn:".js-add-new-card"},this.elm={$myprofileAddCard:this.$ctx.closest(this._selector.myprofileAddCard),$addNewCardBtn:this.$(this._selector.addNewCardBtn)},this.elm.$addNewCardBtn.on("click",()=>this.triggerAjaxForNewCard()),this.addNewCardAjaxId=this.elm.$myprofileAddCard.data("ajaxId"),resolve()},sync(){this.isSynced||(this.isSynced=!0)},triggerAjaxForNewCard(){const req=T.Utils.startAjaxRequest(this.addNewCardAjaxId);if(!req)return!1;req[0].done(response=>this.myProfilePaymentDecorator(response))},myProfilePaymentDecorator(){const mypaymentformcontainer=this.$ctx.find("#profilePageAddCardApiForm"),mypaymentcontainerdecorator=mypaymentformcontainer.data("t-decorator"),mypaymentreplacecontainer=mypaymentformcontainer.find("[data-replace-container]").data("replace-container");if("ComputopHPP"===mypaymentcontainerdecorator&&"add-new-card-layer-computop"===mypaymentreplacecontainer){this._sandbox.getModuleById(mypaymentformcontainer.data("t-id")).frameSetAttributes()}}})}(jQuery),jQuery,T.Module.AddToCartPopover=T.createModule({start:resolve=>resolve(),sync(){}}),function($){T.Module.AdvanceEnumber=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$egDivision=this.$ctx.find("[name='egDivision']"),this.$enumber=this.$ctx.find("#enumber"),this.$button=this.$ctx.find(".js-advance-enumber-button"),this.$genericButton=this.$ctx.find(".js-advance-enumber-generic-button"),this.$genericButton.on("click",ev=>this.bookButtonClickHandler(ev)),this.$button.on("click",ev=>this.onSubmitEnumber(ev)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},onSubmitEnumber(ev){if(""!==this.$enumber.val()){let eventData={eg:this.$egDivision.val(),"e-number":this.$enumber.val()};T.Utils.getLayout().trackValues("enumber_entry",eventData)}else this.$enumber.addClass("had-focus is-empty")},bookButtonClickHandler(ev){const enumber=this.$ctx.find(".searchfield-results-itemlabel").val();if(enumber){const data={"e-number":enumber};T.Utils.getLayout().trackValues("enumber_entry",data)}}})}(jQuery),function($){T.Module.AgentStore=T.createModule({start(resolve){this.$ctx=$(this._ctx);const dropdown=this.$ctx.find(".js-agent-store"),ajaxIds=this.$ctx.data("ajaxRequestIds");return dropdown.on("change",()=>{this.startAjax(ajaxIds[0]),this.startAjax(ajaxIds[1])}),resolve()}
7,startAjax(ajaxID){const request=T.Utils.startAjaxRequest(ajaxID);if(!request)return!1;request[0].fail(xhr=>{console.info(xhr)})}})}(jQuery),function($){T.Module.AllFilterModal=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$showAllFiltersChip=this.$ctx.find(".js-show-all-filters"),this.$modal=this.$ctx.find(".modal"),this.$closeModalBtn=this.$ctx.find(".close-modal"),this.$filterHead=this.$ctx.find(".filter-head"),this.$modalInputFields=this.$ctx.find("input"),this.$desktopInputField=this.$ctx.closest(".js-filterlayer").find("input").not(this.$modalInputFields),this.$submitBtn=this.$ctx.find(".results-button"),this.$modalInputFields.prop("disabled",!this.$modal.hasClass("open")),this.$desktopInputField.prop("disabled",this.$modal.hasClass("open")),this.$showAllFiltersChip.on("click",()=>this.openModal()),this.$showAllFiltersChip.on("keydown",e=>{(T.Utils.isKeyEnter(e)||T.Utils.isKeySpace(e))&&this.openModal()}),this.$closeModalBtn.on("click",()=>this.closeModal()),this.$closeModalBtn.on("keydown",e=>{(T.Utils.isKeyEnter(e)||T.Utils.isKeySpace(e))&&this.closeModal()}),this.$filterHead.on("click",e=>this.toggleDropdown(e)),this.$filterHead.on("keydown",e=>{(T.Utils.isKeyEnter(e)||T.Utils.isKeySpace(e))&&this.toggleDropdown(e)}),this.$submitBtn.on("click",()=>this.handleSubmit()),this.$modal.on("transitionend animationend",()=>this.onModalAnimationEnd()),this._events.on("filtermodal:close",()=>this.closeModal()),this._events.on("filtermodal:open",()=>this.openModal()),this._events.on("viewportChanged",vp=>{"desktop"===vp&&this.$modal.hasClass("open")&&this.closeModal()}),resolve()},openModal(){this.$modal.show(),this.hideAfterAnimation=!1,this.$modalInputFields.prop("disabled",!1),this.$modal.removeClass("animation-out"),this.$modal.addClass("animation-in"),this.$modal.addClass("open"),this.$desktopInputField.prop("disabled",!0),$("body").addClass("scroll-disabled"),$(".js-compare-stickybar").hide()},closeModal(){this.hideAfterAnimation=!0,this.$desktopInputField.prop("disabled",!1),this.animateOut(),this.$modalInputFields.prop("disabled",!0),$("body").removeClass("scroll-disabled"),$(".js-compare-stickybar").show()},animateOut(){this.$modal.removeClass("animation-in"),this.$modal.addClass("animation-out"),this.$modal.removeClass("open")},onModalAnimationEnd(){this.hideAfterAnimation&&this.$modal.hide()},toggleDropdown(e){const $currentFilterHead=$(e.target).closest(".filter-head").addBack(".filter-head"),$filter=$(e.target).closest(".filter");$currentFilterHead.find(".filter-toggle").toggleClass("icon-arrow-down icon-arrow-up"),$filter.toggleClass("open"),"true"===$filter.attr("aria-expanded")?$filter.attr("aria-expanded","false"):$filter.attr("aria-expanded","true")},handleSubmit(){this.closeModal()}})}(jQuery),function($){T.Module.AverageProductRating=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.$ratings=this.$ctx.find(".rating"),this.$ratings.on("click",ev=>this.onClickRatings(ev)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},onClickRatings(ev){ev.preventDefault(),this._events.emit("isAPIBasedBVReviews"),this._events.emit("scrollToReviewSection")}})}(jQuery),function($){T.Module.AwardGallery=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$awardsSlider=this.$ctx.find(".awards-slider"),this.slideCount=this.$awardsSlider.children().length,this.slidesToShowDesktop=3,this.slidesToShowMobile=1,this.slidesToScollDesktop=1,this.slidesToScollMobile=1,this.initSlick(),resolve()},initSlick(){this.$awardsSlider.slick({infinite:!1,speed:300,dots:this.slideCount>this.slidesToShowDesktop,focusOnSelect:!1,arrows:!1,slidesToShow:this.slidesToShowDesktop,slidesToScroll:this.slidesToScollDesktop,autoplay:!0,autoplaySpeed:2e3,infinite:!0,responsive:[{breakpoint:900,settings:{slidesToShow:this.slidesToShowMobile,slidesToScroll:this.slidesToScollMobile,dots:this.slideCount>this.slidesToShowMobile}}]})}})}(jQuery),function($){T.Module.Breadcrumb=T.createModule({start(resolve){const mod=this;mod.$ctx=$(mod._ctx),mod.$bcItems=mod.$ctx.find("ul:not(.extendbreadcrumb-list) li"),mod.$referenceBcSelector=mod.$ctx.find("li:nth-child(n+2):nth-last-child(n+3):nth-last-child(3)"),mod.$referenceBcSelector.addClass("js-extend-breadcrumb"),mod.$referenceBcSelector.addClass("extend-breadcrumb"),mod.$mobileToggle=mod.$ctx.find(".js-mobile-toggle"),mod.$extendBreadcrumbSelector=mod.$ctx.find(".js-extend-breadcrumb");return mod.$extendBreadcrumbSelector.attr("data-eventTracking",JSON.stringify({trackType:"breadcrumb click",eventType:"click"})),mod.sel={toggleList:".js-extendbreadcrumb"},mod.elem={$toggleListBreadcrumb:$(mod.sel.toggleList,this.$ctx)},$("html").on("click",ev=>this.onClickOutside(ev)),T.Utils.registerMq("md",{match:()=>mod.$mobileToggle.on("click.mobile",$.proxy(mod.onClickMobileToggle,mod)),unmatch:()=>mod.$mobileToggle.off("click.mobile")},"max"),T.Utils.registerMq("md",{match:()=>mod.$extendBreadcrumbSelector.on("click",$.proxy(mod.onClickBreadcrumbExtend,mod)),unmatch:()=>mod.$extendBreadcrumbSelector.on("click",$.proxy(mod.onClickBreadcrumbExtend,mod))},"min"),this._events.on("breadcrumb:toggle-mobile-menu",()=>this.onClickMobileToggle()),resolve()},sync(){},onClickMobileToggle(ev){return this.$bcItems.not(":last").toggleClass("is-hidden-mobile"),this.$mobileToggle.toggleClass("is-active-mobile")},onClickBreadcrumbExtend(ev){return ev.stopPropagation(),$(this.sel.toggleList).not(this.elem.$toggleListBreadcrumb).removeClass("is-active-desktop"),this.elem.$toggleListBreadcrumb.hasClass("is-active-desktop")?this.elem.$toggleListBreadcrumb.removeClass("is-active-desktop"):this.elem.$toggleListBreadcrumb.addClass("is-active-desktop"),this.$extendBreadcrumbSelector.hasClass("is-active-extended-breadcrumb")?this.$extendBreadcrumbSelector.removeClass("is-active-extended-breadcrumb"):this.$extendBreadcrumbSelector.addClass("is-active-extended-breadcrumb"),this._events.emit("extendedbreadcrumb:open",{$component:this.$extendBreadcrumbSelector}),!0},onClickOutside(ev){return!($(ev.target).closest(".m-extendbreadcrumb").length>0)&&(this.$extendBreadcrumbSelector.hasClass("is-active-extended-breadcrumb")&&this.$extendBreadcrumbSelector.removeClass("is-active-extended-breadcrumb"),this.elem.$toggleListBreadcrumb.hasClass("is-active-desktop")&&this.elem.$toggleListBreadcrumb.removeClass("is-active-desktop"),!0)}})}(jQuery),function($){T.Module.CardLayout=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this._selector={cardContainer:".js-cardlayout"},this.elm={$cardContainer:this.$ctx.find(this._selector.cardContainer,this.$ctx)},this.elm.$cardContainer.on("click",ev=>this.onSelectCard(ev)),resolve()},onSelectCard(ev){const $currentContainer=$(ev.currentTarget);$currentContainer.parents(".js-stored-cards").children().removeClass("border-highlight"),$currentContainer.addClass("border-highlight"),$currentContainer.find(".js-forminput-radio").prop("checked",!0)}})}(jQuery),function($){T.Module.Carousel=T.createModule({slickConfiguration:{lazyLoad:"ondemand"},start(resolve){this.$ctx=$(this._ctx),this.id=this.$ctx.data("t-id"),this.slidesToShowDesktop=this.$ctx.data("slides-to-show-desktop"),this.slidesToShowTablet=this.$ctx.data("slides-to-show-tablet"),this.slidesToShowMobile=this.$ctx.data("slides-to-show-mobile"),this.$slider=this.$(".js-slider"),this.$sliderRebrush=this.$ctx.hasClass("js-slider-rebrush"),this.paginationDot=!1,this.$paginationArrows=this.$(".js-carousel-paginationarrows"),this.$paginationNumber=this.$(".js-carousel-paginationnumber"),this.$noCarouselMobile=this.$ctx.hasClass("no-carousel-mobile"),this.$img=this.$ctx.find("img"),this.isSynced=!1,this.itemGroupForMatchHeight={},this._events.on("t.sync",()=>this.sync()),this._events.on("viewportChanged",viewport=>this.onViewportChanged(viewport)),this.shouldCarouselInitialize()&&this.$img.each((index,element)=>{if($(element).closest(".m-teaser").length>0){new ResizeObserver((entry,observer)=>{this.onImageLoaded()}).observe(element)}}),resolve()},sync(){this.isSynced||(this.slider=this._sandbox.getModuleById(this.$slider.data("t-id")),this.refreshCarousel(),this.shouldCarouselInitialize()&&T.Utils.debounce(this.matchTeaserHe
7ights(),200),this.isSynced=!0,T.Utils.allSynced=!0)},initSlick(){if(this.destroySlider(),!this.shouldCarouselInitialize()){return void this.$ctx.find(".m-video").map((i,video)=>{const $video=$(video);this._sandbox.getModuleById(null!=$video?$video.data("t-id"):void 0).ensureLazyLoaded()})}const slidesToShow={desktop:this.slidesToShowDesktop||T.Utils.carousel.slidesToShow.desktop,tablet:this.slidesToShowTablet||T.Utils.carousel.slidesToShow.tablet,mobile:this.slidesToShowMobile||T.Utils.carousel.slidesToShow.mobile},slidesToScroll={desktop:this.slidesToShowDesktop||T.Utils.carousel.slidesToScroll.desktop,tablet:this.slidesToShowTablet||T.Utils.carousel.slidesToScroll.tablet,mobile:this.slidesToShowMobile||T.Utils.carousel.slidesToScroll.mobile};!0===this.$sliderRebrush&&(this.paginationDot=!0),this.slider&&this.slider.init({infinite:!0,$paginationArrows:this.$paginationArrows,$paginationNumber:this.$paginationNumber,slidesToShow:slidesToShow,slidesToScroll:slidesToScroll,focusOnSelect:!1,dots:this.paginationDot})},shouldCarouselInitialize(){return!(this.$noCarouselMobile&&T.Utils.isViewport("mobile"))},destroySlider(){this.slider&&this.slider.destroySlider()},replaceSlides(slides){this.slider&&this.slider.replaceSlides(slides)},removeOldGroupsFromMatchHeight(){this.oldGroups&&$.each(this.oldGroups,(index,oldGroup)=>{$(oldGroup.elements).matchHeight({remove:!0})})},onViewportChanged(){this.shouldCarouselInitialize()?this.matchTeaserHeights():this.removeOldGroupsFromMatchHeight(),this.refreshCarousel()},refreshCarousel(){this.initSlick()},matchTeaserHeights(){const $oldItems=this.$oldItems||$(),$items=this.$ctx.find(".m-teaser");if($items.not($oldItems).length>0){this.$oldItems=$items;const tempArray=this.createItemHeightMatchingGroups();let groups=[];const groupOptions={byRow:!0,property:"height",target:null,remove:!1,apply:!1};this.removeOldGroupsFromMatchHeight(),$.each(tempArray,(index,itemGroup)=>{$(itemGroup).matchHeight(groupOptions),groups.push({elements:itemGroup,options:groupOptions})}),this.oldGroups=groups}if(this.oldGroups){const consider_parents=!0;$.fn.matchHeight._applyByGroups(this.oldGroups,consider_parents)}},onImageLoaded(){setTimeout(()=>{this.matchTeaserHeights()},500)},createItemHeightMatchingGroups(){return[this.$ctx.find(".m-teaser .a-heading"),this.$ctx.find(".m-teaser .content-inner"),this.$ctx.find(".m-teaser .teaser-content"),this.$ctx.find(".m-teaser .teaser-wrap")]}})}(jQuery),function($){T.Module.CashJournal=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this._selector={cashJournalButton:".js-button",form:".js-form"},this.elm={$cashJournalButton:$(this._selector.cashJournalButton,this.$ctx),$form:$(this._selector.form)},this.$submitButton=this.elm.$form.find('[type="submit"]'),this.elm.$cashJournalButton.on("click",()=>this.enableSubmitButton()),this.disableSubmitButton(),resolve()},disableSubmitButton(){this.$submitButton.attr("disabled","disabled")},enableSubmitButton(){this.$submitButton.removeAttr("disabled")}})}(jQuery),function($){T.Module.CategoryPromotion=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$sliderContainer=this.$ctx.find(".js-category-slider-container"),this.$slider=this.$ctx.find(".js-category-slider"),this.$paginationArrows=this.$sliderContainer.find(".js-arrows"),this.config=this.$ctx.data("config"),this.tilesToSlide=this.config&&this.config.tilesToSlide||1,this.sliderCount=0,this.$categoryTiles=this.$slider.find(".js-category-tile"),this.slideTransitionTime=300,this.slideTransition=`transform ${this.slideTransitionTime}ms ease-in-out`,this.swipe={start:void 0,end:void 0,xPos:void 0},this.initSlider(),this._events.on("viewportChanged",()=>this.onVpChange()),this._events.on("windowWidthChanged",()=>this.toggleSliderOverflowState()),this.$slider.on("transitionend",()=>this.infinitelyLoopSlider()),this.$slider.on("touchstart",e=>{this.onTouchStart(e.originalEvent)}),this.$slider.on("touchmove",e=>{this.onTouchMove(e.originalEvent)}),this.$slider.on("touchend",e=>{this.onTouchEnd(e.originalEvent)}),resolve()},initSlider(){this.setupPagination(),this.toggleSliderOverflowState(),this.setupPaginationTouchStyle()},onVpChange(){this.vpSwitchDesktopMobile()&&this.setInitialSliderPosition()},toggleSliderOverflowState(){this.sliderHasOverflow()?(this.$sliderContainer.removeClass("center-items"),this.$paginationArrows.show(),this.cloneSlidesAttached()||(this.attachCloneSlides(),this.setInitialSliderPosition())):(this.$sliderContainer.addClass("center-items"),this.$paginationArrows.hide(),this.removeCloneSlides(),this.setInitialSliderPosition())},setupPagination(){const $prev=this.$paginationArrows.children(".prev"),$next=this.$paginationArrows.children(".next");$prev.on("click",T.Utils.handleThrottleEvent(()=>this.slidePrev(),this.slideTransitionTime)),$next.on("click",T.Utils.handleThrottleEvent(()=>this.slideNext(),this.slideTransitionTime))},setupPaginationTouchStyle(){T.Utils.isTouchDevice||this.$paginationArrows.addClass("is-not-touch")},setInitialSliderPosition(){const cloneSlidesAdded=this.$slider.find(".js-clone-slide").length;this.sliderCount=cloneSlidesAdded?cloneSlidesAdded/2:0,this.slide(!0)},slidePrev(){this.sliderCount-=this.tilesToSlide,this.slide()},slideNext(){this.sliderCount+=this.tilesToSlide,this.slide()},slide(noTransition){this.$slider.css({transition:noTransition?"none":this.slideTransition,transform:`translateX(${this.getCurrentSliderPos()}px)`})},getMoveDistance:(start,end)=>Math.abs(start-end),getMoveDirection:(start,end)=>end<start?"next":"prev",releaseSlide(){this.slide()},onTouchMove(e){const{start:start}=this.swipe,xPos=this.getCursorPosition(e);let totalMovement=this.getCurrentSliderPos();const direction=this.getMoveDirection(start,xPos),distance=this.getMoveDistance(start,xPos);"next"===direction&&(totalMovement-=distance),"prev"===direction&&(totalMovement+=distance),this.$slider.css({transition:"none",transform:`translateX(${totalMovement}
7px)`})},onTouchStart(e){this.swipe.start=this.getCursorPosition(e)},onTouchEnd(e){const end=this.getCursorPosition(e),start=this.swipe.start,direction=this.getMoveDirection(start,end),moveDistance=this.getMoveDistance(start,end),oneSlideStep=this.$categoryTiles.outerWidth(!0)*this.tilesToSlide,slideStepsMoved=Math.round(moveDistance/oneSlideStep);if(slideStepsMoved<1)this.releaseSlide();else{if(slideStepsMoved>1)return"next"===direction&&(this.sliderCount+=this.tilesToSlide*slideStepsMoved),"prev"===direction&&(this.sliderCount-=this.tilesToSlide*slideStepsMoved),void this.releaseSlide();"next"===direction&&this.slideNext(),"prev"===direction&&this.slidePrev()}},infinitelyLoopSlider(){const cloneSlidesAdded=this.$slider.find(".js-clone-slide").length,baseSliderCount=cloneSlidesAdded?cloneSlidesAdded/2:0;if(0===baseSliderCount)return;const numberOfSlides=this.$categoryTiles.length,currentSliderCount=this.sliderCount;this.sliderCount=baseSliderCount+currentSliderCount%numberOfSlides,this.slide(!0)},attachCloneSlides(){for(let i=0;i<2;i++){const $frontClones=this.$categoryTiles.clone().addClass("js-clone-slide"),$endClones=this.$categoryTiles.clone().addClass("js-clone-slide");this.$slider.prepend($endClones).append($frontClones)}},removeCloneSlides(){this.$slider.find(".js-clone-slide").remove()},getCurrentSliderPos(){return-this.sliderCount*this.$categoryTiles.outerWidth(!0)},sliderHasOverflow(){const sliderWithWithoutClones=this.$categoryTiles.outerWidth(!0)*this.$categoryTiles.filter(":not(.js-clone-slide)").length;return this.$sliderContainer.width()<=sliderWithWithoutClones},cloneSlidesAttached(){return this.$slider.find(".js-clone-slide").length>0},vpSwitchDesktopMobile(){const oldVp=this.currentVp;return this.currentVp=T.Utils.getViewport(),!("mobile"===oldVp&&"tablet"===this.currentVp||"tablet"===oldVp&&"mobile"===this.currentVp)},getCursorPosition:e=>e.changedTouches[0].clientX})}(jQuery),function($){T.Module.WarrantySelection=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$hiddenInputQuantity=this.$ctx.find(".js-hidden-input-quantity"),this.$radio=this.$ctx.find(".js-cew-option"),this.$radio.on("change",ev=>this.setHiddenQuantityInputValue(ev)),resolve()},setHiddenQuantityInputValue(e){const $radio=$(e.currentTarget);if($radio.hasClass("js-default-cew-option"))this.$hiddenInputQuantity.val("0"),this._events.emit("tracking:generic",{trackType:"Add-on CEW added",trackData:{"add-on_cew_id":"cewItem-free"}});else{const cewContainer=this.$ctx.find("[data-cew-type]"),cewPhier=cewContainer.data("cewPhier"),cewType=cewContainer.data("cewType"),cewId=$radio.data("cew-id");this._events.emit("tracking:generic",{trackType:"Add-on CEW added",trackData:{"add-on_cew_id":cewId,product_hierarchy_code:cewPhier,type:cewType}})}}})}(jQuery),function($){T.Module.CheckoutDeliveryBillingAddress=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.selector={editAddressTrigger:".js-billing-address-trigger-edit",billingAddressReadonly:".js-billing-address-readonly",billingAddressEditable:".js-billing-address-editable"},this.$ctx.on("invisiblefield.form",(ev,field)=>this.onInvisibleForm(ev,field)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.initializeSetAddressEditable())},initializeSetAddressEditable(){$(this.selector.editAddressTrigger,this.$ctx).on("click",ev=>this.onClickButtonEdit(ev))},showEditableBillingAddress(){$(this.selector.billingAddressReadonly,this.$ctx).hide(),$(this.selector.billingAddressEditable,this.$ctx).show()},onClickButtonEdit(ev){ev.preventDefault(),this.showEditableBillingAddress()},onInvisibleForm(ev,field){ev.stopPropagation(),ev.preventDefault(),this.showEditableBillingAddress()}})}(jQuery),function($){T.Module.CheckoutDeliveryContactPermission=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.selectors={checkbox:".m-forminput-checkbox input",listLevel:'ul[class^="level-"]',optin:".consent-optin",optinGroup:".consent-optin-group",consentRoot:".root"},this.$allCheckboxesArray=this.$ctx.find(this.selectors.checkbox),this.$allCheckboxesWithoutRootArray=this.$ctx.find(`ul.level-1 ${this.selectors.checkbox}`),this.$initialCheckedCheckboxes=this.$ctx.find(`${this.selectors.checkbox}:checked`),this.childKeepDisabled=this.$ctx.data("childKeepDisabled")||!1,this.initialise(),resolve()},initialise(){this.setLayoutClasses(),this.attachListeners(),this.toggleDisableState(this.$allCheckboxesWithoutRootArray,!0),this.childKeepDisabled||this.enableChildsOfCheckedCheckboxes(this.$initialCheckedCheckboxes)},setLayoutClasses(){const layoutClasses={1:"layout-full",2:"layout-half",3:"layout-third",4:"layout-fourth"};this.$ctx.find(this.selectors.optinGroup).each((_,e)=>{const numberOfOptinsInOptinGroup=$(e).find(`> ${this.selectors.listLevel} > ${this.selectors.optin}`).length;numberOfOptinsInOptinGroup>
70&&numberOfOptinsInOptinGroup<5&&($(e).addClass(layoutClasses[numberOfOptinsInOptinGroup]),1===numberOfOptinsInOptinGroup&&$(e).find(".form-row").addClass("form-row-fullwidth"))}),[this.$ctx.find(`${this.selectors.consentRoot} > ${this.selectors.optinGroup}`),this.$ctx.find(`${this.selectors.consentRoot} > ${this.selectors.optin}`)].forEach(elem=>{1===elem.length&&$(elem).find(".form-row").addClass("form-row-fullwidth")}),this.$ctx.removeClass("visibility-hidden")},attachListeners(){this.$allCheckboxesArray.on("change",this.onChange.bind(this))},toggleDisableState($collection,state){$collection.prop("disabled",void 0!==state?state:!$collection.prop("disabled"))},toggleCheckedState($collection,state){$collection.prop("checked",void 0!==state?state:!$collection.prop("checked"))},enableChildsOfCheckedCheckboxes($collection){$collection.map((i,el)=>{const $parrentListItem=$(el).closest("li"),listLevel=$parrentListItem.find(`> ${this.selectors.listLevel}`).attr("class"),$consentOptins=$parrentListItem.find(` .${listLevel} > ${this.selectors.optin} ${this.selectors.checkbox}`),$consentGroupOptins=$parrentListItem.find(`.${listLevel} > ${this.selectors.optinGroup} > div ${this.selectors.checkbox}`),$result=$consentOptins.add($consentGroupOptins);this.toggleDisableState($result,!1)})},onChange(ev){ev.preventDefault();const $changedEl=$(ev.currentTarget),$parrentListItem=$changedEl.closest("li");if(!0!==$changedEl.prop("checked")){const $allChildsCheckboxesDisabled=$parrentListItem.find(` > ${this.selectors.listLevel} > li ${this.selectors.checkbox}`);this.toggleCheckedState($allChildsCheckboxesDisabled,!1),this.toggleDisableState($allChildsCheckboxesDisabled,!0)}else{const listLevel=$parrentListItem.find(`> ${this.selectors.listLevel}`).attr("class"),$consentOptins=$parrentListItem.find(` .${listLevel} > ${this.selectors.optin} ${this.selectors.checkbox}`),$consentGroupOptins=$parrentListItem.find(`.${listLevel} > ${this.selectors.optinGroup} > div ${this.selectors.checkbox}`),$result=$consentOptins.add($consentGroupOptins);this.toggleDisableState($result,!1)}}})}(jQuery),function($){const glob_config=window.localization.configurations,glob_messages=(window.localization.locale,window.localization.messages.common);T.Module.CheckoutDeliveryMode=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this._selector={pickupDelivery:".js-pickup-delivery",datePicker:".js-date-picker",parentGridContainer:".js-grid-container",selectedDeliveryDate:".js-delivery-date",cutoffTime:".js-delivery-cutofftime"},this.elm={$pickupDelivery:$(this._selector.pickupDelivery,this.$ctx),$datePicker:$(this._selector.datePicker,this.$ctx),$cutoffTime:$(this._selector.cutoffTime,this.$ctx)},this.elm.$pickupDelivery.on("click",ev=>this.initPickup(ev)),this.elm.$datePicker.on("change-date",(ev,dateObject)=>{this.updateSelectedDate(ev,dateObject)}),this.initLocalization(),resolve()},sync(){},initPickup(){},initLocalization(){const months=[];months.push(glob_messages.month.january.long),months.push(glob_messages.month.february.long),months.push(glob_messages.month.march.long),months.push(glob_messages.month.april.long),months.push(glob_messages.month.may.long),months.push(glob_messages.month.june.long),months.push(glob_messages.month.july.long),months.push(glob_messages.month.august.long),months.push(glob_messages.month.september.long),months.push(glob_messages.month.october.long),months.push(glob_messages.month.november.long),months.push(glob_messages.month.december.long);const monthsShort=[];monthsShort.push(glob_messages.month.january.short),monthsShort.push(glob_messages.month.february.short),monthsShort.push(glob_messages.month.march.short),monthsShort.push(glob_messages.month.april.short),monthsShort.push(glob_messages.month.may.short),monthsShort.push(glob_messages.month.june.short),monthsShort.push(glob_messages.month.july.short),monthsShort.push(glob_messages.month.august.short),monthsShort.push(glob_messages.month.september.short),monthsShort.push(glob_messages.month.october.short),monthsShort.push(glob_messages.month.november.short),monthsShort.push(glob_messages.month.december.short);const weekdays=[];weekdays.push(glob_messages.weekday.sunday.long),weekdays.push(glob_messages.weekday.monday.long),weekdays.push(glob_messages.weekday.tuesday.long),weekdays.push(glob_messages.weekday.wednesday.long),weekdays.push(glob_messages.weekday.thursday.long),weekdays.push(glob_messages.weekday.friday.long),weekdays.push(glob_messages.weekday.saturday.long);const weekdaysShort=[];weekdaysShort.push(glob_messages.weekday.sunday.short),weekdaysShort.push(glob_messages.weekday.monday.short),weekdaysShort.push(glob_messages.weekday.tuesday.short),weekdaysShort.push(glob_messages.weekday.wednesday.short),weekdaysShort.push(glob_messages.weekday.thursday.short),weekdaysShort.push(glob_messages.weekday.friday.short),weekdaysShort.push(glob_messages.weekday.saturday.short),moment.updateLocale("en",{months:months,monthsShort:monthsShort,weekdays:weekdays,weekdaysShort:weekdaysShort,weekdaysMin:weekdaysShort,week:{dow:1}})},updateSelectedDate(ev,dateObject){const $parentGridContainer=$(ev.currentTarget).parents(".js-grid-container"),$selectedDeliveryDate=$parentGridContainer.find(".js-delivery-date"),$selectedDeliveryDateLabel=$parentGridContainer.find(".js-delivery-date-label"),$selectedDatePicker=$parentGridContainer.find(".js-date-picker"),selectedDate=dateObject.date,dateLongFormat=glob_config.dateLongFormat,availableDays=$selectedDatePicker.data("available-days");availableDays&&availableDays.length>0&&(availableDays[0]!==dateObject.value?this.elm.$cutoffTime.addClass("hidden"):this.elm.$cutoffTime.removeClass("hidden"));const dateLongFormatDisplay=moment(selectedDate).formatWithJDF(dateLongFormat.replace(/[']/g,""));$selectedDeliveryDateLabel.show(),$selectedDeliveryDate.text(dateLongFormatDisplay)}})}(jQuery),function($){T.Module.CheckoutDeliveryPickupAddress=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this._selector={pickupRegionSelect:".js-pickup-region-select",pickupRegion:".js-pickupstation-region"},this.elm={$pickupRegionSelect:$(this._selector.pickupRegionSelect,this.$ctx),$pickupRegion:$(this._selector.pickupRegion,this.$ctx)},this._events.on("t.sync",()=>this.sync()),this.elm.$pickupRegionSelect.on("change",()=>this.resetPickupStation()),resolve()},sync(){this.elm.$pickupRegionSelect.length>0&&this.resetPickupStation()},resetPickupStation(){$.each(this.elm.$pickupRegion.find("input[type='radio']"),function(){return $(this).removeAttr("checked")});const selectedRegion=$("option:selected",this._selector.pickupRegionSelect).data("c
7ontent-toggle-id");void 0!==$(this._selector.pickupRegionSelect).val()&&""!==$(this._selector.pickupRegionSelect).val()||$(this._ctx).find("div[data-content-id]").attr("class","hidden"),$(this._ctx).find(`div[data-content-id='${selectedRegion}'] input:radio:first`).prop("checked","checked")}})}(jQuery),function($){T.Module.CheckoutDeliveryShippingAddress=T.createModule({start(resolve){if(this.$ctx=$(this._ctx),this.selector={addressRadio:".js-address-change",formContainer:".js-individual-address-form"},this.elem={$addressRadio:this.$ctx.find(this.selector.addressRadio),$checkedAddressRadio:this.$ctx.find(this.selector.addressRadio).filter(":checked"),$form:this.$ctx.find(this.selector.formContainer)},this.elem.$addressRadio.on("click",ev=>{this.handleRadioOnClick(ev)}),this.elem.$checkedAddressRadio.data("showform")){$(this.elem.$form).find("input, textarea, select").each(function(){$(this).prop("disabled")?$(this).attr("data-origindisabled",!0):$(this).prop("disabled",!1)})}else T.Utils.genericFormDisableFieldsOnHide(this.elem.$form);return resolve()},handleRadioOnClick(ev){$(ev.currentTarget).data("showform")?(T.Utils.genericFormKeepDisabledFieldsOnShow(this.elem.$form),this.elem.$form.attr("data-showformsrc",!0)):this.elem.$form.attr("data-showformsrc")&&(T.Utils.genericFormDisableFieldsOnHide(this.elem.$form),this.elem.$form.removeAttr("data-showformsrc"))}})}(jQuery),function($){T.Module.Chips=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$dropdownableChips=this.$ctx.filter(".dropdown, .select").not(".disabled"),this.$dropdownableChips.find(".js-chips-content").on("click",e=>{$(e.target).hasClass("a-button")||$(e.target).parents(".a-button").length>0||(this.emitChipClicked(),this.toggleDropdown())}),this.$dropdownableChips.find(".js-chips-icon").on("keydown",e=>{this.onKeyDown(e)}),this._events.on("closeChips",$chip=>this.onCloseChip($chip)),resolve()},onKeyDown(e){(T.Utils.isKeyEnter(e)||T.Utils.isKeySpace(e))&&(e.preventDefault(),this.emitChipClicked(),this.toggleDropdown())},onCloseChip($chip){this.$ctx.is($chip)&&this.$ctx.removeClass("dropdown-open")},toggleDropdown(){this.$ctx.toggleClass("dropdown-open"),"true"===this.$ctx.attr("aria-expanded")?this.$ctx.attr("aria-expanded","false"):this.$ctx.attr("aria-expanded","true")},emitChipClicked(){this._events.emit("chipClicked",this.$ctx)}})}(jQuery),function($){T.Module.ChipsGroup=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$ctx.on("keydown",e=>this.onKeyDown(e)),this._events.on("chipClicked",$chip=>this.closeOther($chip)),$(document).on("click",e=>this.closeOnClickOutside(e)),resolve()},onKeyDown(e){T.Utils.isKeyEscape(e)&&this.closeAll()},closeAll(){this.closeOther()},closeOther($chip){const $otherChips=this.$ctx.find(".js-chips").filter(".dropdown").not(".disabled").not($chip);this._events.emit("closeChips",$otherChips)},closeOnClickOutside(e){if(this.isTargetChipInThisGroup(e)||this.isTargetPopoverOfCurrentOpenChip(e))return;const $allChipsInGroup=this.$ctx.find(".js-chips").filter(".dropdown.dropdown-open").not(".disabled");this._events.emit("closeChips",$allChipsInGroup)},isTargetChipInThisGroup(e){return $(e.target).closest(".js-chips").closest(this.$ctx).length},isTargetPopoverOfCurrentOpenChip(e){const targetPopoverId=this.getTargetPopoverId(e);return!!targetPopoverId&&!!this.getCurrentOpenChip().find(`[data-popover-id=${targetPopoverId}]`).length},getTargetPopoverId:e=>$(e.target).closest(".m-popover").data("id"),getCurrentOpenChip(){return this.$ctx.find(".js-chips.dropdown-open")}})}(jQuery),function($){T.Module.CollageModule=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$collageItems=this.$ctx.find(".collage-item"),this.$collageHeadline=this.$ctx.find(".collage-headline"),this.registerParallaxListener(),this.observeCollageModuleEntrance(),resolve()},registerParallaxListener(){this.$collageItems.length&&(this.$collageItems.each((i,collageItem)=>{window.addEventListener("scroll",()=>this.calculateParallaxEffect(collageItem))}),this._events.on("t.sync",()=>{this.$collageItems.each((i,collageItem)=>{this.calculateParallaxEffect(collageItem)})}
7))},calculateParallaxEffect(interestedContainer){const intersectedImage=interestedContainer.querySelector(".collage-img"),intersectedDescriptionBox=interestedContainer.querySelector(".collage-description-box"),positionParallaxItem=interestedContainer.getBoundingClientRect(),clientHeight=window.innerHeight,start=clientHeight,end=clientHeight/2-positionParallaxItem.height/2,fromStart=positionParallaxItem.top-start,total=end-start;if(positionParallaxItem.top<end)return intersectedImage.style.transform="translateY(0px)",void(intersectedDescriptionBox.style.transform="translateY(0px)");if(positionParallaxItem.top>clientHeight)return intersectedImage.style.transform="translateY(500px)",void(intersectedDescriptionBox.style.transform="translateY(220px)");const percent=this.easeOutQuad(fromStart/total);intersectedImage.style.transform=`translateY(${500-500*percent}px)`,intersectedDescriptionBox.style.transform=`translateY(${220-220*percent}px)`},easeOutQuad:x=>1-(1-x)*(1-x),observeCollageModuleEntrance(){new IntersectionObserver(entries=>{entries[0].isIntersecting?(this.$collageHeadline.css("opacity","1"),this.$collageHeadline.css("transform","translateY(0)")):(this.$collageHeadline.css("opacity","0"),this.$collageHeadline.css("transform","translateY(120px)"))},{rootMargin:"0px 0px -40px 0px"}).observe(this._ctx)}})}(jQuery),function($){T.Module.CollapsableProcess=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$allEditButtons=this.$ctx.find(".js-process-step-edit"),this._events.on("hideEditbutton",()=>this.hideEditbutton()),this._events.on("showEditbutton",()=>this.showEditbutton()),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},hideEditbutton(){this.$allEditButtons.addClass("hidden")},showEditbutton(){this.$allEditButtons.removeClass("hidden")}})}(jQuery),function($){T.Module.CollapsableProcessToggle=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$bookButtonDisbaled=!0,this.$stepNumber=this.$ctx.find(".js-step-number-wrapper"),this.$prefilledAppliance=$(".js-prefilled-appliance"),this.$stepIcon=this.$ctx.find(".js-step-icon-wrapper"),this.$dobCheckbox=$(".js-dob-checkbox"),this.$jsDobBook=$(".js-dob-book"),this.$editButton=this.$ctx.find(".js-process-step-edit"),this.$nextButton=this.$ctx.find(".js-step-submit"),this.$stepIconWrapper=this.$ctx.find(".step-icon-wrapper.js-step-icon-wrapper"),this.$nextAllEditButton=this.$ctx.nextAll().find(".js-process-step-edit"),this.$toggle=this.$ctx.find(".js-process-step-wrapper"),this.$content=this.$ctx.find(".js-process-step-content"),this.$jsAddressSummary=this.$ctx.find(".js-address-summary"),this.$nextStep=this.$ctx.next(".js-collapsableprocesstoggle"),this.$form=this.$ctx.find("form"),this.$processSummaryTemplate=this.$ctx.find("#processsummary-template"),this.$validateFormData=this.$ctx.find(".js-process-step-form"),this.validateFormId=this.$validateFormData.data("ajax-id"),this.processSummaryDotTemplate=doT.template(this.$processSummaryTemplate.html()),this.$stepNumber&&"1"===this.$stepNumber[0].innerText.trim()&&this.$prefilledAppliance.length&&this.onAutoSubmitStep(),this.$stepNumber&&"4"===this.$stepNumber[0].innerText&&this._events.on("appointmentstepClose
7Layer",()=>this.showStepSummary()),this.$stepNumber&&"2"===this.$stepNumber[0].innerText&&this._events.on("problemstepCloseLayer",()=>this.onAutoSubmitStep()),this.$form.on("submit",ev=>this.onSubmitStep(ev)),this._events.on("t.sync",()=>this.sync()),this._events.on("toggleNextButton",value=>this.toggleNextButton(value)),this.$editButton.on("click",()=>this.onStepEdit()),this.$dobCheckbox.on("click",()=>this.bookButtonToggle()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},onSubmitStep(ev){ev.preventDefault();const request=T.Utils.startAjaxRequest(this.validateFormId),$currentTarget=$(ev.currentTarget);request&&request[0]&&(this.enableLoadingVisualization($currentTarget),request[0].done(response=>{this.disableLoadingVisualization($currentTarget),this.handleRequestResponse(response)}))},dob2bookButtonValid(){this.$radioButtonDOBTC=$(".js-accept-term.js-dob-checkbox"),this.$isRadioButtonDOBTCClicked=this.$radioButtonDOBTC.is(":checked"),this.$dobActiveStep=$(".js-collapsableprocesstoggle").hasClass("is-active")},bookButtonToggle(){this.$jsDobBook.attr("disabled",!0),this.dob2bookButtonValid(),this.responseValueDOBStep&&4==this.responseStepNumber&&this.$isRadioButtonDOBTCClicked&&!this.$dobActiveStep?this.$jsDobBook.attr("disabled",!1):this.$isRadioButtonDOBTCClicked&&!this.$dobActiveStep?this.$jsDobBook.attr("disabled",!1):this.$jsDobBook.attr("disabled",!0)},handleRequestResponse(response){this.$stepNumber.addClass("hidden");const stepNumber=this.$ctx.find(".step-number").text();const step3ResponseBooleanValueData=$(response).find(".dob2Step3ResponseValue").data("action");!response.success&&!stepNumber.includes("3")||!step3ResponseBooleanValueData&&stepNumber.includes("3")?(this.$ctx.addClass("has-warnings"),this._events.emit("handleDobStepRequestResponse",{$step:this.$ctx.find(".js-dob-step"),response:response})):(this._events.emit("handleDobStepRequestResponseSuccess",{$step:this.$ctx.find(".js-dob-step"),response:response}),this.$ctx.hasClass("is-active")&&(setTimeout(this.toggleActiveStep(),1e3),this.showStepSummary(),this.toggleBookingButton(),this._events.emit("showEditbutton"),this.$ctx.find(".js-process-step-edit").removeClass("hidden"),setTimeout(this.activateNextStep(),1e3))),this.responseValueDOBStep=response.success,this.responseStepNumber=stepNumber,stepNumber.includes("4")&&this.bookButtonToggle()},toggleActiveStep(){this.$content.removeClass("is-open"),this.$ctx.removeClass("is-active has-warnings"),this.$stepIcon.removeClass("hidden"),this.$ctx.addClass("has-validated"),this._events.emit("hideDobErrors",{$step:this.$ctx.find(".js-dob-step")})},showStepSummary(){const stepNumber=this.$ctx.find(".step-number").text();if(stepNumber.includes("1")||stepNumber.includes("4")){let formData=this.storeFormNoObjNameData(this.$form);this.processSummaryHTML=this.processSummaryDotTemplate(formData).replace(/\s{2,}/g," "),T.Utils.replaceContent(this.processSummaryHTML,"replace",!1,()=>{this.$ctx.find(".js-summary").removeClass("hidden")}),this.storeStepInSession(formData)}else if(stepNumber.includes("3"))this.$stepSummary=this.$ctx.find(".js-summary"),this.$stepSummary.empty(),this.$jsAddressSummary.removeClass("hidden"),this.$stepSummary.append($("<br/>"));else{let formData=$("input[name!=_csrf], select",this.$form).serializeArray();this.processSummaryHTML=this.processSummaryDotTemplate(formData).replace(/\s{2,}/g," "),T.Utils.replaceContent(this.processSummaryHTML,"replace",!1,()=>{this.$ctx.find(".js-summary").removeClass("hidden")}),this.storeStepInSession(formData)}this.addTrackingData(stepNumber)},addTrackingData(stepNumber){const payloadData=this.$form.serializeArray(),eventData={};if(stepNumber.includes("1")){const mapArr=[{eg:"eg"},{egDivision:"eg"},{businessFieldValue:"business_field"},{businessField:"business_field"},{enumber:"e-number"}],result=payloadData.map(item=>{const matchingKey=mapArr.find(mapping=>mapping[item.name]);return matchingKey?{[matchingKey[item.name]]:item.value}:null}).filter(item=>null!==item);let data;const dataObject=(data=5===result.length?result.filter(item=>""!==item.eg&&""!==item.business_field):result.filter(item=>""!==item.eg)).reduce((acc,obj)=>
7{for(const key in obj)acc[key]=obj[key];return acc},{});T.Utils.getLayout().trackValues("DOB appliance chosen",dataObject)}else if(stepNumber.includes("2"))payloadData.forEach(data=>{"dcCode"===data.name?eventData.issue_selected=data.value:"problemDescription"===data.name&&(data.value?eventData.description_fulfilled=!0:eventData.description_fulfilled=!1)}),T.Utils.getLayout().trackValues("DOB Question tree problem chosen",eventData);else if(stepNumber.includes("3"))payloadData.forEach(data=>{"dobAddressData.addressData.postalcode"===data.name||"dobCompanyAddressData.addressData.postalcode"===data.name?eventData.zip_code=data.value:"dobAddressData.addressData.district"!==data.name&&"dobCompanyAddressData.addressData.district"!==data.name||(eventData.district=data.value)}),eventData.private="private"===payloadData[0].value,T.Utils.getLayout().trackValues("DOB address entered",eventData);else if(stepNumber.includes("4")){const currentDate=new Date,timeSlotFound=payloadData.find(obj=>"timeslotFound"===obj.name);void 0===timeSlotFound&&this.bookButtonToggle(),""===timeSlotFound.value&&4===payloadData.length?(eventData.time_slot_selected="",eventData.first_day_available="",eventData.day_selected=""):""===timeSlotFound.value||"true"===timeSlotFound.value?payloadData.forEach(data=>{if("timeSlotValue"===data.name)eventData.time_slot_selected="";else if("initialAvailableDate"===data.name)if(""===data.value)eventData.first_day_available="";else{const availableDate=new Date(data.value),diffTime=Math.abs(availableDate-currentDate),difference=Math.ceil(diffTime/864e5);eventData.first_day_available=difference}else"day"===data.name&&(eventData.day_selected="")}):payloadData.forEach(data=>{if("timeSlotValue"===data.name)eventData.time_slot_selected=data.value;else if("initialAvailableDate"===data.name)if(""===data.value)eventData.first_day_available="";else{const availableDate=new Date(data.value),diffTime=Math.abs(availableDate-currentDate),difference=Math.ceil(diffTime/864e5);eventData.first_day_available=difference}else if("day"===data.name)if(""===data.value)eventData.day_selected="";else{const selectedDate=new Date(data.value),diffTime=Math.abs(selectedDate-currentDate),difference=Math.ceil(diffTime/864e5);eventData.day_selected=difference}}),T.Utils.getLayout().trackValues("DOB appointment selected",eventData)}},printFormData(formData){for(let i=0;i<formData.length;i++){let values=Object.values(formData[i]);this.$stepSummary.append($("<div><strong>"+values[0]+": </strong>"+values[1]+"</div>"))}},storeFormData($currentContext){let formData=[];return $currentContext.find("input[data-obj-name], select[data-obj-name]").each((index,element)=>{let objname=$(element).data("obj-name"),objnameparse=decodeURI(JSON.parse(`"${objname}"`));$(element).is("select")?formData.push({name:objnameparse,value:$(element).find("option:selected").text()}):formData.push({name:objnameparse,value:$(element).val()})}),formData},storeFormNoObjNameData($currentContext){let formData=[];return $currentContext.find("input[data-obj-name], select[data-obj-name]").each((index,element)=>{let objname=$(element).data("obj-name"),objnameparse=decodeURI(`${objname}`);$(element).is("select")?formData.push({name:objnameparse,value:$(element).find("option:selected").text()}):formData.push({name:objnameparse,value:$(element).val()})}),formData},storeStepInSession(formData){sessionStorage.setItem("dob2",JSON.stringify(formData))},onAutoSubmitStep(){const request=T.Utils.startAjaxRequest(this.validateFormId);request&&request[0]&&request[0].done(response=>{this.handleRequestResponse(response)})},activateNextStep(){const stepNumber=this.$ctx.find(".step-number").text();setTimeout(()=>T.Utils.scrollToTop($(this.$stepIconWrapper).offset().top+150),10),3==stepNumber&&T.Utils.scrollToTop(1500),4==stepNumber&&this.$dobCheckbox.on("click",()=>this.bookButtonToggle()),this.$nextStep.addClass("is-active"),this.$nextStep.removeClass("has-validated"),this.$nextStep.find(".js-step-number-wrapper").removeClass("hidden"),this.$nextAllEditButton.addClass("hidden"),this.$summary=this.$nextStep.find(".js-summary").addClass("hidden"),this.$nextStep.find(".js-process-step-content").addClass("is-open")},onStepEdit(){$(".js-dob-book").attr("disabled",!0),this.$nextStep.length&&(this.$nextStep.removeClass("is-active"),this.$openStep=$(document).find(".is-open"),this.$openStep.removeClass("is-open")),this.$ctx.removeClass("has-validated"),this.$ctx.addClass("is-active"),this.$content.addClass("is-open"),this.$stepNumber.removeClass("hidden"),this.$stepIcon.addClass("hidden"),this.$editButton.addClass("hidden"),this.$ctx.removeClass("has-validated"),this.$ctx.removeClass("has-warnings"),this.$ctx.find(".js-summary").addClass("hidden"),this.$jsAddressSummary.addClass("hidden"),this.$nextAllEditButton.addClass("hidden"),this._events.emit("hideEditbutton");const editStepNumber=this.$ctx.find(".step-number").text();this.addEditTracking(editStepNumber)},addEditTracking(editStepNumber){editStepNumber.includes("1")?T.Utils.getLayout().trackValues("DOB edit appliance data",{}):editStepNumber.includes("2")?T.Utils.getLayout().trackValues("DOB edit question tree",{}):editStepNumber.includes("3")?T.Utils.getLayout().trackValues("DOB edit address",{}):T.Utils.getLayout().trackValues("DOB edit appointment",{})},toggleBookingButton(){this.dob2bookButtonValid(),this.$nextStep.length?this.$jsDobBook.attr("disabled",!0):(this._events.emit("showEditbutton"),this.responseValueDOBStep&&4==this.responseStepNumber&&this.$isRadioButtonDOBTCClicked&&!this.$dobActiveStep&&this.$jsDobBook.attr("disabled",!1))},toggleNextButton(data){this.$ctx.find(".js-dob2problem").is(data.$problemStep)&&this.$nextButton.toggleClass("hidden",data.value)},enableLoadingVisualization($currentTarget){this._events.emit("form:disableSubmit",{id:this.$form.data("t-id")}),this._events.emit("loader:open",{loaderType:"layer",$trigger:$
7currentTarget})},disableLoadingVisualization($currentTarget){this._events.emit("form:enableSubmit",{id:this.$form.data("t-id")}),this._events.emit("loader:close",{$trigger:$currentTarget})}})}(jQuery),function($){T.Module.CollapseModule=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$collapseLabels=this.$ctx.find(".js-collapse-label"),this.$collapseContent=this.$ctx.find(".js-collapse-content"),this.$collapseTexts=this.$ctx.find(".js-collapse-text"),this.$activeContentText,this.windowResizeDebounceTime=50,this.initIntersectionObserver(),resolve()},initIntersectionObserver(){const observationTarget=this._ctx,observer=new IntersectionObserver(([entry])=>{if(entry.isIntersecting){const $firstLabel=this.$collapseLabels.first();this.initLabelFocusListener(),this.setActiveLabel($firstLabel),this.viewPortChangeListener(),observer.unobserve(observationTarget)}},{threshold:1});observer.observe(observationTarget)},initLabelFocusListener(){this.$collapseLabels.on("focus",event=>{const $currentTarget=$(event.currentTarget),trackingData={collapse_module_id:this.$ctx.data("tracking-id"),collapse_module_label_position:$currentTarget.index()+1,collapse_module_label_total:this.$collapseLabels.length,collapse_module_label_text:$currentTarget.text().trim()};this.resetLabels(),this.setActiveLabel($currentTarget),T.Utils.getLayout().trackValues("collapse module label click",trackingData)})},resetLabels(){this.$collapseLabels.attr("aria-expanded",!1),this.$collapseLabels.removeClass("collapse-label-active"),this.$collapseTexts.removeClass("collapse-text-active")},setActiveLabel($currentTarget){const eventTargetIndex=$currentTarget.index();this.$activeContentText=this.$collapseTexts.eq(eventTargetIndex),$currentTarget.attr("aria-expanded",!0),$currentTarget.addClass("collapse-label-active"),this.$activeContentText.addClass("collapse-text-active"),this.setContentHeight()},setContentHeight(){this.$collapseContent.css("height",`${this.$activeContentText.outerHeight(!0)}px`)},viewPortChangeListener(){$(window).on("resize",T.Utils.debounce(()=>{this.setContentHeight()},this.windowResizeDebounceTime))}})}(jQuery),function($){T.Module.CompareAddItem=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.targetUrl=this.$ctx.attr("data-href"),this.$ctx.on("click",e=>window.location.href=this.targetUrl),resolve()},sync(){}})}(jQuery),function($){T.Module.CompareStickyBar=T.createModule({start(resolve){return this.isSynced=!1,this.$ctx=$(this._ctx),this.doT=doT,this.$template=$(".tpl-compareproducts"),this.$productState=this.$ctx.find(".js-compare-state"),this.$productCompareStickybar=$(".js-compare-stickybar"),this.slideCount=this.$ctx.find(".js-compare-slide").length,this.$paginationArrows=this.$ctx.find(".js-comparison-slider-arrows"),this.$closeButton=this.$ctx.find(".js-comparebar-thumb-close"),this.$prevArrow=this.$paginationArrows.find(".prev"),this.$nextArrow=this.$paginationArrows.find(".next"),this.$slide=this.$ctx.find(".js-compare-slide"),this.$compareElements=this.$ctx.find(".js-elements-compare"),this.slidesToShowDesktop=5,this.slider=null,this.slidesToScrollDesktop=Math.floor(this.slidesToShowDesktop),this.$closeButton.on("click",ev=>this.onClickCloseThumb(ev)),this._events.on("updateCompareCount",data=>this.onShowStickybar(data)),this._events.on("compare:removeProduct",data=>this.onRemoveProductFromTiles(data)),this._events.on("t.sync",()=>this.sync()),this.initSlick(),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0,this._events.emit("productconversionarea:skuComparisonChanged"))},onShowStickybar(data){const $productCompareCount=data.itemCount,newCompareProductCode=data.productCode,newCompareProductImageUrl=data.imgUrl,productRemoved=data.productRemoved;newCompareProductImageUrl&&!productRemoved&&this.createnewElement(newCompareProductCode,newCompareProductImageUrl),$productCompareCount>=1?(this.$productCompareStickybar.addClass("is-show"),$productCompareCount<=1?this.$productState.addClass("a-button-disabled"):this.$productState.removeClass("a-button-disabled a-button-secondary").addClass("a-button-primary")):this.$productC
7ompareStickybar.removeClass("is-show")},createnewElement(productCode,imgUrl){let data={productCode:productCode,imgUrl:imgUrl},slider=this.$ctx.find(".js-stickybar-slider");this.slide=this.$ctx.find(".js-compare-slide"),this.selectedCompareTpl=this.doT.template($(".js-compare-tpl").html());const selectedCompareHtml=this.selectedCompareTpl(data);slider.slick("slickAdd",selectedCompareHtml),this.$ctx.find(".js-compare-slide:last()").find(".js-comparebar-thumb-close").on("click",ev=>this.onClickCloseThumb(ev)),this.slideCount=this.$ctx.find(".js-compare-slide").length,$(".js-compare-count").text(this.slideCount);const newSlide=this.slide.parent().find(".new-product");setTimeout(function(){newSlide.removeClass("new-product")},500),this.hidePaginationArrows(),slider.slick("slickGoTo",+(this.slideCount-this.slidesToShowDesktop))},initSlick(){this.hidePaginationArrows();const slickProperties={infinite:!1,useTransform:!0,speed:300,arrows:!0,focusOnSelect:!1,appendArrows:this.$paginationArrows,prevArrow:this.$prevArrow,nextArrow:this.$nextArrow,slidesToShow:this.slidesToShowDesktop,slidesToScroll:1};this.slider=this.$ctx.find(".js-stickybar-slider").slick(slickProperties)},destroySlider(){null!==this.slider&&(this.slider.slick("unslick"),this.slider=null)},hidePaginationArrows(){this.slideCount<=this.slidesToScrollDesktop?this.$paginationArrows.hide():this.$paginationArrows.show()},onClickCloseThumb(ev){const mod=this;let currentSlide=$(ev.currentTarget).parent(".js-compare-slide");currentSlide.addClass("moveOut");let slider=this.$ctx.find(".js-stickybar-slider");const slickTrack=this.$ctx.find(".js-compare-slide"),currentSlideIndex=$(slickTrack).index(currentSlide);setTimeout(function(){slider.slick("slickRemove",currentSlideIndex),mod.slideCount=mod.$ctx.find(".js-compare-slide").length,$(".js-compare-count").text(mod.slideCount),mod.hidePaginationArrows()},500);const productSku=$(ev.currentTarget).data("stickybarSku"),inputarray=$(".js-update-localstorage");let ctainput=null;for(const element of inputarray)element.value==productSku&&(ctainput=element);const parentAjaxContainer=ctainput?ctainput.closest(".js-ajax-request"):null;if(ctainput)this._events.emit("stickybar:skuComparisonChanged",{ajaxContainer:parentAjaxContainer,closedFromStickyBar:!0});else{const ajaxData={"compared-product":productSku},ajaxId=this.$ctx.parents().find(".js-product-compare-remove").data("ajax-id");T.Utils.startAjaxRequest(ajaxId,null,ajaxData);const productsInComparison=mod.slideCount-1;this.onShowStickybar({itemCount:productsInComparison})}},onRemoveProductFromTiles(productCode){const mod=this;let closeButtons=this.$ctx.find(".js-comparebar-thumb-close"),closeIconslideToBeRemoved=null;if(closeButtons.length)for(const element of closeButtons)$(element).data("stickybarSku")==productCode&&(closeIconslideToBeRemoved=$(element));const slideToBeRemoved=closeIconslideToBeRemoved?closeIconslideToBeRemoved.parent(".js-compare-slide"):null;slideToBeRemoved&&(slideToBeRemoved.addClass("moveOut"),setTimeout(function(){mod.destroySlider(),slideToBeRemoved.remove(),mod.slideCount=mod.$ctx.find(".js-compare-slide").length,mod.initSlick()},500))}})}(jQuery),function($){T.Module.CompareTable=T.createModule({start(resolve){this.$ctx=$(this._ctx),T.Commons.ScriptLoader.loadOnceDataTablesLibrary(()=>(this.initialize(),resolve())),this.selectors={onlineDealerAjax:".js-online-dealer-ajax",addToCart:".js-add-to-basket",buyOnline:".js-onlinedealer-action",productConversion:".m-productconversionarea"},this.drpProductFamily=this.$ctx.find(".js-compare-product-family"),this.drpProductFamily.on("change",event=>this.handleDrpProductFamily(event)),this.$footnoteCompare=this.$ctx.find(".js-footnote-sup"),this.$footnoteCompare.on("click",ev=>this.scrollToFootNoteCompare(ev)),this.$comparisonPrintLayout=this.$ctx.find(".js-comparison-print-layout"),this.$comparisonPrintLayout.on("click",()=>this.comparisonPrint()),this.printHeader=$(".js-header-rebrush"),this.subbrandIdentifier=$(".subbrand-identifier"),this.conversionBar=$(".conversion-bar"),this.headerBreadcrumb=$(".m-breadcrumb-rebrush"),this.feedbackButton=$(".js-feedback-button"),this.trustedShops=$(".m-trustedshops"),this.paymentOptions=$(".m-paymentoptions"),this.footerRebrush=$(".o-footer-rebrush"),this.$tableFixedHeader=this.$ctx.find(".table-fixed-header"),this.$buyOnlineAjax=this.$ctx.find(this.selectors.onlineDealerAjax),this.buyOnlineAjaxId=this.$buyOnlineAjax.data("ajax-id"),this.buyOnlineAjaxObj=this.$buyOnlineAjax.data("ajax"),window.onbeforeprint=(event=>{event.preventDefault(),this.onExpandAllToggleRowClicked(event,!0),this.printHeader.css("position","static"),this.subbrandIdentifier.css("display","none"),this.conversionBar.css("display","none"),this.headerBreadcrumb.css("display","none"),this.feedbackButton.css("display","none"),this.trustedShops.css("display","none"),this.paymentOptions.css("display","none"),this.footerRebrush.css("display","none"),this.$tableFixedHeader.css("position","static")}),window.onafterprint=(event=>{event.preventDefault(),this.onExpandAllToggleRowClicked(event,!1),this.printHeader.css("position","sticky"),this.subbrandIdentifier.css("display","flex"),this.conversionBar.css("display","flex"),this.headerBreadcrumb.css("display","flex"),this.feedbackButton.css("display","inline-block"),this.trustedShops.css("display","block"),this.paymentOptions.css("display","block"),this.footerRebrush.css("display","block"),this.$tableFixedHeader.css("position","sticky")})},sync(){this.isSynced||(this.isSynced=!0,this.initializeScrollButtons(),this.initializeExpandAllRows(),this.initializeTable(),this.initializeContentControls(T.Utils.getViewport()),this.initializeExpandToggleRows(),this.initializeShowOnlyDifferences(),this.checkHeaderBottomVisibility(),this.adjustTableLayout(),this.updateNotificationContainer(),this.whereToBuyButton())},updateNotificationContainer(){const successContainer=this.$ctx.find(".js-success-addproduct"),errorContainer=this.$ctx.find(".js-error-addproduct");setTimeout(()=>{successContainer&&successContainer.addClass("hidden"),errorContainer&&errorContainer.addClass("hidden")},5e3)},stop(){null!=this.elm.dataTable&&this.elm.dataTable.destroy()},initialize(){this.generateDynamicUrl();this.className={rowIsOpen:"m-comparetable__expandrow--expanded",rowWasAlreadyOpen:"was-already-open",columnWide:"m-comparetable__col--wide",columnSmall:"m-comparetable__col--small",allExpanded:"m-comparetable__table--expanded",slideDisabled:"m-comparetable__slide-control
7s--disabled",fixedHeaderIsShown:"m-comparetable__fixedHeader--isshown",fixedHeaderPosition:"fixedHeaderPosition"},this.selector={matchHeightHeaderHead:".js-matchHeight-headerhead",matchHeightHeaderBody:".js-matchHeight-headerbody",matchHeightData:".js-matchHeight-data",matchHeightStock:".js-match-height-stock",matchHeightPromotionText:".js-product-promotion-wrapper",firstColumnContent:".js-first-column-content",propertyNameRow:".js-propertyname-row",expandRow:".js-expand-row",propertyRowFirstTd:".js-properties-first-td",expandAllRows:".js-expand-all-rows",headerBottom:".js-header-bottom",dataTables:"table.dataTable",fixedHeaderTable:"table.dataTable.fixedHeader-floating, table.dataTable.fixedHeader-locked",initialHiddenCols:"th.js-initial-hidden-column, td.js-initial-hidden-column",rowWithDifferences:"tr.js-has-compare-differences",rowWithoutDifferences:"tr.js-has-no-compare-differences"},this.elm={$table:this.$ctx.find("table"),$leftScrollBtn:this.$ctx.find(".js-control-left"),$rightScrollBtn:this.$ctx.find(".js-control-right"),$showDifferencesOnly:this.$ctx.find(".js-compareview-toggle-differences")},this.visibleColumnsVP1=2,this.visibleColumnsVP2_3=4,this.maxColumns=this.elm.$table.find("th").length,this.firstColIndex=2,this.colIndex=this.firstColIndex,this.initializeVisibleColumns(T.Utils.isViewport("mobile")?this.visibleColumnsVP1:this.visibleColumnsVP2_3),this.delayChangeVisibleColumns=T.Utils.debounce((newVisibleColumns,viewport)=>this.changeVisibleColumns(newVisibleColumns,viewport),100),this.delayMatchHeightOfColumnHeader=T.Utils.debounce(()=>this.matchHeightOfColumnHeader(),200),$(window).on("resize",()=>this.onResize()),$(window).on("scroll",T.Utils.debounce(()=>{if($(this.selector.dataTables).length>0)return this.onScroll()},50)),this._events.on("t.sync",()=>this.sync()),this._events.on("viewportChanged",T.Utils.debounce(viewport=>this.onViewportChanged(viewport),100))},initializeVisibleColumns(visibleColumns){this.maxVisibleColumns=visibleColumns,this.visibleColumns=Math.min(this.maxColumns-3,this.maxVisibleColumns),this.visibleColumnIndexes=Array.from(Array(this.visibleColumns+2).keys()),this.visibleColumnIndexes.push(this.maxColumns-1),this.lastColIndex=this.maxColumns-this.visibleColumns-1},initializeTable(){$(this.selector.initialHiddenCols,this.elm.$table).css("visibility","visible"),this.elm.dataTable=this.elm.$table.DataTable({paging:!1,searching:!1,ordering:!1,scrollX:!1,info:!1,bAutoWidth:!1,fixedHeader:{header:!0,footer:!1},responsive:{details:!0},columnDefs:[{targets:this.visibleColumnIndexes,visible:!0},{targets:"_all",visible:!1}]})},initializeScrollButtons(){this.onLeftScrollDelayed=T.Utils.debounce(()=>{this.onLeftScrollBtnClicked()},50),this.onRightScrollDelayed=T.Utils.debounce(()=>{this.onRightScrollBtnClicked()},50),this.checkScrollButtonsEnabled(),this.elm.$leftScrollBtn.on("click",ev=>{ev.preventDefault(),ev.stopPropagation(),this.onLeftScrollDelayed()}),this.elm.$rightScrollBtn.on("mousedown",ev=>{ev.preventDefault(),ev.stopPropagation(),this.onRightScrollDelayed()})},initializeShowOnlyDifferences(){this.elm.$showDifferencesOnly.on("change",ev=>{this.onShowOnlyDifferences(ev)})},initializeExpandToggleRows(){$(this.selector.expandRow,this.elm.$table).on("click",ev=>this.onExpandToggleRowClicked(ev)),$(this.selector.expandRow,this.elm.$table).each((index,row)=>{$(row).nextUntil(this.selector.expandRow).hide(),0===index&&$(row).trigger("click")})},initializeExpandAllRows(){$(this.selector.expandAllRows,this.$ctx).on("click",ev=>this.onExpandAllToggleRowClicked(ev))},initializeContentControls(viewport){let $dataTables=$(this.selector.dataTables),$th=$dataTables.find("th:first-child");"desktop"===viewport&&($th.removeClass(this.className.columnSmall).addClass(this.className.columnWide),$dataTables.find(this.selector.firstColumnContent).show())},onExpandToggleRowClicked(ev){let $expandRow=$(ev.currentTarget);ev.preventDefault(),ev.stopPropagation(),this.setExpandableRows($expandRow,!$expandRow.hasClass(this.className.rowIsOpen))},onExpandAllToggleRowClicked(ev,isExpand){ev.preventDefault(),ev.stopPropagation();let $dataTables=$(this.selector.dataTables),expandAll=isExpand||!$dataTables.hasClass(this.className.allExpanded);expandAll?$dataTables.addClass(this.className.allExpanded):$dataTables.removeClass(this.className.allExpanded),this.elm.$showDifferencesOnly.prop("checked",!1),$(this.selector.expandRow,this.elm.$table).each((index,row)=>{let $expandRow=$(row);$expandRow.show(),$expandRow.removeClass(this.className.rowWasAlreadyOpen),this.setExpandableRows($expandRow,expandAll)}),this.adjustTableLayout()},onShowOnlyDifferences(ev){ev.preventDefault(),ev.stopPropagation(),this.showOnlyDifferences()},onLeftScrollBtnClicked(){this.colIndex>this.firstColIndex&&this.colIndex<=this.lastColIndex&&(this.colIndex--,this.elm.dataTable.column(this.colIndex+this.visibleColumns).visible(!1),this.elm.dataTable.column(this.colIndex).visible(!0),this.checkScrollButtonsEnabled(),this.checkHeaderBottomVisibility(),setTimeout(()=>this.adjustTableLayout(),50))},onRightScrollBtnClicked(){this.colIndex>=this.firstColIndex&&this.colIndex<this.lastColIndex&&(this.elm.dataTable.column(this.colIndex).visible(!1),this.elm.dataTable.column(this.colIndex+this.visibleColumns).visible(!0),this.updateColumn(this.colIndex+this.visibleColumns),this.colIndex++,this.checkScrollButtonsEnabled(),this.checkHeaderBottomVisibility(),setTimeout(()=>this.adjustTableLayout(),50))},onScroll(){this.adjustFixedHeaderTable(),this.delayMatchHeightOfColumnHeader()},onResize(){this.resizing=!0,this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{this.resizing=!1},150)},onViewportChanged(viewport){"mobile"===viewport?this.maxVisibleColumns!==this.visibleColumnsVP1&&this.changeVisibleColumns(this.visibleColumnsVP1,viewport):this.maxVisibleColumns!==this.visibleColumnsVP2_3&&this.changeVisibleColumns(this.visibleColumnsVP2_3,viewport)},changeVisibleColumns(newVisibleColumns,viewport){if(this.resizing)return void this.delayChangeVisibleColumns(newVisibleColumns,viewport);let oldLastVisibleColumnIndex=this.colIndex+this.visibleColumns;this.initializeVisibleColumns(newVisibleColumns),this.initializeContentControls(viewport);let lastVisibleColumnIndex=Math.min(this.colIndex,this.lastColIndex)+this.visibleColumns;for(;oldLastVisibleColumnIndex>lastVisibleColumnIndex;)oldLastVisibleColumnIndex--,this.elm.dataTable.column(oldLastVisibleColumnIndex).visible(!1);for(;this.colIndex>this.lastColIndex;)this.colIndex--,this.elm.dataTable.column(this.colIndex).visible(!0);for(;oldLastVisibleColumnIndex<lastVisibleColumnIndex;)this.elm.dataTable.column(oldLastVisibleColumnIndex).visible(!0),this.updateColumn(oldLastVisibleColumnIndex),oldLastVisibleColumnIndex++;this.checkScrollButtonsEnabled(),this.checkHeaderBottomVisibility();let isShowOnlyDifferences=this.isShowOnlyDifferencesEnabled();$(this.selector.expandRow,this.elm.$table).each((index,row)=>{let $expandRow=$(row);if($expandRow.hasClass(this.className.rowIsOpen)){let $subRows=$expandRow.nextUntil(this.selector.expandRow);isShowOnlyDifferences&&($subRows=$subRows.filter(this.selector.rowWithDifferences));let $propertyNameRows=$subRows.prev(this.selector.propertyNameRow);"mobile"===viewport?$propertyNameRows.show():$propertyNameRows.hide()}}),this.adjustTableLayout()},whereToBuyButton(){const that=this;if(this.buyOnlineAjaxId&&this.buyOnlineAjaxObj){const request=T.Utils.startAjaxRequest(this.buyOnlineAjaxId,this.buyOnlineAjaxObj);request&&request[0]&&request[0].done(response=>
7{const $conversionArea=this.$ctx.find(this.selectors.productConversion);$.each($conversionArea,function(index,item){const $addToCartButton=$(item).find(that.selectors.addToCart),$buyOnlineButton=$(item).find(that.selectors.buyOnline);$addToCartButton&&$addToCartButton.length<=0&&$buyOnlineButton.length>0?$buyOnlineButton.removeClass("a-button-secondary").addClass("a-button-primary"):$addToCartButton&&$addToCartButton.is("[disabled=disabled]")&&$buyOnlineButton.length>0&&$buyOnlineButton.removeClass("a-button-secondary").addClass("a-button-primary")})})}},isShowOnlyDifferencesEnabled(){return this.elm.$showDifferencesOnly.prop("checked")},showOnlyDifferences(){let isShowOnlyDifferences=this.isShowOnlyDifferencesEnabled();$(this.selector.expandRow,this.elm.$table).each((index,row)=>{let $expandRow=$(row),$subRows=$expandRow.nextUntil(this.selector.expandRow),viewport=T.Utils.getViewport();if(isShowOnlyDifferences){let $subRowsWithDifferences=$subRows.filter(this.selector.rowWithDifferences),$subRowsWithoutDifferences=$subRows.filter(this.selector.rowWithoutDifferences);if($expandRow.hasClass(this.className.rowIsOpen)&&$expandRow.addClass(this.className.rowWasAlreadyOpen),0===$subRowsWithDifferences.length)this.setExpandableRows($expandRow,!1),$expandRow.hide();else{$expandRow.hasClass(this.className.rowIsOpen)||this.setExpandableRows($expandRow,!0);let $propertyNameWithDifferencesRows=$subRowsWithDifferences.prev(this.selector.propertyNameRow);"mobile"===viewport?$propertyNameWithDifferencesRows.show():$propertyNameWithDifferencesRows.hide(),$subRowsWithDifferences.show(),$subRowsWithoutDifferences.prev(this.selector.propertyNameRow).hide(),$subRowsWithoutDifferences.hide()}}else $expandRow.show(),this.setExpandableRows($expandRow,$expandRow.hasClass(this.className.rowWasAlreadyOpen)),$expandRow.removeClass(this.className.rowWasAlreadyOpen)}),this.adjustFixedHeaderTable(),this.adjustTableLayout()},setExpandableRows($expandRow,showAsOpened){let $subRows=$expandRow.nextUntil(this.selector.expandRow);if(showAsOpened){let isShowOnlyDifferences=this.isShowOnlyDifferencesEnabled();if("mobile"!==T.Utils.getViewport()&&($subRows=$subRows.not(this.selector.propertyNameRow)),isShowOnlyDifferences){let $subRowsWithDifferences=$subRows.filter(this.selector.rowWithDifferences),$subRowsWithoutDifferences=$subRows.filter(this.selector.rowWithoutDifferences);$subRowsWithDifferences.show().addClass(this.className.rowIsOpen),$subRowsWithoutDifferences.hide().removeClass(this.className.rowIsOpen),$expandRow.addClass(this.className.rowIsOpen)}else $subRows.show().addClass(this.className.rowIsOpen),$expandRow.addClass(this.className.rowIsOpen)}else $subRows.hide().removeClass(this.className.rowIsOpen),$expandRow.removeClass(this.className.rowIsOpen)},checkScrollButtonsEnabled(){this.colIndex>this.firstColIndex&&this.colIndex<=this.lastColIndex?this.elm.$leftScrollBtn.removeClass(this.className.slideDisabled):this.elm.$leftScrollBtn.addClass(this.className.slideDisabled),this.colIndex>=this.firstColIndex&&this.colIndex<this.lastColIndex?this.elm.$rightScrollBtn.removeClass(this.className.slideDisabled):this.elm.$rightScrollBtn.addClass(this.className.slideDisabled)},checkHeaderBottomVisibility(){($(this.selector.fixedHeaderTable).is(":visible")?$(this.selector.headerBottom,this.selector.fixedHeaderTable):$(this.selector.headerBottom,this.elm.$table)).hide().last().show()},updateColumn(colIndex){const $firstRowHeader=$(this.elm.$table.find("thead tr:first")),$columnNodes=$(this.elm.dataTable.column(colIndex).nodes());T.Utils.initializeModules($columnNodes),T.Utils.initializeModules($firstRowHeader),T.Utils.performContentInitializationOnReplacement(!1,$columnNodes),T.Utils.performContentInitializationOnReplacement(!1,$firstRowHeader)},matchHeightOfColumnHeader(){const $colsHeaderHead=$(this.selector.matchHeightHeaderHead),$colsHeaderBody=$(this.selector.matchHeightHeaderBody),$colsStock=$(this.selector.matchHeightStock),$colsData=$(this.selector.matchHeightData),$colPromotionText=$(this.selector.matchHeightPromotionText);$colsHeaderHead.matchHeight(),$colsHeaderBody.matchHeight(),$colsData.matchHeight(),$colsStock.matchHeight(),$colPromotionText.matchHeight()},adjustTableLayout(){this.matchHeightOfColumnHeader(),this.elm.dataTable.fixedHeader.adjust();T.Utils.getViewport();$(this.selector.propertyRowFirstTd,this.elm.$table).attr("colspan",this.visibleColumns+2)},adjustFixedHeaderTable(){$(this.selector.fixedHeaderTable).removeClass(this.className.fixedHeaderPosition).hide(),this.elm.$table.removeClass(this.className.fixedHeaderIsShown),this.elm.dataTable&&this.elm.dataTable.fixedHeader.disable();const windowTop=$(document).scrollTop(),tableoffset=this.elm.$table.offset().top,pageHeaderHeight=$(".js-
7header-menu").outerHeight(),$header4=this.elm.$table.find(".js-header-4"),$header5=this.elm.$table.find(".js-header-5"),$header6=this.elm.$table.find(".js-header-6"),$headerRatingsummary=this.elm.$table.find(".m-comparetableHeader__ratingsummary");pageHeaderHeight&&(this.elm.$table.find(".table-fixed-header")[0].style.top=`${pageHeaderHeight-1}px`),windowTop+25>=tableoffset?($headerRatingsummary.hide(),$header4.hide().removeClass("fragment std-header-4"),$header5.hide().removeClass("fragment std-header-5"),$header6.hide().removeClass("fragment std-header-6")):($headerRatingsummary.show(),$header4.addClass("fragment std-header-4").show(),$header5.addClass("fragment std-header-5").show(),$header6.addClass("fragment std-header-6").show())},generateDynamicUrl(){const productFamily=this.$ctx.data("productCodes");let productPageUrl=productFamily?"?products="+productFamily:location.href.split("?")[0];const options={state:{currentStateAjaxUri:location.href},url:productPageUrl};noQuery="false",T.Utils.replaceHistory(options,noQuery)},handleDrpProductFamily(ev){const productFamilycode=ev.currentTarget.value,parentElement=$(ev.target).parent(),ajaxId=parentElement.data("ajaxId"),ajaxObj=parentElement.data("ajax");ajaxObj.data.productFamily=productFamilycode,T.Utils.startAjaxRequest(ajaxId,ajaxObj)},updateNotificationContainer(){const successContainer=this.$ctx.find(".js-success-addproduct"),errorContainer=this.$ctx.find(".js-error-addproduct");setTimeout(()=>{successContainer&&successContainer.addClass("hidden"),errorContainer&&errorContainer.addClass("hidden")},5e3)},scrollToFootNoteCompare(ev){ev.preventDefault(),this._events.emit("scrollToSection:footnotes")},comparisonPrint(){window.print()}})}(jQuery),function($){T.Module.CompareTableHeader=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$deleteProductBtn=this.$ctx.find(".js-delete-compare-product"),this.$compareBtnAjax=this.$deleteProductBtn.data("request"),this.$deleteProductBtn.on("click",()=>this.removeProductFromComparison()),this.$localStorageKey=this.$deleteProductBtn.data("localstorage-key"),this.$productCode=this.$deleteProductBtn.data("product-code"),this.$currentFamily=this.$deleteProductBtn.data("current-family"),resolve()},removeProductFromComparison(){const request=T.Utils.startAjaxRequest("ajax-compareview",this.$compareBtnAjax);request&&request[0]&&request[0].done(response=>{if(response){const productsInCompare=T.Utils.localStorageGetItem(this.$localStorageKey);if(productsInCompare)if(Array.isArray(productsInCompare)){const comparableProduct=productsInCompare.filter(item=>item!==this.$productCode);T.Utils.localStorageSetItem(this.$localStorageKey,comparableProduct)}else{const familyKey=Object.keys(productsInCompare).find(key=>key.includes(this.$currentFamily));familyKey&&(productsInCompare[familyKey]=productsInCompare[this.$currentFamily].filter(item=>item.productCode!==this.$productCode)),T.Utils.localStorageSetItem(this.$localStorageKey,productsInCompare)}}})}})}(jQuery),function($){T.Module.ConsumerSearchBox=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this._selector={searchButton:".js-simple-search-button",resetButton:".js-reset-filters",closeAdvancedSearchLink:".js-close-advanced-filters",pos:".js-store"},this.elm={$searchButton:$(this._selector.searchButton,this.$ctx),$resetButton:$(this._selector.resetButton,this.$ctx)},this.elm.$searchButton.on("click",ev=>this.onClickSearch(ev)),this.elm.$resetButton.on("click",ev=>this.onClickReset(ev)),$(document).on("click",this._selector.closeAdvancedSearchLink,ev=>this.closeAdvancedSearchLink(ev)),resolve()},sync(){},onClickSearch(ev){ev.preventDefault(),$(document.getElementById(this.$ctx.data("table-id"))).trigger("searchableTableList.updateTableData")},onClickReset(ev){ev.preventDefault(),this.$ctx.find(":input").not(":hidden").val("").change()},closeAdvancedSearchLink(ev){const advanceFilter=this.$(ev.currentTarget),storeData=$(this._selector.pos).val();let $link=advanceFilter.find(".a-link"),dataAjax=$link.data("request");const newData={...dataAjax,data:{...dataAjax.data,pointOfServiceId:storeData}};$link.data("request",newData),T.Utils.startAjaxRequest(advanceFilter.data("ajaxId"),advanceFilter.data("ajax"),newData.data),this._events.emit("header:disable-sticky"),$(document.getElementById(this.$ctx.data("advanced-search-id"))).trigger("closeMoreLessContent")}})}(jQuery),function($){T.Module.ContentCompareTable=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$sectionToggleBtnsDesktop=this.$ctx.find(".expand-area .js-icon-arrow-down"),this.$sectionToggleBtnsMobile=this.$ctx.find(".item-headline .js-icon-arrow-down"),this.arrowPosition=null,this.listenToDropdownChange(),this.calculateFieldHeight(),this.setExpandArrowPosition(),this.$sectionToggleBtnsDesktop.on("click",e=>this.onClickExpandIconDesktop(e)),this.$sectionToggleBtnsMobile.on("click",e=>this.onClickExpandIconMobile(e)),$(window).on("resize",()=>{this.calculateFieldHeight(),this.setExpandArrowPosition()}),resolve()},listenToDropdownChange(){this.$ctx.find(".m-forminput-dropdown").change(e=>{const $itemToSwitch=$(e.target).closest(".item"),options=e.target.options,newSelectIndex=options.selectedIndex;this.trackDropdownChange($(e.target).find("option[selected]").text(),options[newSelectIndex].text,this.$ctx.find(".item").index($itemToSwitch));const $secondItemToSwitchWith=this.$ctx.find(`.item[option-id="${newSelectIndex}"]`);this.swapElements($itemToSwitch,$secondItemToSwitchWith),this.updateDropdownState($itemToSwitch),this.calculateFieldHeight()})},calculateFieldHeight(){this.resetFieldHeights();const maxHeights=this.getMaxHeights();this.setHeights(maxHeights[0],maxHeights[1])},resetFieldHeights(){this.$ctx.find(".item").find(".inner-information, .item-headline").css("min-height","unset")},getMaxHeights(){let fieldMaxHeights=[],headlineMaxHeights=[];return this.$ctx.find(".item").each((index,item)=>{const $innerFields=$(item).find(".inner-information"),$itemHeadlineSections=$(item).find(".item-headline");$innerFields.each((index,item)=>{(!fieldMaxHeights[index]||fieldMaxHeights[index]<item.clientHeight)&&(fieldMaxHeights[index]=item.clientHeight)}),$itemHeadlineSections.each((index,item)=>{(!headlineMaxHeights[index]||headlineMaxHeights[index]<item.clientHeight)&&(headlineMaxHeights[index]=item.clientHeight)})}),[fieldMaxHeights,headlineMaxHeights]},setHeights(fieldMaxHeights,headlineMaxHeights){this.$ctx.find(".item").each((index,item)=>{const $innerFields=$(item).find(".inner-information"),$itemHeadlineSections=$(item).find(".item-headline");$innerFields.each((index,item)=>{$(item).css("min-height",fieldMaxHeights[index])}),$itemHeadlineSections.each((index,item)=>{$(item).css("min-height",headlineMaxHeights[index])})})},setExpandArrowPosition(){const isDesktop="desktop"===T.Utils.getViewport(),itemCount=this.$ctx.find(".item").length;switch(this.arrowPosition&&this.$ctx.removeClass(`arrow-position-${this.arrowPosition}`),itemCount){case 1:this.arrowPosition=0;break;case 2:case 3:this.arrowPosition=1;break;case 4:this.arrowPosition=isDesktop?2:1;break;default:this.arrowPosition=isDesktop?2:1}this.$ctx.addClass(`arrow-position-${this.arrowPosition}`)},swapElements(ele1,ele2){const $one=$(ele1),$two=$(ele2);let $oneParent,$twoParent;const $onePrev=$one.prev();$onePrev.length<1&&($oneParent=$one.parent());const $twoPrev=$two.prev();$twoPrev.length<1&&($twoParent=$two.parent()),$onePrev.length?$onePrev.after($two):$oneParent.prepe
7nd($two),$twoPrev.length?$twoPrev.after($one):$twoParent.prepend($one)},updateDropdownState($itemToSwitch){const $oldSelectedElement=$itemToSwitch.find(".m-forminput-dropdown .dropdown [selected]"),oldSelectedValue=$oldSelectedElement.attr("value"),oldSelectedTitle=$oldSelectedElement.text();$oldSelectedElement.removeAttr("selected"),$itemToSwitch.find(`.m-forminput-dropdown .dropdown [value=${oldSelectedValue}]`).attr("selected",!0),$itemToSwitch.find(".m-forminput-dropdown .select2-selection__rendered").text(oldSelectedTitle),$itemToSwitch.find(".m-forminput-dropdown .select2-selection__rendered").attr("title",oldSelectedTitle)},onClickExpandIconDesktop(e){const $currentTarget=$(e.currentTarget);this.trackExpandClick($currentTarget.closest(".item-content-information").prevAll(".item-headline:first").find(".headline-expand-area").text(),!0);const $informationWrappers=$currentTarget.closest(".item-content").find(".item-content-information"),currentInformationWrapper=$currentTarget.closest(".item-content-information"),currentInformationWrapperIndex=$informationWrappers.index(currentInformationWrapper);this.$ctx.find(".item-content").each((i,item)=>{const $allInformationWrappers=$(item).find(".item-content-information"),$currentInformationWrapper=$($allInformationWrappers[currentInformationWrapperIndex]);this.changeArrowIcon($currentInformationWrapper.prevAll(".item-headline:first").find(".icon")),$currentInformationWrapper.addClass("expanded")})},onClickExpandIconMobile(e){const $currentTarget=$(e.currentTarget);this.trackExpandClick($currentTarget.siblings(".headline-expand-area").text(),$currentTarget.hasClass("js-icon-arrow-down"));const $informationWrappers=$currentTarget.closest(".item-content").find(".item-content-information"),currentInformationWrapper=$currentTarget.closest(".item-headline").next(".item-content-information"),currentInformationWrapperIndex=$informationWrappers.index(currentInformationWrapper);this.$ctx.find(".item-content").each((i,item)=>{const $allInformationWrappers=$(item).find(".item-content-information"),$currentInformationWrapper=$($allInformationWrappers[currentInformationWrapperIndex]);this.changeArrowIcon($currentInformationWrapper.prev(".item-headline").find(".icon")),$currentInformationWrapper.toggleClass("expanded")})},trackExpandClick(sectionHeadline,expanded){const trackingValues={contentcomparetable_section_headline:sectionHeadline,contentcomparetable_section_expanded:expanded};T.Utils.getLayout().trackValues("contentcomparetable expand click",trackingValues)},trackDropdownChange(oldOptionText,newOptionText,column){const trackingValues={contentcomparetable_old_option:oldOptionText,contentcomparetable_new_option:newOptionText,contentcomparetable_column:column};T.Utils.getLayout().trackValues("contentcomparetable order change",trackingValues)},changeArrowIcon($target){$target.toggleClass("icon-arrow-down").toggleClass("js-icon-arrow-down").toggleClass("icon-arrow-up").toggleClass("js-icon-arrow-up")}})}(jQuery),function($){T.Module.ContentloadBySelection=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.selector={select:".js-select",tab:".js-tab",tabcontent:".js-tabcontent"},this.$select=$(this.selector.select,this.$ctx),this.$select.on("change",()=>{this.loadContent()}),this.disableInitialInactiveTabContentFormFields(),resolve()},disableInactiveTabContentFormFields(ev){const $tabcontent=$(this.selector.tabcontent,this.$ctx),tabContentSrcId=$(ev.currentTarget).attr("href");$tabcontent.each(function(){$(this).attr("id")===tabContentSrcId?T.Utils.genericFormKeepDisabledFieldsOnShow($(this)):T.Utils.genericFormDisableFieldsOnHide($(this))})},disableInitialInactiveTabContentFormFields(){$(this.selector.tab,this.$ctx).on("click",ev=>{$(ev.currentTarget).closest("li").hasClass("is-active")||this.disableInactiveTabContentFormFields(ev)}),$(this.selector.tabcontent,this.$ctx).each(function(){if(!$(this).hasClass("is-active")){$(this).find("input, textarea, select").each(function(){$(this).prop("disabled")&&$(this).attr("data-origindisabled",!0),$(this).find("input, textarea, select").prop("disabled",!0)})}})},loadContent(e){const actionUrlFull=`${this.$select.data("actionurl")}/${this.$select.find(":selected").val()}`,request=T.Utils.startAjaxRequest(!1,{url:actionUrlFull,method:"GET",dataType:"html",dataRendering:!0});return!!request&&(request[0].then(()=>this.disableInitialInactiveTabContentFormFields()),request[0].fail(msg=>console.info(msg)))}})}(jQuery),jQuery,T.Module.ContentText2Col=T.createModule({start:resolve=>resolve(),sync(){}}),function($){T.Module.ContentTextMedia=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.config=this.$ctx.data(),this.$media=this.$(".media"),this.$content=this.$(".content"),this.$contentInner=this.$(".content-inner"),this.$heading=this.$(".heading"),this.isVP2Special=!1,this.initialAlign="left",this.imageLoaded=!1,this.videoLoaded=!1,this.$moreLess=this.$(".js-moreless"),this.$moreLessReference=this.$("[data-moreless-reference-id]"),null!=this.config.headingVp2Special&&(this.isVP2Special=!!this.config.headingVp2Special),"right"===this.config.mediaFloat&&(this.initialAlign="right"),this.stateClassMediaHidden="hidden",T.Utils.isViewport("mobile")||this.positionElements(),this.hasMedia=this.$media.length>0,this.$mediaImage=this.$media.find("img"),this.$img=this.$ctx.find("img"),this.hasImage=this.$mediaImage.length>0,this.$video=this.$ctx.find(".m-video"),this.hasVideo=this.$video.length>0,this.isCliplisterVideo=this.$video.length>0&&this.$video.hasClass("m-video-cliplister"),this.isCliplisterVideo&&(this.mediaVideoId=this.$video.data("video-id")),(this.hasImage||this.hasVideo)&&(this.$moreLess.attr("data-external-resize-control",!0),$(window).on("resize",T.Utils.debounce(()=>this.recalculateMoreLess(),50)),this.hasVideo?this._events.on("video:loaded",data=>this.onLoadVideo(data)):(this.$img[0].naturalHeight>1&&this.onLoadMedia(),this.$img.on("load",()=>
7this.onLoadMedia())));const $layer=this.$ctx.find(".media .media-inner > .m-layer");return $layer.length>0&&$layer.appendTo($("body")),this.$modelContainer=this.$media.find(".js-model-viewer-container"),this.$modelViewerButton=$(".js-model-trigger",this.$ctx),this.$modelViewerButton.on("click",ev=>this.onClickModelViewerButton(ev)),this._events.on("3dmodel:trigger-toggle",data=>this.toggleModelTrigger(data)),this._events.on("viewportChanged",viewport=>this.onViewportChange(viewport)),this._events.on("contentextmedia:reset-align",()=>this.onResetAlign()),this._events.on("contenttextmedia:video-prechecked",data=>this.onVideoPrechecked(data)),this._events.on("t.sync",()=>this.sync()),this.elementInitialized=!1,resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0,this.$video.length>0&&(this.video=this._sandbox.getModuleById(this.$video.data("t-id"))),this.needMoreLessSync?this.recalculateMoreLess():this.hasImage||this.hasVideo||this.initialized(),T.Utils.debounce(this.matchHeights(),200))},closeMoreLess(notransition){if(this.isMoreLessOpen())return this.fetchMoreLessComponent(),null!=this.moreLessComponent?this.moreLessComponent.close(!1):void 0},isMoreLessOpen(){return this.fetchMoreLessComponent(),null!=this.moreLessComponent?this.moreLessComponent.isOpen():void 0},isImageLoaded(){return 0===this.media.length||this.imageLoaded},addInitializedListener(cb){return this.elementInitialized&&"function"==typeof cb&&cb(),this.initializedListener=cb},stopVideo(){null!=this.video&&this.video.videoPause()},setAlign(align){const targetAlign=align||this.initialAlign;if(this.config.mediaFloat=targetAlign,!T.Utils.isViewport("mobile"))return this.resetElements(),this.positionElements()},onResetAlign(){if(this.config.mediaFloat!==this.initialAlign)return this.setAlign(this.initialAlign)},matchHeights(){if(this.isVP2Special){const $elements=this.$heading.add(this.$media);return"tablet"===T.Utils.getViewport()?$elements.matchHeight():$elements.removeMatchHeight()}},positionElements(){return"right"===this.config.mediaFloat&&!1===this.$media.prev().is(this.$content)&&this.$media.insertAfter(this.$content),this.isVP2Special&&("tablet"===T.Utils.getViewport()?("right"===this.config.mediaFloat?this.$heading.insertBefore(this.$media):this.$heading.insertAfter(this.$media),this.$heading.addClass("heading-special"),this.$content.appendTo(this.$ctx)):this.$heading.removeClass("heading-special").prependTo(this.$contentInner)),this.matchHeights()},resetElements(){if(this.config.headingAbove?this.$heading.prependTo(this.$ctx):this.$heading.prependTo(this.$content),!1===this.$media.next().is(this.$content))return this.$media.insertBefore(this.$content)},recalculateMoreLess(){if(this.fetchMoreLessComponent(),null!=this.moreLessComponent)return this.moreLessComponent.isInitialized()?(this.moreLessComponent.setReference(this.$moreLessReference),this.moreLessComponent.calculate(),this.needMoreLessSync=!1,this.initialized()):this.needMoreLessSync=!0},fetchMoreLessComponent(){if(!this.moreLessComponent){const tId=this.$moreLess.data("t-id");if(null!=tId)return this.moreLessComponent=this._sandbox.getModuleById(tId)}},initialized(){if(!this.elementInitialized)return this.elementInitialized=!0,"function"==typeof this.initializedListener?this.initializedListener():void 0},onLoadMedia(){if(this.imageLoaded=!0,this.matchHeights(),this.recalculateMoreLess(),null==this.moreLessComponent)return this.initialized()},onLoadVideo(data){if(data.$component.closest(this.$ctx).length>0)return this.onLoadVideoInternal()},onLoadVideoInternal(){return this.videoLoaded=!0,this.matchHeights(),this.recalculateMoreLess()},onVideoPrechecked(data){if(this.mediaVideoId===data.videoId)return this.$media.removeClass(this.stateClassMediaHidden)},onViewportChange(viewport){return"mobile"===viewport?this.resetElements():this.positionElements()},onClickModelViewerButton(ev){let $mediaHeight=this.$media.height(),$modelTrigger=$(ev.currentTarget);this._events.emit("3dmodel:open",{$modelCtx:this.$modelContainer}),this._events.emit("loader:open",{loaderType:"inline",loaderArea:$modelTrigger,$trigger:$modelTrigger}),this._events.emit("3dmodel:show",{$modelTrigger:$modelTrigger,$modelCtx:this.$modelContainer,$modelHeight:$mediaHeight}),$modelTrigger.off("click"),$modelTrigger.attr("disabled","disabled")},toggleModelTrigger(data){data.modelCtx[0]===this.$modelContainer[0]&&(data.disableTrigger?(this.$modelViewerButton.off("click"),this.$modelViewerButton.attr("disabled","disabled")):(this.$modelViewerButton.on("click",ev=>this.onClickModelViewerButton(ev)),this.$modelViewerButton.removeAttr("disabled")))}})}(jQuery),jQuery,T.Module.ContentTextMediaBig=T.createModule({start:resolve=>resolve(),sync(){}}),function($){T.Module.ContentTextMediaSlider=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$slider=this.$(".js-slider");const $images=this.$ctx.find("img");return this.contentTextMedias=[],this.mediaFloat=this.$ctx.data("media-float"),this.useDots=!0===(this.$ctx.data("use-dots")||!1),T.Utils.allSynced=!1,T.Commons.LazyLoadingInitializer.disableLazyLoading($images),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0,this.$ctx.find(".m-contenttextmedia").each((index,element)=>{const contentTextMedia=this._sandbox.getModuleById($(element).data("t-id"));if(this.contentTextMedias.push(contentTextMedia),null!=this.mediaFloat)return contentTextMedia.setAlign(this.mediaFloat)}),this.slider=this._sandbox.getModuleById(this.$slider.data("t-id")),null!=this.slider&&this.slider.init({infinite:!0,arrows:!0,dots:this.useDots,useCSS:!1,fade:!1,slidesToShow:1}))},setAlign(align){this.mediaFloat=align,this.isSynced||this.contentTextMedias.forEach(element=>element.setAlign(align))}})}(jQuery),function($){T.Module.ConversionBar=T.createModule({start(resolve){const $ctx=$(this._ctx);return this.isSynced=!1,this.elm={$searchButton:$(".js-search",$ctx),$cartAmount:$('[data-replace-container="ajax-002-cart"]',$ctx)},this.elm.$searchButton.on("click",$.proxy(this.onClickSearchButton,this)),this._events.on("t.sync",$.proxy(this.sync,this)),this._events.on("checkSearchState",$.proxy(this.onCheckSearchState,this)),this._events.on("closeSearchByNav",$.proxy(this.onCloseSearchByNav,this)),this._events.on("toggleSearchForm",$.proxy(this.onToggleSearchForm,this)),this._events.on("cart:update",$.proxy(this.onCartUpdate,this)),this._events.on("cart:message",$.proxy(this.onCartMessage,this)),resolve()},sync(){this.isSynced||(this.isSynced=!0,this._events.on("updateCartWhenCloned",$.proxy(this.onUpdateCartQuantity,this)))},sendSearchState(){return this._events.emit("toggleSearchForm",{isSearchActive:this.elm.$searchButton.hasClass("is-active")})},onClickSearchButton(ev){return this.elm.$searchButton.toggleClass("is-active"),this._events.emit("closeMobileNav.header",this.elm.$searchButton),this.sendSearchState(),ev.preventDefault()},onCloseSearchByNav(){return this.elm.$searchButton.removeClass("is-active"),this._events.emit("closeSearchForm.header")},onCheckSearchState(){return this.sendSearchState()},onToggleSearchForm(data){return data.isSearchActive?this.elm.$searchButton.addClass("is-active"):this.elm.$searchButton.removeClass("is-active")},onCartUpdate(data){const mod=this;if(this._ctx.hasAttribute("data-cloned"))return!1;{const request=T.Utils.startAjaxRequest("ajax-002-cart");return!!request&&request[0].done(result=>{mod._events.emit("updateCartWhenCloned",result.quantity),mod.elm.$cartAmount.html(result.quantity)})}},onUpdateCartQuantity(data){return this.elm.$cartAmount.html(data)},onCartMessage(data){const template=doT.template(this.$(".tpl-cartmessage").html()),$cartMessageContent=$(template({errorMessage:data.errorMessage}));return T.Utils.syncContent($cartMessageContent,"cart_flyout","append")}})}(jQuery),function($){T.Module.ConversionBarRebrush=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.elm={$cartAmount:$('[data-replace-container="ajax-002-cart"]',this.$ctx),$avatar:this.$ctx.find(".js-avatar"),$navMyAccount:$(document).find(".js-navmyaccount")},this.elm.$avatar.on("click",()=>{this.addActiveClass()}),this._events.on("popover:closed",data=>this.onPopoverClose(data)),this._events.on("cart:update",$.proxy(this.onCartUpdate,this)),this._events.on("cart:message",$.proxy(this.onCartMessage,this)),this._events.on("t.sync",$.proxy(this.sync,this)),resolve()},sync(){this.isSynced||(this.isSynced=!0,this._events.on("updateCartWhenCloned",$.proxy(this.onUpdateCartQuantity,this)))},addActiveClass(){this.elm.$avatar.addClass("active")},removeActiveClass(){this.elm.$avatar.removeClass("active")},onCartUpdate(){const mod=this;if(this._ctx.hasAttribute("data-cloned"))return!1;{const request=T.Utils.startAjaxRequest("ajax-002-cart");return!!request&&request[0].done(result=>{mod._events.emit("updateCartWhenCloned",result.quantity),mod.elm.$cartAmount.html(result.quantity)})}},onUpdateCartQuantity(data){return this.elm.$cartAmount.html(data)},onCartMessage(data){const template=doT.template(this.$(".tpl-cartmessage").html()),$cartMessageContent=$(template({errorMessage:data.errorMessage}));return T.Utils.syncContent($cartMessageContent,"cart_flyout","append")},onPopoverClose(data){data.opened&&this.removeActiveClass()}})}(jQuery),function($,doT){T.Module.CookitMapList=T.createModule({start(resolve,reject){const mod=this;return mod.$ctx=$(this._ctx),this.doT=doT,mod.$mapWrap=mod.$(".js-map-wrap"),mod.$dealerWrap=mod.$(".js-dealer-wrap"),mod.$dealerList=mod.$(".js-dealer-list"),mod.$mapContainer=mod.$(".js-map"),mod.$mapContainerInner=mod.$(".js-map-inner"),mod.$buttonToggleList=mod.$(".js-button-toggle-list"),mod.$buttonShowLayer=mod.$(".js-button-show-layer"),this.$webMappingImagery=this.$('[data-t-name="WebMappingImagery"]'),this.jsonConfig=window.storeLocator,mod.cookitItemListTpl=mod.doT.template(mod.$(".js-dealer-item-list-tpl").html()),mod.dealerNoResultsTpl=mod.doT.template(mod.$(".js-dealer-no-results-tpl").html()),this._events.on("webMappingImagery:initialized",data=>this.onWebMappingImageryLoaded(data)),this._events.on("newCookitsAvailable",data=>this.onNewDealerDataAvailable(data)),this._events.on("openLayer",()=>this.onOpenLayer()),this._events.on("closeLayer",()=>this.onCloseLayer()),this._events.on("t.sync",()=>this.sync()),this._events.on("viewportChanged",viewport=>this.onViewportChange(viewport)),this._events.on("cookitlocator:search",data=>this.onCookitLocatorSearch(data)),mod.globalSettings=T.Utils.dealerLocator,mod.mapZoomLevelDetail=mod.globalSettings.detailVie
7wZoomLevel,mod.showMorePageSize=mod.globalSettings.smallScreenShowMorePageSize,mod.showMoreCurrentlyVisible=mod.globalSettings.smallScreenShowMorePageSize,mod.hasProductContext=!1,mod.hasDealerResults=!1,mod.currentViewport="",mod.parentModuleId=mod.$ctx.closest(".o-cookitlocator").data("t-id"),mod.dealerGallerySizes=mod.$ctx.data("dealer-image-settings"),mod.cookitElements=[],mod.cookitFilteredElements=[],mod.selectedCookitFilter=[],mod.markers=[],mod.markersByDealerId=[],mod.activeDealerId="",mod.mustDealersShowRatingsOnDetailView=[],mod.dealersOnCall=[],mod.indexOfDealersAlreadyLoaded=[],mod.removedExpertDealers=[],mod.scrollTime=0,mod.lastScrollFireTime=0,mod.cookitFilteringElements=$(".cookit-filtering-element"),mod.cookitFilters=$(".cookit-filter"),mod.cookitFilters.on("click",ev=>this.onClickCookitFilter(ev)),this._events.on("webMappingImagery:loaded",data=>this.onWebMappingImageryLoaded(data)),resolve()},sync(){this.isSynced||(this.isSynced=!0),T.Commons.ScriptLoader.loadOnceGoogleMapsApi({channel:this.$ctx.data("google-channel"),client:this.$ctx.data("google-client"),key:this.$ctx.data("google-key")})},destroyMarkers(){return $.each(this.markers,(index,marker)=>this.webMappingImagery.destroyMarker(marker)),this.markers=[],this.markersByDealerId={}},disableSmallScreenBehaviour(){this.$buttonToggleList.removeClass("mobile-hidden"),this.$buttonShowLayer.addClass("mobile-hidden"),this.$mapContainer.off("click.triggerShowLayer"),this.webMappingImagery.hasMap()&&(this.$mapContainer.removeClass("trigger-layer"),this.toggleAllMapControls(!0))},enableSmallScreenBehaviour(){this.$buttonToggleList.addClass("mobile-hidden"),this.$buttonShowLayer.removeClass("mobile-hidden"),this.$mapContainer.on("click.triggerShowLayer",event=>this.onClickMapContainer(event)),(null!=this.webMappingImagery?this.webMappingImagery.hasMap():void 0)&&(this.$mapContainer.addClass("trigger-layer"),this.toggleAllMapControls(!1))},handleMapState(){if(this.webMappingImagery.hasMap()){if(null!=this.activeDealerLoaction)return this.webMappingImagery.setMapCenter(this.activeDealerLoaction),this.webMappingImagery.setZoomLevel(this.mapZoomLevelDetail);if(null==this.mapBounds)return this.webMappingImagery.setMapCenter(this.mapCenter),this.webMappingImagery.setZoomLevel(this.mapZoomLevelInitial);this.mapBounds}},onWebMappingImageryLoaded(data){return this.webMappingImagery=data.component,this.jsonConfig.initiallyCollapsed||(this.initializeMap(),this.initializeEventHandler(),this.$ctx.removeClass("pre-initialized"),this.$ctx.parent().removeClass("pre-initialized")),this.onViewportChange(T.Utils.getViewport())},initializeMap(){const centerCoord=this.webMappingImagery.createCoordinate(this.jsonConfig.inititalPos.center),zoomLevel=this.jsonConfig.inititalPos.zoom;this.$mapContainerInner.length>0&&this.webMappingImagery.createMap(this.$mapContainerInner[0],centerCoord,zoomLevel),this.webMappingImagery.setMapCenter(centerCoord),this.mapCenter=centerCoord,this.mapZoomLevelInitial=zoomLevel,this.$mapWrap.removeClass("pre-initialized"),this.setViewportDependingMapSettings(this.currentViewport),this.renderMarkers(this.cookit),this.addMapEvents()},addMapEvents(){this.webMappingImagery.map.addListener("zoom_changed",data=>{this.checkAvailableDealer()}),this.webMappingImagery.map.addListener("drag",data=>{this.checkAvailableDealer()})},checkAvailableDealer(){$(".cookit-all-filter").hasClass("selected")?this.showVisibleDealers(this.cookit):this.showVisibleDealers(this.cookitFilteredElements)},showVisibleDealers(dealers){const bounds=this.webMappingImagery.map.getBounds();let dealersCount=dealers?dealers.length:void 0;if(dealers&&dealersCount>=0&&($.each(dealers,function(index,dealer){const position=new google.maps.LatLng(dealer.lat,dealer.lng);bounds.contains(position)?$(`li[data-dealer-id='${dealer.id}']`).show():"event"===dealer.type&&null==dealer.lat&&null==dealer.lng?($(`li[data-dealer-id='${dealer.id}']`).show(),dealersCount-=1):"expert-support"===dealer.type&&null==dealer.lat&&null==dealer.lng?($(`li[data-dealer-id='${dealer.id}']`).show(),dealersCount-=1):($(`li[data-dealer-id='${dealer.id}']`).hide(),dealersCount-=1)}),dealersCount<=0&&dealers&&dealers.length>=0)){let broke=!1;for(let i=0;i<dealers.length;i++){const currentZoom=this.webMappingImagery.map.getZoom();this.webMappingImagery.setZoomLevel(currentZoom-.25);const newBound=this.webMappingImagery.map.getBounds();for(let j=0;j<dealers.length;j++){const newPosition=new google.maps.LatLng(dealers[j].lat,dealers[j].lng);if(newBound.contains(newPosition)){this.webMappingImagery.map.panTo(newPosition),broke=!0;break}}if(broke)break}}},initializeEventHandler(){return this.$buttonToggleList.on("click",event=>this.onClickButtonToggleList(event)),this.webMappingImagery.addResizeListener(()=>this.handleMapState())},renderDealerList(dealers){const mod=this;if(dealers=mod.sortingAndAddingDefaultCardWithExpertSelection(dealers),this.$dealerList.off("mouseover mouseout"),this.$dealerList.empty(),!(dealers.length>0)){const noResultsHtml=mod.dealerNoResultsTpl({});return this.$dealerList.append(noResultsHtml),this.$dealerList.addClass("no-results"),this.hasDealerResults=!1}mod.cookitFilteringElements.removeClass("hidden"),$.each(dealers,function(index,dealer){if(dealer){dealer&&null!==dealer.lat&&null!==dealer.lng&&(dealer.coords={lat:dealer.lat,lng:dealer.lng},dealer.routeUrl=mod.getRouteUrl(dealer.coords),dealer.dealerIndex=mod.stringPad(index+1,2),dealer.filterState="filter-visible");const cookitHtml=mod.cookitItemListTpl(dealer);mod.$dealerList.append(cookitHtml)}}),this.$dealerList.removeClass("no-results"),this.hasDealerResults=!0,mod.cookitEventMoreInfoButtons=$(".more-info-button"),mod.cookitEventMoreInfoButtons.on("click",ev=>this.onClickCookitEventMoreInfo(ev)),$("ul.dealer-list.js-dealer-list").find("li:last").find("i").addClass("hidden"),$("ul.dealer-list.js-dealer-list").find("li:last").find("span.location-distance").addClass("hidden"),$("ul.dealer-list.js-dealer-list").find("li:last").find("div.expert-indicator.item-indicator").addClass("hidden"),$("ul.dealer-list.js-dealer-list").find("li:last").removeClass("cookit-expert-item"),$("ul.dealer-list.js-dealer-list").find("li:last").addClass("cookit-defautl-expert-background")},renderMarkers(dealers){const mod=this;if(this.destroyMarkers(),(null!=dealers?dealers.length:void 0)>0){if(this.mapBounds=this.webMappingImagery.createMapBounds(),$.each(dealers,(index,dealer)=>{if(!dealer.lat&&!dealer.lang)return;const $dealerItem=this.$dealerList.find(`.js-dealer-item[data-dealer-id='${dealer.id}']`),$originalMarker=$dealerItem.find(`.js-location-pin[data-dealer-id='${dealer.id}']`),$listMarker=$originalMarker.clone(),trackingString=$originalMarker.attr("data-tracking-for-google-maps")||"";if(""!==trackingString&&($listMarker.attr("data-eventTracking",trackingString),$listMarker.removeAttr("data-tracking-for-google-maps")),1===$listMarker.length){$listMarker.data("testing-id")&&$listMarker.attr("testing_id",$listMarker.data("testing-id")),$listMarker.attr("tracked")&&$listMarker.removeAttr("tracked");const dealerCoods={lat:dealer.lat,lng:dealer.lng};if(!dealerCoods.lat||!dealerCoods.lng)return;const markerLocation=this.webMappingImagery.createCoordinate(dealerCoods),markerWidth=$originalMarker[0].scrollWidth,markerHeight=$originalMarker[0].scrollHeight,marker=this.webMappingImagery.createMarker(markerLocation,$listMarker[0],markerWidth,markerHeight);return marker.dealerId=dealer.id,this.addMarkerEvents(marker),$dealerItem.on("mouseover mouseout",ev=>mod.onMouseActionDealerItem(ev,dealer.id)),this.markers.push(marker),this.markersByDealerId[dealer.id]=marker,marker.filterState="filter-visible","mobile-hidden"===dealer.mobileState?marker.mobileState="mobile-hidden":marker.mobileState="mobile-visible","mobile"===this.currentViewport&&"mobile-hidden"===dealer.mobileState?marker.setVisible(!1):this.mapBounds.extend(markerLocation)}}),mod.markers.length>0)var interval=setInterval(function(){$(mod.markers[0].marker).length>0&&(mod._events.emit("dom:replacement"),clearInterval(interval))},100);return this.handleMapState()}},addMarkerEvents(marker){const $dealerItem=this.$dealerList.find(`.js-dealer-item[data-dealer-id='${marker.dealerId}']`);return marker.addMouseOverListener(()=>(marker.getContent().toggleClass("mouseover"),this.toggleDealerItemMouseOverClass($dealerItem))),marker.addMouseOutListener(()=>(marker.getContent().toggleClass("mouseover"),this.toggleDealerItemMouseOverClass($dealerItem))),marker.addClickListener(()=>this.onClickDealerMarker(marker))},onMouseActionDealerItem(ev,dealerId){$("[data-testing-id='dealerLocationPin_"+dealerId+"']").toggleClass("mouseover")},onClickDealerMarker(marker){"mobile"===this.currentViewport&&this._events.emit("hideLayer",!1);const dealerId=marker.getContent().data("dealer-id").toString();if($("[data-dealer-id='"+dealerId+"']").length>0){const dealer=$("li[data-dealer-id='"+dealerId+"']");if(dealer.length>0){const container=$(".dealer-list");if(container.length>0){if("mobile"===this.currentViewport){const offsetTop=dealer.offset().top-50;return T.Utils.scrollToTop(offsetTop)}container.animate({scrollTop:dealer.offset().top-container.offset().top+container.scrollTop()},1e3)}}}}
7,setViewportDependingMapSettings(viewport){return"mobile"===viewport?(this.$mapContainer.addClass("trigger-layer"),this.toggleAllMapControls(!1)):(this.$mapContainer.removeClass("trigger-layer"),this.toggleAllMapControls(!0))},showMapLayer($evTarget){return this.mapNode=this.webMappingImagery.getLayerElement(),this._events.emit("appendMapToLayer",{$evTarget:$evTarget,mapNode:this.mapNode})},stringPad(str,max){const mod=this;return(str=str.toString()).length<max?mod.stringPad(`0${str}`,max):str},toggleAllMapControls(enableControls){return null!=this.webMappingImagery?this.webMappingImagery.setEnableControls(enableControls):void 0},toggleDealerItemMouseOverClass:$dealerItem=>$dealerItem.toggleClass("mouseover"),toggleMapListView(){const icon=this.$buttonToggleList.find(".icon");return this.$dealerWrap.toggleClass("visible"),this.$mapWrap.toggleClass("full-width"),"mobile"!==this.currentViewport&&(icon.toggleClass("icon-arrow-left"),icon.toggleClass("icon-arrow-right")),null!=this.webMappingImagery&&this.webMappingImagery.triggerMapResize(),this.handleMapState()},onClickButtonToggleList(ev){return ev.preventDefault(),this.toggleMapListView()},onClickMapContainer(ev){ev.preventDefault();const $evTarget=$(ev.target);return this.showMapLayer($evTarget)},onCloseLayer(){return this.$mapContainer.append(this.mapNode),this.toggleAllMapControls(!1),null!=this.webMappingImagery&&this.webMappingImagery.triggerMapResize(),this.handleMapState()},onNewDealerDataAvailable(data){if(this.parentModuleId===data.parentModuleId){this.jsonConfig.initiallyCollapsed&&(this.initializeMap(),this.initializeEventHandler(),this.$ctx.removeClass("pre-initialized"),this.$ctx.parent().removeClass("pre-initialized")),this.currentLocation&&data&&data.currentLocation.lat!==this.currentLocation.lat&&(this.activeDealerId="",this.mustDealersShowRatingsOnDetailView=[],this.dealersOnCall=[],this.indexOfDealersAlreadyLoaded=[]),this.cookit=data.cookit,this.currentLocation=data.currentLocation,this.hasProductContext=data.hasProductContext,this.$buttonToggleList.removeClass("hidden"),this.$buttonShowLayer.removeClass("hidden"),this.$mapWrap.hasClass("full-width")&&this.toggleMapListView();const selectedFilter=document.querySelectorAll(".cookit-filter.selected");let elements=Array.from(selectedFilter),currentSelector=[];if(elements&&elements.length>0){for(let i=0;i<elements.length;i++)currentSelector.push(elements[i].getAttribute("data-selector"));if(currentSelector.length>0&&!currentSelector.includes("all"))return this.cookitElements=data.cookit.filter(element=>currentSelector.includes(element.type)||"expert-support"===element.type),this.filterSearchLegendList(),this.filterCookitList(),this.renderDealerList(this.cookitElements),this.renderMarkers(this.cookitElements),this.setMapZoom(data),void(this.cookitElements=data.cookit)}this.renderDealerList(data.cookit),this.renderMarkers(data.cookit),this.setMapZoom(data),this.cookitElements=data.cookit}},onOpenLayer(){return this.toggleAllMapControls(!0),null!=this.webMappingImagery&&this.webMappingImagery.triggerMapResize(),this.handleMapState()},onViewportChange(viewport){return this.currentViewport=viewport,"mobile"===viewport?this.enableSmallScreenBehaviour():this.disableSmallScreenBehaviour(),this.handleMapState()},getRouteUrl(coordinates){return this.webMappingImagery.getRouteUrl(this.currentLocation,coordinates)},onClickCookitEventMoreInfo(ev){const currentMoreInfoButton=$(ev.currentTarget),currentMoreInfoDetails=currentMoreInfoButton.closest(".more-info").find(".more-info-details");currentMoreInfoDetails.hasClass("hidden")?(currentMoreInfoDetails.removeClass("hidden"),currentMoreInfoButton.find("icon").removeClass("icon-arrow-down").addClass("icon-arrow-up")):(currentMoreInfoDetails.addClass("hidden"),currentMoreInfoButton.find("icon").removeClass("icon-arrow-up").addClass("icon-arrow-down"))},onClickCookitFilter(ev){const currentCookitFilter=$(ev.currentTarget),currentSelector=currentCookitFilter.data("selector"),cookitFilterElements={all:$(".cookit-filter"),allFilter:$(".cookit-all-filter"),dealerFilter:$(".cookit-dealers-filter"),expertFilter:$(".cookit-experts-filter"),eventFilter:$(".cookit-events-filter")};if(this.selectedCookitFilter.includes(currentSelector)&&!currentCookitFilter.hasClass("cookit-all-filter"))return this.selectedCookitFilter.length<2?(cookitFilterElements.all.removeClass("selected"),cookitFilterElements.allFilter.addClass("selected"),this.selectedCookitFilter=[]):(currentCookitFilter.removeClass("selected"),this.selectedCookitFilter=this.selectedCookitFilter.filter(filter=>filter!==currentSelector)),this.filterSearchLegendList(),void this.filterCookitList();if(currentCookitFilter.hasClass("cookit-all-filter"))return cookitFilterElements.all.removeClass("selected"),cookitFilterElements.allFilter.addClass("selected"),this.selectedCookitFilter=[],this.filterSearchLegendList(),void this.filterCookitList();currentSelector?this.selectedCookitFilter.push(currentSelector):this.selectedCookitFilter=[],currentCookitFilter.hasClass("selected")?currentCookitFilter.removeClass("selected"):currentCookitFilter.addClass("selected");let maxFilter=cookitFilterElements.all.length;this.selectedCookitFilter.length>0&&this.selectedCookitFilter.length<maxFilter-1&&cookitFilterElements.allFilter.removeClass("selected"),this.selectedCookitFilter.length>=maxFilter-1&&(cookitFilterElements.all.removeClass("selected"),cookitFilterElements.allFilter.addClass("selected"),this.selectedCookitFilter=[]),this.filterSearchLegendList(),this.filterCookitList()},onCookitLocatorSearch(data){const selectedFilter=document.querySelectorAll(".cookit-filter.selected");let elements=Array.from(selectedFilter),currentSelectors=[];if(elements&&elements.length>0){for(let i=0;i<elements.length;i++){let currentSelector=elements[i].getAttribute("data-selector");currentSelectors.push(currentSelector)}currentSelectors.includes("all")?this.selectedCookitFilter=[]:(this.selectedCookitFilter=currentSelectors,this.filterSearchLegendList(),this.filterCookitList())}else this.selectedCookitFilter=[]},filterCookitList(){this.selectedCookitFilter.length?this.cookitFilteredElements=this.cookitElements.filter(element=>this.selectedCookitFilter.includes(element.type)||"expert-support"===element.type):this.cookitFilteredElements=this.cookitElements,this.renderDealerList(this.cookitFilteredElements),this.renderMarkers(this.cookitFilteredElements),this.showVisibleDealers(this.cookitFilteredElements)},filterSearchLegendList(){const searchLegendList=$(".search-legend-item"),dealerListWrap=$(".js-dealer-list-wrap");this.selectedCookitFilter.length?(searchLegendList.each((index,searchLegend)=>{this.selectedCookitFilter.includes($(searchLegend).data("selector"))?$(searchLegend).removeClass("hidden"):$(searchLegend).addClass("hidden")}),1===this.selectedCookitFilter.length&&(dealerListWrap.removeClass("two-legend-active all-legend-active"),dealerListWrap.addClass("one-legend-active")),2===this.selectedCookitFilter.length&&(dealerListWrap.removeClass("one-legend-active all-legend-active"),dealerListWrap.addClass("two-legend-active"))):(searchLegendList.removeClass("hidden"),dealerListWrap.removeClass("one-legend-active two-legend-active"),dealerListWrap.addClass("all-legend-active"))},setMapZoom(data){this.webMappingImagery.setMapCenter(data.currentLocation),this.webMappingImagery.setZoomLevel(9)},sortDealersListWithDistance:()=>(function(nextDealer,prevDealer){return null===nextDealer.distance?1:null===prevDealer.distance?-1:parseInt(nextDealer.distance)===parseInt(prevDealer.distance)?0:parseInt(nextDealer.distance)<parseInt(prevDealer.distance)?-1:1}),sortingAndAddingDefaultCardWithExpertSelection(dealers){return dealers=dealers.sort(this.sortDealersListWithDistance()),this.selectedCookitFilter.includes("expert")||0===this.selectedCookitFilter.length?this.addingDefaultCardAfterGeoLocated(dealers):dealers},removeExpertSupportOnFilter(dealers){this.removedExpertDealers=[];for(let i=0;i<dealers.length;i++)"expert-support"!=dealers[i].type&&this.removedExpertDealers.push(dealers[i]);return this.removedExpertDealers},sortingAndAddingDefaultCardWithExpertSelection(dealers){return dealers=dealers.sort(this.sortDealersListWithDistance()),this.selectedCookitFilter.includes("expert")||0===this.selectedCookitFilter.length?this.addingDefaultCardAfterGeoLocated(dealers):dealers=this.removeExpertSupportOnFilter(dealers)},addingDefaultCardAfterGeoLocated(dealers){let defaultCard=dealers.filter(element=>"expert-support"===element.type);const indexOfDealerWithNullValue=dealers.indexOf(dealers.find(dealer=>null===dealer.distance));return dealers=this.removeExpertSupportOnFilter(dealers),-1===indexOfDealerWithNullValue?dealers.push(defaultCard[0]):dealers=[...dealers.slice(0,indexOfDealerWithNullValue),defaultCard[0],...dealers.slice(indexOfDealerWithNullValue)],dealers}})}(jQuery,window.doT),function($){const glob_config=window.localization.configurations;T.Module.CustomFilterDateSelection=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.sel={customFilterDropdown:".js-cu
7stom-filter-dropdown",customFilterDropdownButton:".js-custom-filter-dropdown-button",customDropdownSliderContainer:".js-slider",confirmButton:".js-confirm-date",clearButton:".js-clear-date",datepickers:".js-filter-datepicker",hiddenInputFrom:".js-date-from",hiddenInputTo:".js-date-to",selectDateList:".js-select",clearCustomDropdownInput:".js-clear-input",customInputText:".js-input-text",modDataPicker:'[data-t-decorator="DatePicker"]'},this.elm={$customDropdown:$(this.sel.customFilterDropdown,this.$ctx),$customDropdownButton:$(this.sel.customFilterDropdownButton,this.$ctx),$customDropdownSliderContainer:$(this.sel.customDropdownSliderContainer,this.$ctx),$confirmButton:$(this.sel.confirmButton,this.$ctx),$clearButton:$(this.sel.clearButton,this.$ctx),$datepickers:$(this.sel.datepickers,this.$ctx),$hiddenInputFrom:$(this.sel.hiddenInputFrom,this.$ctx),$hiddenInputTo:$(this.sel.hiddenInputTo,this.$ctx),$selectDateList:$(this.sel.selectDateList,this.$ctx),$clearCustomDropdownInput:$(this.sel.clearCustomDropdownInput,this.$ctx),$customInputText:$(this.sel.customInputText,this.$ctx)},this.dataPickersFromEvent=[],this.localizedDateDisplayedFormat=glob_config.dateFormat.toUpperCase(),this.localizedDateCombineString=this.$ctx.data("datecombinestring"),this.dateFormat="YYYY-MM-DD",this.placeholderText=null!=this.elm.$customDropdown.attr("data-placeholder")?this.elm.$customDropdown.attr("data-placeholder"):"",T.Utils.allSynced=!1,this.$ctx.on("click",this.sel.customFilterDropdown,ev=>this.onToggleDropdown(ev)),this.$ctx.on("change",this.sel.customInputText,ev=>this.onToggleClearInputIcon(ev)),this.$ctx.on("click",this.sel.confirmButton,ev=>this.onConfirmDate(ev)),this.$ctx.on("click",this.sel.clearButton,ev=>this.onClearDate(ev)),this.$ctx.on("click",this.sel.clearCustomDropdownInput,ev=>this.onClearDate(ev)),this.$ctx.on("click",this.sel.selectDateList,ev=>this.onConfirmDate(ev)),this.$ctx.on("click",this.sel.customDropdownSliderContainer,ev=>this.onClickInsideTheCustomDropdown(ev)),$("html").on("click",ev=>this.onClickOutside(ev)),this.$ctx.on("inputdatepicker:initdatepicker",($ev,data)=>this.onInitDatepicker(data)),this.$ctx.on("change",'input[data-t-decorator="DatePicker"]',ev=>this.onSelectNewValueOnDatePicker(ev)),this._events.on("t.sync",()=>this.sync()),this.elm.$customInputText.text(this.placeholderText),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0)},setCustomDate(confirmItIsExpiryDate,date){return confirmItIsExpiryDate?null!=this.dataPickersFromEvent[2]&&(this.dataPickersFromEvent[2].setDate(new Date(date),!0),this.dataPickersFromEvent[2].date=new Date(date),this.dataPickersFromEvent[2].value=date,this.dataPickersFromEvent[2].element.value=date):this.dataPickersFromEvent[1]&&(this.dataPickersFromEvent[1].setDate(new Date(date),!0),this.dataPickersFromEvent[1].date=new Date(date),this.dataPickersFromEvent[1].value=date,this.dataPickersFromEvent[1].element.value=date),this.elm.$clearCustomDropdownInput.removeClass("hidden")},preselectDataFromHiddenInputFields(){let $presetedFromDate,$presetedToDate;return this.elm.$clearCustomDropdownInput.removeClass("hidden"),this.isTheDateFormatValid(this.elm.$hiddenInputFrom.val())&&this.isTheDateFormatValid(this.elm.$hiddenInputTo.val())?($presetedFromDate=this.elm.$hiddenInputFrom.val(),$presetedToDate=this.elm.$hiddenInputTo.val(),this.dataPickersFromEvent[1].setDate(new Date($presetedFromDate),!0),this.dataPickersFromEvent[2].setDate(new Date($presetedToDate),!0),this.elm.$customInputText.text(moment($presetedFromDate).format(this.localizedDateDisplayedFormat)+" "+this.localizedDateCombineString.to+" "+moment($presetedToDate).format(this.localizedDateDisplayedFormat))):this.isTheDateFormatValid(this.elm.$hiddenInputFrom.val())&&!this.isTheDateFormatValid(this.elm.$hiddenInputTo.val())?($presetedFromDate=this.elm.$hiddenInputFrom.val(),this.dataPickersFromEvent[1].setDate(new Date($presetedFromDate),!0),this.dataPickersFromEvent[2].setDate(null),this.dataPickersFromEvent[2].pikaday.setMinDate(new Date(this.elm.$hiddenInputFrom.val())),this.elm.$customInputText.text(this.localizedDateCombineString.after+" "+moment($presetedFromDate).format(this.localizedDateDisplayedF
7ormat))):!this.isTheDateFormatValid(this.elm.$hiddenInputFrom.val())&&this.isTheDateFormatValid(this.elm.$hiddenInputTo.val())?($presetedToDate=this.elm.$hiddenInputTo.val(),this.dataPickersFromEvent[1].setDate(null),this.dataPickersFromEvent[2].setDate(new Date($presetedToDate),!0),this.dataPickersFromEvent[1].pikaday.setMaxDate(new Date(this.elm.$hiddenInputTo.val())),this.elm.$customInputText.text(this.localizedDateCombineString.before+" "+moment($presetedToDate).format(this.localizedDateDisplayedFormat))):(this.dataPickersFromEvent[1].setDate(null),this.dataPickersFromEvent[2].setDate(null),this.elm.$clearCustomDropdownInput.addClass("hidden"))},isTheDateFormatValid(date){try{return!!date.match(/^[0-9]{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])/)}catch(error){return!1}},setValuesFromDatepicker(){const $dateFromValue=this.dataPickersFromEvent[1].value,$dateToValue=this.dataPickersFromEvent[2].value;if(null!=$dateFromValue&&this.isTheDateFormatValid($dateFromValue)&&null!=$dateToValue&&this.isTheDateFormatValid($dateToValue)&&(this.elm.$hiddenInputFrom.val($dateFromValue),this.elm.$hiddenInputTo.val($dateToValue),this.elm.$customInputText.text(moment($dateFromValue).format(this.localizedDateDisplayedFormat)+" "+this.localizedDateCombineString.to+" "+moment($dateToValue).format(this.localizedDateDisplayedFormat)),this.elm.$clearCustomDropdownInput.removeClass("hidden")),null==$dateFromValue||!this.isTheDateFormatValid($dateFromValue)||null!==$dateToValue&&this.isTheDateFormatValid($dateToValue)||(this.elm.$hiddenInputFrom.val($dateFromValue),this.elm.$hiddenInputTo.val(null),this.elm.$customInputText.text(this.localizedDateCombineString.after+" "+moment($dateFromValue).format(this.localizedDateDisplayedFormat)),this.elm.$clearCustomDropdownInput.removeClass("hidden")),(null===$dateFromValue||!this.isTheDateFormatValid($dateFromValue))&&null!=$dateToValue&&this.isTheDateFormatValid($dateToValue))return this.elm.$hiddenInputFrom.val(null),this.elm.$hiddenInputTo.val($dateToValue),this.elm.$customInputText.text(this.localizedDateCombineString.before+" "+moment($dateToValue).format(this.localizedDateDisplayedFormat)),this.elm.$clearCustomDropdownInput.removeClass("hidden")},clearDates(){return(()=>{const result=[];for(let picker of Array.from(this.dataPickersFromEvent))null!=picker&&(picker.pikaday.setDate(null),picker.pikaday.gotoToday()),this.elm.$customInputText.text(this.placeholderText),this.elm.$hiddenInputFrom.val(null),this.elm.$hiddenInputTo.val(null),this.elm.$customDropdownSliderContainer.removeClass("is-slide-active"),result.push(this.elm.$clearCustomDropdownInput.addClass("hidden"));return result})()},onSelectNewValueOnDatePicker(ev){return 1===$(ev.currentTarget).closest(this.sel.modDataPicker).data("picker-nr")?null!=this.dataPickersFromEvent[1].value?this.dataPickersFromEvent[2].pikaday.setMinDate(new Date(this.dataPickersFromEvent[1].value)):this.dataPickersFromEvent[2].pikaday.setMinDate(null):2===$(ev.currentTarget).closest(this.sel.modDataPicker).data("picker-nr")?null!=this.dataPickersFromEvent[2].value?this.dataPickersFromEvent[1].pikaday.setMaxDate(new Date(this.dataPickersFromEvent[2].value)):this.dataPickersFromEvent[1].pikaday.setMaxDate(null):void 0},onInitDatepicker(data){return this.dataPickersFromEvent[data.nr]=data.obj},onClickOutside(ev){return!($(ev.target).closest(".pika-single").length>0)&&(!($(ev.target).closest(".js-extend-breadcrumb").length>0)&&(this.elm.$customDropdownSliderContainer.hasClass("is-slide-active")?this.elm.$customDropdownSliderContainer.removeClass("is-slide-active"):void 0))},onClickInsideTheCustomDropdown:ev=>ev.stopPropagation(),onToggleDropdown(ev){return ev.stopPropagation(),$(this.sel.customDropdownSliderContainer).not(this.elm.$customDropdownSliderContainer).removeClass("is-slide-active"),this.elm.$customDropdownSliderContainer.hasClass("is-slide-active")?this.elm.$customDropdownSliderContainer.removeClass("is-slide-active"):(this.elm.$customDropdownSliderContainer.addClass("is-slide-active"),this.preselectDataFromHiddenInputFields())},onToggleClearInputIcon(){return console.log(this.elm.$customInputText.text(),"clear"),""!==this.elm.$customInputText.text()&&this.elm.$customInputText.text()!==this.placeholderText?this.elm.$clearCustomDropdownInput.removeClass("hidden"):this.elm.$clearCustomDropdownInput.addClass("hidden")},onConfirmDate(ev){if(ev.preventDefault(),Array.from(this.elm.$selectDateList).includes(ev.currentTarget)){let $res,$resForCustomDropdown;
7this.clearDates(),this.pikaDay=$(ev.currentTarget).closest(".js-customfilterdateselection-inner").find(".m-forminput-datepicker");const $currentTargetValue=$(ev.currentTarget).data("calculation-mode");let confirmItIsExpiryDate=!1;$(ev.currentTarget).hasClass("js-expiryDate")?(confirmItIsExpiryDate=!0,$res=moment().add($currentTargetValue,"d").format(this.dateFormat),$resForCustomDropdown=moment().add($currentTargetValue,"d").format(this.localizedDateDisplayedFormat),this.elm.$customInputText.text(this.localizedDateCombineString.before+" "+$resForCustomDropdown),this.elm.$hiddenInputFrom.val(null),this.elm.$hiddenInputTo.val($res)):($res=moment().add($currentTargetValue,"d").format(this.dateFormat),$resForCustomDropdown=moment().add($currentTargetValue,"d").format(this.localizedDateDisplayedFormat),this.elm.$customInputText.text(this.localizedDateCombineString.after+" "+$resForCustomDropdown),this.elm.$hiddenInputTo.val(null),this.elm.$hiddenInputFrom.val($res)),this.setCustomDate(confirmItIsExpiryDate,$res)}return $(ev.currentTarget).hasClass("js-confirm-date")&&(0===$(this.elm.$datepickers.eq(0)).val().length&&0===$(this.elm.$datepickers.eq(1)).val().length?this.clearDates():this.setValuesFromDatepicker()),this.$ctx.trigger("update"),this.elm.$customDropdownSliderContainer.removeClass("is-slide-active")},onClearDate(ev){return ev.preventDefault(),ev.stopPropagation(),this.clearDates(),this.$ctx.trigger("update")}})}(jQuery),jQuery,T.Module.DealerLocatorProductTeaser=T.createModule({start:resolve=>resolve(),sync(){}}),jQuery,T.Module.DealerTeaser=T.createModule({start(resolve){return this._events.emit("dealerTeaserStart"),resolve()},sync(){}}),function($){T.Module.DelayedAddToCartButton=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.url=this.$ctx.data("ajax").url,this.ctaDataStyle=this.$ctx.data("add-to-cart-button-style"),this.ctaText=this.$ctx.data("button-text"),this.id=this.$ctx.data("t-id"),this.bodyModule=T.Utils.application.getModuleById($("body").data("t-id")),this.bodyModule.delayPageLoadTracking(this.id),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.load())},load(){T.Utils.startAjaxRequest(null,{url:this.url,dataType:"html",dataRendering:!0,method:"GET"})[0].done(response=>{this.$ctx.html(response);const $ajaxForm=this.$ctx.find("form.js-ajax-request");T.Utils.initializeModules($ajaxForm),this.addCtaButtonClass(),this.setCtaButtonText(),this.addProductTrackingDataToPageDimensions(),this.bodyModule.continuePageLoadTracking(this.id)})},addCtaButtonClass(){this.$ctaElement=this.$ctx.find(".js-add-to-basket"),"LINK"===this.ctaDataStyle?(this.$ctaElementIcon=this.$ctaElement.find(".icon"),this.$ctaElement.removeClass("a-button a-button-primary"),this.$ctaElement.addClass("a-link a-link-primary a-button-link"),this.$ctaElementIcon.hide()):"BUTTON"===this.ctaDataStyle&&(this.$ctaElement.removeClass("a-link a-link-primary a-button-link"),this.$ctaElement.addClass("a-button a-button-primary"))},setCtaButtonText(){this.ctaTextElement=this.$ctx.find(".js-add-to-basket .text"),this.ctaTextElement.text(this.ctaText)},addProductTrackingDataToPageDimensions(){const pageDimensions=T.Utils.getPageDimensions(),productsForTracking=this.getDataValuesProductsForTracking();if(pageDimensions&&productsForTracking){const dataValues=pageDimensions.products?{products:[...pageDimensions.products,...productsForTracking]}:{products:[...productsForTracking]},productIds=[];dataValues.products=dataValues.products.filter(singleProduct=>!productIds.includes(singleProduct.product_id)&&(productIds.push(singleProduct.product_id),!0)),this._events.emit("tracking:page-dimensions",dataValues)}},getDataValuesProductsForTracking(){const jsAddToBasket=this.$ctx.find(".js-add-to-basket");if(0!==jsAddToBasket.length)return jsAddToBasket.data("eventtracking").dataValues.products}})}(jQuery),function($){T.Module.Dob2BillingAddress=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$sameAddress=this.$ctx.find(".js-same-address"),this.$differentAddress=this.$ctx.find(".js-different-address"),this.$addressFields=this.$ctx.find(".js-address-fields"),this.$addressFieldInputs=this.$ctx.find(".js-address-fields :input"),this.$addressFieldInputs.attr("disabled",!0),this.$address=this.$ctx.find(".dobaddress-fields"),this.$sameAddress.on("click",()=>this.hideAddressFields()),this.$differentAddress.on("click",()=>this.showAddressFields()),resolve()},hideAddressFields(){this.$selectedRadio=this.$address.find(".selected"),this.$selectedRadio.removeClass("selected"),this.$addressFields.addClass("hidden"),this.$addressFieldInputs.attr("disabled",!0),this.$addressFieldInputs.val(""),this.resetErrors()},showAddressFields(){this.$ctx.find(".js-private-address-fields").addClass("selected"),this.$ctx.find(".js-company-booking-button").removeAttr("checked"),this.$ctx.find(".js-company-address-fields").addClass("hidden"),this.$ctx.find(".js-private-booking-button").prop("checked",!0),this.$ctx.find(".js-private-address-fields").removeClass("hidden"),this.$addressFieldInputs.val(""),this.$ctx.find(".js-billing-address-input").val("private"),this.$ctx.find(".js-private-booking-button").prop("value","private"),this.$ctx.find(".js-company-booking-button").prop("value","business"),this.$addressFields.removeClass("hidden"),this.$ctx.find(".js-private-address-fields :input").removeAttr("disabled"),this.$ctx.find(".js-billing-address-type :input").removeAttr("disabled")},resetErrors(){this.$dropdown=this.$ctx.find(".m-forminput-dropdown"),this.$dropdown.removeClass("is-not-selected"),this.$dropdown.removeClass("had-focus"),this.$dropdown.removeClass("has-error"),this.$addressFieldInputs.removeClass("is-empty"),this.$addressFieldInputs.removeClass("had-focus"),this.$addressFieldInputs.removeClass("has-error")}})}(jQuery),function($){T.Module.Dob2BillingAddressFields=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$privateAddress=this.$ctx.find(".js-private-booking-button"),this.$companyAddress=this.$ctx.find(".js-company-booking-button"),this.$privateaddressFields=this.$ctx.find(".js-private-address-fields"),this.$companyaddressFields=this.$ctx.find(".js-company-address-fields"),this.$companyAddressInputs=this.$ctx.find(".js-company-address-fields :input"),this.$privateAddressInputs=this.$ctx.find(".js-private-address-fields :input"),this.$companyAddressInputs.attr("disabled",!0),this.$ctx.find(".js-billing-address-type :input").removeAttr("disabled"),this.$privateaddressFields.removeClass("hidden"),this.$companyaddressFields.addClass("hidden"),this.$companyAddressInputs.attr("disabled",!0),this.$privateAddress.on("click",()=>this.showPrivateAddressFields()),this.$companyAddress.on("click",()=>this.showCompanyAddressFields()),resolve()},showPrivateAddressFields(){this.$ctx.find("#dobBillToAddressData-addressData-title").val("").trigger("change"),this.$privateaddressFields.addClass("selected"),this.disableFields("company"),this.$privateaddressFields.removeClass("hidden"),this.$privateAddressInputs.removeAttr("disabled")},showCompanyAddressFields(){this.$companyaddressFields.addClass("selected"),this.disableFields("private"),this.$companyaddressFields.removeClass("hidden"),this.$companyAddressInputs.removeAttr("disabled")},disableFields(field){"company"===field?(this.$companyaddressFields.removeClass("selected"),this.$companyaddressFields.addClass("hidden"),this.$companyAddressInputs.attr("disabled",!0),this.$companyAddressInputs.val(""),this.$companyAddressInputs.removeClass("is-empty"),this.$companyAddressInputs.removeClass("had-focus"),this.$companyAddressInputs.removeClass("has-error")):(this.$privateaddressFields.addClass("hidden"),this.$privateaddressFields.removeClass("selected"),this.$privateAddressInputs.attr("disabled",!0),this.$privateAddressInputs.val(""),this.$privateAddressInputs.removeClass("is-empty"),this.$privateAddressInputs.removeClass("had-focus"),this.$privateAddressInputs.removeClass("has-error")),this.$dropdown=this.$ctx.find(".m-forminput-dropdown"),this.$dropdown.removeClass("is-not-selected"),this.$dropdown.removeClass("had-focus"),this.$dropdown.removeClass("has-error")}})}(jQuery),function($){T.Module.Dob2RepairAddressFields=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.data=this.$ctx.data(),this.jsCitySelector=".js-city-selector",this.jsStreetSelector=".js-street
7-selector",this.jsPostalCodeSelector=".js-postalcode-selector",this.jsStreetNumberSelector=".js-streetnumber-selector",this.jsCompanyCitySelector=".js-companycity-selector",this.jsCompanyStreetSelector=".js-companystreet-selector",this.jsCompanyPostalCodeSelector=".js-companypostalcode-selector",this.jsCompanyStreetNumberSelector=".js-companystreetnumber-selector",this.jsToggleBox=".js-togglebox-final-address",this.jsRadioSelection=".js-dobaddress-final-address",this.jsRadioCorrectSelection=".js-dobaddress-final-address-correct",this.jsToggleBoxCheckedRadios=`${this.jsToggleBox} input[type='radio']:checked`,this.smsCheckboxId=this.$ctx.data("sms-checkbox-id"),this.cellPhoneId=this.$ctx.data("cell-phone-id"),this.smsActivationState=this.$ctx.data("sms-checkbox-activation-state")||!1,null!=this.smsCheckboxId&&this.cellPhoneId&&(this.$smsCheckbox=$(`#${this.smsCheckboxId}`),this.$cellPhone=$(`#${this.cellPhoneId}`)),this.$cityInput=this.$ctx.find(this.jsCitySelector),this.$streetInput=this.$ctx.find(this.jsStreetSelector),this.$postalCodeInput=this.$ctx.find(this.jsPostalCodeSelector),this.$streetnumberInput=this.$ctx.find(this.jsStreetNumberSelector),this.$companyCityInput=this.$ctx.find(this.jsCompanyCitySelector),this.$companystreetInput=this.$ctx.find(this.jsCompanyStreetSelector),this.$companypostalCodeInput=this.$ctx.find(this.jsCompanyPostalCodeSelector),this.$companystreetnumberInput=this.$ctx.find(this.jsCompanyStreetNumberSelector),this.$fieldSetToggleBox=this.$ctx.find(this.jsToggleBox),this.submitCheck=!1,this.$form=$(document).find('form[data-ajax-id="ADDRESS"]'),this.dobSuggestionResolveConfig=this.$ctx.data("suggestion-resolve-ajax"),null!=this.dobSuggestionResolveConfig&&(this.dobSuggestionResolve=T.Utils.createController(this.$ctx,"LoadDataController",this.dobSuggestionResolveConfig.type||"LoadAjax,RenderJson"),this.dobSuggestionResolve.init(this.dobSuggestionResolveConfig)),this.$ctx.on("change",this.jsRadioSelection,ev=>this.onFinalAddressSelected(ev)),this._events.on("handleDobStepRequestResponse",data=>this.handleRequestResponse(data)),this._events.on("handleDobStepRequestResponseSuccess",data=>this.handleRequestResponseSuccess(data)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.form=this._sandbox.getModuleById(this.$form.data("t-id")),T.Utils.allSynced=!0)},handleRequestResponseSuccess(data){if(data){if("Dob2Problem"===data.$step.data("t-name"))data.response}},disableAddressFields(disabled){return this.$postalCodeInput.attr("disabled",disabled),this.$cityInput.attr("disabled",disabled),this.$streetnumberInput.attr("disabled",disabled),this.$streetInput.attr("disabled",disabled)},ensureValueInSuggestion(suggestion,cb){return null!=suggestion.value?cb(null,suggestion):null==this.dobSuggestionResolve?(console.error(`dob address missing 'suggestion-resolve-ajax' config. value missing suggestion ${JSON.stringify(suggestion)}`),cb("config is missing")):this.dobSuggestionResolve.execute({params:{id:suggestion.id},success:data=>(null!=data.value?suggestion.value=data.value:suggestion.value={zip:"",street:"",city:"",streetnumber:""},cb(null,suggestion)),error:err=>(console.error(`error while requesting suggestion: ${err}`),cb("suggestion call returned error"))})},handleAjaxResult(result){const mod=this;if(!(this.$form.find(".has-error").length>0))return result.correctAddress&&1===result.suggestions.length||this.submitCheck?this.$form.submitForm():(mod.$ctx.find(mod.jsToggleBoxCheckedRadios).prop("checked",!1),mod._events.emit("openToggleBox","final_address"),T.Utils.scrollToTop(mod.$fieldSetToggleBox.offset().top),this.$form.find('[type="submit"]').removeAttr("disabled")),mod.disableAddressFields(!0);this.$form.find('[type="submit"]').removeAttr("disabled")},submitForm(){return this.$form.addClass("js-is-valid").trigger("submit",{dblClickCheck:!1})},onFinalAddressSelected(ev){const mod=this,selectedValue=$(ev.currentTarget).val();switch(mod.disableAddressFields(!1),selectedValue){case"correct":return this.$form.submitForm();default:let suggestion=$(ev.currentTarget).data("value");this.ensureValueInSuggestion(suggestion,(error,suggestion)=>(null===error&&(mod.$postalCodeInput.val(suggestion.value.zip),mod.$cityInput.val(suggestion.value.city),mod.$streetInput.val(suggestion.value.street),mod.$streetnumberInput.val(suggestion.value.streetnumber),mod.$companypostalCodeInput.val(suggestion.value.zip),mod.$companycityInput.val(suggestion.value.city),mod.$companystreetInput.val(suggestion.value.street),mod.$companystreetnumberInput.val(suggestion.value.streetnumber),this.submitCheck=!0),mod._events.emit("closeToggleBox","final_address"),T.Utils.scrollToTop(mod.$postalCodeInput)))}},handleRequestResponse(data){let response=data.response;data.$step[0]===this.$ctx[0]&&(response.errors?this.fieldErrors(response.errors):this.showDobErrors(response))},fieldErrors(errors){for(var field in errors){let $field=this.$ctx.find(`[
7id=${field}]`),$dateField=$field.siblings(".js-pikaday");0===$dateField.length?$field.addClass("has-error"):($dateField.addClass("has-error"),$dateField.parent().addClass("has-error")),this.$ctx.find(`[data-replace-origin=${field}]`).text(errors[field])}},showDobErrors(response){response.headLineMessage&&(this.$headlineField=this.$ctx.find("[data-replace-origin=headLineMessage]"),this.$headlineField.text(response.headLineMessage),this.$headlineField.show()),response.errorDescription&&(this.$descriptitionField=this.$ctx.find("[data-replace-origin=errorDescription]"),this.$descriptitionField.text(response.errorDescription),this.$descriptitionField.show())},hideDobErrors(){data.$step[0]===this.$ctx[0]&&(this.$headlineField&&this.$headlineField.length>0&&this.$headlineField.hide(),this.$descriptitionField&&this.$descriptitionField.length>0&&this.$descriptitionField.hide())},onSubmitForm(ev){if(null!=this.form?this.form.hasError():void 0)return this.form.scrollToError(),!1;const mod=this,{data:data}=mod;return!(!mod.$form.hasClass("js-is-valid")&&!data.noajax)||(null!=ev&&ev.preventDefault(),T.Utils.startAjaxRequest(data.ajaxId,data.ajax,{"dobAddressData.addressData.postalcode":mod.$postalCodeInput.val(),"dobAddressData.addressData.town":mod.$cityInput.val(),"dobAddressData.addressData.streetName":mod.$streetInput.val(),"dobAddressData.addressData.streetnumber":mod.$streetnumberInput.val(),"dobAddressData.addressData.companypostalcode":mod.$companypostalCodeInput.val(),"dobAddressData.addressData.companytown":mod.$companycityInput.val(),"dobAddressData.addressData.companystreetName":mod.$companystreetInput.val(),"dobAddressData.addressData.companystreetnumber":mod.$companystreetnumberInput.val()})[0].done($.proxy(mod.handleAjaxResult,mod)),!1)}})}(jQuery),function($){T.Module.DobAvailabilityServicepartnerItem=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.sync=$.proxy(this.sync,this),this._events.on("t.sync",this.sync),console.log("DobAvailabilityServicepartnerItem start"),resolve()},sync(){this.isSynced||(this.isSynced=!0,console.log("DobAvailabilityServicepartnerItem sync"))}})}(jQuery),function($){T.Module.DownloadBasketBottom=T.createModule({start(resolve){const mod=this;return mod.$ctx=$(mod._ctx),mod.$downloadBasketTrigger=mod.$ctx.find(".js-trigger-download-basket"),mod.$downloadButton=mod.$ctx.find(".js-download-button button"),mod.$linkText=mod.$downloadBasketTrigger.find(".text"),mod.$downloadBasketTrigger.on("click",$.proxy(mod.onClickDownloadBasketTrigger,mod)),mod._events.on("press:basketChanged",$.proxy(mod.onBasketChanged,mod)),mod._events.on("press:pictureNumberTextUpdated",$.proxy(mod.onPressPictureNumberTextUpdated,mod)),resolve()},sync(){},onPressPictureNumberTextUpdated(data){return this.$linkText.html(data)},onClickDownloadBasketTrigger(ev){const mod=this;if(ev.preventDefault(),!mod.$downloadBasketTrigger.data("disabled"))return mod._events.emit("press:openBasket")},onBasketChanged(data){const basketEmpty=0===(null!=data.downloadIDs?data.downloadIDs.length:void 0);return this.$downloadBasketTrigger.data("disabled",basketEmpty),this.$downloadButton.prop("disabled",basketEmpty)}})}(jQuery),function($){T.Module.DownloadBasketTop=T.createModule({start(resolve){const mod=this;return mod.$ctx=$(mod._ctx),this.$slider=this.$(".js-slider"),mod.$moreLessLink=mod.$ctx.find(".a-morelesslink"),this.$moreLess=this.$ctx.find(".js-moreless"),mod.$slideTemplate=doT.template(mod.$ctx.find(".js-slide-template").text()),mod.resetSelectionUrl=mod.$ctx.data("reset-selection-url"),mod.$resetSelectionButton=mod.$ctx.find(".js-reset-selection"),mod.$downloadButton=mod.$ctx.find(".js-download-button button"),mod.moreLessLinkText=mod.$ctx.data("morelesslink-text"),mod.urlPictureAdd=mod.$ctx.data("url-picture-add"),mod.urlPictureRemove=mod.$ctx.data("url-picture-remove"),mod.urlPictureClear=mod.$ctx.data("url-picture-clear"),mod.urlRequestBasketState=mod.$ctx.data("url-request-basket-state"),mod.sync=$.proxy(mod.sync,mod),mod.$resetSelectionButton.on("click",$.proxy(mod.onResetSelection,mod)),mod._events.on("t.sync",mod.sync),mod._events.on("press:basketChanged",$.proxy(mod.onPressBasketChanged,mod)),mod._events.on("press:openBasket",$.proxy(mod.onPressOpenBasket,mod)),mod._events.on("press:pictureAdd",$.proxy(mod.onPressPictureAdd,mod)),mod._events.on("press:pictureRemove",$.proxy(mod.onPressPictureRemove,mod)),mod._events.on("press:pictureClear",$.proxy(mod.onPressPictureClear,mod)),mod._events.on("press:requestBasketState",$.proxy(mod.onPressRequestBasketState,mod)),mod._events.on("press:pictureNumberTextUpdated",$.proxy(mod.onPressPictureNumberTextUpdated,mod)),mod._events.emit("press:requestBasketState"),resolve()},sync(){const mod=this;mod.isSynced||(mod.isSynced=!0,this.slider=mod._sandbox.getModuleById(mod.$slider.data("t-id")),this.slider.addSliderInitializedListener(()=>(null!=this.moreLessComponent&&this.moreLessComponent.calculate(0),null!=this.moreLessComponent?this.moreLessComponent.recalculateFlexHeight():void 0)),this.slider.init({useCSS:!1,arrows:!0,slidesToShow:{desktop:4,tablet:3,mobile:2}}),this.moreLessComponent=this._sandbox.getModuleById(this.$moreLess.data("t-id")))},requestAction(url,data,sourceId){const mod=this;return T.Utils.startAjaxRequest(!1,{url:url,dataType:"JSON"},data,function(err,response){if(null==err)return sourceId&&(response.sourceId=sourceId),mod._events.emit("press:basketChanged",response),"function"==typeof cb?cb():void 0})},onPressBasketChanged(data){if(null!=this.slider){const result=[];$(data.items).each((index,element)=>result.push(this.$slideTemplate(element))),null!=this.slider&&this.slider.replaceSlides(result)}const hasNoItems=0===data.items.length;hasNoItems&&null!=this.moreLessComponent&&this.moreLessComponent.close(!1),this.$resetSelectionButton.prop("disabled",hasNo
7Items),hasNoItems?this.$moreLessLink.addClass("not-active"):this.$moreLessLink.removeClass("not-active"),this.$downloadButton.prop("disabled",hasNoItems);let text=data.items.length.toString();return-1!==this.moreLessLinkText.indexOf("{0}")?text=this.moreLessLinkText.replace(/\{0}/g,text):text+=this.moreLessLinkText,null!=this.moreLessComponent&&this.moreLessComponent.setLessText(text),null!=this.moreLessComponent&&this.moreLessComponent.setMoreText(text),null!=this.moreLessComponent&&this.moreLessComponent.calculate(),this._events.emit("press:pictureNumberTextUpdated",text)},onPressPictureNumberTextUpdated(data){return this.$moreLessLink.find("span.text").html(data)},onPressOpenBasket(data){return null!=this.moreLessComponent&&this.moreLessComponent.open(),T.Utils.scrollToTop(this.$ctx)},onResetSelection(evt){evt.preventDefault();return this.onPressPictureClear({sourceId:this.$ctx.data("t-id")})},onPressPictureAdd(data){if(!data.processed)return data.processed=!0,this.requestAction(this.urlPictureAdd,{"add[]":data.imageId},data.sourceId)},onPressPictureRemove(data){if(!data.processed)return data.processed=!0,this.requestAction(this.urlPictureRemove,{"remove[]":data.imageId},data.sourceId)},onPressPictureClear(data){if(null==data||!data.processed)return null!=data&&(data.processed=!0),this.requestAction(this.urlPictureClear,{},null!=data?data.sourceId:void 0)},onPressRequestBasketState(data){if(null==data||!data.processed)return null!=data&&(data.processed=!0),this.requestAction(this.urlRequestBasketState,{},null!=data?data.sourceId:void 0)}})}(jQuery),function($){T.Module.DownPayment=T.createModule({start(resolve){return this.loaderActive=!1,this.$ctx=$(this._ctx),this.$option=$(".js-downpayment-value input[type=radio]",this.$ctx),this.$update=$(".js-downpayment-update",this.$ctx),this.$invalidUpdate=$(".js-downpayment-update:invalid",".js-downpayment-update.has-error",this.$ctx),this.$updatebutton=$(".js-update-button",this.$ctx),this.sync=$.proxy(this.sync,this),this.closeCalculateLoader=$.proxy(this.closeCalculateLoader,this),this.openCalculateLoader=$.proxy(this.openCalculateLoader,this),this.onChangeDownpayment=$.proxy(this.onChangeDownpayment,this),this.onFocusCustomInput=$.proxy(this.onFocusCustomInput,this),this.onListeningComponentUpdate=$.proxy(this.onListeningComponentUpdate,this),this.onUpdateCustomValue=$.proxy(this.onUpdateCustomValue,this),this._events.on("t.sync",this.sync),this._events.on("totalamount:downpaymentupdate",this.onListeningComponentUpdate),this.$option.on("change",this.onChangeDownpayment),this.$update.on("focus",this.onFocusCustomInput),this.$update.on("focusout",this.onUpdateCustomValue),this.$updatebutton.on("click",this.onUpdateCustomValue),resolve()},sync(){this.isSynced||(this._events.emit("downpayment:updateform",T.Utils.getFormDataPairs(this.$ctx)),this.isSynced=!0)},closeCalculateLoader(){if(this.loaderActive)return setTimeout($.proxy(function(){return this._events.emit("loader:close",{$trigger:this.$updatebutton}),this.loaderActive=!1},this),200)},openCalculateLoader(){if(!this.loaderActive)return this.loaderActive=!0,this._events.emit("loader:open",{$trigger:this.$updatebutton,loaderType:this.$updatebutton.data("loaderType")})},UpdateRadioOptionWithCustomValue(custom){const $downpayment=this.$option.filter(":checked");if("function"!=typeof this.$update.get(0).checkValidity||this.$update.get(0).validity.valid){if(__guardMethod__(this.$update.get(0),"checkValidity",o=>o.checkValidity())||!isNaN(custom||custom>this.$update.attr("max")||custom<this.$update.attr("min")))return $downpayment.val()!==custom?(this.openCalculateLoader(),$downpayment.val(custom).trigger("change")):void 0;this.$update.addClass("has-error")}else this.$update.addClass("has-error")},onChangeDownpayment(ev){this._events.emit("downpayment:updateform",T.Utils.getFormDataPairs(this.$ctx));const $checkedOption=this.$option.filter(":checked");this._events.emit("downpayment:update",$checkedOption.val())},onFocusCustomInput(ev){if($(ev.currentTarget).hasClass("has-error"))return $(ev.currentTarget).val(this.$option.filter(":checked").val()).removeClass("has-error")},onListeningComponentUpdate(){return this.closeCalculateLoader()},onUpdateCustomValue(ev){return ev.preventDefault(),this.UpdateRadioOptionWithCustomValue(this.$update.val())}})}
7(jQuery),function($){T.Module.EnterVIBQRCode=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.selector={suggestLayer:".js-suggestlayer-results-row"},this.actionHandlerUrl=$(".js-action-partial",this.$ctx).val(),this.externalUrlPartial=$(".js-external-partial",this.$ctx).val(),this.$externalUrlOutput=$(".js-external",this.$ctx),this.$qrCodeContainer=$(".js-qrcode",this.$ctx),this.$suggestLayer=$(".js-searchfield-suggestlayer",this.$ctx),this.$qrcodeExternalURLContainer=$(".js-qrcode-external-link-container",this.$ctx),this.$searchInputEnumberVibqrcode=$(".js-searchfield-input",this.$ctx),this.$suggestLayer.on("mousedown.autocomplete",this.selector.suggestLayer,ev=>this.fillEnumberOnClickSuggestLayer(ev)),this.$searchInputEnumberVibqrcode.on("input",T.Utils.debounce(ev=>this.shouldHideQRCodeAndExternalURL(ev),200)),this._events.on("suggestionData",data=>this.suggestionData(data)),resolve()},sync(){if(!this.isSynced)return this.isSynced=!0},fillEnumberOnClickSuggestLayer(ev){let $input=$(ev.currentTarget).find("input"),enumber=$input.val(),vib=$input.data("vib");enumber&&this.$searchInputEnumberVibqrcode.val(enumber),vib&&this.generateQRCodeAndExternalURL(vib)},generateQRCodeAndExternalURL(vib){this.qrcode&&this.qrcode.clear();const actionHandler=this.actionHandlerUrl+encodeURIComponent(vib),externalUrl=this.externalUrlPartial+btoa(actionHandler),iconPath=this.$qrCodeContainer.data("icon");this.$externalUrlOutput.attr("href",externalUrl),iconPath&&(this.qrcode=new QRCode(this.$qrCodeContainer[0],{text:externalUrl,logo:iconPath})),this.$qrcodeExternalURLContainer.toggleClass("hidden",!1),T.Utils.getLayout().trackValues("hc pairing qr generated",{service_product_id:vib})},shouldHideQRCodeAndExternalURL(ev){0===$(ev.currentTarget).val().length&&this.$qrcodeExternalURLContainer.toggleClass("hidden",!0)},suggestionData(data){1===data.length&&data[0]&&data[0].value===this.$searchInputEnumberVibqrcode.val().toUpperCase()&&(this._events.emit("closeSuggestionLayer"),this.generateQRCodeAndExternalURL(data[0].vib))}})}(jQuery),function($){T.Module.ExpandableStageElement=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$expandToggle=this.$ctx.find(".js-expand-toggle"),this.$expandableArea=this.$ctx.find(".js-expandable-area"),this.$expandToggle.on("click",()=>this.toggleExpandStage()),this.$expandToggle.on("keydown",e=>{13===e.which&&this.toggleExpandStage()}),this.checkExpandableAreaOverflow(),this._events.on("windowWidthChanged",T.Utils.debounce(()=>{this.setDefaultToggleState(),this.checkExpandableAreaOverflow()},50)),resolve()},setDefaultToggleState(){this.$expandableArea.removeClass("expanded"),this.$expandToggle.removeClass("icon-arrow-up").addClass("icon-arrow-down"),this.$expandToggle.addClass("fade-out")},toggleExpandStage(){this.$expandableArea.toggleClass("expanded"),this.$expandToggle.toggleClass("icon-arrow-down").toggleClass("icon-arrow-up"),this.$expandToggle.toggleClass("fade-out")},checkExpandableAreaOverflow(){this.$ctx.find(".js-expandable-area-contents-wrap").height()/parseInt(getComputedStyle(this.$ctx.find(".js-expandable-area-contents-wrap")[0]).lineHeight)<=3?this.$expandToggle.hide()&&this.$expandableArea.css("max-height","none"):this.$expandToggle.show()}})}(jQuery),function($){T.Module.FeaturePromotion=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.namespace=this.$ctx.data("namespace"),this.$featurePromotion=this.$ctx,this.availableFilters=this.$ctx.data("availableFilters"),this.highlightsEnabledGroupedAttributes=this.$ctx.data("highlightFilters"),this.selectedFilters=this.$ctx.data("selectedFilter"),this.category=this.$ctx.data("category"),this.tooltipData=this.$ctx.data("tooltipResponse"),this.$description=this.$ctx.find(".js-promotion-description"),this.$heading=this.$ctx.find(".js-subline-text"),this.$imageWrapper=this.$ctx.find(".promotion-image"),this.$image=this.$ctx.find(".promotion-image img"),this.$filterCheckbox=this.$ctx.find(".js-promotion-filter"),this.filterValue=null,this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),this.$filterCheckbox.on("click",()=>this.applyPromotionFilter()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.sessionItem=JSON.parse(sessionStorage.getItem("product-feature-promotion")),this.sessionItem?this.checkSessionStorageForPromotion():this.selectRandomFilter())},checkSessionStorageForPromotion(){this.sessionItem.find(object=>object.category==this.category)||this.selectRandomFilter()},selectRandomFilter(){const allFilters=this.availableFilters,hFilters=this.highlightsEnabledGroupedAttributes;let highlightsFilterObj=new Array,filterWithTooltipObj=new Array;
7if(allFilters&&hFilters){for(i=0;i<hFilters.length;i++){const highlightsFilter=allFilters.filter(element=>element.attribute==hFilters[i]);if(highlightsFilter&&highlightsFilter.length){objHighlights=highlightsFilter[0].entries;const selectedHighlightFilter=this.selectedFilters.filter(element=>element.attribute==hFilters[i]);if(selectedHighlightFilter.length>0){const selectHighlightsEntries=selectedHighlightFilter[0].entries;objHighlights=objHighlights.filter(i=>!selectHighlightsEntries.find(e=>e.value===i.value))}highlightsFilterObj.push(objHighlights)}}for(i=0;i<highlightsFilterObj.length;i++){filterWithTooltip=highlightsFilterObj[i].filter(element=>null!=element.tooltipIdReference);let keyfeatureData=this.tooltipData;const map=new Map;filterWithTooltip.forEach(item=>map.set(item.tooltipIdReference,item)),keyfeatureData.forEach(item=>map.set(item.id,{...map.get(item.id),...item}));let mergedArr=Array.from(map.values());filterArray=mergedArr.filter(element=>null!=element.tooltipIdReference&&(null!=element.title||"")),filterArray.length>0&&filterWithTooltipObj.push(filterArray)}if(filterWithTooltipObj&&filterWithTooltipObj.length){let randomFilter=filterWithTooltipObj[T.Utils.getRandomValueWithInRange(0,filterWithTooltipObj.length-1)],randomFilter2=randomFilter[T.Utils.getRandomValueWithInRange(0,randomFilter.length-1)],tooltipId=randomFilter2.tooltipIdReference;this.filterValue=randomFilter2.value;const localstorageData={category:this.category,filter:randomFilter2};this.sessionItem?this.sessionItem.push(localstorageData):this.sessionItem=[{category:this.category,filter:randomFilter2}],this.getTooltipData(tooltipId)}}},getTooltipData(tooltipId){let keyfeatureData=this.tooltipData.filter(element=>element.id==tooltipId)[0];if(keyfeatureData.title){const title=keyfeatureData.title;if(this.$heading.html(title),keyfeatureData.descriptionsWithFootnotes&&keyfeatureData.descriptionsWithFootnotes.length){let description=keyfeatureData.descriptionsWithFootnotes[0];this.$description.html(description),$(document).trigger("footnotes:initreplacement")}if(Object.entries(keyfeatureData.images[0]).length&&null!=keyfeatureData.images[0].imageUrls){let imageUrl=keyfeatureData.images[0].imageUrls.large;this.$image[0].src=imageUrl,this.$image[0].alt=keyfeatureData.title,this.$imageWrapper.removeClass("hidden")}this.$featurePromotion.removeClass("hidden"),sessionStorage.setItem("product-feature-promotion",JSON.stringify(this.sessionItem))}else this.selectRandomFilter()},applyPromotionFilter(){this._events.emit("usefilter:selected",{featurePromotion:this.filterValue,namespace:this.namespace,trackingValue:"feature promotion teaser"}),this.$featurePromotion.addClass("hidden")}})}(jQuery),function($){T.Module.FeatureStories=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$featureTilesWrapper=this.$ctx.find(".js-feature-tile-wrapper"),this.$featureTiles=this.$ctx.find(".js-feature-tile"),this.$moreLessButton=this.$ctx.find(".js-show-more-features"),this.$originalFeatureNamesTexts=this.$ctx.find(".feature-name").find(".feature-name-text").clone(),this.$footnote=this.$ctx.find(".js-copi-text > .js-footnote-sup"),this.$footnote.on("click",ev=>this.scrollToFootNote(ev)),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),this.$moreLessButton.on("click",()=>this.showMoreStories()),this.$featureTiles.on("keydown",ev=>this.onKeyDown(ev)),this._events.on("openLayer",data=>this.onOpenLayer(data)),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.displayShowMoreButton())},displayShowMoreButton(){this.$featureTilesWrapper.length>6&&this.$moreLessButton.removeClass("hidden")},showMoreStories(){$(this.$featureTilesWrapper[5]).nextAll().removeClass("hidden"),this.$moreLessButton.addClass("hidden"),$(this.$featureTiles[6]).trigger("focus")},onKeyDown(ev){13===ev.keyCode&&$(ev.currentTarget).trigger("click")},onOpenLayer(data){let featureStoriesMainSlider=this.$ctx.find(".js-mediagallery-mainslider");const $currentMainSlider=data.$ctx.find(".js-mediagallery-mainslider");if(featureStoriesMainSlider)for(let i=0;i<featureStoriesMainSlider.length;i++)for(let j=0;j<$currentMainSlider.length;j++)if($currentMainSlider[j]===featureStoriesMainSlider[i]){const thumbnailSliderElement=data.$ctx.find(".js-mediagallery-thumbn
7ail-slider")[j],currentMainSliderElement=$currentMainSlider[j],mediaGallerySlider=currentMainSliderElement?this._sandbox.getModuleById($(currentMainSliderElement).data("t-id")):void 0,thumbnailSlider=thumbnailSliderElement?this._sandbox.getModuleById($(thumbnailSliderElement).data("t-id")):void 0;mediaGallerySlider&&mediaGallerySlider.refreshSlider(),thumbnailSlider&&thumbnailSlider.refreshSlider()}},scrollToFootNote(ev){ev.preventDefault(),this._events.emit("scrollToSection:footnotes")}})}(jQuery),function($){T.Module.Filter=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.filterInitiallyClosed=this.$ctx.data("filter-initially-closed"),this.$filterShowHide=this.$(".js-filter-toggle"),this.$filterGroupWrapper=this.$(".js-filter-group-wrapper"),this.$filterBlockOuter=this.$(".js-filter-block-outer"),this.$filterclosebutton=this.$(".js-filter-closefilterarea-button"),this.$filterLayer=this.$(".js-filterlayer"),this.$filterresetbutton=this.$(".js-action-reset"),this.layerIsOpen=!0,this.$filterShowHide.on("click",ev=>this.onClickFilterShowHide(ev)),this.$filterclosebutton.on("click",ev=>this.onClickFilterCloseButton(ev)),this.$filterresetbutton.on("click",ev=>this.onClickFilterResetButton(ev)),this._events.on("t.sync",()=>this.sync()),this._events.on("toggleFilterlayer",()=>this.onToggleFilterLayer()),this._events.on("toggleComparelayer",()=>this.onToggleCompareLayer()),this._events.on("viewportChanged",viewport=>this.onViewportChanged(viewport)),this.isDefaultHidden=this.$ctx.hasClass("hidden"),T.Utils.isIE()&&(this.isDefaultHidden||this.$ctx.addClass("hidden")),this.filterSetOpenCloseStateOnInit(),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.onViewportChanged(T.Utils.getViewport()),T.Utils.isIE()&&(this.isDefaultHidden||this.$ctx.removeClass("hidden")))},reset(){return this._events.emit("filterlayerresetbutton:clicked"),this.setFilterLayerVisible(!1)},hasActiveFilters(){return this.$filterLayer.length>0&&(this.filterLayer=this._sandbox.getModuleById(this.$filterLayer.data("t-id")),null!=this.filterLayer?this.filterLayer.hasActiveFilters():void 0)},filterSetOpenCloseStateOnInit(){this.filterInitiallyClosed&&"mobile"==T.Utils.getViewport()&&this.closeFilterLayer(!0)},isFilterLayerVisible(){return this.$filterLayer.hasClass("filter-block-is-opened")},setFilterLayerVisible(show){return show?this.$filterLayer.addClass("is-opened"):this.$filterLayer.removeClass("is-opened")},setFilterBlockOuterVisible(show){return show?(this.$filterBlockOuter.addClass("is-opened"),this.$filterLayer.addClass("filter-block-is-opened")):(this.$filterBlockOuter.removeClass("is-opened"),this.$filterLayer.removeClass("filter-block-is-opened"))},openFilterLayer(){return this.setFilterBlockOuterVisible(!0),this.setFilterLayerVisible(!0),this.layerIsOpen=!0,this._events.emit("filterLayerOpened")},closeFilterLayer(hideBreadcrumb){if(T.Utils.isViewport("tablet")||T.Utils.isViewport("desktop")){if(this.$filterLayer.find(".js-selected-filter").length>0){this.setFilterBlockOuterVisible(!1);const filterLayerVisible=!hideBreadcrumb;this.setFilterLayerVisible(filterLayerVisible),this._events.emit("filterLayerClosed",{headerVisible:filterLayerVisible})}else this.setFilterLayerVisible(!1),this._events.emit("filterLayerClosed",{headerVisible:!1})}else this.setFilterBlockOuterVisible(!1),this.setFilterLayerVisible(!1),this._events.emit("filterLayerClosed",{headerVisible:!1});return this.layerIsOpen=!1},onClickFilterShowHide(ev){return ev.preventDefault(),this.$filterGroupWrapper.toggleClass("show-all"),this.$filterShowHide.toggleClass("is-active")},onClickFilterCloseButton(ev){return this.closeFilterLayer(!1)},onClickFilterResetButton(ev){ev.preventDefault(),this._events.emit("filterlayerresetbutton:clicked"),this.closeFilterLayer(!1)},onToggleFilterLayer(){return this.layerIsOpen?this.closeFilterLayer(!1):this.openFilterLayer()},onToggleCompareLayer(){return this.setFilterLayerVisible(!this.isFilterLayerVisible())},onViewportChanged(viewport){if(this.$filterGroupWrapper||this.$filterShowHide){const hiddenElements=this.$filterGroupWrapper.children().length>T.Utils.filterShowInital[viewport];this.$filterShowHide.toggleClass("hidden",!hiddenElements)}
7"mobile"!=viewport&&(this.layerIsOpen=!0),this.layerIsOpen?this.openFilterLayer():this.closeFilterLayer(!1)}})}(jQuery),function($){T.Module.FilterBar=T.createModule({start(resolve){const mod=this;return this.$ctx=$(this._ctx),mod.$filterbarTitle=mod.$(".js-filterbar-title"),mod.$filterbarNav=mod.$(".js-filterbar-nav"),mod.$filterbutton=mod.$(".js-filterbar-filter"),mod.$filterBarTextSpan=mod.$filterbutton.find(".js-filterbar-filter-text"),mod.$filterbarItems=mod.$filterbarNav.find("li:not(.js-filterbar-recommendations, .js-filterbar-title, .js-filterbar-filter)"),mod.$viewTypeButtons=mod.$filterbarNav.find(".js-filterbar-view-toggle"),mod.$inputGridListStatus=mod.$filterbarNav.find("input.js-view-state"),mod.$filterbarArrow=mod.$(".js-filterbar-arrow"),mod.$filterbarSortingSelect=mod.$(".js-filterbar-sorting"),mod.$parent=mod.$ctx.closest(".m-filter"),mod.$pageNrInput=mod.$parent.find('[name="pageNumber"]'),mod.parentId=mod.$parent.data("t-id"),mod.listId=mod.$ctx.data("list-id"),mod.$ctx.on("click",".js-filterbar-nav > li:not(.filterbar-recommendations, .js-filterbar-title, .js-filterbar-icons, .js-filterbar-filter)",$.proxy(mod.onClickNav,mod)),this.$filterbutton.on("click",ev=>this.handleFilterButton(ev)),mod.$filterbarSortingSelect.on("change",$.proxy(mod.onChangeSortingOption,this)),mod.$viewTypeButtons.on("click",$.proxy(mod.onClickViewTypeButton,mod)),$(".js-filterbar-category").on("change",ev=>mod.onChangeCategoryDropDown(ev)),mod._events.on("onGridListInit",$.proxy(mod.onGridListInitSetView,mod)),mod._events.on("onGridListButton",$.proxy(mod.onClickViewTypeButton,mod)),this._events.on("filterLayerOpened",()=>this.onFilterLayerOpened()),this._events.on("filterLayerClosed",data=>this.onFilterLayerClosed(data)),mod._events.on("updateSortingDropdown",$.proxy(mod.onUpdateSortingDropdown,this)),mod._events.on("updateActiveFilterCount",$.proxy(this.onUpdateActiveFilterCount,mod)),mod._events.on("updateItemCount",$.proxy(this.onUpdateItemCount,mod)),this._events.on("removeLayoutOptions",$.proxy(this.onRemoveLayoutOptions,this)),this._events.on("t.sync",()=>this.sync()),this.isSynced=!1,mod.checkActiveFilterCountVisibility(),mod.checkAvailableProductSets(),resolve(),this._selector={gridView:".grid-view"},this._class={gridView:"grid-view",listView:"list-view"}},sync(){if(!this.isSynced){let currentViewType;return currentViewType=this.$ctx.closest(this._selector.gridView).length>0?this._class.gridView:this._class.listView,this.onGridListInitSetView({listId:this.listId,viewType:currentViewType}),this.isSynced=!0}},onRemoveLayoutOptions(data){this.listId===data.listId&&(this.$viewTypeButtons.parent("li").remove(),this.$ctx.removeClass("has-grid-list-toggle"))},checkActiveFilterCountVisibility(){const mod=this;return"0"!==mod.$filterBarTextSpan.attr("data-active-filter-count")?mod.$filterbutton.addClass("has-active-filters"):mod.$filterbutton.removeClass("has-active-filters")},checkAvailableProductSets(){const mod=this;if(!mod.$ctx.hasClass("has-grid-list-toggle"))return mod._events.emit("modifyGridView")},toggleListViewType($activeToggleButton,viewTypeStatus){return this.$viewTypeButtons.removeClass("is-active"),$activeToggleButton.addClass("is-active"),this.$inputGridListStatus.attr("value",viewTypeStatus)},updateSortingDropDown(data){const mod=this,$select=mod.$filterbarSortingSelect.find("select");if($select.val(data.sortKey),data.triggerChange&&$select.trigger("change.select2"),data.triggerUpdateSticky){const eventData={};return eventData.$ctx=this.$ctx,mod._events.emit("updateStickySortingDropDown",eventData)}},onClickNav(ev){const $currentTarget=$(ev.currentTarget);return this.$filterbarItems.removeClass("is-active"),$currentTarget.addClass("is-active"),$currentTarget.hasClass("js-filterbar-compare")&&this._events.emit("toggleComparelayer"),ev.preventDefault()},handleFilterButton(ev){return this.$filterbarItems.removeClass("is-active"),this.$filterbutton.addClass("is-active"),this._events.emit("toggleFilterlayer"),ev.preventDefault()},onChangeSortingOption(ev){const mod=this;if(this.$ctx.hasClass("js-noajax")){const sortKey=mod.$filterbarSortingSelect.find("select").val();return mod._events.emit("filterBarSortingChange",{sortKey:sortKey,parentId:mod.parentId}),mod._events.emit("updateStickySortingDropDown",{$ctx:this.$ctx,sortKey:sortKey})}return mod.$pageNrInput.val("1"),T.Utils.onAjaxControllerTriggered(ev)[0].done(xhr=>
7mod._events.emit("loadMoreButtonVisibility",{loadMoreButtonVisibility:xhr.response.pageNumber<xhr.response.maxPageNumber}))},onUpdateActiveFilterCount(data){const mod=this;if(mod.$filterBarTextSpan.length>0)return mod.$filterBarTextSpan.attr("data-active-filter-count",data.activeFilterCount),mod.checkActiveFilterCountVisibility()},onUpdateItemCount(data){if(this.listId===data.listId)return this.$filterbarTitle.find(".js-counter").text(data.itemCount)},onClickViewTypeButton(ev,btn){let $currentTarget;if(btn){$currentTarget=this.$filterbarNav.find(btn)}else ev.preventDefault(),$currentTarget=$(ev.currentTarget);if(!$currentTarget.hasClass("is-active")){let $currentList;const $productListWrap=$currentTarget.closest(".productlist-wrap"),$tabPanel=$currentTarget.closest(".tab-panel.is-active");$productListWrap.length&&($currentList=$productListWrap.find(".o-list .js-list-layout")),$tabPanel.length&&($currentList=$tabPanel.find(".js-list-layout"));let viewTypeStatus="grid";if($currentTarget.hasClass("js-filterbar-listview")&&(viewTypeStatus="list"),this.toggleListViewType($currentTarget,viewTypeStatus),"grid"===viewTypeStatus)return this._events.emit("toggleGridView",{listId:this.listId,currentList:$currentList});if("list"===viewTypeStatus)return this._events.emit("toggleListView",{listId:this.listId,currentList:$currentList})}},onGridListInitSetView(data){if(this.listId===data.listId){let viewTypeClass,viewTypeStatus;data.viewType===this._class.listView?(viewTypeStatus="list",viewTypeClass="listview"):(viewTypeStatus="grid",viewTypeClass="gridview");const $activeToggleButton=this.$filterbarNav.find(`.js-filterbar-view-toggle.filterbar-${viewTypeClass}`);return this.toggleListViewType($activeToggleButton,viewTypeStatus),this._events.emit("updateStickyViewTypeButtonState",{listId:data.listId,viewType:data.viewType})}},onFilterLayerOpened(){return this.$filterbarArrow.addClass("is-active"),this.$filterbutton.addClass("is-active")},onFilterLayerClosed(data){return this.$filterbutton.removeClass("is-active"),data.headerVisible?this.$filterbarArrow.addClass("is-active"):this.$filterbarArrow.removeClass("is-active")},onUpdateSortingDropdown(data){if(this.$ctx=data.$ctx)return this.updateSortingDropDown(data)},onChangeCategoryDropDown(ev){const selectCategory=$(ev.currentTarget).find("select").val();window.open(selectCategory,"_self")}})}(jQuery),function($){T.Module.FilterLayer=T.createModule({request:{},start(resolve){const mod=this;return mod.$ctx=$(this._ctx),mod.$filterGroupWrapper=mod.$(".js-filter-group-wrapper"),mod.$filterInput=mod.$(".js-value"),mod.$ctx.on("change",".js-value",$.proxy(mod.onChangeFilterValue,mod)),mod.sync=$.proxy(this.sync,this),mod.isSynced=!1,mod._events.on("t.sync",this.sync),this.doEventBinding(),resolve()},sync(){if(!this.isSynced)return this.isSynced=!0,this.equalizeHeadingHeights()},hasActiveFilters(){return this.$ctx.find(".js-selected-filter-container .js-selected-filter").length>0},reset(){},doEventBinding(){return this._events.on("selectedfilter:clicked",$.proxy(this.onRemoveSelectedFilter,this)),this._events.on("filterlayerresetbutton:clicked",$.proxy(this.onReset,this))},equalizeHeadingHeights(){return this.$(".js-filterlist-heading, .js-equalize-heading").matchHeight()},toggleElementActiveState($item){const $input=$item.find(".js-filter-item-input"),$filterList=$item.closest(".js-filter-list-container"),isMultiSelect=$filterList.data("multiple-select");if(isMultiSelect?$item.removeClass("is-active"):($filterList.find(".js-filter-list-row:not(.hidden) .js-filter-list-row-item").removeClass("is-active"),$item.hasClass("is-active")||this.uncheckSingleSelectFiltersOfSameAttribute($filterList)),$input.is(":checked")&&$item.addClass("is-active"),!isMultiSelect)return $filterList.find(".js-filter-list-row-item:not(.is-active) .js-filter-item-input").prop("checked",!1)},uncheckSingleSelectFiltersOfSameAttribute($filterList){if(0===($filterList.length||0))return;const $attributeInput=$filterList.closest(".filterlayer-col").find("input:hidden[name$='.attribute']").first();if(0===$attributeInput.length)return;const attribute=$attributeInput.val(),$filtersOfSameAttribute=this.$ctx.find("input:hidden[name$='.attribute'][value='"+attribute+"']").not($attributeInput);0!==$filtersOfSameAttribute.length&&$filtersOfSameAttribute.each(function(){const $otherFilterList=$(this).closest(".filterlayer-col").find(".js-filter-list-container");$otherFilterList.find(".js-filter-list-row-item").removeClass("is-active"),$otherFilterList.find(".js-filter-list-row-item:not(.is-active) .js-filter-item-input").prop("checked",!1)})}
7,onChangeFilterValue(ev){const $item=$(ev.target).closest(".js-filter-list-row-item");if($item.closest(".js-filter-list-container").length>0)return this.toggleElementActiveState($item)},onRemoveSelectedFilter(data){const mod=this;switch(data.type){case"default":case"category":var selector=`[value='${data.value}']`,$input=mod.$filterGroupWrapper.find(selector);if(!$input.length)return;return data.resetValue&&$input.val(""),$input.trigger("click");case"range":if(selector=`[data-range-name='${data.name}']`,!($input=mod.$filterGroupWrapper.find(selector)).length)return;if("SELECT"===$input[0].tagName)return $input[0].selectedIndex=-1,$input.trigger("click");{const $inputfield=$input.find("input");return $inputfield.val(null),$inputfield.filter(":first").trigger("change")}}},onReset:()=>!0})}(jQuery),function($){T.Module.FilterLayerRebrush=T.createModule({request:{},start(resolve){this.$ctx=$(this._ctx),this.$requestElm=this.$ctx.closest(".js-ajax-request"),$.extend(this.request,{id:this.$requestElm.attr("data-ajax-id")}),this.$filterGroupWrapper=this.$ctx.find(".js-filter-group-wrapper"),this.requestStarted=!1,this.$ratingsCheckbox=this.$ctx.find(".a-rating, .a-rating a"),this.$selectableRangeCheckbox=this.$ctx.find(".a-selectablerange"),this.$sortDropdown=this.$ctx.find(".js-chips-select-option"),this.$ctx.find(".js-value").on("change",e=>this.onChangeFilterValue(e)),this.$ctx.find("[class^=rangeslider-value].js-value, .price-range-inputs .js-value").on("keydown",e=>{T.Utils.isKeyEnter(e)&&this.onChangeFilterValue(e)}),this.$ratingsCheckbox.on("click",e=>this.onRatingStarClicked(e)),this.$ratingsCheckbox.on("keydown",e=>{T.Utils.isKeySpace(e)&&this.onRatingStarClicked(e)}),this.$selectableRangeCheckbox.on("click",e=>this.onSelectableRangeClicked(e)),this.$selectableRangeCheckbox.on("keydown",e=>{T.Utils.isKeySpace(e)&&this.onSelectableRangeClicked(e)}),this.$sortDropdown.on("click",e=>this.onClickOfSort(e)),this._events.on("triggerProductListUpdate",data=>this.triggerProductListUpdate({...this.request,...data})),this._events.on("selectedfilter:clicked",data=>this.onRemoveSelectedFilter(data)),this._events.on("usefilter:selected",data=>this.listenedfilter(data)),this.removeAccessibilityFromInfoIcons(),resolve()},checkFilterResponse(request){return this._events.emit("loadMore",{listId:this.request.listId,loadMoreType:"aja
7x",requestData:request[0]})},removeAccessibilityFromInfoIcons(){this.$ctx.find(".icon-info").closest(".a-button").attr("tabindex","-1")},triggerProductListUpdate(data){if(this.isCurrentCtx(data.$ctx)&&(data.id=this.$ctx.closest(".js-ajax-request").attr("data-ajax-id"),!1===this.requestStarted)){const $modal=this.$ctx.find(".modal"),isModalOpen=$modal.hasClass("open");let currentOpenFilterNames=[];$modal.find(".general-filter .filter.open .filter-name").each((index,filtername)=>{currentOpenFilterNames.push(filtername.innerText)}),this._events.emit("filterlayer:filterChanged",{$component:this.$ctx,component:this});const request=T.Utils.startAjaxRequest(data.id,data.config,{modalOpen:isModalOpen,currentOpenFilterNames:currentOpenFilterNames},()=>{$(document).trigger("footnotes:initreplacement")});return!!request&&(this.checkFilterResponse(request),this.removeAccessibilityFromInfoIcons(),this.requestStarted=!0)}},onChangeFilterValue(ev){const $item=$(ev.target).closest(".js-filter-list-row-item");$item.closest(".js-filter-list-container").length>0&&this.toggleElementActiveState($item);const $filter=$(ev.currentTarget),singlevalue=$filter.data("singleValue");if(singlevalue){const $duplicates=this.$ctx.find(`[data-single-value='${singlevalue}']`).not($filter);$duplicates.length>0&&$duplicates.val(""),$(`input[data-hidden-filter='${singlevalue}']`).remove()}return this.$ctx.closest(".o-list").find('input[name="pageNumber"]').val("1"),this.triggerProductListUpdate(this.request)},onClickOfSort(){this.$ctx.closest(".o-list").find('input[name="pageNumber"]').val("1")},listenedfilter(data){if(this.$ctx.parents(`[data-namespace='${data.namespace}']`).length)if(data.isCheckbox){let filterInput=this.$ctx.find(".js-filter-item-checkbox").filter((index,element)=>element.value==data.featurePromotion[0].value);if(filterInput&&filterInput.length)for(let i=0;i<filterInput.length;i++)filterInput.prop("checked",!0).change();T.Utils.scrollToTop(this.$ctx)}else{let filterInput=this.$ctx.find(".js-filter-item-input").filter((index,element)=>element.value==data.featurePromotion);if(filterInput&&filterInput.length){for(let i=0;i<filterInput.length;i++)filterInput[i].click();T.Utils.scrollToTop(this.$ctx)}}},toggleElementActiveState($item){const $input=$item.find(".js-filter-item-input"),$filterList=$item.closest(".js-filter-list-container"),isMultiSelect=$filterList.data("multiple-select");if(isMultiSelect?$item.removeClass("is-active"):($filterList.find(".js-filter-list-row:not(.hidden) .js-filter-list-row-item").removeClass("is-active"),$item.hasClass("is-active")||this.uncheckSingleSelectFiltersOfSameAttribute($filterList)),$input.is(":checked")&&$item.addClass("is-active"),!isMultiSelect)return $filterList.find(".js-filter-list-row-item:not(.is-active) .js-filter-item-input").prop("checked",!1)},uncheckSingleSelectFiltersOfSameAttribute($filterList){if(0===($filterList.length||0))return;const $attributeInput=$filterList.closest(".filterlayer-col").find("input:hidden[name$='.attribute']").first();if(0===$attributeInput.length)return;const attribute=$attributeInput.val(),$filtersOfSameAttribute=this.$ctx.find("input:hidden[name$='.attribute'][value='"+attribute+"']").not($attributeInput);0!==$filtersOfSameAttribute.length&&$filtersOfSameAttribute.each((index,element)=>{const $otherFilterList=$(element).closest(".filterlayer-col").find(".js-filter-list-container");$otherFilterList.find(".js-filter-list-row-item").removeClass("is-active"),$otherFilterList.find(".js-filter-list-row-item:not(.is-active) .js-filter-item-input").prop("checked",!1)})},onRemoveSelectedFilter(data){if(!this.isCurrentCtx(data.$ctx))return;let categoryReplacement,$hiddenfilter=this.getHiddenFilter(data);"category"===data.type&&(categoryReplacement=this.createCategoryFilterReplacement(data));return(()=>{if($hiddenfilter.length>0&&categoryReplacement)return $hiddenfilter.val(categoryReplacement),!0;if($hiddenfilter.length>0)return $hiddenfilter.remove(),!0;if("category"===data.type||"default"===data.type){if(categoryReplacement){const inputName=this.removeAvailableInputsForAttribute("categories"),newHidden=$("<input>");return newHidden.val(categoryReplacement),newHidden.attr("name",inputName),newHidden.attr("type","hidden"),this.$filterGroupWrapper.append(newHidden),!0}
7let $input=this.$filterGroupWrapper.find(`[value='${data.value}']`);if(!$input.length)return!1;$input.attr("checked",!1)}if("range"===data.type||"ratings"===data.type){const $input=this.$filterGroupWrapper.find(`[data-range-name='${data.name}']`);return!!$input.length&&($input.is('[type="checkbox"]')?$input.prop("checked",!1).change():$input.find("input").val("null"),!0)}return!0})()?this.triggerProductListUpdate(this.request):void 0},isCurrentCtx($ctx){return!$ctx||$ctx.closest(".m-filter-rebrush").is(this.$ctx.closest(".m-filter-rebrush"))},getHiddenFilter:data=>"category"===data.type?$(`[data-hidden-filter^='${data.name}']`):data.minValue||data.maxValue?$(`[data-hidden-filter='${data.name+"."+data.minValue+"-"+data.maxValue}']`):$(`[data-hidden-filter='${data.name+"."+data.value}']`),removeAvailableInputsForAttribute(attribute){var inputName;return this.$filterGroupWrapper.find('input[name$=".attribute"][value="'+attribute+'"]').each((index,element)=>{inputName=(inputName=$(element).attr("name")).substring(0,inputName.indexOf("]")+1),this.$filterGroupWrapper.find('input[name^="'+inputName+'"]').remove()}),inputName},createCategoryFilterReplacement(filter){if(filter.value){const categoryPath=filter.value.split("/");if(categoryPath.length>=2){return`{'attribute': 'categories', 'valueType': 'MULTI', 'values.0': '${categoryPath.slice(0,categoryPath.length-1).join("/")}'}`}return"{'attribute': 'categories', 'valueType': 'MULTI'}"}return null},onRatingStarClicked(ev){ev.preventDefault();const keyCheckboxes=$(ev.target).closest(".filterlayer-rating").find(">input"),valueCheckboxes=$(ev.target).closest(".a-rating").parent().find("input"),allValueCheckboxes=$(ev.target).closest(".filterlayer-rating").find('input[name$="minValue"], input[name$="maxValue"]');keyCheckboxes.prop("checked",!0).change(),allValueCheckboxes.prop("checked",!1),valueCheckboxes.prop("checked",!0).change()},onSelectableRangeClicked(ev){ev.preventDefault();const keyCheckboxes=$(ev.target).closest(".filterlayer-selectablerange").find(">input"),selectedValueCheckboxes=$(ev.target).closest(".a-selectablerange").parent().find("input"),allValueCheckboxes=$(ev.target).closest(".js-filterlist-container").find("input");keyCheckboxes.prop("checked",!0).change(),allValueCheckboxes.prop("checked",!1),selectedValueCheckboxes.prop("checked",!0).change()}})}(jQuery),function($){T.Module.FilterLayerRebrushSorting=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this._events.on("chipOptionSelected",$option=>{this.isInCurrentCtx($option)&&(this.setSelectedInputValues($option),this.trackSelection($option),this._events.emit("triggerProductListUpdate",{$ctx:this.$ctx}))}),resolve()},setSelectedInputValues($option){const attributeValue=$option.data("sort-attribute"),directionValue=$option.data("sort-direction"),$attributeInput=this.$ctx.find(".js-sorting-input-attribute").first(),$directionInput=this.$ctx.find(".js-sorting-input-direction").first(),additionalAttributeValue=$option.data("sort-additional-attribute"),additionalDirectionValue=$option.data("sort-additional-direction"),$additionalAttributeInput=this.$ctx.find(".js-sorting-input-additional-attribute").first(),$additionalDirectionInput=this.$ctx.find(".js-sorting-input-additional-direction").first();$attributeInput.attr("value",attributeValue),$directionInput.attr("value",directionValue),$additionalAttributeInput.attr("value",additionalAttributeValue),$additionalDirectionInput.attr("value",additionalDirectionValue)},trackSelection($option){const trackValue=$option.data("track-value");trackValue&&this._events.emit("tracking:generic",{trackType:"listcondition",trackData:{selectdata:trackValue}})},isInCurrentCtx($ctx){return!$ctx||$ctx.closest(".m-filter-rebrush").is(this.$ctx.closest(".m-filter-rebrush"))}})}(jQuery),function($){T.Module.FilterList=T.createModule({start(resolve){const mod=this;mod.$ctx=$(this._ctx),mod.$filterItemHeader=mod.$(".js-filterlist-heading"),mod.$filterListHeadingIcon=mod.$(".js-filterlist-heading-icon"),mod.$filterItemCloseIcon=mod.$(".js-filterlist-close-icon"),mod.configuration={groupOnce:mod.$ctx.data("group-once")||""},this.legacy=this.$ctx.data("legacy"),mod.$filterItemCloseIcon.on("click",$.proxy(mod.onFilterItemCloseIconClicked,mod)),mod._events.on("filterStateChange",$.proxy(this.onFilterStateChange,mod)),mod._events.on("filterlayerresetbutton:clicked",()=>this.onReset()),this.legacy?T.Utils.registerMq("md",{match:()=>mod.$filterItemHeader.on("click.mobile",$.proxy(mod.onFilterItemHeaderClicked,mod)),unmatch:()=>mod.$filterItemHeader.off("click.mobile")},"max"):mod.$filterItemHeader.on("click.mobile",evt=>this.onFilterItemHeaderClicked(evt)),this.checkHeadingIconState(),resolve()},sync(){},checkHeadingIconState(){this.$(".js-filter-item-input:checked").length>0&&this.$filterListHeadingIcon.addClass("is-active")},onFilterItemCloseIconClicked(ev){$(ev.currentTarget).closest(".
7js-filter-list-row-item").find(".js-filter-item-input").trigger("click")},onFilterItemHeaderClicked(ev){this.toggleFilterList()},toggleFilterList(){const ownId=this.$ctx.data("t-id"),header=this.$ctx.find(".js-filterlist-heading"),container=header.parent().find(".js-filter-list-container"),wasClosed=!0!==header.hasClass("is-opened"),hasGroupOnce=""!==this.configuration.groupOnce,listenerId="click.toggleFilterList"+ownId;if(wasClosed){if(hasGroupOnce){const groupOnce=this.$ctx.closest("."+this.configuration.groupOnce);groupOnce.find(".is-opened").removeClass("is-opened"),groupOnce.find(".open-mobile").removeClass("open-mobile")}$(document).on(listenerId,ev=>{0==$(ev.target).parents(".m-filterlist").length?this.toggleFilterList():0==$(ev.target).parents('.m-filterlist[data-t-id="'+ownId+'"]').length&&$(document).off(listenerId)})}else wasClosed||$(document).off(listenerId);header.toggleClass("is-closed"),header.toggleClass("is-opened"),container.toggleClass("open-mobile")},onFilterStateChange(data){const mod=this;data.$filterList.closest(mod.$ctx).length&&(data.$filterList.find(".js-filter-list-row-item.is-active").length>0?mod.$filterListHeadingIcon.addClass("is-active"):mod.$filterListHeadingIcon.removeClass("is-active"))},onReset(){let $inputList=this.$ctx.find('[data-t-name="FormInput"] input');$.each($inputList,(i,el)=>{$(el).is(":radio")||$(el).is(":checkbox")?$(el).prop("checked",!1):$(el).val("")})}})}(jQuery),function($){T.Module.FilterListRebrush=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$filterItemCloseIcon=this.$(".js-filterlist-close-icon"),this.$filterItemCloseIcon.on("click",e=>this.deselectFilterItem(e)),this.$filterItemCloseIcon.on("keydown",e=>this.onFilterItemCloseIconKeyDown(e)),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),this.$filterIsInModal=this.$ctx.find(".js-is-in-modal"),this.$filterItemPopver=$(".m-popover").find(".js-footnote-reference-number"),this.$filterItemCloseIcon.on("click",e=>this.deselectFilterItem(e)),this.$filterItemCloseIcon.on("keydown",e=>this.onFilterItemCloseIconKeyDown(e)),this.$filterIsInModal.on("click",()=>this.removeFootnoteClick()),this._events.on("viewportChanged",viewport=>this.onViewPortChanged(viewport)),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.filterHeading())},onFilterItemCloseIconKeyDown(e){(T.Utils.isKeyEnter(e)||T.Utils.isKeySpace(e))&&this.deselectFilterItem(e)},deselectFilterItem(e){$(e.currentTarget).closest(".js-filter-list-row-item").find(".js-filter-item-input").trigger("click")},filterHeading(){for(this.$filterHeadingArray=$(".filterlist-heading"),i=0;i<this.$filterHeadingArray.length;i++){this.$filterHeadingArray[i].innerText.split(" ").length>1||$(this.$filterHeadingArray[i]).closest(".m-chips").css("min-width","min-content")}},removeFootnoteClick(){this.$filterItemPopver.removeAttr("style"),this.$filterItemPopver.css("pointer-events","none")},onViewPortChanged(viewport){"desktop"===viewport&&(this.$filterItemPopver.removeAttr("style"),this.$filterItemPopver.css("cursor","pointer"))}})}(jQuery),function($){T.Module.FilterRebrush=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$filterresetbutton=this.$ctx.find(".js-action-reset"),this.$filterLayer=this.$ctx.find(".js-filterlayer"),this.applyScrollMarginTopToAnchors(),this.$filterLayer.on("keydown",e=>this.preventSubmitFormOnEnter(e)),this.$filterresetbutton.on("click",e=>this.onClickFilterResetButton(e)),this._events.on("windowWidthChanged",T.Utils.debounce(()=>this.applyScrollMarginTopToAnchors(),50)),resolve()},preventSubmitFormOnEnter(e){T.Utils.isKeyEnter(e)&&e.preventDefault()},onClickFilterResetButton(e){e.preventDefault(),this.$ctx.find(".js-selected-input-wrapper input").each((i,input)=>{$(input).prop("disabled",!0)}),this.$ctx.find("input[name=pageNumber]").val("1"),this.$ctx.find(".modal .filter.open").removeClass("open"),this._events.emit("triggerProductListUpdate",{$ctx:this.$ctx})},applyScrollMarginTopToAnchors(){const stickyHeaderHeight=$(".o-headerrebrush .menu").outerHeight();T.Utils.setAnchorTargetScrollMargin(stickyHeaderHeight)}})}(jQuery),function($){T.Module.FilterTeaser=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.namespace=this.$ctx.data("namespace"),this.$parentContainer=this.$ctx.find(".js-filter-teaser"),this.teaserCategory=this.$ctx.data("category"),this.$ratingsCheckbox=this.$ctx.find(".a-rating, .a-rating a"),this.$selectableRangeCheckbox=this.$ctx.find(".a-selectablerange"),this.$filterresetbutton=this.$ctx.find(".js-action-reset"),this.$filterLayer=this.$ctx.find(".js-filterlayer"),this.$hideFilters=this.$ctx.find(".m-chips-group .filterlayer-col").slice(4).addClass("hidden"),this.$moreFiltersLink=this.$ctx.find(".js-show-more-filters"),this.$allChips=this.$ctx.find(".js-filter-list-row-item"),this.$chipInput
7s=this.$allChips.find(".m-forminput-checkbox"),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),this.$moreFiltersLink.on("click",()=>this.showAllFilters()),this.$chipInputs.on("click",e=>this.applyTeaserFilter(e)),this.$ratingsCheckbox.on("click",e=>this.onRatingStarClicked(e)),this.$selectableRangeCheckbox.on("click",e=>this.onSelectableRangeClicked(e)),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.sessionItem=JSON.parse(sessionStorage.getItem("product-filter-teaser")),this.sessionItem?this.checkSessionStorageForFilterTeaser():this.$ctx.removeClass("hidden"),$(document).trigger("footnotes:initreplacement"))},checkSessionStorageForFilterTeaser(){this.sessionItem.some(el=>el==this.teaserCategory)||this.$ctx.removeClass("hidden")},showAllFilters(){this.$hideFilters.removeClass("hidden"),this.$moreFiltersLink.addClass("hidden")},applyTeaserFilter(e,isCheckbox,valueCheckboxes){if(isCheckbox){const selectedValue=valueCheckboxes;if(this.sessionItem){this.sessionItem.some(el=>el==this.teaserCategory)||this.sessionItem.push(this.teaserCategory)}else this.sessionItem=[],this.sessionItem.push(this.teaserCategory);sessionStorage.setItem("product-filter-teaser",JSON.stringify(this.sessionItem)),this._events.emit("usefilter:selected",{featurePromotion:selectedValue,isCheckbox:isCheckbox,ev:e,trackingValue:"filter teaser"})}else{const selectedValue=$(e.currentTarget).find(".js-filter-item-input").val();if(this.sessionItem){this.sessionItem.some(el=>el==this.teaserCategory)||this.sessionItem.push(this.teaserCategory)}else this.sessionItem=[],this.sessionItem.push(this.teaserCategory);sessionStorage.setItem("product-filter-teaser",JSON.stringify(this.sessionItem)),this._events.emit("usefilter:selected",{featurePromotion:selectedValue,namespace:this.namespace,trackingValue:"filter teaser"})}},onRatingStarClicked(ev){ev.preventDefault();const keyCheckboxes=$(ev.target).closest(".filterlayer-rating").find(">input"),valueCheckboxes=$(ev.target).closest(".a-rating").parent().find("input"),allValueCheckboxes=$(ev.target).closest(".filterlayer-rating").find('input[name$="minValue"], input[name$="maxValue"]');keyCheckboxes.prop("checked",!0).change(),allValueCheckboxes.prop("checked",!1),valueCheckboxes.prop("checked",!0).change(),this.applyTeaserFilter(ev,!0,valueCheckboxes)},onSelectableRangeClicked(ev){ev.preventDefault();const keyCheckboxes=$(ev.target).closest(".filterlayer-selectablerange").find(">input"),selectedValueCheckboxes=$(ev.target).closest(".a-selectablerange").parent().find("input"),allValueCheckboxes=$(ev.target).closest(".js-filterlist-container").find("input");keyCheckboxes.prop("checked",!0).change(),allValueCheckboxes.prop("checked",!1),selectedValueCheckboxes.prop("checked",!0).change()}})}(jQuery),function($){T.Module.FloatingButton=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.headerTransitionDelay=350,this.referenceElement=$(this.$ctx.data("reference-element-selector")).get(0),this.floatingContainerElement=$(this.$ctx.data("floating-container-selector")).get(0),this.headerElement=$(".o-headerrebrush").get(0),this.headerOneNavStickyElement=$(".o-header .nav-sticky").get(0),$(window).on("jquery:viewportChanged",()=>{this.initModule()}),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.initModule())},initModule(){if(!this.referenceElement||!this.floatingContainerElement)return;const currentViewport=T.Utils.getViewport();"tablet"!==currentViewport&&"mobile"!==currentViewport||(this.calculateTopPosition(),this.calculateTopPositionForHeaderOne(),this.addTransitionOfHeaderOne(),this.setUpMutationObserverForHeaders(),(this.headerOneNavStickyElement||this.headerElement&&this.headerElement.classList.contains("is-sticky-mobile"))&&(this.setupReferenceElementObserver(),this.setupFloatingContainerObserver()))},setupReferenceElementObserver(){this.referenceElement&&!this.referenceObserver&&setTimeout(()=>{const headerHeight=this.headerElement?this.headerElement.offsetHeight:0;this.referenceObserver=new IntersectionObserver(entries=>{entries.forEach(entry=>{entry.boundingClientRect.top-headerHeight>0||entry.isIntersecting?this.refAboveVpTop=!1:this.refAboveVpTop=!0,this.updateVisibility()})},{rootMargin:`-${headerHeight}px 0px`}),this.referenceObserver.observe(this.referenceElement)},this.headerTransitionDelay)}
7,setupFloatingContainerObserver(){this.floatingContainerElement&&!this.floatingContainerObserver&&(this.floatingContainerObserver=new IntersectionObserver(entries=>{entries.forEach(entry=>{entry.isIntersecting?this.containerInVp=!0:this.containerInVp=!1,this.updateVisibility()})},{rootMargin:"-80% 0px 0px 0px"}),this.floatingContainerObserver.observe(this.floatingContainerElement))},updateVisibility(){this.refAboveVpTop&&this.containerInVp?this.show():this.hide()},show(){this.$ctx.addClass("visible"),this.$ctx.attr("tabindex","0")},hide(){this.$ctx.removeClass("visible"),this.$ctx.attr("tabindex","-1")},calculateTopPosition(){this.headerElement&&this.headerElement.classList.contains("is-sticky-mobile")&&!this.topPosition&&setTimeout(()=>{this.topPosition=this.headerElement.offsetHeight,this.$ctx.css({top:this.topPosition})},this.headerTransitionDelay)},calculateTopPositionForHeaderOne(){this.headerOneNavStickyElement&&this.$ctx.css({top:this.headerOneNavStickyElement.classList.contains("is-active")?this.headerOneNavStickyElement.offsetHeight:0})},addTransitionOfHeaderOne(){if(!this.headerOneNavStickyElement)return;const stickyNavComputedStyles=window.getComputedStyle(this.headerOneNavStickyElement),transitionDelay=stickyNavComputedStyles.getPropertyValue("transition-delay"),transitionDuration=stickyNavComputedStyles.getPropertyValue("transition-duration"),transitionTimingFunction=stickyNavComputedStyles.getPropertyValue("transition-timing-function");this.$ctx.css({"transition-property":"top, transform","transition-delay":transitionDelay,"transition-duration":transitionDuration,"transition-timing-function":transitionTimingFunction})},setUpMutationObserverForHeaders(){!this.headerElement&&!this.headerOneNavStickyElement||this.headerMutationObserver||(this.headerMutationObserver=new MutationObserver(mutations=>{mutations.find(mutation=>{if("attributes"===mutation.type&&"class"===mutation.attributeName)return this.calculateTopPosition(),this.calculateTopPositionForHeaderOne(),this.headerElement&&(this.setupReferenceElementObserver(),this.setupFloatingContainerObserver()),!0})}),this.headerMutationObserver.observe(this.headerElement||this.headerOneNavStickyElement,{attributes:!0}))}})}(jQuery),function($){T.Module.FlyInLayer=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.layerContent=this.$ctx.find(".fly-in-layer-content"),this.$flag=this.$ctx.find(".a-area--fly-in-flag"),this.$closeBtn=this.$ctx.find(".js-close-button"),this.initiallyExpanded=this.$ctx.data("initially-expanded"),this.autoOpenTimer=this.$ctx.data("auto-open-timer"),this.autoCloseTimer=this.$ctx.data("auto-close-timer"),this.layerId=this.$ctx.data("fly-in-layer-id"),this.cookieName=`flyinlayer${this.layerId}done`,this.dontAutomateFlyin=this.getDontAutomateFlyin(),this.mouseEnteredLayer=!1,this.mouseLeftLayer=!1,this.autoCloseTimerFinished=!1,this.$ctx.on("click touchstart",()=>{this.handleInteractionOrAnimationCompleted()}),this.$flag.on("click",()=>this.showLayer()),this.$closeBtn.on("click",()=>this.hideLayer()),this.manageLayerStateOnLoad(),resolve()},manageLayerStateOnLoad(){if(!this.dontAutomateFlyin)return!0===this.initiallyExpanded&&this.autoCloseTimer?(this.showLayer(),void this.startAutoCloseTimer()):void(this.initiallyExpanded||!this.autoOpenTimer?this.initiallyExpanded&&this.showLayer():this.startAutoOpenTimer())},showLayer(){this.$ctx.addClass("is-open")},hideLayer(){this.$ctx.removeClass("is-open")},startAutoOpenTimer(){const timeTillOpen=1e3*this.autoOpenTimer;setTimeout(()=>{this.dontAutomateFlyin||(this.showLayer(),this.autoCloseTimer&&this.startAutoCloseTimer())},timeTillOpen)},startAutoCloseTimer(){this.layerContent.on("mouseover mouseenter",()=>{this.mouseEnteredLayer=!0,this.mouseLeftLayer=!1}),this.layerContent.on("mouseleave",()=>{this.dontAutomateFlyin||(this.mouseLeftLayer=!0,this.autoCloseTimerFinished&&(this.hideLayer(),this.handleInteractionOrAnimationCompleted()))});const timeTillClose=1e3*this.autoCloseTimer;setTimeout(()=>{this.dontAutomateFlyin||(this.autoCloseTimerFinished=!0,this.mouseEnteredLayer&&!this.mouseLeftLayer||(this.hideLayer(),this.handleInteractionOrAnimationCompleted()))},timeTillClose)},handleInteractionOrAnimationCompleted(){this.layerContent.off("mousemove mouseenter mouseover"),this.dontAutomateFlyin=!0,document.cookie=`${this.cookieName}=set;secure;samesite=strict`},getDontAutomateFlyin(){return!!document.cookie.split("; ").find(row=>row.startsWith(`${this.cookieName}=`))}})}(jQuery),function($){T.Module.Footnotes=T.createModule({start(resolve){return this.isSynced=!1,this.$ctx=$(this._ctx),this.$footnoteItem=this.$ctx.find(".js-footnote-item"),this.$moreFootnoteButton=this.$ctx.find(".js-show-more-footnote"),this.$lessFootnoteButton=this.$ctx.find(".js-show-less-footnote"),this._events.on("scrollToSection:footnotes",()=>this.scrollToFootnotesSection()),this.$moreFootnoteButton.on("click",()=>this.showMoreFootnote()),this.$lessFootnoteButton.on("click",()=>this.showLessFootnote()),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.displayShowMoreButton())},displayShowMoreButton(){this.$footnoteItem.length>2&&this.$moreFootnoteButton.removeClass("hidden")},scrollToFootnotesSection(){const stickyTab=document.getElementsByClassName("tabs-slider");stickyTab.length>0?T.Utils.scrollToTop($(this.$ctx).offset().top-Math.max(3*stickyTab[0].offsetHeight,150)):T.Utils.scrollToTop($(this.$ctx).offset().top-100),T.Utils.getLayout().trackValues("Footnote Superscript clicked",{})},showMoreFootnote(){$(this.$footnoteItem[1]).nextAll().removeClass("footenote-hide hide-text"),this.$moreFootnoteButton.addClass("hidden"),this.$lessFootnoteButton.removeClass("hidden")},showLessFootnote(){$(this.$footnoteItem[2]).nextAll().addClass("footenote-hide"),$(this.$footnoteItem[2]).addClass("hide-text"),this.$moreFootnoteButton.removeClass("hidden"),this.$lessFootnoteButton.addClass("hidden")}})}(jQuery),function($){T.Module.FootnotesRebrush=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.isSynced=!1,this.$headerMenu=$(".js-
7header-rebrush"),this.$footnotesList=this.$ctx.find(".footnotes-list"),this.$showMoreBtn=this.$ctx.find(".showmore-button"),this.$showLessBtn=this.$ctx.find(".showless-button"),this.currentSequenceNumber=1,this.currentFootnotes=[],this.footnoteInformation=[],this.$showMoreBtn.on("click",()=>this.expandFootnotes()),this.$showLessBtn.on("click",()=>this.collapseFootnotes()),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||($(document).on("footnotes:initreplacement",()=>{this.initFootnoteReplacement()}),this.initFootnoteReplacement(),this.isSynced=!0)},initFootnoteReplacement(){this.footnoteInformation=this.getHiddenFootnoteInformation();const $newFootnotesOnPage=this.getNewFootnotesOnPage();this.replaceFootnotesPlaceholder($newFootnotesOnPage),this.setupFootnoteTracking($newFootnotesOnPage),$newFootnotesOnPage.attr("init-done",!0),this.setFilterLabelTitle(),this.renderShowMoreBtn()},getHiddenFootnoteInformation(){const footnoteInformation=[];return $(".js-hidden-footnotes-info-container").each((index,container)=>{for(footnote of container.querySelectorAll(".footnote")){const newFootnoteInfo={id:footnote.querySelector(".id").textContent,text:footnote.querySelector(".text").textContent};footnoteInformation.includes(newFootnoteInfo)||footnoteInformation.push(newFootnoteInfo)}}),footnoteInformation},replaceFootnotesPlaceholder($newFootnotesOnPage){$newFootnotesOnPage.each((index,element)=>{const footnotePlaceholderMatch=element.textContent.match(/.*Footnote-(\d+).*/),footnoteId=footnotePlaceholderMatch?footnotePlaceholderMatch[1]:void 0,sequenceNumber=this.getSequenceNumber(footnoteId);element.innerText=sequenceNumber})},getSequenceNumber(footnoteId){const existingFootnote=this.currentFootnotes.find(footnote=>footnote.id===footnoteId);return existingFootnote?existingFootnote.sequenceNumber:(this.addFootnote(footnoteId),this.currentSequenceNumber++)},addFootnote(footnoteId){this.appendFootnoteDesc(footnoteId),this.currentFootnotes.push({id:footnoteId,sequenceNumber:this.currentSequenceNumber})},appendFootnoteDesc(footnoteId){const footnoteInformation=this.footnoteInformation.find(footnote=>footnote.id===footnoteId)||{text:""};""==footnoteInformation.text&&console.error(`No matching footnote information for footnote ${footnoteId} could be found in the document`),this.$footnotesList.append(`\n\t\t\t\t<li>\n\t\t\t\t\t<sup>${this.currentSequenceNumber}</sup>\n\t\t\t\t\t<span>${footnoteInformation.text}</span>\n\t\t\t\t</li>`)},setupFootnoteTracking($newFootnotesOnPage){for(let i=0;i<$newFootnotesOnPage.length;i++)$($newFootnotesOnPage[i].parentElement).hasClass("filterlist-heading")?$($newFootnotesOnPage[i]).removeAttr("style"):$($newFootnotesOnPage[i]).on("click",()=>{this.handleFootnoteClick()})},handleFootnoteClick(){if(this.$headerMenu.length){const headerHeight=this.$headerMenu.outerHeight();this.$ctx.css("scroll-margin-top",`${headerHeight}px`)}T.Utils.getLayout().trackValues("Footnote Superscript clicked",{}),this.expandFootnotes(),this._ctx.scrollIntoView()},renderShowMoreBtn(){this.currentSequenceNumber>4&&(this.$showMoreBtn.removeClass("hidden"),this.$showLessBtn.removeClass("hidden"),this.$footnotesList.addClass("cut-third-item-height"))},expandFootnotes(){this.$ctx.addClass("expanded")},collapseFootnotes(){this.$ctx.removeClass("expanded")},setFilterLabelTitle(){var thisModule=this;$(".js-filterlist-heading").find(".js-footnote-reference-number").each(function(){const filterLabel=$(this).parent().clone().children().remove().end().text().trim(),footnoteNumber=$(this).text().trim(),filterLabelTitle=thisModule.numberToUnicodeSuperscript(footnoteNumber)+" "+filterLabel;$(this).parent().attr("title",filterLabelTitle)})},numberToUnicodeSuperscript(numberString){let result="";return numberString.toString().trim().split("").forEach(digit=>{switch(parseInt(digit)){case 0:result+="â°";break;case 1:result+="¹";break;case 2:result+="²";break;case 3:result+="³";break;case 4:result+="â´";break;case 5:result+="âµ";break;case 6:result+="â¶";break;case 7:result+="â·";break;case 8:result+="â¸";break;case 9:result+="â¹"}}),result},getNewFootnotesOnPage:()=>$(".js-footnote-reference-number").not("[init-done=true]")})}(jQuery),function($){T.Module.Form=T.createModule({start(resolve){this.$ctx=$(this._ctx);const mod=this;T.Utils.allSynced=!1,this.isSynced=!1,this.areLoaded=!1,this.select={error:".has-error, .is-invalid, .has-confirm-error, .has-ajax-error:not(.ignore-ajax-error)",linkSubmit:".js-trigger-linksubmit",buttonSubmit:'button[type="submit"],input[type="submit"]'},this.elm={$form:"FORM"===mod.$ctx.get(0).tagName?mod.$ctx:mod.$ctx.closest("form"),$selectAutocompleteOnload:mod.$ctx.find(".js-autocomplete-onload"),$selectPreselectOnload:mod.$ctx.find(".js-preselect-onload"),$formActions:mod.$ctx.find(".js-formaction-toggle"),$formActionsInverse:mod.$ctx.find(".js-formaction-toggle-inverse"),$formSectionInvertReadonly:mod.$ctx.find('[data-invert="readonly"]'),$formLinkSubmit:mod.$ctx.find(".js-trigger-linksubmit"),$tokenInput:mod.$ctx.find(".js-recaptcha-response")},this.state={hasInvertReadonly:"readonly"===mod.$ctx.data("invert")},this.stateClass={focused:"had-focus",notSelected:"is-not-selected"},this.autocomplete={suggestData:[],$suggestLayers:mod.$(".js-suggest-layer"),$replaceLayers:mod.$(".js-replace-layer")},this.submitLoaderConfig=mod.$ctx.data("submitLoader"),this.autosubmit=mod.$ctx.data("autosubmit")||!1,this.autosubmitDelay=mod.$ctx.data("autosubmit-delay")||5e3,this.preventDoubleSubmit=mod.$ctx.data("prevent-double-submit")||!1,this.disableSubmitButton=mod.$ctx.data("disable-submit-button")||!1,this.validatedAjaxRequest=mod.$ctx.data("validatedFormAjax")||!1,this.sync=$.proxy(this.sync,this),this.onClickSuggestLayer=$.proxy(this.onClickSuggestLayer,this),this.onHideSuggestLayers=$.proxy(this.onHideSuggestLayers,this),this.onStoreAutocompleteData=$.proxy(this.onStoreAutocompleteData,this),this.onSubmitForm=$.proxy(this.onSubmitForm,this),this.onSubmitLink=$.proxy(this.onSubmitLink,this),this.onToggleSuggestLayer=$.proxy(this.onToggleSuggestLayer,this),this.onTriggerAAFReplace=$.proxy(this.onTriggerAAFReplace,this),this.onToggleFormActions=$.proxy(this.onToggleFormActions,this),this.onToggleReplaceLayer=$.proxy(this.onToggleReplaceLayer,this),this.disableSubmit=$.proxy(this.disableSubmit,this),this.enableSubmit=$.proxy(this.enableSubmit,this),this.getErrorBox=$.proxy(this.getErrorBox,this),this.scrollToError=$.proxy(this.scrollToError,this),this.setToReadOnlyForAAF3=$.proxy(this.setToReadOnlyForAAF3,this),this.onAllImagesLoaded=$.proxy(this.onAllImagesLoaded,this),this.autocomplete.$suggestLayers.on("mousedown.autocomplete",this.onClickSuggestLayer),this._events.on("t.sync",this.sync),this._events.on("form:toggleSuggestlayer",this.onToggleSuggestLayer),this._events.on("form:hideSuggestlayers",this.onHideSuggestLayers),this._events.on("form:storeAutocompleteData",this.onStoreAutocompleteData),this._events.on("form:tr
7iggerAAFReplace",this.onTriggerAAFReplace),this._events.on("form:toggleReplacelayer",this.onToggleReplaceLayer),this._events.on("form:disableSubmit",this.disableSubmit),this._events.on("form:enableSubmit",this.enableSubmit),this._events.on("form:toggleFormActions",this.onToggleFormActions),this._events.on("images:allImagesInViewPortAreLoaded",this.onAllImagesLoaded),this.elm.$form.length>0&&this.elm.$form[0].addEventListener("invalid",ev=>this.onInvalidHandler(ev),!0),this.$ctx.on("click",this.select.linkSubmit,this.onSubmitLink),this.elm.$form.on("submit",this.onSubmitForm),this.elm.$form.on("keydown",ev=>this.onFormKeyDown(ev)),this.autosubmit&&setTimeout(()=>mod.$ctx.submit(),mod.autosubmitDelay),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.scrollToError(),this.setupEditable(),this.setupAAFSelect(),this.setToReadOnlyForAAF3(),T.Utils.allSynced=!0)},setToReadOnlyForAAF3(){let $readonlyFields=this.$ctx.find("[data-autocomplete=readonly]");for(let i=0;i<$readonlyFields.length;i++)$($readonlyFields[i]).val()&&$($readonlyFields[i]).attr("readonly",!0)},onAllImagesLoaded(){if(!this.areLoaded)return this.scrollToError(),this.areLoaded=!0},disableSubmit(data){const formSelector=`[data-t-id="${data.id}"]`;if(this.$ctx.find(formSelector).addBack(formSelector).length>0)return this.$ctx.find('[type="submit"]').attr("disabled","disabled"),this.$ctx.on("submit.disableForm",function(ev){return ev.preventDefault(),!1})},enableSubmit(data){const formSelector=`[data-t-id="${data.id}"]`;this.$ctx.find(formSelector).addBack(formSelector).length>0&&(this.$ctx.find('[type="submit"]').attr("disabled",!1),this.$ctx.off("submit.disableForm"))},hasError(){return this.getErrorBox().length>0},getErrorBox(ctx){return $(this.select.error,ctx||this.$ctx).add(".js-errorbox",ctx||this.$ctx).filter(":visible")},scrollToError(){const $errorboxes=this.getErrorBox(),$error=$errorboxes.filter(":not(.is-scrollto-disabled)");$error.length&&($errorboxes.toggleClass("is-scrollto-disabled",!0),$error.eq(0).parents(".m-layer").length>0?T.Utils.scrollToTop($error.eq(0).offset().top-200,null,$error.eq(0).parents(".m-layer")):T.Utils.scrollToTop($error.eq(0).offset().top-200))},setupAAFSelect(){this.elm.$selectAutocompleteOnload.val()&&setTimeout(()=>this.elm.$selectAutocompleteOnload.is("select")?this.elm.$selectAutocompleteOnload.trigger("change"):this.elm.$selectAutocompleteOnload.trigger("autocomplete.onload"),10),this.elm.$selectPreselectOnload.length>0&&this._events.emit("forminput:preselect",{targetTId:mod.$ctx.data("t-id")})},setupEditable(){this.state.hasInvertReadonly&&this.setupReadonlyEditable(),this.elm.$formSectionInvertReadonly.length&&this.setupReadonlyEditable(this.elm.$formSectionInvertReadonly),this.setupInvertReadonly()},setupInvertReadonly(){$(".js-trigger-edit",this.$ctx).on("click",ev=>this.onClickButtonEdit(ev))},checkSubmitWasDoubleClicked(data){if(!data||data.dblClickCheck){if(void 0===this.lastSubmitClicked&&(this.lastSubmitClicked=0),$.now()-this.lastSubmitClicked<1e4)return!0;this.lastSubmitClicked=$.now()}return!1},isErrorShown(scope,ev){if($(scope).find(this.select.error).not(".ignore-error").length){ev&&ev.preventDefault();const $mainformerror=this.getErrorBox(scope);return $mainformerror.not(".is-scrollto-disabled").length||$mainformerror.eq(0).removeClass("is-scrollto-disabled"),this.scrollToError(),!0}return!1},setupReadonlyEditable($sections){$sections=$sections||this.$ctx;const $editable=$(":input:not([readonly], :hidden, .readonly, :button)",$sections);$editable.each(function(){const $e=$(this);$e.addClass("js-make-editable"),$e.is("select")?(T.Utils.createHiddenElementForReadonly($e,".select-wrap"),$e.trigger("edit",{invert:!0})):$e.prop("readonly",!0)}),this._events.emit("form:trigger",{action:"readonly",$form:$sections,editclass:"js-make-editable"}),this._events.emit("select:updateInactiveWithoutValue",!0),$editable.trigger("preventSelectingReadonlyFields",[!0])},onClickButtonEdit(ev){ev.preventDefault();const $readonly=$(ev.currentTarget).closest(".m-form").find('.js-make-editable:not("[data-autocomplete=readonly]"), .js-AAF-Replace-select-editable');
7this._events.emit("form:trigger",{action:"editable",$form:this.$ctx,editclass:"js-make-editable"}),$readonly.trigger("preventSelectingReadonlyFields",[!1]),$readonly.trigger("edit",{invert:!1}),$(ev.currentTarget).hide(),$(".info-text").removeClass("hidden")},onClickSuggestLayer(){this._events.emit("forminput:triggerAAFSuggest",{address1:this.autocomplete.suggestData[0]})},onHideSuggestLayers(){this.autocomplete.$suggestLayers.toggleClass("hidden",!0)},setErrorClassForInvalidField(field){if($(field).is("select")||$(field).is(":checkbox")||$(field).is(":radio"))if($(field).is(":radio")&&$(field).closest(".js-form-radio-group-wrapper").length>0){$(field).parents(".js-form-radio-group-wrapper").addClass(this.stateClass.focused).addClass(this.stateClass.notSelected)}else{$(field).closest('[data-t-name="FormInput"]').addClass(this.stateClass.focused).addClass(this.stateClass.notSelected)}else this.checkValidityState(field)},checkValidityState(field){field.validity.valid||(T.Utils.setInvalidStateClasses(field),$(field).is(":visible")||this.informInvalidButInvisibleFieldWasFound(field))},informInvalidButInvisibleFieldWasFound(field){$(field).trigger("invisiblefield.form",[field])},scrollToInvalidField($field){$field.is(":input")?($field[0].scrollIntoView(!0),$field[0].focus({preventScroll:!0})):$field.length>0&&($field.find(":input")[0].scrollIntoView(!0),$field.find(":input")[0].focus({preventScroll:!0}))},showSubmitLoader(){const triggerLoader=()=>{this.submitLoaderConfig.useLayer?this._events.emit("showLayer",{$trigger:this.elm.$form}):this._events.emit("loader:open",{loaderType:"layer",loaderTextConfig:this.submitLoaderConfig.loaderTextConfig,loaderClass:this.submitLoaderConfig.loaderClass,$trigger:this.elm.$form})},delayTimeout=this.submitLoaderConfig.delayInMilliSeconds||0;delayTimeout>0?setTimeout(()=>triggerLoader(),delayTimeout):triggerLoader()},onInvalidHandler(ev){ev.preventDefault();const $firstInvalidField=this.elm.$form.find(":invalid").filter(":input").first(),$firstHasErrorField=this.elm.$form.find(".has-error, .has-confirm-error").first(),firstHasErrorFieldExist=$firstHasErrorField.length>0;let errorClassThatNeedsToBeSet="";!!firstHasErrorFieldExist&&$firstInvalidField[0].getBoundingClientRect().top<$firstHasErrorField[0].getBoundingClientRect().top||!firstHasErrorFieldExist?(this.setErrorClassForInvalidField(ev.target),this._events.emit("header:temporarily-turnoff-sticky"),this.scrollToInvalidField($firstInvalidField)):(this.setErrorClassForInvalidField(ev.target),this._events.emit("header:temporarily-turnoff-sticky"),errorClassThatNeedsToBeSet=$firstHasErrorField.hasClass("has-confirm-error")?"has-confirm-error":"has-error",this.scrollToInvalidField($firstHasErrorField),$firstHasErrorField.addClass(errorClassThatNeedsToBeSet))},onStoreAutocompleteData(data){if(!data||!data.suggestData)return;const returnReduced=[];for(let adrObj of Array.from(data.suggestData)){const cleanedObj={};if(adrObj){for(let key of Object.keys(adrObj)){const value=adrObj[key];(value&&value.length>0||"object"==typeof value)&&(cleanedObj[key]=value)}returnReduced.push(cleanedObj)}}this.autocomplete.suggestData=returnReduced},onSubmitForm(ev,data){if(this.resetRecaptchaError(),this.isErrorShown(ev.currentTarget,ev)){const $fields=$(ev.currentTarget).find(this.select.error).not(".ignore-error");if($fields.length>0){const firstErrorField=$fields.get(0);$(firstErrorField).is(":visible")||this.informInvalidButInvisibleFieldWasFound(firstErrorField)}return!1}if(this.disableSubmitButton&&this.elm.$form.find('[type="submit"]').attr("disabled","disabled"),this.validatedAjaxRequest)return T.Utils.onAjaxControllerTriggered(ev),!1;let allowSubmit=!(this.preventDoubleSubmit&&this.checkSubmitWasDoubleClicked(data));return allowSubmit&&this.submitLoaderConfig&&this.showSubmitLoader(),this.checkAllowSubmit(allowSubmit,ev)},checkAllowSubmit:(allowSubmit,ev)=>allowSubmit,onSubmitLink(ev){this.resetRecaptchaError(),this.$ctx.find("input:invalid").trigger("setCustomError",!0);let allowSubmit=!this.isErrorShown(this.$ctx);return allowSubmit&&this.submitLoaderConfig&&this.showSubmitLoader(),this.checkAllowSubmit(allowSubmit,ev)},resetRecaptchaError(){this.elm.$tokenInput&&this.elm.$tokenInput.length>0&&this.elm.$tokenInput.removeClass("has-error")},onToggleFormActions(hideActions){this.elm.$formActions.length>0&&this.elm.$formActions.toggleClass("hidden",hideActions),this.elm.$formActionsInverse.length>0&&this.elm.$formActionsInverse.toggleClass("hidden",!hideActions)},onToggleReplaceLayer(data){const $elmToShow=data.show,$elmToHide=data.hide,{cssClass:cssClass}=data;$elmToShow.removeClass(cssClass),$elmToShow.attr("disabled",!1),$elmToHide.addClass(cssClass),$elmToHide.attr("disabled",!0),$elmToHide.hasClass("has-error")&&$elmToHide.trigger("setInputError")},onToggleSuggestLayer(data){if(this.onHideSuggestLayers(),!data)return;const targetId=data.id,blnShow=data.show,$targetLayer=this.autocomplete.$suggestLayers.filter(`[data-aaf-suggest-container=${targetId}]`);$targetLayer&&$targetLayer.toggleClass("hidden",!blnShow)},onTriggerAAFReplace(data){let ajaxIDArray=[];try{ajaxIDArray=JSON.parse(this.$ctx.attr("data-ajax-id"))}catch(e){console.info(e)}const uniqueAjaxArray=ajaxIDArray.filter(function(item,pos){return ajaxIDArray.indexOf(item)===pos});if($.isArray(uniqueAjaxArray)){if(!Array.from(uniqueAjaxArray).includes(data.ajaxId))return}else if(data.ajaxId!==uniqueAjaxArray)return;const $targetLayer=data.$scope.find(`[data-replace-container=${data.ajaxId}]`);if(!data)return;const $selectWrapper=$targetLayer.find("[data-replace]"),$select=$selectWrapper.find("select"),nameAttr=$select.attr("name"),$input
7=$selectWrapper.parents(".form-row").find(`input[name="${nameAttr}"]`),$inputValueIfPreselected=$input.val(),$form=$selectWrapper.closest(".m-form"),name=$select.data("objName"),$replace=data.$scope.find('[data-autocomplete="replace"]');name===data.id&&($select.find("option:not(:first)").remove(),$select.select2({data:data.options}),$inputValueIfPreselected?($select.val($inputValueIfPreselected).trigger("change"),$form.data("invert")&&$input.is("[readonly]")&&(T.Utils.createHiddenElementForReadonly($select,".select-wrap"),$select.addClass("js-AAF-Replace-select-editable"))):$select.val("").trigger("change"),data.options&&this._events.emit("form:toggleReplacelayer",{show:$targetLayer,hide:$replace,cssClass:"hidden"}))},onFormKeyDown(ev){const preventFormSubmit=$(ev.target).data("prevent-form-submit");if("ENTER"===(ev.key||"").toUpperCase()&&preventFormSubmit)return ev.preventDefault(),!1}})}(jQuery),function($){T.Module.FormInput=T.createModule({start(resolve){if(this.$ctx=$(this._ctx),this.isSynced=!1,this.$form=this.$ctx.closest('[data-t-name="Form"]'),this.elm={$input:this.$ctx,$inputField:this.$("input"),$textArea:this.$("textarea"),$confirmfield:this.$ctx.filter("[data-confirm-field]"),$errorWrapper:this.$ctx.nextAll(".js-error-wrapper")},this.group=this.$ctx.data("groupName"),this.radioGroup=this.$ctx.data("radioGroup"),this.elm.$inputGroup=$(`[data-group-name="${this.group}"]`),this.isCheckbox=Boolean(this.elm.$inputField.filter("[type=checkbox]").length),this.isRadio=Boolean(this.elm.$inputField.filter("[type=radio]").length),this.isSelect=Boolean(this.$ctx.find("select").length),this.isAutocompleteTrigger=Boolean(this.$ctx.filter("[data-autocomplete]").length),this.dataAttributes={minLength:this.$ctx.data("minlength"),liveValidation:this.$ctx.data("livevalidation")},this.state={hasGroup:Boolean(this.group)},this.stateclass={error:"has-error",noerror:"has-no-error",focused:"had-focus",empty:"is-empty",notSelected:"is-not-selected",invalid:"is-invalid",noConfirm:"has-confirm-error",ajaxError:"has-ajax-error",minLengthError:"has-min-length-error",needMinLength:"need-min-length",ignoreError:"ignore-error",showAsWarning:"is-warning",badInput:"is-bad-input"},this.matchedItems=[],this.searchTermCurrent="",this.counter=0,this.keyCounter=0,this.constraintRequest=$.proxy(this,"constraintRequest"),this.evaluateConstraintResponse=$.proxy(this,"evaluateConstraintResponse"),this.getSelectionOfArray=$.proxy(this,"getSelectionOfArray"),this.getTypeConstraintSelection=$.proxy(this,"getTypeConstraintSelection"),this.groupObjectArrayByKeys=$.proxy(this,"groupObjectArrayByKeys"),this.staffsalesCheckRegistration=$.proxy(this,"staffsalesCheckRegistration"),this.onChangeAutocompleteInitiatorCityfetch=$.proxy(this,"onChangeAutocompleteInitiatorCityfetch"),this.onFocusoutConfirm=$.proxy(this,"onFocusoutConfirm"),this.onFocusoutInput=$.proxy(this,"onFocusoutInput"),this.onFocusInput=$.proxy(this,"onFocusInput"),this.onFocusRadio=$.proxy(this,"onFocusRadio"),this.onHandleCustomError=$.proxy(this,"onHandleCustomError"),this.setCustomErrorMessage=$.proxy(this,"setCustomErrorMessage"),this.onKeyupOrChangeInput=$.proxy(this,"onKeyupOrChangeInput"),this.onPreselect=$.proxy(this,"onPreselect"),this.onPreventSelectingReadonlyFields=$.proxy(this,"onPreventSelectingReadonlyFields"),this.onSetCustomError=$.proxy(this,"onSetCustomError"),this.onSetIsEmptyError=$.proxy(this,"onSetIsEmptyError"),this.onTriggerAAFDouble=$.proxy(this,"onTriggerAAFDouble"),this.onTriggerAAFMultiselect=$.proxy(this,"onTriggerAAFMultiselect"),this.onTriggerAAFPreselect=$.proxy(this,"onTriggerAAFPreselect"),this.onTriggerAAFSelect=$.proxy(this,"onTriggerAAFSelect"),this.onTriggerAAFRegistration=$.proxy(this,"onTriggerAAFRegistration"),this.onTriggerAAFSingle=$.proxy(this,"onTriggerAAFSingle"),this.onTriggerAAFSuggest=$.proxy(this,"onTriggerAAFSuggest"),this.preventSelectingReadonlyFields=$.proxy(this,"preventSelectingReadonlyFields"),this.setupAutocompleteFeatures=$.proxy(this,"setupAutocompleteFeatures"),this.wrapInParagraphs=$.proxy(this,"wrapInParagraphs"),this.replaceTheSelectOptionsAndSelectValue=$.proxy(this,"replaceTheSelectOptionsAndSelectValue"),this._events.on("forminput:triggerAAFDouble",this.onTriggerAAFDouble),this._events.on("forminput:triggerAAFMultiselect",this.onTriggerAAFMultiselect),this._events.on("forminput:triggerAAFPreselect",this.onTriggerAAFPreselect),this._events.on("forminput:triggerAAFRegistration",this.onTriggerAAFRegistration),this._events.on("forminput:triggerAAFSingle",this.onTriggerAAFSingle),this._events.on("forminput:triggerAAFSuggest",this.onTriggerAAFSuggest),this._events.on("forminput:preselect",this.onPreselect),this._events.on("t.sync",()=>this.sync()),$(document).on("select2:open",function(e){window.setTimeout(function(){document.querySelector("span.select2-dropdown input.select2-search__field").focus()},0)}),this.elm.$inputField.is("[readonly]")&&this.preventSelectingReadonlyFields(!0),this.elm.$input.hasClass(this.stateclass.error)||(this.$ctx.find(`.${this.stateclass.error}`).length>0&&this.toggleStateClass(this.stateclass.error),this.$ctx.find(`.${this.stateclass.ignoreError}`).length>0&&this.toggleStateClass(this.stateclass.ignoreError),this.$ctx.find(`.${this.stateclass.showAsWarning}`).length>0&&this.toggleStateClass(this.stateclass.showAsWarning)),this.elm.$input.on("focus",this.onFocusInput),this.isSelect?this.elm.$input.on("change",(ev,data)=>this.onChangeInput(ev,data)):this.elm.$input.on("focusout",ev=>this.onFocusoutInput(ev)),this.isCheckbox)this.elm.$inputField.on("change",this.onKeyupOrChangeInput);
7else if(this.isRadio){if(this.radioGroup&&0===this.elm.$input.closest(".js-form-radio-group-wrapper").length){this.elm&&this.elm.$input&&this.elm.$input.siblings()&&this.elm.$input.siblings().addBack().not(".form-error-wrapper").wrapAll('<div class="form-radio-group-wrapper js-form-radio-group-wrapper" />');let $radioGroupWrapper=this.elm.$input.closest(".js-form-radio-group-wrapper"),$errorWrapper=$radioGroupWrapper.siblings(".form-error-wrapper").clone();$radioGroupWrapper.append($errorWrapper)}this.elm.$inputField.on("focus",this.onFocusRadio)}else this.elm.$input.on("keyup",this.dataAttributes.liveValidation?T.Utils.debounce(this.onKeyupOrChangeInput,500):this.onKeyupOrChangeInput);this.elm.$input.on("preventSelectingReadonlyFields",this.onPreventSelectingReadonlyFields),this.elm.$input.on("setCustomError",this.onSetCustomError),this.elm.$input.on("setIsEmptyError",this.onSetIsEmptyError),this.elm.$input.filter('[data-autocomplete="region"]').on("change",this.onChangeAutocompleteInitiatorCityfetch),this.elm.$input.filter('[data-autocomplete="cityfetch"]').find("select").on("forminput:triggerAAFSelect",this.onTriggerAAFSelect),this.matchPasswId=this.elm.$confirmfield.data("confirm-field");const confirmFieldId=this.elm.$confirmfield.attr("id"),actualField=this.$form.find(`#${this.matchPasswId}`).attr("data-primary-field",confirmFieldId);return this.matchPasswordIs=confirmFieldId,this.matchPasswSelector=this.matchPasswordIs?`#${this.matchPasswordIs}`:`#${this.matchPasswId}`,this.elm.$confirmfield.on("focusout",this.onFocusoutConfirm),actualField.on("focusout",this.onFocusoutConfirm),void 0!==this.dataAttributes.minLength&&this.toggleStateClass(this.stateclass.needMinLength,!0),this.elm.$input.on("setInputError",this.onHandleCustomError),resolve()},sync(){this.isSynced||(this.setupAutocompleteFeatures(),this.setupConstraints(),void 0!==$(this.matchPasswSelector).attr("data-liveValidation")&&this.elm.$confirmfield.on("keyup",T.Utils.debounce(this.onFocusoutConfirm,250)),this.isSynced=!0)},matchCustom2(params,data){let searchTerm;if(this.configFile.showSearchbar){if(searchTerm=params.term,""===$.trim(params.term))return data;if(void 0===data.text)return null;if(0===data.text.toUpperCase().indexOf(searchTerm.toUpperCase())){return $.extend({},data,!0)}return null}if(searchTerm=$.trim(params.term),this.countOptions=this.$select.children("option").length,searchTerm.length>0&&(searchTerm=params.term.charAt(params.term.length-1)),this.searchTermCurrent!==searchTerm&&(this.matchedItems=[],this.counter=0,this.keyCounter=0),0===this.keyCounter&&0===data.text.toUpperCase().indexOf(searchTerm.toUpperCase())&&this.matchedItems.push(data),this.counter++,this.countOptions===this.counter){if(this.matchedItems.length>0){if(searchTerm.length>0){const ID=this.matchedItems[this.keyCounter]._resultId;setTimeout(()=>{const container=this.$ctx.find(".select2-results .select2-results__options")[0];return container.scrollHeight>container.clientHeight&&$(container).scrollTop(document.getElementById(ID).offsetTop),$(document.getElementById(ID)).trigger("mouseenter")},10)}this.counter=0}this.searchTermCurrent===searchTerm&&this.keyCounter++}return this.matchedItems.length===this.keyCounter&&(this.keyCounter=0),this.searchTermCurrent=searchTerm,this.$ctx.find("input.select2-search__field").val(searchTerm),data.disabled=!1,data},setupConstraints(){this.constraint={attrName:this.$ctx.data("constraintAttributeName"),type:{url:this.$ctx.data("typeConstraintUrl"),validationArray:this.$ctx.data("typeConstraints")},attr:{url:this.$ctx.data("attributeConstraintUrl")}},this.isSelect&&(this.constraint.attrName=$("select",this.$ctx).data("constraintAttributeName")),this.state.attrConstraintTrigger=Boolean(this.constraint.attr.url),this.state.typeConstraintTrigger=Boolean(this.constraint.type.url)&&Boolean(this.group)&&Boolean(this.constraint.type.validationArray),this.state.constraintTrigger=this.state.attrConstraintTrigger||this.state.typeConstraintTrigger,this.state.bothConstraintTrigger=this.state.attrConstraintTrigger&&this.state.typeConstraintTrigger,this.state.constraintTrigger&&this.state.typeConstraintTrigger&&this.state.hasGroup&&this.constraint.type.validationArray&&(this.elm.typeConstraintsSelection=this.getTypeConstraintSelection(this.elm.$inputGroup,this.constraint.type.validationArray)),this.isSelect||this.elm.$input.on("triggerconstraint",()=>{if(this.constraint&&this.state.constraintTrigger)return this.triggerConstraints()})},setupAutocompleteFeatures(){let mod=this;return mod.elm.$autocompleteInitiatorValidateonly=mod.$ctx.filter('[data-autocomplete="validationonly"]'),mod.elm.$autocompleteInitiatorAddresslookup=mod.$ctx.filter('[data-autocomplete="double"]'),mod.elm.$autocompleteInitiatorPostalcode2Address=mod.$ctx.filter('[data-autocomplete="single"]'),mod.elm.$autocompleteInitiatorSingleresult=mod.$ctx.filter('[data-autocomplete="suggest"]'),mod.elm.$autocompleteInitiatorTown2District=mod.$ctx.filter("[data-autocomplete-town2district]"),mod.elm.$autocompleteInitiatorDistrict2HiddenZip=mod.$ctx.filter("[data-autocomplete-district2hiddenzip]"),mod.elm.$autocompleteInitiatorZip2City=mod.$ctx.filter('[data-autocomplete="zip2city"]'),mod.elm.$autocompleteInitiatorCity2Zip=mod.$ctx.filter("[data-autocomplete-city2zip]"),mod.elm.$autocompleteInitiatorStaffSalesRegistration=mod.$ctx.filter('[data-autocomplete="registration"]'),mod.elm.$autocompleteInitiatorValidateonly.on("focus input",function(ev){const initiator=ev.currentTarget,inputValue=initiator.value,$parentAjaxContainer=$(initiator).closest(".
7js-ajax-request"),ajaxId=$(initiator).data("ajaxRequestId"),targetId=$(initiator).prop("id");if(inputValue&&inputValue.length>=3&&"undefined"!==$parentAjaxContainer){const request=T.Utils.startAjaxRequest(ajaxId);return!!request&&request[0].always(function(){}).done(function(result){if(null!=result){const showAjaxError=!1===result.valid&&null!=result.error;return mod.toggleStateClass(mod.stateclass.ajaxError,showAjaxError),$parentAjaxContainer.find(`[data-replace-origin=${targetId}]`).text(result.error)}}).fail(function(xhr,ajaxOptions,thrownError){switch(xhr.status){case 500:case 501:return mod.toggleStateClass(mod.stateclass.ajaxError);default:return mod.toggleStateClass(mod.stateclass.ajaxError,!1)}})}return mod.toggleStateClass(mod.stateclass.ajaxError,!1)}),"readonly"===this.$ctx.data("autocomplete")&&this.$ctx.attr("readonly",!0),mod.elm.$autocompleteInitiatorAddresslookup.on("input focus",function(ev){const initiator=ev.currentTarget,inputValue=initiator.value,$parentAjaxContainer=$(initiator).closest(".js-ajax-request"),ajaxId=$(initiator).data("ajaxRequestId"),$form=$(initiator).closest(".m-form"),$readonly=$form.find('[data-autocomplete="readonly"]'),targetId=$(initiator).prop("id");if(inputValue&&inputValue.length>0&&"undefined"!==$parentAjaxContainer){const dependantId=$(initiator).data("needs"),$dependant=$parentAjaxContainer.find(`#${dependantId}`);if(!$dependant.val())return;const request=T.Utils.startAjaxRequest(ajaxId);return!!request&&request[0].always(function(){}).done(function(result){const dependantMod=mod._sandbox.getModuleById($dependant.data("t-id"));if(null==result)return $readonly.prop("readonly",!1),mod.toggleStateClass(mod.stateclass.ajaxError,!1),dependantMod.toggleStateClass(mod.stateclass.ajaxError,!1);if(!result.valid){$readonly.prop("readonly",!(null!=result.validationIsAvailable&&!result.validationIsAvailable)),mod._events.emit("forminput:triggerAAFDouble",{$scope:$form});const showAjaxError=!1===result.valid&&null!=result.error;return mod.toggleStateClass(mod.stateclass.ajaxError,showAjaxError),dependantMod.toggleStateClass(mod.stateclass.ajaxError,showAjaxError),""!==targetId&&$parentAjaxContainer.find(`[data-replace-origin=${targetId}]`).text(result.error).toggleClass("hidden",!1),$parentAjaxContainer.find(`[data-replace-origin=${dependantId}]`).text(result.error).toggleClass("hidden",!0)}if(null!=result.addresses){const adr=result.addresses[0];for(let key of Object.keys(adr||{})){const value=adr[key];null!=value&&value.length>0&&mod._events.emit("forminput:triggerAAFDouble",{id:key,val:value,$scope:$form})}return $readonly.prop("readonly",!0),mod.toggleStateClass(mod.stateclass.ajaxError,!1),dependantMod.toggleStateClass(mod.stateclass.ajaxError,!1)}}).fail((xhr,ajaxOptions,thrownError)=>{$readonly.prop("readonly",!1),console.error(xhr)})}mod.toggleStateClass(mod.stateclass.ajaxError,!1)}),mod.elm.$autocompleteInitiatorPostalcode2Address.on("input",T.Utils.debounce(function(ev){const initiator=ev.currentTarget,inputValue=initiator.value,$parentAjaxContainer=$(initiator).closest(".js-ajax-request"),$form=$(initiator).closest(".m-form"),ajaxId=$(initiator).data("ajaxRequestId");if(inputValue&&inputValue.length>=3&&"undefined"!==$parentAjaxContainer){const request=T.Utils.startAjaxRequest(ajaxId);return!!request&&request[0].always(function(){}).done(function(result){if(null!=result&&null!=result.addresses){const lastIndex=result.addresses.length-1,adr=result.addresses[lastIndex];return(()=>{const result1=[];for(let key of Object.keys(adr||{})){const value=adr[key];null!=value&&value.length>0?result1.push(mod._events.emit("forminput:triggerAAFSingle",{id:key,val:value,$scope:$form})):result1.push(void 0)}return result1})()}}).fail((xhr,ajaxOptions,thrownError)=>console.error(xhr))}return mod.toggleStateClass(mod.stateclass.ajaxError,!1)},1e3)),mod.elm.$autocompleteInitiatorStaffSalesRegistration.each((index,element)=>{mod=this;const $select=$(element).find("select"),$radio=$(element).find("[type=radio]");return $select.length>0||$radio.length>0?$(element).on("change",mod.staffsalesCheckRegistration):$(element).on("focusout autocomplete.onload",mod.staffsalesCheckRegistration)}),mod.elm.$autocompleteInitiatorSingleresult.on("focus input",function(ev){const initiator=ev.currentTarget,inputValue=initiator.value,$parentAjaxContainer=$(initiator).closest(".
7js-ajax-request"),ajaxId=$(initiator).data("ajaxRequestId"),targetId=$(initiator).prop("id"),$suggestLayer=$parentAjaxContainer.find(`[data-aaf-suggest-container=${targetId}]`);if(inputValue&&inputValue.length>0&&"undefined"!==$parentAjaxContainer){const request=T.Utils.startAjaxRequest(ajaxId);return!!request&&request[0].always(function(){}).done(function(result){if(null!=result){if(result.valid){mod._events.emit("form:storeAutocompleteData",{suggestData:result.addresses});const suggestResult=$parentAjaxContainer.find(`[data-replace-container=${ajaxId}]`).html();return $suggestLayer.html(suggestResult),mod._events.emit("form:toggleSuggestlayer",{id:targetId,show:!0})}{const reselectTarget=$(initiator).data("autocomplete-reselect");if(null!=reselectTarget)return $("form").find(`#${reselectTarget}`).val("").trigger("change")}}}).fail((xhr,ajaxOptions,thrownError)=>console.error(xhr))}return mod._events.emit("form:toggleSuggestlayer",{id:targetId,show:!1})}),mod.elm.$autocompleteInitiatorTown2District.on("change",function(ev,data){if(null!=data&&data.preventAjaxRequestByChange){if(null!=data.hidden){$("form").find(`#${data.hidden.hiddenRegionId}`).val(data.hidden.hiddenRegionValue)}return}const $initiatorSelectWrapper=$(ev.currentTarget),$initiatorSelect=$initiatorSelectWrapper.find("select"),inputValue=$initiatorSelect.val(),targetSelectId=$initiatorSelectWrapper.data("autocomplete-target"),targetHiddenErrorId=$initiatorSelectWrapper.data("autocomplete-hidden-error-id"),preselectedValue=$initiatorSelectWrapper.data("preselected-value"),$parentAjaxContainer=$initiatorSelect.closest(".js-ajax-request"),ajaxId=$initiatorSelectWrapper.data("ajaxRequestId");if(inputValue&&inputValue.length>0&&"undefined"!==$parentAjaxContainer){const request=T.Utils.startAjaxRequest(ajaxId);return!!request&&request[0].always(function(){}).done(function(result){if(null!=result)if(result.valid){const adr=result.addresses.map((item,i)=>item[targetSelectId]);adr.length>0&&(mod._events.emit("forminput:triggerAAFMultiselect",{group:mod.group,id:targetSelectId,options:adr,preselected:preselectedValue}),$initiatorSelectWrapper.data("preselected-value",""))}else mod.resetDropdownCascade({errorCityfetch:!1,errorTown2District:!1,errorDistrict2HiddenZip:{id:targetHiddenErrorId}});else mod.resetDropdownCascade({errorCityfetch:!1,errorTown2District:!1,errorDistrict2HiddenZip:{id:targetHiddenErrorId}});return mod.elm.$input.trigger("triggerconstraint")}).fail((xhr,ajaxOptions,thrownError)=>console.error(xhr))}return mod.resetDropdownCascade({errorCityfetch:!1,errorTown2District:!1,errorDistrict2HiddenZip:{id:targetHiddenErrorId}})}),mod.elm.$autocompleteInitiatorDistrict2HiddenZip.on("change",function(ev,data){let $param;if(null!=data&&data.preventAjaxRequestByChange)return void(null!=data.hidden&&($param=$("form").find(`#${data.hidden.hiddenZipId}`)).val(data.hidden.hiddenZipValue));const $initiatorSelectWrapper=$(ev.currentTarget),$initiatorSelect=$initiatorSelectWrapper.find("select"),inputValue=$initiatorSelect.val(),$parentAjaxContainer=$initiatorSelect.closest(".js-ajax-request"),ajaxId=$initiatorSelectWrapper.data("ajaxRequestId"),targetSelectId=$initiatorSelectWrapper.data("autocomplete-target"),targetHiddenId=$initiatorSelectWrapper.data("autocomplete-hidden-id"),targetHiddenObjname=$initiatorSelectWrapper.data("autocomplete-hidden-objname");let targetValue="";if(null!=targetHiddenId?$param=$("form").find(`#${targetHiddenId}`):console.error("error REGION2TOWN2DISTRICT_AUTOCOMPLETE (CN) last part - missing autocomplete-target, cannot set hidden value"),inputValue&&inputValue.length>0&&"undefined"!==$parentAjaxContainer){const request=T.Utils.startAjaxRequest(ajaxId);return!!request&&request[0].always(function(){}).done(function(result){if(null!=result&&result.valid){const adr=result.addresses.filter(function(item){if(item[targetSelectId]===inputValue||item[targetHiddenObjname]===inputValue)return!0});adr.length>0&&null!=adr[0][targetHiddenObjname]&&(targetValue=adr[0][targetHiddenObjname])}return $param.val(targetValue),mod.elm.$input.trigger("triggerconstraint")}).fail((xhr,ajaxOptions,thrownError)=>console.error(xhr))}$param&&$param.val(targetValue)}),mod.elm.$autocompleteInitiatorZip2City.on("change",function(ev,data){let inputValue;ev.stopPropagation();const initiator=ev.currentTarget,$formScope=$(initiator).closest(".m-form");mod._events.emit("form:disableSubmit",{id:$formScope.data("t-id")}),inputValue=$(initiator).is(".m-forminput-dropdown")?$(initiator).find("select").val():initiator.value;
7const $parentAjaxContainer=$(initiator).closest(".js-ajax-request"),ajaxId=$(initiator).data("ajaxRequestId"),$replace=$formScope.find('[data-autocomplete="replace"]'),$replaceWith=$formScope.find(`[data-replace-container=${ajaxId}]`);if(inputValue&&inputValue.length>=3&&"undefined"!==$parentAjaxContainer){const dependantId=$(initiator).data("needs"),dependantValue=$parentAjaxContainer.find(`#${dependantId}`).val();if(null==dependantValue)return;if(""===dependantValue)return void mod._events.emit("form:toggleReplacelayer",{show:$replace,hide:$replaceWith,cssClass:"hidden"});const request=T.Utils.startAjaxRequest(ajaxId,void 0,void 0,void 0,void 0,$formScope);return!!request&&request[0].always(function(){}).done(function(result){if(null!=result)if(result.valid){if(null!=result.addresses){const targetSelectId=$replace.data("objName"),adr=result.addresses.map((item,i)=>item[targetSelectId]);adr.length>0&&mod._events.emit("form:triggerAAFReplace",{ajaxId:ajaxId,id:targetSelectId,$scope:$formScope,options:adr})}}else mod._events.emit("form:toggleReplacelayer",{show:$replace,hide:$replaceWith,cssClass:"hidden"});mod.elm.$input.trigger("triggerconstraint"),mod._events.emit("form:enableSubmit",{id:$formScope.data("t-id")})}).fail((xhr,ajaxOptions,thrownError)=>{console.error(xhr),mod._events.emit("form:enableSubmit",{id:$formScope.data("t-id")})})}return mod._events.emit("form:toggleReplacelayer",{show:$replace,hide:$replaceWith,cssClass:"hidden"})}),mod.elm.$autocompleteInitiatorCity2Zip.on("change",function(ev,data){let inputValue;if(null!=data&&data.preventAjaxRequestByChange){if(null!=data.visible){$("form").find(`#${data.visible.visibleZipId}`).val(data.visible.visibleZipValue)}return}const $initiatorSelectWrapper=$(ev.currentTarget),$initiatorSelect=$initiatorSelectWrapper.find("select"),cityZipString=$initiatorSelect.attr("data-city-zip"),result=$.grep(JSON.parse(cityZipString),e=>e.id===$initiatorSelect.val());result.length>0&&(inputValue=result[0].postalCode);const targetObjname=$initiatorSelectWrapper.data("autocomplete-city2zip-target");if(null!=targetObjname)return $("form").find(`#${targetObjname}`).val(inputValue)}),mod.elm.$input.on("edit",$.proxy(function(ev,eventData){ev.preventDefault(),ev.stopPropagation();const target=ev.currentTarget,invertReadonly=eventData.invert,$target="INPUT"===target.tagName?$(target):$(target).find(":checkbox, :radio, :hidden:not(option)");if($target.length>0)return mod.makeEditable($target,invertReadonly)},mod))},staffsalesCheckRegistration(ev){const mod=this,initiator=ev.currentTarget,$parentAjaxContainer=$(initiator).closest(".js-ajax-request"),ajaxId=$(initiator).data("ajaxRequestId");if("undefined"!==$parentAjaxContainer){const request=T.Utils.startAjaxRequest(ajaxId);return!!request&&request[0].always(function(){}).done(function(result){if("string"==typeof result)try{result=JSON.parse(result)}catch(e){console.error(e)}if(null!=result&&null!=result.fields)return mod._events.emit("forminput:triggerAAFRegistration",{result:result})}).fail((xhr,ajaxOptions,thrownError)=>console.info(xhr))}return mod.toggleStateClass(mod.stateclass.ajaxError,!1)},constraintRequest(constraintType){let $select,followUp,url,$groupSet=!1;if("type"===(constraintType=constraintType||"attr")){if(!this.elm.typeConstraintsSelection&&(this.elm.typeConstraintsSelection=this.getTypeConstraintSelection(this.elm.$inputGroup,this.constraint.type.validationArray),!this.elm.typeConstraintsSelection.length))return;if(!($groupSet=this.getSelectionOfArray(this.elm.typeConstraintsSelection,":valid")).length)return!1;({url:url}=this.constraint.type),$select=this.elm.$inputGroup}else"attr"===constraintType&&(({url:url}=this.constraint.attr),$select=this.$ctx,this.state.bothConstraintTrigger&&(followUp=this.constraintRequest));const data=T.Utils.getFormDataPairs($select,"data-constraint-attribute-name"),handleResult=this.evaluateConstraintResponse;return T.Utils.startAjaxRequest(!1,{url:url,method:"POST"},data)[0].done(result=>{if(handleResult(result,$groupSet),followUp&&!this.$ctx.hasClass(this.stateclass.error))return followUp("type")}).fail((xhr,ajaxOptions,thrownError)=>console.error(xhr))},evaluateConstraintResponse(response,$groupSet){let $elm;if(void 0!==this.dataAttributes.minLength&&this.toggleStateClass(this.stateclass.minLengthError,!1),response.constraintViolations.length&&this.constraint){const violationArray=this.groupObjectArrayByKeys(response.constraintViolations,"property","message");let message="";if($groupSet&&$groupSet.length)for(let elm of Array.from($groupSet)){const $nested=($elm=$(elm)).find("input, select"),$input
7=$nested.length?$nested:$elm;$elm.trigger("setInputError",this.wrapInParagraphs(violationArray[$input.data("constraintAttributeName")]))}else message=this.wrapInParagraphs(violationArray[this.constraint.attrName]),this.$ctx.trigger("setInputError",message);return violationArray}return $elm=$groupSet||this.$ctx,this.dataAttributes.liveValidation&&(this.toggleStateClass(this.stateclass.noerror,!0),this.toggleStateClass(this.stateclass.error,!1)),$elm.trigger("setInputError"),!1},getSelectionOfArray(typeConstraintsSelection,selector){if(typeConstraintsSelection.constructor!==Array||!typeConstraintsSelection.length)return!1;let $selection=$();for(let $constraint of Array.from(typeConstraintsSelection)){const count=$constraint.length;count===($constraint.find("input, select").length?count:$constraint.filter(function(){return $(this).is(selector)}).length)&&($selection=$selection.add($constraint))}return $selection},getTypeConstraintSelection($group,validationArray){const typeConstraintsSelection=[];for(var typeConstraint of Array.from(validationArray)){const $typeConstaint=$group.filter(function(i){const $elmConstraintSet=$($group[i]).data("typeConstraints");if($elmConstraintSet&&Array.from($elmConstraintSet).includes(typeConstraint))return!0});$typeConstaint.length&&typeConstraintsSelection.push($typeConstaint)}return typeConstraintsSelection},groupObjectArrayByKeys(result,prop,togroup){const groupedResult=[];for(let input of Array.from(result)){const key=input[prop],message=input[togroup];groupedResult[key]||(groupedResult[key]=[]),groupedResult[key].push(message)}return groupedResult},toggleStateClass(state,set,ctx){const show=void 0===set||set,$wrapper=void 0===ctx?this.$ctx:ctx,$input=$wrapper.find("input");$wrapper.toggleClass(state,show),$wrapper.is("input")||$input&&$input.hasClass(this.stateclass.error)&&$input.toggleClass(this.stateclass.error,!1)},makeEditable:($elm,blnInvertReadonly)=>$elm.prop("readonly",blnInvertReadonly),setEnabled(enabled){return enabled?this.elm.$input.removeAttr("disabled"):this.elm.$input.attr("disabled","disabled")},onPreventSelectingReadonlyFields(e,blnPrevent){return this.preventSelectingReadonlyFields(blnPrevent)},preventSelectingReadonlyFields(blnPrevent){const mod=this;if(null!=mod.elm.$inputField&&mod.elm.$inputField.length)return blnPrevent?(mod.$(`label[for="${mod.elm.$inputField.attr("id")}"]`).on("click",ev=>ev.preventDefault()),mod.elm.$inputField.attr("tabindex","-1")):(mod.$(`label[for="${mod.elm.$inputField.attr("id")}"]`).off("click"),mod.elm.$inputField.attr("tabindex","0"))},resetDropdownCascade(errorObj){if(errorObj.errorCityfetch&&this.elm.$inputGroup.filter('[data-autocomplete="cityfetch"]').trigger("edit",{invert:!0}),errorObj.errorTown2District&&this.elm.$inputGroup.filter("[data-autocomplete-town2district]").trigger("edit",{invert:!0}),null!=errorObj.errorDistrict2HiddenZip){const targetHiddenErrorId=errorObj.errorDistrict2HiddenZip.id;this.elm.$inputGroup.filter("[data-autocomplete-district2hiddenzip]").trigger("edit",{invert:!0}),$("form").find(`#${targetHiddenErrorId}`).val("")}if(null!=errorObj.errorCity2Zip){const targetCity2ZipResetId=errorObj.errorCity2Zip.id;return $("form").find(`#${targetCity2ZipResetId}`).val("")}},toggleDisabled:($enable,$disable,blnInvertReadonly)=>($enable.is("select")&&$enable.parent().removeClass("inactive-without-value"),$disable.is("select")&&$disable.parent().removeClass("inactive-without-value"),$enable.attr("disabled",blnInvertReadonly),$disable.attr("disabled",!blnInvertReadonly)),triggerConstraints(){const $elm=this.$ctx;if(!this.dataAttributes.liveValidation&&($elm.is(":invalid")||$elm.hasClass(this.stateclass.error)||$elm.hasClass(this.stateclass.noConfirm)||$elm.hasClass(this.stateclass.ajaxError)))return!1;if(this.state.attrConstraintTrigger){if($elm.is("empty"))return!1;this.constraintRequest("attr")}else this.state.typeConstraintTrigger&&this.constraintRequest("type");return!0},wrapInParagraphs(message){let text="";if("[object Array]"===Object.prototype.toString.call(message))for(let parag of Array.from(message))Boolean(parag)&&(text+=`<div><span>${parag}</span></div>`);else Boolean(message)&&(text=`<div><span>${message}</span></div>`);return text},onChangeAutocompleteInitiatorCityfetch(ev,data){const mod=this;if(null!=data&&data.preventAjaxRequestByChange)return;const $initiatorSelectWrapper=$(ev.currentTarget),$initiatorSelect=$initiatorSelectWrapper.find("select"),inputValue=$initiatorSelect.val(),$parentAjaxContainer=$initiatorSelect.closest(".
7js-ajax-request"),ajaxId=$initiatorSelectWrapper.data("ajaxRequestId"),targetSelectId=$initiatorSelectWrapper.data("autocomplete-target"),targetHiddenId=$initiatorSelectWrapper.data("autocomplete-hidden-target"),targetHiddenErrorId=$initiatorSelectWrapper.data("autocomplete-hidden-error-id"),targetOptionName=$initiatorSelectWrapper.data("autocomplete-city2zip-key"),targetCity2ZipResetId=$initiatorSelectWrapper.data("autocomplete-city2zip-reset-target"),preselectedValue=$initiatorSelectWrapper.data("preselected-value");if(inputValue&&inputValue.length>0&&"undefined"!==$parentAjaxContainer){const request=T.Utils.startAjaxRequest(ajaxId);return!!request&&request[0].always(function(){}).done(function(result){if(null==result)return mod.resetDropdownCascade({errorCityfetch:!0,errorTown2District:!0,errorDistrict2HiddenZip:{id:targetHiddenErrorId},errorCity2Zip:{id:targetCity2ZipResetId}});if(!result.valid)return mod.resetDropdownCascade({errorCityfetch:!0,errorTown2District:!0,errorDistrict2HiddenZip:{id:targetHiddenErrorId},errorCity2Zip:{id:targetCity2ZipResetId}});{let adr;if(null!=targetOptionName){let key,value;const returnReduced=[];for(var adrObj of Array.from(result.addresses)){const cleanedObj={};for(key of Object.keys(adrObj||{}))value=adrObj[key],key!==targetSelectId&&key!==targetOptionName||null!=value&&(value.length>0||"object"==typeof value)&&(cleanedObj[key]=value);returnReduced.push(cleanedObj)}const returnRemapped=[];for(adrObj of Array.from(returnReduced)){const remappedObj={};for(key of Object.keys(adrObj||{}))value=adrObj[key],key===targetSelectId?null!=value&&(value.length>0||"object"==typeof value)&&(remappedObj.text=value,remappedObj.id=value):key===targetOptionName&&null!=value&&(value.length>0||"object"==typeof value)&&(remappedObj.postalCode=value),delete returnReduced[key];returnRemapped.push(remappedObj)}adr=returnRemapped}else adr=result.addresses.map(function(item,i){return null!==item[targetSelectId]?item[targetSelectId]:item.city});if(null!=targetHiddenId){$("form").find(`#${targetHiddenId}`).val(inputValue)}if(adr.length>0){const $autocomplete=mod.elm.$inputGroup.find("select").filter(`[data-obj-name="${targetSelectId}"]`);return $autocomplete.attr("data-city-zip",JSON.stringify(adr)),$autocomplete.trigger("forminput:triggerAAFSelect",{options:adr,preselected:preselectedValue}),$initiatorSelectWrapper.data("preselected-value","")}}}).fail((xhr,ajaxOptions,thrownError)=>console.error(xhr))}},onHandleCustomError(ev,errorMessage,append){return this.setCustomErrorMessage(this.elm.$input,errorMessage,append),!0},setCustomErrorMessage($input,errorMessage,append){if(this.toggleStateClass(this.stateclass.error,Boolean(errorMessage),$input),!Boolean(errorMessage))return!0;this.toggleStateClass(this.stateclass.focused,!1);const index=($($input).data("fieldNr")||1)-1;this.elm.$constraintErrorBox||(this.elm.$constraintErrorBox=$($input).parent().find(".js-custom-error-message").eq(index));const $errorbox=this.elm.$constraintErrorBox;if($errorbox&&$errorbox.length)if(append){if(-1!==$errorbox.html().indexOf(errorMessage))return!0;$errorbox.append(errorMessage)}else $errorbox.html(errorMessage);return!0},onFocusInput(ev){$(ev.currentTarget).is(":invalid")||this.toggleStateClass(this.stateclass.focused,!1)},onFocusRadio(ev){setTimeout(()=>{let $radioInput=this.elm.$input.filter(":radio")>0?this.elm.$input:this.$(":radio"),$radioGroupWrapper=this.$ctx.parents(".js-form-radio-group-wrapper"),notChecked=!$radioInput.prop("checked"),isInvalid=!T.Utils.isValid($radioInput);$radioGroupWrapper.length>0?(this.toggleStateClass(this.stateclass.notSelected,isInvalid&¬Checked,$radioGroupWrapper),this.toggleStateClass(this.stateclass.error,!1,$radioGroupWrapper)):(this.toggleStateClass(this.stateclass.notSelected,isInvalid&¬Checked),this.toggleStateClass(this.stateclass.error,!1))},10)},onFocusoutConfirm(ev){const confirmation=ev.currentTarget.value;if(confirmation){let confirmid;confirmid=this.matchPasswSelector===`#${this.$form.find(ev.currentTarget).data("primary-field")}`?this.$form.find(ev.currentTarget).data("primary-field"):this.$form.find(ev.currentTarget).data("c
7onfirm-field");const value=this.$form.find(`#${confirmid}`)?this.$form.find(`#${confirmid}`).val():"";(null!==value&&void 0!==value?value.toLowerCase():void 0)===confirmation.toLowerCase()?this.onSuccessValidation(confirmid,ev.currentTarget):this.onFaliureValidation(confirmid,value,confirmation,ev.currentTarget)}},onSuccessValidation(confirmid,currentTarget){(this.dataAttributes.liveValidation||void 0!==$(this.matchPasswSelector).attr("data-liveValidation"))&&this.toggleStateClass(this.stateclass.noerror,!0),confirmid===this.$form.find(currentTarget).data("primary-field")?this.$form.find(`#${confirmid}`).removeClass(this.stateclass.noConfirm):this.toggleStateClass(this.stateclass.noConfirm,!1)},onFaliureValidation(confirmid,value,confirmation,currentTarget){(this.dataAttributes.liveValidation||void 0!==$(this.matchPasswSelector).attr("data-liveValidation"))&&this.toggleStateClass(this.stateclass.noerror,!1),confirmid===this.$form.find(currentTarget).data("primary-field")&&(null!==value?value.toLowerCase():void 0)!==confirmation.toLowerCase()&&""!==value&&this.$form.find(`#${confirmid}`).addClass(this.stateclass.noConfirm),confirmid===this.$form.find(currentTarget).data("confirm-field")&&(null!==value?value.toLowerCase():void 0)!==confirmation.toLowerCase()&&""!==value&&this.toggleStateClass(this.stateclass.noConfirm,!0)},onFocusoutInput(ev){let isEmpty,isBadInput;const mod=this,$input=mod.elm.$input.is(":input")?mod.elm.$input:mod.$(":input");if(isEmpty=null==$input.val()||!$input.val().length,"number"===$input.attr("type")&&$input[0].validity.badInput?(isBadInput=!0,isEmpty=!1):isBadInput=!1,this.dataAttributes.liveValidation||void 0!==$(this.matchPasswSelector).attr("data-liveValidation")?$input.prop("required")&&(mod.toggleStateClass(mod.stateclass.empty,isEmpty),mod.toggleStateClass(mod.stateclass.focused)):(mod.toggleStateClass(mod.stateclass.focused),mod.toggleStateClass(mod.stateclass.error+" "+mod.stateclass.noerror,!1),mod.elm.$textArea&&mod.elm.$textArea.hasClass(mod.stateclass.error)&&mod.toggleStateClass(mod.stateclass.error,!1,mod.elm.$textArea),mod.toggleStateClass(mod.stateclass.empty,isEmpty),mod.toggleStateClass(mod.stateclass.badInput,isBadInput)),mod._events.emit("form:hideSuggestlayers"),!this.dataAttributes.liveValidation&&!this.isAutocompleteTrigger&&this.constraint&&this.state.constraintTrigger)return this.triggerConstraints()},onChangeInput(ev,data){const $select=this.$ctx.find("select"),$preselectRegionKey=$select.data("preselect-region-key"),$preselectZipKey=$select.data("preselect-city-key");return null!=data&&data.preventAjaxRequestByChange&&($preselectRegionKey||$preselectZipKey)||this.toggleStateClass(this.stateclass.error+" "+this.stateclass.noerror,!1),!0},onKeyupOrChangeInput(ev){const mod=this;if("checkbox"!==ev.target.type&&null!=this.dataAttributes.minLength&&(this.elm.$input.val().length>=this.dataAttributes.minLength?(this.toggleStateClass(mod.stateclass.needMinLength,!1),this.dataAttributes.liveValidation?this.isAutocompleteTrigger||this.constraint&&this.state.constraintTrigger&&this.triggerConstraints():this.toggleStateClass(mod.stateclass.minLengthError,!1)):(this.elm.$input.trigger("setInputError",!1),this.toggleStateClass(mod.stateclass.error+" "+mod.stateclass.noerror,!1),this.toggleStateClass(mod.stateclass.minLengthError+" "+mod.stateclass.needMinLength,!0))),this.dataAttributes&&!this.dataAttributes.liveValidation&&mod.toggleStateClass(mod.stateclass.error+" "+mod.stateclass.noerror,!1),mod.isCheckbox){let $checkboxInput=mod.elm.$input.is(":checkbox")?mod.elm.$input:mod.$(":checkbox");mod.toggleStateClass(mod.stateclass.notSelected,!$checkboxInput.is(":checked")&&$checkboxInput.is(":invalid"),mod.$ctx),mod.elm.$inputField.removeClass(mod.stateclass.error)}else mod.isRadio?mod.toggleStateClass(mod.stateclass.error):mod.toggleStateClass(mod.stateclass.empty,""===ev.currentTarget.value)},onPreselect(data){let key,parsedRequestData,request,value;const mod=this,$input=mod.$ctx;if(!$input.is(".m-forminput-dropdown"))return;const $parentForm=$input.closest(".m-form"),targetTId=`${data.targetTId}`;if($parentForm.attr("data-t-id")!==targetTId)return;const $select=$input.find("select"),$preselectRegionKey=$select.data("preselect-region-key"),$preselectZipKey=$select.data("preselect-city-key");if(!(void 0!==$preselectRegionKey&&null!==$preselectRegionKey&&""!==$preselectRegionKey||void 0!==$preselectZipKey&&null!==$preselectZipKey&&""!==$preselectZipKey))return;const requestId=$select.data("preselect-request"),targetSelectId=$select.data("objName"),targetPreselectCityByKey=$select.data("preselectCityByKey"),targetPreselectHiddenRegion=$select.data("preselectHiddenRegion"),targetPreselectHiddenZip=$select.data("preselectHiddenZip"),targetPreselectDistrict2zipKey=$select.data("preselectDistrict2zipKey"),targetPreselectCity2zipKey=$select.data("preselectCity2zipKey"),targetPreselectCity2zipTarget=$select.data("preselectCity2zipTarget");let requestData=$select.attr("data-preselect-request-data");try{parsedRequestData=JSON.parse(requestData)}catch(error){}if(requestData=parsedRequestData||{}
7,$.isEmptyObject(requestData)){if(!(request=T.Utils.startAjaxRequest(requestId)))return!1}else{let allDataAvailable=!0;for(key in requestData)if(null==(value=requestData[key])||""===value){allDataAvailable=!1;break}if(!allDataAvailable)return!1;if(!(request=T.Utils.startAjaxRequest(requestId,null,requestData)))return!1}return request[0].always(function(){}).done(function(result){if(null!=result&&result.valid){let adr,adrObj,cleanedObj,hiddenDistrictZipValue,visibleZipValue;if(null!=targetPreselectCityByKey){const returnReduced=[];for(adrObj of Array.from(result.addresses)){for(key of(cleanedObj={},Object.keys(adrObj||{})))value=adrObj[key],key!==targetSelectId&&key!==targetPreselectCityByKey||null!=value&&(value.length>0||"object"==typeof value)&&(cleanedObj[key]=value);returnReduced.push(cleanedObj)}const returnRemapped=[];for(adrObj of Array.from(returnReduced)){const remappedObj={};for(key of Object.keys(adrObj||{}))value=adrObj[key],key===targetSelectId?null!=value&&(value.length>0||"object"==typeof value)&&(remappedObj.text=value):key===targetPreselectCityByKey&&null!=value&&(value.length>0||"object"==typeof value)&&(remappedObj.id=value),delete returnReduced[key];returnRemapped.push(remappedObj)}adr=returnRemapped}else adr=null!=targetPreselectCity2zipKey?result.addresses.map((item,i)=>({text:item[targetSelectId],id:item[targetPreselectCity2zipKey]})):result.addresses.map(function(item,i){return null!==item[targetSelectId]?item[targetSelectId]:item.city});if(null!=targetPreselectCity2zipKey){const returnReduced2=[];for(adrObj of Array.from(result.addresses)){for(key of(cleanedObj={},Object.keys(adrObj||{})))value=adrObj[key],key!==targetSelectId&&key!==targetPreselectCity2zipKey||null!=value&&(value.length>0||"object"==typeof value)&&(cleanedObj[key]=value);returnReduced2.push(cleanedObj)}const returnRemapped2=[];for(adrObj of Array.from(returnReduced2)){let remappedObj2={};for(key of Object.keys(adrObj||{}))(value=adrObj[key])===$preselectZipKey&&(remappedObj2=adrObj);$.isEmptyObject(remappedObj2)||returnRemapped2.push(remappedObj2)}for(adrObj of Array.from(returnRemapped2))for(key of Object.keys(adrObj||{}))value=adrObj[key],key===targetPreselectCity2zipKey&&(visibleZipValue=value)}if(null!=targetPreselectDistrict2zipKey){const returnReduced3=[];for(adrObj of Array.from(result.addresses)){for(key of(cleanedObj={},Object.keys(adrObj||{})))value=adrObj[key],key!==targetSelectId&&key!==targetPreselectDistrict2zipKey||null!=value&&(value.length>0||"object"==typeof value)&&(cleanedObj[key]=value);returnReduced3.push(cleanedObj)}const returnRemapped3=[];for(adrObj of Array.from(returnReduced3)){let remappedObj3={};for(key of Object.keys(adrObj||{}))(value=adrObj[key])===$preselectZipKey&&(remappedObj3=adrObj);$.isEmptyObject(remappedObj3)||returnRemapped3.push(remappedObj3)}for(adrObj of Array.from(returnRemapped3))for(key of Object.keys(adrObj||{}))value=adrObj[key],key===targetPreselectDistrict2zipKey&&(hiddenDistrictZipValue=value)}if(adr.length>0){let hiddenRegionId,hiddenZipId;if(null!=targetPreselectHiddenRegion&&(hiddenRegionId=targetPreselectHiddenRegion),null!=targetPreselectHiddenZip&&(hiddenZipId=targetPreselectHiddenZip),null!=targetPreselectHiddenRegion||null!=targetPreselectHiddenZip){let hiddenZipValue;return hiddenZipValue=targetPreselectDistrict2zipKey?hiddenDistrictZipValue:$preselectZipKey,mod._events.emit("forminput:triggerAAFPreselect",{group:mod.group,id:targetSelectId,options:adr,preselected:$preselectZipKey,hidden:{hiddenRegionId:hiddenRegionId,hiddenRegionValue:$preselectRegionKey,hiddenZipId:hiddenZipId,hiddenZipValue:hiddenZipValue}})}return null!=visibleZipValue?mod._events.emit("forminput:triggerAAFPreselect",{group:mod.group,id:targetSelectId,options:adr,preselected:$preselectZipKey,visible:{visibleZipId:targetPreselectCity2zipTarget,visibleZipValue:visibleZipValue}}):mod._events.emit("forminput:triggerAAFPreselect",{group:mod.group,id:targetSelectId,options:adr,preselected:$preselectZipKey})}}}).fail((xhr,ajaxOptions,thrownError)=>console.error(xhr))},onSetCustomError(ev,set){return this.toggleStateClass(this.stateclass.focused,!1),this.toggleStateClass(this.stateclass.ajaxError,!1),this.isCheckbox||this.isRadio||!ev.currentTarget||this.toggleStateClass(this.stateclass.empty,""===ev.currentTarget.value),this.toggleStateClass(this.stateclass.error,set)},onSetIsEmptyError(ev,set){return this.toggleStateClass(this.stateclass.focused+" "+this.stateclass.empty,set)},onTriggerAAFDouble(data){if(null!=data.id){const $input=this.$ctx,name=$input.data("objName");if($input.closest(".m-form").data("tId")===data.$scope.data("tId")&&name===data.id&&($input.val(data.val).addClass("is-aaf-double"),"readonly"===$input.data("autocomplete")))return $input.prop("readonly",!0)}else data.$scope.find(this._ctx)&&data.$scope.find(this._ctx).filter(".is-aaf-double").removeClass("is-aaf-double").val("")}
7,onTriggerAAFMultiselect(data){const mod=this,$input=mod.$ctx,dataAttr=$input.data("autocomplete");if("multifetch"===dataAttr&&null!=data&&null!=data.id){const $select=$input.find("select");this.$select=$select;let config=$select.attr("data-config")||{};try{this.configFile=JSON.parse(config),config=this.configFile}catch(error){console.warn("Not possible to parse the json file")}if($select.data("objName")===data.id&&this.group===data.group){let val;return $select.find("option.was-disabled").toggleClass("was-disabled",!1).prop("disabled",!0),$select.find("option:not(:disabled)").remove(),$select.find("option:disabled").toggleClass("was-disabled",!0).prop("disabled",!1),console.info("onTriggerAAFMultiselect - select2 data.options:",data.options),$select.select2({data:data.options,matcher:mod.matchCustom2.bind(this),dropdownParent:mod.$ctx,dropdownAutoWidth:config.dropdownAutoWidth||!0,allowClear:config.allowClear||!1,minimumResultsForSearch:config.minimumResultsForSearch||0,multiple:config.multiple||!1,placeholder:config.placeholder||null,maximumInputLength:config.maximumInputLength||0,maximumSelectionLength:config.maximumSelectionLength||0,minimumInputLength:config.minimumInputLength||0,language:{noResults:()=>this.configFile.noResultsMessage,inputTooShort:()=>this.configFile.inputTooShortMessage,maximumSelected:()=>this.configFile.maximumSelectionLengthMessage,inputTooLong:()=>this.configFile.inputTooLongMessage}}),null!=data.options&&"multifetch"===dataAttr&&$input.trigger("edit",{invert:!1}),null!=data.preselected&&$select.find(`option[value='${data.preselected}']`).length?(val=data.preselected,$select.val(val).trigger("change")):$select.val("").trigger("change")}}},onTriggerAAFPreselect(data){const mod=this,$input=mod.$ctx;if(null!=data&&null!=data.id){const $select=$input.find("select");this.$select=$select;let config=$select.attr("data-config")||{};try{this.configFile=JSON.parse(config),config=this.configFile}catch(error){console.warn("Not possible to parse the json file")}if($select.data("objName")===data.id&&this.group===data.group){$select.find("option.was-disabled").toggleClass("was-disabled",!1).prop("disabled",!0),$select.find("option:not(:disabled)").remove(),$select.find("option:disabled").toggleClass("was-disabled",!0).prop("disabled",!1),console.info("onTriggerAAFPreselect - select2 data.options:",data.options),$select.select2({data:data.options,matcher:mod.matchCustom2.b
7ind(this),dropdownParent:mod.$ctx,dropdownAutoWidth:config.dropdownAutoWidth||!0,allowClear:config.allowClear||!1,minimumResultsForSearch:config.minimumResultsForSearch||0,multiple:config.multiple||!1,placeholder:config.placeholder||null,maximumInputLength:config.maximumInputLength||0,maximumSelectionLength:config.maximumSelectionLength||0,minimumInputLength:config.minimumInputLength||0,language:{noResults:()=>this.configFile.noResultsMessage,inputTooShort:()=>this.configFile.inputTooShortMessage,maximumSelected:()=>this.configFile.maximumSelectionLengthMessage,inputTooLong:()=>this.configFile.inputTooLongMessage}});const wasDisabled="readonly"===$input.closest(".m-form").data("invert");return null!=data.options&&$input.trigger("edit",{invert:!data.options.length>0}),setTimeout(function(){let val;if(null!=data.preselected){val=data.preselected;const $options=$("option",$select);if($options.filter(function(){return $(this).val()===val}).length||$options.filter(function(){return $(this).html()===val}).length&&(val=$options.filter(function(){return $(this).html()===val}).get(0).value),null!=data.hidden){const hiddenData=data.hidden;$select.val(val).trigger("change",{preventAjaxRequestByChange:!0,hidden:hiddenData})}else if(null!=data.visible){const visibleData=data.visible;$select.val(val).trigger("change",{preventAjaxRequestByChange:!0,visible:visibleData})}else $select.val(val).trigger("change",{preventAjaxRequestByChange:!1});$select.parent().removeClass("inactive-without-value"),$select.parent().find("input[type=hidden]").val(val)}else $select.val("").trigger("change",{preventAjaxRequestByChange:!0});if(wasDisabled&&null!=data.options)return $input.trigger("edit",{invert:data.options.length>0})},1400)}}},onTriggerAAFSelect(ev,data){const mod=this,$input=mod.$ctx,$select=$(ev.currentTarget);this.$select=$select;let config=$select.attr("data-config")||{};try{this.configFile=JSON.parse(config),config=this.configFile}catch(error){}if(null!=data){let val;return $select.find("option.was-disabled").toggleClass("was-disabled",!1).prop("disabled",!0),$select.find("option:not(:disabled)").remove(),$select.find("option:disabled").toggleClass("was-disabled",!0).prop("disabled",!1),$select.select2({data:data.options,dropdownParent:mod.$ctx,matcher:mod.matchCustom2.b
7ind(this),dropdownAutoWidth:config.dropdownAutoWidth||!0,allowClear:config.allowClear||!1,minimumResultsForSearch:config.minimumResultsForSearch||0,multiple:config.multiple||!1,placeholder:config.placeholder||null,maximumInputLength:config.maximumInputLength||0,maximumSelectionLength:config.maximumSelectionLength||0,minimumInputLength:config.minimumInputLength||0,language:{noResults:()=>this.configFile.noResultsMessage,inputTooShort:()=>this.configFile.inputTooShortMessage,maximumSelected:()=>this.configFile.maximumSelectionLengthMessage,inputTooLong:()=>this.configFile.inputTooLongMessage}}),null!=data.options&&"cityfetch"===$input.data("autocomplete")&&$input.trigger("edit",{invert:!Boolean(data.options.length)}),null!=data.preselected?(val=data.preselected,$select.val(val).trigger("change")):$select.val("").trigger("change")}},onTriggerAAFSingle(data){const $input=this.$ctx,formID=$input.closest(".m-form").data("tId"),dataFormID=data.$scope.data("tId");if(null!=data.id&&formID===dataFormID){$input.data("objName")===data.id&&"single"!==$input.data("autocomplete")&&$input.val(data.val)}},onTriggerAAFRegistration(data){if(null!=data.result.fields){let name;const $input=this.$ctx,$select=$input.find("select");if(null!=(name=$select.length>0?$select.data("objName"):$input.data("objName")))return(()=>{for(let field of Array.from(data.result.fields))null!=field.field&&field.field===name&&(null!=field.value&&($select.length>0?null!=field.options?this.replaceTheSelectOptionsAndSelectValue($select,field.options,field.value,!0):$select.val(field.value).trigger("change.select2"):!$input.is(":visible")&&(null!=field.options?field.options.length:void 0)>1?$input.val(""):$input.val(field.value)),null!=field.type&&"error"===field.type&&this.$ctx.trigger("setInputError",field.reason),$select.length>0?(T.Utils.createHiddenElementForReadonly($select,".select-wrap"),!field.disabled&&$select.attr("data-preventenabled")||($select.trigger("edit",{invert:field.disabled}),field.disabled&&$select.attr("data-origindisabled",!0))):!field.disabled&&$input.attr("data-preventenabled")||($input.prop("readonly",field.disabled),field.disabled&&$input.attr("data-origindisabled",!0)))})()}},replaceTheSelectOptionsAndSelectValue($select,$options,$value,forceScroll){const $selectOptions=[];let $placeHolder="";for(let option of Array.from($options))""===option.value&&($placeHolder=option.label),$selectOptions.push({id:option.value,text:option.label});let config=$select.attr("data-config")||{};try{this.configFile=JSON.parse(config),config=this.configFile}catch(error){console.warn("Not possible to parse the json file")}let isOpen=!1;forceScroll&&$select.parent().find(".select2-container--open").length>0&&($select.select2("close"),isOpen=!0),$select.empty().select2({data:$selectOptions,matcher:this.matchCustom2.b
7ind(this),dropdownParent:this.$ctx,dropdownAutoWidth:config.dropdownAutoWidth||!0,allowClear:config.allowClear||!1,minimumResultsForSearch:config.minimumResultsForSearch||0,multiple:config.multiple||!1,placeholder:config.placeholder||null,maximumInputLength:config.maximumInputLength||0,maximumSelectionLength:config.maximumSelectionLength||0,minimumInputLength:config.minimumInputLength||0,language:{noResults:()=>this.configFile.noResultsMessage,inputTooShort:()=>this.configFile.inputTooShortMessage,maximumSelected:()=>this.configFile.maximumSelectionLengthMessage,inputTooLong:()=>this.configFile.inputTooLongMessage}}),$value&&$value.length>0?$select.val($value).trigger("change.select2"):this.$ctx.removeClass(this.stateclass.focused),isOpen&&$select.select2("open")},onTriggerAAFSuggest(data){const $input=this.$ctx,name=$input.data("objName"),dataAttr=$input.data("autocomplete");if(($input.prop("id")||"regionfetch"===dataAttr)&&null!=data&&null!=data.address1){const adr=data.address1;return(()=>{const result=[];for(let key of Object.keys(adr||{})){const value=adr[key];if(null!=value){const indicator=name||key;if(value.length>0&&$input.data("objName")===indicator&&key===indicator&&($input.val(value),$input.trigger("setCustomError",!1),delete adr[key]),"object"==typeof value&&"regionfetch"===dataAttr)if(null!=value.uniqueIdentifier){$input.find("select").val(value.uniqueIdentifier).trigger("change"),result.push(delete adr[key])}else result.push(void 0);else result.push(void 0)}else result.push(void 0)}return result})()}}})}(jQuery),function($){T.Module.FormUpload=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.config=this.$ctx.data("config"),this.maxFilesCounter=0,this.selectors={fileName:".file .filename",delete:".file .delete",progressIndicator:".progressbar .progressindicator",uploadStatus:".progressinfo .uploadstatus",performance:".progressinfo .performance",uploadStatusMessage:".upload-status-message",uploadFileContainer:".upload-file-container",successfullUploads:".upload-file-container[data-upload-success=true]",hasError:".upload-file-container[data-has-error=true]",dropZone:".upload-dropzone",fileTemplate:"#upload-file-template",filesList:".upload-files-list",resultField:"[data-upload-resultfield]",resultFileNames:"[data-upload-resultFileNames]",statusMessage:".upload-area-wrapper .upload-status-message",form:"form",filesListHeading:".upload-files-list .a-heading"},this.$dropZone=this.$ctx.find(this.selectors.dropZone),this.uploadFileTemplate=this.$ctx.find(this.selectors.fileTemplate).html(),this.$uploadFilesList=this.$ctx.find(this.selectors.filesList),this.$uploadResultField=this.$ctx.find(this.selectors.resultField),this.$uploadResultFileNameField=this.$ctx.find(this.selectors.resultFileNames),this.$generalUploadStatusMessage=this.$ctx.find(this.selectors.statusMessage),this.$form=this.$ctx.closest(this.selectors.form),this.$fileListHeading=this.$ctx.find(this.selectors.filesListHeading),this.config.uploadRequired&&this._events.emit("form:disableSubmit",{id:this.$form.data("t-id")}),this.initFileUpload(),resolve()},sync(){},initFileUpload(){this.$dropZone.fileupload({url:this.config.uploadUrl,dataType:"json",formData:{},add:(e,data)=>{this.resetGeneralErrorMsg(),this.maxFilesCounter++,data.fileContext={},data.fileContext.uploadPause=T.Utils.getRandomValueWithInRange(85,92);const validationObject=this.validate(data);this.updateFilesList(data),this.$fileListHeading.text(this.getMessageById("uploadLoading")),this.$uploadFilesList.removeClass("hidden"),validationObject.isValid?data.fileContext.jqXHR=data.submit():(data.fileContext.$fileContainer.attr("data-has-error","true"),this._events.emit("form:disableSubmit",{id:this.$form.data("t-id")}),this.showClientFileErrorMsg(data,validationObject.errorMsg))},send:(e,data)=>{const CSRFHeader=T.Utils.getCSRFTokenHeader()||{};data.headers=CSRFHeader},progress:(e,data)=>{const progress=Math.floor(data.loaded/data.total*data.fileContext.uploadPause);data.fileContext.$uploadStatus.text(`${progress}${this.config.localePercentage}`),data.fileContext.$progressIndicator.css("transition","width 0.2s ease-out"),data.fileContext.$progressIndicator.css("width",`${progress}${this.config.localePercentage}`),data.fileContext.$performance.text(`${Math.round(data.bitrate/8/1024)} ${this.config.localeTransferRate}`)},done:(e,data)=>
7{if(data.fileContext.$deleteFile.attr("data-media-code",data.result.fileLink),this.addHiddenFileName(data.files[0].name),this.addHiddenMediaCode(data.result.fileLink),data.result&&data.result.errorMsg)data.fileContext.$fileContainer.attr("data-has-error","true"),this._events.emit("form:disableSubmit",{id:this.$form.data("t-id")}),this.showServerFileErrorMsg(data);else{const hasErrorLength=this.$ctx.find(this.selectors.hasError).length;data.fileContext.$fileContainer.attr("data-upload-success","true"),hasErrorLength<1?(this._events.emit("form:enableSubmit",{id:this.$form.data("t-id")}),this.$fileListHeading.text(this.getMessageById("uploadSuccess"))):this._events.emit("form:disableSubmit",{id:this.$form.data("t-id")})}},always:(e,data)=>{this.finishProgress(data)},fail:(e,data)=>{data.result={errorMsg:"TECHNICAL_ERROR"},data.fileContext.$fileContainer.attr("data-has-error","true"),this.showServerFileErrorMsg(data),this._events.emit("form:disableSubmit",{id:this.$form.data("t-id")})}});const mediaCodesArray=this.getPrefilledMediaCodes();mediaCodesArray.length>0&&(this._events.emit("form:enableSubmit",{id:this.$form.data("t-id")}),this.$fileListHeading.text(this.getMessageById("uploadSuccess")),this.maxFilesCounter=this.maxFilesCounter+mediaCodesArray.length,this.updateFilesListFromPrefilled())},finishProgress(data){let progress=data.fileContext.uploadPause;const count=100-progress;for(i=0;i<count;i++)setTimeout(()=>{progress+=1,data.fileContext.$uploadStatus.text(`${progress}${this.config.localePercentage}`),data.fileContext.$progressIndicator.css("width",`${progress}${this.config.localePercentage}`)},1e3)},updateFilesList(data){data.fileContext.$template=$(this.uploadFileTemplate).appendTo(this.$uploadFilesList),data.fileContext.$fileContainer=data.fileContext.$template,data.fileContext.$fileName=data.fileContext.$template.find(this.selectors.fileName),data.fileContext.$deleteFile=data.fileContext.$template.find(this.selectors.delete),data.fileContext.$progressIndicator=data.fileContext.$template.find(this.selectors.progressIndicator),data.fileContext.$uploadStatus=data.fileContext.$template.find(this.selectors.uploadStatus),data.fileContext.$performance=data.fileContext.$template.find(this.selectors.performance),data.fileContext.$uploadStatusMessage=data.fileContext.$template.find(this.selectors.uploadStatusMessage),data.fileContext.$fileName.text(data.files[0].name),data.fileContext.$deleteFile.on("click",ev=>{this.deleteUpload(ev,data)})},deleteUpload(ev,data){this.maxFilesCounter--;const mediaCode=$(ev.currentTarget).data("media-code");if(data&&data.abort(),$(ev.currentTarget).closest(this.selectors.uploadFileContainer).remove(),this.removeHiddenMediaCode(mediaCode),this.$ctx.find(this.selectors.hasError).length<1?(this._events.emit("form:enableSubmit",{id:this.$form.data("t-id")}),this.$fileListHeading.text(this.getMessageById("uploadSuccess"))):this._events.emit("form:disableSubmit",{id:this.$form.data("t-id")}),this.config.uploadRequired){this.$ctx.find(this.selectors.successfullUploads).length<1&&this._events.emit("form:disableSubmit",{id:this.$form.data("t-id")})}this.$ctx.find(this.selectors.uploadFileContainer).length<1&&this.$uploadFilesList.addClass("hidden")},getPrefilledMediaCodes(){const mediaCodesString=this.$uploadResultField.val();let mediaCodesArray=[];return mediaCodesString.indexOf(",")>-1?mediaCodesArray=mediaCodesString.split(","):mediaCodesString&&mediaCodesArray.push(mediaCodesString),mediaCodesArray},getPrefilledFileNames(){const fileNamesString=this.$uploadResultFileNameField.val();let fileNamesArray=[];return fileNamesString.indexOf(",")>-1?fileNamesArray=fileNamesString.split(","):fileNamesString&&fileNamesArray.push(fileNamesString),fileNamesArray},updateFilesListFromPrefilled(){const mediaCodesArray=this.getPrefilledMediaCodes(),fileNamesArray=this.getPrefilledFileNames();this.$uploadFilesList.removeClass("hidden"),mediaCodesArray.forEach((item,index)=>{const $template=$(this.uploadFileTemplate).appendTo(this.$uploadFilesList),$fileName=$template.find(this.selectors.fileName),$deleteFile=$template.find(this.selectors.delete),$progressIndicator=$template.find(this.selectors.progressIndicator),$uploadStatus=$template.find(this.selectors.uploadStatus);$template.attr("data-upload-success","true"),$deleteFile.data("media-code",item),$fileName.text(fileNamesArray[index]),$progressIndicator.css("width","100%"),$uploadStatus.text(`100${this.config.localePercentage}`),$deleteFile.on("click",ev=>{this.deleteUpload(ev,null)})})},addHiddenMediaCode(mediaCode){let mediaCodesArray=this.getPrefilledMediaCodes();mediaCodesArray.push(mediaCode);const mediaCodesString=mediaCodesArray.join(",");this.$uploadResultField.val(mediaCodesString)},addHiddenFileName(fileName){let fileNamesArray=this.getPrefilledFileNames();fileNamesArray.push(fileName);const fileNamesString=fileNamesArray.join(",");this.$uploadResultFileNameField.val(fileNamesString)},removeHiddenMediaCode(mediaCode){if(!mediaCode)return;let mediaCodesArray=this.getPrefilledMediaCodes();const index=mediaCodesArray.indexOf(mediaCode.toString());this.removeHiddenFileName(index);const mediaCodesString=(mediaCodesArray=mediaCodesArray.filter(item=>item!==mediaCode.toString())).join(",");this.$uploadResultField.val(mediaCodesString)},removeHiddenFileName(index){let fileNamesArray=this.getPrefilledFileNames();fileNamesArray.splice(index,1);const fileNamesString=fileNamesArray.join(",");this.$uploadResultFileNameField.val(fileNamesString)},getMessageFromResponseErrorStatus(errorStatus){let errormsg;return"ILLEGAL_MIME_TYPE"===errorStatus?errormsg=this.getMessageById("uploadTypeError"):"VIRUS_INFECTED"===errorStatus?errormsg=this.getMessageById("uploadVirusError"):"MAX_FILE_SIZE_EXCEEDED"===errorStatus?errormsg=this.getMessageById("uploadFileSizeError"):"TECHNICAL_ERROR"===errorStatus?errormsg=this.getMessageById("uploadTechnicalError"):"INVALID_FILE_NAME"===errorStatus&&(errormsg=this.getMessageById("uploadFileNameError")),errormsg},getMessageById(msgId){return this.config[msgId]},validate(data){let validationObject={errorMsg:[],isValid:!0};return this.config.maxFiles&&this.config.maxFiles<this.maxFilesCounter&&(validationObject.isValid=!1,validationObject.errorMsg.push(this.getMessageById("uploadMoreFilesThenAllowed"))),this.config.maxFileSize&&data.files[0].size>this.config.maxFileSize&&(validationObject.isValid=!1,validationObject.errorMsg.push(this.getMessageById("uploadFileSizeError"))),this.config.permittedFileFormats&&-1===this.config.permittedFileFormats.indexOf(data.files[0].type)&&(validationObject.isValid=!1,validationObject.errorMsg.push(this.getMessageById("uploadTypeError"))),validationObject},showGeneralErrorMsg(errorMsg){this.$generalUploadStatusMessage.text(errorMsg),this.$generalUploadStatusMessage.removeClass("hidden")},resetGeneralErrorMsg(){this.$generalUploadStatusMessage.text(""),this.$generalUploadStatusMessage.addClass("hidden")},showServerFileErrorMsg(data){const errorMsg=this.getMessageFromResponseErrorStatus(data.result.errorMsg);data.fileContext.$uploadStatusMessage.text(errorMsg),data.fileContext.$uploadStatusMessage.removeClass("hidden")},showClientFileErrorMsg(data,errorMsgList){const errorMsg=errorMsgList.join("<br>");data.fileContext.$uploadStatusMessage.html(errorMsg),data.fileContext.$uploadStatusMessage.removeClass("hidden")}})}(jQuery),function($){T.Module.GigyaAssistant=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.isSynced=!1,this.$screenSet=this.$ctx.data("screen"),this.$containerID=this.$ctx.data("c
7ontainer"),this.$lang=this.$ctx.data("lang"),this.$websdk=this.$ctx.data("web-sdk"),this.$gigyaCookie=this.$ctx.data("cookie"),this.params={screenSet:this.$screenSet,containerID:this.$containerID,lang:this.$lang,onError:this.errorHandler},this._events.on("t.sync",()=>this.sync()),that=this,this.setGigyaCookie(),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.loadGigyaSciptOnce(this.$websdk))},setGigyaCookie(){const config={path:"/",domain:location.hostname.replace(/([^\.]+)/,"")};T.Utils.cookieHandling(`${that.$gigyaCookie}`,"set",config)},loadGigyaSciptOnce(websdk){T.Commons.ScriptLoader.loadOnceGigyaAssistant(websdk,that.onLibraryLoaded)},showScreenSetInfo(){gigya.accounts.showScreenSet(that.params)},onLibraryLoaded(){that.showScreenSetInfo()},errorHandler:()=>({nextScreen:"error-screen"})})}(jQuery),function($){T.Module.GigyaLambdaAssistant=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.isSynced=!1,this.$gigyaCookie=this.$ctx.data("cookie"),this.setGigyaCookie(),resolve()},setGigyaCookie(){const config={path:"/",domain:location.hostname.replace(/([^\.]+)/,"")};T.Utils.cookieHandling(`${this.$gigyaCookie}`,"set",config)}})}(jQuery),function($){T.Module.GridGallery=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$gridGalleryItem=this.$ctx.find(".gallery-item"),this.layerId=this.$ctx.data("layer-id-ref"),this.setGridItemDataId(),this.$gridGalleryItem.on("click",event=>{this.throwTrackingEventOnElement(event.currentTarget,"gallery click"),this.onClickGalleryBox(event)}),this._events.on("mediaGalleryInteraction:sliderScroll",event=>{this.$ctx.find(event.slide).length>0&&this.throwTrackingEvent(event.slide.data("slick-index"),event.slide.data("media-type"),"slider scroll")}),this._events.on("mediaGalleryInteraction:openLayer",event=>{this.$ctx.find(event.$triggerElement).length>0&&this.throwTrackingEventOnElement(event.$triggerElement[0],"slider open")}),this._events.on("t.sync",()=>this.sync()),this.isSynced=!1,resolve()},sync(){if(!this.isSynced)return this.isSynced=!0,T.Utils.allSynced=!0,this.initializeLayer()},setGridItemDataId(){this.$gridGalleryItem.each((index,val)=>{$(val).attr("data-index",index)})},initializeLayer(){if(!this.layerId)return;const $layer=$(`div[data-t-name='Layer'][data-id='${this.layerId}'] .js-mediagallery`);return $layer.length>0?this.layer=this._sandbox.getModuleById($layer.data("t-id")):void 0},throwTrackingEventOnElement(element,interaction){const index=element.getAttribute("data-index"),type=element.getAttribute("data-type")?element.getAttribute("data-type"):"image";this.throwTrackingEvent(index,type,interaction)},throwTrackingEvent(index,type,interaction){const trackingData={grid_gallery_id:this.layerId,grid_gallery_media_interaction:interaction,grid_gallery_media_element:parseInt(index)+1,grid_gallery_media_type:type};T.Utils.getLayout().trackValues("grid gallery interaction",trackingData)},onClickGalleryBox(ev){if(this.layer){const sliderIndex=$(ev.currentTarget).data("index");this.layer.setSliderPosition(sliderIndex)}}})}(jQuery),function($){T.Module.HelpfulFunction=T.createModule({start(resolve){const mod=this;return mod.$ctx=$(mod._ctx),mod.elm={$trigger:mod.$(".js-trigger-helpful")},mod.state={rated:"was-rated"},mod.config=mod.$ctx.data(),mod.cookieData=`_helpfulFunction_voted=${mod.config.id}`,T.Utils.cookieHandling(mod.cookieData,"isset")&&mod.hideVote(),mod.elm.$trigger.on("click",$.proxy(this.onTriggerClick,this)),resolve()},hideVote(){return this.$ctx.addClass(this.state.rated)},onTriggerClick(e){e.preventDefault();return this.hideVote(),T.Utils.cookieHandling(this.cookieData,"set")},sync(){}})}(jQuery),function($){T.Module.HelpfulnessVoting=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.$positiveFeedback=this.$ctx.find(".js-helpfulness-container .js-positive-feedback"),this.$negativeFeedback=this.$ctx.find(".js-helpfulness-container .js-negative-feedback"),this.$feedbackBtn=this.$ctx.find(".js-helpfulness-container .js-feedback"),this.$reportBtn=this.$ctx.find(".js-review-reported"),this.positiveFeedbackAjaxId=this.$positiveFeedback.data("ajax-request-id"),this.negativeFeedbackAjaxId=this.$negativeFeedback.data("ajax-request-id"),this.inappropriateFeedbackAjaxId=this.$reportBtn.data("ajax-request-id"),this.$positiveFeedback.on("click",ev=>this.onClickPositiveFeedback(ev)),this.$negativeFeedback.on("click",ev=>this.onClickNegativeFeedback(ev)),this.$reportBtn.on("click",()=>this.onClickReport()),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},onClickPositiveFeedback(ev){if(ev.preventDefault(),this.positiveFeedbackAjaxId){const request=T.Utils.startAjaxRequest(this.positiveFeedbackAjaxId);request&&request[0]&&request[0].done(response=>{if(response&&!1===response.hasErrors){const positiveCount=this.$positiveFeedback.find(".text.js-positive-feedback-count"),positiveFeedbackReviewId=this.$positiveFeedback.data("feedback-id"),storageObj="FeedbackId",buttonVal=parseInt(positiveCount.text())+1;ev.currentTarget.value=buttonVal,positiveCount.text(buttonVal),this.$feedbackBtn.addClass("a-button-disabled"),this.feedbackBtnReviewIdStorage(positiveFeedbackReviewId,storageObj)}!response||response.hasErrors})}},onClickNegativeFeedback(ev){if(ev.preventDefault(),this.negativeFeedbackAjaxId){const request=T.Utils.startAjaxRequest(this.negativeFeedbackAjaxId);request&&request[0]&&request[0].done(response=>{if(response&&!1===response.hasErrors){const negativeCount=this.$negativeFeedback.find(".text.js-negative-feedback-count"),negativeFeedbackReviewId=this.$negativeFeedback.data("feedback-id"),storageObj="FeedbackId",buttonVal=parseInt(negativeCount.text())+1;ev.currentTarget.value=buttonVal,negativeCount.text(buttonVal),this.$feedbackBtn.addClass("a-button-disabled"),this.feedbackBtnReviewIdStorage(negativeFeedbackReviewId,storageObj)}!response||response.hasErrors})}},onClickReport(){if(this.inappropriateFeedbackAjaxId){const request=T.Utils.startAjaxRequest(this.inappropriateFeedbackAjaxId);this._events.emit("popover:close",{$ctx:this.$ctx}),request&&request[0]&&request[0].done(response=>{const reportReviewId=this.$reportBtn.data("feedback-id");response&&!1===response.hasErrors&&(this.$ctx.find(".js-review-report-button").attr("disabled","disabled"),this.$ctx.find(".js-review-report-button").addClass("a-button-disabled"),this.$reportBtn.addClass("reported-inappropriate"),this.$reportBtn.addClass("a-button-disabled"),this.feedbackBtnReviewIdStorage(reportReviewId,"ReportId")),!response||response.hasErrors})}},feedbackBtnReviewIdStorage(storageItem,storageObj){let storedFeedbackBtnReviewId=T.Utils.localStorageGetItem(storageObj);null!=storedFeedbackBtnReviewId?(storedFeedbackBtnReviewId.push(storageItem),reviewIdArray=storedFeedbackBtnReviewId):reviewIdArray=[storageItem],T.Utils.localStorageSetItem(storageObj,reviewIdArray)}})}(jQuery),function($){T.Module.IframeAutoSize=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.loadIframeResizerLibraryOnce(),resolve()},loadIframeResizerLibraryOnce(){T.Commons.ScriptLoader.loadOnceIframeResizerLibrary(this.onLibraryLoaded.bind(this))},onLibraryLoaded(){!1!==this.determineIframeEl()&&(this.extendOptionsWithDynamicValues(),this.initializeIframeResizer(),this.setDefaultsToIframe())},determineIframeEl(){return this.iframe_el=this.$ctx.find("iframe")[0]||null,!1!==this.hasIframe()||(console.error("Could not found iframe!"),!1)},extendOptionsWithDynamicValues(){this.extendOptions("initCallback",this.removeDefaultsFromIframe.bind(this)),this.extendOptions("scrolling",this.scrolling_no)},extendOptions(option_name,option_value){this.iframe_resizer_options[option_name]=option_value},initializeIframeResizer(){this.triggerEventBeforeInitialize(),iFrameResize(this.iframe_resizer_options,this.iframe_el)},hasIframe(){return null!==(this.iframe_el||null)},triggerEventBeforeInitialize(){this._events.emit("iframeautosize:before_initialize",{$ctx:this.$ctx,component:this,iframe_el:this.iframe_el})},setDefaultsToIframe(){this.iframe_el.setAttribute("scrolling",this.scrolling_auto),this.setDefaults()},removeDefaultsFromIframe(){if(!1===this.hasDefaults())return;const scrolling_value=this.iframe_resizer_options.scrolling||this.scrolling_no;this.iframe_el.setAttribute("scrolling",scrolling_value),this.iframe_el.style.minHeight=this.min_height_after_first_auto_resize,this.setNoDefaults()},hasDefaults(){return!0===this.has_defaults},setDefaults(){this.has_defaults=!0},setNoDefaults(){this.has_defaults=!1},iframe_el:null,iframe_resizer_options:{checkOrigin:!1},has_defaults:!1,scrolling_no:"no",scrolling_auto:"auto",min_height_after_first_auto_resize:"1px"})}(jQuery),jQuery,T.Module.ImageList=T.createModule({start:resolve=>resolve(),sync(){}}),function($){T.Module.ImageSequencer=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$magic360=this.$ctx.find(".js-magic360"),this.$magic360Img=this.$magic360.find("img");const callback=this.onLibraryLoaded.bind(this);return T.Commons.ScriptLoader.loadOnceMagic360Library(callback),resolve()},onLibraryLoaded(){this.checkForWebpSupport(),Magic360.lang={"hint-text":this.$ctx.data("hint-text"),"mobile-hint-text":this.$ctx.data("hint-text-mobile")}},checkForWebpSupport(){let magic360ImgSrc=this.$magic360Img.data("image-src");Modernizr.webp?(this.$magic360.attr("data-options",this.$magic360.attr("data-options").replace(".jpg",".webp")),this.$magic360Img.attr("src",magic360ImgSrc.replace(".jpg",".webp"))):this.$magic360Img.attr("src",magic360ImgSrc)}})}(jQuery),function($){T.Module.ImageTeaserCarousel=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$tilesSlider=this.$ctx.find(".image-teaser-slider"),this.$paginationArrows=this.$ctx.find(".image-teaser-slider-arrows"),this.$prevArrow=this.$paginationArrows.find(".prev"),this.$nextArrow=this.$paginationArrows.find(".next"),this.$images=this.$tilesSlider.find("img"),this.imageTeaserCount=this.$tilesSlider.find(".m-image-teaser-container").length,this.solidBackgroun
7dTeaserCount=this.$tilesSlider.find(".m-solid-background-teaser-container").length,this.slideCount=this.imageTeaserCount+this.solidBackgroundTeaserCount,this.slidesToScroll=1,this.slideToShowDesktopLarge=5,this.slideToShowDesktop=4,this.slideToShowTabletLandscape=3,this.slideToShowTabletPortrait=2,this.slideToShowMobile=1,this.centerPaddingValueVP2VP3="35px",this.centerPaddingValueVP1="20px",this.breakpointDesktopLarge=1920,this.breakpointDesktop=1440,this.breakpointTablet=768,this.breakpointMobile=600,this.windowResizeDebounceTime=200;const scrollbarWidth=T.Utils.getScrollbarWidth();return this.workaroundBreakpointDesktopLarge=1920+scrollbarWidth,this.workaroundBreakpointDesktop=1440+scrollbarWidth,this.workaroundBreakpointTablet=768+scrollbarWidth,this.workaroundBreakpointMobile=600+scrollbarWidth,T.Commons.LazyLoadingInitializer.disableLazyLoading(this.$images),this.initSlick(),this.togglePaginationArrows(),this.viewPortChangeListener(),resolve()},initSlick(){this.$paginationArrows&&this.$paginationArrows.hide(),this.$tilesSlider.slick({infinite:!0,speed:300,dots:this.slideCount>this.slideToShowDesktopLarge,arrows:this.slideCount>this.slideToShowTabletLandscape,appendArrows:this.$paginationArrows,prevArrow:this.$prevArrow,nextArrow:this.$nextArrow,slidesToShow:this.slideToShowDesktopLarge,slidesToScroll:this.slidesToScroll,centerMode:!0,centerPadding:this.centerPaddingValueVP2VP3,rtl:T.Utils.isRTL(),responsive:[{breakpoint:this.workaroundBreakpointDesktopLarge,settings:{slidesToShow:this.slideToShowDesktop,dots:this.slideCount>this.slideToShowDesktop}},{breakpoint:this.workaroundBreakpointDesktop,settings:{slidesToShow:this.slideToShowTabletLandscape,dots:this.slideCount>this.slideToShowTabletLandscape}},{breakpoint:this.workaroundBreakpointTablet,settings:{slidesToShow:this.slideToShowTabletPortrait,dots:this.slideCount>this.slideToShowTabletPortrait}},{breakpoint:this.workaroundBreakpointMobile,settings:{slidesToShow:this.slideToShowMobile,dots:this.slideCount>this.slideToShowMobile,centerPadding:this.centerPaddingValueVP1}}]})},viewPortChangeListener(){$(window).on("resize",T.Utils.debounce(()=>{this.togglePaginationArrows()},this.windowResizeDebounceTime))},togglePaginationArrows(){if(T.Utils.isViewport("desktop")){const innerWindowWidth=$(window).innerWidth();innerWindowWidth<this.breakpointDesktop&&(this.slideCount>this.slideToShowTabletLandscape?this.$paginationArrows.show():this.$paginationArrows.hide()),innerWindowWidth>=this.breakpointDesktop&&innerWindowWidth<this.breakpointDesktopLarge&&(this.slideCount>this.slideToShowDesktop?this.$paginationArrows.show():this.$paginationArrows.hide()),innerWindowWidth>=this.breakpointDesktopLarge&&(this.slideCount>this.slideToShowDesktopLarge?this.$paginationArrows.show():this.$paginationArrows.hide())}else this.$paginationArrows.hide()}})}(jQuery),function($){T.Module.ImageTextButtonsIPG=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$links=this.$ctx.find("*[data-ajax-url]"),this.$links.on("click",ev=>this.onClickLink(ev)),resolve()},onClickLink(ev){ev.preventDefault();const ajaxUrl=$(ev.currentTarget).attr("data-ajax-url");this.callback&&"function"==typeof this.callback&&this.callback(ajaxUrl)},registerCallbackLink(callback){this.callback=callback}})}(jQuery),function($){T.Module.ImageTextRadioButtonsIPG=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$radiobuttons=this.$ctx.find("*[data-ajax-url]"),this.$form=this.$ctx.find(".m-form"),this.$submitButton=this.$form.find("button[type='submit']"),this.ajaxUrl=null,this.$form.on("submit",ev=>this.onSubmitForm(ev)),this.$radiobuttons.on("click",ev=>this.onClickRadioButton(ev)),this.$submitButton.attr("disabled","disabled"),resolve()},onSubmitForm(ev){ev.preventDefault(),this.callback&&"function"==typeof this.callback&&null!=this.ajaxUrl&&this.callback(this.ajaxUrl)},onClickRadioButton(ev){const $surroundingDiv=$(ev.currentTarget);!1!==($surroundingDiv.find('input.m-forminput[type="radio"]:checked')[0]||!1)&&(this.ajaxUrl=$surroundingDiv.attr("data-ajax-url"),this.$submitButton.removeAttr("disabled"))},registerCallbackLink(callback){this.callback=callback}})}(jQuery),function($){T.Module.ImageVideoGallery=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$imageVideoGallery=this.$ctx.find(".js-listitem"),this.layerId=this.$ctx.data("layer-id"),this.$imageVideoGallery.on("click",ev=>this.onClickGalleryBox(ev)),this._events.on("t.sync",()=>this.sync()),this.isSynced=!1,resolve()},sync(){if(!this.isSynced)return this.isSynced=!0,T.Utils.allSynced=!0,this.initializeLayer()},initializeLayer(){if(null!==this.layerId)return this.$layer=$(`div[data-t-name='Layer'][data-id='${this.layerId}'] .js-mediagallery`),this.$layer.length>0?this.layer=this._sandbox.getModuleById(this.$layer.data("t-id")):void 0},onClickGalleryBox(ev){const sliderIndex=$(ev.currentTarget).data("index");null!==this.layer&&this.layer.setSliderPosition(sliderIndex)}})}(jQuery),function($){T.Module.IPGContainer=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.$backlink=this.$ctx.find(".a-backlink"),this.ajaxUrl=this.$ctx.data("ajax-url"),this.$backlink.on("click",ev=>this.onClickBackLink(ev)),this._events.on("t.sync",()=>this.sync()),T.Utils.registerPopStateHandler("ipg-popstate",()=>this.onPopState()),T.Utils.registerAjaxCallbackAfterSync("dealerlayer-integration-buttons",()=>
7this.updateProductteaserHeight()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.$ctx.data("initial")&&this.loadInitialContent(),setTimeout(function(){const $ipgContent=this.$ctx.find("*[data-t-id]");if($(window).on("resize.productteaseripg",T.Utils.debounce(()=>this.updateProductteaserHeight(),50)),$ipgContent.length>0){var self=this;$ipgContent.each(function(){if(null==$(this).data("t-id"))return;const module=self._sandbox.getModuleById($(this).data("t-id"));"function"==typeof module.registerCallbackLink&&module.registerCallbackLink(url=>{self.loadContent(url)})})}}.bind(this),100))},loadInitialContent(){const currentUrl=T.Utils.splitUrl(window.location.href),idParam=null==currentUrl.get?null:currentUrl.get.id;let url;url=null==idParam?this.ajaxUrl:T.Utils.splitUrl(this.ajaxUrl).base+"?componentUid="+idParam,this.loadContent(url,!0)},onClickBackLink(ev){ev.preventDefault(),this.loadContent($(ev.currentTarget).attr("href")),T.Utils.resetPrecondition("onlinedealerlayer:mcidready")},onPopState(){null!=history.state&&null!=history.state.currentStateUrl&&this.loadContent(history.state.currentStateUrl,!0)},loadContent(url,replace){const scrollTop=$(window).scrollTop();T.Utils.startAjaxRequest(!1,{url:url,dataType:"html",dataRendering:!0},null,null,()=>{(replace?history.replaceState:history.pushState).call(history,{currentStateUrl:url},document.title,"?id="+T.Utils.splitUrl(url).get.componentUid),setTimeout(()=>{$(window).scrollTop(scrollTop)},300)})},updateProductteaserHeight(){const $productteaser=this.$ctx.find(".m-productteaseripg");$productteaser.length>0&&$productteaser.each(function(i,element){const $productteaserContainer=$(element).find(".productteaseripg-container").outerHeight();$(element).hasClass("no-background")&&"desktop"===T.Utils.getViewport()?$(element).height($productteaserContainer+40+"px"):$(element).height("")})}})}(jQuery),function($){T.Module.IPGSelectionOverview=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$links=this.$ctx.find("*[data-ajax-url]"),this.$links.on("click",ev=>this.onClickBreadcrumbLink(ev)),resolve()},onClickBreadcrumbLink(ev){ev.preventDefault();const ajaxUrl=$(ev.currentTarget).attr("data-ajax-url");this.callback&&"function"==typeof this.callback&&this.callback(ajaxUrl)},registerCallbackLink(callback){this.callback=callback}})}(jQuery),function($){T.Module.ItemServiceItem=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$layerTriggerCollection=this.$ctx.find(".js-item-delete-layer"),this.$additionalLinkListAjax=this.$ctx.find(".js-item-delete-form"),this.$subscriptionIntervalsAjax=this.$ctx.find(".js-subscription-Interval"),this.$deliveryInterval=this.$ctx.find(".js-dropdownSubscription"),this._events.on("t.sync",()=>this.sync()),this._events.on("removeCartItem",data=>this.openPopupLayer(data)),this.additionalLinkListAjaxConfig=this.$additionalLinkListAjax.data("ajax"),this.additionalLinkListAjaxId=this.$additionalLinkListAjax.data("ajax-id"),this.$additionalLinkListAjax.on("submit",ev=>this.onClickAcceptButton(ev)),this.subscriptionIntervalsAjaxConfig=this.$subscriptionIntervalsAjax.data("ajax"),this.subscriptionIntervalsAjaxId=this.$subscriptionIntervalsAjax.data("ajax-id"),this.$deliveryInterval.on("change",()=>this.getSelectedSubscriotionInterval()),resolve()},sync(){},openPopupLayer(data){this.$layerTriggerCollection.data("layer-id")===data.layerId&&(this.$layer=T.Utils.application._sandbox.getModuleById(this.$layerTriggerCollection.data("t-id")),this.$layer.openLayer())},onClickAcceptButton(ev){if(ev.preventDefault(),this.additionalLinkListAjaxId){T.Utils.startAjaxRequest(this.additionalLinkListAjaxId,this.additionalLinkListAjaxConfig)&&this.$layer.hideLayer()}},getSelectedSubscriotionInterval(){const deliveryInterval=$("option:selected",this.$deliveryInterval).val(),productC
7ode=$("option:selected",this.$deliveryInterval).data("product");if(this.subscriptionIntervalsAjaxConfig.data&&(this.subscriptionIntervalsAjaxConfig.data.deliveryInterval=deliveryInterval,this.subscriptionIntervalsAjaxConfig.data.productCode=productCode),this.subscriptionIntervalsAjaxId)T.Utils.startAjaxRequest(this.subscriptionIntervalsAjaxId,this.subscriptionIntervalsAjaxConfig)}})}(jQuery),function($){T.Module.IUMNavigationL1=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$tilesList=this.$ctx.find("ul.tileslist"),this.offset=this.$tilesList.offset(),$(window).on("scroll",$.proxy(this.onWindowScroll,this)),resolve()},stop(){$(window).off("scroll")},onWindowScroll(ev){let viewport=T.Utils.getViewport();if("mobile"===viewport||"tablet"===viewport)return this.$tilesList.removeClass("fixed"),void this.$ctx.removeClass("fixed");$(window).scrollTop()>=this.offset.top?(this.$tilesList.addClass("fixed"),this.$ctx.addClass("fixed")):(this.$tilesList.removeClass("fixed"),this.$ctx.removeClass("fixed"))}})}(jQuery),function($){T.Module.KlarnaInstallmentsWidget=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.isSynced=!1,this.selector={klarnaWidget:".js-klarna-widget"},this.elm={$klarnaWidget:$(this.selector.klarnaWidget)},this.klarnaWidgetSdk=this.elm.$klarnaWidget.data("klarnaSdkurl"),this.klarnaWidgetClientId=this.elm.$klarnaWidget.data("klarnaClientId"),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.loadKlarnaSdk(this.klarnaWidgetSdk,this.klarnaWidgetClientId))},loadKlarnaSdk(src,clientid){T.Commons.ScriptLoader.appendScripToBody(src,{"data-client-id":clientid,async:""})}})}(jQuery),function($){T.Module.LanguageCountrySwitch=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$contentExpanded=this.$ctx.find(".content-expanded"),this.$contentCollapsed=this.$ctx.find(".content-collapsed"),this.$closeBtn=this.$contentExpanded.find(".close-btn"),this.$languageContainer=this.$contentExpanded.find(".js-languages"),this.$languageLinks=this.$languageContainer.find(".a-link"),this.$firstLevel=this.$ctx.closest(".first-level"),this.$languageSelectorBtn=this.$contentCollapsed.find(".language-selector-btn-wrapper"),this.multiLanguage=this.$languageSelectorBtn.hasClass("multi-language"),this.animationDelay=350,this.$contentCollapsed.on("click",()=>this.toggleLanguageSwitch()),this.$closeBtn.on("click",()=>this.toggleLanguageSwitch()),this.$contentCollapsed.on("keydown",e=>this.handleKeyDown(e)),this.$closeBtn.on("keydown",e=>this.handleKeyDown(e)),this.$languageLinks.on("click",e=>this.handleLinkClick(e)),this.disableAccesibility(),resolve()},toggleLanguageSwitch(){this.multiLanguage&&(this.$ctx.hasClass("open")?(this.$ctx.removeClass("open"),this.disableAccesibility(),setTimeout(()=>{this.$firstLevel.css("min-height","0")},this.animationDelay)):(this.$ctx.addClass("open"),this.enableAccesibility(),this.$firstLevel.outerHeight()<this.$contentExpanded.outerHeight()&&this.$firstLevel.css("min-height",this.$contentExpanded.outerHeight())))},handleKeyDown(e){13===e.keyCode&&this.toggleLanguageSwitch()},disableAccesibility(){this.$contentExpanded.find('.a-link, [tabindex="0"]').attr("tabindex","-1")},enableAccesibility(){this.$contentExpanded.find('.a-link, [tabindex="-1"]').attr("tabindex","0")},handleLinkClick(e){e.preventDefault();const $clickedLink=$(e.currentTarget),location=$clickedLink.attr("href"),requestUrl=this.$languageContainer.data("request-url"),requestValue=$clickedLink.data("request-value");T.Utils.startAjaxRequest(!1,{url:requestUrl,dataType:"text"},{userSelectedLocale:requestValue},()=>{location?window.location=location:this.toggleLanguageSwitch()})}})}(jQuery),function($){T.Module.Layer=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$background=this.$(".js-overlay"),this.$closeButton=this.$(".js-close-button"),this.$layerContentToLoadOnOpen=this.$ctx.find(".js-layer-content-inner-partial-tpl"),this.initLayerContentStarted=!1,this.layerContentToLoadOnOpenInitialized=!1,this.$layerContent=this.$ctx.find(".js-layer-container-inner"),this.$closeOnExtLink=this.$ctx.hasClass("js-special-close"),this.closeLayerOnExternalLink(),this.onCloseCallbacks=this.onCloseCallbacks||[],this.onCloseCallbacks=this.onCloseCallbacks.concat(this._ctx.onCloseCallbacks||[]),this.configuration=this.$ctx.data(),this.autoCloseTimeoutId=!1,this.autoCloseTimeoutInMs=0,this._events.on("openLayer",data=>this.onOpenLayer(data)),"number"==typeof this.$ctx.data("auto-close-timeout")&&(this.autoCloseTimeoutInMs=this.$ctx.data("auto-close-timeout")),$(document).on("click",`[data-layer-id='${this.configuration.id}']`,$.proxy(this.onClickTrigger,this)),this.autoOpenTimeoutInMs=0,this.autoOpenTimeoutId=!1,this.ro=new ResizeObserver((entry,observer)=>{this.onResize()}),this.$ctx.data("openonload")?this.openLayer():"number"==typeof this.$ctx.data("auto-open-timeout")&&(this.autoOpenTimeoutInMs=this.$ctx.data("auto-open-timeout"),this.startAutoOpenTimeout()),this.$closeButton.length&&(this.$ctx.on("click",".js-close-button",$.proxy(this.onClickCloseButton,this)),!1!==(this.configuration.closableByBg||!1)&&this.$background.on("click",$.proxy(this.onClickBackgroun
7d,this)),!1!==(this.configuration.closableByEsc||!1)&&$(document).on("keyup",$.proxy(this.onKeyup,this))),this._events.on("sparepartsCloseLayer",$.proxy(this.hideLayer,this)),this._events.on("hideLayer",$.proxy(this.hideLayer,this)),this._events.on("showLayer",$.proxy(this.onShowLayer,this)),resolve()},listenToCloseByUserAction(callback){this.onCloseCallbacks=this.onCloseCallbacks||[],this.onCloseCallbacks.push(callback)},executeCloseByUserActionCallbacks(){return!(!this.onCloseCallbacks||0===this.onCloseCallbacks.length)&&($(this.onCloseCallbacks).each((index,callback)=>{callback(this)}),!0)},closeLayerOnExternalLink(){this.$closeOnExtLink&&(this.$closeLayerOnClick=this.$ctx.find("a[target='_blank'], a[data-link-type='close-layer']"),this.$closeLayerOnClick.on("click",ev=>this.hideLayer()))},hideLayer(skipEmit,filterClass){filterClass?this.$ctx.filter(filterClass).removeClass("is-active"):this.$ctx.removeClass("is-active"),this._events.emit("togglePageScrolling",{pin:!1}),skipEmit||this._events.emit("closeLayer",{$ctx:this.$ctx}),this.ro.unobserve(this.$layerContent[0]),this.stopAutoCloseTimeout(),this.modalPopupFocus&&this.modalPopupFocus.disengage()},showLayer($triggerElement,emitOpenLayerEvent){this.initFocusTrap(),this.resetAutoOpenTimeout(),this.parentElementSelected=$triggerElement,this.loadLayerContent().then(()=>{this.$ctx.addClass("is-active"),this._events.emit("reArrangeTabs"),emitOpenLayerEvent&&this._events.emit("openLayer",{$ctx:this.$ctx,$triggerElement:$triggerElement}),this.ro.observe(this.$layerContent[0]),this.startAutoCloseTimeout()})},openLayer(element){this.resetAutoOpenTimeout(),this.$ctx.addClass("is-active"),this.parentElementSelected=element,this.$ctx.focus(),this.initFocusTrap(),this.ro.observe(this.$layerContent[0]),this._events.emit("togglePageScrolling",{pin:!0}),this.startAutoCloseTimeout()},onOpenLayer(){this._events.emit("togglePageScrolling",{pin:!0})},loadLayerContent(){return this.layerContentToLoadOnOpenInitialized||!this.$layerContentToLoadOnOpen.length||this.initLayerContentStarted?Promise.resolve():(this.prepareLayerContentForIE(),new Promise(resolve=>{this.initLayerContentStarted=!0,this.$layerContent.append(this.$layerContentToLoadOnOpen.html()),T.Utils.initializeModules(this.$layerContent,initSuccesful=>{this.initLayerContentStarted=!1,initSuccesful&&(this.layerContentToLoadOnOpenInitialized=!0),resolve()})}))},prepareLayerContentForIE(){if(window.MSInputMethodContext&&document.documentMode&&this.$layerContentToLoadOnOpen.length){const cnt=this.$layerContentToLoadOnOpen.contents();this.$layerContentToLoadOnOpen.replaceWith(cnt)}},startAutoCloseTimeout(){if(this.autoCloseTimeoutInMs<1)return;this.resetAutoCloseTimeout();this.autoCloseTimeoutId=setTimeout(()=>{this.hideLayer(!1)},this.autoCloseTimeoutInMs)},stopAutoCloseTimeout(){this.resetAutoCloseTimeout()},resetAutoCloseTimeout(){!1!==this.autoCloseTimeoutId&&(clearTimeout(this.autoCloseTimeoutId),this.autoCloseTimeoutId=!1)},startAutoOpenTimeout(){if(this.autoOpenTimeoutInMs<0)return;this.resetAutoOpenTimeout();this.autoOpenTimeoutId=window.setTimeout(()=>{this.openLayer()},this.autoOpenTimeoutInMs)},resetAutoOpenTimeout(){this.autoOpenTimeoutId&&(window.clearTimeout(this.autoOpenTimeoutId),this.autoOpenTimeoutId=!1)},onClickBackground(ev){this.executeCloseByUserActionCallbacks()||this.hideLayer()},onClickCloseButton(ev){this.executeCloseByUserActionCallbacks()||this.hideLayer()},onClickTrigger(ev){this.$ctx.data("nopreventdefault")||ev.preventDefault();const $triggerElement=$(ev.currentTarget);this.showLayer($triggerElement,!0)},onKeyup(ev){if(27===ev.keyCode){if(this.executeCloseByUserActionCallbacks())return;this.hideLayer(),$(this.parentElementSelected)[0]&&$(this.parentElementSelected)[0].focus()}},onShowLayer(data){this.showLayer(data.$evTarget,!0)},onHideLayer(){this.hideLayer()},hasScrollBar:$el=>$el.get(0).scrollHeight>$el.get(0).clientHeight,onResize(){this.hasScrollBar(this.$ctx)?this.$background.addClass("has-scrollbar"):this.$background.removeClass("has-scrollbar")},initFocusTrap(){this.modalPopupFocus=ally.maintain.tabFocus({context:this.$ctx})}})}(jQuery),function($){T.Module.LocalStock=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$localStockIcon=this.$ctx.find(".js-local-stock-icon"),this.$localStockIcontooltip=this.$ctx.find(".js-localstock-popover"),this.$localStockIcon.on("click",ev=>this.loadLocalStockData(ev)),this.$localStockIcon.on("mouseenter",ev=>this.loadLocalStockData(ev)),this.$localStockIcon.on("mouseleave",()=>{this.$localStockIcontooltip.removeClass("is-active")}),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},loadLocalStockData(ev){ev.preventDefault(),("click"===ev.type&&"desktop"!==T.Utils.getViewport()||"mouseenter"
7===ev.type&&"desktop"===T.Utils.getViewport())&&this._events.emit("popover:open",this.$localStockIcon)}})}(jQuery),function($){T.Module.LocationLanguageSelection=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$locationContainer=this.$ctx.find(".js-location-container"),this.$languageContainer=this.$ctx.find(".js-language-container"),this.$layer=this.$ctx.closest(".m-layer"),this.locationLayerModule=T.Utils.application._sandbox.getModuleById(this.$layer.data("t-id")),this._events.on("closeLayer",ev=>this.onCloseLayer(ev)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.initLayer(),this.isSynced=!0)},initLayer(){this.$locationContainer.length&&this.addLocationSubmitListener(),this.$languageContainer.length&&this.addLanguageSubmitListener(),sessionStorage.getItem("locationLanguageSelectionClosed")?this.showCookieLayer():this.locationLayerModule.showLayer()},showCookieLayer(){this._events.emit("openCookieLayer")},onCloseLayer(ev){ev.$ctx.is(this.$layer)&&(sessionStorage.setItem("locationLanguageSelectionClosed",!0),this.showCookieLayer())},addLocationSubmitListener(){this.$locationContainer.on("submit",e=>{e.preventDefault();const $selectedInput=this.$locationContainer.find("input:checked"),selectedRedirectUrl=$selectedInput.data("redirect-url"),selectedValue=$selectedInput.val(),ajaxUrl=this.$locationContainer.find("form").attr("action");T.Utils.startAjaxRequest(!1,{url:ajaxUrl,dataType:"text"},{userSelectedCountry:selectedValue},err=>{err?this.locationLayerModule.hideLayer():selectedRedirectUrl?window.location.href=selectedRedirectUrl:this.$languageContainer.length?(this.$locationContainer.addClass("hidden"),this.$languageContainer.removeClass("hidden")):this.locationLayerModule.hideLayer()})})},addLanguageSubmitListener(){this.$languageContainer.on("submit",e=>{e.preventDefault();const $selectedInput=this.$languageContainer.find("input:checked"),selectedRedirectUrl=$selectedInput.data("redirect-url"),selectedValue=$selectedInput.val(),ajaxUrl=this.$languageContainer.find("form").attr("action");T.Utils.startAjaxRequest(!1,{url:ajaxUrl,dataType:"text"},{userSelectedLocale:selectedValue},err=>{err?this.locationLayerModule.hideLayer():selectedRedirectUrl?window.location=selectedRedirectUrl:this.locationLayerModule.hideLayer()})})}})}(jQuery),function($){T.Module.LocationRegion=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$regionTriggerAjax=this.$ctx.find(".js-trigger-ajax-request"),this.isSynced=!1,$(window).on("load",T.Utils.debounce(()=>{this.$regionTriggerAjax.trigger("allsynced")},50)),this._events.on("t.sync",()=>this.sync()),this.$locationOverlay=$(".js-show-location-overlay",this.$ctx),this.$locationOverlay.on("click",()=>this.openLocationOverlay()),resolve()},sync(){this.isSynced?1!==this.$ctx.parents(".m-layer_locationselector").length&&1!==this.$ctx.parents(".m-locationselectorlayout").length||(this.selectors={select:"select"},this.$selects=this.$ctx.find(this.selectors.select),this.$selects.on("select2:select",e=>{this._events.emit("locationselectorlayout.submit",[e])})):this.isSynced=!0},openLocationOverlay(){return this._events.emit("showLocationLayer")}})}(jQuery),function($){T.Module.LocationSelectorLayout=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$locationLayout=this.$ctx,this.sel={locationLink:".js-location-link",requestform:".js-ajax-request",requesttrigger:".js-submit-location",locationinput:".js-location-input",regioninput:".js-region-input",errorMessageJson:".js-custom-error-message",hasError:".js-error",selectedCountryCode:"[data-selectedCountryCode]"},this.elm={$locationLink:$(this.sel.locationLink),$requestform:$(this.sel.requestform,this.$ctx),$requesttrigger:$(this.sel.requesttrigger,this.$ctx),$locationinput:$(this.sel.locationinput,this.$ctx),$regioninput:$(this.sel.regioninput,this.$ctx),$errorMessageJson:$(this.sel.errorMessageJson,this.$ctx)},this.sync=$.proxy(this.sync,this),this._events.on("t.sync",this.sync),this._events.on("showLocationLayout",ev=>this.onShowLocationLayout(ev)),this._events.on("locationselectorlayout.submit",e=>this.onTriggerLocationSubmit(e)),this.elm.$locationinput.on("change",()=>this.onChangeLocationInput()),this.elm.$requestform.on("submit",ev=>this.onTriggerLocationSubmit(ev)),this.elm.$locationLink.on("click",ev=>{ev.preventDefault(),this.onClickLocationLink()}),this.$ctx.hasClass("js-error")&&this.$locationLayout.addClass("show-layout"),this.browserLocalStoragePostalCode(),resolve()},sync(){this.isSynced||(this.isSynced=!0)},browserLocalStoragePostalCode(){if(this.selectedCountryCode=$(this.sel.selectedCountryCode).data("selectedcountrycode"),this.selectedCountryCode){let selectedLocationCountryCode=this.selectedCountryCode.selectedLocation;this.localStoragePostalCode="selectedLocation_"+selectedLocationCountryCode;let extistingLocalStorageValue=localStorage.getItem(this.localStoragePostalCode);
7if(extistingLocalStorageValue){let postalCodeLoacalStorage=this.elm.$locationinput.val(),extistingLocalStoragePostalCodeValue=JSON.parse(extistingLocalStorageValue).postalCode;if(postalCodeLoacalStorage!=extistingLocalStoragePostalCodeValue){this.elm.$locationinput.value=extistingLocalStoragePostalCodeValue;const preferredLocation=extistingLocalStoragePostalCodeValue,loactionSelectorAjax=this.elm.$requestform.attr("data-ajax"),loactionSelectorAjaxUrl=JSON.parse(loactionSelectorAjax),data={preferredLocation:preferredLocation},request=T.Utils.startAjaxRequest(!1,{url:loactionSelectorAjaxUrl.url,method:"POST",dataRendering:!1,data:data});if(!request)return!1;request[0].done(response=>{if(response.success)this._events.emit("locationselectorLayout:locationset",{locationinput:extistingLocalStoragePostalCodeValue}),setTimeout(()=>{window.location.reload()},1e3);else{const validationMessage=response.error;this.setJsonError(validationMessage)}})}}}},onShowLocationLayout(ev){this.onClickLocationLink(ev)},onClickLocationLink(){this.$locationLayout.addClass("show-layout"),this.selectors={select:"select"},this.$selects=this.$ctx.find(this.selectors.select),this.$selects.on("select2:select",e=>{this.onTriggerLocationSubmit(e)})},onChangeLocationInput(){this.elm.$locationinput.hasClass("has-error")&&this.elm.$locationinput.removeClass("has-error")},showError($element){$element.show()},setJsonError(errorMsg){if(this.elm.$locationinput.data("location-type").toUpperCase()!=="REGION".toUpperCase())this.elm.$errorMessageJson.text(errorMsg),this.elm.$locationinput.addClass("has-error"),this.elm.$locationinput.removeClass("had-focus"),this.showError(this.elm.$errorMessageJson);else{const regionErrorMessage=this.$ctx.find(this.sel.errorMessageJson),regionInput=this.$ctx.find(this.sel.regioninput);regionErrorMessage.text(errorMsg),regionInput.addClass("has-error"),regionInput.removeClass("had-focus"),this.showError(regionErrorMessage)}},validateBeforeSubmit(){if(this.elm.$locationinput.length){const isLocationInputEmpty=""===this.elm.$locationinput.val(),isLocationInputValid=this.elm.$locationinput.data("location-type").toUpperCase()!=="REGION".toUpperCase()&&this.elm.$locationinput.val().length<3;return!isLocationInputEmpty&&!isLocationInputValid||(this.elm.$locationinput.addClass("has-error"),!1)}return!0},onTriggerLocationSubmit(e){if("function"==typeof e.preventDefault&&e.preventDefault(),this.elm.$locationinput.val()||(this.elm.$locationinput=$(this.sel.locationinput,this.$ctx)),this.validateBeforeSubmit()){const request=T.Utils.startAjaxRequest(this.elm.$requestform.data("ajax-id"));if(!request)return!1;request[0].done(response=>{const result=JSON.parse(response);if(result.success){let postalCodeLoacalStorage=this.elm.$locationinput.val();if(this.selectedCountryCode=$(this.sel.selectedCountryCode).data("selectedcountrycode"),this.selectedCountryCode){let selectedLocationCountryCode=this.selectedCountryCode.selectedLocation;this.localStoragePostalCode="selectedLocation_"+selectedLocationCountryCode;let updateLocalStagePostcode=localStorage.getItem(this.localStoragePostalCode);if(updateLocalStagePostcode){let updateLocalStorageValueData=JSON.parse(updateLocalStagePostcode),updateLocalStoragePostalCodeValue=updateLocalStorageValueData.type;updateLocalStorageValueData.id;if("POSTAL_CODE"===updateLocalStoragePostalCodeValue){const localStoragePostalCodePCValue={type:"POSTAL_CODE",id:"",postalCode:postalCodeLoacalStorage,label:postalCodeLoacalStorage};localStorage.setItem(this.localStoragePostalCode,JSON.stringify(localStoragePostalCodePCValue))}if("DELIVERY_ADDRESS"===updateLocalStoragePostalCodeValue){const localStoragePostalCodeDAValue={type:"POSTAL_CODE",id:"",postalCode:postalCodeLoacalStorage,label:postalCodeLoacalStorage};localStorage.setItem(this.localStoragePostalCode,JSON.stringify(localStoragePostalCodeDAValue))}}else{const localStoragePostalCodeValue={type:"POSTAL_CODE",id:"",postalCode:postalCodeLoacalStorage,label:postalCodeLoacalStorage};localStorage.setItem(this.localStoragePostalCode,JSON.stringify(localStoragePostalCodeValue))}}this._events.emit("locationselectorLayout:locationset",{locationinput:this.elm.$locationinput.val()}),setTimeout(()=>{window.location.reload()},1e3)}else{const validationMessage=result.error;this.setJsonError(validationMessage)}})}}})}(jQuery),function($,doT){const reviewsShow=$(".js-show-dealer-reviews").val();let hasOnlyOneDealer=!1;T.Module.MapList=T.createModule({start(resolve,reject){const mod=this;return mod.$ctx=$(this._ctx),this.doT=doT,mod.$mapWrap=mod.$(".js-map-wrap"),mod.$dealerWrap=mod.$(".js-dealer-wrap"),mod.$dealerListWrap=mod.$(".js-dealer-list-wrap"),mod.$dealerDetailWrap=mod.$(".js-dealer-detail-wrap"),mod.$dealerList=mod.$(".js-dealer-list"),mod.$dealerDetail=mod.$(".js-dealer-detail"),mod.$mapContainer=mod.$(".js-map"),mod.$mapContainerInner=mod.$(".js-map-inner"),mod.$buttonToggleList=mod.$(".js-button-toggle-list"),mod.$buttonShowLayer=mod.$(".js-button-show-layer"),mod.$buttonBackToList=mod.$(".js-link-back-to-list"),mod.$buttonShowMore=mod.$(".js-button-show-more"),this.$webMappingImagery=this.$('[data-t-name="WebMappingImagery"]'),this.jsonConfig=window.storeLocator,mod.dealerItemListTpl=mod.doT.template(mod.$(".js-dealer-item-list-tpl").html()),mod.dealerFeatureListTpl=mod.doT.template(mod.$(".js-dealer-feature-tpl").html()),mod.dealerDetailVie
7wTpl=mod.doT.template(mod.$(".js-dealer-detail-view-tpl").html()),mod.dealerNoResultsTpl=mod.doT.template(mod.$(".js-dealer-no-results-tpl").html()),this._events.on("webMappingImagery:initialized",data=>this.onWebMappingImageryLoaded(data)),this._events.on("newDealersAvailable",data=>this.onNewDealerDataAvailable(data)),this._events.on("filterByFacets",data=>this.onFilterByFacets(data)),this._events.on("openLayer",()=>this.onOpenLayer()),this._events.on("closeLayer",()=>this.onCloseLayer()),this._events.on("t.sync",()=>this.sync()),this._events.on("viewportChanged",viewport=>this.onViewportChange(viewport)),mod.globalSettings=T.Utils.dealerLocator,mod.mapZoomLevelDetail=mod.globalSettings.detailViewZoomLevel,mod.showMorePageSize=mod.globalSettings.smallScreenShowMorePageSize,mod.showMoreCurrentlyVisible=mod.globalSettings.smallScreenShowMorePageSize,mod.hasProductContext=!1,mod.hasDealerResults=!1,mod.currentViewport="",mod.parentModuleId=mod.$ctx.closest(".o-dealerlocator").data("t-id"),mod.dealerGallerySizes=mod.$ctx.data("dealer-image-settings"),mod.markers=[],mod.markersByDealerId=[],mod.dealersById=[],mod.thisDealerUrl="",mod.lastDealerCalled=0,mod.dealerFacets={},mod.selectedFiltersCount=0,mod.activeDealerId="",mod.mustDealersShowRatingsOnDetailView=[],mod.dealersOnCall=[],mod.indexOfDealersAlreadyLoaded=[],mod.scrollTime=0,mod.lastScrollFireTime=0,mod.observerLaunched=!1,this._events.on("webMappingImagery:loaded",data=>this.onWebMappingImageryLoaded(data)),this.googleMapsDealerInit(),resolve()},sync(){this.isSynced||(this.isSynced=!0),T.Commons.ScriptLoader.loadOnceGoogleMapsApi({channel:this.$ctx.data("google-channel"),client:this.$ctx.data("google-client"),key:this.$ctx.data("google-key")}),this.googleMapsLoaded&&reviewsShow&&this.observeDealersOnScroll()},addDealerFacetsToArray(dealer){const mod=this;if("filter-visible"===dealer.filterState)return $.each(dealer.facets,function(index,facet){if(-1===$.inArray(facet,mod.dealerFacets))return null==mod.dealerFacets[facet]&&(mod.dealerFacets[facet]={},mod.dealerFacets[facet].itemCount=0),mod.dealerFacets[facet].itemCount++})},googleMapsDealerInit(){this.googleGeocodeApiUrl="https://maps.googleapis.com/maps/api/geocode/json",this.jsonConfig=window.storeLocator,T.Commons.ScriptLoader.registerGoogleMapsApiModules("places"),this._events.on("googleMaps:loaded",data=>this.googleMapsInitialized(data)),this._events.on("t.sync",()=>this.sync())},googleMapsInitialized(data){return this.googleMaps=data.googleMaps,this.googleMapsLoaded=!0,this.googleMapsLoaded},isDealerOnView(index){const mod=this,element=mod.$dealerList.find(".js-dealer-item:nth-child("+index+")");if(element.hasClass("filter-hidden"))return!1;if("mobile"===T.Utils.currentViewport&&element.hasClass("mobile-hidden"))return!1;const container=mod.$dealerList;return element.offset().top<container.offset().top+container.height()&&(-1===mod.indexOfDealersAlreadyLoaded.indexOf(index)&&mod.indexOfDealersAlreadyLoaded.push(index),!0)},async getDealerReviewsData(myCurrentDealerId){if("true"===reviewsShow){const mod=this;if("object"!=typeof myCurrentDealerId&&"number"!=typeof myCurrentDealerId||(myCurrentDealerId=myCurrentDealerId.toString()),mod.lastDealerCalled!=myCurrentDealerId&&!mod.checkDealerReviewsLoaded(myCurrentDealerId)){mod.lastDealerCalled=myCurrentDealerId;let dealerLat,dealerLng="";try{dealerLat=mod.markersByDealerId[myCurrentDealerId].getPosition().lat(),dealerLng=mod.markersByDealerId[myCurrentDealerId].getPosition().lng()}catch(err){null!==dealerLat&&""!==dealerLat&&void 0!=dealerLat||(dealerLat=mod.$dealerList.find('.js-dealer-item[data-dealer-id="'+myCurrentDealerId+'"]').data("location-lat")),null!==dealerLng&&""!==dealerLng&&void 0!=dealerLng||(dealerLng=mod.$dealerList.find('.js-dealer-item[data-dealer-id="'+myCurrentDealerId+'"]').data("location-lng"))}let thisDealerQuery="";thisDealerQuery=mod.$dealerList.find('.js-dealer-item[data-dealer-id="'+myCurrentDealerId+'"] > div > div.dealer-col-1 > h3 > span[itemprop="name"]').html()+", "+mod.$dealerList.find('.js-dealer-item[data-dealer-id="'+myCurrentDealerId+'"] > div > div.dealer-col-1 > address > span[itemprop="streetAddress"]').html()+" "+mod.$dealerList.find('.js-dealer-item[data-dealer-id="'+myCurrentDealerId+'"] > div > div.dealer-col-1 > address > span[itemprop="addressLocality"]').html()+" "+mod.$dealerList.find('.js-dealer-item[data-dealer-id="'+myCurrentDealerId+'"] > div > div.dealer-col-1 > address > span[itemprop="addressCountry"]').html();const dealerLocatorWReviews=new this.googleMaps.LatLng(dealerLat,dealerLng),request={query:thisDealerQuery,fields:["name","formatted_address","place_id","rating","user_ratings_total"],locationBias:{lat:dealerLat,lng:dealerLng}},injectedMapContainer=document.createElement("div"),map=new this.googleMaps.Map(injectedMapContainer,{center:dealerLocatorWReviews,zoom:15}),service=new this.googleMaps.places.PlacesService(map);await service.findPlaceFromQuery(request,(results,status)=>{if(status===this.googleMaps.places.PlacesServiceStatus.OK)if(1===results.length){hasOnlyOneDealer=!0;const myRating=results[0].rating.toString(),reviewsCount=results[0].user_ratings_total.toString(),googlePlacesId=results[0].place_id.toString(),reviewsText=$(".js-dealer-reviews-link-text").val();
7mod.mustDealersShowRatingsOnDetailView.push({id:myCurrentDealerId,rating:myRating,reviewsCount:reviewsCount,url:"",shouldShow:!0,googlePlacesId:googlePlacesId}),mod.renderDealerStarsRating(googlePlacesId,dealerLat,dealerLng,myCurrentDealerId,reviewsText)}else mod.mustDealersShowRatingsOnDetailView.push({id:myCurrentDealerId,shouldShow:!1}),hasOnlyOneDealer=!1}),mod.observerLaunched||(document.querySelectorAll(".dealer-item.js-dealer-item")[0].click(),mod.observerLaunched=!0)}}},getDealerGoogleMapsUrl(dealerGoogleMapsId,lat,lng){if("true"===reviewsShow){const mod=this,dealerLocatorUrlMap=new this.googleMaps.LatLng(lat,lng),request={placeId:dealerGoogleMapsId,fields:["url"]},injectedMapContainer=document.createElement("div"),map=new this.googleMaps.Map(injectedMapContainer,{center:dealerLocatorUrlMap,zoom:1});new google.maps.places.PlacesService(map).getDetails(request,(results,status)=>{status===google.maps.places.PlacesServiceStatus.OK&&(mod.thisDealerUrl=results.url.toString(),mod.mustDealersShowRatingsOnDetailView.filter(dealer=>dealer.googlePlacesId===dealerGoogleMapsId)[0].url=mod.thisDealerUrl,window.open(mod.thisDealerUrl,"_blank"))})}},checkDealerReviewsLoaded(dealerIdToSearch){return!!this.mustDealersShowRatingsOnDetailView.find(dealer=>{if(dealer.id===dealerIdToSearch)return!0})},activateTrackingLinks(myCurrentDealerId){if("true"===reviewsShow){const mod=this;let trackingReviews=mod.$dealerList.find('.js-dealer-item[data-dealer-id="'+myCurrentDealerId+'"] > div > .dealer-col-1 > .dealer-reviews').find(".link .a-link").data("eventtracking").dataValues;mod.$dealerList.find('.js-dealer-item[data-dealer-id="'+myCurrentDealerId+'"] > div > .dealer-col-1 > .dealer-data.links').children().each(function(index){index<=2&&"1"!==$(this).find(".a-link").data("eventtracking").dataValues.rating&&($(this).find(".a-link").data("eventtracking").dataValues.rating="1")}),"1"!==trackingReviews.rating&&(trackingReviews.rating="1")}},renderDealerStarsRating(dealerGoogleMapsId,lat,lang,dealerID,reviewsText){if("true"===reviewsShow){const mod=this;let url="",reviewsCount="",rating="";const thisDealerHtmlSelector=mod.$dealerList.find('.js-dealer-item[data-dealer-id="'+dealerID+'"] > div > div.dealer-col-1 > div.dealer-reviews'),thisDealerLink=thisDealerHtmlSelector.find(".link > .js-dealer-reviews-link");mod.mustDealersShowRatingsOnDetailView.find(dealer=>{dealer.id===dealerID&&(rating=dealer.rating,reviewsCount=dealer.reviewsCount,url=dealer.url)}),thisDealerHtmlSelector.find(".rating").html(rating),thisDealerLink.html(reviewsCount+" "+reviewsText),this.addDealerLinkEvents(thisDealerLink,dealerGoogleMapsId,lat,lang);const starsOfThisDealer=mod.$dealerList.find('.js-dealer-item[data-dealer-id="'+dealerID+'"] > div > .dealer-col-1 > .dealer-reviews > .stars');let numberOfFullStars=0,ratingHasDecimal=!0,decimalValue=0;const commaPosition=rating.indexOf(".");for(commaPosition>=0?(numberOfFullStars=rating.substr(0,commaPosition),ratingHasDecimal=!0):(numberOfFullStars=rating,ratingHasDecimal=!1),i=1;i<=numberOfFullStars;i++)i<=numberOfFullStars&&starsOfThisDealer.find(".icon:nth-child("+i+")").addClass("is-active");if(ratingHasDecimal){decimalValue=(decimalValue=rating.substr(commaPosition+1,2)).trim(),decimalValue=parseInt(decimalValue);let width=starsOfThisDealer.children().eq(0).width();width<17&&(width=17);const backgroudWidth=Math.ceil(width/100*(10*decimalValue))+"px";starsOfThisDealer.find(".icon:nth-child("+numberOfFullStars+")").next().addClass("is-active"),starsOfThisDealer.find(".icon:nth-child("+numberOfFullStars+")").next().addClass(numberOfFullStars>=4?"is-active-partly last-star":"is-active-partly"),starsOfThisDealer.find(".is-active-partly").css("width",backgroudWidth||17)}thisDealerHtmlSelector.removeClass("not-loaded").addClass("loaded"),mod.activateTrackingLinks(dealerID)}},observeDealersOnScroll(){const mod=this,nodeList=document.querySelectorAll(".js-dealer-item");let elements=Array.from(nodeList);const dealerList=document.querySelector(".js-dealer-list");if(elements&&elements.length>0){const deleteItems=mod.indexOfDealersAlreadyLoaded.length;elements=elements.splice(deleteItems,elements.length-1);const observer=new IntersectionObserver(function(entries,observer){entries.forEac
7h(entry=>{const myCurrentDealerId=entry.target.dataset.dealerId;entry.isIntersecting&&!mod.dealersOnCall.includes(myCurrentDealerId)&&(mod.dealersOnCall.find(dealer=>{if(dealer===myCurrentDealerId)return!0})||mod.getDealerReviewsData(myCurrentDealerId),mod.dealersOnCall.push(myCurrentDealerId),observer.unobserve(entry.target))})},{root:dealerList,rootMargin:"0px",threshold:0});elements.forEach(element=>{observer.observe(element)})}},addDealerListEvents(){const mod=this;return this.$dealerList.on("mouseover mouseout",".js-dealer-item",function(ev){const dealerId=$(ev.target).closest(".js-dealer-item").data("dealer-id");return null!=mod.markersByDealerId[dealerId]?mod.markersByDealerId[dealerId].getContent().toggleClass("mouseover"):void 0}),this.$dealerList.on("click",".js-dealer-item",event=>{this.onClickDealerItem(event)})},addDealerLinkEvents(dealerLink,dealerGoogleMapsId,lat,lang){const mod=this;return dealerLink.on("mousedown",function(event){if(1===event.which||2===event.which)return mod.onClickDealerLink(event,dealerGoogleMapsId,lat,lang)})},addMarkerEvents(marker){const mod=this,$dealerItem=mod.$dealerList.find(`.js-dealer-item[data-dealer-id='${marker.dealerId}']`);return marker.addMouseOverListener(()=>(marker.getContent().toggleClass("mouseover"),mod.checkDealerReviewsLoaded(marker.dealerId.toString())||mod.getDealerReviewsData(marker.dealerId.toString()),this.toggleDealerItemMouseOverClass($dealerItem))),marker.addMouseOutListener(()=>(marker.getContent().toggleClass("mouseover"),this.toggleDealerItemMouseOverClass($dealerItem))),marker.addClickListener(()=>this.onClickDealerMarker(marker))},destroyMarkers(){return $.each(this.markers,(index,marker)=>this.webMappingImagery.destroyMarker(marker)),this.markers=[],this.markersByDealerId={}},disableSmallScreenBehaviour(){if(this.$buttonToggleList.removeClass("mobile-hidden"),this.$buttonShowLayer.addClass("mobile-hidden"),this.handleShowMoreButtonState(),this.$mapContainer.off("click.triggerShowLayer"),this.webMappingImagery.hasMap())return this.$mapContainer.removeClass("trigger-layer"),this.toggleAllMapControls(!0),this.handleMarkerAndBoundsState()},enableSmallScreenBehaviour(){if(this.$buttonToggleList.addClass("mobile-hidden"),this.$buttonShowLayer.removeClass("mobile-hidden"),this.handleShowMoreButtonState(),this.$mapContainer.on("click.triggerShowLayer",event=>this.onClickMapContainer(event)),null!=this.webMappingImagery?this.webMappingImagery.hasMap():void 0)return this.$mapContainer.addClass("trigger-layer"),this.toggleAllMapControls(!1),this.handleMarkerAndBoundsState()},filterDealerByFacets(){const mod=this;let activeDealers=0;return this.dealerFacets={},$.each(mod.dealers,function(dealerIndex,dealer){let dealerIsVisible=!1,dealerIsVisibleOR=!1,dealerIsVisibleAND=!0;return mod.selectedFiltersCount>0?($.each(mod.selectedFilterGroups,function(groupId,filterGroup){return"AND"===filterGroup.innerOperator?($.each(filterGroup.selectedFilterItems,function(facetIndex,activeFacet){if(-1===$.inArray(activeFacet,dealer.facets))return dealerIsVisibleAND=!1}),dealerIsVisible=dealerIsVisibleAND):($.each(filterGroup.selectedFilterItems,function(facetIndex,activeFacet){if($.inArray(activeFacet,dealer.facets)>=0)return dealerIsVisibleOR=!0}),dealerIsVisible=dealerIsVisibleOR)}),dealerIsVisible&&(activeDealers++,dealer.dealerIndex=mod.stringPad(activeDealers,2))):(activeDealers++,dealerIsVisible=!0,dealer.dealerIndex=mod.stringPad(activeDealers,2)),mod.handleDealerVisibilityState(dealer,dealerIsVisible,activeDealers)}),this.handleMarkerAndBoundsState(),this.$dealerList.find(".js-dealer-item.mobile-hidden").length>0?this.$buttonShowMore.removeClass("hidden"):this.$buttonShowMore.addClass("hidden"),this._events.emit("newFacetDataAvailable",{facets:mod.dealerFacets,itemCount:activeDealers})},handleDealerVisibilityState(dealer,isVisible,activeDealerCount){const $dealerItem=this.$dealerList.find(`.js-dealer-item[data-dealer-id="${dealer.dealerID}"]`),marker=this.markersByDealerId[dealer.dealerID];return isVisible?(dealer.filterState="filter-visible",marker.filterState="filter-visible",$dealerItem.find(`.js-location-pin[data-dealer-id="${dealer.dealerID}"]`).data("dealer-index",dealer.dealerIndex).attr("data-dealer-index",dealer.dealerIndex),marker.getContent().data("dealer-index",dealer.dealerIndex).attr("data-dealer-index",dealer.dealerIndex),activeDealerCount>this.showMoreCurrentlyVisible?(dealer.mobileState="mobile-hidden",marker.mobileState="mobile-hidden"):(dealer.mobileState="mobile-visible",marker.mobileState="mobile-visible")):(dealer.filterState="filter-hidden",marker.filterState="filter-hidden"),this.addDealerFacetsToArray(dealer),$dealerItem.removeClass("filter-hidden").removeClass("filter-visible").addClass(dealer.filterState),$dealerItem.removeClass("mobile-hidden").removeClass("mobile-visible").addClass(dealer.mobileState)},handleMarkerAndBoundsState(){const mod=this;if((null!=this.webMappingImagery?this.webMappingImagery.hasMap():void 0)&&null!=this.markers&&this.markers.length>0){this.mapBounds=this.webMappingImagery.createMapBounds();let anyMarkerVisible=!1;return $.each(mod.markers,(index,marker)=>"filter-visible"===marker.filterState?(anyMarkerVisible=!0,"mobile"===mod.currentViewport?"mobile-visible"===marker.mobileState?(marker.setVisible(!0),this.mapBounds.extend(marker.getPosition())):marker.setVisible(!1):(marker.setVisible(!0),this.mapBounds.extend(marker.getPosition()))):marker.setVisible(!1)),anyMarkerVisible||(null!=this.mapBounds&&this.mapBounds.destroy(),this.mapBounds=null),this.handleMapState()}},handleMapState(){if(this.webMappingImagery.hasMap())return null!=this.activeDealerLoaction?(this.webMappingImagery.setMapCenter(this.activeDealerLoaction),this.webMappingImagery.setZoomLevel(this.mapZoomLevelDetail)):null!=this.mapBounds?(this.webMappingImagery.setMapCenter(this.mapBounds.getCenter()),this.webMappingImagery.fitToBounds(this.mapBounds)):(this.webMappingImagery.setMapCenter(this.mapCenter),this.webMappingImagery.setZoomLevel(this.mapZoomLevelInitial))},handleShowMoreButtonState(){if(this.hasDealerResults)return this.$dealerList.find(".js-dealer-item.mobile-hidden:not(.filter-hidden)").length>0?this.$buttonShowMore.removeClass("hidden"):this.$buttonShowMore.addClass("hidden")},hideDealerDetail(){if(this.resetActiveMarkerClass(),null!=this.mapBounds&&this.webMappingImagery.fitToBounds(this.mapBounds),"mobile"===this.currentViewport){if(this.$dealerListWrap.removeClass("hidden"),this.$dealerDetailWrap.addClass("hidden"),""!==this.activeDealerId){const $dealerItem=this.$dealerList.find(`.js-dealer-item[data-dealer-id='${this.activeDealerId}']`);T.Utils.scrollToTop($dealerItem)}}else this.$dealerListWrap.removeClass("hidden"),this.$dealerListWrap.animate({left:"0",right:"0"}),this.$dealerDetailWrap.animate({left:"100%",right:"-100%"},300,()=>this.$dealerDetailWrap.addClass("hidden"));return this.activeDealerId="",this.activeDealerLoaction=null},onWebMappingImageryLoaded(data){return this.webMappingImagery=data.component,this.initializeFilter(),this.jsonConfig.initiallyCollapsed||(this.initializeMap(),this.initializeEventHandler(),this.$ctx.removeClass("pre-initialized"),this.$ctx.parent().removeClass("pre-initialized")),this.onViewportChange(T.Utils.getViewport())},initializeFilter(){let enableFilter=!1,activeFilters=[];
7return this.jsonConfig.showFilters&&(enableFilter=!0),this.jsonConfig.activeFilters&&({activeFilters:activeFilters}=this.jsonConfig),this._events.emit("initializeFilter",{enableFilter:enableFilter,activeFilters:activeFilters,baseFilterGroups:this.jsonConfig.filterGroups})},initializeMap(){const centerCoord=this.webMappingImagery.createCoordinate(this.jsonConfig.inititalPos.center),zoomLevel=this.jsonConfig.inititalPos.zoom;return this.$mapContainerInner.length>0&&this.webMappingImagery.createMap(this.$mapContainerInner[0],centerCoord,zoomLevel),this.webMappingImagery.setMapCenter(centerCoord),this.mapCenter=centerCoord,this.mapZoomLevelInitial=zoomLevel,this.$mapWrap.removeClass("pre-initialized"),this.setViewportDependingMapSettings(this.currentViewport),this.renderMarkers(this.dealers),this.addDealerListEvents()},initializeEventHandler(){return this.$buttonToggleList.on("click",event=>this.onClickButtonToggleList(event)),this.$buttonBackToList.on("click",event=>this.onClickButtonBackToList(event)),this.$buttonShowMore.on("click",event=>this.onClickButtonShowMore(event)),this.webMappingImagery.addResizeListener(()=>this.handleMapState())},renderDealerList(dealers){const mod=this;if(this.$dealerList.off("mouseover mouseout"),this.$dealerList.empty(),this.dealerFacets={},!(dealers.length>0)){const noResultsHtml=mod.dealerNoResultsTpl({});return this.$dealerList.append(noResultsHtml),this.$dealerList.addClass("no-results"),this.hasDealerResults=!1}if($.each(dealers,function(index,dealer){null!=dealer.coords&&(dealer.routeUrl=mod.getRouteUrl(dealer.coords)),index>=mod.showMorePageSize?dealer.mobileState="mobile-hidden":dealer.mobileState="mobile-visible",dealer.dealerIndex=mod.stringPad(index+1,2),dealer.filterState="filter-visible";const dealerHtml=mod.dealerItemListTpl(dealer);return mod.$dealerList.append(dealerHtml),null!=dealer.facets&&dealer.facets.length>0&&mod.addDealerFacetsToArray(dealer),null!=dealer.details.features&&dealer.details.features.length>0&&mod.renderFeatureList("dealer-list",dealer),mod.isDealerOnView(index+1)&&!mod.checkDealerReviewsLoaded(dealer.dealerID.toString())&&mod.getDealerReviewsData(dealer.dealerID.toString()),mod.dealersById[dealer.dealerID]=dealer}),this.addDealerListEvents(),this.$dealerList.removeClass("no-results"),this.hasDealerResults=!0,this._events.emit("newFacetDataAvailable",{facets:mod.dealerFacets,itemCount:mod.dealers.length}),"mobile"===mod.currentViewport&&dealers.length>this.showMorePageSize)return this.$buttonShowMore.removeClass("hidden")},renderDealerDetailView(dealer){const mod=this;dealer.routeUrl=this.getRouteUrl(dealer.coords);const dealerDetailHtml=this.dealerDetailViewTpl({dealer:dealer,maplist:mod});this.$dealerDetailWrap.find(".js-dealer-detail").remove(),this.$dealerDetailWrap.append(dealerDetailHtml);const domElementAdded=this.$dealerDetailWrap.find(".dealer-gallery");T.Utils.initializeModules(domElementAdded);const thisDetailHtmlSelector=mod.$dealerDetailWrap.find(".dealer-layout > .dealer-col-1 > .dealer-reviews-detail"),reviewContent=$('.js-dealer-item[data-dealer-id="'+mod.activeDealerId+'"]').find(".dealer-reviews").html();$(thisDetailHtmlSelector).html(reviewContent);const mustCurrentDealerShowRatings=mod.mustDealersShowRatingsOnDetailView.filter(currentDealer=>currentDealer.id===dealer.dealerID)[0];if(mustCurrentDealerShowRatings&&mustCurrentDealerShowRatings.shouldShow){const thisDealerLink=thisDetailHtmlSelector.find(".link > .js-dealer-reviews-link");mod.addDealerLinkEvents(thisDealerLink,mustCurrentDealerShowRatings.googlePlacesId,dealer.coords.lat,dealer.coords.lng),thisDetailHtmlSelector.removeClass("not-loaded").addClass("loaded")}else thisDetailHtmlSelector.removeClass("loaded").addClass("not-loaded"),$(thisDetailHtmlSelector).html("")},renderFeatureList(viewType,dealer){let $parentToAppend;dealer.viewType=viewType;const $featureListHtml=this.dealerFeatureListTpl(dealer);($parentToAppend="dealer-detail"===viewType&&"true"===reviewsShow?this.$dealerDetailWrap.find(".js-dealer-detail"):this.$dealerList.find(`.js-dealer-item[data-dealer-id="${dealer.dealerID}"]`)).find(".js-feature-wrap").append($featureListHtml);const domElementAdded=$parentToAppend.find(".js-feature-wrap")[0];return this._sandbox.addModules(domElementAdded),this._events.emit("dom:replacement",domElementAdded)},renderMarkers(dealers){const mod=this;if(this.destroyMarkers(),(null!=dealers?dealers.length:void 0)>0){if(this.mapBounds=this.webMappingImagery.createMapBounds(),$.each(dealers,(index,dealer)=>{const $originalMarker=this.$dealerList.find(`.js-dealer-item[data-dealer-id='${dealer.dealerID}']`).find(`.js-location-pin[data-dealer-id='${dealer.dealerID}']`),$listMarker=$originalMarker.clone(),trackingString=$originalMarker.attr("data-tracking-for-google-maps")||"";if(""!==trackingString&&($listMarker.attr("data-eventTracking",trackingString),$listMarker.removeAttr("data-tracking-for-google-maps")),1===$listMarker.length){$listMarker.data("testing-id")&&$listMarker.attr("testing_id",$listMarker.data("testing-id")),$listMarker.attr("tracked")&&$listMarker.removeAttr("tracked");const markerLocation=this.webMappingImagery.createCoordinate(dealer.coords),markerWidth=$originalMarker[0].scrollWidth,markerHeight=$originalMarker[0].scrollHeight,marker=this.webMappingImagery.createMarker(markerLocation,$listMarker[0],markerWidth,markerHeight);return marker.dealerId=dealer.dealerID,this.addMarkerEvents(marker),this.markers.push(marker),this.markersByDealerId[dealer.dealerID]=marker,marker.filterState="filter-visible","mobile-hidden"===dealer.mobileState?marker.mobileState="mobile-hidden":marker.mobileState="mobile-visible","mobile"===this.currentViewport&&"mobile-hidden"===dealer.mobileState?marker.setVisible(!1):this.mapBounds.extend(markerLocation)}}),mod.markers.length>0)var interval=setInterval(function(){$(mod.markers[0].marker).length>0&&(mod._events.emit("dom:replacement"),clearInterval(interval))},100);return this.handleMapState()}},resetActiveMarkerClass(){if(""!==this.activeDealerId){return this.markersByDealerId[this.activeDealerId].getContent().removeClass("active")}}
7,setViewportDependingMapSettings(viewport){return"mobile"===viewport?(this.$mapContainer.addClass("trigger-layer"),this.toggleAllMapControls(!1)):(this.$mapContainer.removeClass("trigger-layer"),this.toggleAllMapControls(!0))},showDealerDetail(dealerId){const mod=this;mod.checkDealerReviewsLoaded(dealerId)||mod.getDealerReviewsData(dealerId.toString()),this.resetActiveMarkerClass();const dealer=this.dealersById[dealerId],dealerLocation=this.webMappingImagery.createCoordinate(dealer.coords),marker=this.markersByDealerId[dealerId];return this.activeDealerId=dealerId,this.activeDealerLoaction=dealerLocation,this.renderDealerDetailView(dealer),marker.getContent().addClass("active"),this.handleMapState(),"mobile"===this.currentViewport?(this.$dealerListWrap.addClass("hidden"),this.$dealerDetailWrap.removeClass("hidden"),T.Utils.scrollToTop(this.$mapWrap)):(this.$mapWrap.hasClass("full-width")&&this.toggleMapListView(),this.$dealerListWrap.animate({left:"-100%",right:"100%"},300,()=>mod.$dealerListWrap.addClass("hidden")),this.$dealerDetailWrap.removeClass("hidden"),this.$dealerDetailWrap.animate({left:"0",right:"0"}))},showMapLayer($evTarget){return this.mapNode=this.webMappingImagery.getLayerElement(),this._events.emit("appendMapToLayer",{$evTarget:$evTarget,mapNode:this.mapNode})},showMoreDealer(){const mod=this;let visibleIndex=0;const newCurrentlyVisible=this.showMoreCurrentlyVisible+this.showMorePageSize;if(this.showMoreCurrentlyVisible<this.dealers.length&&($.each(mod.dealers,function(index,dealer){if("filter-hidden"!==dealer.filterState){if(visibleIndex>=mod.showMoreCurrentlyVisible&&visibleIndex<newCurrentlyVisible){dealer.mobileState="visible",mod.$dealerList.find(`.js-dealer-item[data-dealer-id="${dealer.dealerID}"]`).toggleClass("mobile-hidden").toggleClass("mobile-visible");const marker=mod.markersByDealerId[dealer.dealerID];marker.setVisible(!0),marker.mobileState="mobile-visible",mod.mapBounds.extend(marker.getPosition()),mod.checkDealerReviewsLoaded(dealer.dealerID.toString())||mod.getDealerReviewsData(dealer.dealerID.toString())}return visibleIndex++}}),this.showMoreCurrentlyVisible=newCurrentlyVisible,this.handleMapState()),newCurrentlyVisible>=visibleIndex)return this.$buttonShowMore.addClass("hidden")},stringPad(str,max){const mod=this;return(str=str.toString()).length<max?mod.stringPad(`0${str}`,max):str},toggleAllMapControls(enableControls){return null!=this.webMappingImagery?this.webMappingImagery.setEnableControls(enableControls):void 0},toggleDealerItemMouseOverClass:$dealerItem=>$dealerItem.toggleClass("mouseover"),toggleMapListView(){const icon=this.$buttonToggleList.find(".icon");return this.$dealerWrap.toggleClass("visible"),this.$mapWrap.toggleClass("full-width"),"mobile"!==this.currentViewport&&(icon.toggleClass("icon-arrow-left"),icon.toggleClass("icon-arrow-right")),null!=this.webMappingImagery&&this.webMappingImagery.triggerMapResize(),this.handleMapState()},onClickButtonBackToList(ev){return ev.preventDefault(),this.hideDealerDetail()},onClickButtonShowMore(ev){return ev.preventDefault(),this.showMoreDealer()},onClickButtonToggleList(ev){return ev.preventDefault(),this.toggleMapListView()},onClickDealerItem(ev){const mod=this,$evTarget=$(ev.target);if(!($evTarget.is(".js-teaser-link")||$evTarget.closest(".js-teaser-link").length))return void mod.observeDealersOnScroll();ev.preventDefault();const dealerId=$evTarget.closest(".js-dealer-item").data("dealer-id");return this.showDealerDetail(dealerId)},onClickDealerLink(event,dealerGoogleMapsId,lat,lang){const currentDealerUrlToGoogleMaps=this.mustDealersShowRatingsOnDetailView.filter(dealer=>dealer.googlePlacesId===dealerGoogleMapsId)[0].url;currentDealerUrlToGoogleMaps?window.open(currentDealerUrlToGoogleMaps,"_blank"):this.getDealerGoogleMapsUrl(dealerGoogleMapsId,lat,lang)},onClickDealerMarker(marker){const mod=this,dealerId=marker.getContent().data("dealer-id").toString();if(mod.checkDealerReviewsLoaded(marker.dealerId.toString())||mod.getDealerReviewsData(dealerId),dealerId!=this.activeDealerId&&(mod.checkDealerReviewsLoaded(marker.dealerId.toString())||mod.getDealerReviewsData(dealerId),this.showDealerDetail(dealerId),mod.renderFeatureList("dealer-detail",mod.dealersById[dealerId])),"mobile"===this.currentViewport)return this._events.emit("hideLayer",!1)},onClickMapContainer(ev){ev.preventDefault();const $evTarget=$(ev.target);return this.showMapLayer($evTarget)},onCloseLayer(){return this.$mapContainer.append(this.mapNode),this.toggleAllMapControl
7s(!1),null!=this.webMappingImagery&&this.webMappingImagery.triggerMapResize(),this.handleMapState()},onFilterByFacets(data){return this.selectedFilterGroups=data.selectedFilterGroups,this.selectedFiltersCount=data.selectedFiltersCount,this.hideDealerDetail(),this.filterDealerByFacets()},onNewDealerDataAvailable(data){if(this.observerLaunched=!1,this.parentModuleId===data.parentModuleId&&(this.jsonConfig.initiallyCollapsed&&(this.initializeMap(),this.initializeEventHandler(),this.$ctx.removeClass("pre-initialized"),this.$ctx.parent().removeClass("pre-initialized")),this.currentLocation&&data&&data.currentLocation.lat!==this.currentLocation.lat&&(this.activeDealerId="",this.mustDealersShowRatingsOnDetailView=[],this.dealersOnCall=[],this.indexOfDealersAlreadyLoaded=[]),this.dealers=data.dealers,this.hasProductContext=data.hasProductContext,this.currentLocation=data.currentLocation,this.$buttonToggleList.removeClass("hidden"),this.$buttonShowLayer.removeClass("hidden"),this.$mapWrap.hasClass("full-width")&&this.toggleMapListView(),""!==this.activeDealerId&&this.hideDealerDetail(),this.renderDealerList(data.dealers),this.renderMarkers(data.dealers),this.selectedFiltersCount.length>0))return this.filterDealerByFacets()},onOpenLayer(){return this.toggleAllMapControls(!0),null!=this.webMappingImagery&&this.webMappingImagery.triggerMapResize(),this.handleMapState()},onViewportChange(viewport){return this.currentViewport=viewport,"mobile"===viewport?this.enableSmallScreenBehaviour():this.disableSmallScreenBehaviour(),this.handleMapState()},replaceImagePlaceholder(url,viewport){let realUrl="";return $.each(this.dealerGallerySizes[viewport],(index,vp)=>realUrl+=`${url.replace("{width}",vp.width).replace("{height}",vp.height)} ${vp.resolution}x, `),realUrl},getRouteUrl(coordinates){return this.webMappingImagery.getRouteUrl(this.currentLocation,coordinates)}})}(jQuery,window.doT),function($){T.Module.MarkerModule=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$markerText=this.$ctx.find(".js-marker-text"),this.observeMarkerTextForAnimation(),resolve()},observeMarkerTextForAnimation(){const markerTextElement=this.$markerText.get(0);new IntersectionObserver((entries,observer)=>{entries.forEach(entry=>{entry.isIntersecting&&0!==document.documentElement.scrollTop&&(this.scrollIntoView(),this.triggerAnimation(),observer.unobserve(markerTextElement))})}).observe(markerTextElement)},scrollIntoView(){const distanceFromTop=this.$ctx.offset().top;$("html, body").animate({scrollTop:distanceFromTop},250)},triggerAnimation(){this.$markerText.find("em").each((index,element)=>{setTimeout(()=>{$(element).addClass("highlight")},270*index)})}})}(jQuery),function($){T.Module.MediaGallery=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$mainSlider=this.$ctx.find(".js-mediagallery-mainslider"),this.$mainSliderArrowLeft=this.$mainSlider.find(".prev"),this.$mainSliderArrowRight=this.$mainSlider.find(".next"),this.$thumbnailSlider=this.$ctx.find(".js-mediagallery-thumbnail-slider"),this.$thumbnailSliderArrowLeft=this.$thumbnailSlider.find(".prev"),this.$thumbnailSliderArrowRight=this.$thumbnailSlider.find(".next"),this.$slideCaption=this.$("figcaption"),this.isTrackingEnabled=!!this.$ctx.data("product-media-interaction-tracking"),this.isSlideClickNav=!1,this.$counter=this.$ctx.find(".counter"),this.floatNumberSlides=this.$ctx.data("float-number-slides"),this.$closeBtn=this.$ctx.find(".js-close-button"),this.layerId=this.$ctx.data("gallery-layer-id"),this.isSynced=!1,this.slidesToShowTablet=this.floatNumberSlides?4.75:5,this.slidesToShowMobile=this.floatNumberSlides?4.75:5,this.$(".mediagallery-downloadlink-desktop").length>0?this.slidesToShowDesktop=3:this.slidesToShowDesktop=this.floatNumberSlides?4.75:5,this.$mainSliderArrowLeft.on("click",()=>this.onMainSliderArrowClick()),this.$mainSliderArrowRight.on("click",()=>this.onMainSliderArrowClick()),this.$closeBtn.on("click",()=>this.hideLayer()),this.$mainSliderArrowLeft.on("click",ev=>this.trackOnAfterChangeSlider(ev)),this.$mainSliderArrowRight.on("click",ev=>this.trackOnAfterChangeSlider(ev)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){if(!this.isSynced)return this.isSynced=!0,T.Utils.allSynced=!0,this.initializeMediaGallery()},getCurrentSlide(){return parseInt(this.$ctx.find(".slick-current").data("slick-index"))},getCurrentThumb(){return parseInt(this.$thumbnailSlider.find(".slick-current").data("slick-index"))},activateThumb(index){const thumbnailSlides=this.$thumbnailSlider.find(".slide");return thumbnailSlides.removeClass("is-active slick-current"),thumbnailSlides.eq(index).addClass("is-active slick-current")},trackOnAfterChangeSlider(ev){ev.preventDefault(),this.isTrackingEnabled&&(this._events.once("slickSlider:onAfterChange",data=>
7this.trackSliderScroll(data)),this.isTrackingEnabled=!1)},trackSliderScroll(data){this.$mainSlider.find(data.slide).length>0&&this._events.emit("mediaGalleryInteraction:sliderScroll",data),this.isTrackingEnabled=!0},initializeSliders(){this.mainSlider=this._sandbox.getModuleById(this.$mainSlider.data("t-id")),null!=this.mainSlider&&this.mainSlider.addAfterSlideChangeListener(slideIndex=>this.onAfterMainSlideChange(slideIndex)),null!=this.mainSlider&&this.mainSlider.init({infinite:!0,arrows:!0,dots:!1,useCSS:!1,fade:!1,slidesToShow:1,autoplay:!1,adaptiveHeight:!0,centerMode:!1});const thumbnailSliderVisible=(null!=this.mainSlider?this.mainSlider.getSlideCount():void 0)>1;return this.$thumbnailSlider.length>0&&thumbnailSliderVisible?(this.thumbnailSlider=this._sandbox.getModuleById(this.$thumbnailSlider.data("t-id")),null!=this.thumbnailSlider&&this.thumbnailSlider.addAfterSlideChangeListener(slideIndex=>this.onAfterThumbnailSlideChange(slideIndex)),null!=this.thumbnailSlider&&this.thumbnailSlider.init({infinite:!1,arrows:!0,dots:!1,useCSS:!1,focusOnSelect:!1,alwaysInitialize:!0,slidesToShow:{desktop:this.slidesToShowDesktop,tablet:this.slidesToShowTablet,mobile:this.slidesToShowMobile},slidesToScroll:{desktop:Math.floor(this.slidesToShowDesktop),tablet:Math.floor(this.slidesToShowTablet),mobile:Math.floor(this.slidesToShowMobile)}}),null!=this.thumbnailSlider&&this.thumbnailSlider.addSlideClickListener(slideIndex=>this.onThumbnailSlideClick(slideIndex)),null!=this.thumbnailSlider&&this.thumbnailSlider.setVisible(thumbnailSliderVisible),this.activateThumb(null!=this.mainSlider?this.mainSlider.getPosition():void 0)):this.$thumbnailSlider.addClass("hidden")},initializeMediaGallery(){return this.initializeSliders(),this.initializeLayer(),this._gallerySliderInitialized()},initializeLayer(){if(null!=this.layerId)return this.$layer=$(`div[data-t-name='Layer'][data-id='${this.layerId}'] .js-mediagallery`),this.$layer.length>0?this.layer=this._sandbox.getModuleById(this.$layer.data("t-id")):void 0},onAfterMainSlideChange(slideIndex){const thumbnailPosition=null!=this.thumbnailSlider?this.thumbnailSlider.getPosition():void 0;
7this.activateThumb(slideIndex),this.updateCounter(slideIndex),this.thumbnailSlider&&this.floatNumberSlides&&this.thumbnailSlider.setPosition(slideIndex,!0),this.$thumbnailSlider.find(".slick-current").hasClass("slick-active")||(thumbnailPosition<slideIndex?null!=this.thumbnailSlider&&this.thumbnailSlider.goToNextSlide():null!=this.thumbnailSlider&&this.thumbnailSlider.goToPreviousSlide()),null!=this.layer&&this.layer.setSliderPosition(slideIndex),this._onAfterMainSlideChange(slideIndex)},onAfterThumbnailSlideChange(){this.validateSlideClasses();const maxCountThumbs=this.thumbnailSlider.getSlideCount(),arrayAllVisibleThumbnails=this.$thumbnailSlider.find(".slick-active"),minIndexVisible=arrayAllVisibleThumbnails.first().data("slick-index")+1,maxIndexVisible=arrayAllVisibleThumbnails.last().data("slick-index")+1;return 1===minIndexVisible?this.$thumbnailSliderArrowLeft.addClass("is-inactive").attr("disabled","disabled"):this.$thumbnailSliderArrowLeft.removeClass("is-inactive").removeAttr("disabled"),maxIndexVisible===maxCountThumbs?this.$thumbnailSliderArrowRight.addClass("is-inactive").attr("disabled","disabled"):this.$thumbnailSliderArrowRight.removeClass("is-inactive").removeAttr("disabled")},onMainSliderArrowClick(){const slideIndex=this.getCurrentSlide();this.thumbnailSlider&&this.slideThumbnail(slideIndex)},onThumbnailSlideClick(slideIndex){return this.mainSlider.setPosition(slideIndex,!0),this.isTrackingEnabled&&this._events.emit("mediaGalleryInteraction:thumbnailClick",this.mainSlider.getCurrentSlideModule()),this.slideThumbnail(slideIndex),this.activateThumb(sl
7ideIndex)},slideThumbnail(slideIndex){const mod=this,maxCountThumbs=this.thumbnailSlider.getSlideCount(),arrayAllVisibleThumbnails=this.$thumbnailSlider.find(".slick-active"),minIndexVisible=arrayAllVisibleThumbnails.first().data("slick-index")+1,maxIndexVisible=arrayAllVisibleThumbnails.last().data("slick-index")+1,scrollIndex="desktop"===T.Utils.getViewport()&&5===this.slidesToShowDesktop?maxIndexVisible-3:maxIndexVisible-2,isIE=T.Utils.isIE(),slideWidth=this.$thumbnailSlider.find(".slick-track").width()/maxCountThumbs,currentPosition=parseInt(isIE?this.$thumbnailSlider.find(".slick-track").css("left"):this.$thumbnailSlider.find(".slick-track").css("transform").split(",")[4]),$slickTrackEl=this.$thumbnailSlider.find(".slick-track");if(this.floatNumberSlides)return setTimeout(()=>{mod.onAfterThumbnailSlideChange()},370);if(slideIndex>scrollIndex&&maxIndexVisible!==maxCountThumbs){const trackPosition=-slideWidth+currentPosition;isIE?$slickTrackEl.css({left:`${trackPosition}px`}):$slickTrackEl.css({transform:`translate3d(${trackPosition}px, 0px, 0px)`,transition:"transform 300ms linear"})}else{if(!(slideIndex<scrollIndex&&1!==minIndexVisible))return;{const trackPosition=slideWidth+currentPosition;isIE?$slickTrackEl.css({left:`${trackPosition>0?0:trackPosition}px`}):$slickTrackEl.css({transform:`translate3d(${trackPosition>0?0:trackPosition}px, 0px, 0px)`,transition:"transform 300ms linear"})}}return setTimeout(()=>{mod.onAfterThumbnailSlideChange()},370)},validateSlideClasses(){const totalSlideCount=this.thumbnailSlider.getSlideCount(),arrayAllActiveThumbnails=this.$thumbnailSlider.find(".slick-active"),minIndexActive=arrayAllActiveThumbnails.first().data("slick-index"),maxIndexActive=arrayAllActiveThumbnails.last().data("slick-index"),slidesToScroll="desktop"===T.Utils.getViewport()?this.slidesToShowDesktop:this.slidesToShowMobile,$slickTrackEl=this.$thumbnailSlider.find(".slick-track"),slideWidth=this.$thumbnailSlider.find(".slick-track").width()/totalSlideCount,currentPosition=parseInt(T.Utils.isIE()?$slickTrackEl.css("left"):$slickTrackEl.css("transform").split(",")[4]),currentMinPosition=Math.ceil(Math.abs(currentPosition/slideWidth)),currentMaxPosition=currentMinPosition+Math.floor(slidesToScroll);if(minIndexActive!==currentMinPosition||maxIndexActive!==currentMaxPosition){arrayAllActiveThumbnails.removeClass("slick-active");for(let slideIndex=currentMinPosition;slideIndex<currentMaxPosition;slideIndex++)this.$thumbnailSlider.find(`[data-slick-index='${slideIndex}']`).addClass("slick-active")}},updateCounter(slideIndex){const totalSlideCount=this.mainSlider.getSlideCount(),currentSlide=slideIndex+1;this.$counter.text(`(${currentSlide}/${totalSlideCount})`)},hideLayer(){this.$ctx.removeClass("is-open")},_gallerySliderInitialized(){},_onAfterMainSlideChange(newSlideIndex){return this.$slideCaption.html(this.$mainSlider.find(".slick-current").data("caption-text"))}})}(jQuery),function($){T.Module.MediaGalleryLayer=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$layerSlider=this.$ctx.find(".js-mediagallery-layerslider"),this.currentSlide=0,this.lastSlideIndex=-1,this.isTrackingEnabled=!!this.$ctx.data("product-media-interaction-tracking"),this.$mediaSlide=this.$ctx.find(".js-mediagallery-slide"),this.$imageDescription=this.$ctx.find(".js-image-description"),this.$slideArrows=this.$ctx.find(".js-arrows"),this._events.on("openLayer",data=>this.onOpenLayer(data)),this._events.on("closeLayer",data=>this.onCloseLayer(data)),$(window).on("resize load",T.Utils.debounce(()=>this.onResizeMediaGalleryLayer(),50)),this.resizeHandler=(()=>{this.$layerSlider&&this.$layerSlider.slick("setPosition")}),this.isTrackingEnabled&&this._events.on("slickSlider:onAfterChange",data=>this.trackSliderScroll(data)),resolve()},setSliderPosition(slideIndex){this.currentSlide=slideIndex},addAfterSlideChangeListener(cb){this.afterSlideChangeListener=cb},trackSliderScroll(data){if(0!==this.$ctx.find(data.slide).length)return this.skipSliderScroll?(this.skipSliderScroll=!1,void(this.lastSlideIndex=data.currentSlide)):void(this.lastSlideIndex!==data.currentSlide&&(this._events.emit("mediaGalleryInteraction:sliderScroll",data),this.lastSlideIndex=data.currentSlide))},onOpenLayer(data){const triggerElementLayerId=$(data.$triggerElement).data("layer-id");0!==this.$ctx.closest(`[data-t-name='Layer'][data-id='${triggerElementLayerId}']`).length&&(this.skipSliderScroll=!0,this.initializeLayerSlider(),this._events.emit("togglePageScrolling",{pin:!0}),this.isTrackingEnabled&&this._events.emit("mediaGalleryInteraction:openLayer",data),$(window).on("resize",this.resizeHandler))},initializeLayerSlider(){this.layerSlider||(this.layerSlider=this._sandbox.getModuleById(this.$layerSlider.data("t-id")),null!=this.layerSlider&&(this.layerSlider.init({useCSS:!1,slidesToShow:1,initialSlide:this.currentSlide}),this.layerSlider.addAfterSlideChangeListener(newSlideIndex=>{"function"==typeof this.afterSlideChangeListener&&this.afterSlideChangeListener(newSlideIndex)}))),this.layerSlider&&this.layerSlider.setPosition(this.currentSlide,!1)},onCloseLayer(){this._events.emit("togglePageScrolling",{pin:!1}
7),this.$imageDescription.removeClass("open"),$(window).unbind("resize",this.resizeHandler)},onResizeMediaGalleryLayer(){switch(T.Utils.getViewport()){case"mobile":case"tablet":this.onTouchImageDescription();break;case"desktop":this.onHoverImageDescription()}},onTouchImageDescription(){this.$mediaSlide.off("click mouseover mouseleave").on("click",ev=>{$(ev.currentTarget).find(this.$imageDescription).toggleClass("open")}),this.$slideArrows.off("click").on("click",()=>{this.$imageDescription.removeClass("open")})},onHoverImageDescription(){this.$mediaSlide.off("mouseover").on("mouseover",ev=>{$(ev.currentTarget).find(this.$imageDescription).addClass("open")}),this.$mediaSlide.off("mouseleave").on("mouseleave",ev=>{$(ev.currentTarget).find(this.$imageDescription).removeClass("open")})}})}(jQuery),function($){T.Module.MediaGalleryTeaser=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$slideGallery=this.$ctx.find(".js-mediagalleryteaser-type"),this.layerId=this.$ctx.data("gallery-layer-id"),this.trackingType={productMediaInteraction:"product teaser interaction",sliderScroll:"slider scroll",sliderOpen:"slider open",galleryClick:"gallery click"},this.isTrackingEnabled=!!this.$ctx.data("product-media-interaction-tracking"),this.$slideGallery.on("click",ev=>this.onClickGalleryBox(ev)),this._events.on("t.sync",()=>this.sync()),this.isTrackingEnabled&&(this._events.on("mediaGalleryInteraction:sliderScroll",data=>this.trackPTSliderScroll(data)),this._events.on("mediaGalleryInteraction:openLayer",data=>this.trackPTSliderLayerOpen(data))),this.isSynced=!1,resolve()},sync(){if(!this.isSynced)return this.isSynced=!0,T.Utils.allSynced=!0,this.initializeLayer()},initializeLayer(){if(null!==this.layerId)return this.$layer=$(`div[data-t-name='Layer'][data-id='${this.layerId}'] .js-mediagallery`),this.$layer.length>0?this.layer=this._sandbox.getModuleById(this.$layer.data("t-id")):void 0},onClickGalleryBox(ev){const sliderIndex=$(ev.currentTarget).data("index");null!==this.layer&&this.layer.setSliderPosition(sliderIndex),this.isTrackingEnabled&&this.trackPTGalleryClick(ev)},trackPTSliderScroll(data){const currentSlide=data.slide;if(this.$layer.find(currentSlide).length>0){const triggerEl="slider-scroll",trackData=this.getPTInteractionTrackingDetails(currentSlide,this.trackingType.sliderScroll,triggerEl);this.trackPTInteraction(this.trackingType.productMediaInteraction,trackData)}},trackPTSliderLayerOpen(data){const currentSlide=data.$triggerElement;if(this.$ctx.find(currentSlide).length>0){const trackData=this.getPTInteractionTrackingDetails(currentSlide,this.trackingType.sliderOpen);this.trackPTInteraction(this.trackingType.productMediaInteraction,trackData)}},trackPTGalleryClick(data){const currentSlide=data.currentTarget;if(this.$ctx.find(currentSlide).length>0){const trackData=this.getPTInteractionTrackingDetails(currentSlide,this.trackingType.galleryClick);this.trackPTInteraction(this.trackingType.productMediaInteraction,trackData)}},getPTInteractionTrackingDetails(slide,interactionType,triggerEl){const slideMediaType=$(slide).data("media-type");return"slider-scroll"==triggerEl?(this.slideIndex=parseInt($(slide).data("slick-index"))+1,this.teaserId=$(slide).closest(".m-layer-mediagallery").data("id")):(this.slideIndex=parseInt($(slide).data("index"))+1,this.teaserId=$(slide).data("layer-id")),{product_teaser_id:this.teaserId,product_media_interaction:interactionType,product_media_type:slideMediaType,product_media_element:this.slideIndex}},trackPTInteraction(type,data){return this._events.emit("tracking:generic",{trackType:type,trackData:data})}})}(jQuery),function($){T.Module.MendixLoader=T.createModule({start(resolve){return this.isSynced=!1,this.$ctx=$(this._ctx),this.selector={mendixIframe:"mendixIframe"},this.loginName=this.$ctx.data("mendix-login-name"),this.firstName=this.$ctx.data("mendix-first-name"),this.lastName=this.$ctx.data("mendix-last-name"),this.priceGroup=this.$ctx.data("mendix-price-group"),this.websiteId=this.$ctx.data("mendix-website-id"),this.locale=this.$ctx.data("mendix-locale"),this.loadTime=this.$ctx.data("mendix-load-time"),this.iframe=$(`#${this.selector.mendixIframe}`),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){if(!this.isSynced){this.isSynced=!0;const agentDetails={loginName:this.loginName,firstName:this.firstName,lastName:this.lastName,priceGroup:this.priceGroup,websiteId:this.websiteId,locale:this.locale},that=this;this.iframe.on("load",function(){setTimeout(function(){document.getElementById(that.selector.mendixIframe).contentWindow.postMessage(
7agentDetails,"*")},this.loadTime||5e3)}),window.addEventListener("message",function(event){if(event.source==document.getElementById("mendixIframe").contentWindow&&event&&event.data&&"ADD EVENT"===event.data.command&&window.bshEventQueue.push(event.data),"shopping cart interaction"==event.data.name){const productCodesArray=[];event.data.data.products.forEach(item=>{const{product_id:product_id,product_quantity:product_quantity}=item,quantity=parseInt(product_quantity);for(let i=0;i<quantity;i++)productCodesArray.push(product_id)});let productCodeInput=document.getElementsByClassName("js-product-code-input");productCodeInput&&(productCodeInput[0].value=productCodesArray);const addToCartForm=document.getElementsByClassName("js-form-mendix-add-to-cart");addToCartForm&&addToCartForm[0].submit()}})}}})}(jQuery),function($){T.Module.ModelViewer=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$qrCodeContainer=$(".js-qrcode",this.$ctx),this.$modelViewer=this.$ctx.find(".js-model-viewer"),this.$modelViewerCloseButton=this.$ctx.find(".js-model-viewer-close-button"),this.$arError=$(".js-ar-error",this.$ctx),this.$modelTrigger=null,this.anchorId=this.$ctx.data("anchor-id");return T.Commons.ScriptLoader.loadOnceModelViewerLibrary(()=>this.initModelViewer()),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},initModelViewer(){this.modelId=this.retrieveModelId(),this._events.on("3dmodel:open",data=>this.trackModelOpened(data)),this.$modelViewer.on("model-visibility",ev=>this.modelStatus(ev)),this.$modelViewer.on("ar-status",ev=>this.modelARStatus(ev)),"desktop"===T.Utils.getViewport()?(this.$modelViewerCloseButton.on("click",()=>this.hideModel()),this.generateQRCode()):this.showModelOnQRScan(),this._events.on("3dmodel:show",data=>this.showModel(data))},generateQRCode(){const url=window.location.href,externalUrl=url+(url.indexOf("?")>0?"&":"?")+"intcid=ARmodel~QRcode~Website~ContentTeaser~"+this.anchorId+"&inAr="+this.anchorId,iconPath=this.$qrCodeContainer.data("icon");iconPath&&(this.qrcode=new QRCode(this.$qrCodeContainer[0],{text:externalUrl,logo:iconPath,width:120,height:120}))},showModelOnQRScan(){if(T.Utils.getURLParameterByName("inAr")===this.anchorId){/android/i.test(navigator.userAgent)||(this.trackModelOpened({$modelCtx:this.$ctx}),this.$ctx.siblings().hide(),this.$modelViewer.toggleClass("hidden",!1),this._events.emit("3dmodel:trigger-toggle",{modelCtx:this.$ctx,disableTrigger:!0})),T.Utils.scrollToTop(this.$ctx)}},showModel(data){this.$modelTrigger=data.$modelTrigger;let $modelCtx=data.$modelCtx;$modelCtx[0]===this.$ctx[0]&&(this.$modelViewer.css({height:data.$modelHeight}),$modelCtx.siblings().hide(),this.$qrCodeContainer.hide(),"desktop"===T.Utils.getViewport()&&this.$modelViewerCloseButton.toggleClass("hidden",!1),this.$modelViewer.toggleClass("hidden",!1))},hideModel(){this.$modelViewerCloseButton.toggleClass("hidden",!0),this.$modelViewer.toggleClass("hidden",!0),this.$ctx.siblings().show(),this.$qrCodeContainer.show(),this._events.emit("3dmodel:trigger-toggle",{modelCtx:this.$ctx,disableTrigger:!1})},modelStatus(ev){ev.detail.visible&&(this.$modelTrigger&&this._events.emit("loader:close",{$trigger:this.$modelTrigger}),"desktop"!==T.Utils.getViewport()&&this.$modelViewer[0].activateAR())},retrieveModelId(){let fileName=this.$ctx.find(".js-model-viewer").attr("src").split("3D_Asset")[1];return fileName.substring(1,fileName.lastIndexOf("."))},trackModelOpened(data){data.$modelCtx[0]===this.$ctx[0]&&T.Utils.getLayout().trackValues("Interactive 3D model opened",{model_id:this.modelId})},modelARStatus(ev){"failed"===ev.detail.status&&(this.$arError.toggleClass("hidden",!1),T.Utils.getLayout().trackValues("augmented reality device error",{model_id:this.modelId}))}})}(jQuery),function($){T.Module.MoreLess=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$link=this.$ctx.find(".js-morelesslink"),this.$linkIcon=this.$link.find(".icon"),this.$linkText=this.$link.find(".text"),this.linkTextMore=this.$link.data("moreless-text-more"),this.linkTextLess=this.$link.data("moreless-text-less"),this.linkIconMore=this.$link.data("moreless-icon-more"),this.linkIconLess=this.$link.data("moreless-icon-less"),this.$moreLess=this.$ctx,this.$flex=this.$ctx.find(".js-content"),this.$flexChild=this.$ctx.find(".js-content p"),this.$flexInner=this.$ctx.find(".js-inner-content"),this.$reference=this.$ctx.closest("[data-moreless-reference-id]"),this.externalResizeControl=this.$ctx.data("external-resize-control"),this.configName=this.$ctx.data("moreless-config"),this.config=T.Utils.moreless[this.configName],T.Utils.allSynced=!1,this._events.on("moreless:close",data=>this.onClose(data)),this._events.on("moreless:open",data=>this.onOpen(data)),this.$link.on("click",ev=>this.onClickToggle(ev)),this._events.on("t.sync",()=>this.sync()),this.initialized=!0,resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0,this.externalResizeControl||(this.calculate(),$(window).on("resize",T.Utils.debounce(()=>this.calculate(),50))))},setMoreText(linkTextMore){this.linkTextMore=linkTextMore},setLessText(linkTextLess){this.linkTextLess=linkTextLess},setReference($reference){this.$reference=$reference},isInitialized(){return this.initialized},isOpen(){return this.$link.is(".is-open")},calculate(retryCounter){retryCounter||(retryCounter=0);const referenceHeight=this.getReferenceHeight();if(0===referenceHeight)return void(retryCounter<5&&setTimeout(()=>this.calculate(retryCounter+1),300));const siblingsHeight=this.getSiblingsHeight();return siblingsHeight+this.getOriginalFlexHeight()>referenceHeight&&referenceHeight>0?(this.$flex.addClass("is-cropped"),this.$link.is(".is-open")?this.$flex.css("max-height",""):this.$flex.css("max-height",referenceHeight-siblingsHeight),this.$link.removeClass("hidden")):(this.$flex.css("max-height","").removeClass("is-cropped"),this.$link.addClass("hidden"))},updateFlexHeight(){return this.$flex.css("max-height",this.getOriginalFlexHeight())},recalculateFlexHeight(){const referenceHeight=this.getReferenceHeight(),siblingsHeight=this.getSiblingsHeight();return this.$flex.css("max-height",referenceHeight-siblingsHeight)},getOriginalFlexHeight(){if(this.$flex.length){if(this.$flexInner.length){const flexInnerHeight=this.$flexInner.height(),referenceHeight=this.getReferenceHeight();if(flexInnerHeight<referenceHeight)return referenceHeight}return 1===this.$flexChild.length?this.$flexChild[0].scrollHeight:this.$flex[0].scrollHeight}return 0},getReferenceHeight(){const multiplier=this.config?this.config.multiplier:1;return this.$reference.length?this.$reference.height()*multiplier:this.config?this.config.heights[T.Utils.getViewport()]:void 0},getSiblingsHeight(){let heightSum=0;return this.$ctx.find(".heading").each(function(){return heightSum+=$(this).outerHeight(!0)}),heightSum},open(){return this.$linkText.text(this.linkTextLess),this.$link.addClass("is-open"),this.updateFlexHeight(),this.$flex.removeClass("is-cropped"),this.$linkIcon.addClass(this.linkIconLess),this.$linkIcon.removeClass(this.linkIconMore)},close(notransition){notransition&&this.$flex.addClass("notransition");const referenceHeight=this.getReferenceHeight(),siblingsHeight=this.getSiblingsHeight();this.getOriginalFlexHeight();if(this.$linkText.text(this.linkTextMore),this.$link.removeClass("is-open"),this.$flex.css("max-height",referenceHeight-siblingsHeight),this.$flex.addClass("is-cropped"),this.$linkIcon.removeClass(this.linkIconLess),this.$linkIcon.addClass(this.linkIconMore),notransition)return this.$flex.removeClass("notransition")},onClickToggle(ev){return this.isOpen()?this.close():this.open()},onClose(data){if(this.$link.filter(data.$link).length>0){if(this.$link.is(":not(.is-open)"))return;return this.close(data.notransition)}},onOpen(data){if(this.$link.filter(data.$link).length>0){if(this.$link.is(".is-open"))return;return this.open()}}})}(jQuery),function($){T.Module.MultiOptionButton=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$button=this.$ctx.find(".js-multi-option-button"),this.$button.on("click",$.proxy(this.onClickTrigger,this)),resolve()},onClickTrigger(ev){return ev.stopPropagation(),this.$button.hasClass("is-active")?(this.$button.removeClass("is-active"),this._events.emit("popover:close"),$(document).off("
7click")):(this.$button.addClass("is-active"),$(document).on("click",$.proxy(this.onClickOutsideTrigger,this)))},onClickOutsideTrigger(ev){return ev.stopPropagation(),this.$button.removeClass("is-active"),$(document).off("click"),this._events.emit("popover:close")}})}(jQuery),function($){T.Module.MyProductEdit=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.initialProductDataObj=this.$ctx.data("initial-productdata"),this.openLayer=this.$ctx.data("open-layer"),this.selector={myProductDataInputField:".js-myproductdatainputfield",myProductTileDetail:".js-myproducttile-detail",enrkiField:".js-enrki",fdnrField:".js-fdnr",znrField:".js-znr",purchaseDateField:'input[data-t-decorator="DatePicker"]',editButton:".js-edit-button",hasError:"has-error",scrollTarget:".js-scroll-target"},this.$myProductDataInputField=this.$ctx.find(this.selector.myProductDataInputField),this.$myProductTileDetail=this.$ctx.find(this.selector.myProductTileDetail),this.$enrkiField=this.$myProductDataInputField.find(this.selector.enrkiField),this.$fdnrField=this.$myProductDataInputField.find(this.selector.fdnrField),this.$znrField=this.$myProductDataInputField.find(this.selector.znrField),this.$purchaseDateField=this.$myProductDataInputField.find(this.selector.purchaseDateField),this.$scrollTarget=$(document).find(this.selector.scrollTarget),this.$editButton=this.$myProductTileDetail.find(this.selector.editButton),this.$editButton.on("click",(ev,paramObj)=>{this.setProductFields(ev,paramObj)}),this._events.emit("togglePageScrolling",{pin:!1}),this.$scrollTarget.length&&T.Utils.scrollToTop(this.$scrollTarget),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.openLayer&&this.$editButton.trigger("click",{automatic:!0}),this.isSynced=!0)},setProductFields(ev,paramObj){paramObj||this.$ctx.find(`.${this.selector.hasError}`).removeClass(this.selector.hasError),this.$enrkiField.val(this.initialProductDataObj.enrki).trigger("change.select2"),this.$fdnrField.val(this.initialProductDataObj.fdnr),this.$znrField.val(this.initialProductDataObj.znr),this.$purchaseDateField.trigger("datepicker:setDate",this.initialProductDataObj.pdate)}})}(jQuery),function($){T.Module.NavAnchor=T.createModule({start(resolve){const mod=this;mod.isSynced=!1,mod.$ctx=$(this._ctx),this.isHeaderOne=$(".o-header").length>0,this.isHeaderRebrush=$(".o-headerrebrush").length>0,mod.$navigation=this.$(".js-navigation"),mod.$list=this.$(".js-fixed"),mod.$more=this.$(".js-hidden-more-active"),mod.$moreActive=this.$(".js-more-active"),mod.$moreTrigger=this.$(".js-more"),mod.$moreContainer=this.$(".js-more-container"),mod.$moreContainerList=this.$(".js-more-container-list"),this.$headerNavSticky=$(".o-header-sticky .nav-sticky"),mod.toTopWidth=mod.$ctx.find(".js-to-top").outerWidth(),mod.$navanchorCTCWrapper=mod.$ctx.find(".js-navanchor-ctc-wrapper"),mod.$navanchorCartButton=mod.$ctx.find(".js-navanchor-ctc-wrapper .js-add-to-basket"),mod.$navanchorCartButton.on("click",ev=>this.addToCartTrackValue(ev)),$(window).on("resize load",ev=>this.onWindowResizeAnchorsWrapper(ev)),this.$header=$(".o-header"),T.Utils.registerMq("lg",{match:()=>mod.setupMobile(),unmatch:()=>mod.setupDesktop()},"max"),mod._events.on("headerOpen",$.proxy(mod.onHeaderOpen,mod)),mod._events.on("t.sync",$.proxy(this.sync,this)),resolve()},sync(){if(!this.isSynced){const mod=this;mod.isSynced=!0,mod.$ctx.on("click","a[href]",$.proxy(mod.onClickLink,mod)),$(window).on("resize",T.Utils.debounce($.proxy(mod.onWindowResize,mod),50)),this.isHeaderOne&&$(window).on("scroll",T.Utils.debounce($.proxy(mod.onWindowScroll,mod),50)),$(window).on("scroll",T.Utils.debounce(()=>this.checkSections(),50)),mod.preloadContentImages(),this.isHeaderRebrush&&this.$ctx.hasClass("js-is-sticky")&&this.makeStickyForHeaderRebrush()}},calculateMoreContainerPosition(){return T.Utils.isViewport("desktop")?this.$moreTrigger.css("left","auto"):this.$moreTrigger.css("left",this.$moreContainer.position().left+this.$moreContainer.outerWidth()-this.$moreTrigger.outerWidth())},getViewportHeight:()=>window.innerHeight||document.documentElement.clientHeight,makeStickyForHeaderRebrush(){T.Utils.createController(this.$ctx,"StickynessControllerForHeaderRebrush","")},checkSections(){const $window=$(window),$links=this.$list.find("a[href]:not(.js-more)"),navAnchorHeight=this.$navigation.outerHeight(),viewportAttentionHeight=this.getViewportHe
7ight()/3;if($links.each(function(){const $link=$(this),target=$link.attr("href"),$section=$(target);$section.length&&$section.offset().top<=$window.scrollTop()+navAnchorHeight+viewportAttentionHeight?($links.removeClass("is-active"),$link.addClass("is-active")):$link.removeClass("is-active")}),!T.Utils.isViewport("desktop")){let $activeLink=$links.filter(".is-active");$activeLink.length||($activeLink=$links.filter(":first")),this.$moreActive.find("a").is($activeLink)||(this.$moreActive.empty(),$activeLink.clone().appendTo(this.$moreActive))}},preloadContentImages(){return this.$list.find("a[href]:not(.js-more)").each(function(){const href=$(this).attr("href"),$images=$(href).find("img");T.Commons.LazyLoadingInitializer.disableLazyLoading($images)})},setupDesktop(){return this.$moreContainerList.children().prependTo(this.$list),$(document).off("click.navanchor"),this.$moreContainer.css("width","")},setupMobile(){this.$moreActive.empty(),this.$list.find("a:first").clone().appendTo(this.$moreActive),this.$list.children("li:not(.more-active):not(.js-hidden-more-active):not(.to-top)").prependTo(this.$moreContainerList),$(document).on("click.navanchor",$.proxy(this.onClickDocument,this))},onClickDocument(ev){const $target=$(ev.target);this.$moreTrigger.hasClass("is-open")&&($target.closest(this.$more).length||this.$moreTrigger.removeClass("is-open"))},onClickLink(ev){const $link=$(ev.currentTarget);if($link.is(this.$moreTrigger))return this.calculateMoreContainerPosition(),this.$moreTrigger.toggleClass("is-open"),void ev.preventDefault();const $section=$($link.attr("href"));if($section.length&&this.$moreTrigger.removeClass("is-open"),this.isHeaderOne&&$section.length){let stickyHeaderHeight=0;stickyHeaderHeight=this.$headerNavSticky.outerHeight(),T.Utils.scrollToTop($section.offset().top-this.$list.outerHeight()-stickyHeaderHeight),ev.preventDefault()}},onWindowResize(){return this.calculateMoreContainerPosition()},onWindowScroll(ev){const scrollTop=$(window).scrollTop(),$tabSticky=$(".js-tabs-sticky"),$windowOuterHeight=$(window).outerHeight(),$ctcAvailableToTop=$(".has-ctc"),$ctcToTopHeight=$ctcAvailableToTop.outerHeight();this.$headerNavSticky.hasClass("is-active")?(this.$navigation.hasClass("is-fixed")&&($tabSticky.hasClass("is-fixed")?this.$navigation.css("transform",`translateY(${this.$headerNavSticky.outerHeight()+$tabSticky.outerHeight()}px)`):this.$navigation.css("transform",`translateY(${this.$headerNavSticky.outerHeight()}px)`)),this.$navigation.addClass("animate-out"),T.Utils.isViewport("desktop")?$ctcAvailableToTop.css("top","0px"):$tabSticky.hasClass("is-fixed")?$ctcAvailableToTop.css("top",`${$windowOuterHeight-(this.$headerNavSticky.outerHeight()+$ctcToTopHeight+$tabSticky.outerHeight()+10)}px`):$ctcAvailableToTop.css("top",`${$windowOuterHeight-(this.$headerNavSticky.outerHeight()+$ctcToTopHeight+10)}px`)):(this.$navigation.hasClass("is-fixed")&&($tabSticky.hasClass("is-fixed")?this.$navigation.css("transform",`translateY(${$tabSticky.outerHeight()}px)`):this.$navigation.css("transform","translateY(0px)")),T.Utils.isViewport("desktop")?$ctcAvailableToTop.css("top","0px"):$tabSticky.hasClass("is-fixed")?$ctcAvailableToTop.css("top",`${$windowOuterHeight-($ctcToTopHeight+$tabSticky.outerHeight()+10)}px`):$ctcAvailableToTop.css("top",`${$windowOuterHeight-($ctcToTopHeight+10)}px`),scrollTop>=this.$ctx.offset().top?this.$navigation.addClass("is-fixed"):this.$navigation.removeClass("is-fixed"))},onHeaderOpen(){this.$navigation.removeClass("is-fixed")},addToCartTrackValue(){T.Utils.getLayout().trackValues("anchor navigation add-to-cart click",{})},onWindowResizeAnchorsWrapper(){const $anchorsWrapper=this.$navigation.outerWidth()-this.$navanchorCTCWrapper.outerWidth();this.$list.css("width",$anchorsWrapper-2+"px"),this.calculateMoreContainerPosition(),this.arrangeAnchor();const $wrapperHeight=this.$list.outerHeight();this.$navanchorCTCWrapper.css("min-height",$wrapperHeight+"px")},arrangeAnchor(){if(T.Utils.isViewport("desktop")){const mod=this;mod.$moreContainerList.children().insertBefore(mod.$moreActive),mod.$more.removeClass("hidden-desktop");const $criticalAnchor=mod.getOverlappingAnchor();if($criticalAnchor){const $hiddenAnchors=$criticalAnchor.prev().nextUntil(".more-active");$hiddenAnchors.appendTo(mod.$moreContainerList),$hiddenAnchors.length&&mod.$more.removeClass("hidden-desktop")}else mod.$more.addClass("hidden-desktop")}},getOverlappingAnchor(){const totalWidthAnchorContainer=this.$navigation.find(".navanchor-list").innerWidth(),moreAnchorWidth=this.$more.outerWidth(!0);this.$anchorsInitial=this.$navigation.find("li:not(.more-active)");let $criticalAnchor,totalWidthAnchors=moreAnchorWidth+this.toTopWidth;return this.$navigation.find("li:not(.more-active):not(.js-hidden-more-active):not(.to-top)").each(function(){return!((totalWidthAnchors+=$(this).outerWidth(!0))+1>totalWidthAnchorContainer)||($criticalAnchor=$(this),!1)}),$criticalAnchor&&$criticalAnchor.is(this.$anchorsInitial.filter(":last"))&&(totalWidthAnchors-=moreAnchorWidth-1)<=totalWidthAnchorContainer?null:$criticalAnchor}})}(jQuery),function($){T.Module.Navfooter=T.createModule({start(resolve){const mod=this;return mod.$ctx=$(this._ctx),mod.$section=mod.$(".section"),mod.$lists=mod.$(".section ul"),mod.$groupHeader=mod.$lists.find(".group-header"),mod.$groupHeaderLink=mod.$groupHeader.find("a"),mod.$textButtonClose=this.$section.data("text-button-close"),mod.$textButtonShowAll=this.$section.data("text-button-show-all"),mod.isRebrush=mod.$ctx.parents(".o-footer-rebrush").length>0,"mobile"===T.Utils.getViewport()&&mod.removeAttrHref(),T.Utils.registerMq(mod.isRebrush?"lg":"md",{match(){mod.removeAttrHref(),mod.$groupHeader.find("a").on("click",$.proxy(mod.onClickToggle,mod)),mod.$lists.each(function(){mod.mobileNav($(this))})}
7,unmatch(){mod.addAttrHref(),mod.$groupHeader.find("a").off("click"),mod.$lists.each(function(){mod.mobileNav($(this),"reset"),mod.displayLists($(this))}),mod.$lists.find("li > a > i").each(function(){$(this).removeClass("icon-arrow-up").addClass("icon-arrow-down")})}},"max"),T.Utils.registerMq("lg",{match(){mod.addAttrHref(),mod.$lists.each(function(){mod.hideLists($(this))})},unmatch(){mod.$lists.each(function(){mod.displayLists($(this))})}}),resolve()},sync(){},displayLists($list){$list.addClass("hidden-list")},hideLists($list){$list.removeClass("hidden-list")},mobileNav($list,reset){const $groupHeader=$list.find(".group-header a"),$overviewLink=$list.find(".overview a");reset?$list.removeClass("hidden-list"):($list.addClass("hidden-list"),$overviewLink.attr("href",$groupHeader.data("href")))},onClickToggle(ev){const $toggle=$(ev.currentTarget);return $toggle.closest(".list-unstyled").toggleClass("hidden-list"),$toggle.find(".icon").toggleClass("icon-arrow-down").toggleClass("icon-arrow-up")},removeAttrHref(){let attrHref,mod=this;mod.$groupHeaderLink.length>0&&mod.$groupHeaderLink.each(function(){attrHref=$(this).attr("href"),$(this).attr("data-href",attrHref),$(this).removeAttr("href")})},addAttrHref(){let dataHref,mod=this;mod.$groupHeaderLink.length>0&&mod.$groupHeaderLink.each(function(){dataHref=$(this).attr("data-href"),$(this).attr("href",dataHref),$(this).removeAttr("data-href")})}})}(jQuery),function($){T.Module.NavigationFlyout=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$menuLinks=$(".js-menulinks"),this.$promotionTeaserContainer=this.$ctx.find(".promotion-teaser-container"),this.$navigationListsWrap=this.$ctx.find(".navigation-lists-wrap"),this.$promotionTeaserAjaxID=this.$ctx.find(".js-promotion-teaser").data("ajax-id"),this.currentVp=T.Utils.getViewport(),this.$navigationLinks=this.$ctx.find(".js-navigation-link"),this.currentPromotionalTeaserId=null,this.ajaxRequest=null,this.animationDelay=350,this.teaserIsRenderedInsideLinkList=!1,this.checkForPromotionTeaserDebounced=T.Utils.debounce(()=>this.checkForPromotionTeaser(),50),this.setChildLevelClasses(),this.appendMobileBackButtons(),this.setTracking(),this.openInitialOpenSubLevel(),this.addRoleInNavLink(),this._events.on("t.sync",()=>this.sync()),this._events.on("viewportChanged",vp=>this.handleViewportChange(vp)),this.$navigationLinks.on("click keydown",e=>{this.handleNavLinkClick(e)}),resolve()},sync(){this.isSynced||(this.checkForPromotionTeaser(),this.isSynced=!0)},addRoleInNavLink(){document.querySelectorAll(".has-child-level").forEach(element=>{const linkHierarchy=element.closest(".js-navigation-col").getAttribute("data-link-hierarchy");"desktop"===this.currentVp&&3==linkHierarchy||element.setAttribute("role","button")})},handleViewportChange(vp){this.currentVp=vp,"desktop"===vp?(this.expandHeightOfLevels(!0),this.removeActiveClassFromNotVisibleLevels()):(this.setFlyoutMinHeight("auto"),this.moveTeaserToInitialPosition(),this.collapseNotVisibleLevels()),this.checkForPromotionTeaser()},openInitialOpenSubLevel(){this.$ctx.find(".js-navigation-link.active").each((index,level)=>{this.openSublevel(null,$(level))})},openSublevel(ev,$currentNavItem){const $navItemCol=$currentNavItem.parents(".js-navigation-col"),$subMenuCol=$navItemCol.next(".js-navigation-col"),currentSubmenuId=$currentNavItem.data("reference-id"),$currentSubmenu=$subMenuCol.find(`.js-navigation-link-list[data-submenu-id='${currentSubmenuId}']`),currentLinkHierarchy=this.getDataLinkHierarchy($currentNavItem);this.hidePromotionalTeaser(),this.expandHeightOfLevels(),this.setActiveStyleForCurrentItem($currentNavItem,currentSubmenuId,$navItemCol,$subMenuCol),this.closeSubmenus(currentLinkHierarchy),this.openCurrentSubmenu(currentSubmenuId,$subMenuCol),this.cutHeightOfHigherLevel($navItemCol,$subMenuCol),ev&&this.focusFirstSubmenuLink(ev,$currentSubmenu),this.scrollToSubmenuTop(),setTimeout(()=>{this.collapseNotVisibleLevels()},this.animationDelay)},closeSublevel(ev){const $currentNavItem=$(ev.currentTarget),$navItemCol=$currentNavItem.parents(".js-navigation-col"),$navItemList=$currentNavItem.parents(".js-navigation-link-list"),$topMenuCol=$navItemCol.prev(".js-navigation-col");this.hidePromotionalTeaser(),this.expandHeightOfLevels(),$navItemCol.removeClass("active"),$navItemList.removeClass("active"),$topMenuCol.children(".js-navigation-link-list").removeClass("match-parent-overflow-hidden")},setActiveStyleForCurrentItem($currentNavItem,currentSubmenuId,$navItemCol,$subMenuCol){$navItemCol.find(".js-navigation-link").removeClass("active"),$subMenuCol.find(".js-navigation-link").removeClass("active"),$currentNavItem.addClass("active"),this.setActiveStyleForMenuLinks(currentSubmenuId,$currentNavItem)},setActiveStyleForMenuLinks(currentSubmenuId,$currentNavItem){const $correspondingMenuLink=this.getCorrespondingMenuLink(currentSubmenuId,$currentNavItem);$correspondingMenuLink&&(this.$menuLinks.find(".js-menu-link").removeClass("active"),$correspondingMenuLink.addClass("active"))},getCorrespondingMenuLink(currentSubmenuId,$currentNavItem){if(!currentSubmenuId)return;if(this.isMenuLinkExistingForId(currentSubmenuId))return this.$menuLinks.find(`.js-menu-link[data-reference-id='${currentSubmenuId}']`);
7const parentNavItemId=$currentNavItem.closest(".js-navigation-link-list").data("submenu-id"),$parentNavItem=this.$ctx.find(`.js-navigation-link[data-reference-id='${parentNavItemId}']`);return this.getCorrespondingMenuLink(parentNavItemId,$parentNavItem)},handleNavLinkClick(e){if("keydown"===e.type&&!this.isKeyDownEnter(e))return;const $target=$(e.currentTarget),linkHierarchy=this.getDataLinkHierarchy($target),checkUrlwithHash=e.currentTarget.href.includes("#");!$target.hasClass("has-child-level")||"desktop"===this.currentVp&&3===linkHierarchy||(e.preventDefault(),this.openSublevel(e,$target),this.checkForPromotionTeaserDebounced()),!$target.hasClass("has-child-level")&&checkUrlwithHash&&"desktop"===this.currentVp&&3===linkHierarchy&&this._events.emit("headerResetFromNavigationFlyout")},isMenuLinkExistingForId(currentSubmenuId){return this.$menuLinks.find(`.js-menu-link[data-reference-id='${currentSubmenuId}']`).length},closeSubmenus(currentLinkHierarchy){const $allDeeperLevelMenuCols=this.$ctx.find(".js-navigation-col").filter((index,element)=>this.getDataLinkHierarchy($(element))>currentLinkHierarchy);$allDeeperLevelMenuCols.removeClass("active"),$allDeeperLevelMenuCols.find(".js-navigation-link-list").removeClass("active")},openCurrentSubmenu(currentSubmenuId,$subMenuCol){if(!currentSubmenuId)return;const $currentSubmenu=$subMenuCol.find(`.js-navigation-link-list[data-submenu-id='${currentSubmenuId}']`);$currentSubmenu.addClass("active"),$currentSubmenu.length&&$subMenuCol.addClass("active")},cutHeightOfHigherLevel($navItemCol,$subMenuCol){$navItemCol.children(".js-navigation-link-list").removeClass("match-parent-overflow-hidden"),$navItemCol.hasClass("js-first-level")&&$navItemCol.children(".js-navigation-link-list").addClass("match-parent-overflow-hidden"),$navItemCol.children(".js-navigation-link-list.active").addClass("match-parent-overflow-hidden"),$subMenuCol.find(".js-navigation-col").children(".js-navigation-link-list").removeClass("match-parent-overflow-hidden")},focusFirstSubmenuLink(ev,$currentSubmenu){this.isKeyDownEnter(ev)&&$currentSubmenu.children(".js-navigation-link:visible").first().trigger("focus")},scrollToSubmenuTop(){this.$ctx.closest(".fly-out").scrollTop(0)},isKeyDownEnter:ev=>"keydown"===ev.type&&13===ev.keyCode,setChildLevelClasses(){this.$ctx.find(".js-navigation-link[data-reference-id]").each((index,value)=>{this.$ctx.find(`.js-navigation-link-list[data-submenu-id='${$(value).data("reference-id")}']`).length&&$(value).addClass("has-child-level")})},appendMobileBackButtons(){this.$ctx.find(".js-list-heading-row").prepend('<div tabindex="0" class="back-button js-back-button"></div>'),this.$ctx.find(".js-back-button").on("click",ev=>{this.closeSublevel(ev),this.checkForPromotionTeaser()})},setTracking(){this.$navigationLinks.on("click",ev=>{const $link=$(ev.currentTarget),linkHierarchy=this.getDataLinkHierarchy($link);(!$link.hasClass("has-child-level")||"desktop"===this.currentVp&&3===linkHierarchy)&&this.flyoutLinksTracking($link,linkHierarchy)})},flyoutLinksTracking($currentLink,linkHierarchy){const $elementsForTrackingString=this.getActivatedNavigationLinks().slice(0,linkHierarchy-1).add($currentLink).find(".text"),trackingHierarchyText=this.concatElementsText($elementsForTrackingString);this.fireTrackingEvent("flyout link clicked",trackingHierarchyText)},getDataLinkHierarchy:$element=>$element.closest(".js-navigation-col").data("link-hierarchy"),getActivatedNavigationLinks(){return this.$navigationLinks.filter(".active")},getActiveMenus(){return this.$ctx.find(".js-navigation-link-list.active")}
7,concatElementsText:$selection=>$selection.toArray().reduce((accumulationString,currentElement,index)=>{const text=$(currentElement).text().trim();return index>0?`${accumulationString}|${text}`:text},""),fireTrackingEvent(trackType,flyOutLinkHierarchyTrackingString){this._events.emit("tracking:generic",{trackType:trackType,trackData:{flyout_link_hier:flyOutLinkHierarchyTrackingString}})},setupPromotionTeaserTracking(){this.$promotionTeaserContainer.find(".m-searchresultpromotionteaser").on("click",e=>{this.trackPromotionTeaser($(e.currentTarget))})},trackPromotionTeaser($currentTeaser){const $teaserTitle=$currentTeaser.find(".teaser-label"),$elementsForTrackingString=this.getActivatedNavigationLinks().find(".text").add($teaserTitle),trackingHierarchyText=this.concatElementsText($elementsForTrackingString);this.fireTrackingEvent("flyout teaser clicked",trackingHierarchyText)},checkForPromotionTeaser(){const $activeMenus=this.getActiveMenus(),$currentMenu=$($activeMenus[$activeMenus.length-1]),promotionTeaserId=$currentMenu.data("promotion-teaser-id");null!=promotionTeaserId&&(this.moveTeaserToCorrectPositionDesktop($currentMenu),this.renderPromotionalTeaser(promotionTeaserId))},renderPromotionalTeaser(promotionTeaserId){promotionTeaserId===this.currentPromotionalTeaserId?setTimeout(()=>{this.collapseNotVisibleLevels(),this.showPromotionalTeaser()},this.animationDelay):this.getTeaserFromAjaxRequest(promotionTeaserId)},getTeaserFromAjaxRequest(promotionTeaserId){this.ajaxRequest&&(this.ajaxRequest[0].abort(),this.ajaxRequest=null),this.ajaxRequest=T.Utils.startAjaxRequest(this.$promotionTeaserAjaxID,null,{componentUid:String(promotionTeaserId),dataReplaceId:"ajax-promotional-teaser"}),this.ajaxRequest?this.ajaxRequest[0].always(()=>{this.ajaxRequest=null}).done(()=>{const $activeMenus=this.getActiveMenus(),$currentMenu=$($activeMenus[$activeMenus.length-1]);3===this.getDataLinkHierarchy($currentMenu)||(this.showPromotionalTeaser(),this.setupPromotionTeaserTracking()),this.currentPromotionalTeaserId=promotionTeaserId,this.showPromotionalTeaser()}).fail(()=>{this.hidePromotionalTeaser()}):this.hidePromotionalTeaser()},collapseNotVisibleLevels(){if("desktop"===this.currentVp)return;this.getActiveMenus().not(":last").css("height",0)},expandHeightOfLevels(force=!1){if("desktop"===this.currentVp&&!force)return;this.getActiveMenus().css("height","auto")},removeActiveClassFromNotVisibleLevels(){this.getActiveMenus().each((index,level)=>{index>=3&&(level.classList.remove("active"),level.closest(".js-navigation-col").classList.remove("active"))})},moveTeaserToCorrectPositionDesktop($currentMenu){if("desktop"!==this.currentVp)return;3===this.getDataLinkHierarchy($currentMenu)?this.moveTeaserInsideThirdColumn($currentMenu):this.moveTeaserToInitialPosition()},moveTeaserInsideThirdColumn($currentMenu){$currentMenu.append(this.$promotionTeaserContainer),this.teaserIsRenderedInsideLinkList=!0},moveTeaserToInitialPosition(){this.teaserIsRenderedInsideLinkList&&(this.$ctx.append(this.$promotionTeaserContainer),this.teaserIsRenderedInsideLinkList=!1)},hidePromotionalTeaser(){this.$promotionTeaserContainer.css("display","none"),this.$promotionTeaserContainer.find(".m-searchresultpromotionteaser").removeClass("animate-zoom")},showPromotionalTeaser(){const $teaser=this.$promotionTeaserContainer.find(".m-searchresultpromotionteaser");this.$promotionTeaserContainer.css("display","block"),this.setFlyoutHightAfterPromoTeaserImageLoaded($teaser),$teaser.addClass("animate-zoom")},setFlyoutHightAfterPromoTeaserImageLoaded($teaser){"desktop"===this.currentVp&&$teaser.find("img").one("load",()=>{const teaserHeight=`${$teaser.outerHeight(!0)+5}px`;this.setFlyoutMinHeight(teaserHeight)}).each(()=>{this.complete&&$(this).load()})},setFlyoutMinHeight(value){this.$navigationListsWrap.css("min-height",value)}})}(jQuery),function($){T.Module.NavMain=T.createModule({start(resolve){const mod=this;this.$ctx=$(this._ctx);const $images=this.$ctx.find("img");T.Commons.LazyLoadingInitializer.disableLazyLoading($images),mod.$menu=mod.$(".navigation"),mod.$menuToggle=this.$ctx.find(".js-mobile-menu-toggle"),mod.$navHeader=mod.$(".js-nav-header"),mod.$previousLink=mod.$(".js-previous-l
7ink"),mod.$overviewLink=mod.$(".js-overview-link"),mod.$navigationStateActive=mod.$("li.navigation-state-active"),mod.$firstLevelList=mod.$("ul.first-level"),mod.$previousLink.data("text-home",mod.$previousLink.find(".text").text()),mod.hasChildLevel="has-child-level",this.$navigationStateActive.length>0&&this.navigationStateActive(),(this.$navigationStateActive.length>1||1===this.$navigationStateActive.length&&this.$navigationStateActive.find("ul.second-level").length>0)&&this.$navHeader.addClass("is-active"),mod.$("nav li > a").each(function(){const $link=$(this);$link.siblings("ul").length&&$link.addClass(mod.hasChildLevel)}),T.Utils.registerMq("lg",{setup:()=>mod.$menu.find(".second-level .js-close").on("click.desktop",$.proxy(mod.onClickFlyoutClose,mod)),match(){mod.$menu.find("img").on("load",$.proxy(mod.onLoadImage,mod)),mod.$menu.find(".first-level > li > a").on("click.desktop",$.proxy(mod.onClickFirstLevelDesktop,mod)),mod.$(".navigation ul:not(.first-level) > li > a").on("click.desktop",$.proxy(mod.flyoutLinksTracking,mod));const $secondLevelMenu=mod.$menu.find(".second-level");mod.ro=new ResizeObserver(entry=>{const conversionBarHeight=mod.$ctx.parent().find(".conversion-bar").outerHeight(),firstLevelHeight=mod.$menu.find(".first-level").outerHeight();mod.$menu.height(entry[0].target.offsetHeight+conversionBarHeight+firstLevelHeight)});for(let i=0;i<$secondLevelMenu.length;i++)mod.ro.observe(mod.$menu.find(".second-level")[i]);mod.$menu.css("height","")},unmatch(){mod.$menu.find(".first-level > li > a").off("click.desktop"),mod.$(".navigation ul:not(.first-level) > li > a").off("click.desktop"),mod.$(".is-active").removeClass("is-active");const $secondLevelMenu=mod.$menu.find(".second-level");for(let i=0;i<$secondLevelMenu.length;i++)mod.ro.unobserve(mod.$menu.find(".second-level")[i]);mod.removeSecondLevelMatchHeight(mod.$firstLevelList),mod.$menu.css("height","")}}),T.Utils.registerMq("lg",{setup(){mod.$menuToggle.on("click.mobile",$.proxy(mod.onClickMenuToggle,mod)),mod.$previousLink.on("click.mobile",$.proxy(mod.onClickPrevious,mod)),mod._events.on("closeMobileNav.header",$.proxy(mod.onCloseMobileNav,mod))},match(){mod.$navigationStateActive.length>0&&mod.navigationStateActive(),mod.$(".navigation li:not(.overview) > a").on("click.mobile",$.proxy(mod.onClickNavEntry,mod)),mod.$(".navigation div > a.js-overview-link,.navigation li > a:not(.has-child-level)").on("click.mobile",$.proxy(mod.flyoutLinksTracking,mod))},unmatch(){mod.$menu.hasClass("is-active-mobile")&&mod.$menuToggle.trigger("click.mobile"),mod.$(".navigation li:not(.overview) > a").off("click.mobile"),mod.$(".navigation li > a:not(.has-child-level),.navigation div > a.js-overview-link").off("click.mobile"),mod.$(".is-active-mobile,.is-active-parent-mobile").removeClass("is-active-mobile is-active-parent-mobile"),mod.$navHeader.parents().removeAttr("style")}},"max");const hashids=T.Utils.getHashIds("NavMain");return location.hash&&hashids.length&&this.showMenuOnStart(hashids[0]),mod._events.on("navmain:open-mobile-menu",$.proxy(mod.onOpenMobileMenu,mod)),mod._events.on("navmain:open-flyout",$.proxy(mod.onOpenFlyout,mod)),resolve()},navigationStateActive(){let $previousLink="";this.$navigationStateActive.each(function(){const $selectedElement=$(this);$selectedElement.children("ul").length>0&&$selectedElement.parent("ul").addClass("is-active-mobile is-active-parent-mobile")}),this.$navigationStateActive.last().children("ul").length>0?($previousLink=this.$navigationStateActive.last().children("a"),this.$navigationStateActive.last().children("ul").addClass("is-active-mobile")):($previousLink=this.$navigationStateActive.last().parent("ul").parent("li").children("a"),this.$navigationStateActive.last().parent("ul").addClass("is-active-mobile")),this.setPreviousLink($previousLink),this.setOverviewLink($previousLink)},showMenuOnStart(hashid){this.$(`nav [data-id='${hashid}']`).trigger("click"),T.Utils.removeHash("NavMain",[hashid])},setNavHeightMobile(){const $activeLayer=this.$menu.find(".is-active-mobile:last");let height=this.$navHeader.height();$activeLayer.length?(height=height+$activeLayer.height()+"px",this.$menu.find(".second-level").addClass("fade-in")):height="",this.$menu.css("height",he
7ight)},setNavHeightDesktop($firstLevelEntry){const conversionBarHeight=this.$ctx.parent().find(".conversion-bar").outerHeight(),firstLevelHeight=this.$menu.find(".first-level").outerHeight(),$secondLevel=$firstLevelEntry.find(".second-level");if(this.$menu.css("height",$secondLevel.outerHeight()),$firstLevelEntry.hasClass("is-active")){const totalHeight=firstLevelHeight+$secondLevel.outerHeight()+conversionBarHeight+"px";this.$menu.css("height",totalHeight),this.$menu.find(".second-level").addClass("fade-in")}else this.$menu.css("height",""),$secondLevel.removeClass("fade-in")},setOverviewLink($link){$link.parent().is(".navigation-state-active")&&0===$link.parent().find(".navigation-state-active").length?this.$overviewLink.closest(".overview").addClass("navigation-state-active"):this.$overviewLink.closest(".overview").removeClass("navigation-state-active"),this.$overviewLink.attr({href:$link.attr("href")})},setPreviousLink($link){return $link.length?this.$previousLink.find(".text").text($link.text()):this.$previousLink.find(".text").text(this.$previousLink.data("text-home"))},setSecondLevelHeightDesktop($firstLevel){const $secondLevelItems=$firstLevel.find(".second-level > li"),$secondLevelImg=$secondLevelItems.find(".a-image img");$secondLevelItems.matchHeight(),$secondLevelImg.matchHeight()},removeSecondLevelMatchHeight($firstLevel,$secondLevelItems){const $secondLevelImg=($secondLevelItems=$secondLevelItems||$firstLevel.find(".second-level > li")).find(".a-image img");$secondLevelItems.removeAttr("style"),$secondLevelImg.removeAttr("style")},onClickFirstLevelDesktop(ev){const $currentLink=$(ev.currentTarget),$firstLevelEntry=$currentLink.parent();$currentLink.hasClass(this.hasChildLevel)||this.flyoutLinksTracking(ev),this.$menu.css("height",$firstLevelEntry.outerHeight()),this.$menu.find(".first-level > li").hasClass("is-active")||this.$menu.find(".second-level").removeClass("fade-in"),$firstLevelEntry.hasClass("is-active")||$firstLevelEntry.siblings().removeClass("is-active"),$currentLink.siblings("ul").length&&($firstLevelEntry.toggleClass("is-active"),$firstLevelEntry.hasClass("is-active")?setTimeout(()=>{this.setSecondLevelHeightDesktop($firstLevelEntry)},100):this.removeSecondLevelMatchHeight($firstLevelEntry),setTimeout(()=>{this.setNavHeightDesktop($firstLevelEntry)},100),ev.preventDefault())},onClickFlyoutClose(ev){const $closeButton=$(ev.currentTarget);T.Utils.scrollToTop(),$closeButton.closest(".second-level").siblings("a").trigger("click")},onClickMenuToggle(ev){const $toggle=$(ev.currentTarget);this.$menu.toggleClass("is-active-mobile"),this.$menuToggle.toggleClass("is-active-mobile"),this._events.emit("toggleNavMetaMenu",{isMenuOpen:this.$menu.hasClass("is-active-mobile"),$headerCtx:$toggle.closest(".o-header")}),this._events.emit("closeSearchByNav"),this._events.emit("headerOpen"),this.$navHeader.hasClass("is-active")&&this.setNavHeightMobile()},onClickNavEntry(ev){let $secondLevelLink;const $link=$(ev.currentTarget);let $siblings=$link.siblings("ul");const $parentLayer=$link.closest("ul"),$onlyEntry=$siblings.children("li:not(.overview):not(.close)");1===$onlyEntry.length&&$onlyEntry.children(".a-link").hasClass(this.hasChildLevel)&&(this.$navHeader.addClass("js-only-entry"),$siblings.addClass("is-skipped-level"),($siblings=$onlyEntry.children("ul")).parent().closest("ul").addClass("is-active-mobile is-active-parent-mobile"),$secondLevelLink=$link.closest("li").find(".second-level-link")),$siblings.length&&($parentLayer.addClass("is-active-parent-mobile"),$siblings.addClass("is-active-mobile"),this.$navHeader.hasClass("js-only-entry")?this.setOverviewLink($secondLevelLink):this.setOverviewLink($link),this.setPreviousLink($link),this.$navHeader.addClass("is-active"),this.setNavHeightMobile(),T.Utils.scrollToTop(this.$navHeader),ev.preventDefault())},onClickPrevious(ev){const $activeLayer=this.$(".is-active-mobile:last"),$parentLayer=$activeLayer.parent().closest("ul"),$parentLink=$parentLayer.siblings("a");return this.$navHeader.hasClass("js-only-entry")&&(this.$menu.find("ul").removeClass("is-active-mobile is-active-parent-mobile"),this.$navHeader.removeClass("is-active js-only-entry")),$activeLayer.removeClass("is-active-mobile"),$parentLayer.removeClass("is-active-parent-mobile"),$parentLayer.parents("ul").length?(this.setOverviewLink($parentLink),this.setPreviousLink($parentLink),this.setNavHeightMobile()):(this.$navHeader.removeClass("is-active"),this.$navHeader.parents().removeAttr("style")),ev.preventDefault()},onCloseMobileNav(){this.$menu.removeClass("is-active-mobile"),this.$menuToggle.removeClass("is-active-mobile"),this._events.emit("closeNavMetaMenu.header"),this._events.emit("headerClose")},concatElementsText:$selection=>$selection.toArray().reduce((accumulationString,currentElement,index)=>{const text=$(currentElement).text().trim();return index>0?`${accumulationString}|${text}`:text},""),flyoutLinksTracking(ev){const $link=$(ev.currentTarget),$elementsForTrackingString=this.getNavigationsLinksHierarchyTexts($link),trackingHierarchyText=this.concatElementsText($elementsForTrackingString);trackingHierarchyText&&this._events.emit("tracking:generic",{trackType:"flyout link clicked",trackData:{flyout_link_hier:trackingHierarchyText}})},getNavigationsLinksHierarchyTexts:$link=>$link.parents("nav ul li").children(".a-link").find(".text"),onLoadImage(ev){const $firstLevel=$(ev.currentTarget).closest(".second-level").closest("li");$firstLevel.hasClass("is-active")&&(setTimeout(()=>{this.setSecondLevelHeightDesktop($firstLevel)},100),this.setNavHeightDesktop($firstLevel))},onOpenFlyout(data){if(data.id){this.$(`[data-id='${data.id}']`).trigger("click")}},onOpenMobileMenu(){this.$menuToggle.hasClass("is-active-mobile")||this.$menuToggle.trigger("click")}})}(jQuery),function($){T.Module.NavMeta=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$closeButton=this.$(".js-close-mobile"),this.$closeButton.on("click",$.proxy(this.onClickMobileNavClose,this)),this.$selectLanguage=this.$(".language-selector").find("select"),this.$selectLanguage.on("change",$.proxy(this.onChangeLanguage,this)),this._events.on("toggleNavMetaMenu",$.proxy(this.onToggleNavMetaMenu,this)),this._events.on("closeNavMetaMenu.header",$.proxy(this.closeNavMetaMenu,this)),resolve()},sync(){},closeNavMetaMenu(ev){return this.$ctx.removeClass("is-active-mobile")},onToggleNavMetaMenu(data){if(this.$ctx.closest(data.$headerCtx).length)return this.$ctx.toggleClass("is-active-mobile")},onChangeLanguage(){const location=this.$selectLanguage.val(),requestUrl=this.$selectLanguage.data("request-url"),requestValue=this.$selectLanguage.find("option:selected").data("request-value");requestUrl&&requestValue?T.Utils.startAjaxRequest(!1,{url:requestUrl,dataType:"text"},{userSelectedLocale:requestValue},()=>{window.location=location}):window.location=location},onClickMobileNavClose(ev){return this._events.emit("closeMobileNav.header")}})}(jQuery),function($){T.Module.NavMyAccount=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$navMyAccount=this.$ctx.closest(".
7js-navmyaccount"),this.removeMaxWidth(),resolve()},sync(){},removeMaxWidth(){this.$navMyAccount.css("max-width","none")}})}(jQuery),function($){T.Module.OneAccountDecideDefaultData=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.selector={radioButton:".js-radio",submitButton:".js-submit-button",addressContainer:".js-address-container"},this.elem={$radio:this.$ctx.find(this.selector.radioButton),$submitButton:this.$ctx.find(this.selector.submitButton),$addressContainer:this.$ctx.find(this.selector.addressContainer)},this.elem.$radio.on("click",ev=>{$(ev.currentTarget).prop("checked")&&this.elem.$submitButton.removeAttr("disabled"),this.getAddressForm(ev)}),this.checkPreCheckedRadio(),resolve()},checkPreCheckedRadio(){this.elem.$radio.each((index,element)=>{const $currentRadioButton=$(element);$currentRadioButton.prop("checked")&&(this.setOriginDisabled($currentRadioButton),$currentRadioButton.data("hasAddressFetched",!0),$currentRadioButton.trigger("click"))})},setOriginDisabled($currentRadioButton){const preCheckReplaceContainerSelector=`[data-replace-container=${$currentRadioButton.data("address-container")}]`;this.$ctx.find(preCheckReplaceContainerSelector).find("input, textarea, select").each((index,element)=>{$(element).prop("disabled")&&$(element).attr("data-origindisabled",!0)})},getAddressForm(ev){const $currentRadioButton=$(ev.currentTarget),replaceContainerSelector=`[data-replace-container=${$currentRadioButton.data("address-container")}]`,$currentAddressContainer=this.$ctx.find(replaceContainerSelector);if(this.elem.$addressContainer.addClass("hidden"),$currentAddressContainer.removeClass("hidden"),T.Utils.genericFormKeepDisabledFieldsOnShow(this.elem.$addressContainer),T.Utils.genericFormDisableFieldsOnHide(this.elem.$addressContainer.not(replaceContainerSelector)),$currentRadioButton.data("hasAddressFetched"))return;this._events.emit("loader:open",{loaderType:"layer",$trigger:this.$ctx});const url=$currentRadioButton.data("url"),request=T.Utils.startAjaxRequest(null,{url:url,method:"GET",dataType:"html",dataRendering:!0});return!!request&&request[0].done(result=>{$currentRadioButton.data("hasAddressFetched",!0),this.setOriginDisabled($currentRadioButton)}).fail((xhr,ajaxOptions,thrownError)=>{console.info(xhr)}).always(()=>{this._events.emit("loader:close",{$trigger:this.$ctx})})}})}(jQuery),function($){T.Module.OneyInstallmentsCheckout=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.isSynced=!1,this.selector={oneyWidget:".js-oney-checkout-installation"},this.elm={$oneyWidget:$(this.selector.oneyWidget)},this.oneyWidgetInfo=this.elm.$oneyWidget.data("oneyWidgetInfo"),this.oneyWidgetSdk=this.elm.$oneyWidget.data("oneyWidgetSdk"),this.availableOneyMethods=this.elm.$oneyWidget.data("oneyMethods"),this.oneyFreeInstallments=this.elm.$oneyWidget.data("oneyTaxFree"),this.oneyAdditionalWidgetInfo=this.elm.$oneyWidget.data("oneyAdditionalWidgetInfo"),this._events.on("t.sync",()=>this.sync()),that=this,resolve()},sync(){this.isSynced||(this.isSynced=!0,this.onOneyInstallmentsShow())},onOneyInstallmentsShow(){this.loadOneyScriptOnce(this.oneyWidgetSdk)},loadOneyScriptOnce(websdk){T.Commons.ScriptLoader.loadOnceOneyWidgetSdk(websdk,that.onLibraryLoaded)},onLibraryLoaded(){const{merchantId:merchantId,countryCode:countryCode,price:price}=that.oneyWidgetInfo,{document_type:document_type,merchant_orias_number:merchant_orias_number,merchant_name:merchant_name,merchant_address:merchant_address,free_bts:free_bts}=that.oneyAdditionalWidgetInfo,availableOneyMethods=that.availableOneyMethods.length>0?that.availableOneyMethods.replace(/\s/g,"").split(","):[],freeInstallments=that.oneyFreeInstallments.length>0?that.oneyFreeInstallments.replace(/\s/g,"").split(","):[];if(freeInstallments.length>0&&availableOneyMethods.length>0)for(var i=0;i<availableOneyMethods.length;i++){$("#OneyInstallmentsSection").append(`<div id="OneyInstallmentsSection-${i}"></div>`);let payment_mode=availableOneyMethods[i],is_free=freeInstallments.includes(availableOneyMethods[i]);const options={country:countryCode,language:countryCode,merchant_guid:merchantId,payment_amount:price,checkout_placeholder:`#OneyInstallmentsSection-${i}`,document_type:document_type,merchant_orias_number:merchant_orias_number,merchant_name:merchant_name,merchant_address:merchant_address,free_bts:free_bts,filter_by:"filters"};options.filters=[{payment_mode:payment_mode,is_free:is_free}],loadOneyWidget(function(){oneyMerchantApp.loadCheckoutSection({options:options})})}}})}(jQuery),function($){T.Module.OneyInstallmentsWidget=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.isSynced=!1,this.selector={oneyWidget:".js-oney-widget",oneyWidgetLink:".js-oney-widget-link"},this.elm={$oneyWidget:$(this.selector.oneyWidget),$oneyWidgetLink:$(this.selector.oneyWidgetLink,this.$ctx)},this.oneyWidgetInfo=this.elm.$oneyWidget.data("oneyWidgetInfo"),this.oneyWidgetSdk=this.elm.$oneyWidget.data("oneyWidgetSdk"),this.availableOneyMethods=this.elm.$oneyWidget.data("oneyMethods"),this.oneyFreeInstallments=this.elm.$oneyWidget.data("oneyTaxFree"),this._events.on("t.sync",()=>this.sync()),this.elm.$oneyWidgetLink.on("click",()=>{this.onClickOfOneyLink()}),that=this,resolve()},sync(){return this.isSynced||(this.isSynced=!0),this.isSynced},onClickOfOneyLink(){this.loadOneyScriptOnce(this.oneyWidgetSdk)},loadOneyScriptOnce(websdk){T.Commons.ScriptLoader.loadOnceOneyWidgetSdk(websdk,that.onLibraryLoaded)},onLibraryLoaded(){const{merchantId:merchantId,countryCode:countryCode,price:price}=that.oneyWidgetInfo,availableOneyMethods=that.availableOneyMethods.length>0?that.availableOneyMethods.replace(/\s/g,"").split(","):[],freeInstallments=that.oneyFreeInstallments.length>0?that.oneyFreeInstallments.replace(/\s/g,"").split(","):[],options={country:countryCode,language:countryCode,merchant_guid:merchantId,payment_amount:price};if(freeInstallments.length>0&&availableOneyMethods.length>0){const resultInstalmentFilters=availableOneyMethods.map(item=>({payment_mode:item,is_free:freeInstallments.includes(item)}));options.filter_by="filters",options.filters=resultInstalmentFilters}loadOneyWidget(function(){oneyMerchantApp.loadSimulationPopin({options:options})})}})}(jQuery),function($){T.Module.OrderCancelItem=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$requestform=$(".js-ajax-request",this.$ctx),this.$requesttrigger=$(".js-trigger-order-cancellation",this.$ctx),this.$requesterrorbox=$(".js-request-error-box",this.$ctx),this.sync=$.proxy(this.sync,this),this.handleFailedCancelRequest=$.proxy(this.handleFailedCancelRequest,this),this.onTriggerCancellationRequest=$.proxy(this.onTriggerCancellationRequest,this),this._events.on("t.sync",this.sync),this.$requestform.on("submit",this.onTriggerCancellationRequest),console.log("OrderCancelItem start"),resolve()},sync(){this.isSynced||(this.isSynced=!0,console.log("OrderCancelItem sync"))},handleFailedCancelRequest(jqXHR,textStatus,thrownError){return this._events.emit("hideLayer",!0),this.$requesterrorbox.toggleClass("hidden",!1)},onTriggerCancellationRequest(e){if(this.$requestform.get(0).checkValidity()){return T.Utils.startAjaxRequest(this.$requestform.data("ajax-id"))[0].fail(this.handleFailedCancelRequest),e.preventDefault()}}})}(jQuery),function($){T.Module.OrderCookbook=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$downloadLanguage=$(".js-select-language",this.$ctx),this.$downloadLink=$(".js-download-cookbook-link",this.$ctx),this.$form=$(".js-ajax-request",this.$ctx),this.stateclass={hidden:"is-hidden"},this.changeDownloadLink=$.proxy(this.changeDownloadLink,this),this.onChangeLanguage=$.proxy(this.onChangeLanguage,this),this.onSubmitForm=$.proxy(this.onSubmitForm,this),this.sync=$.proxy(this.sync,this),this._events.on("t.sync",this.sync),this.$downloadLanguage.on("change",this.onChangeLanguage),this.$form.on("submit",this.onSubmitForm),resolve()},sync(){this.isSynced||(this.isSynced=!0)},changeDownloadLink(id){return Array.from(this.$downloadLink).map(link=>$(link).toggleClass(this.stateclass.hidden,Boolean($(link).data("factoryMaterialNumber")-id)))},onChangeLanguage(ev){return this.changeDownloadLink(this.$downloadLanguage.val())},onSubmitForm(ev){return ev.preventDefault(),T.Utils.startAjaxRequest(this.$form.data("ajaxId"))}})}(jQuery),function($){T.Module.OrderItem=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this._selector={toggleView:".js-toggle-view",orderDetails:".order-details",orderInfo:".order-info",expandedOrderAjax:".js-order-expanded"},this.elm={$toggleView:this.$(this._selector.toggleView,this.$ctx),$orderDetails:this.$(this._selector.orderDetails,this.$ctx),$orderInfo:this.$(this._selector.orderInfo,this.$ctx),$expandedOrderAjax:this.$(this._selector.expandedOrderAjax)},this.isExpanded=this.elm.$expandedOrderAjax.data("is-expanded"),this.isSynced=!1,this.expandedOrderAjaxId=this.elm.$expandedOrderAjax.data("ajax-id"),this._events.on("t.sync",$.proxy(this.sync,this)),this.elm.$toggleView.on("click",$.proxy(this.onClickContentToggle,this)),resolve()},sync(){if(!this.isSynced&&(this.isSynced=!0,this.isExpanded)){var mod=this;T.Utils.startAjaxRequest(this.expandedOrderAjaxId)[0].done(function(result){mod.elm.$toggleView.addClass("is-expanded"),mod.elm.$orderDetails.removeClass("hidden"),mod.elm.$orderInfo.addClass("expanded")})}},onClickContentToggle(ev){const orderList=this.$ctx.closest(".o-list");if(orderList.find(".js-toggle-view").removeClass("is-expanded"),orderList.find(this._selector.orderDetails).addClass("hidden"),orderList.find(this._selector.orderInfo).removeClass("expanded"),this.isExpanded)this.elm.$toggleView.removeClass("is-expanded"),this.elm.$orderDetails.addClass("hidden"),this.elm.$orderInfo.removeClass("expanded"),this.isExpanded=!1;else{var mod=this;T.Utils.startAjaxRequest(this.expandedOrderAjaxId)[0].done(function(result){mod.elm.$toggleView.addClass("is-expanded"),mod.elm.$orderDetails.removeClass("hidden"),mod.elm.$orderInfo.addClass("expanded"),mod.isExpanded=!0})}return ev.preventDefault()}})}(jQuery),jQuery,T.Module.OrderPurchaseItem=T.createModule({start:resolve=>resolve(),sync(){}}),function($){T.Module.Overviewtile=T.createModule({start(resolve){return this.isSynced=!1,this.$ctx=$(this._ctx),this.$footnote=this.$ctx.find(".js-technicalText > .js-footnote-sup"),this.$footnote.on("click",ev=>this.scrollToFootNote(ev)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},scrollToFootNote(ev){ev.preventDefault(),this._events.emit("scrollToSection:footnotes")}})}(jQuery),function($){T.Module.PageStage=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,getComputedStyle(this.$ctx[0]).getPropertyValue("--toggle-state")&&(this.$header=$(".o-headerrebrush"),this.$headerBreadCrumb=$(".js-
7header-breadcrumb"),this.initialBottomMargin=this.$ctx.css("margin-bottom"),this.scrollEventDebounceTime=50,this.$headerBreadCrumb.length?this._events.on("windowWidthChanged",T.Utils.debounce(()=>this.calcAlternativePosition(),this.scrollEventDebounceTime)):this._events.on("viewportChanged",T.Utils.debounce(()=>this.onVpChange(),this.scrollEventDebounceTime)),this.calcAlternativePosition()),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.initVideoControls())},onVpChange(){const oldVp=this.currentVp;this.currentVp=T.Utils.getViewport(),"mobile"===oldVp&&"tablet"===this.currentVp||"tablet"===oldVp&&"mobile"===this.currentVp||this.calcAlternativePosition()},calcAlternativePosition(){const headerHeight=this.$headerBreadCrumb.length?this.$header.height()+this.$headerBreadCrumb.height():this.$header.height(),bottomMargin=parseInt(this.initialBottomMargin,10)-headerHeight;this.$ctx.css("top",`-${headerHeight}px`),this.$ctx.css("margin-bottom",`${bottomMargin}px`),this.$ctx.find(".pagestage-content-wrapper").css("height",`calc(100% - ${headerHeight}px)`)},initVideoControls(){const $video=this.$ctx.find(".js-hero-video").first();if(!$video.length)return;const videoModule=T.Utils.application.getModuleById($video.data("t-id"));videoModule&&(this.$pauseButton=this.$ctx.find(".js-pause-button"),this.$playButton=this.$ctx.find(".js-play-button"),this._events.on("video:play",()=>this.showPauseButton()),this._events.on("video:pause",()=>this.showPlayButton()),this.$pauseButton.on("click",()=>{videoModule.videoPause(!0),videoModule.autoplayStatus.stopped=!0}),this.$playButton.on("click",()=>{videoModule.videoPlay(this.$playButton),videoModule.autoplayStatus.stopped=!1}),this._events.on("video:play",()=>{videoModule.muteVideo()}),this._events.on("video:stop",()=>{this.showPlayButton()}))},showPauseButton(){this.$playButton.addClass("hidden"),this.$pauseButton.removeClass("hidden")},showPlayButton(){this.$pauseButton.addClass("hidden"),this.$playButton.removeClass("hidden")}})}(jQuery),function($){T.Module.Pagination=T.createModule({start(resolve){return this.setupConstants(),this.$ctx=$(this._ctx),this._ctx.module=this,this.enabled=!0,this.callbacks=this._ctx.callbacks||[],this.initializeByDOM(),resolve()},setMaxPages(pages){return(pages=parseInt(pages))<1&&(pages=1),pages<this.currentPage&&(this.currentPage=pages),this.maxPages=pages,this},setEnabled(enabled){return this.enabled=enabled,this},setCurrentPage(page){return(page=parseInt(page))<1&&(page=1),page>this.maxPages&&(page=this.maxPages),this.currentPage=page,this},setRange(range){return(range=(range=parseInt(range))||3)%2||range--,this.range=range,this},update(){return this.removePageButtonsAndSpacer(),this.addPageButtons(),this.manageArrowBtnVisibility(),this},listenToSelectPage(callback){return this.callbacks.push(callback),this},getData(name,defaultValue){return this.$ctx.data(name)||defaultValue},setupArrowButtons(){this.$previousBtn=this.$buttonContainer.find(".js-previous-button"),this.setupBtnOnClick(this.$previousBtn,this.onClickPreviousBtn.bind(this)),this.$nextBtn=this.$buttonContainer.find(".js-next-button"),this.setupBtnOnClick(this.$nextBtn,this.onClickNextBtn.bind(this))},onClickPreviousBtn(){if(this.isBtnHidden(this.$previousBtn))return;if(this.currentPage<=this.FIRST_PAGE)return;const previousPage=this.currentPage-this.ONE_PAGE;this.onPageBtnClick(previousPage)},onClickNextBtn(){if(this.isBtnHidden(this.$nextBtn))return;if(this.currentPage>=this.maxPages)return;const nextPage=this.currentPage+this.ONE_PAGE;this.onPageBtnClick(nextPage)},addPageButtons(){const buttons=this.calculateButtonMatrix();$(buttons).each((index,value)=>{value===this.SPACER_NAME?this.createSpacer():this.createPageButton(value)})},calculateButtonMatrix(){const rangeModifier=Math.floor(this.range/2),lowerBorder=this.FIRST_PAGE+this.range,higherBorder=this.maxPages-this.range;let buttons=[];if(lowerBorder>=higherBorder){for(let i=this.FIRST_PAGE;i<=this.maxPages;i++)buttons.push(i);return buttons}let rangeStart=this.currentPage-rangeModifier,rangeEnd=this.currentPage+rangeModifier;this.currentPage<=lowerBorder&&(rangeStart=this.FIRST_PAGE,rangeEnd<=lowerBorder&&(rangeEnd=lowerBorder)),this.currentPage>=higherBorder&&(rangeEnd=this.maxPages,rangeStart>=higherBorder&&(rangeStart=higherBorder)),rangeStart!==this.FIRST_PAGE&&(buttons.push(this.FIRST_PAGE),buttons.push(this.SPACER_NAME));for(let i=rangeStart;i<=rangeEnd;i++)buttons.push(i);return rangeEnd!==this.maxPages&&(buttons.push(this.SPACER_NAME),buttons.push(this.maxPages)),buttons},createPageButton(page){const $li=$(document.createElement(this.PAGE_BTN_TAG_NAME));
7if($li.text(page),$li.data(this.DATA_NAME_BUTTON_PAGE_NUMBER,page),$li.addClass(this.PAGE_BTN_CSS_CLASS_NAME),this.currentPage===page&&$li.addClass("active"),this.enabled){const onClickCallback=()=>{this.onPageBtnClick(page)};$li.on(this.JQUERY_CLICK_NAME,onClickCallback)}else $li.addClass(this.PAGE_BTN_DEACTIVATED_CLASS_NAME);return $li.insertBefore(this.$nextBtn),$li},createSpacer(){const $li=$(document.createElement(this.PAGE_BTN_TAG_NAME));return $li.addClass(this.PAGE_BTN_SPACER_CSS_CLASS_NAME),$li.insertBefore(this.$nextBtn),this.enabled||$li.addClass(this.PAGE_BTN_DEACTIVATED_CLASS_NAME),$li},onPageBtnClick(page){page!==this.currentPage&&(this.setCurrentPage(page),this.update(),$(this.callbacks).each((index,callback)=>{callback(page)}))},removePageButtonsAndSpacer(){this.$buttonContainer.find("."+this.PAGE_BTN_CSS_CLASS_NAME).remove(),this.$buttonContainer.find("."+this.PAGE_BTN_SPACER_CSS_CLASS_NAME).remove()},manageArrowBtnVisibility(){this.currentPage<=1||!this.enabled?this.hideBtn(this.$previousBtn):this.showBtn(this.$previousBtn),this.currentPage>=this.maxPages||!this.enabled?this.hideBtn(this.$nextBtn):this.showBtn(this.$nextBtn)},setupBtnOnClick($el,callback){$el.on(this.JQUERY_CLICK_NAME,callback)},hideBtn($el){$el.addClass(this.PAGE_BTN_DEACTIVATED_CLASS_NAME)},showBtn($el){$el.removeClass(this.PAGE_BTN_DEACTIVATED_CLASS_NAME)},isBtnHidden($el){return!0===$el.hasClass(this.PAGE_BTN_DEACTIVATED_CLASS_NAME)},setupConstants(){this.SPACER_NAME="spacer",this.PAGE_BTN_CSS_CLASS_NAME="js-page-button",this.PAGE_BTN_SPACER_CSS_CLASS_NAME="js-page-button-spacer",this.PAGE_BTN_DEACTIVATED_CLASS_NAME="pagination-btn-deactivated",this.PAGE_BTN_TAG_NAME="LI",this.JQUERY_CLICK_NAME="click",this.DATA_NAME_MAX_PAGES="max-pages",this.DATA_NAME_CURRENT_PAGE="current-page",this.DATA_NAME_RANGE="range",this.DATA_NAME_BUTTON_PAGE_NUMBER="page-number",this.FIRST_PAGE=1,this.ONE_PAGE=1,this.DEFAULT_MAX_PAGES=1,this.DEFAULT_CURRENT_PAGE=1,this.DEFAULT_RANGE=3},initializeByDOM(){this.$buttonContainer=this.$ctx.find(".js-button-container"),this.setupArrowButtons(),this.setMaxPages(this.getData(this.DATA_NAME_MAX_PAGES,this.DEFAULT_MAX_PAGES)),this.setCurrentPage(this.getData(this.DATA_NAME_CURRENT_PAGE,this.DEFAULT_CURRENT_PAGE)),this.setRange(this.getData(this.DATA_NAME_RANGE,this.DEFAULT_RANGE)),this.update()}})}(jQuery),function($){T.Module.Parallax=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.foreground=this._ctx.querySelector(".foreground"),this.background=this._ctx.querySelector(".background"),this.container=this._ctx.querySelector(".images-container"),this.$text=this.$ctx.find(".content"),new IntersectionObserver((entries,observer)=>{entries[0].isIntersecting&&(observer.unobserve(this.container),this.registerScrollListener())}).observe(this.container),this._events.on("t.sync",()=>{this.calculateParallax()}),resolve()},registerScrollListener(){window.addEventListener("scroll",()=>{this.calculateParallax()})},calculateParallax(){const rect=this.container.getBoundingClientRect(),clientHeight=window.innerHeight,movementMax=T.Utils.isViewport("mobile")?50:75,movementMaxBackground=movementMax/3,start=clientHeight-rect.height/2,end=-rect.height/2;if(this.triggerFlyInAnimation(rect,clientHeight,end),rect.top>start)return this.foreground.style.transform=`translateY(-${movementMax}px)`,void(this.background.style.transform=`translateY(${movementMaxBackground}px)`);if(rect.top<end)return this.foreground.style.transform=`translateY(${movementMax}px)`,void(this.background.style.transform=`translateY(-${movementMaxBackground}px)`);let percent=(rect.top-start)/(end-start);const percentPow2=Math.pow(percent,2),percentPow3=Math.pow(percent,3),posForeground=(percent=1.5*(percentPow3-2*percentPow2+percent)+(-2*percentPow3+3*percentPow2)+1.5*(percentPow3-percentPow2))*movementMax*2-movementMax,posBackground=percent*movementMaxBackground*2-movementMaxBackground;this.foreground.style.transform=`translateY(${posForeground}px)`,this.background.style.transform=`translateY(${-posBackground}px)`}
7,triggerFlyInAnimation(rect,clientHeight,end){this.container.style.transform||(rect.top<end||rect.top<clientHeight-rect.height/4)&&(this.container.style.transform="translateX(0)",this.container.style.opacity="1",this.$text.css("transform","translateX(0)"),this.$text.css("opacity","1"))}})}(jQuery),function($){T.Module.PaymentAdyen=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.config=this.$ctx.data("config"),this.isInitialized=!1,this.selector={formSelector:"form",paymentMethodsContainer:".js-adyen-paymentmethods-container",cardContainerSelector:".js-adyen-card-container",paymentMethodSelector:".js-adyen-payment-method",paymentMethodTypeSelector:".js-adyen-payment-method-type",paymentMethodBrandSelector:".js-adyen-payment-method-brand",browserInfo:".js-adyen-browserinfo",storePaymentMethod:".js-adyen-store-payment-method",errorMessageSelector:".js-error-message",storeDetailsPopover:".js-store-details-popover",storeDetailsAdyenCheckbox:".adyen-checkout__store-details",adyenCvvField:".adyen-checkout__field__cvc",adyenCheckoutFieldIsValid:"adyen-checkout__field--valid",storedCardsRadioBtn:".js-adyen-radio",storedCardDiv:".js-stored-card",newCardContainer:".js-new-card"};const $paymentMethodsContainer=this.$ctx.closest(this.selector.paymentMethodsContainer);return this.elm={$form:this.$ctx.closest(this.selector.formSelector),$cardContainer:this.$ctx.find(this.selector.cardContainerSelector),$errorMessage:this.$ctx.find(this.selector.errorMessageSelector),$paymentMethod:$paymentMethodsContainer.find(this.selector.paymentMethodSelector),$paymentMethodType:$paymentMethodsContainer.find(this.selector.paymentMethodTypeSelector),$browserInfo:$paymentMethodsContainer.find(this.selector.browserInfo),$paymentMethodBrand:$paymentMethodsContainer.find(this.selector.paymentMethodBrandSelector),$storePaymentMethod:$paymentMethodsContainer.find(this.selector.storePaymentMethod),$storeDetailsPopover:this.$ctx.find(this.selector.storeDetailsPopover),$storedCardsRadioBtn:this.$ctx.find(this.selector.storedCardsRadioBtn),$storedCardDiv:this.$ctx.find(this.selector.storedCardDiv),$newCardContainer:this.$ctx.find(this.selector.newCardContainer)},this.elm.$storedCardsRadioBtn.on("change",ev=>{this.handleStoredCardsSelection(ev)}),this.elmToMount="#"+this.$ctx.find(this.selector.cardContainerSelector).attr("id"),this.cardContainerContext=this.$ctx.find(this.elmToMount),this.disableFormSubmit(),this.$ctx.on("paymentAdyen.open",ev=>{this.isInitialized||this.initAdyen()}),resolve()},initAdyen(){AdyenCheckout(this.config.adyenConfig).then(checkout=>{this.checkout=checkout,this.initPaymentMethod(checkout),this.isPaymentMethodValid(),this.updatePaymentData(),this.isInitialized=!0}).catch(error=>{console.error(`url failure ${error.message}`)})},fillHiddenFormFields(data){data.paymentMethod?(this.elm.$paymentMethodType.val(data.paymentMethod.type),this.elm.$paymentMethod.val(JSON.stringify(data.paymentMethod))):(this.elm.$paymentMethodType.val(""),this.elm.$paymentMethod.val("")),data.browserInfo?this.elm.$browserInfo.val(JSON.stringify(data.browserInfo)):this.elm.$browserInfo.val(""),data.storePaymentMethod&&this.elm.$storePaymentMethod.val(data.storePaymentMethod)},enableFormSubmit(){this._events.emit("form:enableSubmit",{id:this.elm.$form.data("t-id")})},disableFormSubmit(){this._events.emit("form:disableSubmit",{id:this.elm.$form.data("t-id")})},toggleCheckbox(displayCheckbox){const checkboxContainer=this.cardContainerContext.find(this.selector.storeDetailsAdyenCheckbox);checkboxContainer&&(displayCheckbox?(checkboxContainer.removeClass("hidden"),this.elm.$storeDetailsPopover.removeClass("hidden")):(checkboxContainer.addClass("hidden"),this.elm.$storeDetailsPopover.addClass("hidden")))},initPaymentMethod(checkout){},isPaymentMethodValid(){},updatePaymentData(){},enableCheckbox(selectedBrand){const{paymentMethodConfigurationData:paymentMethodConfigurationData}=this.config.adyenConfig,userProvidedCardBrand=paymentMethodConfigurationData.filter(item=>item.allowedPaymentMethod===selectedBrand);userProvidedCardBrand.length>0&&userProvidedCardBrand[0].storePaymentMethodEnabled?this.toggleCheckbox(!0):this.toggleCheckbox(!1)}})}(jQuery),function($){T.Module.PaymentCIB=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.config=this.$ctx.data("c
7onfig"),this.scrollToCIBDelayTime=this.config.scrollToCIBDelayTime||1e3,this._selector={cibConfig:"[data-cib-config]"},this.cibData=$(this._selector.cibConfig).data("cibConfig"),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.cibCdnLoad())},cibCdnLoad(){this.loadCIBSdk(this.config.sdkUrl,()=>{null!==this.cibData.sessionId&&this.cibSession()},this.config.additionalAttribute),setTimeout(()=>{T.Utils.scrollToTop(this.$ctx.offset().top)},this.scrollToCIBDelayTime)},loadCIBSdk(sdkUrl,cb,additionalAttribute){T.Commons.ScriptLoader.loadOnceCIB(sdkUrl,cb,additionalAttribute)},cibSession(){Checkout.configure({session:{id:this.cibData.sessionId}}),Checkout.showPaymentPage()}})}(jQuery),function($){T.Module.PaymentDeliveryMethodAdyen=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.config=this.$ctx.data("config"),this.scrollToAdyenDelayTime=this.config.scrollToAdyenDelayTime||3e3,this.selector={radioButton:".js-radio",adyenComponent:".js-paymentadyen",adyenCssFileSelector:`link[href="${this.config.cssUrl}"]`},this.elm={$radio:this.$ctx.find(this.selector.radioButton),$checkedRadio:this.$ctx.find(this.selector.radioButton).filter(":checked"),$adyenComponent:this.$ctx.find(this.selector.adyenComponent),$adyenCssFile:$("head").find(this.selector.adyenCssFileSelector)},this.loadAdyenCss(),this.elm.$radio.on("click",ev=>{this.handleRadioOnClick(ev)}),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.loadAdyenSdk(this.config.sdkUrl,()=>{this.initAdyenVisibility()},this.config.additionalAttribute),setTimeout(()=>{T.Utils.scrollToTop(this.$ctx.offset().top)},this.scrollToAdyenDelayTime))},loadAdyenCss(){this.elm.$adyenCssFile.length<1&&$("head").append(`<link rel="stylesheet" href="${this.config.cssUrl}">`)},loadAdyenSdk(sdkurl,cb,additionalAttribute){T.Commons.ScriptLoader.loadOnceAdyen(sdkurl,cb,additionalAttribute)},initAdyenVisibility(){if(0==this.elm.$checkedRadio.length)this.elm.$radio.first().click();else{const $selectedAdyenComp=this.elm.$checkedRadio.siblings(this.selector.adyenComponent);this.elm.$adyenComponent.not($selectedAdyenComp).hide(),$selectedAdyenComp.show(),this.triggerInitAdyen($selectedAdyenComp)}},handleRadioOnClick(ev){const $selectedAdyenComp=$(ev.currentTarget).siblings(this.selector.adyenComponent);this.triggerInitAdyen($selectedAdyenComp),this.elm.$adyenComponent.not($selectedAdyenComp).hide(),$selectedAdyenComp.show()},triggerInitAdyen($selectedAdyenComp){$selectedAdyenComp.trigger("paymentAdyen.open")}})}(jQuery),function($){T.Module.PaymentQRCode=T.createModule({start(resolve){this.$ctx=$(this._ctx),this._selector={qrConfig:"[data-payment-qr-config]"},this.qrConfig=$(this._selector.qrConfig).data("paymentQrConfig"),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.showQRCode(),this.checkIfPaid())},showQRCode(){this.qrConfig.codeUrl?this.qrcode=new QRCode(this._ctx,{typeNumber:7,render:"canvas",width:300,height:300,correctLevel:3,text:this.qrConfig.codeUrl}):console.error("QR code URL has expired")},checkIfPaid(){if(!this.qrConfig.queryUrl||!this.qrConfig.returnUrl)return;const response=T.Utils.startAjaxRequest(!1,{url:this.qrConfig.queryUrl,dataType:"JSON",method:"POST"});response&&(response[0].fail(result=>{console.error("Failed to check payment status with result: ",result,"redirecting to",this.qrConfig.returnUrl),window.location.href=this.qrConfig.returnUrl}),response[0].done(result=>{"PENDING"!==result?window.location.href=this.qrConfig.returnUrl:setTimeout(()=>this.checkIfPaid(),3e3)}))}})}(jQuery),function($){T.Module.PaymentQRCodeOrderpage=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.browser_width=window.innerWidth,this.selector={qrcodeModelContainer:".m-layer-orderpage-qrcode",qrcodeDiv:".m-payment-qrcode",qrcodeModalButton:"#qrcode-overlay-button",qrcodeModelClose:".js-close-button"},this.$qrcodeModelContainer=this.selector.qrcodeModelContainer,this.$qrcodeDiv=this.selector.qrcodeDiv,this.$qrcodeOverlayButton=this.selector.qrcodeModalButton,this.$jsCloseButton=this.selector.qrcodeModelClose,this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.browser_width<440&&this.orderPageQrcode())},orderPageQrcode(){$(this.$qrcodeOverlayButton).on("click",e=>this.qrcodeOrderpageModal()),$(this.$jsCloseButton).on("click",e=>this.QrCodeHideLayer())},qrcodeOrderpageModal(){$(this.$qrcodeModelContainer).hasClass("is-active")?$(this.$qrcodeModelContainer).removeClass("is-active"):($(this.$qrcodeModelContainer).addClass("is-active"),this.showQRCodeDiv())},showQRCodeDiv(){const $mypaymentformcontainer=$(".m-payment-qrcode");this.qrConfig=$mypaymentformcontainer.data("paymentQrConfig"),this.qrcode=new QRCode($mypaymentformcontainer[0],{typeNumber:7,render:"canvas",width:200,height:200,correctLevel:3,text:this.qrConfig.codeUrl})},QrCodeHideLayer(){$(this.$qrcodeModelContainer).removeClass("is-active"),$(this.$qrcodeDiv).empty()}})}(jQuery),function($){T.Module.PaymentSelection=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.downpaymentData={},this.sync=$.proxy(this.sync,this),this.extendFormData=$.proxy(this.extendFormData,this),this.paymentErrorCheck=$.proxy(this.paymentErrorCheck,this),this.onClickImage=$.proxy(this.onClickImage,this),this.onChangeMethod=$.proxy(this.onChangeMethod,this),this._events.on("t.sync",this.sync),this._events.on("downpayment:updateform",this.extendFormData),this.$(".a-image").on("click",this.onClickImage),this.$ctx.on("change",":radio",this.onChangeMethod),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.paymentErrorCheck())},paymentErrorCheck(){const $errorMsg=this.$ctx.find(".js-message-text");$errorMsg.length>0&&T.Utils.scrollToTop($errorMsg.offset().top)},extendFormData(downpaymentData){return this.downpaymentData=downpaymentData},onChangeMethod(ev,trigger){const $clickedRadio=$(ev.currentTarget),$imageTrigger=$(trigger);return this.handleAjaxRequest($clickedRadio,$imageTrigger)},onClickImage(ev){const $clickedImage=$(ev.currentTarget);return $clickedImage.parent().find(":input").prop("checked",!0).trigger("change",$clickedImage)},handleAjaxRequest(el,$imageTrigger){let data={},downpaymentData={downpaymentData:this.downpaymentData};const mod=this;if($(el).is("[data-exclude]")){mod.$ctx.find(".installments").children().remove()}if(this.$(":radio:checked").each(function(){const $radio=$(this);return data[$radio.attr("name")]=$radio.val()}),$(".js-optins").length){let datao={};$(".js-optins :radio:checked, .js-optins :checkbox:checked, .js-optins input[type=hidden]").each(function(){const $input=$(this);datao[$input.attr("name")]=$input.val()}),data={...datao,...data}}data=$.extend(downpaymentData,data);const request=T.Utils.startAjaxRequest(this.$ctx.data("ajax-id"),null,data);return!!request&&(request[0]?request[0].done(function(response){$imageTrigger&&$imageTrigger.length>0&&mod._events.emit("popover:open",$imageTrigger);const installments=mod.$ctx.find(".installments");return 0===installments.children().length?installments.hide():installments.show()}):void 0)}})}(jQuery),function($){T.Module.PickupAlternativeStorageLocation=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.isSynced=!1,this.selectors={dropdown:".m-forminput-dropdown",select:"select",option:"option",table:".m-table",optionsListElement:".select2-container .select2-results li",selectedOption:"option:selected",selectionAreaPieces:".selection .pieces"}
7,this.config=this.$ctx.data("config")||{},this.$dropdowns=this.$ctx.find(this.selectors.dropdown),this.$selects=this.$ctx.find(this.selectors.select),this.$table=this.$ctx.find(this.selectors.table),this.getProducts(this.config.productsApiUrl,response=>{this.response=response,this.addPiecesInformation(this.response.products),this.$selects.on("select2:open select2:select",()=>{this.addPiecesInformation(this.response.products)})}),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){},getDropDownForProduct(productCode){let $matchedSelect;return this.$dropdowns.each((index,element)=>{$(element).data("productcode").toString()===productCode&&($matchedSelect=$(element))}),$matchedSelect},getProducts(url,callback){const request=T.Utils.startAjaxRequest(!1,{url:url,dataType:"json"});request&&request[0].done(response=>{callback(response)}).fail(()=>{console.log("An error occured by request: "+url)})},addPiecesInformation(products){setTimeout(()=>{let $matchedDropdown,$optionsListElement,$matchedSelect,$selectedOption;products.forEach(product=>{($matchedDropdown=this.getDropDownForProduct(product.productCode))&&$matchedDropdown.length>0&&($matchedSelect=$matchedDropdown.find(this.selectors.select),$selectedOption=$matchedSelect.find(this.selectors.selectedOption),$optionsListElement=$matchedDropdown.find(this.selectors.optionsListElement),product.alternativeStorageLocations.forEach(asl=>{$selectedOption.val()===asl.customerNo&&$matchedDropdown.find(this.selectors.selectionAreaPieces).text(asl.pieces),$customerNo=$optionsListElement.find(`span[data-value=${asl.customerNo}]`),$customerNo.text(asl.pieces)}))})},50)}})}(jQuery),function($){T.Module.PictureUpload=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$uploadPictureField=this.$ctx.find(".js-upload-picture-field"),this.$uploadPictureForm=this.$uploadPictureField.closest("form"),this.$uploadPictureButton=this.$ctx.find(".js-upload-button"),this.$submitButton=this.$ctx.find(".js-submit-button"),this.$captionField=this.$ctx.find(".js-caption"),this.$previewImage=this.$ctx.find(".js-preview"),this.$previewImageSource=this.$previewImage.find("source"),this.$errorCustom=this.$ctx.find(".error-custom"),this.$errorLoadingDefault=this.$ctx.find(".js-loading-default-error"),this.$errorImageSmall=this.$ctx.find(".js-image-small-error"),this.$errorImageFormat=this.$ctx.find(".js-image-format-error"),this.$errorImageLarge=this.$ctx.find(".js-image-large-error"),this.config=this.$ctx.data(),this.$uploadController=this.$ctx.find("[data-t-name=UploadController]"),this.uploadControllerData={$form:this.$uploadPictureForm,$uploadController:this.$uploadController,uploadTimeout:this.config.uploadTimeout||3e4,uploadRequired:!1,uploadUrl:this.$uploadPictureForm.attr("action"),notifyIsUploading:()=>this.pictureUploading(),notifyUploadSucceeded:evt=>this.pictureUploadDone(evt),notifyUploadError:evt=>this.pictureUploadError(evt)},this.hadSuccessfulUpload=!1,this.$submitButton.on("click",evt=>this.onClickSubmitButton(evt)),this.$captionField.on("keydown",evt=>this.onKeyDownCaptionField(evt)),this.$uploadPictureField.on("change",evt=>this.uploadPictureFieldChanged()),resolve()},setUploadFinishedListener(cb){return this.uploadFinishedListener=cb},onClickSubmitButton(evt){return evt.preventDefault(),this.submitDialog()},onKeyDownCaptionField(evt){if(13===evt.which)return evt.preventDefault(),this.submitDialog()},submitDialog(){return"function"==typeof this.uploadFinishedListener?this.uploadFinishedListener({url:this.targetImageUrl,thumbUrl:this.targetThumbnailUrl,caption:this.$captionField.val()}):void 0},uploadPictureFieldChanged(){const uploadImageSize=(this.$uploadPictureField[0].files[0].size/Math.pow(1024,2)).toFixed(2);if(""!==this.$uploadPictureField.val())return uploadImageSize>this.config.uploadSize?(this.$errorCustom.removeClass("has-error"),this.$errorImageLarge.addClass("has-error")):(this._events.emit("uploadcontroller:initiate",this.uploadControllerData),void this._events.emit("uploadcontroller:start",this.uploadControllerData))},pictureUploading(){return this.$errorCustom.removeClass("has-error"),this.disableControls()},pictureUploadDone(evt){return this.parsePictureResponse(evt)?(this.enableCaptionField(),this.targetImageUrl&&(this.updatePreviewImage(),this.hadSuccessfulUpload=!0),this.enableControls()):(this.enableControls(),this.resetPictureUpload(),this.fieldErrorListMessage(evt))},pictureUploadError(evt){return this.enableControls(),this.resetPictureUpload(),this.fieldErrorListMessage(evt)},disableControls(){return this.$submitButton.attr("disabled",!0),this.$uploadPictureField.attr("readonly",!0),this._events.emit("loader:open",{$trigger:this.$uploadPictureButton,loaderType:"inline"})},enableControls(){return this.$submitButton.attr("disabled",!1),this.$uploadPictureField.attr("readonly",!1),this._events.emit("loader:close",{$trigger:this.$uploadPictureButton})},updatePreviewImage(){return this.$previewImageSource.remove(),this.$previewImage.attr("src",this.targetImageUrl),this.$submitButton.attr("disabled",!1)},enableCaptionField(){return this.$captionField.attr("disabled",!1),this.$captionField.focus()},resetPictureUpload(){if(this.$uploadPictureField.val(""),this.$errorCustom.removeClass("has-error"),!this.hadSuccessfulUpload)return this.$submitButton.attr("disabled",!0)},parsePictureResponse(evt){if(null!=evt.sizes)for(let element of Array.from(evt.sizes))"normal"===element.i
7d?this.targetImageUrl=element.url:"thumbnail"===element.id&&(this.targetThumbnailUrl=element.url);return evt.successful},fieldErrorListMessage(evt){let fieldErrorLists=evt.fieldErrorList;fieldErrorLists?fieldErrorLists.forEach(errorList=>{switch(errorList){case"ERROR_FORM_IMAGE_WIDTH_TOO_SMALL":case"ERROR_FORM_IMAGE_HEIGHT_TOO_SMALL":this.$errorImageSmall.addClass("has-error");break;case"ERROR_FORM_IMAGE_PARSE":this.$errorImageFormat.addClass("has-error");break;case"ERROR_FORM_IMAGE_TOO_LARGE":this.$errorImageLarge.addClass("has-error");break;default:this.$errorLoadingDefault.addClass("has-error")}}):this.$errorLoadingDefault.addClass("has-error")}})}(jQuery),function($){function _fetchPopoverConfiguration(configurationId){let existingPopoverConfig=window.popoverConfiguration[configurationId];return null!==existingPopoverConfig&&void 0!==existingPopoverConfig?existingPopoverConfig:window.popoverConfiguration[configurationId]={popover:null,listeners:[]}}function _bindPopoverListener($trigger,popover){$trigger.data("event-binded")||(null!=popover.events?($trigger.on(popover.events,ev=>popover.prepareOpen(ev)),$trigger.data("event-binded")):($trigger.not(".js-add-to-basket").on("click",ev=>popover.prepareOpen(ev)),$trigger.data("event-binded",!0)))}window.popoverConfiguration={},T.Utils.registerContentInitializer(content=>{let $popovers=$(content).find("[data-popover-id]");for(let element of $popovers){let $element=$(element),popoverConfig=_fetchPopoverConfiguration($element.data("popover-id"));if(null!=popoverConfig.popover){_bindPopoverListener($element,popoverConfig.popover)}else popoverConfig.listeners.push($element)}}),T.Module.Popover=T.createModule({start(resolve){const mod=this;this.$ctx=$(this._ctx);const $images=this.$ctx.find("img");T.Commons.LazyLoadingInitializer.disableLazyLoading($images);const config=T.Utils.popover;this.defaults={align:config.defaults.align,position:config.defaults.position,width:this.$ctx.css("width")},this.appended=!1,this.configuration=$.extend(this.defaults,this.$ctx.data()),null!=this.configuration.id&&(this.configuration.id=this.configuration.id.toString());let popoverConfig=_fetchPopoverConfiguration(this.configuration.id);popoverConfig.popover=this,this.events=this.configuration.events;for(let $trigger of popoverConfig.listeners)_bindPopoverListener($trigger,this);this.imagesCount=0,this.isSticky=this.configuration.sticky||!1,this.timeoutClosePopover=this.configuration.timeoutClose||!1,this.width="",this.dataName="popoverId",this.comparePopoverEventNamespace="popoverid",this.comparePopoverContainerSelector=".js-toggle-compare",this.opened=!1,this.target="",this.popoverId=this.$ctx.data("id"),this.options={arrowElement:".js-popover-arrow",boundariesElement:this.getBoundaries(this.configuration.boundaries),boundariesPadding:0,flipBehavior:this.getFlipBehaviour(),gpuAcceleration:!0,modifiers:this.getModifiers(),placement:this.configuration.position},this.$close=this.$(".js-popover-close"),this.$avatar=$(document).find(".js-avatar.mybrand"),this.$parentTrigger=$(`[data-popover-parent-id="${this.configuration.id}"]`),this.$ctx.on("popover.open",(ev,$triggerElement)=>this.onOpenPopoversDirectly(ev,$triggerElement)),this._events.on("popover:open",$triggerElement=>this.onOpenPopovers($triggerElement)),this._events.on("popover:close",data=>this.onClosePopovers(data)),this.$ctx.on("keyup",$.proxy(this.onKeyup,this)),this.$parentTrigger.length&&(this.$trigger=this.$parentTrigger),this.$ctx.css(this.detectPopoverDimensions()),this.setupImages(),this.configuration.openOnload&&this.prepareOpen(),enquire.register(`screen and (max-width: ${this.width}px)`,{match(){if(mod.imagesCount&&"number"==typeof mod.width)return mod.$ctx.addClass("no-image-float").css("max-width",250)},unmatch(){if(mod.imagesCount&&"number"==typeof mod.width)return mod.$ctx.removeClass("no-image-float").css("max-width",mod.width)},setup(){}}),resolve()},stop(){null!=this.popper&&this.popper.destroy()},appendToDom(){this.appended||(this.$ctx.appendTo("body"),this.$close.on("click",ev=>this.onClickClose(ev)),this.appended=!0)},clearTimeout(){window.clearTimeout(this.timeoutID),this.timeoutID=null},closePopover(){this.modalPopupFocus&&this.modalPopupFocus.disengage(),this.$ctx.removeClass("is-active"),this.target&&this.target[0].focus(),$(document).off("
7click.popover"),$(document).off(`click.${this.comparePopoverEventNamespace}`),$(document).off("keyup.popover"),$(document).off(`keyup.${this.comparePopoverEventNamespace}`),$(window).off("resize.popover"),$(window).off("scroll.popover"),this.clearTimeout(),this._events.emit("popover:closed",{opened:this.opened}),this.opened=!1,this.$ctx.hasClass("add-to-basket-error-session")||this.popper&&(this.popper.destroy(),-1!==this.configuration.id.toString().indexOf("add-to-cart")&&this.$ctx.remove())},onKeyPress(event){13===event.keyCode&&(this.isPopoverAutoClose=!1)},closePopoverAfterTimeout(){const mod=this;this.timeoutClosePopover>0&&(this.timeoutID=window.setTimeout(()=>mod.closePopover(),this.timeoutClosePopover))},detectPopoverDimensions(){switch(this.configuration.width){case"trigger":this.width=this.$trigger.outerWidth();break;case!1:case void 0:this.width="auto";break;default:this.width=parseInt(this.configuration.width)}return{"max-width":this.width}},getBoundaries(boundaries){return boundaries?this.$ctx.closest(boundaries).get(0):"viewport"},getFlipBehaviour(){switch(this.configuration.position){case"top":return["top","bottom"];case"bottom":return["bottom","top"];case"left":return["left","right","top","bottom"];case"right":return["right","left","top","bottom"];case!1:case void 0:default:return["right","left","top","bottom"]}},getModifiers(){return this.isSticky||this.configuration.boundaries?["shift","offset","preventOverflow","flip","applyStyle"]:["shift","offset","preventOverflow","keepTogether","arrow","flip","applyStyle"]},openPopover($trigger){this.$ctx.addClass("is-active").focus(),this.parentElementClicked=$trigger,this.modalPopupFocus=ally.maintain.tabFocus({context:this.$ctx}),this.setArrowPosition($trigger),T.Utils.isAutoClosePopup&&this.closePopoverAfterTimeout(),this.opened=!0,this._events.emit("popover:close",{$ctx:this.$ctx}),$(document).on("click.popover",$.proxy(this.onClickDocument,this)),$(document).on("keyup.popover",$.proxy(this.onClickEsc,this)),this.popper.update()},setArrowPosition($trigger){"top"===this.$ctx.attr("x-placement")||"bottom"===this.$ctx.attr("x-placement")?this.$(".popover-arrow").css({left:$trigger.offset().left+$trigger.outerWidth()/2-this.$ctx.offset().left}):this.$(".popover-arrow").css({left:""})},setupImages(){this.imagesCount=this.$("img").length,this.hasImages=this.imagesCount>0,this.imagesLoaded=0,this.$ctx.find("img").on("load",ev=>{this.onLoadImage(ev)})},setupPopover($trigger){$trigger.length>0&&(0===$trigger.offset().left&&0===$trigger.offset().top&&($trigger=$(`[data-popover-id="${this.configuration.id}"]`)),$trigger.hasClass("a-image")&&($trigger=$trigger.find("img")));const mod=this;try{this.popper=new Popper($trigger,this.$ctx.get(0),this.options).onCreate(function(instance){mod.isSticky&&(instance.state.position="fixed"),T.Utils.triggeredAddToBasketButton&&delete T.Utils.triggeredAddToBasketButton}).onUpdate(function(data){mod.setArrowPosition($trigger)})}catch(error){}},prepareOpen(ev){this.appendToDom();let $trigger=null,$potentialTrigger=$(`[data-popover-id="${this.configuration.id}"]`);T.Utils.triggeredAddToBasketButton&&($potentialTrigger=T.Utils.triggeredAddToBasketButton),void 0!==($trigger=null!==ev&&void 0!==ev?$(ev.target):$potentialTrigger.length?$potentialTrigger:this.$trigger)&&$trigger.length>0&&(this.setupPopover($trigger),this.clearTimeout(),this.configuration.triggerToggle&&this.$ctx.hasClass("is-active")?this.closePopover():this.openPopover($trigger),ev&&ev.preventDefault())},onClickClose(ev){const $target=$(ev.target);$target.hasClass("a-link")||$target.parent().hasClass("a-link")||(this.closePopover(),ev.preventDefault())},onClickDocument(e){const isThisPopoverBtn=(()=>$(e.target).data("popover-id")===this.popoverId||(!!$(e.target).parents(`[data-popover-id='${this.popoverId}']`).length||!!(this.$trigger&&this.$trigger.get(0)&&$.contains(this.$trigger.get(0),e.target)||$(e.target).is(this.$trigger))))(),isPopoverContent=(()=>!!$(e.target).is(this.$ctx)||!!$.contains(this.$ctx.get(0),e.target))();isThisPopoverBtn||isPopoverContent||this.closePopover()},onClickEsc(ev){27===ev.which&&(this.$close.trigger("click",this.target),this.clearTimeout())},onClosePopovers(data){"object"==typeof data&&data.hasOwnProperty("$ctx")&&(this.$ctx.is(data.$ctx)||this.closePopover())},onLoadImage(ev){$(ev.currentTarget).hasClass("lazyloaded")&&(this.imagesLoaded+=1),this.imagesLoaded>
7=this.imagesCount&&this.popper&&this.popper.update()},onOpenPopoversDirectly(ev,$triggerElement){ev.preventDefault(),this.$trigger=$triggerElement,this.prepareOpen()},onOpenPopovers($triggerElement){const popoverId=$triggerElement.data().popoverId;$(`[data-id="${popoverId}"]`).is(this.$ctx)&&this.prepareOpen()},onKeyup(ev){27===ev.keyCode&&(this.closePopover(),this.parentElementClicked&&this.parentElementClicked[0].focus())},onWindowResize(){this.popper&&this.popper.update()}})}(jQuery),function($){T.Module.PreCheckLinkValidator=T.createModule({start(resolve,reject){return this.$ctx=$(this._ctx),this.selector={popover:".js-popover",link:".js-link"},this.elm={$popover:this.$ctx.find(this.selector.popover),$link:this.$ctx.find(this.selector.link)},this.elm.$link.on("click",ev=>{this.onClick(ev)}),resolve()},onClick:function(ev){ev.preventDefault();var mod=this,actionUrl=mod.$ctx.data("actionurl"),request=T.Utils.startAjaxRequest(!1,{url:actionUrl,method:"GET",dataType:"html"});return!!request&&request[0].done(response=>{JSON.parse(response).success?window.location.href=mod.elm.$link.attr("href"):mod.elm.$popover.trigger("popover.open",[mod.elm.$link])}).fail((xhr,ajaxOptions,thrownError)=>{console.error(xhr)})}})}(jQuery),function($){T.Module.PressDateSelection=T.createModule({start(resolve){const mod=this;return mod.$ctx=$(mod._ctx),mod.$ajaxForm=mod.$ctx.closest(".js-ajax-request"),mod.$submitBtn=mod.$(".js-submit-date-selection"),mod.$submitBtn.on("click",$.proxy(mod.onSubmitDateSelection,mod)),mod._events.on("filter:reset",$.proxy(mod.onFilterReset,mod)),resolve()},sync(){},onSubmitDateSelection(ev){ev.preventDefault(),ev.stopImmediatePropagation();const mod=this,config=mod.$ajaxForm.data();return mod._events.emit("updateSortingDropdown",{$ctx:$(".m-filterbar .js-filterbar-sorting select").first(),sortKey:"",triggerChange:!0,triggerUpdateSticky:!0}),T.Utils.startAjaxRequest(config.ajaxId,{beforeSend(ev,xhr){xhr.data=`${mod.$ajaxForm.find(".js-press-date-selection :input").serialize()}&${$.param({pageNumber:1})}`}})[0].done(xhr=>mod._events.emit("loadMoreButtonVisibility",{loadMoreButtonVisibility:xhr.response.pageNumber<xhr.response.maxPageNumber}))},onFilterReset(){return this.$submitBtn.trigger("click")}})}(jQuery),function($){T.Module.PressPictureGalleryLayer=T.createModule({start(resolve){const mod=this;return mod.$ctx=$(mod._ctx),mod.$addToBasketCheckBox=mod.$ctx.find(".js-add-to-download-basket-layer"),mod.$addToBasketCheckBox.on("change",$.proxy(mod.onChangeAddToBasketCheckBox,mod)),mod.$layer=mod.$ctx.closest(".m-layer"),mod.hasLayer=mod.$layer.length,mod.hasLayer&&(mod.layer=mod._sandbox.getModuleById(mod.$layer.data("t-id"))),mod.imageId=mod.$ctx.data("image-id"),mod.downloadId=mod.$ctx.data("download-id"),mod.selected=mod.$ctx.data("selected"),mod.selected&&mod.$addToBasketCheckBox.prop("checked",!0),mod._events.on("press:basketChanged",$.proxy(mod.onBasketChanged,mod)),resolve()},sync(){},onBasketChanged(data){const mod=this;if(null!=data.downloadIDs){const isChecked=-1!==data.downloadIDs.indexOf(mod.downloadId);if(mod.$addToBasketCheckBox.prop("checked",isChecked),data.sourceId===mod.$ctx.data("t-id")){if(isChecked){return mod._events.emit("popover:open",mod.$addToBasketCheckBox),$(`.layer-add-to-download-basket[data-id='${mod.imageId}-popover-basket-layer'] .js-open-press-basket-button`).on("click",$.proxy(mod.onOpenPressBasket,mod))}return mod._events.emit("popover:close",mod.$addToBasketCheckBox)}}},onChangeAddToBasketCheckBox(ev){const eventName=ev.target.checked?"press:pictureAdd":"press:pictureRemove";return this._events.emit(eventName,{imageId:[this.downloadId],sourceId:this.$ctx.data("t-id")})},onOpenPressBasket(evt){const mod=this;$(`[data-id='${mod.$addToBasketCheckBox.data("popover-id")}']`);return mod._events.emit("popover:close",mod),mod.hasLayer&&mod.layer.hideLayer(),mod._events.emit("press:openBasket")}})}(jQuery),function($){T.Module.PressPictureTeaser=T.createModule({start(resolve){const mod=this;return mod.$ctx=$(this._ctx),mod.$addToBasketCheckBox=mod.$(".js-add-to-download-basket",mod.$ctx),mod.imageId=mod.$ctx.data("image-id"),mod.downloadId=mod.$ctx.data("download-id"),mod.pictureData=mod.$ctx.data("item"),mod.initialSelected=null!=mod.pictureData?mod.pictureData.selected:void 0,mod.$image=mod.$ctx.find(".js-teaser-image"),mod.$addToBasketCheckBox.on("change",$.proxy(mod.onChangeAddToBasketCheckBox,mod)),mod.$addToBasketCheckBox.prop("checked",mod.initialSelected),mod._events.on("press:basketChanged",$.proxy(mod.onBasketChanged,mod)),mod.$image.on("click",$.proxy(mod.onTeaserImageClicked,mod)),resolve()},sync(){},onTeaserImageClicked(){const mod=this,$teaserLayerContent=$(".js-press-overlay-content").first(),$teaserElement=$teaserLayerContent.closest(".m-layer"),$teaser=mod._sandbox.getModuleById($teaserElement.data("t-id")),template=$(".tpl-press-picture-gallery-layer").html();if(null!=$teaser){const renderedTemplate=$(doT.template(template)({items:[mod.pictureData],selected:mod.$addToBasketCheckBox.prop("checked")}));$teaserLayerContent.html(renderedTemplate);const newModules=$teaserLayerContent.find("[data-t-name]");return T.Utils.application._sandbox.addModules(newModules.first()[0]),$teaser.showLayer(null,!1)}},onBasketChanged(data){const mod=this;if(null!=data.downloadIDs){const isChecked=-1!==data.downloadIDs.indexOf(mod.downloadId);if(mod.$addToBasketCheckBox.prop("checked",isChecked),data.sourceId===mod.$ctx.data("t-id")){if(isChecked){return mod._events.emit("popover:open",mod.$addToBasketCheckBox),$(`.add-to-download-basket[data-id='${mod.imageId}-popover-basket'] .js-open-press-basket-button`).off("click.openPressBasket").on("click.openPressBasket",$.proxy(mod.onOpenPressBasket,mod))}return mod._events.emit("popover:close",mod.$addToBasketCheckBox)}}},onChangeAddToBasketCheckBox(ev){const eventName=ev.target.checked?"press:pictureAdd":"press:pictureRemove";return this._events.emit(eventName,{imageId:[this.downloadId],sourceId:this.$ctx.data("t-id")})},onOpenPressBasket(){return this._events.emit("popover:close",this.$addToBasketCheckBox),this._events.emit("press:openBasket")}})}(jQuery),jQuery,T.Module.PressTeaser=T.createModule({start:resolve=>resolve(),sync(){}}),function($){T.Module.ProcessAccordion=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$ctx.on("click",".js-content-toggle",$.proxy(this.onClickContentToggle,this)),this.$ctx.on("click",".js-pa-next",$.proxy(this.onClickNext,this)),$(window).on(T.Utils.debounce("resize",$.proxy(this.onResize,this),50)),this.$(".item").length&&this.initAccordion(),resolve()},initAccordion(){return this.$(".js-content-toggle").removeClass("is-open"),this.$(".item .content").css("max-height",""),this.$(".item").addClass("is-deactivated"),this.openPanel
7(this.$(".item").first()[0].id)},openPanel(id){if(this.$(".js-content-toggle").removeClass("is-open"),this.$(".item .content").css("max-height",""),this.$(".item .content").removeClass("is-open"),!id)return!1;const $item=this.$(`#${id}`);return $item.removeClass("is-deactivated"),$item.find(".js-content-toggle").addClass("is-open"),$item.find(".content").addClass("is-open"),this.setContentHeight($item)},setContentHeight:$item=>$item.each(function(){const $content=$(this).find(".content");return $content.css("max-height",$content[0].scrollHeight)}),onClickContentToggle(ev){const $contentToggle=$(ev.currentTarget),$item=$contentToggle.closest(".item");return!$item.hasClass("is-deactivated")&&($contentToggle.hasClass("is-open")?($contentToggle.removeClass("is-open"),$item.find(".content").css("max-height",""),$item.find(".content").removeClass("is-open")):this.openPanel($item[0].id))},onClickNext(ev){const $nextItem=$(ev.currentTarget).closest(".item").next();return $nextItem.is(".item")?this.openPanel($nextItem[0].id):this.openPanel(null),ev.preventDefault()},onResize(){return this.setContentHeight(this.$(".is-open").closest(".item"))}})}(jQuery),function($){T.Module.ProcessBar=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$stepList=this.$ctx.find("ul"),this.$steps=this.$ctx.find("li"),$(window).on("resize.ProcessBar",T.Utils.debounce($.proxy(this.calculateWidths,this),50)),this.calculateWidths(),resolve()},sync(){},calculateWidths(){const mod=this;return mod.$stepList.addClass("is-full"),mod.$steps.each(function(){const $step=$(this);if($step.width()<$step.find(".step-content")[0].scrollWidth)return mod.$stepList.removeClass("is-full")})}})}(jQuery),function($){T.Utils&&T.Utils.registerSlideMarkupCloned(function(data){const $slideProductTeasers=data.$component.find('[data-t-name="ProductConversionArea"]');if($slideProductTeasers.length>0)return $slideProductTeasers.each(function(index,slideProductTeaser){const $form=$(slideProductTeaser).find(".js-button-group-wrapper form.js-ajax-request"),clonedAjaxId=`${$(slideProductTeaser).find(".js-button-group-wrapper form.js-ajax-request").data("ajax-id")}_${data.slideClonedId}`;return $form.attr("data-ajax-id",clonedAjaxId),data.$component.find(".js-button-group-wrapper form.js-ajax-request").attr("data-ajax-id",clonedAjaxId)})}),T.Module.ProductConversionArea=T.createModule({start(resolve){const mod=this;return mod.isSynced=!1,mod.$ctx=$(this._ctx),mod.compareProductsLimit=mod.$ctx.data("comparelimit")||20,mod.$additionalLinkListAjax=mod.$ctx.find(".js-additional-link-list"),mod.additionalLinkListAjaxId=mod.$additionalLinkListAjax.data("ajax-id"),mod.$compareProduct=mod.$ctx.find(".js-product-compare"),mod.$addToBasketButton=$(".js-add-to-basket",mod.$ctx),mod.$imageLabelLinkList=$(".product-label-list a"),mod.postalCodeWatcher=null,mod.selector={dealerlayerbutton:".js-onlinedealer-action",addToCartPrecheck:".js-postal-addtocart-precheck-url"},mod.$compareProduct.on("change",".js-toggle-compare",$.proxy(mod.onChangeCompareProduct,mod)),mod.$compareProduct.on("keydown",event=>{9===event.keyCode&&this.addTabIndexAddtoCompare()}),mod.$imageLabelLinkList.on("click",ev=>this.onImageLabelLinkClick(ev)),this.$addToBasketButton.on("click keypress",ev=>{!mod.$ctx.parent('[data-t-name="BuyArea"]').length>0&&this.addToCartPrecheck(ev)}),mod.$ctx.on("click",mod.selector.dealerlayerbutton,$.proxy(this.onClickDealerLayerButton,this)),mod._events.on("layout:storageUpdated",$.proxy(mod.onStorageUpdated,mod)),mod._events.on("productconversionarea:skuComparisonChanged",$.proxy(mod.updateComparisonCheckbox,mod)),mod._events.on("stickybar:skuComparisonChanged",$.proxy(mod.onChangeCompareProduct,mod)),mod._events.on("locationselector:locationset",this.initiateAddtoCart.bind(this)),this._events.on("t.sync",()=>this.sync()),this._events.on("reStartProductConversionArea",()=>this.start(resolve)),resolve()},sync(){return this.isSynced||(this.updateComparisonCheckbox(),this.additionalLinkListAjaxId&&T.Utils.startAjaxRequest(this.additionalLinkListAjaxId)),this.isSynced=!0,this.isSynced},switchAjaxConfigUrl($elm,blnInComparison){let objAjaxConfig;if(!$elm)return;const strAjaxConfig=$elm.attr("data-ajax");try{objAjaxConfig=JSON.parse(strAjaxConfig)}
7catch(error){console.error('"data-ajax" value has to be an object')}if("object"==typeof objAjaxConfig&&null!==objAjaxConfig){const strAdd="add-to",strRemove="remove-from",patternAdd=new RegExp(strAdd),patternRemove=new RegExp(strRemove),matchAdd=objAjaxConfig.url.match(patternAdd),matchRemove=objAjaxConfig.url.match(patternRemove);blnInComparison?null!=matchAdd&&(objAjaxConfig.url=objAjaxConfig.url.replace(patternAdd,strRemove)):null!=matchRemove&&(objAjaxConfig.url=objAjaxConfig.url.replace(patternRemove,strAdd))}return $elm.attr("data-ajax",JSON.stringify(objAjaxConfig))},switchCompareLabel($elm,numberOfItems,blnInComparison){if(!$elm)return;const isComparable=numberOfItems>1,labelId=$elm.attr("id"),$label=$elm.siblings(`[for="${labelId}"]`),$labelNotComparable=$label.children(":not(.js-compare-label)"),$labelisComparable=$label.find(".js-compare-label");return isComparable?($labelNotComparable.toggleClass("hidden",blnInComparison),$labelisComparable.toggleClass("hidden",!blnInComparison)):($labelNotComparable.toggleClass("hidden",!1),$labelisComparable.toggleClass("hidden",!0))},onClickDealerLayerButton(ev){ev.preventDefault();const config=$(ev.currentTarget).data();return config.eventName="onlinedealerbutton:click",this._events.emit("onlinedealerbutton:click",config)},checkSubmitWasDoubleClicked(data){if(data&&data.preventDoubleSubmit){if(void 0===this.lastSubmitClicked&&(this.lastSubmitClicked=0),$.now()-this.lastSubmitClicked<1500)return!0;this.lastSubmitClicked=$.now()}return!1},onClickAddToCartButton(ev){const mod=this,$ajaxform=$(ev.currentTarget).closest(".js-ajax-request"),config=$aja
7xform.data();if(this.checkSubmitWasDoubleClicked(config))return!1;const request=T.Utils.startAjaxRequest(config.ajaxId);return!(!request||0===Object.keys(request).length)&&request[0].done(function(result){if(T.Utils.triggeredAddToBasketButton=mod.$addToBasketButton,mod._events.emit("cart:update"),config.promotionUpdate&&T.Utils.startAjaxRequest(!1,{url:config.promotionUpdate+"/"+$ajaxform.find("[name=productCode]").val(),dataType:"html",dataRendering:!0}),window.X&&window.X.addProductToCart(),config.cartUpdate)return T.Utils.startAjaxRequest(!1,{url:config.cartUpdate,dataType:"html",dataRendering:!0})})},addToCartPrecheck(ev){const mod=this;ev.preventDefault();const isPdp=void 0!==$(".js-productCode")[0]&&null!==$(".js-productCode")[0];T.Utils.handleAutoCloseModalPopUp(ev.type);const addToCartEvent=ev;let $addtocartajax=$(this.selector.addToCartPrecheck,this.$ctx);if($addtocartajax.length>0){T.Utils.startAjaxRequest($addtocartajax.data("ajax-id"))[0].done(function(result){result.locationSelectorOption||(result.locationSelectorOption="DISABLED"),"DISABLED"!==result.locationSelectorOption&&null===result.locationInSession&&result.locationRequired?(isPdp?mod._events.emit("showLocationLayout",ev):mod._events.emit("showLocationLayer",!0),mod.postalCodeWatcher=addToCartEvent):mod.onClickAddToCartButton(addToCartEvent)})}else mod.onClickAddToCartButton(addToCartEvent)},initiateAddtoCart(data){if(this.postalCodeWatcher&&null!=this.postalCodeWatcher)return this.onClickAddToCartButton(this.postalCodeWatcher),this.postalCodeWatcher=null},onChangeCompareProduct(ev){const mod=this;let $parentAjaxContainer=null,isProductRemovedFromComparision=!1;$(ev.ajaxContainer).length?(mod.$compareProduct=$(ev.ajaxContainer),$parentAjaxContainer=$(ev.ajaxContainer),isProductRemovedFromComparision=!0):($parentAjaxContainer=$(ev.currentTarget).closest(".js-ajax-request"),mod.$compareProduct=$(ev.currentTarget).closest(".js-product-compare"));const $chk=mod.$compareProduct.find(".js-update-localstorage"),chkName=$chk.attr("name"),ajaxRequestId=$parentAjaxContainer.attr("data-ajax-id"),ajaxRequestData={[chkName]:$chk.val()},request=T.Utils.startAjaxRequest(ajaxRequestId,null,ajaxRequestData);return!!request&&(request[0]&&request[0].always(function(){}).done(function(result){if(null!=result){const $skuContainer=mod.$compareProduct.find(".js-update-localstorage"),localStorageKey=$skuContainer.attr("data-key"),strSkuInComparison=$skuContainer.attr("data-skuincomparison");T.Utils.localStorageSetItem(localStorageKey,strSkuInComparison);const strProductFamily=$skuContainer.data("productfamily");T.Utils.localStorageSetItem("product-family",JSON.stringify(strProductFamily));const ownSku=$skuContainer.val(),isInComparison=-1!==strSkuInComparison.indexOf(ownSku);mod.switchAjaxConfigUrl(mod.$compareProduct,isInComparison),"checked"===$skuContainer.attr("checked")||ev.closedFromStickyBar||(mod._events.emit("compare:removeProduct",ownSku),isProductRemovedFromComparision=!0);const arrSku=JSON.parse(strSkuInComparison);mod.switchCompareLabel($skuContainer,arrSku.length,isInComparison);const productImageUrl=mod.$compareProduct.data("imageUrl");mod._events.emit("updateCompareCount",{itemCount:arrSku.length,imgUrl:productImageUrl,productCode:ownSku,productRemoved:isProductRemovedFromComparision});const eventData={id:$skuContainer.attr("id"),arrSku:arrSku};return mod._events.emit("productconversionarea:skuComparisonChanged",eventData)}}).fail((xhr,ajaxOptions,thrownError)=>console.info(xhr)))},onStorageUpdated(data){if(null==data)return;const $compareCheckbox=this.$compareProduct.find(".js-update-localstorage");if($compareCheckbox.attr("data-key")!==data.key)return;const strProductFamily=$compareCheckbox.data("productfamily"),arrCompareProducts=$compareCheckbox.attr("data-skuincomparison");if(T.Utils.localStorageGetItem("product-family")!==strProductFamily&&arrCompareProducts.length>0)return;arrCompareProducts.length>0&&(data.val=JSON.parse(arrCompareProducts));const eventData={id:null,arrSku:data.val};return this.updateComparisonCheckbox(eventData)},updateComparisonCheckbox(event){const $notifiedCompareCheckbox=this.$compareProduct.find(".js-update-localstorage");if(0==$notifiedCompareCheckbox.length)return;null==event&&(event={id:$notifiedCompareCheckbox.attr("id"),arrSku:$notifiedCompareCheckbox.data("skuincomparison")}),null!=event.arrSku&&($notifiedCompareCheckbox.attr("data-skuincomparison",JSON.stringify(event.arrSku)),this._events.emit("updateCompareCount",{itemCount:event.arrSku.length})),$(".js-compare-count").text(event.arrSku.length);const isTooMany=event.arrSku.length>=this.compareProductsLimit,isInComparison=-1!==event.arrSku.indexOf($notifiedCompareCheckbox.val());isTooMany?$notifiedCompareCheckbox.prop("disabled",!isInComparison):$notifiedCompareCheckbox.prop("disabled",!1),this.switchCompareLabel($notifiedCompareCheckbox,event.arrSku.length,isInComparison),$notifiedCompareCheckbox.prop("checked",isInComparison),this.switchAjaxConfigUrl(this.$compareProduct,isInComparison)},onImageLabelLinkClick(ev){if("mobile"===T.Utils.getViewport())return $(".m-popover.is-active").removeClass("is-active")},addTabIndexAddtoCompare(){var highlightContent=".add-to-compare , .add-to-compare .popover-header , .add-to-compare .popover-content , .add-to-compare .popover-content a";$(".add-to-compare").each(function(i,obj){$(obj).hasClass("is-active")?$(highlightContent).attr("tabindex",0):$(highlightContent).attr("tabindex",-1)})}})}(jQuery),function($){T.Module.ProductDetailTrackingContainer=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$contentTextMedia=this.$ctx.find(".m-contenttextmedia"),this.$link=this.$contentTextMedia.find("a"),this.$button=this.$contentTextMedia.find("button"),this.$button.on("click",()=>this.onContentTextButtonClicked()),this.$link.on("click",()=>this.onContentTextButtonClicked()),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},onContentTextButtonClicked(){T.Utils.getLayout().trackValues("PDP content teaser clicked",{})}})}(jQuery),function($){T.Module.ProductItem=T.createModule({start(resolve){return this.isSynced=!1,this.$ctx=$(this._ctx),this.$additionalLinkListAjax=this.$ctx.find(".js-additional-link-list"),this.additionalLinkListAjaxId=this.$additionalLinkListAjax.data("ajax-id"),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){return this.isSynced||this.additionalLinkListAjaxId&&T.Utils.startAjaxRequest(this.additionalLinkListAjaxId),this.isSynced=!0,this.isSynced}})}(jQuery),function($){T.Module.ProductPromotion=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$promotionItemSeparators=this.$(".promotion-separator"),this.$promotionItem=this.$(".m-productpromotionteaser"),this.isFixed=this.$ctx.hasClass("fixed"),this.imagesWhichAreObserved=this.$ctx.find("img"),this._events.on("t.sync",()=>this.sync()),this._events.on("viewportChanged",viewport=>this.onViewportChanged(viewport)),this.config={itemsPerRow:{desktop:4,tablet:2,mobile:1}},this.elementsWhichWillBeEqualized=this.getElementsToEqualize(),this.triggerMatchHeightDebounced=T.Utils.debounce(this.triggerMatchHeight,50),this.setTheMaxHeightClassIfNessecery(T.Utils.getViewport()),this.ro=new ResizeObserver((entry,observer)=>{this.triggerMatchHeightDebounced()}),resolve()},sync(){if(!this.isSynced&&(this.initializePromotionItems(),this.onViewportChanged(T.Utils.getViewport()),this.isSynced=!0,this.imagesWhichAreObserved.length))for(let i=0;i<this.imagesWhichAreObserved.length;i++)this.ro.observe(this.imagesWhichAreObserved[i])},stop(){if(this.imagesWhichAreObserved.length)for(let i=0;i<this.imagesWhichAreObserved.length;i++)this.ro.unobserve(this.imagesWhichAreObserved[i])},setTheMaxHeightClassIfNessecery(viewport){const listItems=this.$ctx.find(".js-item").not(".bundle-item"),$bundleItem=this.$ctx.find(".js-item.bundle-item");listItems.length%this.config.itemsPerRow[viewport]==0?$bundleItem.addClass("max-width"):$bundleItem.removeClass("max-width"),$bundleItem.removeClass("hidden")},setThePositionOfTheSeparator(viewport){"tablet"===viewport?(this.$promotionItemSeparators.filter(":odd").addClass("hidden"),this.$promotionItemSeparators.last(
7).addClass("hidden")):(this.$promotionItemSeparators.filter(":odd").removeClass("hidden"),this.$promotionItemSeparators.last().removeClass("hidden"))},getElementsToEqualize(){return[this.$ctx.find(".product-image"),this.$ctx.find(".product-info"),this.$ctx.find(".js-item:not(.bundle-item) .product-conversion-area")]},triggerMatchHeight(){for(let i=0;i<this.elementsWhichWillBeEqualized.length;i++)$.fn.matchHeight._apply(this.elementsWhichWillBeEqualized[i])},initializePromotionItems(){this.$promotionItem.filter(":odd").addClass("odd"),this.$promotionItem.filter(":first").addClass("first"),this.$promotionItem.filter(":last").addClass("last"),this.isFixed&&this.$promotionItemSeparators.removeClass("hidden")},onViewportChanged(viewport){this.isFixed&&(this.setThePositionOfTheSeparator(viewport),this.setTheMaxHeightClassIfNessecery(viewport))}})}(jQuery),function($){T.Module.ProductPromotionCategory=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$productPromotion=this.$ctx.find(".js-product-promotion"),this.trackProductPromotion=!0,this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),this.$productPromotion.on("click",()=>this.trackingProductPromotion()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},trackingProductPromotion(){this.trackProductPromotion&&(T.Utils.getLayout().trackValues("highlighted product clicked",{}),this.trackProductPromotion=!1)}})}(jQuery),function($){T.Module.ProductServices=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$productServicesInfoIcon=this.$ctx.find(".rrp-text span .js-product-services-info"),this.$vibServicesDescription=this.$ctx.find("#js-description-tracking-event"),this.$productServicesIcon=this.$ctx.find(".js-product-services-vib"),this.trackInfoIcon=!0,this.isSynced=!1,this.trackUrl=!0,this._events.on("t.sync",()=>this.sync()),this.$productServicesInfoIcon.on("click",()=>this.trackingInfoIcon()),this.$vibServicesDescription.on("click",()=>this.trackingDescriptionUrl()),this.$productServicesIcon.on("click",()=>this.openLayerOrPopoverinPdp()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},trackingInfoIcon(){this.trackInfoIcon&&(T.Utils.getLayout().trackValues("product tooltips clicked",{}),this.trackInfoIcon=!1)},trackingDescriptionUrl(){this.trackUrl&&(T.Utils.getLayout().trackValues("pdp product services link clicked",{}),this.trackUrl=!1)},openLayerOrPopoverinPdp(){if("mobile"===T.Utils.getViewport()){const layersArray=$(".js-product-services-layer-mobile"),linksArray=$(".js-product-services-vib");layersArray.each(function(key1,el){linksArray.each(function(key2,el1){if(key1===key2&&el1.getAttribute("data-popover-id")){const id=el1.getAttribute("data-popover-id");el1.removeAttribute("data-popover-id"),el1.setAttribute("data-layer-id",id)}})})}else{const layersArray=$(".js-product-services-popover-desktop"),linksArray=$(".js-product-services-vib");layersArray.each(function(key1,el){linksArray.each(function(key2,el1){if(key1===key2&&el1.getAttribute("data-layer-id")){const id=el1.getAttribute("data-layer-id");el1.removeAttribute("data-layer-id"),el1.setAttribute("data-popover-id",id)}})})}}})}(jQuery),function($){T.Module.ProductSubscription=T.createModule({start(resolve){return this.isSynced=!1,this.$ctx=$(this._ctx),this.$email=$(".js-input-email",this.$ctx),this.$productCode=$(".js-input-productCode",this.$ctx),this.$errorMessageJson=$(".js-custom-error-message",this.$ctx),this.$submitButton=$(".js-submit-button",this.$ctx),this.$popoverlink=$(".js-trigger-popover-link",this.$ctx),this.$popover=$(".js-popover",this.$ctx),this.$successfulMessage=$(".js-successful-message",this.$ctx),this.$successfulMessage.hide(),this.$form=$(".js-form",this.$ctx),this.$submitButton.on("click",e=>{this.onSubmit(e)}),this.$popoverlink.on("click",e=>{this.resetFormByOpenPopover(e)}),resolve()},resetFormByOpenPopover(e){e.preventDefault(),this.$successfulMessage.hide(),this.$form.show(),this.$popover.trigger("popover.open",[this.$popoverlink]),this.$email.focus()},showError($element){$element.show()},setJsonError(errorMsg){this.$errorMessageJson.text(errorMsg),this.$email.addClass("has-error"),this.$email.removeClass("had-focus"),this.showError(this.$errorMessageJson)},onSubmit(e){if(this.$email.is(":valid")&&!this.$email.hasClass("has-error")){this.$submitButton.prop("disabled",!0);
7const data={email:this.$email.val(),productCode:this.$productCode.val()};T.Utils.startAjaxRequest(!1,{url:this.$form.data("actionurl"),method:"POST",dataType:"json",dataRendering:!1,data:data})[0].done(response=>{if(this.$submitButton.prop("disabled",!1),response.isValid)this.$successfulMessage.show(),this.$form.hide();else{const validationMessage=response.errorMessage;this.setJsonError(validationMessage)}})}}})}(jQuery),function($){T.Module.ProductTeaser=T.createModule({start(resolve){this.$ctx=$(this._ctx),T.Utils.addSkusToEcr(this.$ctx.data("sku"));const $images=this.$ctx.find("img");return T.Commons.LazyLoadingInitializer.disableLazyLoading($images),this.sliderConfig=this.$ctx.data("slider-config"),this.$thumbnailsContainer=this.$ctx.find(".js-product-thumbnail-slider"),this.$thumbnailsContainer.length>0&&this.$thumbnailsContainer.children().length>1&&(this.initThumbnail(),this._events.on("viewportChanged",()=>this.refreshSlider()),this._events.on("toggleGridView",()=>this.refreshSlider()),this._events.on("toggleListView",()=>this.refreshSlider())),resolve()},initThumbnail(){const $paginationArrows=this.$thumbnailsContainer.find(".js-arrows");$paginationArrows.length>0&&(this.$nextArrow=$paginationArrows.children(".next"),this.$prevArrow=$paginationArrows.children(".prev"),this.$paginationArrows=this.$nextArrow.add(this.$prevArrow)),this.shouldSliderInitialize=!0,this.initSlider(),this.createInViewportController()},initSlider(){null!=this.$thumbnailsContainer&&this.$thumbnailsContainer.slick({autoplay:this.sliderConfig.autoplay||!1,speed:this.sliderConfig.speed||1e3,infinite:this.sliderConfig.infinite||!1,dots:this.sliderConfig.dots||!1,mobileFirst:this.sliderConfig.mobileFirst||!1,nextArrow:this.$nextArrow,prevArrow:this.$prevArrow,appendArrows:this.$paginationArrows,slide:".slide",rtl:T.Utils.isRTL()})},createInViewportController(){const mod=this,$element=$("<div>");return $element.css("display","none"),this.$ctx.append($element),this.inViewportController=T.Utils.createController($element,"IsInViewportController",""),this.inViewportController.init({element:this.$thumbnailsContainer.get(0),visiblePercentage:this.sliderConfig.visiblePercentage,onViewportChanged:(element,inViewport)=>{inViewport&&mod.sliderConfig.autoplay?this.$thumbnailsContainer.slick("slickPlay"):this.$thumbnailsContainer.slick("slickPause")}})},refreshSlider(){this.shouldSliderInitialize&&this.$thumbnailsContainer.slick("reinit")}})}(jQuery),function($){T.Module.ProductTeaserBuyingModule=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.$mainContainer=this.$ctx.find(".js-productteaserbuyingmodule-main"),this.$sideBarContainer=this.$ctx.find(".js-productteaserbuyingmodule-sidebar"),this.tallOuterContainer=this.$ctx[0],this.stickyInnerContainer=this.$ctx.find(".js-productteaserbuyingmodule-wrapper")[0],this.bigListContainer=this.$ctx.find(".hidden-lg .js-mediagalleryteaser-biglist")[0],this.smallListContainer=this.$ctx.find(".hidden-lg .js-mediagalleryteaser-smalllist")[0],this.sideBarContainer=this.$ctx.find(".productteaserbuyingmodule-sidebar-wrap")[0],$(window).on("resize load",T.Utils.debounce(e=>this.onResize(e),50)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){return this.isSynced||(this.isSynced=!0),this.isSynced},onScrollSideBar(){let mainOffsetTop=this.$mainContainer.offset().top,mainHeight=this.$mainContainer.outerHeight(),siderBarHeight=this.$sideBarContainer.outerHeight();this.$mainContainer.css("min-height",siderBarHeight+"px");let y=$(window).scrollTop();this.stickyHeaderCheck(),y>=mainOffsetTop?(y<mainHeight+mainOffsetTop-siderBarHeight?this.$sideBarContainer.addClass("fixed").removeAttr("style"):this.$sideBarContainer.removeClass("fixed").css({position:"absolute",top:mainHeight-siderBarHeight+"px"}),y>=mainOffsetTop+mainHeight&&this.$sideBarContainer.removeAttr("style")):(this.$sideBarContainer.removeClass("fixed"),this.$sideBarContainer.removeAttr("style"))},handleMediaScroll(){this.handleScroll(this.bigListContainer),this.handleScroll(this.smallListContainer)},handleScroll(container){const offsetTop=-this.stickyInnerContainer.offsetTop;container&&container.scrollWidth>=window.innerWidth&&(-(container.scrollWidth-window.innerWidth)>offsetTop?container.style.transform=`translateX(${-(container.scrollWidth-window.innerWidth)}px)`:container.style.transform=`translateX(${offsetTop}px)`)},onResize(){if($(window).width()!=this.width){this.width=$(window).width();const viewport=T.Utils.getViewport();if("mobile"===viewport||"tablet"===viewport){let scrollTimeout;null==this.smallListContainer?this.handleDynamicHeight(this.bigListContainer):this.smallListContainer.scrollWidth>this.bigListContainer.scrollWidth?this.handleDynamicHeight(this.smallListContainer):this.handleDynamicHeight(this.bigListContainer),$(window).on("scroll",()=>{scrollTimeout||(scrollTimeout=setTimeout(()=>{this.handleMediaScroll(),scrollTimeout=null},300))}),this._events.on("openLayer",$.proxy(this.onOpenLayerTeaserGallery,this)),this._events.on("closeLayer",$.proxy(this.onCloseLayerTeaserGallery,this))}else $(window).on("scroll",()=>this.onScrollSideBar()),this.stickyHeaderCheck()}},calcDynamicHeight(objectWidth){const vw=window.innerWidth,vh=window.innerHeight;return objectWidth-vw+(vh>vw?vh:1.2*vw)},handleDynamicHeight(elementRef){const objectWidth=elementRef.scrollWidth,dynamicHeight=this.calcDynamicHeight(objectWidth);this.tallOuterContainer.style.height=`${dynamicHeight+this.sideBarContainer.offsetHeight}px`},stickyHeaderCheck(){const $headerNavSticky=$(".nav-sticky"),$tabSticky=$(".js-tabs-sticky.is-fixed"),$anchorSticky=$(".js-navigation.is-fixed");this.$transformContainer=this.$sideBarContainer.find("div").first(),this.$sideBarContainer.hasClass("fixed")?$headerNavSticky.hasClass("is-active")?this.$transformContainer.addClass("animate-out").css("transform",`translateY(${$headerNavSticky.outerHeight()+$tabSticky.outerHeight()+$anchorSticky.outerHeight()}px)`):this.$transformContainer.addClass("animate-out").css("transform",`translateY(${$tabSticky.outerHeight()+$anchorSticky.outerHeight()}px)`):this.$transformContainer.addClass("animate-out").css("transform","translateY(0px)")},onOpenLayerTeaserGallery(){this.stickyInnerContainer.style.position="static"},onCloseLayerTeaserGallery(){this.stickyInnerContainer.style.position="sticky"}})}(jQuery),function($){T.Module.ProductTeaserIPG=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$backgroundImage=this.$ctx.find(">.a-image"),this.$ipgContainer=this.$ctx.find(".productteaseripg-container"),this._events.on("t.sync",()=>this.sync()),$(window).off("resize.productteaseripg"),$(window).on("resize.productteaseripg",T.Utils.debounce(()=>this.updateContainerHeight(),50)),this.updateContainerHeight(),resolve()},sync(){this.synced||(setTimeout(()=>this.updateContainerHeight(),300),this.synced=!0)},updateContainerHeight(){if("desktop"===T.Utils.getViewport()){const spacing=40,containerHeight=this.$ipgContainer.outerHeight();if(this.$backgroundImage.length>0){const containerHeightWithSpacing=containerHeight+spacing;containerHeightWithSpacing>this.$backgroundImage.outerHeight()&&this.$ctx.height(containerHeightWithSpacing+"px")}else this.$ctx.hasClass("no-background")?this.$ctx.height(containerHeight+spacing+"px"):this.$ctx.height("")}}})}(jQuery),function($){T.Module.ProductTilesSliderContainer=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.productTilesSliderAjaxID=this.$ctx.data("ajax-id"),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){if(!this.isSynced){const params=this.getAddionalRequestParam
7s();params.items.length&&T.Utils.startAjaxRequest(this.productTilesSliderAjaxID,null,params),this.isSynced=!0}},getAddionalRequestParams(){}})}(jQuery),function($){T.Module.ProminentData=T.createModule({start(resolve){return this.isSynced=!1,this.$ctx=$(this._ctx),this.prominentDataAjaxId=this.$ctx.data("ajax-id"),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){return this.isSynced||this.prominentDataAjaxId&&this.getProminentdata(),this.isSynced=!0,this.isSynced},getProminentdata(){const request=T.Utils.startAjaxRequest(this.prominentDataAjaxId);request&&request[0]&&request[0].done(response=>{this.$displayInfoId=response.displayAdditionalInformation,response&&response.productBasicInformationJSON&&response.productBasicInformationJSON.length>0&&(this.$prominentMoreInfo=this.$ctx.find(".js-prominent-more-info"),this.$prominentMoreInfo.on("click",()=>this.onClickScrollToAdditionalInfo()))})},onClickScrollToAdditionalInfo(){const $toggleAttrId="#/Togglebox="+this.$displayInfoId,$targetContainer=$(`a[href*='${$toggleAttrId}']`);setTimeout(()=>{T.Utils.scrollToTop($targetContainer)},300)}})}(jQuery),jQuery,T.Module.PromotionAnchorTeaser=T.createModule({start:resolve=>resolve(),sync(){}}),jQuery,T.Module.PromotionBundle=T.createModule({start:resolve=>resolve(),sync(){}}),function($){T.Module.PromotionBundle=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0)}})}(jQuery),function($){T.Module.PromotionTeaserGcWpeGrid=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.selectors={callout:".js-callout",imageWrap:".js-image-wrap",teaserLabel:".js-teaser-label",teaserHeadline:".js-teaser-headline",teaserParagraph:".js-teaser-paragraph",readMoreLink:".js-read-more-link",ctaButtonWrap:".js-cta-button-wrap"},this.$callOutContainer=this.$ctx.find(this.selectors.callout),this.$imageContainer=this.$ctx.find(this.selectors.imageWrap),this.$teaserLabelContainer=this.$ctx.find(this.selectors.teaserLabel),this.$teaserHeadlineContainer=this.$ctx.find(this.selectors.teaserHeadline),this.$teaserParagraphContainer=this.$ctx.find(this.selectors.teaserParagraph),this.$readMoreLinkContainer=this.$ctx.find(this.selectors.readMoreLink),this.$promotionTeaserWrapContainer=this.$ctx.find(this.selectors.promotionTeaserWrap),this.$ctaButtonContainer=this.$ctx.find(this.selectors.ctaButtonWrap),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.matchElementHeights(),this.isSynced=!0)},matchElementHeights(){this.$callOutContainer.matchHeight(),this.$imageContainer.matchHeight(),this.$teaserLabelContainer.matchHeight(),this.$teaserHeadlineContainer.matchHeight(),this.$teaserParagraphContainer.matchHeight(),this.$readMoreLinkContainer.matchHeight(),this.$ctaButtonContainer.matchHeight()}})}(jQuery),function($){T.Module.QuantitySelector=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$minus=this.$(".js-quantityselector-button-minus"),this.$plus=this.$(".js-quantityselector-button-plus"),this.$input=this.$(".js-quantityselector-value"),this.initvalue=this.$input.val(),this.minvalue=parseInt(this.$input.attr("data-min")),this.maxvalue=parseInt(this.$input.attr("data-max")),this.productNumber=this.$input.attr("data-id"),this.showPopup=this.$input.attr("data-show-popup"),this.$minus.on("click",$.proxy(this.onClickMinus,this)),this.$plus.on("click",$.proxy(this.onClickPlus,this)),this.$ctx.on("change",$.proxy(this.onChangeVal,this)),this.$input.on("keydown",$.proxy(this.catchEnter,this)),this.initTestingId(),resolve()},checkDisabled(){return 0===this.getValue()||this.getValue()===this.minvalue?this.$minus.attr("disabled","disabled"):this.getValue()<=this.minvalue?this.setValue(this.initvalue):this.$minus.removeAttr("disabled"),this.getValue()===this.maxvalue?this.$plus.attr("disabled","disabled"):this.getValue()>=this.maxvalue?this.setValue(this.initvalue):this.$plus.removeAttr("disabled")},getValue(){this.$input.val();return isNaN(this.$input.val())&&this.$input.val(this.initvalue),parseInt(this.$input.val())},initTestingId(){const{$input:$input}=this;return $input.attr("testing_id")||$input.attr("testing_id"),$input.attr("testing_id",`quantity_${this.initvalue}`)},setTestingId(){const{$input:$input}=this;return $input.attr("testing_id",`quantity_${$input.val()}`)},setValue(value){return this.$input.val(value)},stepValue(step){let value=this.getValue();return value+=step,null!=this.minvalue&&value<this.minvalue&&(value=this.minvalue),null!=this.maxvalue&&value>this.maxvalue&&(value=this.maxvalue),this.setValue(value).trigger("change")},onClickMinus(ev){return 1===this.getValue()&&"true"===this.showPopup?this._events.emit("removeCartItem",{layerId:this.productNumber}):(this.stepValue(-1),this.checkDisabled()),ev.preventDefault()},onClickPlus(ev){return this.stepValue(1),this.checkDisabled(),ev.preventDefault()},onChangeVal(){return this.getValue(),this.checkDisabled(),this.setTestingId()},catchEnter(ev){const mod=this;if(13===ev.keyCode)return ev.preventDefault(),mod.$input.blur()}})}(jQuery),function($){T.Module.QuestionDisplay=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.intialReviewTabOpen=!1,this.requestobj={obj:this.$ctx},this.ratingDistribution={},this.totalReviewCount=0,this.averageOverallRating=0,this.questionAjaxId=this.$ctx.data("ajax-id"),this.questionAjax=this.$ctx.data("ajax"),this.$loadMoreQuestionButton=this.$ctx.find(".js-loadmore-question-button"),this.$questionLayer=this.$ctx.find(".js-question-layer"),this.questionLayerModule=T.Utils.application._sandbox.getModuleById(this.$questionLayer.data("t-id")),this.limit=this.$ctx.data("limit"),this.currentPage=this.$ctx.data("current-page"),this.totalReviews=null,this.totalPage=0,this.secondaryRatingsObject=null,this.questionsCountTracking=0,this.totalQuestionCount=0,this.totalAnswerCount=0,this._events.on("openLayer",data=>this.onOpenLayer(data)),this._events.on("closeLayer",()=>this.onCloseLayer()),this._events.on("question:filter",data=>this.callUpdatedAjaxForQuestions(data)),this._events.on("loadTab:reviews",()=>this.intialReviewTabLoad()),this.$loadMoreQuestionButton.on("click",()=>this.onClickLoadMore()),this._events.on("isAPIBasedBVQuestions",()=>this.triggerQuestionsTracking()),this._events.on("scrollToTab:questions",id=>this.openAndScrollToQuestionsTab(id)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},intialReviewTabLoad(){this.intialReviewTabOpen||(this.startAjaxForQuestions(),this.intialReviewTabOpen=!0)},startAjaxForQuestions(){const request=T.Utils.startAjaxRequest(this.questionAjaxId,this.questionAjax
7);request&&request[0]&&request[0].done(response=>{response&&response.totalResults&&(this.ratingDistribution=response.reviewStatistics.ratingDistribution,this.totalReviewCount=response.totalReviewCount,this.totalReviews=response.totalResults,this.secondaryRatingsObject=response.reviewStatistics.secondaryRatingsAverages,this.averageOverallRating=response.averageOverallRating,this.totalQuestionCount=response.totalQuestionCount,this.totalAnswerCount=response.totalAnswerCount,this.showLoadMore()),this.renderResponeToTemplate(this.requestobj,response,"replace"),this.$addQuestionButton=this.$ctx.find(".js-add-question"),this.$addQuestionButtonAjaxId=this.$addQuestionButton.data("ajax-id"),this.$addQuestionButtonAjax=this.$addQuestionButton.data("ajax"),this.$addQuestionButton.on("click",ev=>{this.onClickAddQuestion(ev)})})},onClickLoadMore(){let $pageOffset=this.$ctx.find(".js-offSet");const offsetValue=this.limit*this.currentPage;let searchValue=this.$ctx.find(".js-search-input").val().trim(),searchInput=this.$ctx.find(".js-search");searchValue&&searchInput.val(searchValue),$pageOffset.val(offsetValue);const request=T.Utils.startAjaxRequest(this.questionAjaxId,this.questionAjax);request&&request[0]&&request[0].done(response=>{if(response){this.currentPage=this.currentPage+1,this.showLoadMore();let $filterbarLastReviewCount=this.$ctx.find(".js-last-review-index");const pageOffsetValue=parseInt($pageOffset.val());if(response.totalResults>pageOffsetValue+this.limit){const lastIndex=response.offset+this.limit;$filterbarLastReviewCount.html(lastIndex)}else{const lastIndex=response.totalResults;$filterbarLastReviewCount.html(lastIndex)}}})},showLoadMore(){this.totalPage=Math.ceil(this.totalReviews/this.limit),this.currentPage<this.totalPage?this.$loadMoreQuestionButton.removeClass("hidden"):this.$loadMoreQuestionButton.addClass("hidden")},callUpdatedAjaxForQuestions(data){this.$ctx.find(".js-offSet").val(0);let $questionWrapperContainer=this.$ctx.find(".js-question-wrapper-container");const $questionFilterbarContainer=this.$ctx.find(".js-question-filterbar-container");0!==$questionFilterbarContainer.length?T.Utils.scrollToTop($questionFilterbarContainer):T.Utils.scrollToTop($questionWrapperContainer),this.questionsCountTracking=this.limit,this.currentPage=1;const ajaxrequest=T.Utils.startAjaxRequest(this.questionAjaxId,this.questionAjax);ajaxrequest&&ajaxrequest[0]&&ajaxrequest[0].done(response=>{response&&(null!==response.reviewStatistics&&(response.reviewStatistics.modifiedRatingDistribution=this.ratingDistribution),response.totalReviewCount=this.totalReviewCount,response.averageOverallRating=this.averageOverallRating,response.totalQuestionCount=this.totalQuestionCount,response.totalAnswerCount=this.totalAnswerCount,this.renderResponeToTemplate(this.requestobj,response,"replace"),this.totalReviews=response.totalResults,this.showLoadMore())})},openAndScrollToQuestionsTab(){const stickyTab=document.getElementsByClassName("tabs-slider");stickyTab.length>0?T.Utils.scrollToTop($(this.$ctx).offset().top-Math.max(3*stickyTab[0].offsetHeight,150)):T.Utils.scrollToTop($(this.$ctx).offset().top-100)},renderResponeToTemplate(request,response,addMethod){const template=$("<div/>").html(T.Utils.renderTemplateMarkup(request,response,!1)),key=this.$ctx.find("[data-replace-container]").data("replace-container");T.Utils.syncContent(template,key,addMethod)},triggerQuestionsTracking(){T.Utils.getLayout().trackValues("read product questions",{})},onClickAddQuestion(ev){ev.preventDefault();const request=T.Utils.startAjaxRequest(this.$addQuestionButtonAjaxId,this.$addQuestionButtonAjax);$("body").addClass("no-scroll"),request&&request[0]&&request[0].done(response=>{response&&(this.questionLayerModule.showLayer(),this.$questionText=$(".js-trigger-question-guidelines",this.$ctx),this.$guidlinessWrapper=$(".js-guidelines-wrapper",this.$ctx),this.$questionText.on("focus",()=>this.onFocusQuestionText()))})},onFocusQuestionText(){this._events.emit("question:openQuestionTextGuidelines")},onOpenLayer(){return this._events.emit("togglePageScrolling",{pin:!0}),$(window).on("resize",T.Utils.debounce(this.resizeHandler,50))},onCloseLayer(){$("body").removeClass("no-scroll"),this._events.emit("question:closeQuestionTextGuidelines")}})}(jQuery),function($){T.Module.QuestionFilter=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.$sort=this.$ctx.find(".js-sort-question"),this.$sort.on("change",ev=>this.onChangeQuestionSort(ev)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},onChangeQuestionSort(ev){const sortValue=ev.target.value,$sortInput=$(".
7js-sort-question-input");sortValue&&($sortInput.val(sortValue),this._events.emit("question:filter",{component:"questionSort",name:"sort",value:sortValue})),T.Utils.getLayout().trackValues("question sorting type",{question_sorting:ev.target.options[ev.target.selectedIndex].dataset.tracking})}})}(jQuery),function($){T.Module.QuestionsInReviews=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.$redirectquestionsection=this.$ctx.find(".js-questions-section"),this.$redirectquestionsection.on("click",ev=>this.onClickQuestionlink(ev)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},onClickQuestionlink(ev){ev.preventDefault(),this._events.emit("scrollToTab:questions")}})}(jQuery),function($){T.Module.QuestionItemDisplay=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$questionTitle=this.$ctx.find(".js-question-title"),this.$translatedQuestionTitleContainer=this.$ctx.find(".js-translated-question-title-container"),this.$questionreplyPara=this.$ctx.find(".js-questionreply-para"),this.$translatedQuestionreplyPara=this.$ctx.find(".js-translated-container-reply"),this.$translateQuestionButton=this.$ctx.find(".js-translate-question-reply-link"),this.$translateQuestionBackButton=this.$ctx.find(".js-translate-back-question-answer-link"),this.$translateQuestionAjaxId=this.$translateQuestionButton.data("ajax-request-id"),this.$translateQuestionAjax=this.$translateQuestionButton.data("ajax"),this.$translateQuestionTitle=this.$translateQuestionButton.data("question-summary"),this.$translateQuestionReply=this.$translateQuestionButton.data("answer-text"),this.$translateQuestionButton.on("click",ev=>this.onClickTranslateButton(ev)),this.$translateQuestionBackButton.on("click",ev=>this.onClickTranslateBackButton(ev)),resolve()},onClickTranslateButton(ev){ev.preventDefault(),this.$questionTitle.addClass("hidden"),this.$translatedQuestionTitleContainer.removeClass("hidden"),this.$questionreplyPara.addClass("hidden"),this.$translatedQuestionreplyPara.removeClass("hidden"),this.$translateQuestionButton.addClass("hidden"),this.$translateQuestionBackButton.removeClass("hidden");let ajaxObj=this.$translateQuestionAjax.data,question=this.$translateQuestionTitle;Object.assign(ajaxObj,{text:question}),Object.assign(ajaxObj,{answerTexts:this.$translateQuestionReply}),T.Utils.startAjaxRequest(this.$translateQuestionAjaxId,this.$translateQuestionAjax)},onClickTranslateBackButton(ev){ev.preventDefault(),this.$questionTitle.removeClass("hidden"),this.$translatedQuestionTitleContainer.html(""),this.$questionreplyPara.removeClass("hidden"),this.$translatedQuestionreplyPara.addClass("hidden"),this.$translateQuestionButton.removeClass("hidden"),this.$translateQuestionBackButton.addClass("hidden")}})}(jQuery),function($){T.Module.Questions=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.apiUrl=this.$ctx.data("api-url"),this.productId=`${this.$ctx.data("product-id")}`,this.tabId=this.$ctx.data("tab-id"),this.noQA=this.$ctx.data("no-qa"),this._events.on("loadTab:reviews",data=>this.loadBVAPI(data)),this._events.on("scrollToTab:questions",()=>this.openAndScrollToQuestionsTab()),this._events.emit("reviews:isReady"),resolve()},triggerDelayedTracking(){this.ifRetailerReviews||this._events.emit("addTrackValuesToTab",{trackTabId:this.tabId,trackType:"tab open"})},loadBVAPI(data){data.triggerEventTracking&&this.triggerDelayedTracking(),window.$BV?this.initializeBazaarVoice():this.initBazaarVoiceForTabs()},initBazaarVoiceForTabs(){$.ajax({url:this.apiUrl,cache:!0,dataType:"script",success:()=>($(window.$BV.docReady),this.initializeBazaarVoice())})},initBazaarVoiceConfig(){const mod=this,options={};null!=mod.productId&&(options.productId=mod.productId),$BV.configure("global",options),$BV.isTrackingAllowed=!1,this.noQA||$BV.ui("qa","show_questions")},initializeBazaarVoice(){window.$BV&&this.initBazaarVoiceConfig()},openAndScrollToQuestionsTab(){T.Utils.scrollToTop($(this.$ctx))},openReviewTab(){return this._events.emit("openTabToggleBox",{tabId:this.tabId,scrollToTab:!1,$parent:$(document)})}})}(jQuery),function($){T.Module.QuestionSearch=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.$searchQuestionButton=this.$ctx.find(".js-question-search-button"),this.$closeSearchButton=this.$ctx.find(".js-close-search"),this.$searchInputBox=this.$ctx.find(".js-search-input"),this.$searchQuestionButton.on("click",()=>this.onClickSearchButton()),this.$closeSearchButton.on("click",ev=>this.onClickCloseSearch(ev)),this.$searchInputBox.on("input",T.Utils.debounce(()=>this.onInputValueChange(),100)),this.$searchInputBox.on("keypress",ev=>this.onEnterReviewSearch(ev)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.onInputValueChange(),this.isSynced=!0)},onClickSearchButton(){let searchValue=this.$searchInputBox.val().trim(),$searchInput=this.$ctx.find(".js-search");""!=searchValue&&($searchInput.val(searchValue),this._events.emit("question:filter",{component:"questionSearch",name:"search",value:searchValue}))},onClickCloseSearch(ev){this.$ctx.find(".js-search").val(""),this._events.emit("question:filter",{component:"questionSearch",name:"search",value:""})},onInputValueChange(){this.$searchInputBox.val()?this.$closeSearchButton.toggleClass("hidden",!1):this.$closeSearchButton.toggleClass("hidden",!0)},onEnterReviewSearch(ev){13===ev.keyCode&&(ev.preventDefault(),this.onClickSearchButton())}})}(jQuery),function($){T.Module.QuickLinkMessages=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.targetSelector=this.$ctx.data("message-reference"),this.$ctx.on("click",e=>this.scrollToPositionByTargetSelector(e)),resolve()},scrollToPositionByTargetSelector(ev){const elm=$(this.targetSelector);if(elm.length)return T.Utils.scrollToTop($(elm).eq(0))}})}(jQuery),function($){T.Module.RadioGroupWithTextArea=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.radios=this.$(".m-forminput-radio"),this.lastRadioInput=this.radios.last().find("input"),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.textArea=this._sandbox.getModuleById(this.$(".m-forminput-textarea").data("t-id")),this.textArea.elm.$input.on("change",()=>this.onChangeTextArea()),this.radios.find("input").on("change",()=>this.update(!0)),this.update(!1),this.isSynced=!0)},update(manually){const enabled=this.lastRadioInput.is(":checked");return this.textArea.setEnabled(enabled),this.textArea.$ctx.hasClass("js-show-textarea")&&(enabled?this.textArea.$ctx.removeClass("hidden"):this.textArea.$ctx.addClass("hidden")),manually&&this.resetErrors(),enabled&&manually?(null!=this.storedTextValue&&this.textArea.elm.$input.val(this.storedTextValue),this.textArea.elm.$input.focus()):this.textArea.elm.$input.val("")},onChangeTextArea(){return this.storedTextValue=this.textArea.elm.$input.val(),this.resetErrors()},resetErrors(){return this.radios.each((index,obj)=>{const radioModule=this._sandbox.getModuleById($(obj).data("t-id"));return radioModule.toggleStateClass(radioModule.stateclass.error,!1),radioModule.toggleStateClass(radioModule.stateclass.error,!1,radioModule.elm.$inputField)})}})}(jQuery),function($){T.Module.RangeSlider=T.createModule({start(resolve){const mod=this;return mod.$ctx=$(this._ctx),mod.$slider=mod.$(".js-slider"),mod.$input=mod.$(".js-value"),mod.onValueChanged=$.proxy(mod.onValueChanged,mod),mod.$slider.length&&mod.$input.length&&(mod.noUiRangeSlider=noUiSlider.create(mod.$slider[0],{start:[mod.$slider.data("marker-lower"),mod.$slider.data("marker-upper")],step:1,margin:1,range:{min:[mod.$slider.data("range-min")],max:[mod.$slider.data("range-max")]},format:{to:value=>Math.round(value),from:value=>Math.round(value)}}),mod.noUiRangeSlider.on("slide",function(values,handle){const $input=mod.$input.eq(handle),val=values[handle];return $input.attr("value",val)}),mod.noUiRangeSlider.on("end",function(values,handle){return mod.$input.eq(handle).trigger("change")}),mod.$input.on("change",$.proxy(mod.onValueChanged,mod))),resolve()},sync(){},onValueChanged(ev){const index=this.$input.index($(ev.currentTarget)),pos=[null,null];return pos[index]=parseInt(this.$input.eq(index).val()),this.noUiRangeSlider.set(pos),this.$input.eq(index).blur()}})}(jQuery),function($){T.Module.RatingDistribution=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.$dimensionRatingRow=this.$ctx.find(".js-average-rating-row"),this.$ratingRow=this.$ctx.find(".js-ratingrow"),this.$dimensionRatingRow.on("click",ev=>this.onClickDimensionRatingRow(ev)),this.$ratingRow.on("click",ev=>this.onClickRatingRow(ev)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},onClickDimensionRatingRow(ev){const currentDimension=$(ev.currentTarget).data("dimension"),$secondaryRatingInput=this.$ctx.find(".js-secondaryRating"),secondaryRatingValue=$secondaryRatingInput.val();if(secondaryRatingValue){if(secondaryRatingValue.split(",").includes(currentDimension))return;$secondaryRatingInput.val(secondaryRatingValue+","+currentDimension)}else $secondaryRatingInput.val(currentDimension);this._events.emit("review:filter",{component:"filter",name:"dimension",value:currentDimension})},onClickRatingRow(ev){const selectedRatingText=$(ev.currentTarget).find(".js-ratingrow-label").text().trim(),selectedRatingValue=$(ev.currentTarget).find(".js-ratingrow-value").text().trim(),$ratingDistributionInput=this.$ctx.parents(".js-review-wrapper-container").find(".js-rating"),ratingDistributionInputValue=$ratingDistributionInput.val();if(ratingDistributionInputValue){if(ratingDistributionInputValue.split(",").includes(selectedRatingText))return;$ratingDistributionInput.val(ratingDistributionInputValue+","+selectedRatingText)}else $ratingDistributionInput.val(selectedRatingText);selectedRatingValue>0&&this._events.emit("review:filter",{component:"ratingRowFilter",name:"rating",value:selectedRatingText})}})}(jQuery),function($){T.Module.RatingSummary=T.createModule({start(resolve){return this.isSynced=!1,this.$ctx=$(this._ctx),this.$stars=this.$ctx.find("a.scale"),this.$ratings=this.$ctx.find("a.ratings"),this.$reviews=this.$ctx.find("a.reviews"),this.$questions=this.$ctx.find("a.questions"),this.productId=this.$ctx.data("product-id"),this.$bazaarvoiceSummaryReview=this.$ctx.find(".js-bazaarvoice-summaryReview-container"),this.bazaarvoiceSummaryReviewAjaxId=this.$bazaarvoiceSummaryReview.data("ajax-id"),this.readRatingSummary(),this.$questions.on("click",ev=>this.onClickQuestions(ev)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){if(!this.isSynced&&this.bazaarvoiceSummaryReviewAjaxId){T.Utils.startAjaxRequest(this.bazaarvoiceSummaryReviewAjaxId)[0].done(response=>{this.readRatingSummary(),this.createSchema(response)})}return this.isSynced=!0,this.isSynced},readRatingSummary(){this.$ctx=$(this._ctx),this.$stars=this.$ctx.find("a.scale"),this.$ratings=this.$ctx.find("a.ratings"),this.$reviews=this.$ctx.find("a.reviews"),this.$questions=this.$ctx.find("a.questions"),this.$stars.on("click",ev=>this.onClickStars(ev)),this.$ratings.on("click",ev=>this.onClickRatings(ev)),this.$reviews.on("click",ev=>this.onClickReviews(ev)),this.$questions.on("click",ev=>this.onClickQuestions(ev))},showReviews(productid){"function"==typeof window.reloadBVRatings&&(T.Utils.getLayout().trackValues("read product reviews",{}),window.reloadBVRatings(productid)),this._events.emit("isAPIBasedBVReviews"),this._events.emit("scrollToTab:review"),this._events.emit("showRetailerReviews",{productID:this.productId})},showQA(productid){"function"==typeof window.reloadBVRatings&&(T.Utils.getLayout().trackValues("read product questions",{}),window.reloadBVQuestionAndAnswer(productid)),this._events.emit("isAPIBasedBVQuestions"),this._events.emit("scrollToTab:questions")},onClickStars(ev){ev.preventDefault(),this.showReviews(this.productId)},onClickRatings(ev){ev.preventDefault(),this.showReviews(this.productId)},onClickReviews(ev){ev.preventDefault(),this.showReviews(this.productId)},onClickRetailerReviews(ev){ev.preventDefault(),this._events.emit("showRetailerReviews",{productID:this.productId,isRetailerReview:!0})},onClickQuestions(ev){ev.preventDefault(),this.showQA(this.productId)},createSchema(ratingResponse){var productData=document.getElementById("product-data").textContent;if(productData=JSON.parse(productData),null!=ratingResponse&&ratingResponse.totalReviewCount>0){let aggregateRating={aggregateRating:{"@type":"AggregateRating",bestRating:5,ratingV
7alue:ratingResponse.averageOverallRating,reviewCount:ratingResponse.totalReviewCount}};const mergedObject={...productData,...aggregateRating};let updatedProductObject=JSON.stringify(mergedObject);document.getElementById("product-data").textContent=updatedProductObject}}})}(jQuery),function($){T.Module.ReviewFilter=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.$filter=this.$ctx.find(".js-select-filter"),this.$sort=this.$ctx.find(".js-sort-review"),this.$incentivized=this.$ctx.find(".js-toggle-incentivized"),this.$locale=this.$ctx.find(".js-toggle-locale"),this.$chipsGroup=this.$ctx.find(".m-chips-group"),this.$filter.on("change",ev=>this.onChangeFilter(ev)),this.$sort.on("change",ev=>this.onChangeSort(ev)),this.$incentivized.on("change",ev=>this.onChangeIncentivized(ev)),this.$locale.on("change",ev=>this.onChangeLocale(ev)),this._events.on("chipMultiselectSubmit",$chip=>this.onChipMultiselectSubmit($chip)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},onChipMultiselectSubmit($chip){const $checkedInputs=$chip.find(":checked");let filterName=$chip.data("form-input-name"),inputChanged=!1;const $filterInput=this.$ctx.find(`.js-${filterName}`),filterValues=[];if($checkedInputs.each((i,input)=>{filterValues.push($(input).val())}),"rating"!==filterName&&(filterName=$chip.data("form-input-id")),$filterInput.val()){const inputArray=$filterInput.val().split(",");(inputChanged=!(filterValues.length===inputArray.length&&filterValues.every(value=>inputArray.includes(value))))&&$filterInput.val(filterValues.toString())}else filterValues.length&&($filterInput.val(filterValues.toString()),inputChanged=!0);inputChanged&&this._events.emit("review:filter",{component:"filter",name:filterName,value:filterValues.toString()})},onChangeFilter(ev){const filterValue=ev.target.value,filterName=$(ev.target).data("selectname");let currentFilterName=filterName;if("rating"===filterName){const $ratingInput=this.$ctx.find(".js-rating");if($ratingInput.val()){if($ratingInput.val().split(",").includes(filterValue))return;$ratingInput.val(`${$ratingInput.val()},${filterValue}`)}else $ratingInput.val(filterValue)}else{currentFilterName=$(ev.target).data("selectid");const $filterInput=this.$ctx.find(`.js-${filterName}`);if($filterInput.val()){if($filterInput.val().split(",").includes(filterValue))return;$filterInput.val(`${$filterInput.val()},${filterValue}`)}else $filterInput.val(filterValue)}filterValue&&this._events.emit("review:filter",{component:"filter",name:currentFilterName,value:filterValue})},onChangeSort(ev){const sortValue=ev.target.value;
7let $sortInput=$(".js-sort-review-input");sortValue&&($sortInput.val(sortValue),this._events.emit("review:filter",{component:"reviewSort",name:"sort",value:sortValue})),T.Utils.getLayout().trackValues("review sorting type",{review_sorting:ev.target.options[ev.target.selectedIndex].dataset.tracking})},onChangeIncentivized(ev){this.$ctx=$(this._ctx);const incentivizedValue=ev.target.value,incentivizedInputVal="true"!==incentivizedValue;this.$ctx.find(".js-IncentivizedReview-filter").val(incentivizedInputVal),this._events.emit("review:filter",{component:"toggleFilter",name:"incentivized filter",value:incentivizedValue})},onChangeLocale(ev){this.$ctx=$(this._ctx);const localeValue=ev.target.value,localeInputVal="true"!==localeValue;this.$ctx.find(".js-locale-filter").val(localeInputVal),this._events.emit("review:filter",{component:"toggleFilter",name:"locale filter",value:localeValue})}})}(jQuery),function($){T.Module.ReviewFilterModal=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$showAllFiltersChip=this.$ctx.find(".js-show-all-review-filters"),this.$reviewFilterModal=this.$ctx.find(".js-review-filter-modal"),this.$closeReviewFilterModalBtn=this.$ctx.find(".js-close-review-filter-modal"),this.$reviewFilterModalHead=this.$ctx.find(".js-review-filter-modal-head"),this.$submitReviewFilterBtn=this.$ctx.find(".js-modal-filter-reviews"),this.$stickyHeader=$(".js-nav-sticky"),this.$feedbackButton=$(".js-feedback-button"),this.$layerTriggerCollection=this.$ctx.find(".js-no-reviews-warning"),this.$modalFilters=this.$ctx.find(".js-general-filter-modal > .js-review-modal-filter-item"),this.$incentivizedModal=this.$ctx.find(".js-toggle-incentivized-modal"),this.$showAllFiltersChip.on("click",()=>this.openModal()),this.$closeReviewFilterModalBtn.on("click",()=>this.closeModal()),this.$reviewFilterModalHead.on("click",e=>this.toggleDropdown(e)),this.$submitReviewFilterBtn.on("click",()=>this.handleSubmit()),this.$reviewFilterModal.on("transitionend animationend",()=>this.onModalAnimationEnd()),this._events.on("viewportChanged",vp=>{"desktop"===vp&&this.$reviewFilterModal.hasClass("open")&&this.closeModal()}),this._events.on("closeModal:reviews",()=>this.closeModal()),this._events.on("openLayer:NoreviewsForFilter",ev=>this.openPopupLayer(ev)),this.$noReviewsForFilters=!1,resolve()},sync(){this.isSynced||(this.isSynced=!0)},openModal(){this.$reviewFilterModal.show(),this.hideAfterAnimation=!1,this.$reviewFilterModal.removeClass("animation-out").addClass("animation-in open"),this.$stickyHeader.addClass("hidden"),this.$feedbackButton.addClass("hidden"),$("body").addClass("scroll-disabled")},closeModal(){this.hideAfterAnimation=!0,this.animateOut(),this.$stickyHeader.removeClass("hidden"),this.$feedbackButton.removeClass("hidden"),$("body").removeClass("scroll-disabled")},animateOut(){this.$reviewFilterModal.removeClass("animation-in").addClass("animation-out"),this.$reviewFilterModal.removeClass("open")},onModalAnimationEnd(){this.hideAfterAnimation&&this.$reviewFilterModal.hide()},toggleDropdown(e){const $currentFilterHead=$(e.target).closest(".js-review-filter-modal-head").addBack(".js-review-filter-modal-head"),$filter=$(e.target).closest(".js-review-modal-filter");$currentFilterHead.find(".filter-toggle").toggleClass("icon-arrow-down icon-arrow-up"),$filter.find(".js-filter-content").toggleClass("hidden"),$filter.toggleClass("open")},handleSubmit(){this.$ratingFilterItems=[];for(let modalFilter of this.$modalFilters){let ratingFilter={filterName:modalFilter.dataset.formInputName,filterId:modalFilter.dataset.formInputId,filterValues:[]};this.$ratingFilterItems.push(ratingFilter)}let isFilterChanged=!1;this.$ratingFilterItems.forEach(item=>{const filterValues=this.addValuestoFilterList(item.filterName);item.filterValues=filterValues,this.onAllFilterSubmit(filterValues,item.filterName,item.filterId)&&(isFilterChanged=!0)});let isIncentiveChanged=this.onChangeIncentivizedModal(),isLocaleChanged=this.onChangeLocaleModal();(isFilterChanged||isIncentiveChanged||isLocaleChanged||this.$noReviewsForFilters)&&(this._events.emit("review:filter",{component:"filterModal",name:this.$ratingFilterItems[0].filterName,value:this.$ratingFilterItems[0].filterValues.toString()}),this.$noReviewsForFilters=!1)},addValuestoFilterList(filterName){const filterValues=[];return $(`input[name='reviewfiltermodal${filterName}']:checked`).each((i,item)=>{filterValues.push(item.value)}),filterValues},onAllFilterSubmit(filterValues,filterName,filterId){let inputChanged=!1;const $filterInput=$(`.js-${filterName}`);if("rating"!==filterName&&(filterName=filterId),$filterInput.val()){const filterInputArray=$filterInput.val().split(",");(inputChanged=!(filterValues.length===filterInputArray.length&&filterValues.every(value=>filterInputArray.includes(value))))&&$filterInput.val(filterValues.toString())}else filterValues.length&&($filterInput.val(filterValues.toString()),inputChanged=!0);return inputChanged},onChangeIncentivizedModal(){if(1===$(".js-toggle-incentivized-modal").length){const incentivizedValue=$(".js-toggle-incentivized-modal").is(":checked").toString(),$incentivizedInput=$(".
7js-IncentivizedReview-filter");if(incentivizedValue===$incentivizedInput[0].value){const incentivizedInputVal="true"!==incentivizedValue;return $incentivizedInput.val(incentivizedInputVal.toString()),!0}return!1}},onChangeLocaleModal(){if(1===$(".js-toggle-locale-modal").length){const localeValue=$(".js-toggle-locale-modal").is(":checked").toString(),$localeInput=$(".js-locale-filter");if($localeInput[0].value===localeValue){const localeInputVal="true"!==localeValue;return $localeInput.val(localeInputVal.toString()),!0}return!1}},openPopupLayer(ev){this.$layer=T.Utils.application._sandbox.getModuleById(this.$layerTriggerCollection.data("t-id")),this.$layer.openLayer(),this.$noReviewsForFilters=!0}})}(jQuery),function($){T.Module.ReviewItemDisplay=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.buttonTxt=this.$ctx.find(".js-show-more-link"),this.showMoreTxt=this.$ctx.find(".show-more-review"),this.showLessTxt=this.$ctx.find(".show-less-review"),this.$truncatedText=this.$ctx.find(".js-review-text"),this.$hideReviewText=this.$ctx.find(".js-hide-review-text"),this.$sourceReply=this.$ctx.find(".js-reviewreply-para"),this.$reviewTitleContainer=this.$ctx.find(".js-review-title-container"),this.$reviewTitle=this.$ctx.find(".js-review-title"),this.$translateReviewButton=this.$ctx.find(".js-translate-review-link"),this.$translatedContainer=this.$ctx.find(".js-translated-container"),this.$translatedReplyContainer=this.$ctx.find(".js-translated-container-reply"),this.$translateReviewBackButton=this.$ctx.find(".js-translate-back-review-link"),this.$isTranslatedText=this.$ctx.find(".js-review-is-translated-text"),this.$translateReviewAjaxId=this.$translateReviewButton.data("ajax-request-id"),this.$translateReviewAjax=this.$translateReviewButton.data("ajax"),this.$translateReviewText=this.$truncatedText.html(),this.$translateReviewTitle=this.$translateReviewButton.data("review-title"),this.buttonTxt.on("click",ev=>this.onClickShowMore(ev)),this.$translateReviewButton.on("click",ev=>this.onClickTranslateButton(ev)),this.$translateReviewBackButton.on("click",ev=>this.onClickTranslateBackButton(ev)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){return this.isTruncated(this.$truncatedText[0])?(this.showMoreTxt.removeClass("hidden"),this.buttonTxt.removeClass("hidden")):(this.buttonTxt.addClass("hidden"),this.$truncatedText.removeClass("show-truncated-text")),this.isSynced=!0,this.isSynced},onClickShowMore(ev){ev.preventDefault(),this.$ctx=$(this._ctx),this.isTruncated(this.$truncatedText[0])?(this.$truncatedText.removeClass("show-truncated-text"),this.$truncatedText.addClass("show-full-text"),this.showMoreTxt.addClass("hidden")):(this.$truncatedText.addClass("show-truncated-text"),this.$truncatedText.removeClass("show-full-text"),this.showMoreTxt.removeClass("hidden"))},isTruncated(el){const maxOffsetHeight=parseInt(window.getComputedStyle(el).maxHeight);return el.scrollHeight>maxOffsetHeight},onClickTranslateButton(ev){ev.preventDefault(),this.$translatedContainer.removeClass("hidden"),this.$translatedContainer.removeClass("show-truncated-text"),this.$translatedContainer.addClass("show-full-text"),this.$translatedReplyContainer.removeClass("hidden"),this.$translateReviewButton.addClass("hidden"),this.$reviewTitle.addClass("hidden"),this.$reviewTitleContainer.removeClass("hidden"),this.$hideReviewText.css("display","none"),this.$sourceReply.css("display","none"),this.$isTranslatedText.removeClass("hidden"),this.$translateReviewBackButton.removeClass("hidden"),this.$truncatedText.addClass("show-full-text"),this.showMoreTxt.addClass("hidden");var ajaxObj=this.$translateReviewAjax.data,reviewText=this.$translateReviewText,reviewTitle=this.$translateReviewTitle;Object.assign(ajaxObj,{text:reviewText}),Object.assign(ajaxObj,{title:reviewTitle}),T.Utils.startAjaxRequest(this.$translateReviewAjaxId,this.$translateReviewAjax)},onClickTranslateBackButton(ev){ev.preventDefault(),this.$translatedContainer.addClass("hidden"),this.$translatedReplyContainer.addClass("hidden"),this.$translateReviewButton.removeClass("hidden"),this.$reviewTitle.removeClass("hidden"),this.$reviewTitleContainer.addClass("hidden"),this.$hideReviewText.css("display","block"),this.$sourceReply.css("display","block"),this.$isTranslatedText.addClass("hidden"),this.$translateReviewBackButton.addClass("hidden")}})}(jQuery),function($){T.Module.Reviews=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.apiUrl=this.$ctx.data("api-url"),this.productId=`${this.$ctx.data("product-id")}`,this.tabId=this.$ctx.data("tab-id"),this.noQA=this.$ctx.data("no-qa"),this.redirectUrl=this.$ctx.data("redirect-url"),this.campaignId=this.$ctx.data("campaign-id"),this.reviewUrl=this.$ctx.data("review-url"),this.hashScope="Tabs",this.bvrrContainerSelector="#BVRRContainer",this.ifRetailerReviews=!1,this._events.on("showRetailerReviews",()=>this.loadBVAPI()),this._events.on("ifRetailerReviewsPresent",()=>{this.ifRetailerReviews=!0}),this._events.on("loadTab:reviews",data=>this.loadBVAPI(data)),this._events.on("scrollToTab:review",()=>this.openAndScrollToReviewTab()),this._events.on("scrollToReviewSection",()=>this.openReviewSection()),this._events.emit("reviews:isReady"),resolve()},triggerDelayedTracking(){this.ifRetailerReviews||this._events.emit("addTrackValuesToTab",{trackTabId:this.tabId,trackType:"tab open"})},loadBVAPI(data){data&&data.triggerEventTracking&&this.triggerDelayedTracking(),window.$BV?this.initializeBazaarVoice():this.initBazaarVoiceForTabs()},initBazaarVoiceForTabs(){const mod=this;setTimeout(()=>{mod._events.emit("loader:open",{loaderType:"area",loaderArea:mod.$ctx,$trigger:mod.$ctx})},10),$.ajax({url:this.apiUrl,cache:!0,dataType:"script",success:()=>($(window.$BV.docReady),this.initializeBazaarVoice()),error:()=>{this._events.emit("loader:close",{$trigger:this.$ctx})}})},initBazaarVoiceConfig(){const mod=this,options={};null!=mod.productId&&(options.productId=mod.productId),null==options.events&&(options.events={}),options.events.bvRender=(()=>{this._events.emit("loader:close",{$trigger:this.$ctx}),mod.$ctx.removeClass("loadReview"),this.overrideReviewButtons()}),null!=mod.redirectUrl&&""!==mod.redirectURL&&(options.events.submissionSubmitted=(data=>
7{setTimeout(()=>window.location.replace(mod.redirectUrl),2e3)})),mod.campaignId&&(null==options.events&&(options.events={}),options.events.submissionLoad=(data=>document.getElementsByName("campaignid")[0].value=mod.campaignId)),$BV.configure("global",options),$BV.isTrackingAllowed=!1,$BV.ui("rr","show_reviews"),this.noQA||$BV.ui("qa","show_questions")},initializeBazaarVoice(){const mod=this;return window.$BV&&this.initBazaarVoiceConfig(),window.submitReview=function(productCode){return window.$BV?$BV.ui("rr","submit_review",{productId:productCode}):console&&console.error?console.error("cannot submit reviews: BV JS Lib not loaded"):void 0},window.reloadBVRatings=function(productCode,isRetailerReview){if(window.$BV){let bvReviews=mod.loadBVReviews(productCode);isRetailerReview||bvReviews.then(()=>{this.openAndScrollToReviewTab("#BVRRSearchContainer")})}},window.reloadBVQuestionAndAnswer=function(productCode){if(window.$BV)return $BV.ui("qa","show_questions",{productId:productCode,submissionContainerDiv:"BVQAContainer"}).then(()=>{this.openAndScrollToReviewTab("#BVQASearchContainer")})}},openAndScrollToReviewTab(BVcontainer){this.openReviewTab(),BVcontainer?T.Utils.scrollToTop($(BVcontainer)):T.Utils.scrollToTop($(this.$ctx))},openReviewSection(){T.Utils.scrollToTop($(this.$ctx))},openReviewTab(){return this._events.emit("openTabToggleBox",{tabId:this.tabId,scrollToTab:!1,$parent:$(document)})},loadBVReviews:productCode=>$BV.ui("rr","show_reviews",{productId:productCode,submissionContainerDiv:"BVRRContainer"}),overrideReviewButtons(){setTimeout(()=>{if(this.$BVbuttonReviewNow=$("#BVRRSummaryContainer").find(".bv-write-review"),this.$BVbuttonReviewAtFirst=$(this.bvrrContainerSelector).find(".bv-write-review-label"),this.$BVbuttonReviewNowTab=$(this.bvrrContainerSelector).find(".bv-write-review"),(null!=this.reviewUrl?this.reviewUrl.length:void 0)>0){const cb=ev=>(ev.preventDefault(),ev.stopImmediatePropagation(),window.location.href=this.reviewUrl);if(this.$BVbuttonReviewNow.length>0&&this.$BVbuttonReviewNow[0].addEventListener("click",cb),this.$BVbuttonReviewAtFirst.length>0&&this.$BVbuttonReviewAtFirst[0].addEventListener("click",cb),this.$BVbuttonReviewNowTab.length>0)return this.$BVbuttonReviewNowTab[0].addEventListener("click",cb)}},2e3)}})}(jQuery),function($){T.Module.ReviewSearch=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.$searchReviewButton=this.$ctx.find(".js-review-search-button"),this.$closeSearchButton=this.$ctx.find(".js-close-search"),this.$searchInputBox=this.$ctx.find(".js-search-input"),this.$searchReviewButton.on("click",()=>this.onClickSearchButton()),this.$closeSearchButton.on("click",ev=>this.onClickCloseSearch(ev)),this.$searchInputBox.on("input",T.Utils.debounce(()=>this.onInputValueChange(),100)),this.$searchInputBox.on("keypress",ev=>this.onEnterReviewSearch(ev)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.onInputValueChange(),this.isSynced=!0)},onClickSearchButton(){let searchValue=this.$searchInputBox.val().trim(),$searchInput=this.$ctx.find(".js-search");""!=searchValue&&($searchInput.val(searchValue),this._events.emit("review:filter",{component:"reviewSearch",name:"search",value:searchValue}))},onClickCloseSearch(ev){this.$ctx.find(".js-search").val(""),this._events.emit("review:filter",{component:"reviewSearch",name:"search",value:""})},onInputValueChange(){this.$searchInputBox.val()?this.$closeSearchButton.toggleClass("hidden",!1):this.$closeSearchButton.toggleClass("hidden",!0)},onEnterReviewSearch(ev){13===ev.keyCode&&(ev.preventDefault(),this.onClickSearchButton())}})}(jQuery),function($){T.Module.ReviewSortingModal=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$showAllFiltersChip=this.$ctx.find(".js-show-sort-modal"),this.$sortModal=this.$ctx.find(".js-sort-modal"),this.$closeSortModalBtn=this.$ctx.find(".js-close-modal"),this.$submitSortBtn=this.$ctx.find(".js-modal-sort-reviews"),this.$stickyHeader=$(".js-nav-sticky"),this.$feedbackButton=$(".js-feedback-button"),this.$showAllFiltersChip.on("click",()=>this.openModal()),this.$closeSortModalBtn.on("click",()=>this.closeModal()),this.$submitSortBtn.on("click",()=>this.handleSubmit()),this.$sortModal.on("transitionend animationend",()=>this.onModalAnimationEnd()),this.onChangeSort(),this._events.on("viewportChanged",vp=>{"desktop"===vp&&this.$sortModal.hasClass("open")&&this.closeModal()}),resolve()},openModal(){this.$sortModal.show(),this.hideAfterAnimation=!1,this.$sortModal.removeClass("animation-out").addClass("animation-in open"),this.$stickyHeader.addClass("hidden"),this.$feedbackButton.addClass("hidden"),$("body").addClass("scroll-disabled")},closeModal(){this.hideAfterAnimation=!0,this.animateOut(),this.$stickyHeader.removeClass("hidden"),this.$feedbackButton.removeClass("hidden"),$("body").removeClass("scroll-disabled")},animateOut(){this.$sortModal.removeClass("animation-in").addClass("animation-out"),this.$sortModal.removeClass("open")},onModalAnimationEnd(){this.hideAfterAnimation&&this.$sortModal.hide()},handleSubmit(){const sortValue=this.$ctx.find("input[type='radio'][name='SortModal']:checked").val();$(".js-sort-review-input").val(sortValue),sortValue&&this._events.emit("review:filter",{component:"reviewSort",name:"sort",value:sortValue}),this.closeModal()},onChangeSort(){$("input[type=radio][name=SortModal]").change(function(){$(".js-sort-info").children().addClass("hidden"),"submissiontime:desc"===this.value?$(".js-most-recent").removeClass("hidden"):"rating:desc"===this.value?$(".js-highest-to-lowest").removeClass("hidden"):"relevancy:a1"===this.value&&$(".js-most-relevant").removeClass("hidden")})}})}(jQuery),function($){T.Module.ScrollDown=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$parent=$(this.$ctx.parent()),this.$window=$(window),this.bottomOffset=100,this.scrollRate=this.$ctx.data("scroll-offset")||void 0,this.$scrollSelector=this.$ctx.data("scrolldown-target-selector"),this.scrollTolerance=this.$ctx.data("scrolldown-tolerance")||0,this.hasScrolldownIcon=this.$ctx.hasClass("js-scrolldown-icon"),this.$ctx.hasClass("js-scrolldown")&&this.$ctx.on("click",()=>this.scrollToPositionByPercentData()),this.$window.on("scroll",()=>this.onScroll()),this.initButton(),resolve()},initButton(){const shouldReappear=this.$ctx.data("should-reappear");this.hasScrolldownIcon&&this.$ctx.css("top",window.innerHeight-this.bottomOffset),shouldReappear&&(this.$window.on("scroll",T.Utils.debounce(()=>this.onStopScroll(),T.Utils.scrolldown.reappearDelay)),this.onStopScroll()),this.onScroll()},onScroll(){if(this.hasScrolldownIcon){const parentOffsetTop=this.$parent.offset().top;this.$window.scrollTop()>parentOffsetTop?this.hideButton():this.showButton()}else{this.$window.scrollTop()>this.scrollTolerance?this.$ctx.removeClass("is-active"):this.$ctx.addClass("is-active")}},onStopScroll(){const windowHeight=$(window).height(),offset=.33*windowHeight,parentTop=this.$parent.offset().top,parentBottom=parentTop+this.$parent.outerHeight(),currentScrollPosition=$(window).scrollTop();parentBottom>currentScrollPosition+windowHeight&&parentTop-offset<currentScrollPosition&&(this.$ctx.css("top",window.innerHeight-this.bottomOffset+currentScrollPosition-parentTop),this.showButton())},showButton(){this.$ctx.removeClass("button-inactive"),this.$ctx.addClass("is-active"),this.$ctx.removeClass("is-inactive")},hideButton(){this.$ctx.removeClass("is-active"),this.$ctx.addClass("is-inactive")},scrollToPositionByPercentData(){if(null!=this.scrollRate){const{$window:$window}=this,scrollRatePixel=$window.height()*(parseFloat(this.scrollRate)/100);T.Utils.scrollToTop(scrollRatePixel)}if(void 0!=this.$scrollSelector){let $scrollToElement=this.$ctx.next(this.$scrollSelector);$scrollToElement.length>0&&T.Utils.scrollToTop($scrollToElement)}}})}(jQuery),function($){T.Module.ScrollyTellingChapter=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.isSynced=!1;T.Commons.ScriptLoader.loadOnceScrollytellingLibrary(()=>this.scrollMagicChapter()),this.chapters=this.$ctx.find(".js-chapters"),this._events.on("t.sync",()=>this.sync()),this._events.on("windowWidthChanged",T.Utils.debounce(()=>this.adaptChapterWidth(),200)),resolve()},sync(){return this.isSynced||(this.isSynced=!0),this.isSynced},scrollMagicChapter(){const mod=this;let controller=new ScrollMagic.Controller;this.chapters.each(function(){let self=this,eventAlreadyTracked=!1,$self=$(this),chapterDuration=$(this).data("duration"),chapterScene=new ScrollMagic.Scene({triggerElement:this,triggerHook:0,duration:chapterDuration}).setPin(this).on("leave",function(event){eventAlreadyTracked||(mod.trackChapterScroll($self,event),eventAlreadyTracked=!0)}).addTo(controller),$mediaContainer=$(this).find(".js-media");if($mediaContainer.length>1)chapterScene.removePin(!0),$mediaContainer.each(function(i){const animateMedia=new ScrollMagic.Scene({triggerElement:this,triggerHook:0,duration:$(this).data("duration")}).addTo(controller).setPin(this);let $video=$(this).find(".js-video");if($video.length>0){let $videoContent=mod._sandbox.getModuleById($video.data("t-id"));$videoContent&&($videoContent.muteVideo(),mod.preloadVideo($videoContent),mod.startScrollAnimation($videoContent,animateMedia))}});else{const animateMedia=new ScrollMagic.Scene({triggerElement:self,triggerHook:0,duration:$(this).data("duration")}).addTo(controller);let $video=$(this).find(".js-video");if($video.length>0){let $videoContent=mod._sandbox.getModuleById($video.data("t-id"));$videoContent&&($videoContent.muteVideo(),mod.preloadVideo($videoContent),mod.startScrollAnimation($videoContent,animateMedia))}}$textContainer=$(this).find(".js-text-block"),$textContainer.length>0&&$textContainer.each(function(){new ScrollMagic.Scene({triggerElement:self,triggerHook:0,duration:$(this).data("duration"),offset:$(this).data("offset")}).setClassToggle(this,"visible").addTo(controller)})})},adaptChapterWidth(){this.chapters.each((index,chapter)=>{chapter.style.width=chapter.parentElement.offsetWidth+"px"})},startScrollAnimation(video,videoScene){video.currentTime=0;let lastpos,scrollpos=0;videoScene.on("start",()=>{video.videoPlay()}),videoScene.on("progress",e=>{scrollpos=e.progress}),setInterval(()=>{if(lastpos===scrollpos)return video.videoPause();requestAnimationFrame(()=>{let $videoCheckDuration=$(video.$ctx[0]).find("video").get(0);$videoCheckDuration&&(video.setProgressPlayed(($videoCheckDuration.duration-.001)*scrollpos),video.videoPause(),lastpos=scrollpos)})},50)}
7,preloadVideo(video){this._events.on("video:loaded",data=>{data.$component[0]===video.$ctx[0]&&(video.videoPlay(),video.setProgressPlayed(0),setTimeout(()=>{video.videoPause()},10))}),this.createVideoInViewportController(video)},createVideoInViewportController(video){const $element=$("<div>");let checkVideoState;return $element.css("display","none"),video.$ctx.append($element),this.inViewportController=T.Utils.createController($element,"IsInViewportController",""),this.inViewportController.init({element:video.$ctx.get(0),visiblePercentage:.01,onViewportChanged:(element,inViewport)=>{inViewport?checkVideoState=setInterval(()=>{video.isVideoPlaying()&&video.videoPause()},500):clearInterval(checkVideoState)}})},trackChapterScroll(currentChapters,ev){if("FORWARD"===ev.scrollDirection){const dataValues={scrollytelling_id:currentChapters.closest(".js-scrollytelling").data("scrollytelling-id"),scrollytelling_chapter_id:currentChapters.closest(".js-scrollytellingchapter").data("chapter-id"),scrollytelling_total_chapters:currentChapters.closest(".js-scrollytelling").find(".js-scrollytellingchapter").length};T.Utils.getLayout().trackValues("scrollytelling milestone reached",dataValues)}}})}(jQuery),function($){const inputSelector=".js-searchfield-input";T.Module.SearchField=T.createModule({start(resolve){const mod=this;mod.$ctx=$(this._ctx),this.config=this.$ctx.data(),mod.$currentSelectedItem=!1,mod.$input=this.$(inputSelector),mod.$typeplateScannerArea=this.$(".js-typeplate-scanner-area"),mod.$submit=this.$(".js-searchfield-searchbutton"),mod.$clear=this.$(".js-searchfield-icon-remove"),mod.$layer=this.$(".js-searchfield-suggestlayer"),mod.$form=this.$(".js-ajax-request"),mod.ajaxEnabled=this.$form.length>0,mod.$errorMessage=this.$(".a-errormessage.error-custom"),mod.id=this.$ctx.data("t-id"),mod.clientValidation=this.$ctx.data("client-validation")||!1,mod.isValid=!1,mod.suggestLayerUpdate=!1,mod.layerOffsetPosition=0,mod.ajaxCallStateCache="",mod.resultList=[],mod.inputAjaxDelay=2,mod.clientValidation&&mod.$submit.attr("disabled","disabled"),setTimeout(()=>{let purchaseDateSelector=this.$ctx.data("ocr-field-purchase-date");this.$ocrFieldPurchaseDate=$(purchaseDateSelector+"-input")},1e3);let fdSelector=this.$ctx.data("ocr-field-fd");this.$ocrFieldFd=$(fdSelector),this.$fdNumberLabel=this.$ocrFieldFd.siblings(".js-fdNumber-label");let znrSelector=this.$ctx.data("ocr-field-znr");this.$ocrFieldZnr=$(znrSelector),this.$serialNumberLabel=this.$ocrFieldZnr.siblings(".js-serialNumber-label");let manufacturingWarningAlertClass=this.$ctx.data("warningalert-class");if(this.$manufacturingWarningAlert=$(manufacturingWarningAlertClass),this.setProductTileBinding(),this.debounceGetSuggestionData=T.Utils.debounce(()=>this.getSuggestionData(),50),this.debounceHandleCheckManufacturingMessageAndGetProductTile=T.Utils.debounce(()=>{this.checkManufacturingMessage(),this.getProductTile()},250),mod.$ctx.on("focus",inputSelector,$.proxy(mod.onFocusInput,this)),mod.$ctx.on("input",inputSelector,$.proxy(mod.onChangeInput,this)),mod.$ctx.on("blur",inputSelector,$.proxy(mod.onBlurInput,this)),mod.$ctx.on("keydown",inputSelector,$.proxy(mod.onKeydownInput,this)),mod.$ctx.on("click",".js-searchfield-icon-remove",$.proxy(mod.onClickClear,this)),mod.$ctx.on("change",".suggestlayer-results-row :input",$.proxy(mod.onChangeOption,this)),mod.$ctx.on("mouseenter",".js-searchfield-suggestlayer",$.proxy(mod.onLayerHover,this)),mod.$(".js-searchform").on("submit",$.proxy(this.onSearchSubmit,this)),mod._events.on("triggerSearch",$.proxy(mod.onTriggerSearch,this)),mod._events.on("showInputError",$.proxy(mod.onShowInputError,this)),mod._events.on("hideInputError",$.proxy(mod.onHideIn
7putError,this)),mod._events.on("updateProxyValue",$.proxy(mod.proxyValueChanged,this)),this._events.on("closeSuggestionLayer",()=>{this.ajaxCallCacheState=null,this.closeLayer()}),this.stateclass={empty:"is-empty"},window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver){const inputProxySelector=mod.$ctx.attr("data-input-proxy-selector");null!=inputProxySelector&&(mod.$inputProxy=mod.$ctx.closest(".m-form").find(`input.${inputProxySelector}`),mod.$inputProxy.length>0&&(mod.inputClassObserver=new MutationObserver($.proxy(function(mutations){return mod.$inputProxy.attr("class",`${mod.$input.attr("class")} proxyField ${inputProxySelector}`),mod.$inputProxy.on("focus",ev=>mod.$input.focus())})),mod.inputClassObserver.observe(mod.$input[0],{attributes:!0,attributeFilter:["class"]}),mod.$input.on("input",ev=>mod.proxyValueChanged()),mod.proxyValueChanged()))}resolve()},setProductTileBinding(){this.$iconProductRemove=this.$(".js-icon-product-remove"),this.$productTile=this.$(".js-product-tile"),this.$iconProductRemove.on("click",()=>{this.clearProductData(),this.hideManufacturingWarningMessage()})},showAdditionalFields(){this.$ocrFieldFd.val()&&this.$ocrFieldFd.removeClass("hidden"),this.$ocrFieldZnr.val()&&this.$ocrFieldZnr.removeClass("hidden")},hideAdditionalFields(){this.config.hideAdditionalFields&&(this.$ocrFieldZnr[0].hasAttribute("required")||(this.$ocrFieldZnr.addClass("hidden"),this.$serialNumberLabel.addClass("hidden")),this.$ocrFieldFd[0].hasAttribute("required")||(this.$ocrFieldFd.addClass("hidden"),this.$fdNumberLabel.addClass("hidden")))},clearProductData(withoutEnr){this.$productTile.addClass("hidden"),this.$typeplateScannerArea.removeClass("hidden"),withoutEnr||this.$input.val("").trigger("change").trigger("focusout"),this.$ocrFieldPurchaseDate.val("").trigger("change").trigger("focusout"),this.$ocrFieldFd.val("").trigger("change").trigger("focusout"),this.$ocrFieldZnr.val("").trigger("change").trigger("focusout"),this.hideAdditionalFields()},getProductTile(){if(this.containerUid=this.$(".js-containerUid").val(),this.$input.val().length>=(this.config.getproducttileMinlength?parseInt(this.config.getproducttileMinlength):6)){const request=T.Utils.startAjaxRequest(!1,{url:this.config.getproducttileUrl?this.config.getproducttileUrl:"",dataType:"html",dataRendering:!0,data:{eNumber:this.$input.val(),containerUid:this.containerUid},method:"GET"});request&&request[0].done(response=>{response&&(this.setProductTileBinding(),this.$typeplateScannerArea.addClass("hidden"))}).fail(()=>{console.error("An error occured by request")})}},showManufacturingWarningMessage(){this.$manufacturingWarningAlert.removeClass("hidden")},hideManufacturingWarningMessage(){this.$manufacturingWarningAlert.addClass("hidden")},checkManufacturingMessage(){if(this.$input.val().length>=(this.config.checkmanufacturingmessageMinlength?parseInt(this.config.checkmanufacturingmessageMinlength):6)&&this.config.checkmanufacturingmessageUrl){const request=T.Utils.startAjaxRequest(!1,{url:this.config.checkmanufacturingmessageUrl,dataType:"json",data:{eNumber:this.$input.val()},method:"GET"});request&&!$.isEmptyObject(request)&&request[0].done(response=>{response.showManufacturingWarningMessage&&this.showManufacturingWarningMessage()}).fail(()=>{console.error("An error occured by request")})}},adjustLayerOffsetToFormRow(){const rowPosition=this.$ctx.closest(".form-row").position(),modPosition=this.$ctx.position();this.layerOffsetPosition=modPosition.left-rowPosition.left,this.$layer.css({left:`-${this.layerOffsetPosition}px`})},adjustLayerWidthToFormRow(){const rowWidth=this.$ctx.closest(".form-row").width();this.$layer.css({"min-width":`${rowWidth}px`,width:`${rowWidth}px`})},bindKeyboardEvents(){const mod=this;mod.eventsBound||($(document).on("keydown",$.proxy(mod.onKeyPress,mod)),mod.eventsBound=!0)},checkAjaxCallState(){const ajaxCallCacheState=this.getAjaxCallCacheState();ajaxCallCacheState!==this.ajaxCallCacheState&&(this.ajaxCallCacheState=ajaxCallCacheState,this.debounceGetSuggestionData())},closeLayer(){this.$layer.addClass("hidden"),this.$(".suggestlayer-results-row :input").prop("disabled",!0),this.unbindKeyboardEvents()},getAjaxCallCacheState(){return this.$input.val()},getAjaxRequestFormData:()=>null,getSearchKeys(){const $form=this.$ctx.find("[data-searchkey]");return 0===$form.length?[]:$form.data("searchkey").replace(RegExp(" ","g"),"").split(",")},getSuggestionData(){const mod=this,request=T.Utils.startAjaxRequest(mod.$form.data("ajax-id"),{},mod.getAjaxRequestFormData());return!(!request||$.isEmptyObject(request))&&request[0].done(function(response){mod.resultList=response,mod.validate(),mod.suggestLayerUpdate=!0,mod.$ctx.hasClass("js-emit-suggestion-data")&&response&&mod._events.emit("suggestionData",response)})},openLayer(){const mod=this;mod.ajaxEnabled&&mod.checkAjaxCallState(),this.$(".suggestlayer-results-row :input").prop("disabled",!1),this.$layer.removeClass("hidden"),this.bindKeyboardEvents()},proxyValueChanged(){const mod=this;mod.$inputProxy&&mod.$inputProxy.length>0&&(mod.$inputProxy.val(mod.$input.val()),mod.$input.toggleClass(mod.stateclass.empty,""===mod.$input.val()),mod.$inputProxy.toggleClass(mod.stateclass.empty,""===mod.$input.val()))},resetCurrentSelection(){const mod=this;mod.$currentSelectedItem&&(mod.$currentSelectedItem.removeClass("state-current"),mod.$currentSelectedItem=!1)},onSearchSubmit(ev){this.ajaxEnabled&&$(ev.currentTarget).find(`[data-t-id="${this.id}"]`)&&(ev.preventDefault(),this.submitSearch())},submitSearch(){const mod=this;mod.proxyValueChanged();const searchKeys=mod.getSearchKeys(),searchQuery=mod.$input.val(),searchAj
7axId=mod.$ctx.find("[data-ajax]").data("ajax-id");searchQuery.length&&searchKeys.length&&mod._events.emit("searchByKeys",searchKeys,mod.id,searchQuery,searchAjaxId)},toggleErrorState(toggle){(toggle=!this.$input.is(".is-empty")&&toggle)?this.$input.addClass("has-confirm-error"):this.$input.removeClass("has-confirm-error")},unbindKeyboardEvents(){const mod=this;mod.eventsBound&&($(document).off("keydown",$.proxy(mod.onKeyPress,mod)),mod.eventsBound=!1)},validate(){const mod=this;if(mod.resetCurrentSelection(),mod.proxyValueChanged(),mod.clientValidation){const val=mod.$input.val();for(let obj of mod.resultList)if(obj.value.toUpperCase()===val.toUpperCase())return mod.$submit.removeAttr("disabled"),mod.$input.attr("data-is-valid",!0),mod.isValid=!0,void(1===mod.resultList.length&&mod.closeLayer());mod.$input.attr("data-is-valid",!1),mod.$submit.attr("disabled","disabled"),mod.isValid=!1}},onBlurInput(){const mod=this;return setTimeout(function(){mod.$input.is(":focus")||mod.closeLayer(),mod.clientValidation?mod.toggleErrorState(!mod.isValid):mod.toggleErrorState(!1)},200)},onChangeInput(){const term=this.$input.val();this.hideManufacturingWarningMessage(),0===term.length&&this.clearProductData(!0),this.$form.hasClass("js-spareparts-search")||(this.debounceHandleCheckManufacturingMessageAndGetProductTile(),term.length>=this.inputAjaxDelay?(this.openLayer(),this.$clear.removeClass("hidden")):(this.closeLayer(),this.$clear.addClass("hidden"),this.resetCurrentSelection()),term.length>=this.inputAjaxDelay?(this.openLayer(),this.$clear.removeClass("hidden")):(this.closeLayer(),this.$clear.addClass("hidden"),this.resetCurrentSelection()),this.validate())},onChangeOption(ev){const mod=this;this._getValueFromSuggestionOption(ev.currentTarget,value=>{mod.$input.val(value),mod.proxyValueChanged(),mod._events.emit("updateProxyValue"),this.validate()})},onClickClear(ev){this.$input.val(""),this.$input.addClass("is-empty"),this.onChangeInput(),this.toggleErrorState(!1)},onFocusInput(){const mod=this,term=this.$input.val();mod.$form.hasClass("js-spareparts-search")||(!mod.suggestLayerUpdate&&mod.ajaxEnabled?term.length>=mod.inputAjaxDelay&&(mod.openLayer(),mod.$clear.removeClass("hidden"),mod.validate()):(term.length>=mod.inputAjaxDelay&&mod.openLayer(),this.toggleErrorState(!1)))},onHideInputError(data){const mod=this;data.$ctx.find(`[data-t-id="${mod.id}"]`)&&mod.$errorMessage.hide()},onKeydownInput(ev){13!==ev.keyCode||this.isValid||this.$currentSelectedItem||ev.preventDefault()},onKeyPress(ev){const mod=this;switch(ev.which){case 13:if(mod.$currentSelectedItem)return ev.preventDefault,mod.onPickCurrent(),!1;break;case 38:return ev.preventDefault,mod.onSelectPrevious(),!1;case 40:return ev.preventDefault,mod.onSelectNext(),!1}},onLayerHover(){this.resetCurrentSelection()},onPickCurrent(){this.$currentSelectedItem.find(".a-formlabel").trigger("click"),this.resetCurrentSelection()},onSelectNext(){const mod=this,options=mod.$ctx.find(".js-suggestlayer-results-row");if(options.length>0){let $next;mod.$currentSelectedItem?($next=mod.$currentSelectedItem.next()).length>0&&(mod.$currentSelectedItem.removeClass("state-current"),$next.addClass("state-current"),mod.$currentSelectedItem=$next):(($next=$(options[0])).addClass("state-current"),mod.$currentSelectedItem=$next)}},onSelectPrevious(){const mod=this;if(mod.$ctx.find(".js-suggestlayer-results-row").length>0&&mod.$currentSelectedItem){const $prev=mod.$currentSelectedItem.prev();$prev.length>0?(mod.$currentSelectedItem.removeClass("state-current"),$prev.addClass("state-current"),mod.$currentSelectedItem=$prev):mod.resetCurrentSelection()}},onShowInputError(data){const mod=this;data.$ctx.find(`[data-t-id="${mod.id}"]`)&&mod.$errorMessage.show()},onTriggerSearch(data){const mod=this;data.$ctx.find(`[data-t-id="${mod.id}"]`)&&(mod.$input.val(data.query),mod._events.emit("updateProxyValue"),mod.submitSearch())},_getValueFromSuggestionOption(radioOption,cb){"function"==typeof cb&&cb(radioOption.value),this.$input.trigger("input")}})}(jQuery),function($){T.Module.SearchHeader=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.jumpToAnchor=this.$ctx.data("jump-to-anchor"),$(document).on("searchheader:jumptoanchor",()=>{this.jumpToAnchor&&document.querySelector("#"+this.jumpToAnchor).scrollIntoView()}),resolve()}})}(jQuery),function($){T.Module.SearchInput=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$inputField=this.$(".js-search-input"),this.$resetButton=this.$(".js-reset-button"),this.$suggestLayer=this.$(".suggest-layer"),this.config=this.$ctx.data(),this.$quickLinksTemplate=$(".js-searchinput-quicklinks-template"),this.$quickLinksTemplateContent=this.$quickLinksTemplate.find("div[data-replace-id]"),this.hasSearchInputQuicklinks=this.$quickLinksTemplate.length>0&&$.trim(this.$quickLinksTemplateContent.html()).length>0,this.storageNamespace=this.$ctx.data("storage-namespace"),this.isModalPopUpActive=!1,this.$searchHistory=this.$ctx.find(".js-search-history"),this.$searchHistoryTemplate=this.$ctx.find("#search-history"),this.searchHistoryDotTemplate=this.$searchHistoryTemplate.length&&doT.template(this.$searchHistoryTemplate.html()),this.searchHistoryIsRendered=!1,this.$ctx.on("click",".js-reset-button",ev=>this.onClickResetButton(ev)),$("body").on("click",ev=>this.onClickOuterLayout(ev)),this.$ctx.on("focus input",".js-search-input",T.Utils.debounce(ev=>{this.onChangeInputField(ev)},250)),this.$ctx.on("blur",".js-search-input",ev=>this.onBlurInputField(ev)),this.$ctx.on("click",".js-search-input",ev=>this.onClickInputField(ev)),this.$ctx.on("click",".suggest-layer",ev=>this.onClickSuggestLayer(ev)),this.$ctx.on("submit",()=>this.searchSubmitHandler()),this.$suggestLayer.on("click",".suggest-layer",ev=>this.onClickSuggestLayer(ev)),this.$(".js-close-button").on("click",ev=>this.onClickCloseButton(ev)),this.$suggestLayer.on("keyup",$.proxy(this.onKeyup,this)),this._events.on("toggleMobileMenu",data=>this.onToggleMobileMenu(data)),this._events.on("toggleSearchForm",data=>this.onToggleSearchForm(data)),this._events.on("closeSearchForm.header",()=>this.onCloseSearchForm());const mod=this;return T.Utils.registerMq("lg",{match:()=>mod.$ctx.removeClass("hidden"),unmatch:()=>mod._events.emit("checkSearchState")}),resolve()},renderSearchHistory(){if(this.searchHistoryIsRendered)this.showSearchHistory();else{const sessionStorageItem=sessionStorage.getItem(this.storageNamespace);if(!sessionStorageItem)return;const sanitizedSearchTerms=[];
7JSON.parse(sessionStorageItem).reverse().forEach(searchTerm=>{sanitizedSearchTerms.push(T.Utils.sanitizeText(searchTerm))});const searchHistoryHTML=this.searchHistoryDotTemplate(sanitizedSearchTerms).replace(/\s{2,}/g," ");T.Utils.replaceContent(searchHistoryHTML,"replace",!1,()=>this.showSearchHistory())}},showSearchHistory(){this.searchHistoryIsRendered=!0,this.$searchHistory.removeClass("hidden")},hideSearchHistory(){this.$searchHistory.addClass("hidden")},searchSubmitHandler(){const searchTerm=this.$inputField.val();let savedSearchTerms=JSON.parse(sessionStorage.getItem(this.storageNamespace));savedSearchTerms?(savedSearchTerms.indexOf(searchTerm)>=0&&savedSearchTerms.splice(savedSearchTerms.indexOf(searchTerm),1),savedSearchTerms.length>5&&savedSearchTerms.shift()):savedSearchTerms=[],savedSearchTerms.push(searchTerm),sessionStorage.setItem(this.storageNamespace,JSON.stringify(savedSearchTerms))},buildCategoryURL:(entry,key,name)=>`"${key}":"${entry.split(/(_{2})+/).pop().slice(0,-1)+"?source="+name}"`,renderSearchFlyout(result){T.Utils.startInitialRendering(this.config.ajaxId,result);const inputValue=this.$inputField.val();return this.$suggestLayer.find(".js-showall-link").each(function(){let href=$(this).attr("href");return href=href.replace("searchkey",inputValue),$(this).attr("href",href)})},onBlurInputField(){if(!this.isModalPopUpActive)return setTimeout(function(){if(!this.$(".suggest-layer").hasClass("active"))return this.$(".suggest-layer").addClass("hidden")},150)},onClickInputField(){if(!this.hasSearchInputQuicklinks)return;this.$inputField.val().trim().length<3&&(T.Utils.replaceContent(this.$quickLinksTemplate.html()),this.$suggestLayer.removeClass("hidden"))},onBlurSuggestLayer(){return this.isModalPopUpActive=!1,this.$suggestLayer.removeClass("active")},onChangeInputField(){this.config;const inputValue=this.$inputField.val();if(this.$suggestLayer.removeClass("active"),inputValue.length?this.$resetButton.removeClass("hidden"):this.$resetButton.addClass("hidden"),this.isModalPopUpActive=!0,inputValue.trim().length>=3)return clearTimeout(this.openFlyoutTimeout),delete this.openFlyoutTimeout,this.hideSearchHistory(),this.startFlyoutRequest();{this.searchHistoryDotTemplate&&sessionStorage.getItem(this.storageNamespace)&&(this.renderSearchHistory(),this.$suggestLayer.removeClass("hidden")),this.hasSearchInputQuicklinks&&(T.Utils.replaceContent(this.$quickLinksTemplate.html()),this.$suggestLayer.removeClass("hidden"));const $separator=this.$ctx.find(".js-history-and-flyout-separator");this.searchHistoryDotTemplate&&sessionStorage.getItem(this.storageNamespace)&&this.hasSearchInputQuicklinks?$separator.show():$separator.hide()}this.isModalPopUpActive&&ally.is.visible(this.$suggestLayer)&&(this.modalPopupFocus=ally.maintain.tabFocus({context:this.$suggestLayer}))},startFlyoutRequest(){let k,partialRequest;if(this.config.noerrorflyout&&this.$suggestLayer.addClass("is-hidden"),null!=this.ajaxRequest)for(k in this.ajaxRequest)(partialRequest=this.ajaxRequest[k]).abort();if(this.currentResult={keywords:[],products:[],categories:[],custom:[],content:[],correctedSearchTerms:[],noresult:!0},this.ajaxRequest=T.Utils.startAjaxRequest(this.config.ajaxId),!this.ajaxRequest)return!1;for(k in this.ajaxRequest)(partialRequest=this.ajaxRequest[k]).partialName=k,partialRequest.done((result,status,jqXHR)=>this.addPartialResponse(jqXHR.partialName,result));return this.openFlyoutTimeout=setTimeout(()=>(this.$suggestLayer.removeClass("hidden"),delete this.openFlyoutTimeout))},addPartialResponse(name,response){const keywords=this.getSuggestions(response,"1keywords");for(let i in keywords){const v=keywords[i],keywordIndex=this.currentResult.keywords.indexOf(v.searchterm);-1===keywordIndex?this.currentResult.keywords.push({searchterm:v.searchterm,nrResults:v.nrResults}):this.currentResult.keywords[keywordIndex]+=v.nrResults}const products=this.getSuggestions(response,"2products");products.length&&this.currentResult.products.push({name:name,suggestions:products});let categories=this.getSuggestions(response,"3categories");for(var key in this.config.preRendering){var functionName=this.config.preRendering[key];const pattern=`"${key}"s*:s*"[^"]*"`,regex=new RegExp(pattern,"g"),newData=JSON.stringify(categories).replace(regex,$1=>{switch(functionName){case"buildCategoryURL":return this.buildCategoryURL($1,key,name)}});categories=JSON.parse(newData)}this.currentResult.categories=this.currentResult.categories.concat(categories);const custom=this.getSuggestions(response,"4custom");custom.length&&(this.currentResult.custom=this.currentResult.custom.concat(custom));const content=this.getSuggestions(response,"5content");content.length&&(this.currentResult.content=this.currentResult.content.concat(content));const responseHighlightMatches=response.suggestionGroups.map(suggestGroup=>suggestGroup.correctedSearchTerm).filter(correctedSearchTerm=>correctedSearchTerm);return this.currentResult.correctedSearchTerms=this.currentResult.correctedSearchTerms.c
7oncat(responseHighlightMatches),this.currentResult.noresult=0===this.currentResult.keywords.length&&0===this.currentResult.products.length&&0===this.currentResult.categories.length&&0===this.currentResult.content.length&&0===this.currentResult.custom.length,this.config.noerrorflyout&&(this.currentResult.noresult||this.$suggestLayer.removeClass("is-hidden")),this.renderSearchFlyout(this.currentResult)},getSuggestions(response,indexName){const suggestionGroup=response.suggestionGroups.find(element=>element.indexName===indexName);return suggestionGroup?suggestionGroup.suggestions:[]},onClickCloseButton(){return!1===this.$suggestLayer.hasClass("hidden")&&this.$suggestLayer.addClass("hidden"),this.isModalPopUpActive=!1,this.deInitFocusTrap(),this.$suggestLayer.removeClass("active")},onClickOuterLayout(e){if(!$(e.target).closest(this.$ctx).length&&$(e.target)!==this.$ctx)return this.isModalPopUpActive=!1,this.onClickCloseButton(e)},onClickResetButton(){if(this.$inputField[0].value="",this.isModalPopUpActive=!1,this.$suggestLayer.removeClass("active"),!1===this.$suggestLayer.hasClass("hidden"))return this.$suggestLayer.addClass("hidden"),this.onChangeInputField()},onClickSuggestLayer(){return this.$suggestLayer.addClass("active")},onCloseSearchForm(){return this.$ctx.addClass("hidden")},onToggleMobileMenu(data){if(data.isMenuOpen)return this.$ctx.addClass("hidden")},onToggleSearchForm(data){return data.isSearchActive?(this.$ctx.removeClass("hidden"),this.$inputField.focus()):this.$ctx.addClass("hidden")},onKeyup(ev){27===ev.keyCode&&(this.$suggestLayer.addClass("hidden"),this.deInitFocusTrap(),this.isModalPopUpActive=!1)},deInitFocusTrap(){this.modalPopupFocus&&this.modalPopupFocus.disengage()}})}(jQuery),function($){T.Module.SearchInputEmpathy=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$searchIcon=this.$ctx.find(".js-search-icon"),this.empathyType=this.$ctx.data("empathy-type"),"pilot"===this.empathyType?this.config=this.$ctx.data("config-pilot"):this.config=this.$ctx.data("config"),this.initArchetype(),$(document).on("cookieConsentUpdated",()=>{window.initX.consent="true"===window.cookie_settings.cookies_allow_third_party}),T.Commons.ScriptLoader.loadOnceEmpathy(this.config.empathyUrl),this.$searchIcon.on("click",()=>this.openArchetype()),resolve()},initArchetype(){window.initX={instance:this.config.instance,env:this.config.env,scope:this.config.scope,lang:this.config.locale.split("_")[0],device:this.config.device,currency:this.config.currency,consent:this.config.consent,documentDirection:this.config.documentDirection,callbacks:{UserOpenXProgrammatically:()=>{},UserClickedResultAddToCart:productData=>this.handleUserClickedResultAddToCart(productData),NoResultsShowed:query=>this.handleNoResultsShowed(query),UserClickedAResultRating:productData=>{window.location.href=window.location.origin+productData.url+"#/Tabs=section-reviews"},SearchTaggingReceived:data=>{this.trackPageView(data)}},brand:this.config.brand,channel:this.config.channel,country:this.config.locale.split("_")[1],baseUrl:this.config.baseUrl,seoName:this.config.seoName,onlineDealerLocatorUrl:this.config.onlineDealerLocatorUrl,mockGraphqlResponse:this.config.mockGraphqlResponse,supportDetailUrl:this.config.supportDetailUrl,categoryPageRedirectUrl:this.config.categoryPageRedirectUrl}},trackPageView(data){const pageDimensions=T.Utils.getPageDimensions();jQuery.each(pageDimensions,(key,value)=>{"boolean"==typeof value&&(pageDimensions[key]=value.toString())});let valuesToTrack={event:"pageview",page_type:"SearchResults",page_url:window.location.href,page_country:pageDimensions.page_country,page_channel:pageDimensions.page_channel,page_brand:pageDimensions.page_brand,user_logged_in:pageDimensions.user_logged_in,page_language:pageDimensions.page_language};data&&(valuesToTrack.search_terms=data.params.q,valuesToTrack.search_result_count=Number(data.params.totalHits),valuesToTrack.search_spellcheck="true"===data.params.spellcheck,valuesToTrack.product_filter_filtered="true"===data.params.filtered),T.Utils.getLayout().trackValues("pageview",valuesToTrack)},handleUserClickedResultAddToCart(productData){this.trackAddToCart(productData);const request=T.Utils.startAjaxRequest(!1,{url:this.config.addToCartAjaxUrl,method:"POST",dataType:"html",dataRendering:!1}
7,{productCode:productData.identifier.value});return request[0].done(()=>this._events.emit("cart:update")),request[0]},trackAddToCart(productData){T.Utils.getLayout().trackValues("shopping cart interaction",{products:[{product_id:productData.id,product_category:productData.catalog,product_availability:productData.stock,product_brand:productData.brand,product_price:productData.price.value,basket_interaction:"add",event:"shopping cart interaction"}]})},handleNoResultsShowed(){return T.Utils.startAjaxRequest(!1,{url:this.config.noResultsAjaxUrl,method:"GET",dataType:"html",dataRendering:!0})[0]},openArchetype(){window.X.search()}})}(jQuery),function($){T.Module.SearchInputRebrush=T.createModule({start(resolve,reject){return this.$ctx=$(this._ctx),this.config=this.$ctx.data(),this.$inputField=this.$ctx.find(".js-search-input"),this.$suggestLayer=this.$ctx.find(".suggest-layer"),this.$searchContent=this.$ctx.find(".search-content"),this.$closeButton=this.$ctx.find(".js-close-button"),this.$searchButton=this.$ctx.find(".js-search-icon"),this.$clearButton=this.$ctx.find(".clear-button"),this.$headerRebrush=this.$ctx.closest(".js-header-rebrush"),this.$dimmingLayout=this.$headerRebrush.find(".js-search-input-dimming-effect"),this.$menuItems=this.$headerRebrush.find(".menu"),this.$shoppingCart=this.$headerRebrush.find(".cart"),this.$mybrand=this.$headerRebrush.find(".mybrand.a-link"),this.$quickLinksTemplate=this.$ctx.find(".js-searchinput-quicklinks-template"),this.$quickLinksTemplateContent=this.$quickLinksTemplate.find("div[data-replace-id]"),this.hasSearchInputQuicklinks=this.$quickLinksTemplate.length&&$.trim(this.$quickLinksTemplateContent.html()).length>0,this.storageNamespace=this.$ctx.data("storage-namespace"),this.$searchHistory=this.$ctx.find(".js-search-history"),this.$searchHistoryTemplate=this.$ctx.find("#search-history"),this.searchHistoryDotTemplate=this.$searchHistoryTemplate.length&&doT.template(this.$searchHistoryTemplate.html()),this.searchHistoryIsRendered=!1,this.keywordsCombined=!1,this.searchterm="",this.prefillSearchInput(),this.$ctx.on("submit",()=>this.searchSubmitHandler()),this.$inputField.on("change input",T.Utils.debounce(()=>this.checkForInputFieldChanges(),250)),this.$closeButton.on("click",ev=>this.onClickCloseButton(ev)),this.$clearButton.on("click",()=>this.onClickClearButton()),this.$suggestLayer.on("keyup",ev=>this.onKeyup(ev)),this.$dimmingLayout.on("click",()=>this.closeSearchLayer()),this.$searchButton.on("click",()=>{this.openSearchInputFlyout(),this.hideMenuItems()}),this.$searchButton.on("keypress",ev=>this.onPressEnter(ev)),resolve()},prefillSearchInput(){const prefilledSearchTerm=this.$ctx.data("prefilled-search-term");prefilledSearchTerm&&this.$inputField.val(prefilledSearchTerm)},checkForInputFieldChanges(){if(this.$suggestLayer.hasClass("hidden"))return;this.$inputField.val().trim()!==this.searchterm&&(this.searchterm=this.$inputField.val().trim(),this.onChangeInputField())},onChangeInputField(){const inputValue=this.$inputField.val().trim(),storedHistory=sessionStorage.getItem(this.storageNamespace);if(inputValue.trim().length>=3)return this.hideSearchHistory(),void this.startFlyoutRequest();this.searchHistoryDotTemplate&&storedHistory&&this.renderSearchHistory(storedHistory),this.hasSearchInputQuicklinks&&(T.Utils.replaceContent(this.$quickLinksTemplate.html()),this.$searchContent.removeClass("is-hidden"));const $separator=this.$ctx.find(".js-history-and-flyout-separator");this.searchHistoryDotTemplate&&storedHistory&&this.hasSearchInputQuicklinks?$separator.show():$separator.hide()},renderSearchHistory(storedHistory){if(this.searchHistoryIsRendered)return void this.showSearchHistory();const sanitizedSearchTerms=[];JSON.parse(storedHistory).reverse().forEach(searchTerm=>{sanitizedSearchTerms.push(T.Utils.sanitizeText(searchTerm))});const searchHistoryHTML=this.searchHistoryDotTemplate(sanitizedSearchTerms).replace(/\s{2,}/g," ");T.Utils.replaceContent(searchHistoryHTML,"replace",!1,()=>this.showSearchHistory())},startFlyoutRequest(){let k,partialRequest;if(this.config.noerrorflyout&&this.$searchContent.addClass("is-hidden"),null!=this.ajaxRequest)for(k in this.ajaxRequest)(partialRequest=this.ajaxRequest[k]).abort();if(this.currentResult={keywords:[],products:[],sortedProducts:[],categories:[],custom:[],content:[],correctedSearchTerms:[],highlights:[this.$inputField.val()],noresult:!0},this.ajaxRequest=T.Utils.startAjaxRequest(this.config.ajaxId),this.ajaxRequest)for(k in this.ajaxRequest)(partialRequest=this.ajaxRequest[k]).partialName=k,partialRequest.done((result,status,jqXHR)=>this.addPartialResponse(jqXHR.partialName,result))},addPartialResponse(name,response){this.renderKeywords(response),this.renderProducts(name,response),this.renderCategories(name,response),this.renderCustom(response),this.renderContent(response),this.currentResult.noresult=0===this.currentResult.keywords.length&&0===this.currentResult.products.length&&0===this.currentResult.categories.length&&0===this.currentResult.content.length&&0===this.currentResult.custom.length,this.config.noerrorflyout&&(this.currentResult.noresult||this.$searchContent.removeClass("is-hidden")),this.sortKeywordsByAmountOfRe
7sults();const correctedSearchTerms=response.suggestionGroups.map(suggestGroup=>suggestGroup.correctedSearchTerm).filter(correctedSearchTerm=>correctedSearchTerm),responseHighlightMatches=response.suggestionGroups.map(suggestGroup=>suggestGroup.correctedSearchTerm).filter(highlight=>highlight&&!this.currentResult.highlights.includes(highlight));this.currentResult.correctedSearchTerms=this.currentResult.correctedSearchTerms.concat(correctedSearchTerms),this.currentResult.highlights=this.currentResult.highlights.concat(responseHighlightMatches),this.renderSearchFlyout(this.currentResult),this.currentResult.highlights.forEach(highlight=>this.boldifySearchTermInResults(highlight)),this.$suggestLayer.hasClass("active")&&this.$inputField.focus()},isMultiCatalog(){const catalogs=this.$ctx.data("ajax"),catalogProduct=catalogs.url.product,catalogShop=catalogs.url.shop;return!(!catalogProduct||!catalogShop)},renderKeywords(response){const keywords=this.getSuggestions(response,"1keywords");for(let i in keywords){const v=keywords[i];let replaceExisting=!1;for(const keyword in this.currentResult.keywords)this.currentResult.keywords[keyword].searchterm==v.searchterm&&(this.currentResult.keywords[keyword].nrResults+=v.nrResults,replaceExisting=!0,this.keywordsCombined=!0);replaceExisting||this.currentResult.keywords.push({searchterm:v.searchterm,nrResults:v.nrResults})}},renderProducts(catalogname,response){const products=this.getSuggestions(response,"2products");products.length<=0||(this.currentResult.products.push({catalogname:catalogname,suggestions:products}),this.currentResult.sortedProducts=[{catalogname:"sortedProducts",suggestions:this.getCombinedSortedProducts()}])},getCombinedSortedProducts(){const mainCatalog=this.$ctx.data("main-request");let productsInSecond,leftEntries=5,combinedProducts=[];const nameregex=new RegExp('"productcode"s*:s*"[^"]*"',"g");for(let i=0;i<this.currentResult.products.length;i++)if(this.currentResult.products[i].catalogname===mainCatalog){for(let j=0;j<this.currentResult.products[i].suggestions.length;j++)if(leftEntries>0){let product=this.currentResult.products[i].suggestions[j];this.isMultiCatalog()&&(product=this.addPrefixToProduct(product,nameregex,this.currentResult.products[i].catalogname)),combinedProducts.push(product),leftEntries--}}else productsInSecond=this.currentResult.products[i].suggestions.length;if(productsInSecond>leftEntries&&leftEntries<2)for(;leftEntries<2;)combinedProducts.pop(),leftEntries++;for(let i=0;i<this.currentResult.products.length;i++)if(this.currentResult.products[i].catalogname!=mainCatalog)for(let j=0;j<this.currentResult.products[i].suggestions.length;j++)if(leftEntries>0){let product=this.currentResult.products[i].suggestions[j];this.isMultiCatalog()&&(product=this.addPrefixToProduct(product,nameregex,this.currentResult.products[i].catalogname)),combinedProducts.push(product),leftEntries--}return combinedProducts},renderCategories(name,response){let categories=this.getSuggestions(response,"3categories");for(let key in this.config.preRendering){let functionName=this.config.preRendering[key];const pattern=`"${key}"s*:s*"[^"]*"`,regex=new RegExp(pattern,"g"),newData=JSON.stringify(categories).replace(regex,$1=>{if("buildCategoryURL"===functionName)return this.buildCategoryURL($1,key,name)});categories=JSON.parse(newData)}this.isMultiCatalog()&&(categories=this.addPrefixToCategories(name,categories),this.currentResult.categories=[]),this.currentResult.categories=this.currentResult.categories.concat(categories)},renderCustom(response){const custom=this.getSuggestions(response,"4custom");custom.length&&(this.currentResult.custom=this.currentResult.custom.concat(custom))},renderContent(response){const content=this.getSuggestions(response,"5content");content.length&&(this.currentResult.content=this.currentResult.content.concat(content))},getSuggestions(response,indexName){const suggestionGroup=response.suggestionGroups.find(element=>element.indexName===indexName);return suggestionGroup?suggestionGroup.suggestions:[]},sortKeywordsByAmountOfResults(){this.keywordsCombined&&this.currentResult.keywords.sort(function(a,b){return b.nrResults-a.nrResults})},onClickClearButton(){this.$inputField[0].value="",this.searchterm=" ",this.$inputField.change(),this.$inputField.focus()},navigateOnArrowKeys(e){if(!this.isKeyArrowUp(e)&&!this.isKeyArrowDown(e))return;const $allFocusable=this.$ctx.find(".js-keyboard-accessible").not(".hidden *, .hidden"),$currentFocused=$allFocusable.filter(":focus"),currentFocusedIndex=$allFocusable.index($currentFocused.first());if(this.isKeyArrowUp(e)){if(0===currentFocusedIndex)return void this.$inputField.focus();const prev=currentFocusedIndex<0?$allFocusable.length-1:currentFocusedIndex-1;$allFocusable.eq(prev).focus()}else if(this.isKeyArrowDown(e)){if(currentFocusedIndex>=$allFocusable.length-1)return void this.$inputField.focus();const next=currentFocusedIndex+1;$allFocusable.eq(next).focus()}else;},onKeyup(e){this.closeOnEscape(e),this.navigateOnArrowKeys(e)},onPressEnter(e){13===e.which&&this.openSearchInputFlyout()},openSearchInputFlyout(){this.compensateScrollbarWidth(!0),this.showSuggestLayer(),this.pageDimmingEffect(!0),this.$inputField.focus(),this.closeHeaderWhenOpen(),""==this.$inputField.val().trim()&&this.initFlyoutContent()},hideMenuItems(){this.$menuItems.children().hide(),this.$shoppingCart.hide(),this.$mybrand.hide(),this.$searchButton.css("opacity","0")},showMenuItems(){this.$menuItems.children().show(),this.$shoppingCart.show(),this.$mybrand.show(),this.$searchButton.css("opacity","1")},closeHeaderWhenOpen(){$(".fly-out-container").hasClass("active")&&($(".fly-out-container").removeClass("active"),$(".a-menu").removeClass("open"),this.$headerRebrush.removeClass("open"))},initFlyoutContent(){const storedHistory=sessionStorage.getItem(this.storageNamespace);this.searchHistoryDotTemplate&&storedHistory&&this.renderSearchHistory(storedHistory),this.hasSearchInputQuicklinks&&T.Utils.replaceContent(this.$quickLinksTemplate.html()),this.addKeyboardNavigationToQuicklinks()},closeOnEscape(e){this.isKeyEscape(e)&&this.closeSearchLayer()},onClickCloseButton(){this.closeSearchLayer()},closeSearchLayer(){this.$suggestLayer.addClass("hidden"),this.pageDimmingEffect(!1),this.$suggestLayer.removeClass("active"),$("body").removeClass("no-scroll"),this.compensateScrollbarWidth(!1),this.showMenuItems()},pageDimmingEffect(show){const viewport=T.Utils.getViewport();!0===show&&"desktop"===viewport?(this.$dimmingLayout.addClass("active"),$("body").addClass("no-scroll")):this.$dimmingLayout.removeClass("active")}
7,compensateScrollbarWidth(removeScrollbarForFlyout){if(!0===removeScrollbarForFlyout){const scrollbarWidth=window.innerWidth-document.body.clientWidth;document.body.style.paddingRight=`${scrollbarWidth}px`}else document.body.style.paddingRight="0"},showSearchHistory(){this.$searchHistory.addClass("search-history-minwidth"),this.searchHistoryIsRendered=!0,this.$searchHistory.removeClass("hidden")},hideSearchHistory(){this.$searchHistory.removeClass("search-history-minwidth"),this.$searchHistory.addClass("hidden")},searchSubmitHandler(){const searchTerm=this.$inputField.val();let savedSearchTerms=JSON.parse(sessionStorage.getItem(this.storageNamespace));savedSearchTerms?(savedSearchTerms.indexOf(searchTerm)>=0&&savedSearchTerms.splice(savedSearchTerms.indexOf(searchTerm),1),savedSearchTerms.length>5&&savedSearchTerms.shift()):savedSearchTerms=[],savedSearchTerms.push(searchTerm),sessionStorage.setItem(this.storageNamespace,JSON.stringify(savedSearchTerms))},buildCategoryURL:(entry,key,name)=>`"${key}":"${entry.split(/[__]+/).pop().slice(0,-1)+"?source="+name}"`,renderSearchFlyout(result){T.Utils.startInitialRendering(this.config.ajaxId,result);const inputValue=this.$inputField.val();return this.$suggestLayer.find(".js-showall-link").each(function(){let href=$(this).attr("href");return href=href.replace("searchkey",inputValue),$(this).attr("href",href)})},showSuggestLayer(){this.$suggestLayer.removeClass("hidden")},activateSuggestLayer(){this.$suggestLayer.addClass("active")},boldifySearchTermInResults(searchphrase){const strRegExp=new RegExp(searchphrase,"ig");this.$suggestLayer.find(".products-item").find(".text").each(function(i,text){let contenthtml=$(this).html();const highlighttext=contenthtml.match(strRegExp);highlighttext&&(contenthtml=contenthtml.replace(strRegExp,'<span class="searchterm-highlight">'+highlighttext[0]+"</span>")),$(this).html(contenthtml)})},addKeyboardNavigationToQuicklinks(){this.$ctx.find(".quicklink").addClass("js-keyboard-accessible")},addPrefixToProduct(product,nameregex,catalogname){return product=JSON.stringify(product).replace(nameregex,$1=>this.buildCatalogPrefix($1,catalogname,'"productcode":"')),product=JSON.parse(product)},addPrefixToCategories(catalogName,categories){const nameregex=new RegExp('"mlValue"s*:s*"[^"]*"',"g"),updatedCatNames=JSON.stringify(categories).replace(nameregex,$1=>this.buildCatalogPrefix($1,catalogName,'"mlValue":"'));return categories=this.currentResult.categories.concat(JSON.parse(updatedCatNames))},buildCatalogPrefix(entry,name,pattern){const prefixProduct=this.$ctx.data("cat-prefix-product"),prefixShop=this.$ctx.data("cat-prefix-shop");let resultEntry="";switch(name){case"product":resultEntry=prefixProduct+" > ";break;case"shop":resultEntry=prefixShop+" > "}return entry.replace(pattern,pattern+resultEntry)},onClickSuggestLayer(){return this.$suggestLayer.addClass("active")},isKeyArrowUp:e=>38===e.which,isKeyArrowDown:e=>40===e.which,isKeyEscape:e=>27===e.which})}(jQuery),function($){T.Module.SearchResultCategories=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$links=this.$ctx.find(".searchresultcategory-link"),this.sectionsToObserve=[],this.currentSection=null,this.trackingTimerDuration=8e3,this.trackingTimer=null,this.trackingTimerActive=!0,this.getSectionsToObserve(),this.setupScrollListener(),this.$links.on("click",e=>{this.trackingTimerActive=!1,this.fireTrackingEvent(e.target)}),resolve()},getSectionsToObserve(){let sectionsToObserve=[];this.$links.each((index,link)=>{const sectionId=$(link).attr("href");sectionsToObserve.push($(sectionId))}),this.sectionsToObserve=sectionsToObserve},setupScrollListener(){$(window).on("scroll",T.Utils.debounce(()=>{const currentSection=this.getCurrentSectionInViewPort();this.currentSection!==currentSection&&(this.currentSection=currentSection,this.trackingTimerActive&&this.setTrackingTimer(),this.trackingTimerActive=!0)},200))},fireTrackingEvent(link){let pageDimensions=T.Utils.getPageDimensions();const locationWithoutHash=window.location.href.split("#")[0],targetHref=$(link).attr("href");jQuery.each(pageDimensions,(key,value)=>{"boolean"==typeof value&&(pageDimensions[key]=value.toString())});for(const key in pageDimensions)key.includes("product_filter")&&delete pageDimensions[key];let productFilterDimensions={};const filterTrackingModuleId=$(targetHref).parent().find('[data-t-decorator*="FilterTracking"]').data("t-id");if(filterTrackingModuleId){productFilterDimensions=this._sandbox.getModuleById(filterTrackingModuleId).trackingData}const valuesToTrack={...pageDimensions,...productFilterDimensions,event:"pageview",search_result_count:parseInt(link.dataset.trackingResultCount,10),page_name:link.dataset.trackingName,page_url:locationWithoutHash+targetHref,search_vendor_tagging_request:link.dataset.trackingSearchVendorTaggingRequest};T.Utils.getLayout().trackValues("pageview",valuesToTrack)},getCurrentSectionInViewPort(){const distanceTop=window.scrollY+window.innerHeight/2;
7for(let i=0;i<this.sectionsToObserve.length-1;i++){const section=this.sectionsToObserve[i],nextSection=this.sectionsToObserve[i+1];if(distanceTop>section.offset().top&&distanceTop<=nextSection.offset().top)return section}return this.sectionsToObserve[this.sectionsToObserve.length-1]},setTrackingTimer(){this.trackingTimer&&clearTimeout(this.trackingTimer),this.trackingTimer=setTimeout(()=>{this.$links.each((index,link)=>{$(link).attr("href")==="#"+this.currentSection.attr("id")&&this.fireTrackingEvent(link)})},this.trackingTimerDuration)}})}(jQuery),function($){T.Module.SearchResultPromotionTeaser=T.createModule({start(resolve){return this.$ctx=$(this._ctx),resolve()}})}(jQuery),function($){T.Module.SelectedPressPicture=T.createModule({start(resolve){const mod=this;return mod.$ctx=$(mod._ctx),mod.id=mod.$ctx.data("picture-id"),mod.downloadId=mod.$ctx.data("download-id"),mod.pictureData=mod.$ctx.data("item"),mod.$image=mod.$ctx.find(".js-selected-picture-image"),mod.$unselect=mod.$(".js-unselect"),mod.onClickUnselect=$.proxy(mod.onClickUnselect,mod),mod.$unselect.on("click",mod.onClickUnselect),mod.$image.on("click",$.proxy(mod.onImageClicked,mod)),resolve()},sync(){},onClickUnselect(evt){return evt.preventDefault(),this._events.emit("press:pictureRemove",{imageId:[this.downloadId]})},onImageClicked(){const mod=this,$teaserLayerContent=$(".js-press-overlay-content").first(),$teaserElement=$teaserLayerContent.closest(".m-layer"),$teaser=mod._sandbox.getModuleById($teaserElement.data("t-id")),template=$(".tpl-press-picture-gallery-layer").html();if(null!=$teaser){const renderedTemplate=$(doT.template(template)({items:[mod.pictureData],selected:!0}));$teaserLayerContent.html(renderedTemplate);const newModules=$teaserLayerContent.find("[data-t-name]");return T.Utils.application._sandbox.addModules(newModules.first()[0]),$teaser.showLayer(null,!1)}}})}(jQuery),function($){T.Module.ServiceTeaser=T.createModule({start(resolve){const mod=this;return mod.$serviceTeaser=$(mod._ctx),mod.$content=mod.$serviceTeaser.find(".content"),mod.$serviceTeaser.parents(".g-layout-fourth").length&&mod.$content.addClass("content-fullwidth"),resolve()},sync(){}})}(jQuery),function($){T.Module.SideDrawerFlyInLayer=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$overlay=this.$ctx.find(".js-fly-in-layer-overlay"),this.$closeBtn=this.$ctx.find(".js-close-button"),this.$stickyHeader=$(".js-nav-sticky"),this.$stickyHeaderThree=$(".js-header-rebrush"),this.sidedrawerTracking(),this.$overlay.on("click",()=>this.hideLayer()),this.$closeBtn.on("click",()=>this.hideLayer()),this._events.on("viewportChanged",()=>this.hideLayer()),this.$ctx.addClass("is-open"),$("body").addClass("scroll-disabled"),this.$overlay.removeClass("hidden"),this.$stickyHeader.addClass("hidden"),this.$stickyHeaderThree.addClass("hidden"),resolve()},hideLayer(){this._events.emit("sidedrawer.close",this.$ctx),this.$ctx.removeClass("is-open"),$("body").removeClass("scroll-disabled"),this.$overlay.addClass("hidden"),this.$stickyHeader.removeClass("hidden"),this.$stickyHeaderThree.removeClass("hidden")},sidedrawerTracking(){T.Utils.getLayout().trackValues("add to cart sidedrawer open",{})}})}(jQuery),function($){T.Module.SideDrawerFlyInLayerInvoice=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$ctx.find(".js-alert").hide(),this.$ctx.find(".js-alert").find(".js-text").html(),this._events.on("sidedrawer.close",ev=>{this.$ctx.find(".js-alert").hide(),this.$ctx.find(".js-alert").find(".js-text").html()}),this.$ctx.find(".js-file-tile").on("click",ev=>{ev.preventDefault(),this.$ctx.find(".js-alert").hide(),this.$ctx.find(".js-alert").find(".js-text").html(),this._events.emit("loader:open",{loaderType:"area",loaderArea:$(ev.currentTarget),$trigger:this.$ctx}),T.Utils.startAjaxRequest(!1,{url:$(ev.currentTarget).data("ajaxUrl"),method:"GET",dataType:"json",dataRendering:!1})[0].done(response=>{if(response.valid){this._events.emit("tracking:generic",{trackType:"download invoice link success",eventType:"click"});const url=T.Utils.getUrlforBase64Pdf(response.base64PDF);this.$ctx.find(".js-hidden-link").attr("href",url),this.$ctx.find(".js-hidden-link").attr("download",response.filename),this.$ctx.find(".js-hidden-link")[0].click(),URL.revokeObjectURL(url)}else{this._events.emit("tracking:generic",{trackType:"download invoice link error",eventType:"click"});const validationMessage=response.errorMessage;this.$ctx.find(".js-alert").show(),this.$ctx.find(".js-alert").find(".js-alert-text").html(validationMessage)}this._events.emit("loader:close",{$trigger:this.$ctx})})}),resolve()}})}(jQuery),function($){T.Module.SignIn=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this._selector={signInForm:".js-ajax-request",loginForm:".js-login-form",lastInput:".js-last-input",customErrorMessage:".js-custom-error-message",sticky:"header div.nav-sticky",loginName:".js-loginname",tokenInput:".js-recaptcha-response"},this.elm={$ajaxForm:$(this._selector.signInForm,this.$ctx),$loginForm:$(this._selector.loginForm,this.$ctx),$lastInput:$(this._selector.lastInput,this.$ctx),$loginName:$(this._selector.loginName,this.$ctx),$tokenInput:$(this._selector.tokenInput,this.$ctx)},this.isSynced=!1,this.signInRequestArray=this.elm.$ajaxForm.data("ajaxId"),this.stashCustomError=this.getCustomError(this.elm.$lastInput),this.loginTrackName="MyAccount login click",this.loginFormScroll=$.proxy(this.loginFormScroll,this),this._events.on("t.sync",()=>this.sync()),this._events.on("signinstoreselector:select",ev=>this.onStoreSelect(ev)),this._events.on("handleSignInAjax",data=>this.onSubmitFormAjax(data.ajaxId,data.ajaxConfig)),this.elm.$ajaxForm.on("submit",(ev,ajaxId,config)=>this.onSubmitForm(ev,ajaxId,config)),this.elm.$loginForm.on("submit",ev=>this.onSubmitLoginForm(ev)),resolve()},sync(){if(!this.isSynced){this.isSynced=!0;let that=this,signinAnchor=window.location.hash;if(signinAnchor.length>0&&signinAnchor.split("#")[1]===this.$ctx.attr("id")&&$(window).on("hashchange",function(){that.loginFormScroll()}),"true"===localStorage.getItem("manualRedirect")){this.elm.$loginName.val(localStorage.getItem("signInUserName")),(this.handleFormError(localStorage.getItem("invalidLoginMessage"))||!1)&&T.Utils.scrollToTop(this.$ctx),T.Utils.localStorageSetItem("manualRedirect","false")}}},loginFormScroll(){setTimeout(()=>{this.elm.$loginName.focus(),$(this._selector.sticky).removeClass("is-active")},100)},checkforCondition:result=>result.errorMessage&&result.captchaRequired?1:result.errorMessage&&!result.captchaRequired?2:!result.redirectURL&&result.possiblePointOfServices&&result.possiblePointOfServices.length<2?3:result.redirectURL?4:-1,getCustomError($input){const index=($input.data("fieldNr")||1)-1;return $input.parent().find(this._selector.customErrorMessage).eq(index).text()},handleFormError(text){const errorMessage=text||this.stashCustomError;return this.elm.$lastInput.trigger("setInputError",errorMessage),this.$ctx.is(":hidden")&&this._events.emit("signin:hiddenformerror"),!0},handleSignInResponses(request){if(this.preventSubmitRequest=!0,request){let hasError=!1;return request[0].done(result=>{let ajaxConfig,resultCondition=this.checkforCondition(result);if(result){switch(resultCondition){case 1:T.Utils.localStorageSetItem("signInUserName",this.elm.$loginName.val()),T.Utils.localStorageSetItem("invalidLoginMessage",result.errorMessage),T.Utils.localStorageSetItem("manualRedirect","true"),document.location.assign(result.redirectURL);break;case 2:hasError=this.handleFormError(result.errorMessage),this.preventSubmitRequest=!1;break;case 3:1===result.possiblePointOfServices.length&&(ajaxConfig={data:{uid:result.possiblePointOfServices[0].uid}}),this.preventSubmitRequest=!1,this.elm.$ajaxForm.trigger("submit",[this.signInRequestArray[1],ajaxConfig]);break;case 4:document.location.assign(result.redirectURL);break;default:this.preventSubmitRequest=!1}return!0}}).fail((xhr,ajaxOptions,thrownError)=>(hasError=this.handleFormError(),this.preventSubmitRequest=!1,!0)),hasError&&T.Utils.scrollToTop(this.$ctx),!0}},checkAllowSubmit:(allowSubmit,ev,handleSignInAjax,ajaxParams)=>allowSubmit,onStoreSelect(ev){return!this.preventSubmitRequest&&(this.handleSignInResponses(T.Utils.onAjaxControllerTriggered(ev,!0)),!0)},resetRecaptchaError(){this.elm.$tokenInput&&this.elm.$tokenInput.length>0&&this.elm.$tokenInput.removeClass("has-error")},onSubmitForm(ev,ajaxId,ajaxConfig){ev.preventDefault();const decorator=this.$ctx.data("t-decorator");if(this.preventSubmitRequest)return!1;if(decorator&&decorator.indexOf("GoogleRecaptcha")>-1){const handleSignInAjax=!0,ajaxParams={ajaxId:ajaxId||this.signInRequestArray[0],ajaxConfig:ajaxConfig};return this.resetRecaptchaError(),this.checkAllowSubmit(!0,ev,handleSignInAjax,ajaxParams),!0}this.onSubmitFormAjax(ajaxId,ajaxConfig)}
7,onSubmitFormAjax(ajaxId,ajaxConfig){const ID=ajaxId||this.signInRequestArray[0];return console.info("handleSignInResponse",ID,ajaxConfig),this.handleSignInResponses(T.Utils.startAjaxRequest(ID,ajaxConfig)),!0},onSubmitLoginForm(ev){return this._events.emit("tracking:generic",{trackType:this.loginTrackName,trackData:{user_login_name:this.elm.$loginName.val()}})}})}(jQuery),function($){T.Module.SignInStoreSelector=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this._selector={signInTrigger:".js-trigger-signin"},this._events.on("t.sync",()=>this.sync()),this._events.on("signin:hiddenformerror",data=>this.removeModule(data)),$(this._selector.signInTrigger,this.$ctx).on("click",ev=>this.onSelectStore(ev)),resolve()},sync(){this.isSynced||(this.isSynced=!0)},stop(){this.$ctx.remove()},removeModule(){return this._sandbox.removeModules(this._ctx)},onSelectStore(ev){return ev.preventDefault(),T.Utils.debounce(ev=>this._events.emit("signinstoreselector:select",ev),250)(ev)}})}(jQuery),function($){T.Module.Slide=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.clonedSlide=this.$ctx.hasClass("slick-cloned"),this.autoplayAllowed=!0,this.isTouch=!1,resolve()},isClonedSlide(){return this.clonedSlide},setSlider(slider,slideIndex){this.slider=slider,this.slideIndex=slideIndex},syncSlide(){return this.backgroundImage=this.$ctx.data("backgroundimage")},onBeforeChange($slide,currentSlide,nextSlide){return this._events.emit("slickSlider:onBeforeChange",{slide:$slide,currentSlide:currentSlide,nextSlide:nextSlide})},onAfterChange($slide,slick,currentSlide){return this._events.emit("slickSlider:onAfterChange",{slide:$slide,slick:slick,currentSlide:currentSlide})},onBeforeSlideIn(){if(null!=this.backgroundImage)return this._events.emit("backgroundimage:set",{src:this.backgroundImage})},onInitialSlide(){this.refreshSliderHeight()},onAfterSlideIn(){},onBeforeSlideOut(){this.refreshSliderHeight()},slideInitialized(){this.$ctx.attr("data-initialized",!0),this.hasSlider()&&this.slider.slideInitialized(this.slideIndex)},hasSlider(){return void 0!==this.slider&&null!==this.slider},refreshSliderHeight(){this.hasSlider()&&this.slider.refreshSliderHeight()},markSlideInitialized(){if(!this.$ctx||!this.$ctx.addClass){const fakeResolve=function(){};this.start(fakeResolve)}return this.$ctx.addClass("slide-initialized")},onNextSetBeforeShown($slides,enforce){},activateSlide($slide){this.$currentLayer=$slide.closest(".m-layer.is-active"),this.$zoomButtons=this.$currentLayer.find(".js-mediagalleryproduct-zoom-in, .js-mediagalleryproduct-zoom-out"),this.$zoomButtons.addClass("hidden")},isAutoplayAllowed(){return this.autoplayAllowed},setAutoplayAllowed(allowed){this.autoplayAllowed=allowed,this.slider.autoplayAllowed=allowed,this.slider.updateAutoplay()},setIsTouch(ev){return"touchstart"!==ev.type&&"touchend"!==ev.type||(this.isTouch=!0),this.isTouch},zoomOnMousemove(container,panzoomElement,ev,animate=!1){const panzoomElementHtmlEl=panzoomElement[0],{pageX:pointerX,pageY:pointerY}=ev,{top:imageContainerOffsetTop,left:imageContainerOffsetLeft}=container.offset(),pointerWithinImageContainerY=pointerY-imageContainerOffsetTop,scaledPointerPositionFromCenterX=2.8*(pointerX-imageContainerOffsetLeft-container.width()/2),scaledPointerPositionFromCenterY=2.8*(pointerWithinImageContainerY-container.height()/2),maxScaledOffsetFromCenterX=(2.8*panzoomElementHtmlEl.offsetWidth-panzoomElementHtmlEl.offsetWidth)/2,maxScaledOffsetFromCenterY=(2.8*panzoomElementHtmlEl.offsetHeight-panzoomElementHtmlEl.offsetHeight)/2,invertedMatrixX=-(scaledPointerPositionFromCenterX>=0?Math.min(scaledPointerPositionFromCenterX,maxScaledOffsetFromCenterX):Math.max(scaledPointerPositionFromCenterX,-maxScaledOffsetFromCenterX)),invertedMatrixY=-(scaledPointerPositionFromCenterY>=0?Math.min(scaledPointerPositionFromCenterY,maxScaledOffsetFromCenterY):Math.max(scaledPointerPositionFromCenterY,-maxScaledOffsetFromCenterY));panzoomElement.panzoom("setMatrix",[2.8,0,0,2.8,invertedMatrixX,invertedMatrixY],{silent:!0,animate:animate})}})}(jQuery),function($){null!=T.Utils&&T.Utils.registerContentInitializer(function(container){let slideElements;const $container=$(container);(slideElements=$container.is(".slide")?$container:$(container).find(".slide")).each(function(index,element){let slideDecorator;const jElement=$(element),firstChild=jElement.find("[data-t-name]:first");
7if(firstChild.length>0){const firstChildName=firstChild.data("t-name"),name=`Slide${firstChildName}`,decorator=firstChild.data("t-decorator");slideDecorator=name,"ImageHotspots"!==firstChildName&&"ImageOcr"!==firstChildName||(slideDecorator="SlideImage"),"SelectedPressPicture"===firstChildName&&(slideDecorator=`SlideImage,${slideDecorator}`),null!=decorator&&decorator.split(",").forEach(decoratorItem=>slideDecorator+=`,${name}${decoratorItem}`),firstChild.find(".m-video").length>0&&(slideDecorator+=",SlideVideo"),firstChild.hasClass("js-mediagalleryproduct-zoomimage")&&firstChild.hasClass("js-full-screen-layout")?slideDecorator+=",SlideImagePanzoomPDP":firstChild.hasClass("js-mediagalleryproduct-zoomimage")&&(slideDecorator+=",SlideImagePanzoom"),firstChild.hasClass("js-mediagalleryproduct-panzoom")&&(slideDecorator+=",SlidePanzoom")}null!=slideDecorator&&""!==slideDecorator||(slideDecorator="SlideGeneric"),jElement.attr("data-t-name","Slide"),jElement.attr("data-t-decorator",slideDecorator)})},!0),T.Module.Slider=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$slide=this.getCtx().find(".slide"),this.slickSlider=null,this.isActive="is-active",this.uniqueSlideId=0,this.autoplayAllowed=!0,void 0!==this.getCtx().data("adaptive-height")&&null!==this.getCtx().data("adaptive-height")||(this.refreshSliderHeight=T.Utils.debounce(this.refreshSliderHeight.bind(this),50)),this.$sliderControls=$(),this.$paginationNumberText=$(),this.$paginationDots=this.getCtx().find(".js-paginationdots");const $paginationNumber=this.getCtx().find(".js-number");$paginationNumber.length>0&&this.initPaginationNumber($paginationNumber);const $paginationArrows=this.getCtx().find(".js-arrows");$paginationArrows.length>0&&this.initPaginationArrows($paginationArrows),this.isPaginationTop=!!this.getCtx().find(".paginationarrowposition-top").length,this.helperClass={minimumHeight:"minimum-height",defaultHeight:"default-height"},this.getCtx().on("beforeChange",(event,slick,currentSlide,nextSlide)=>this.onBeforeChange(event,slick,currentSlide,nextSlide)),this.getCtx().on("afterChange",(event,slick,currentSlide)=>this.onAfterChange(event,slick,currentSlide)),this.synced=!1,this.startWasDone=!0,jQuery.each(this.initQueue||[],function(index,callback){callback()}),resolve()},getCtx(){return this.$ctx||(this.$ctx=$(this._ctx)),this.$ctx},setResponsiveConfig(viewport){this.slickSlider&&(this.slickSlider.slick("slickSetOption","slidesToShow",this.slidesToShow[viewport],!0),this.slickSlider.slick("slickSetOption","slidesToScroll",this.slidesToScroll[viewport]||this.slidesToShow[viewport],!0))},onViewportChanged(viewport){let $noCarouselMobile=this.$ctx.parent().hasClass("no-carousel-mobile");this.setResponsiveConfig(viewport),$noCarouselMobile&&"mobile"===viewport?this.slickSlider&&this.slickSlider.slick("unslick"):this.slickSlider&&this.slickSlider.slick("resize"),$noCarouselMobile||("mobile"===viewport?this.getCtx().find(".js-hidden-mobile").addClass("slick-cloned hidden-mobile"):this.getCtx().find(".js-hidden-mobile").removeClass("slick-cloned")),this.slickSlider&&this.initializeSlides()},delayPreStartCall(methodName,methodParameters){return!this.startWasDone&&(methodParameters=methodParameters||[],this.initQueue=this.initQueue||[],this.initQueue.push(function(){this[methodName].apply(this,methodParameters)}.bind(this)),!0)},init(config){if(this.delayPreStartCall("init",arguments))return;this.config=config,null!=this.config.$paginationNumber&&this.initPaginationNumber(this.config.$paginationNumber),null!=this.config.$paginationArrows&&this.initPaginationArrows(this.config.$paginationArrows),"number"==typeof this.config.slidesToShow&&(this.config.slidesToShow={mobile:this.config.slidesToShow,tablet:this.config.slidesToShow,desktop:this.config.slidesToShow}),this.slidesToShow=this.config.slidesToShow||{mobile:1,tablet:1,desktop:1},this.slidesToScroll=this.config.slidesToScroll||this.slidesToShow,this.removeHelperClass=!1,null!=this.config.minimumHeight?this.removeHelperClass=!this.config.minimumHeight:1===this.slidesToShow.desktop&&(this.removeHelperClass=!0);let focusOnSelect=!1;1===this.slidesToScroll.desktop&&1===this.slidesToScroll.tablet&&1===this.slidesToScroll.mobile||(focusOnSelect=!0),null!=this.config.focusOnSelect&&({focusOnSelect:focusOnSelect}=this.config),null!=this.getCtx().data("adaptive-height")&&(this.$sliderControls.addClass("adaptive-height"),this.config.adaptiveHeight=this.getCtx().data("adaptive-height")),this.clonedId=0;const viewport=T.Utils.getViewport();this.slickProperties={useTransform:!T.Utils.isIE(),appendArrows:this.$paginationArrows,appendDots:this.$paginationDots,adaptiveHeight:this.config.adaptiveHeight||!1,arrows:this.config.arrows||!0,autoplay:this.config.auto
7play||!1,autoplaySpeed:this.config.autoplaySpeed||3e3,centerPadding:"0px",centerMode:this.config.centerMode||!1,dots:this.hasDots(),dotsClass:this.config.dotsClass,fade:this.config.fade||!1,useCSS:this.config.useCSS||!0,cssEase:"linear",initialSlide:this.config.initialSlide||0,nextArrow:this.$nextArrow,prevArrow:this.$prevArrow,infinite:this.config.infinite||!1,slide:".slide",slidesToShow:this.config.slidesToShow[viewport],slidesToScroll:this.slidesToScroll[viewport]||this.slidesToShow[viewport],speed:300,rtl:T.Utils.isRTL(),focusOnSelect:focusOnSelect,accessibility:this.config.accessibility||!0},this.initializeSlides()},hasDots(){return this.config.dots||!1},setPaginationArrowTop(top){this.$paginationArrows.css("top",top)},setPaginationDotsTop(top){void 0!==top?this.$paginationDots.css("top",top):this.$paginationDots.css("top","inherit")},setPaginationDotsBottom(bottom){void 0!==bottom?this.$paginationDots.css("bottom",bottom):this.$paginationDots.css("bottom","inherit")},setPaginationArrowVisibility(flag){this.getCtx().data("slider-video-arrowsbullets")||flag?this.$paginationArrows.removeClass("hidden"):this.$paginationArrows.addClass("hidden")},setPaginationDotsVisibility(flag){this.getCtx().data("slider-video-arrowsbullets")||flag?this.$paginationDots.removeClass("hidden"):this.$paginationDots.addClass("hidden")},setAutoplayAllowed(allowed){this.autoplayAllowed=allowed,this.updateAutoplay()},updateAutoplay(){let autoplay=!1;autoplay=this.getCurrentSlideModule().isAutoplayAllowed()?this.slickProperties.autoplay&&this.autoplayAllowed&&this.getCurrentSlideModule().isAutoplayAllowed():this.slickProperties.autoplay&&this.autoplayAllowed,this.lastAutoplayStatus!==autoplay&&(this.lastAutoplayStatus=autoplay,this.slickSlider&&this.slickSlider.slick(autoplay?"slickPlay":"slickPause"),this.getCtx().toggleClass("has-autoplay-enabled",autoplay))},initPaginationNumber($paginationNumber){this.$paginationNumber=$paginationNumber,this.$paginationNumberText=this.$paginationNumber.find("span"),this.$sliderControls=this.$sliderControls.add(this.$paginationNumber)},initPaginationArrows($paginationArrows){this.$nextArrow=$paginationArrows.children(".next"),this.$prevArrow=$paginationArrows.children(".prev"),this.$paginationArrows=this.$nextArrow.add(this.$prevArrow),this.$sliderControls=this.$sliderControls.add(this.$paginationArrows)},createSlider(sliderLayer){let no_sliding_necessary=!1;if(this.slickSlider)return void console.error("slick slider was created with slider already initialized");const $slides=this.getCtx().find(".slide");this.config&&(no_sliding_necessary=this.slides.length<=this.slidesToShow[T.Utils.getViewport()]&&!this.config.alwaysInitialize),no_sliding_necessary?($slides.addClass("slick-current"),this.$sliderControls.addClass("hidden"),this.$paginationNumber&&this.$paginationNumber.length>0&&this.$paginationNumber.addClass("hidden"),this.slickProperties.dots=null,this.setAutoplayAllowed(!1)):($slides.removeClass("slick-current"),this.$sliderControls.removeClass("hidden")),T.Utils.isRTL()&&(this.getCtx().attr("dir","rtl"),this.$paginationDots.attr("dir","rtl")),this.totalNumberOfSlides()<=this.slickProperties.slidesToScroll&&(this.slickProperties.slidesToScroll=1),this.slickSlider=this.getCtx().slick(this.slickProperties),this.slickProperties.arrows||this.$sliderControls.addClass("hide-controls"),this.slickProperties.dots&&this.$paginationDots.removeClass("hidden"),this.countSlidesPerPage=this.slidesToShow[T.Utils.getViewport()],0===this.countSlidesPerPage?this.totalSlideSets=this.countSlidesPerPage=1:this.totalSlideSets=Math.floor((this.totalNumberOfSlides()-1)/this.countSlidesPerPage)+1,this.fixClonedSlides(),this.onBreakpoint(),$(window).on("jquery:viewportChanged",viewport=>this.onViewportChanged(viewport)),this.slickSlider.on("setPosition",()=>this.updateSliderControls()),this.slickSlider.on("breakpoint",()=>this.onBreakpoint()),this.removeHelperClass||this.resetSlideHeightOnInit(),sliderLayer&&this._events.emit("slickSlider:build",{sliderLayer:sliderLayer}),this.markAllSlidesInitialized(),this.updateSliderControls(),this.notifyInitialSlides()},setSlickDragEvents(value){this.slickSlider&&(this.slickSlider.slick("slickSetOption","draggable",value),this.slickSlider.slick("slickSetOption","touchMove",value),this.slickSlider.slick("slickSetOption","swipe",value))}
7,isSliderCreated(){return null!==this.slickSlider},refreshSliderHeight(){this.getCtx().find(".slick-slide").height("auto"),this.getCtx().find(".slick-list").height("auto"),this.slickSlider&&this.slickSlider.slick("setOption",null,null,!0)},destroySlider(slides){null!==this.slickSlider&&(this.slickSlider.off("setPosition"),this.getCtx().slick("unslick"),null!=slides&&slides.remove(),this.slickSlider=null)},replaceSlides(slides){if(null===slides||0===slides.length)return;if(this.slickProperties.initialSlide=0,this.isSliderCreated()){const slickSlides=this.getCtx().find(".slide");this.getSlideCount()>0&&(this.slickProperties.initialSlide=this.getPosition()),this.destroySlider(slickSlides)}this.getCtx().find(".slide").remove(),Array.isArray(slides)?$.each(slides,(index,element)=>{this.getCtx().append(element)}):this.getCtx().append(slides);const callback=function(){this.initializeSlides()}.bind(this);T.Utils.initializeModules(this.getCtx(),callback)},setVisible(flag){this.delayPreStartCall("setVisible",arguments)||(flag?this.getCtx().removeClass("hidden"):this.getCtx().addClass("hidden"))},addBeforeSlideChangeListener(cb){this.beforeSlideChangeListener=cb},addAfterSlideChangeListener(cb){this.afterSlideChangeListener=cb},addSliderInitializedListener(cb){this.sliderInitializedListener=cb},addSlideClickListener(cb){this.delayPreStartCall("addSlideClickListener",arguments)||this.getCtx().on("click",".slide",function(evt){const index=$(evt.currentTarget).data("slick-index");"function"==typeof cb&&cb(index)})},setPosition(newSlideIndex,animate){this.slickSlider&&this.slickSlider.slick("slickGoTo",newSlideIndex,!animate||!1)},getPosition(){return null==this.slickSlider?0:this.slickSlider.slick("slickCurrentSlide")},getSlideCount(){return this.totalNumberOfSlides()},goToNextSlide(){this.slickSlider&&this.slickSlider.slick("slickNext")},goToPreviousSlide(){this.slickSlider&&this.slickSlider.slick("slickPrev")},getCurrentSlideModule(){return this.slides[this.getPosition()].component},initializeSlides(doNotResetFoundSlides){if(this.delayPreStartCall("initializeSlides",arguments))return;const viewport=T.Utils.getViewport(),LOOP_LIMIT=Math.floor(100);doNotResetFoundSlides||(this.$slidesToInitialize=null),this.$slidesToInitialize||("mobile"===viewport?(this.getCtx().find(".js-hidden-mobile").addClass("slick-cloned hidden-mobile"),this.$slidesToInitialize=this.getCtx().find(".slide:not(.js-hidden-mobile)")):this.$slidesToInitialize=this.getCtx().find(".slide")),0===this.$slidesToInitialize.length&&(this.getCtx().find(".js-paginationdots").addClass("hidden-mobile"),this.getCtx().find(".js-arrows").addClass("hidden-mobile"),this.getCtx().find(".js-number").addClass("hidden-mobile"));let allSlidesAvailableForIni=!0,timeLimitReached=!1;if(this.$slidesToInitialize.each((index,slide)=>this.isLoopLimitReached(slide,LOOP_LIMIT)?(timeLimitReached=!0,!1):!!T.Utils.isComponentAvailableInTerrific(slide)||(allSlidesAvailableForIni=!1,!1)),timeLimitReached){if(!(this.$slidesToInitialize.length<2))return void console.error("Slider could not initialize their slides - time limit for initialization reached.","Slider:",this,"Slides:",this.$slidesToInitialize);allSlidesAvailableForIni=!0}if(allSlidesAvailableForIni)this.initializeSlidesNow();else{const handler=()=>{this.initializeSlides(!0)};window.setTimeout(handler,50)}},isLoopLimitReached(slide,loopLimit){const loopCtr=parseInt(slide.getAttribute("data-wait-for-ini-loop-ctr")||0)+1;return slide.setAttribute("data-wait-for-ini-loop-ctr",loopCtr),loopCtr>loopLimit},initializeSlidesNow(){this.$sliderControls.addClass("hidden"),this.slides=[],this.uniqueSlideId=0,this.getCtx().find(".slide").each((index,slide)=>{const $slide=$(slide),slideComponent=this._sandbox.getModuleById($slide.data("t-id"));null!=slideComponent?(slideComponent.setSlider(this,index),this.slides[this.uniqueSlideId]={initialized:!1,component:slideComponent,cloned:!1}
7,$slide.data("unique-id",this.uniqueSlideId),++this.uniqueSlideId):console.error("no slide component found for ",slide)}),this.slides.every(function(slide){return slide.component.syncSlide(),!0})},slideInitialized(slideIndex){this.slides[slideIndex].initialized?console.info(`slide with ${slideIndex} is already initialized`):(this.slides[slideIndex].initialized=!0,0===this.slides.filter(element=>!element.initialized).length&&(this.createSlider(),"function"==typeof this.sliderInitializedListener&&this.sliderInitializedListener()))},updateSliderControls(){if(this.slickSlider){const currentSlide=this.slickSlider.find(".slick-current").data("slick-index");this.currentSlideSet=Math.floor(currentSlide/this.countSlidesPerPage)+1}else this.currentSlideSet=1;1===this.totalSlideSets?this.$sliderControls.addClass("hidden"):(this.$paginationNumberText.html(this.currentSlideSet+"/"+this.totalSlideSets),this.$sliderControls.removeClass("hidden"))},notifyInitialSlides(){this.getCtx().find(".slick-active").each((index,element)=>{const $slide=$(element),slide=__guard__(this.slides[$slide.data("unique-id")],x=>x.component);null!=slide&&slide.onInitialSlide(),null!=slide&&slide.onBeforeSlideIn(),null!=slide&&slide.onAfterSlideIn(),"function"==typeof this.afterSlideChangeListener&&this.afterSlideChangeListener($slide.data("slick-index"))})},markAllSlidesInitialized(){Array.from(this.slides).map(slide=>slide.component.markSlideInitialized())},fixClonedSlides(){const $components=this.getCtx().find(".slick-cloned, .slick-cloned [data-t-id]");$components.removeData("t-id"),$components.removeAttr("data-t-id");const sliderId=this.getCtx().data("t-id");return(()=>{const result=[];for(let component of Array.from($components)){T.Utils.notifySlideMarkupCloned({$component:$(component),slideClonedId:`${this.clonedId++}-slider-${sliderId}`}),this._sandbox.addModules(component);const $component=$(component);$component.hasClass("slick-cloned")?(this.slides[this.uniqueSlideId]={initialized:!1,component:this._sandbox.getModuleById($(component).data("t-id")),cloned:!0},result.push(++this.uniqueSlideId)):($component.hasClass("m-productconversionarea")&&this.fixProductConversionArea($component),result.push(void 0))}return result})()},fixProductConversionArea($el){const $ajaxForm=$el.find(".js-ajax-request"),$popoverIDInput=$el.find('input[name="addToCartPopoverId"]'),$addToBasketLink=$el.find(".js-add-to-basket"),ajaxID=`${$ajaxForm.data("ajaxId")}-${this.uniqueSlideId}`;$ajaxForm.length>0&&$ajaxForm.attr("data-ajax-id",ajaxID),$addToBasketLink&&$addToBasketLink.attr("data-popover-id",ajaxID),$popoverIDInput&&$popoverIDInput.val(ajaxID)},totalNumberOfSlides(){return this.getCtx().find(".slide:not(.slick-cloned)").length},toggleHelperClass(context,status){},addMinimumSlideHeightClass(){const self=this;$.each(this.getCtx().find(".slide"),function(){self.toggleHelperClass($(this),"add")})},resetSlideHeightOnInit(){const slickActive=this.getCtx().find(".slick-active, .slick-current");this.addMinimumSlideHeightClass(),this.toggleHelperClass(slickActive,"remove")},resetSlideHeight(currentSlide,nextSlide){const SlideSetNext=this.findSlideSet(nextSlide);this.removeHelperClass||(this.addMinimumSlideHeightClass(),this.toggleHelperClass(SlideSetNext,"remove"))},findSlideSet(startSlide){return this.getCtx().find(".slide").filter((index,element)=>{const slickIndex=$(element).data("slick-index");return slickIndex>=startSlide&&slickIndex<startSlide+this.slidesToShow[T.Utils.getViewport()]})},onBeforeChange(event,slick,currentSlide,nextSlide){if(currentSlide===nextSlide)return;this.resetSlideHeight(currentSlide,nextSlide),this.getCtx().find(".slick-active,.slick-current").each((index,element)=>{const $slide=$(element);$slide.data("t-id")&&this._sandbox.getModuleById($slide.data("t-id")).onBeforeChange($slide,currentSlide,nextSlide)});const $currentSlide=$(slick.$slides.get(currentSlide)),$nextSlide=$(slick.$slides.get(nextSlide));__guard__(this.slides[$currentSlide.data("unique-id")],x=>x.component.onBeforeSlideOut()),__guard__(this.slides[$nextSlide.data("unique-id")],x1=>x1.component.onBeforeSlideIn());const nextSlideSet=this.findSlideSet(nextSlide);nextSlideSet.first().data("t-id")&&(this._sandbox.getModuleById(nextSlideSet.first().data("t-id")).onNextSetBeforeShown(nextSlideSet),nextSlideSet.first()),"function"==typeof this.beforeSlideChangeListener&&this.beforeSlideChangeListener(nextSlide)},onAfterChange(event,slick,currentSlide){this.getCtx().find(".slick-active,.slick-current").each((index,element)=>{const $slide=$(element);$slide.data("t-id")&&this._sandbox.getModuleById($slide.data("t-id")).onAfterChange($slide,slick,currentSlide)});const $currentSlide=$(slick.$slides.get(currentSlide));__guard__(this.slides[$currentSlide.data("unique-id")],x=>x.component.onAfterSlideIn()),"function"==typeof this.afterSlideChangeListener&&this.afterSlideChangeListener(currentSlide)},onBreakpoint(){this.getCtx().prepend(this.getCtx().find(".slick-list"))},refreshSlider(){this.$ctx.slick("refresh")}})}(jQuery),function($,doT){T.Module.SparepartFilter=T.createModule({start(resolve){this.doT=doT,this.$ctx=$(this._ctx),this.$selectedCat=this.$ctx.find(".js-sparepart-filter-selected"),this.$resetFilter=this.$ctx.find(".js-reset-filter-button"),this.ajaxDone=!1,this.sparepartCategorySelected=this.doT.template(this.$(".js-s
7parepart-filter-selected-tpl").html()),this.$resetFilter.on("click",ev=>this.resetSelectedFilter(ev)),this._events.on("t.sync",()=>this.sync()),this.isSynced=!1,resolve()},sync(){this.isSynced||(this.isSynced=!0,this.initializeSpareparts())},initializeSpareparts(){if(!this.ajaxDone){const ajax_id=this.$ctx.data("ajax-id")||"spareparts-filter-selected",request=T.Utils.startAjaxRequest(ajax_id);if(!request)return;request[0].done(data=>{this.$selectedCat.append(this.sparepartCategorySelected(data))}),this.ajaxDone=!0}},resetSelectedFilter(ev){this.$selectedContainer=this.$ctx.find(".js-sparepart-select-container"),this.$selectedContainer.empty()}})}(jQuery,window.doT),function($){T.Module.SparepartProductteaser=T.createModule({start(resolve){return this.$ctx=$(this._ctx),resolve()},sync(){}})}(jQuery),function($){T.Module.ST4Feedback=T.createModule({start(resolve){const mod=this;return mod.$ctx=$(mod._ctx),mod.elm={$trigger:mod.$(".js-trigger-helpful")},mod.state={ratedYes:"was-rated-yes",ratedNo:"was-rated-no"},mod.$st4FeedbackYesBtn=mod.$ctx.find(".js-feedback-btn-yes"),mod.$st4FeedbackNoBtn=mod.$ctx.find(".js-feedback-btn-no"),mod.elm.$trigger.on("click",ev=>this.onTriggerClick(ev)),this._events.on("updateArticleFeedbackTrackingData",(articleId,category)=>this.updateArticleFeedbackTrackingData(articleId,category)),resolve()},hideVote(rated){this.$ctx.addClass(rated)},showVote(){this.$ctx.removeClass(this.state.ratedYes),this.$ctx.removeClass(this.state.ratedNo)},onTriggerClick(e){e.preventDefault();const rated=$(e.currentTarget).hasClass("js-feedback-btn-yes")?this.state.ratedYes:this.state.ratedNo;this.hideVote(rated),this.config=this.$ctx.data(),this.cookieData=`_st4Feedback_voted_${this.config.id}=${rated}`,T.Utils.cookieHandling(this.cookieData,"set")},updateArticleFeedbackTrackingData(articleId,category){const mod=this;if(mod.$ctx.attr("data-id",articleId),mod.cookieData=`_st4Feedback_voted_${articleId}`,T.Utils.cookieHandling(mod.cookieData,"return").indexOf(mod.cookieData)>-1)mod.hideVote(T.Utils.cookieHandling(mod.cookieData,"get"));else{mod.showVote();const trackingStrNotHelpful={trackType:"self help article rating",eventType:"click",dataValues:{service_product_category:category,document_type:"Self Help article ST4",document_id:articleId,document_interaction_type:"rate",document_rating:"not helpful"}};mod.$st4FeedbackNoBtn.attr("data-eventTracking",JSON.stringify(trackingStrNotHelpful));const trackingStrHelpful={trackType:"self help article rating",eventType:"click",dataValues:{service_product_category:category,document_type:"Self Help article ST4",document_id:articleId,document_interaction_type:"rate",document_rating:"helpful"}};mod.$st4FeedbackYesBtn.attr("data-eventTracking",JSON.stringify(trackingStrHelpful))}}})}(jQuery),function($){T.Module.ST4Video=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$video=this.$ctx.find("video"),this.$ctx.on("touchstart",ev=>{ev.preventDefault(),ev.stopPropagation(),this.$video[0].play()}),resolve()}})}(jQuery),function($){T.Module.Stage=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.isStopped=!1,this.$slider=this.$(".js-slider"),this.autoplay=this.$slider.data("autoplay"),null==this.autoplay&&(this.autoplay=!0),this.autoplaySpeed=this.$slider.data("autoplay-speed")||3e3,this.autoplayViewportOffset=parseInt(this.$slider.data("autoplay-viewport-offset")||50)/100,this.updateSliderControlPositionDebounced=T.Utils.debounce(this.updateSliderControlPosition,50),this._events.on("t.sync",$.proxy(this.sync,this)),this.ro=new ResizeObserver((entry,observer)=>{this.updateSliderControlPositionDebounced()}),this.$ctx[0]&&this.ro.observe(this.$ctx[0]),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.slider=this._sandbox.getModuleById(this.$slider.data("t-id")),this.slider.init({infinite:!0,adaptiveHeight:!0,autoplay:this.autoplay,autoplaySpeed:this.autoplaySpeed,centerMode:!0,useCSS:!1,arrows:!0,dots:!0,fade:!1,slidesToShow:1}),this.createInViewportController())},stop(){this.isStopped||(this.isStopped=!0,this.$ctx[0]&&this.ro.unobserve(this.$ctx[0]))},createInViewportController(){const element=$("<div>");return element.css("display","none"),this.$ctx.append(element),this.inViewportController=T.Utils.createController(element,"IsInViewportController",""),this.inViewportController.init({element:this._ctx,visiblePercentage:this.autoplayViewportOffset,onViewportChanged:(element,inViewport)=>null!=this.slider?this.slider.setAutoplayAllowed(this.autoplay&&inViewport):void 0})},updateSliderControlPosition(){const paginationDotsHeight=this.$(".a-paginationdots").height();if("desktop"!==T.Utils.getViewport()){const slickCurrent=this.$(".slick-current");let slideHeight=0;"mobile"===T.Utils.getViewport()&&slickCurrent.find(".js-image-video-wrapper").hasClass("hidden-mobile")?(slideHeight=slickCurrent.height(),this.slider.setPaginationDotsBottom(),this.slider.setPaginationDotsTop(slideHeight)):(slideHeight=slickCurrent.find(".js-image-video-wrapper").height(),this.slider.setPaginationDotsBottom(),this.slider.setPaginationDotsTop(slideHeight-paginationDotsHeight)),this.slider.setPaginationArrowTop(sli
7deHeight/2)}else this.slider.setPaginationArrowTop(""),this.slider.setPaginationDotsTop(),this.slider.setPaginationDotsBottom(0-paginationDotsHeight);return this.inViewportController.refresh()}})}(jQuery),function($){T.Module.StepByStepAccordion=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$steps=$(".js-accordion-steps",this.$ctx),this.$step=$(".js-accordion-step",this.$ctx),this.$mediaContainer=$(".js-accordion-medias",this.$ctx),this.stepsLength=this.$steps.children().length,this.activeStepMinWidth=this.$steps.find(".is-active").css("min-width"),this.activeStepMinHeight=this.$steps.find(".is-active").css("min-height"),this.isIE=T.Utils.isIE(),this.isIE&&(this.mediaContainerWidth=this.$mediaContainer.width(),this.mediaContainerHeight=this.$mediaContainer.height());const $images=this.$mediaContainer.children().eq(1).find("img");return T.Commons.LazyLoadingInitializer.disableLazyLoading($images),this._events.on("t.sync",()=>this.sync()),this.$step.on("click",ev=>this.onClickStep(ev)),this.isSynced=!1,resolve()},sync(){this.isSynced||(this.isSynced=!0)},onClickStep(ev){let $currentStep=$(ev.currentTarget);if(!$currentStep.hasClass("is-active")){let dataStepId=$currentStep.data("step-id");this.trackAccordionStepClick(dataStepId),this.hidePrevStep(),this._events.emit("step:change",{mediaId:dataStepId,$parent:this.$ctx.get(0)}),this.toggleSteps($currentStep)}},trackAccordionStepClick(dataStepId){let dataValues={accordion_id:this.$ctx.data("accordion-id"),accordion_step_id:dataStepId,accordion_total_steps:this.$steps.children().length};T.Utils.getLayout().trackValues("accordion step-by-step click",dataValues)},toggleSteps($stepClicked){this.stepsLength>3&&this.accordionStepsDimensions($stepClicked),$stepClicked.addClass("is-active")},hidePrevStep(){let $activeStep=this.$steps.find(".is-active");$activeStep&&$activeStep.removeClass("is-active")},accordionStepsDimensions($stepClicked){let clickedStepId=$stepClicked.data("step-id"),viewport=T.Utils.getViewport(),minWidth=$stepClicked.css("min-width"),minHeight=$stepClicked.css("min-height"),actualWidthUnit=null,actualHeightUnit=null;if(["%","px","em","vw"].forEach(unit=>{if("desktop"===viewport){if(minWidth.indexOf(unit)>-1&&null===actualWidthUnit||void 0===actualWidthUnit)return void(actualWidthUnit=unit)}else if(minHeight.indexOf(unit)>-1&&null===actualHeightUnit||void 0===actualHeightUnit)return void(actualHeightUnit=unit)}),"desktop"===viewport){let containerWidth=this.mediaContainerWidth?this.mediaContainerWidth:100,clickedStepWidth=parseInt(minWidth.split(actualWidthUnit)[0]),partialStepWidth=containerWidth-parseInt(this.activeStepMinWidth.split(actualWidthUnit)[0])-clickedStepWidth;this.translateAccordionSteps("X","left",clickedStepId,clickedStepWidth,partialStepWidth,actualWidthUnit)}else{let containerHeight=this.mediaContainerHeight?this.mediaContainerHeight:100,clickedStepHeight=parseInt(minHeight.split(actualHeightUnit)[0]),partialStepHeight=containerHeight-parseInt(this.activeStepMinHeight.split(actualHeightUnit)[0])-clickedStepHeight;this.translateAccordionSteps("Y","top",clickedStepId,clickedStepHeight,partialStepHeight,actualHeightUnit)}},translateAccordionSteps(translateDirection,translateDirectionIE,clickedStepId,clickedStepDimension,partialStepDimension,actualUnit){this.isIE?clickedStepId>2&&clickedStepId<this.stepsLength-1?this.$steps.css(translateDirectionIE,`${-clickedStepDimension*(clickedStepId-2)+partialStepDimension/2+.5}px`):clickedStepId===this.stepsLength-1||clickedStepId===this.stepsLength?this.$steps.css(translateDirectionIE,`${-clickedStepDimension*(clickedStepId-2)+partialStepDimension}px`):clickedStepId<=2&&this.$steps.css(translateDirectionIE,"0px"):clickedStepId>2&&clickedStepId<this.stepsLength-1?this.$steps.css("transform","translate"+translateDirection+`(${-clickedStepDimension*(clickedStepId-2)+partialStepDimension/2+.5+actualUnit})`):clickedStepId===this.stepsLength-1||clickedStepId===this.stepsLength?this.$steps.css("transform","translate"+translateDirection+`(${-clickedStepDimension*(clickedStepId-2)+partialStepDimension+actualUnit}
7)`):clickedStepId<=2&&this.$steps.css("transform","translate"+translateDirection+`(${0+actualUnit})`)}})}(jQuery),function($){T.Module.StepElement=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$cta=this.$ctx.find(".step-cta"),this.trackingId=this.$ctx.closest(".m-next-best-steps").data("tracking-id"),this.trackingEvent=this.$ctx.data("tracking-event"),this.stepHeadline=this.$ctx.find(".heading-wrapper .headline").text().trim(),this.initTracking(),resolve()},initTracking(){const trackingEvent=this.trackingEvent?this.trackingEvent:"next best steps cta click";this.$cta.on("click",()=>{const trackData={next_best_steps_module_id:this.trackingId,next_best_steps_label_text:this.stepHeadline};T.Utils.getLayout().trackValues(trackingEvent,trackData)})}})}(jQuery),function($){T.Module.StepMedia=T.createModule({start(resolve,reject){return this.$ctx=$(this._ctx),this.isSynced=!1,this.$parent=this.$ctx.parents(".m-stepbystepaccordion").get(0),this.mediaId=this.$ctx.data("mediaId"),this.isVideo=this.$ctx.find(".m-video").length>0,this._events.on("t.sync",()=>this.sync()),this._events.on("step:change",data=>this.onStepChange(data)),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.isVideo&&this.stepVideoInit())},stepVideoInit(){let $video=this.$ctx.find(".m-video");this.video=this._sandbox.getModuleById(null!==$video?$video.data("t-id"):void 0),this.video&&(this.video.ensureLazyLoaded(),this.video.muteVideo())},onStepChange(data){if(this.$parent===data.$parent)if(this.mediaId===data.mediaId){const $images=this.$ctx.next().find("img");T.Commons.LazyLoadingInitializer.disableLazyLoading($images),this.$ctx.removeClass("hidden"),this.onVideoToggle(!0)}else this.$ctx.hasClass("hidden")||this.$ctx.addClass("hidden"),this.onVideoToggle(!1)},onVideoToggle(isVideoPlay){this.isVideo&&(isVideoPlay?(this.video.autoplayStatus.inViewport=!0,this.video.videoPlay()):this.video.videoPause())}})}(jQuery),function($){T.Module.StickyCtaWrapper=T.createModule({start(resolve){this.isSynced=!1,this.$ctx=$(this._ctx),this.$stickyCtaButtonWrapper=this.$ctx.find(".cta-button-wrapper"),this.$stageCtaButton=$(".primary-cta-button"),this.$copiedCtaButton=null,this.$rebrushedHeader=$(".o-headerrebrush"),this.$stickyHeader=$(".o-headerrebrush .content"),this.$stickyHeaderConversionBar=$(".o-headerrebrush .conversion-bar"),this.stickyHeaderContentHeight=0|this.$stickyHeaderConversionBar.innerHeight(),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.$stageCtaButton.length&&(this.$copiedCtaButton=this.$stageCtaButton.clone(),this.insertCtaButton(),this.observeStickyHeaderClass(),this.observeCtaButtonPosition()))},insertCtaButton(){this.destroyCopiedModule(),this.replaceAjaxIdOfCopiedCtaButton(),this.$stickyCtaButtonWrapper.append(this.$copiedCtaButton),T.Utils.initializeModules(this.$copiedProductConversionArea)},destroyCopiedModule(){this.$copiedProductConversionArea=this.$copiedCtaButton.find('[data-t-name="ProductConversionArea"], [data-t-name="DelayedAddToCartButton"]'),this.$copiedProductConversionArea.removeAttr("data-t-id")},replaceAjaxIdOfCopiedCtaButton(){const $ajaxForm=this.$copiedCtaButton.find(".js-ajax-request"),ajaxId=$ajaxForm.data("ajax-id");$ajaxForm.attr("data-ajax-id",ajaxId+"-copied")},observeStickyHeaderClass(){if(!this.$stickyHeader.length)return;new MutationObserver(entries=>{entries.forEach(entry=>{entry.target.classList.contains("sticky-content")&&setTimeout(()=>{const stickyHeaderContentHeight=0|this.$stickyHeaderConversionBar.innerHeight();this.$ctx.css("top",stickyHeaderContentHeight+"px")},350)})}).observe(this.$stickyHeader.get(0),{attributes:!0,childList:!0,characterData:!0})},observeCtaButtonPosition(){if(!this.$stageCtaButton.length)return;const rootMarginTop=this.$rebrushedHeader.hasClass("is-transparent-now")?0:this.stickyHeaderContentHeight;new IntersectionObserver(entries=>{entries.forEach(entry=>{!entry.isIntersecting&&entry.boundingClientRect.top<this.stickyHeaderContentHeight?(this.$copiedCtaButton.removeClass("hide-cta"),this.$ctx.addClass("sticky-content")):(this.$copiedCtaButton.addClass("hide-cta"),this.$ctx.removeClass("sticky-content"))})},{rootMargin:`-${rootMarginTop}px 0px 0px 0px`}).observe(this.$stageCtaButton.get(0))}})}(jQuery),function($){T.Module.SubscriptionSelection=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$oneTimePurchase=this.$ctx.find(".js-oneTimePurchase"),this.$productC
7odeOnetimePurchase=this.$ctx.find(".js-productCodeOnetimePurchase"),this.$subscriptionButton=this.$ctx.find(".js-addToSubscription"),this.$subscriptionPriceDisplay=this.$ctx.find(".js-subscriptionprice"),this.$subscriptionPercentage=this.$ctx.find(".js-subscriptionPercentage"),this.$subscriptionOriginalPriceDisplay=this.$ctx.find(".js-subscriptionOriginalPrice"),this.$productCode=this.$ctx.find(".js-productCode"),this.$addToCartButton=this.$ctx.siblings(".js-add-to-basket"),this.addToCartEventTracking=this.$addToCartButton.data("eventtracking"),this.addToCartEventTracking&&this.addToCartEventTracking.dataValues&&(this.addToCartEventTrackingDataValues=this.addToCartEventTracking.dataValues),this.$expand=this.$ctx.find(".js-expand"),this.$deliveryInterval=this.$ctx.find(".js-dropdownSubscription"),this.$subscriptionButton.on("click",()=>this.showSubscriptionContent()),this.$oneTimePurchase.on("click",()=>this.hideSubscriptionContent()),this.$deliveryInterval.on("change",()=>this.onDeliveryIntervalChange()),this.$expand.hasClass("hidden")||this.addSubscriptionTrackingValues(),resolve()},showSubscriptionContent(){this.$expand.removeClass("hidden"),this.addSubscriptionTrackingValues(),this.$productCode.val(this.$deliveryInterval.val())},hideSubscriptionContent(){this.$expand.addClass("hidden"),this.$productCode.val(this.$productCodeOnetimePurchase.val()),this.addToCartEventTracking&&(this.addToCartEventTrackingDataValues.products[0].product_type="standalone",delete this.addToCartEventTrackingDataValues.products[0].product_subscription_period,this.$addToCartButton.attr("data-eventtracking",JSON.stringify(this.addToCartEventTracking)))},addSubscriptionTrackingValues(){const deliveryIntervalName=this.$deliveryInterval.find("option:selected").data("interval-code");this.addToCartEventTracking&&(this.addToCartEventTrackingDataValues.products||(this.addToCartEventTrackingDataValues.products=[],this.addToCartEventTrackingDataValues.products.push({})),this.addToCartEventTrackingDataValues.products[0].product_type="subscription",this.addToCartEventTrackingDataValues.products[0].product_subscription_period=deliveryIntervalName,this.$addToCartButton.attr("data-eventtracking",JSON.stringify(this.addToCartEventTracking)))},onDeliveryIntervalChange(){const $selectedOption=this.$deliveryInterval.find("option:selected"),price=$selectedOption.data("price");let percentage=$selectedOption.data("percentage-formatted");const originalPrice=$selectedOption.data("originalprice");this.$subscriptionOriginalPriceDisplay.length>0&&(percentage&&(percentage=`(${percentage})`),originalPrice?(this.$subscriptionOriginalPriceDisplay.text(originalPrice),this.$subscriptionOriginalPriceDisplay.removeClass("hidden")):this.$subscriptionOriginalPriceDisplay.addClass("hidden")),this.$subscriptionPriceDisplay.text(price),this.$subscriptionPercentage.text(percentage),this.addSubscriptionTrackingValues(),this.$productCode.val(this.$deliveryInterval.val())}})}(jQuery),jQuery,T.Module.SubtotalAmount=T.createModule({start:resolve=>resolve(),sync(){}}),function($){T.Module.Table=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$window=$(window),this.hasFixedHead=!1,this.isScrollingActive=!1,this.el={$table:this.$("table")},this._events.on("recalc",T.Utils.debounce(e=>this.onRecalc(e),200)),this.onResizeDebounced=T.Utils.debounce(this.onResize.bind(this),150),this.synceRowHeightDebounced=T.Utils.debounce(this.syncRowHeight.bind(this),50),this.ro=new ResizeObserver(()=>{this.synceRowHeightDebounced()}),this.$ctx[0]&&this.ro.observe(this.$ctx[0]),this.setupDOMReferences(),this.setupFixedHead(),this.setupScrollable(),this.setupStatic(),resolve()},sync(){},stop(){this.isStopped||(this.isStopped=!0,this.$ctx[0]&&this.ro.unobserve(this.$ctx[0]))},activateScrolling(){this.isScrollingActive||(this.$table.addClass("is-hidden"),this.$scrollable.prependTo(this.$ctx),this.$pinned.length&&(this.$pinned.insertBefore(this.$scrollable),this.syncRowHeight()),this.$fixedHead.length&&(this.$fixedHead.prependTo(this.$scrollable),this.$pinned.length&&(this.$scrollable.find(".fixed-head th:first").remove(),this.$fixedHeadPinned.prependTo(this.$pinned)),this.syncScrollableFixedWidth(),this.syncPinnedFixedWidth(),this.setFixedPosition()),this.isScrollingActive=!0)},deactivateScrolling(){if(this.isScrollingActive){let checkedInputID=this.$pinned.find("input:checked").attr("id");this.$(".pinned, .scrollable").detach(),this.$table.find(`#${checkedInputID}`).prop("checked",!0),this.$table.removeClass("is-hidden"),this.$pinned.find(".fixed-head").remove(),this.$scrollable.find(".fixed-head").remove(),this.createFixedHead(),this.$fixedHead.prependTo(this.$ctx),this.setFixedPosition(),this.isScrollingActive=!1}},checkWidth(){this.deactivateScrolling();const maxWidth=this.$ctx.width();this.$ctx.find("table").outerWidth()>maxWidth&&this.activateScrolling()},createFixedHead(){this.$fixedHead=this.$table.clone(!0,!0),this.$fixedHead.find("tbody, caption").remove(),this.$fixedHead=this.$fixedHead.wrap('<div class="fixed-head">').parent(),this.$pinned.length&&(this.$fixedHeadPinned=this.$fixedHead.clone(!0,!0),this.$fixedHeadPinned.find("th:gt(0)").remove()),void 0===this.$thead.data("fixed")&&(this.$fixedHead=$([]),this.$fixedHeadPinned=$([]))},setupDOMReferences(){this.$table=this.$("table"),this.$thead=this.$("thead"),this.$tbody=this.$("tbody"),this.$pinned=this.$table.clone(!0,!0),this.$pinned.find("td, th:not(:first-child), c
7aption").remove(),this.$pinned=this.$pinned.wrap('<div class="pinned">').parent(),this.$pinned.find("tr:not(:has(th))").remove(),this.$pinned.find("tr").length<this.$table.find("tr").length&&(this.$pinned=$([])),this.$scrollable=this.$table.clone(!0,!0),this.$pinned.length&&(this.$scrollable.find("th:first-child").each(function(i,cell){if($(cell).prop("colSpan")>1){let $duplicateCell=$(cell).clone(!0,!0);$duplicateCell.text(""),$duplicateCell.prop("colSpan",parseInt($duplicateCell.prop("colSpan"))-1),$duplicateCell.insertAfter(cell)}}),this.$scrollable.find("th:first-child").remove()),this.$scrollable=this.$scrollable.wrap('<div class="scrollable">').parent(),this.createFixedHead()},setupFixedHead(){this.$fixedHead.length&&(this.$fixedHead.prependTo(this.$ctx),this.hasFixedHead=!0,this.$window.on("scroll",$.proxy(this.setFixedPosition,this)))},setupScrollable(){this.$window.on("resize.setupScrollable",T.Utils.debounce($.proxy(this.onResize,this),50)),this.checkWidth()},setupStatic(){this.$ctx.data("is-static")&&(this.$window.off("resize.setupScrollable"),this.$(".scrollable").removeClass("scrollable"))},setFixedPosition(){const scrollTop=this.$window.scrollTop(),offsetTop=this.$ctx.offset().top,tableHeight=this.$ctx.height(),$fixedHead=this.$(".fixed-head");if(this.hasFixedHead)return scrollTop>offsetTop?scrollTop>offsetTop+tableHeight?$fixedHead.css("top",""):$fixedHead.css("top",scrollTop-offsetTop):$fixedHead.css("top","")},syncPinnedFixedWidth(){return this.$pinned.find(".fixed-head").find("table").css("width",this.$pinned.find("tbody th:first").innerWidth())},syncRowHeight(){const mod=this;this.$scrollable.find("tr").each(function(i,el){const $pinnedCell=mod.$pinned.find(`tr:eq(${i}) th`),pinnedCellHeight=$pinnedCell.outerHeight(),$scrollableCell=$(el).children(":first"),scrollableCellHeight=$scrollableCell.outerHeight();return pinnedCellHeight>scrollableCellHeight?$scrollableCell.css("height",pinnedCellHeight):$pinnedCell.css("height",scrollableCellHeight)})},syncScrollableFixedWidth(){const $scrollableFixed=this.$scrollable.find(".fixed-head");let $referenceRow;return this.$scrollable.find("tbody tr").each(function(i,row){return 0!==$(row).find("th[colspan], td[colspan]").length||($referenceRow=$(row),!1)}),$referenceRow.children().each(function(i){return $scrollableFixed.find("th").eq(i).css("width",$(this)[0].scrollWidth)})},onRecalc(data){this.$ctx.closest(data.$element).length&&this.onResize()},onResize(){this.el={$table:this.$("table")},this.checkWidth(),this.isScrollingActive&&(this.syncRowHeight(),this.hasFixedHead&&(this.syncPinnedFixedWidth(),this.syncScrollableFixedWidth()))}})}(jQuery),function($){T.Module.Tabs=T.createModule({start(resolve){const mod=this;mod.$ctx=$(this._ctx),this.hashQueryparameter=this.$ctx.data("hash-queryparameter"),mod.hashScope=mod.$ctx.data("hash-scope")||"Tabs",this.hashQueryparameter&&this.redirectToHashUrl(),mod.sync=$.proxy(this,"sync"),mod.arrangeTabs=$.proxy(this,"arrangeTabs"),mod.getOverlappingTab=$.proxy(this,"getOverlappingTab"),mod.getTabById=$.proxy(this,"getTabById"),mod.openTab=$.proxy(this,"openTab"),mod.sendRecalc=$.proxy(this,"sendRecalc"),mod.sendStickyHide=$.proxy(this,"sendStickyHide"),mod.setupTabs=$.proxy(this,"setupTabs"),mod.onClickTab=$.proxy(this,"onClickTab"),mod.onClickTabMore=$.proxy(this,"onClickTabMore"),mod.onClickTabMorePaneItem=$.proxy(this,"onClickTabMorePaneItem"),mod.onOpenTab=$.proxy(this,"onOpenTab"),mod.onWindowHashchange=$.proxy(this,"onWindowHashchange"),mod.onWindowResize=$.proxy(this,"onWindowResize"),T.Utils.allSynced=!1,mod.isSynced=!1,this.reviewsIsReady=!1,mod.borderWidth=1,mod.delay=250,mod.disableHashchange=!!mod.$ctx.attr("data-hashchange"),mod.groupid=mod.$ctx.data("group-id"),mod.groupSelector=mod.groupid?`.js-tabgroup-${mod.groupid}`:"",mod.groupid&&mod.$ctx.find("> div.tabs-wrapper > section.tab-panel").addClass(`js-tabgroup-${mod.groupid}`),mod.$tabs=mod.$(`.tabs-nav${mod.groupSelector}`),mod.$tabsInitial=mod.$tabs.find("li:not(.tab-more)"),mod.$moreTab=mod.$tabs.find(".tab-more"),mod.$moreTabPane=mod.$tabs.find(".js-tab-more-pane"),mod.$moreTabPaneList=mod.$tabs.find(".js-tab-more-pane-list"),mod.$tabPanels=mod.$(`.tab-panel${mod.groupSelector}`),this.$reviews=this.$ctx.find(".m-reviews"),mod.$sliders=mod.$ctx.find(".m-slider"),mod._events.on("t.sync",mod.sync),mod._events.on("addTrackValuesToTab",data=>mod.trackingTabs(data)),this._events.on("reviews:isReady",()=>{this.reviewsIsReady=!0,this._events.emit("reviews:openReviewsTab")}),resolve()},sync(){this.isSynced||(this.disableHashchange?this.openTab():location.hash?(this.initialHash=!0,this.onWindowHashchange(),this.initialHash=!1):this.openTab(),this.setupTabs(),this.isSynced=!0,T.Utils.allSynced=!0)},redirectToHashUrl(){const queryParams=new URLSearchParams(window.location.search);let completeUrl,urlWithoutQuery=window.location.href.split("?")[0];if(queryParams.has(this.hashQueryparameter)){let hash=`#/${this.hashScope}=${queryParams.get(this.hashQueryparameter)}/`;queryParams.delete(this.hashQueryparameter),completeUrl=Array.from(queryParams).length>0?`${urlWithoutQuery}?${queryParams.toString()}${hash}`:`${urlWithoutQuery}${hash}`,history.replaceState(null,null,completeUrl)}},arrangeTabs(){const mod=this;mod.$moreTabPaneList.children().removeClass("js-tab-more-pane-item tab-more-pane-item").insertBefore(mod.$moreTab);const $criticalTab=mod.getOverlappingTab();if($criticalTab){const $hiddenTabs=$criticalTab.prev().nextUntil(".tab-more");$hiddenTabs.addClass("js-tab-more-pane-item tab-more-pane-item").appendTo(mod.$moreTabPaneList),$hiddenTabs.length&&(mod.$moreTab.removeClass("hidden"),this.$moreTabPane.find("li").hasClass("is-active")&&this.$moreTab.addClass("is-active"))}else mod.$moreTab.addClass("hidden")},getOverlappingTab(){const mod=this,totalWidthTabContainer=mod.$tabs.innerWidth(),moreTabWidth=mod.$moreTab.outerWidth(!0);let $criticalTab,totalWidthTabs=moreTabWidth;return mod.$tabs.find("li:not(.tab-more):not(.js-tab-more-pane)").each(function(){return!((totalWidthTabs+=$(this).outerWidth(!0))+mod.borderWidth>totalWidthTabContainer)||($criticalTab=$(this),!1)}),$criticalTab&&$criticalTab.is(mod.$tabsInitial.filter(":last"))&&(totalWidthTabs-=moreTabWidth-1)<=totalWidthTabContainer?null:$criticalTab},getTabById(id){let $link;return($link=this.$tabs.find(`a[href*='${id}']`)).length?$link.closest("li"):$([])},openTab($tab){const mod=this;this._events.emit("loader:close",{$trigger:this.$reviews});const initialOpen=0===mod.$tabs.find(".is-active").length;$tab||($tab=mod.$tabsInitial.hasClass("initial-active")?mod.$tabs.find(".initial-active"):mod.$tabs.find("li:first"));const tabLoadTrigger=$tab.find("a").data("load-trigger"),emitLoadTab=(initialOpen,tabLoadTrigger)=>{this._events.emit(`loadTab:${tabLoadTrigger}`,{triggerEventTracking:!initialOpen}),this._events.off("reviews:openReviewsTab")};tabLoadTrigger&&(this.reviewsIsReady?emitLoadTab(initialOpen,tabLoadTrigger):this._events.on("reviews:openReviewsTab",()=>{emitLoadTab(initialOpen,tabLoadTrigger)})),mod.$tabsInitial.removeClass("is-active"),mod.$moreTab.removeClass("is-active"),$tab.addClass("is-active"),mod.$tabPanels.removeClass("is-active").eq(mod.$tabsInitial.index($tab)).addClass("is-active"),mod.$moreTabPane.find("li").hasClass("is-active")&&mod.$moreTab.addClass("is-active"),$tab.data("jump-to")&&T.Utils.scrollToTop($tab.offset().top);const ajaxId=$tab.data("ajax-request-id");
7ajaxId&&(T.Utils.startAjaxRequest(ajaxId,!1,!1),$tab.removeAttr("data-ajax-request-id"),$tab.removeData("ajax-request-id"));let $tabContent=$({});mod.$tabPanels.each(function(){$(this).hasClass("is-active")&&($tabContent=this,mod.sendRecalc($tabContent),mod.sendStickyHide($tabContent))}),initialOpen&&this.trackInitialOpen($tab),mod.$sliders&&mod.refreshSliders(mod.$sliders)},trackInitialOpen($tab){const tabTrackingName=$tab.find("a").data("tracking-name");let{href:href}=window.location;-1!==href.indexOf("#")&&(href=href.substr(0,href.indexOf("#")));let tabHref=$tab.find("a").attr("href");0!==tabHref.indexOf("#")&&(tabHref=`#${tabHref}`);const pageUrl=`${href}${tabHref}`;this._events.emit("tracking:page-dimensions",{page_tab:tabTrackingName,page_url:pageUrl})},refreshSliders($sliders){$sliders.each((index,element)=>{element.slick&&element.slick.setPosition()})},sendRecalc($tabContent){this._events.emit("recalc",{$element:$tabContent,$ctx:this.$ctx})},sendStickyHide($tabContent){this._events.emit("hideSticky",{$element:$tabContent,$ctx:this.$ctx})},setupTabs(){return this._events.on("openTab",this.onOpenTab),this.$ctx.on("click",`.tabs-nav${this.groupSelector} > li:not(.tab-more):not(.js-tab-more-pane)`,this.onClickTab),this.$ctx.on("click",`.tabs-nav${this.groupSelector} .js-tab-more-pane-item`,this.onClickTabMorePaneItem),this.$ctx.on("click",`.tabs-nav${this.groupSelector} > .tab-more`,this.onClickTabMore),this.disableHashchange||$(window).on("hashchange.tabs",this.onWindowHashchange),this._events.on("reArrangeTabs",this.arrangeTabs),this.arrangeTabs(),T.Utils.startAddModule=!0,$(window).on("resize",this.onWindowResize)},onClickTab(ev){const mod=this,$target=$(ev.currentTarget);if(!$target.find("a").data("tab-link")){ev.preventDefault(),this.$moreTab.hasClass("is-open")&&this.$moreTab.trigger("click");const oldId=this.$(`.tab-panel${mod.groupSelector}.is-active`).attr("id");this.openTab($target);const newId=this.$(`.tab-panel${mod.groupSelector}.is-active`).attr("id");if(!this.disableHashchange){const replaceHistory=!0;T.Utils.hashContains(this.hashScope,oldId)?T.Utils.replaceHash(this.hashScope,oldId,newId,replaceHistory):T.Utils.setHash(this.hashScope,newId,replaceHistory)}}},onClickTabMore(ev){this.$moreTab.toggleClass("is-open"),ev.preventDefault()},onClickTabMorePaneItem(ev){this.$moreTab.removeClass("is-open"),this.openTab($(ev.currentTarget)),ev.stopImmediatePropagation()},onOpenTab(data){const mod=this,$tab=this.getTabById(data.tabId);if($tab.length>0){if(this.disableHashchange)this.$moreTab.hasClass("is-open")&&this.$moreTab.trigger("click");else{const oldId=this.$(`.tab-panel${mod.groupSelector}.is-active`).attr("id"),replaceHistory=!0;T.Utils.hashContains(this.hashScope,oldId)?T.Utils.replaceHash(this.hashScope,oldId,data.tabId,replaceHistory):T.Utils.setHash(this.hashScope,data.tabId,replaceHistory)}this.openTab($tab),data.scrollToTab&&T.Utils.scrollToTop($tab.offset().top,data.callback)}},onWindowHashchange(){const tabIds=T.Utils.getHashIds(this.hashScope);for(let id of Array.from(tabIds)){const $tab=this.getTabById(id);let ajax_id;if($tab.find("a")&&$tab.find("a").hasClass("js-trigger-ajax-request")&&(ajax_id=$tab.find("a").attr("data-ajax-request-id"),T.Utils.startAjaxRequest(ajax_id,null,"init")),$tab.hasClass("is-active"))return;if($tab.length)return this.openTab($tab),void(this.initialHash&&T.Utils.scrollToTop($tab))}this.openTab()},trackingTabs(data){let $tabToTrack=this.$ctx.find(`a[href*='${data.trackTabId}']`);if($tabToTrack.length>0){let eventForTab=$tabToTrack.data("eventtracking"),delayEventForTab=$tabToTrack.data("delayeventtracking");eventForTab?(eventForTab.dataValues[data.trackvar]=data.trackValue,$tabToTrack.attr("data-eventTracking",JSON.stringify(eventForTab))):delayEventForTab&&(data.trackvar&&(delayEventForTab.dataValues[data.trackvar]=data.trackValue),T.Utils.getLayout().trackValues(data.trackType,delayEventForTab.dataValues))}},onWindowResize(){this.arrangeTabs(),T.Utils.debounce($.proxy(this.arrangeTabs,this),this.delay)}})}(jQuery),function($){T.Module.TabsRebrush=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$dropdownToggle=this.$ctx.find(".js-dropdown-toggle"),this.$dropdownItem=this.$ctx.find(".js-dropdown-item"),this.$tabSticky=this.$ctx.find(".tabs-sticky"),this.$header=$(".nav-sticky"),this.queryString=window.location.search,this.isHeaderOne=this.$header.length>
70,this.isHeaderOne||(this.$header=$(".js-header-rebrush")),this.$tabs=this.$ctx.find(".tabs-rebrush-desktop .tab"),this.$tabsContentPanels=this.$ctx.find(".tab-rebrush-panel"),this.$tabsContentArea=this.$ctx.find(".tabs-rebrush-content"),this.$sliderElement=this.$ctx.find(".tabs-slider"),this.$tabsWrapper=this.$ctx.find(".tabs-rebrush-desktop"),this.loadStockDataOnce=!0,this.stockTabId="section-stockdata",this.tabsTotalHeight=this.$tabsContentArea.height(),this.setDropdownToggleText($(this.$dropdownItem.get(0)).text()),this.initSlick(),this.checkViewport(),this.$tabs.on("click",ev=>{ev.preventDefault(),this.handleTabChange(ev)}),this.$sliderElement.on("beforeChange",(ev,slick,currentSlide,nextSlide)=>this.trackSliderPosition(nextSlide)),this.$dropdownToggle.on("click",()=>{this.toggleDropdown()}),this.$dropdownItem.on("click",ev=>{this.onClickDropdownItem(ev)}),$(window).on("scroll",T.Utils.debounce(()=>this.onWindowScroll(),50)),$(window).on("resize",T.Utils.debounce(()=>this.checkViewport(),50)),this._events.on("addTrackValuesToTab",data=>this.addTrackValuesToTab(data)),$(window).on("hashchange",()=>this.scrollToTabInUrl()),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this._events.on("tabsAreaHeightFinal",()=>{this.observerReviewsTabInViewport(),this.scrollToTabInUrl()}),this.checkHeightInterval=setInterval(()=>this.checkTabsContentAreaHeightChanges(),100),setTimeout(()=>clearInterval(this.checkHeightInterval),5e3),this.isSynced=!0)},checkTabsContentAreaHeightChanges(){this.contentAreaHasFinalHeight()&&(clearInterval(this.checkHeightInterval),this._events.emit("tabsAreaHeightFinal"))},contentAreaHasFinalHeight(){const heightBefore=this.tabsTotalHeight;return this.tabsTotalHeight=this.$tabsContentArea.height(),this.tabsTotalHeight===heightBefore},scrollToTabInUrl(){const currentTabId=this.getCurrentTabIdFromUrl();if(currentTabId){const $currentContent=this.findTabContentById(currentTabId);this.scrollTo(this.getTabPosition($currentContent))}},checkViewport(){T.Utils.isViewport("desktop")?this.$stickyContainer=this.$ctx.find(".tabs-rebrush-desktop"):this.$stickyContainer=this.$ctx.find(".tabs-rebrush-mobile"),this.containerHeight=this.$stickyContainer.outerHeight()},initSlick(){const $paginationArrows=this.$tabsWrapper.find(".js-arrows"),$prevArrow=$paginationArrows.children(".prev"),$nextArrow=$paginationArrows.children(".next");$prevArrow.on("click",()=>this.handleTabChange(void 0,"prev")),$nextArrow.on("click",()=>this.handleTabChange(void 0,"next")),this.$sliderElement.slick({infinite:!1,speed:300,slidesToShow:1,slidesToScroll:1,variableWidth:!0,focusOnSelect:!0,appendArrows:$paginationArrows,prevArrow:$prevArrow,nextArrow:$nextArrow,accessibility:!1,rtl:T.Utils.isRTL()})},onWindowScroll(){if(this.$tabSticky.width(this.$ctx.outerWidth()),this.$ctx.length)if(this.isHeaderOne)this.$header.hasClass("is-active")?this.handleScrollUp():this.handleScrollDown();else{let headerHeight=this.$header.find(".menu").innerHeight();this.$tabSticky.css("top",headerHeight+"px");const currentTabIndex=this.getCurrentlyViewedTabIndex(this.$tabSticky.outerHeight());this.handleScrollChange(currentTabIndex)}},handleScrollUp(){const headerHeight=this.$header.outerHeight();this.$tabSticky.css("top",headerHeight+"px");const additionalOffset=headerHeight+this.$tabSticky.outerHeight(),currentTabIndex=this.getCurrentlyViewedTabIndex(additionalOffset);this.handleScrollChange(currentTabIndex)},handleScrollDown(){this.$tabSticky.css("top","0");const currentTabIndex=this.getCurrentlyViewedTabIndex(this.$tabSticky.outerHeight());this.handleScrollChange(currentTabIndex)},trackSliderPosition(nextSlide){const $slickTrack=this.$sliderElement.find(".slick-track");nextSlide>0?$slickTrack.addClass("prev-button-visible"):$slickTrack.removeClass("prev-button-visible")},getTabPosition($tabToScrollTo){if(0!==$tabToScrollTo.length){const additionalOffset=this.$tabSticky.outerHeight()+(this.$header.outerHeight()+parseInt(this.$header.css("top").replace("px",""),10));let tabPos=$tabToScrollTo.get(0).getBoundingClientRect().top+window.pageYOffset;return tabPos-=additionalOffset}console.log("Tabrebrush.js: Tab content you are trying to load doesnt exist in current page")},scrollTo(tabPos){window.scrollTo({top:tabPos,behavior:"smooth"})},toggleDropdown(){this.$dropdownToggle.toggleClass("open"),this.$ctx.find(".tabs-dropdown").toggleClass("open")},observerReviewsTabInViewport(){const $reviewsTab=$("#section-reviews");if(!$reviewsTab[0])return;const reviewsTabObserver=new IntersectionObserver(([e])=>{e.intersectionRatio>0&&(this.loadReviewsTab(),reviewsTabObserver.unobserve($reviewsTab[0]))});reviewsTabObserver.observe($reviewsTab[0])},loadReviewsTab(){const triggerEventTracking="section-reviews"===this.getCurrentTabIdFromUrl();
7this._events.emit("loadTab:reviews",{triggerEventTracking:triggerEventTracking})},handleTabChange(ev,direction="undefined"){let targetIndex=this.$sliderElement.slick("slickCurrentSlide");if(ev&&(targetIndex=$(ev.currentTarget).data("slick-index")),"next"===direction&&targetIndex++,"prev"===direction&&targetIndex--,targetIndex<0)return;const $currentTab=$(this.$tabs.get(targetIndex)),tabId=this.getTabId($currentTab),$currentContent=this.findTabContentById(tabId);this.setCurrentLocationHash(targetIndex),this.scrollTo(this.getTabPosition($currentContent)),this.handleStockData($currentTab)},addTrackValuesToTab(data){let $tabToTrack=this.$ctx.find(`a[href*='${data.trackTabId}']`);if($tabToTrack.length>0){let delayEventForTab=$tabToTrack.data("delayeventtracking");delayEventForTab&&data.trackvar&&(delayEventForTab.dataValues[data.trackvar]=data.trackValue),this._events.emit("tabsrebrush:delayedtrackvalues",{$currentTab:$tabToTrack,dataValues:delayEventForTab.dataValues})}},handleScrollChange(currentTabIndex){const $currentTab=$(this.$tabs.get(currentTabIndex)),tabId=this.getTabId($currentTab);if(currentTabIndex>=0){this.$sliderElement.slick("slickGoTo",currentTabIndex);const $currentTabMobile=$(this.$dropdownItem.get(currentTabIndex));this.loadStockDataOnce&&tabId===this.stockTabId&&this.handleStockData($currentTab),this.setDropdownToggleText($currentTabMobile.text()),this.setCurrentLocationHash(currentTabIndex)}},getCurrentlyViewedTabIndex(additionalOffset=0){const tabsContentElements=this.$tabsContentPanels.toArray();if($(window).scrollTop()+$(window).height()>=$(document).height()-100)return tabsContentElements.length-1;const calcElementSwitchOffset=el=>{const offsetForSwitch=el.getBoundingClientRect().bottom-150-additionalOffset;return Math.ceil(offsetForSwitch)};return tabsContentElements.findIndex(el=>{const offsetsInViewport=tabsContentElements.map(el=>calcElementSwitchOffset(el)).filter(offset=>offset>=0);return Math.min.apply(null,offsetsInViewport)===calcElementSwitchOffset(el)})},resetSliderPosition(){this.$sliderElement.slick("slickGoTo",0),this.setDropdownToggleText($(this.$dropdownItem.get(0)).text()),this.removeTabsFromCurrentLocationHash()},onClickDropdownItem(ev){ev.preventDefault();const $currentTab=$(ev.currentTarget),$currentTabDesktop=$(this.$tabs[$currentTab.index()]);this.setDropdownToggleText($currentTab.text()),this.toggleDropdown();const tabId=this.getTabId($currentTab),$currentContent=this.findTabContentById(tabId);this.scrollTo(this.getTabPosition($currentContent)),$currentTabDesktop.trigger("click")},setDropdownToggleText(text){this.$dropdownToggle.find(".js-dropdown-toggle-text").text(text)},setCurrentLocationHash(tabIndex){const newLocationHash=$(this.$tabs.get(tabIndex)).attr("href")+this.getCurrentLocationHashWithoutTabs();history.replaceState(null,null,window.location.pathname+this.queryString+newLocationHash)},removeTabsFromCurrentLocationHash(){const newLocationHash="#/"+this.getCurrentLocationHashWithoutTabs();history.replaceState(null,null,window.location.pathname+this.queryString+newLocationHash)},getCurrentLocationHashWithoutTabs(){const currentHash=window.location.hash;let currentHashWithoutTabs=currentHash.slice(2);return currentHash.includes("Tabs=")&&(currentHashWithoutTabs=currentHash.slice(this.getPositionOfStringInString(currentHash,"/",2)+1)),currentHashWithoutTabs},getCurrentTabIdFromUrl(){const currentHash=window.location.hash;if(!currentHash.length)return;const tabsHash=currentHash.match(/Tabs=([\w-]*)/);return tabsHash?tabsHash[1]:void 0},getPositionOfStringInString:(string,subString,index)=>string.split(subString,index).join(subString).length,getTabId:$tab=>$tab.attr("href").match(/(=)(.*)\//)[2],findTabContentById(id){return this.$tabsContentPanels.filter(`#${id}`)},handleStockData(currentTab){const tabId=this.getTabId(currentTab),$currentContent=this.findTabContentById(tabId),ajaxId=currentTab.data("ajax-request-id");if(ajaxId){this._events.emit("loader:open",{loaderType:"area",loaderArea:$currentContent,$trigger:currentTab});const request=T.Utils.startAjaxRequest(ajaxId,!1,!1);request&&request[0]&&this._events.emit("loader:close",{loaderType:"area",loaderArea:$currentContent,$trigger:currentTab}),$currentContent.removeClass("initial-content-height"),this.loadStockDataOnce=!1}}})}(jQuery),function($){T.Module.TabsRebrushTracking=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$headerNavSticky=$(".nav-sticky"),this.originalOffset=this.$ctx.offset().top,"desktop"!==T.Utils.getViewport()?this.delay=8e3:this.delay=12e3,this.isTracked=!1,this.timer=0,this.$ctx.on("click",()=>this.triggerTabTracking()),this._events.on("tabsrebrush:delayedtrackvalues",data=>this.delayTabTracking(data)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.initObserver())}
7,initObserver(){const headerHeight=this.$headerNavSticky.outerHeight();this.observer=new MutationObserver(()=>{if(!this.isTracked&&this.$ctx.hasClass("slick-active")){let scrollTop=$(window).scrollTop(),contentHeight=this.$ctx.parents(".js-tabs-rebrush").find(".js-tabs-rebrush-content")[0].getBoundingClientRect().height;this.$ctx.offset().top-headerHeight<=scrollTop&&contentHeight>=scrollTop-this.originalOffset&&this.delayTabTracking(this.data?this.data:void 0),this.wasInFocus=!0}else this.wasInFocus&&(this.wasInFocus=!1,this.clearTimer())}),this.$ctx&&this.observer.observe(this.$ctx[0],{attributeFilter:["class"]})},triggerTabTracking(){this.timer=this.delay,this.isTracked||(this.$ctx.data("delayeventtracking")?this.delayTabTracking(this.data):this.trackTab())},delayTabTracking(data){this.isTracked||data&&data.$currentTab[0]!==this.$ctx[0]||(this.clearTimer(),data&&(this.data=data),this.interval=setInterval(()=>{this.timer<this.delay?this.timer=this.timer+100:data&&data.dataValues?this.trackTab(data):this.triggerTabTracking()},100))},clearTimer(){this.interval&&(this.interval=clearInterval(this.interval))},trackTab(data){if(this.timer>=this.delay){let dataValues=data?data.dataValues:{page_tab:this.$ctx.data("tracking-name"),page_url:this.$ctx.attr("href")};T.Utils.getLayout().trackValues("tab open",dataValues),this.isTracked=!0,this.observer.disconnect(),this.clearTimer()}}})}(jQuery),function($){T.Module.TabsTogglebox=T.createModule({start(resolve){const mod=this;return mod.$ctx=$(this._ctx),mod.id=mod.$ctx.attr("data-t-id"),mod.toggleBoxIsActive=!1,mod.groupid=mod.$ctx.data("group-id"),mod.groupSelector=mod.groupid?`.js-tabgroup-${mod.groupid}`:"",mod.productsetTablinkSelector=".js-trigger-productset-component-request",mod.$togglebox=mod.$(".m-togglebox").first(),mod.$tabs=mod.groupid?mod.$(`.m-tabs[data-group-id='${mod.groupid}']`):mod.$(".m-tabs"),mod.groupid&&mod.$tabs.find("> div.tabs-wrapper > section.tab-panel").addClass(`js-tabgroup-${mod.groupid}`),mod.$tabLinks=this.$(`.tabs-nav${mod.groupSelector} li:not(.tab-more) > a`),mod.$tabContents=this.$(`.tab-panel${mod.groupSelector}`),mod.productsetSetup=!!mod.$ctx.attr("data-productset-setup"),mod._events.on("onGridListInit",$.proxy(mod.onGridListInit,mod)),mod._events.on("openTabToggleBox",$.proxy(mod.onOpenTabToggleBox,mod)),mod.selectors={ajaxRequestIdAttr:"ajax-request-id",ajaxRequestIdData:"data-ajax-request-id",replaceContainer:"data-replace-container"},T.Utils.registerMq("md",{match:()=>mod.setupTabs(),unmatch:()=>mod.setupTogglebox()}),T.Utils.isViewport("mobile")&&this.setupTogglebox(),resolve()},sync(){},fillTabs(){const mod=this;this.$tabLinks.each(function(){return $(this).parent().removeClass("is-active")}),this.$tabContents.removeClass("is-active");let firstTabOpen=!1;return this.$togglebox.children(".item").each(function(i){const $this=$(this),$content=$(this).children(".body").children(),$tab=mod.$tabContents.eq(i);$content.appendTo($tab),$tab.attr("id",$tab.data("id")).removeData("id"),$(this).children(".is-open").length&&!firstTabOpen&&(mod.$tabLinks.eq(i).parent().addClass("is-active"),$tab.addClass("is-active"),firstTabOpen=!0);const ajaxRequestId=$this.data(mod.selectors.ajaxRequestIdAttr);null!=ajaxRequestId&&($tab.attr(mod.selectors.ajaxRequestIdData,ajaxRequestId),$tab.attr(mod.selectors.replaceContainer,$this.attr(mod.selectors.replaceContainer)),$this.removeData(mod.selectors.ajaxRequestIdAttr),$this.removeAttr(mod.selectors.ajaxRequestIdData))}),this.$togglebox.empty()},fillTogglebox(){const mod=this,template=this.$(".tpl-tabstogglebox-togglebox-item").html();return this.$tabLinks.each(function(i,link){const $link=$(link),$listElement=$link.parent("li"),$content=mod.$tabContents.eq(i),id=$content.attr("id"),tabTrackName=$link.data("tracking-name"),loadTrigger=$link.data("load-trigger"),$toggleboxItem=$(doT.template(template)({id:id,tabTrackName:tabTrackName,title:$link.text(),tabLoadTrigger:loadTrigger}));$content.data("id",id).removeAttr("id");const $toggleboxContent=$toggleboxItem.find(".togglebox-content");$content.children().appendTo($toggleboxContent);const ajaxRequestId=$listElement.data(mod.selectors.ajaxRequestIdAttr)?$listElement.data(mod.selectors.ajaxRequestIdAttr):$listElement.find(">a.js-trigger-ajax-request").data(mod.selectors.ajaxRequestIdAttr);return null!=ajaxRequestId&&($toggleboxItem.attr(mod.selectors.ajaxRequestIdData,ajaxRequestId),$toggleboxContent.attr(mod.selectors.replaceContainer,$content.attr(mod.selectors.replaceContainer)),$listElement.removeData(mod.selectors.ajaxRequestIdAttr),$listElement.removeAttr(mod.selectors.ajaxRequestIdData),$content.removeData(mod.selectors.replaceContainer),$content.removeAttr(mod.selectors.replaceContainer)),$content.hasClass("is-active")&&$toggleboxItem.children().addClass("is-open"),$toggleboxItem.appendTo(mod.$togglebox)})},fillProductsetTogglebox(){const mod=this;return mod.$tabLinks.each(function(i,link){if(!$(link).is(mod.productsetTablinkSelector)){const $content=mod.$tabContents.eq(i),id=$content.attr("id");if($content.data("id",id).removeAttr("id"),$content.hasClass("is-active"))return mod.$togglebox.children().eq(i).children().addClass("is-open")}})},setupTogglebox(){return this.$tabs.addClass("hidden"),this.productsetSetup?this.fillProductsetTogglebox():this.fillTogglebox(),this.$togglebox.removeClass("hidden"),this.toggleBoxIsActive=!0},setupTabs(){return this.$togglebox.addClass("hidden"),this.productsetSetup||this.fillTabs(),this.$tabs.removeClass("hidden"),this.toggleBoxIsActive=!1},onGridListInit(){return this.$togglebox.find(".js-list-layout").addClass("g-layout-fourth").removeClass("g-layout-full")},onOpenTabToggleBox(data){const mod=this;if(data.$parent.find(`[data-t-id="${mod.id}"]`).length){const{tabId:tabId}=data,{scrollToTab:scrollToTab}=data;if(mod.toggleBoxIsActive){const $toggle=mod.$(`[data-tab-reference='${tabId}']:visible`);return mod._events.emit("openToggleBoxItem",{$toggle:$toggle,instant:$toggle.data("close-instantly")}),void(scrollToTab&&T.Utils.scrollToTop($toggle.offset().top))}if(!mod.toggleBoxIsActive)return mod._events.emit("openTab",{tabId:tabId,scrollToTab:scrollToTab})}},onToggleListView(){return this.$togglebox.find(".js-list-layout").addClass("g-layout-full").removeClass("g-layout-fourth")}})}(jQuery),function($){T.Module.TagCloud=T.createModule({start(resolve){return this.setupConstants(),this.$ctx=$(this._ctx),this.isFirstLoad=!0,this._ctx.module=this,this.callbacks=this._ctx.callbacks||[],this.initialize(),resolve()}
7,listenToTagCloudChange(callback){return this.callbacks.push(callback),this},showMore(){this.moreLessState=this.STATE_MORE,this.manageVisibilities()},showLess(){this.moreLessState=this.STATE_LESS,this.manageVisibilities()},resetSelected(){this.getSelectedItems().remove(),this.manageVisibilities(),this.onTagCloudChange()},select($availableItemOrTagId,suppressEvent){let tagId,$availableItem=$availableItemOrTagId;typeof $availableItemOrTagId===this.TYPE_STRING?(tagId=$availableItemOrTagId,$availableItem=this.getItemFromList(this.$availableTagsList,tagId)):tagId=$availableItem.attr(this.ATTRIBUTE_DATA_TAG_ID);const $alreadySelectedItem=this.getItemFromList(this.$selectedTagsList,tagId);if($alreadySelectedItem.length>0)return void this.deselect($alreadySelectedItem);const $newSelectedItem=$availableItem.clone();$newSelectedItem.find(this.SELECTOR_BUTTON).addClass("a-button-primary"),$newSelectedItem.insertBefore(this.$selectedTagsResetBtnContainer),this.setupItemEvents(),this.manageVisibilities(),$newSelectedItem.is(":hidden")&&$newSelectedItem.show(),1!=suppressEvent&&this.onTagCloudChange()},deselect($selectedItemOrTagId){let $selectedItem=$selectedItemOrTagId;typeof $selectedItemOrTagId===this.TYPE_STRING&&($selectedItem=this.getItemFromList(this.$selectedTagsList,$selectedItemOrTagId)),$selectedItem.remove(),this.setupItemEvents(),this.manageVisibilities(),this.onTagCloudChange()},add(label,tagId,data){"string"!=typeof data&&(data=JSON.stringify(data));const liEl=document.createElement("LI");liEl.classList.add("item"),liEl.setAttribute(this.ATTRIBUTE_DATA_TAG_ID,tagId),liEl.setAttribute(this.ATTRIBUTE_DATA_TAG_DATA,data);const btnEl=document.createElement("BUTTON");btnEl.classList.add("a-button");const btnSpanEl=document.createElement("SPAN");btnSpanEl.classList.add("text"),btnSpanEl.innerText=label,btnEl.appendChild(btnSpanEl),liEl.appendChild(btnEl),$(liEl).insertBefore(this.$availableTagsMoreBtnContainer),this.setupItemEvents(),this.manageVisibilities()},clear(){this.getAvailableItems().remove(),this.getSelectedItems().remove(),this.manageVisibilities()},setMoreLessItemLimit(newLimit,silent){this.moreLessItemLimit=newLimit||this.DEFAULT_MORE_LESS_ITEM_LIMIT,silent!==this.SILENT&&this.manageVisibilities()},onTagCloudChange(){if(!this.callbacks.length)return;const $selectedItems=this.getSelectedItems();let data=[],tagIds=[];$.each($selectedItems,(index,item)=>{const $item=$(item),tagData={data:this.getTagData($item),id:this.getTagId($item)};tagIds.push(tagData.id),data.push(tagData)}),this.appendSelectedTags(tagIds),$(this.callbacks).each((index,callback)=>{callback(data)})},appendSelectedTags(tagIds){let that=this,urlParam="",currentUrl=window.location.href.split("?");if(void 0!==currentUrl[1]&¤tUrl[1].length>0){const currentParameters=currentUrl[1].split("&");for(let parameter of currentParameters)parameter.split("=")[0]!==that.KEY_LABEL&&(urlParam=""!==urlParam?urlParam+`&${parameter}`:`${parameter}`)}tagIds.forEach(function(tagId){urlParam=""!==urlParam?urlParam+`&${that.KEY_LABEL}=`+tagId:`${that.KEY_LABEL}=`+tagId});const options={url:currentUrl[0]+"?"+urlParam};return T.Utils.replaceHistory(options)},handlePreSelectedTags(){if(!this.isFirstLoad)return;const that=this,url=window.location.href;let qm=url.indexOf("?");if(-1===qm)return void(this.isFirstLoad=!1);let parameters=url.substring(qm+1).split("&");parameters=parameters.filter(function(param){return param.split("=")[0]===that.KEY_LABEL});for(let[i,parameter]of parameters.entries()){let suppressEvent=!0;i===parameters.length-1&&(suppressEvent=!1);let tag=parameter.split("=");parameter.length>0&&tag[0]===this.KEY_LABEL&&this.select(tag[1],suppressEvent)}this.isFirstLoad=!1},getTagId($item){return $item.attr(this.ATTRIBUTE_DATA_TAG_ID)},getTagData($item){let data=$item.attr(this.ATTRIBUTE_DATA_TAG_DATA)||"";try{data=JSON.parse(data)}catch(error){}return data},updateAvailableContainer(){const $availableItems=this.getAvailableItems();$availableItems.length?(this.$ctx.show(),this.moreLessItemLimit<$availableItems.length?(this.showMoreBtn(),this.showLessBtn()):(this.hideMoreBtn(),this.hideLessBtn()),this.updateMoreLessItemVisibility()):this.$ctx.hide()},updateMoreLessItemVisibility($availableItems){($availableItems=$availableItems||this.getAvailableItems()).slice(0,this.moreLessItemLimit).show();const $moreLessItems=$availableItems.slice(this.moreLessItemLimit);this.moreLessState===this.STATE_LESS?$moreLessItems.hide():$moreLessItems.show()}
7,updateSelectedContainer(){this.getSelectedItems().length>0?this.$selectedTagsContainer.show():this.$selectedTagsContainer.hide()},getSelectedItems(){return this.$selectedTagsList.find(this.SELECTOR_ITEM)},getAvailableItems(){return this.$availableTagsList.find(this.SELECTOR_ITEM)},getItemFromList($list,tagId){const selector=this.SELECTOR_ITEM+"["+this.ATTRIBUTE_DATA_TAG_ID+'="'+tagId+'"]';return $list.find(selector)},showMoreBtn(){this.moreLessState===this.STATE_LESS?this.$availableTagsMoreBtnContainer.show():this.hideMoreBtn()},showLessBtn(){this.moreLessState===this.STATE_MORE?this.$availableTagsLessBtnContainer.show():this.hideLessBtn()},hideMoreBtn(){this.$availableTagsMoreBtnContainer.hide()},hideLessBtn(){this.$availableTagsLessBtnContainer.hide()},setupConstants(){this.STATE_MORE="more",this.STATE_LESS="less",this.EVENT_CLICK="click",this.SILENT=!0,this.SELECTOR_BUTTON="button",this.SELECTOR_ITEM="li.item",this.ATTRIBUTE_DATA_TAG_ID="data-tag-id",this.ATTRIBUTE_DATA_TAG_DATA="data-tag-data",this.TYPE_STRING="string",this.DEFAULT_MORE_LESS_ITEM_LIMIT=10,this.KEY_LABEL="label"},initialize(){this.initializeByDOM(),this.setupBtnEvents(),this.setupItemEvents(),this.manageVisibilities()},initializeByDOM(){this.setMoreLessItemLimit(this.$ctx.data("more-less-item-limit"),this.SILENT),this.moreLessState=this.STATE_LESS,this.$availableTagsContainer=this.$ctx.find(".js-available-tags"),this.$availableTagsList=this.$availableTagsContainer.find(".js-available-tags-list"),this.$availableTagsMoreBtn=this.$availableTagsList.find(".js-available-tags-more-btn"),this.$availableTagsMoreBtnContainer=this.$availableTagsMoreBtn.parent(),this.$availableTagsLessBtn=this.$availableTagsList.find(".js-available-tags-less-btn"),this.$availableTagsLessBtnContainer=this.$availableTagsLessBtn.parent(),this.$selectedTagsContainer=this.$ctx.find(".js-selected-tags"),this.$selectedTagsList=this.$selectedTagsContainer.find(".js-selected-tags-list"),this.$selectedTagsResetBtn=this.$selectedTagsList.find(".js-selected-tags-reset-btn"),this.$selectedTagsResetBtnContainer=this.$selectedTagsResetBtn.parent()},setupBtnEvents(){this.setupBtnEvent(this.$availableTagsMoreBtn,this.EVENT_CLICK,this.showMore.bind(this)),this.setupBtnEvent(this.$availableTagsLessBtn,this.EVENT_CLICK,this.showLess.bind(this)),this.setupBtnEvent(this.$selectedTagsResetBtn,this.EVENT_CLICK,this.resetSelected.bind(this))},setupBtnEvent($item,eventType,callback){$item.on(eventType,event=>(event.preventDefault(),callback(),!1))},setupItemEvents(){this.setupAvailableItemEvents(),this.setupSelectedItemEvents()},setupAvailableItemEvents(){const $availableItems=this.getAvailableItems();$.each($availableItems,(index,availableItem)=>{const $availableItem=$(availableItem),$availableBtn=$availableItem.find(this.SELECTOR_BUTTON);$availableBtn.unbind(this.EVENT_CLICK),$availableBtn.on(this.EVENT_CLICK,()=>{this.select($availableItem)})})},setupSelectedItemEvents(){const $selectedItems=this.getSelectedItems();$.each($selectedItems,(index,selectedItem)=>{const $selectedItem=$(selectedItem),$selectedBtn=$selectedItem.find(this.SELECTOR_BUTTON);$selectedBtn.unbind(this.EVENT_CLICK),$selectedBtn.on(this.EVENT_CLICK,()=>{this.deselect($selectedItem)})})},manageVisibilities(){this.updateAvailableContainer(),this.updateSelectedContainer()}})}(jQuery),function($){T.Module.Teaser=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.$media=this.$(".teaser-media"),this.$content=this.$(".teaser-content"),this.$modelContainer=this.$media.find(".js-model-viewer-container"),this.img=this.$media.find("img")[0],this.isUgcTeaser=this.$ctx.hasClass("teaser-ugc"),this.isUgcTeaser&&this.img&&(this.ro=new ResizeObserver((entry,observer)=>{setTimeout(()=>this.whileMediaLoads(),0)}),this.ro.observe(this._ctx)),this.$modelViewerButton=$(".js-model-trigger",this.$ctx),this.$modelViewerButton.on("click",ev=>this.onClickModelViewerButton(ev)),this._events.on("3dmodel:trigger-toggle",data=>this.toggleModelTrigger(data)),resolve()},sync(){this.isSynced||(this.isSynced=!0)},onClickModelViewerButton(ev){let $currentTarget=$(ev.currentTarget),$mediaHeight=this.$media.height();if($currentTarget.off("click"),$currentTarget.attr("disabled","disabled"),this._events.emit("3dmodel:open",{$modelCtx:this.$modelContainer}),$currentTarget.hasClass("a-link")){let $disableMediaModelTrigger=$(this.$modelViewerButton[0]);$disableMediaModelTrigger&&$disableMediaModelTrigger.off("click"),this._events.emit("loader:open",{loaderType:"inline",loaderArea:$currentTarget,$trigger:$
7currentTarget}),this._events.emit("3dmodel:show",{$modelTrigger:$currentTarget,$modelCtx:this.$modelContainer,$modelHeight:$mediaHeight})}else{let $disableButtonModelTrigger=$(this.$modelViewerButton[1]),$modelTriggerChildren=$currentTarget.children();$disableButtonModelTrigger&&($disableButtonModelTrigger.off("click"),$disableButtonModelTrigger.attr("disabled","disabled")),this._events.emit("loader:open",{loaderType:"area",loaderArea:$modelTriggerChildren,$trigger:$modelTriggerChildren}),this._events.emit("3dmodel:show",{$modelTrigger:$modelTriggerChildren,$modelCtx:this.$modelContainer,$modelHeight:$mediaHeight})}},toggleModelTrigger(data){data.modelCtx[0]===this.$modelContainer[0]&&(data.disableTrigger?(this.$modelViewerButton.off("click"),this.$modelViewerButton.attr("disabled","disabled")):(this.$modelViewerButton.on("click",ev=>this.onClickModelViewerButton(ev)),this.$modelViewerButton.removeAttr("disabled")))},whileMediaLoads(){const $img=$(this.img),$socialheadline=this.$content.siblings(".teaser-social-headline");$img.hasClass("lazyloaded")?(this.$content.removeClass("relative"),$socialheadline.removeClass("relative"),this.ro.disconnect()):this.$content.hasClass("relative")||(this.$content.addClass("relative"),$socialheadline.addClass("relative"))}})}(jQuery),function($){T.Module.TeaserSlider=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$slider=this.$(".js-slider"),this._events.on("t.sync",()=>this.sync()),this.isSynced=!1,resolve()},sync(){this.isSynced||(this.isSynced=!0,this.slider=this._sandbox.getModuleById(this.$slider.data("t-id")),this.initSlider())},initSlider(){return null!=this.slider?this.slider.init({infinite:!0,arrows:!0,dots:!1,useCSS:!1,fade:!1,slidesToShow:1}):void 0}})}(jQuery),function($){T.Module.TechnicalInformationRebrush=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$searchInput=this.$ctx.find(".js-search-input"),this.$contentWrap=this.$ctx.find(".js-technical-info-content-wrap"),this.$additionalInfoButton=this.$ctx.find(".js-additional-technical-info"),this.$arrowIcon=this.$ctx.find(".js-icon-arrow-down"),this.$searchIcon=this.$ctx.find(".js-search-icon"),this.$closeIcon=this.$ctx.find(".js-close-icon"),this.$windowWidth=$(window).width(),this.$windowHeight=$(window).height(),this.$noSearchHighlights=this.$ctx.find(".js-technical-info-nohighlights"),this.$mediaGallerySlider=this.$ctx.find(".js-mediagallery-mainslider"),this.$thumbnailSlider=this.$ctx.find(".js-mediagallery-thumbnail-slider"),this.mediaGallerySlider=this.$mediaGallerySlider.length>0?this._sandbox.getModuleById(this.$mediaGallerySlider.data("t-id")):void 0,this.thumbnailSlider=this.$thumbnailSlider.length>0?this._sandbox.getModuleById(this.$thumbnailSlider.data("t-id")):void 0,this.$item=this.$ctx.find(".js-technical-info-item"),this.$searchContent=this.$ctx.find(".js-search-text"),this.trackTechnicalInfoSearch=!0,this.$footnote=this.$ctx.find(".js-search-text >.js-footnote-sup"),this.$footnote.on("click",ev=>this.scrollToFootNote(ev)),this.collapseAll=this.$ctx.data("collapse-all"),this.collapseAll?this.$itemWrap=this.$ctx.find(".js-technical-info-item-wrap"):this.$itemWrap=this.$ctx.find(".js-technical-info-item-wrap").not(":first"),this.configHeight=T.Utils.technicalInformationContent.heights,this.$searchInput.on("keyup",T.Utils.debounce(()=>this.onKeyUp(),500)),this.$arrowIcon.on("click",ev=>this.onClickArrowIcon(ev)),this.$closeIcon.on("click",()=>this.clearInput()),this.$additionalInfoButton.on("click",()=>this.showAdditionalInfo()),$(window).on("resize",T.Utils.debounce(()=>{$(window).width()===this.$windowWidth&&$(window).height()===this.$windowHeight||(this.$windowWidth=$(window).width(),this.$windowHeight=$(window).height(),this.reInitContent())},200)),this._events.on("viewportChanged",()=>this.closeAllContentSections()),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.initialize(),this.isSynced=!0)},initialize(){"desktop"===T.Utils.getViewport()?this.initContentDesktop():(this.$itemWrap.hide(),this.closeAllContentSections()),this.$noSearchHighlights.toggleClass("hidden",!0)},initContentDesktop(){let contentWrapHeightConfig=this.configHeight.desktop,$contentWrapList=this.$contentWrap;this.collapseAll||($contentWrapList=this.$contentWrap.not(":first")),$contentWrapList.each((index,content)=>{let $content=$(content);contentWrapHeightConfig<$content.height()?$content.css("height",contentWrapHeightConfig):$content.find(".js-icon-arrow-down").hide()}),this.closeAllContentSections()},initSlider(){this.mediaGallerySlider&&this.mediaGallerySlider.refreshSlider(),this.thumbnailSlider&&!this.$thumbnailSlider.hasClass("hidden")&&this.thumbnailSlider.refreshSlider()},handleSearch(searchLength){if(this.$contentWrap.removeClass("hidden"),this.$additionalInfoButton.addClass("hidden"),0===searchLength)return this.$closeIcon.toggleClass("hidden",!0),this.$searchIcon.toggleClass("hidden",!1),this.$item.removeClass("hidden"),this.$arrowIcon.show(),this.initSlider(),this.removeSearchHighlights(),this.initialize(),void this.closeAllContentSections();this.$searchIcon.toggleClass("hidden",!0),this.$closeIcon.toggleClass("hidden",!1),this.$contentWrap.css("height","auto"),this.$itemWrap.show(),this.$arrowIcon.hide()},removeSearchHighlights(){this.$searchContent.each((index,content)=>{let $content=$(content),contentText=$content.html();$content.parent().removeClass("is-highlight"),""!==contentText&&$content.html(contentText.replace(/(<mark[^>]*>|<\/mark>)/g,"")),this.addOnClickScrollToFootnote($content)})},onKeyUp(){let searchValue=this.$searchInput.val().toLowerCase(),searchLength=searchValue.length;if(this.handleSearch(searchLength),this.removeSearchHighlights(),0===searchLength)return;this.trackTechnicalInfoSearch&&(T.Utils.getLayout().trackValues("PDP technical data filtered",{}),this.trackTechnicalInfoSearch=!1);let isHighlightsAvailable=!1;this.$contentWrap.map((index,content)=>{let isHighlight=!1;$(content).find(".js-technical-info-item > .js-search-text").map((index,item)=>{let $item=$(item),$itemWrapper=$item.parent(),itemText=$item[0].innerText;if(itemText.length>0&&itemText.toLowerCase().includes(searchValue)){$itemWrapper.addClass("is-highlight"),$itemWrapper.removeClass("hidden");
7const spCharCheck=new RegExp("[^a-zA-Z0-9]");let specialCharacterArray=[],searchValueItem=searchValue,searchValueresult=searchValue,specialcharacter="";for(;spCharCheck.test(searchValueItem);)specialcharacter=spCharCheck.exec(searchValueItem),specialCharacterArray.push(specialcharacter),searchValueItem=searchValueItem.replaceAll(specialcharacter,"");spCharCheck.test(searchValue)&&specialCharacterArray.forEach(specialChar=>{searchValueresult=searchValueresult.replaceAll(specialChar,"\\"+specialChar)}),$item.html(itemText.replaceAll(new RegExp("("+searchValueresult+")","gi"),function(match){return`<mark>${match}</mark>`})),this.addOnClickScrollToFootnote($item),isHighlight=!0}else $itemWrapper.hasClass("is-highlight")||$itemWrapper.addClass("hidden")}),isHighlight?isHighlightsAvailable=!0:$(this.$contentWrap[index]).addClass("hidden")}),this.handleResults(isHighlightsAvailable)},handleResults(isHighlightsAvailable){isHighlightsAvailable?this.$noSearchHighlights.toggleClass("hidden",!0):(this.$contentWrap.addClass("hidden"),this.$noSearchHighlights.toggleClass("hidden",!1))},clearInput(){this.$searchInput.val(""),T.Utils.debounce(this.onKeyUp(),500)},reInitContent(){this.$itemWrap.show(),this.$arrowIcon.show(),this.$contentWrap.css("height","auto"),this.initSlider(),this.removeSearchHighlights(),this.initialize()},onClickArrowIcon(ev){const $currentTarget=$(ev.currentTarget);this.trackingTechnicalInformation(),$currentTarget.hasClass("icon-arrow-down")?this.openContent($currentTarget):this.closeContent($currentTarget),$currentTarget.toggleClass("icon-arrow-up").toggleClass("icon-arrow-down")},trackingTechnicalInformation(){null===window.sessionStorage.getItem("technicalTab")&&(T.Utils.getLayout().trackValues("Technical data toggle opened",{}),window.sessionStorage.setItem("technicalTab","true"))},openContent($currentTarget){"desktop"===T.Utils.getViewport()?$currentTarget.parent().css("height","auto"):($currentTarget.siblings(".js-technical-info-item-wrap").removeClass("hidden").show(),this.initSlider())},closeContent($currentTarget){"desktop"===T.Utils.getViewport()?(this.scrollToElement($currentTarget),$currentTarget.parent().css("height",this.configHeight.desktop)):($currentTarget.siblings(".js-technical-info-item-wrap").addClass("hidden").hide(),this.initSlider())},scrollToElement($currentTarget){const scrollTarget=$currentTarget.offset().top-$currentTarget.parent().height()-this.configHeight.desktop;window.scroll({top:scrollTarget,behavior:"smooth"}),$currentTarget.parent().focus()},closeAllContentSections(){this.$ctx.find(".icon-arrow-up").addClass("icon-arrow-down").removeClass("icon-arrow-up")},openAllContentSections(){this.$ctx.find(".js-icon-arrow-down").trigger("click")},showAdditionalInfo(){this.$contentWrap.removeClass("hidden"),this.$additionalInfoButton.addClass("hidden"),this.reInitContent(),this.closeAllContentSections()},scrollToFootNote(ev){ev.preventDefault(),this._events.emit("scrollToSection:footnotes")},addOnClickScrollToFootnote($target){$target.find(".js-footnote-sup").on("click",ev=>this.scrollToFootNote(ev))}})}(jQuery),function($){T.Module.TermsConditions=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.stateClassHasOpenLayer="has-open-layer",this.stateClassHasOpenLayerSelector=".has-open-layer",this.agreeButtonSelector=".js-agree-button",this.cancelButtonSelector=".js-cancel-terms-button",this.acceptCheckboxSelector=".js-accept-term",this.acceptCheckboxClass="js-accept-term",this.layerTriggerSelector="[data-layer-id]",this.dataReplaceContainerSelector="[data-replace-container]",this.formInputSelector='[data-t-name="FormInput"]',this.sync=$.proxy(this.sync,this),this.$layerTriggerCollection=this.$(this.layerTriggerSelector,this.$ctx),this._events.on("t.sync",this.sync),this.$layerTriggerCollection.on("click",$.proxy(this.onOpenLayer,this)),this.$ctx.on("click",this.agreeButtonSelector,$.proxy(this.onClickAcceptButton,this)),this.$ctx.on("click",this.cancelButtonSelector,$.proxy(this.onClickCancelButton,this)),this._events.on("closeLayer",$.proxy(this.onCloseLayer,this)),this._events.on("hideLayer",$.proxy(this.onCloseLayer,this)),resolve()},sync(){this.isSynced||(this.isSynced=!0)}
7,setAcceptCheckboxState(state){const openLayerTrigger=this.$(this.stateClassHasOpenLayerSelector);if(!0===openLayerTrigger.hasClass(this.acceptCheckboxClass))openLayerTrigger.prop("checked",state);else{openLayerTrigger.parents(this.formInputSelector).find(this.acceptCheckboxSelector).prop("checked",state)}this._events.emit("hideLayer",!1,".js-terms-conditions-layer")},onOpenLayer(ev){ev.preventDefault();const mod=this;$(ev.currentTarget).addClass(this.stateClassHasOpenLayer);const $layerInner=this.$(this.dataReplaceContainerSelector);$layerInner.empty(),this._events.emit("loader:open",{loaderType:"layer",$trigger:$layerInner});const request=T.Utils.onAjaxControllerTriggered(ev,!0);return!!request&&request[0].then(()=>mod._events.emit("loader:close",{$trigger:$layerInner}))},onCloseLayer(ev){return this.$(this.stateClassHasOpenLayerSelector).removeClass(this.stateClassHasOpenLayer)},onClickAcceptButton(ev){return ev.stopPropagation(),ev.preventDefault(),this.setAcceptCheckboxState(!0)},onClickCancelButton(ev){return ev.stopPropagation(),ev.preventDefault(),this.setAcceptCheckboxState(!1)}})}(jQuery),function($){T.Module.TestimonialModule=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.initIsInViewportObserver(),this.initIsInCenterObserver(),resolve()},initIsInViewportObserver(){const observer=new IntersectionObserver(([entry])=>{entry.isIntersecting&&(this.setActive(),observer.unobserve(this._ctx))},{threshold:.5});observer.observe(this._ctx)},initIsInCenterObserver(){new IntersectionObserver(([entry])=>{entry.isIntersecting?this.$ctx.addClass("testimonial-highlighted"):this.$ctx.removeClass("testimonial-highlighted")},{rootMargin:"-49% 0px -49% 0px"}).observe(this._ctx)},setActive(){this.$ctx.addClass("testimonial-active")}})}(jQuery),function($){T.Module.TestimonialWrapper=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$testimonials=this.$ctx.find(".m-testimonialmodule"),this.setTestimonialAlignments(),resolve()},setTestimonialAlignments(){this.$testimonials.each((index,testimonial)=>{const $testimonial=$(testimonial);(index+1)%2==0?$testimonial.addClass("testimonial-alignment-right"):$testimonial.addClass("testimonial-alignment-left")})}})}(jQuery),function($){T.Module.TileNavigation=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.isSynced=!1,this.$tiles=this.$ctx.find(".js-tile-navigation-link"),this.$moreLessButton=this.$ctx.find(".js-show-more-services"),this.$moreLessButton.on("click",()=>this.showMoreTiles()),this._events.on("openLayer",()=>this.onOpenLayer()),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.displayShowMoreButton(),this.isSynced=!0)},displayShowMoreButton(){this.$tiles.length>6&&this.$moreLessButton.removeClass("hidden")},showMoreTiles(){$(this.$tiles[5]).nextAll().removeClass("hidden"),this.$moreLessButton.addClass("hidden"),$(this.$tiles[6]).trigger("focus")},onOpenLayer(){return this._events.emit("togglePageScrolling",{pin:!0}),$(window).on("resize",T.Utils.debounce(this.resizeHandler,50))}})}(jQuery),function($){T.Module.TimeSlotBooking=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.selector={calendar:".js-calendar",moreToggle:".js-more-toggle",timeslotsContainer:".js-timeslots",timeslotRadio:".js-timeslot",confirmButton:".js-confirm",toggleBoxSubtext:".js-subtext",container:".js-container",alert:".js-alert",hiddenInputId:".js-hidden-id",hiddenInputDescription:".js-hidden-description",hiddenInputCarrier:".js-hidden-carrier",hiddenInputRequestHashCode:".js-hidden-requestHashCode",hiddenInputUtcStartTime:".js-hidden-utcStartTime",hiddenInputUtcEndTime:".js-hidden-utcEndTime",hiddenInputTimeZoneId:".js-hidden-timeZoneId",formInputCalendar:".js-forminput-calendar",moreToggleselectedLabel:".js-label",errorBox:".js-tsb-error",toggleBoxContent:".js-content",moreLess:".js-morelesslink"},this.elm={$calendar:this.$(this.selector.calendar),$moretoggle:this.$(this.selector.moreToggle),$confirm:this.$(this.selector.confirmButton),$subtext:this.$(this.selector.toggleBoxSubtext),$container:this.$(this.selector.container),$alert:this.$(this.selector.alert),$timeslotsContainer:this.$(this.selector.timeslotsContainer),$hiddenInputId:this.$(this.selector.hiddenInputId),$hiddenInputDescr:this.$(this.selector.hiddenInputDescription),$hiddenInputCarrier:this.$(this.selector.hiddenInputCarrier),$hiddenInputRequestHashCode:this.$(this.selector.hiddenInputRequestHashCode),$hiddenInputUtcStartTime:this.$(this.selector.hiddenInputUtcStartTime),$hiddenInputUtcEndTime:this.$(this.selector.hiddenInputUtcEndTime),$hiddenInputTimeZoneId:this.$(this.selector.hiddenInputTimeZoneId),$moreToggleselectedLabel:this.$(this.selector.moreToggleselectedLabel),$noTimeslotRadio:this.$(".no-timeslot").find(this.selector.timeslotRadio),$errorBox:this.$(this.selector.errorBox),$moreLess:this.$(this.selector.moreLess),$toggleBoxContent:this.$(this.selector.toggleBoxContent)},this.elm.$errorBox.length&&setTimeout(()=>{T.Utils.scrollToTop(this.elm.$errorBox)},250),this.elm.$alert.hide(),this._events.on("t.sync",()=>this.sync()),this.elm.$moretoggle.on("click",()=>this.loadTimeslots()),this.elm.$confirm.on("click",()=>this.confirmTimeslots()),resolve()},sync(){this.isSynced=!0},confirmTimeslots(){const $selectedRadio=this.$(this.selector.timeslotRadio).filter(":checked");this.$ctx.find(".js-content").addClass("hidden"),this.elm.$subtext.html($selectedRadio.data("description")),this.elm.$hiddenInputId.val();const description=$selectedRadio.data("description"),carrier=$selectedRadio.data("carrier"),utcStartTime=$selectedRadio.data("utcstarttime"),RequestHashCode=$selectedRadio.data("requesthashcode"),utcEndTime=$selectedRadio.data("utcendtime"),timeZoneId=$selectedRadio.data("timezoneid"),id=$selectedRadio.val();this.elm.$moreToggleselectedLabel.text(this.elm.$moreToggleselectedLabel.data("selectedLabel")),this.fillHiddenInput
7s(description,id,carrier,utcStartTime,utcEndTime,RequestHashCode,timeZoneId),this.elm.$errorBox.hide(),this.elm.$toggleBoxContent.addClass("hidden");const $morelessIcon=this.elm.$moreLess.find(".icon");$morelessIcon.removeClass("icon-arrow-up"),$morelessIcon.addClass("icon-arrow-down")},fillHiddenInputs(description,id,carrier,utcStartTime,utcEndTime,RequestHashCode,timeZoneId){this.elm.$hiddenInputDescr.val(description),this.elm.$hiddenInputCarrier.val(carrier),this.elm.$hiddenInputUtcEndTime.val(utcEndTime),this.elm.$hiddenInputUtcStartTime.val(utcStartTime),this.elm.$hiddenInputRequestHashCode.val(RequestHashCode),this.elm.$hiddenInputTimeZoneId.val(timeZoneId),this.elm.$hiddenInputId.val(id)},setDataInErrorCase(){const description=this.elm.$noTimeslotRadio.data("description"),id=this.elm.$noTimeslotRadio.val();this.fillHiddenInputs(description,id,"","","","",""),this.elm.$subtext.html(description)},initCalendar(response){this.timeslotArray=[],this.dateArray=[];let dateMomentArray=[],disabledDays="";$.each(response.days,(i,el)=>{dateMomentArray.push(moment(el.date)),this.dateArray.push(el.date)});const dateMin=moment.min(dateMomentArray),dateMax=moment.max(dateMomentArray),m=moment(dateMin);for(;m.diff(dateMax,"days");){const mformat=m.format("YYYY-MM-DD");-1===this.dateArray.indexOf(mformat)&&(disabledDays+=mformat+","),m.add(1,"days")}let dateDef=dateMin;if(this.elm.$hiddenInputId.val()){const formattedDate=moment(this.elm.$hiddenInputId.val());formattedDate.isValid()&&(dateDef=formattedDate)}let template="";return template=template+'\n\t\t\t\t<input class="m-forminput m-forminput-datepicker js-forminput-calendar input calendar"\n\t\t\t\t\tdata-number-of-month-desktop="1"\n\t\t\t\t\tname="date"\n\t\t\t\t\tdata-t-name="FormInput"\n\t\t\t\t\tdata-t-decorator="Calendar"\n\t\t\t\t\tdata-date-disabled-days="'+disabledDays+'"\n\t\t\t\t\tdata-date-disable-weekends=""\n\t\t\t\t\tdata-date-min="'+dateMin+'"\n\t\t\t\t\tdata-date-max="'+dateMax+'"\n\t\t\t\t\tdata-default-date="'+dateDef+'"\n\n\t\t\t\t/>',this.elm.$calendar.html(template),this.$appointments=this.elm.$calendar.find(this.selector.formInputCalendar),this.$appointments.on("change",ev=>this.updateTimeSlots(ev,response)),T.Utils.application._sandbox.addModules(this.$appointments[0])},loadTimeslots(){this._events.emit("loader:open",{loaderType:"layer",$trigger:this.$ctx}),this.elm.$toggleBoxContent.removeClass("hidden");const $morelessIcon=this.elm.$moreLess.find(".icon");$morelessIcon.removeClass("icon-arrow-down"),$morelessIcon.addClass("icon-arrow-up");const request=T.Utils.startAjaxRequest("ajax-load-available-timeslots");return request?request[0].done(response=>{response.days.length>0?(this.initCalendar(response),this._events.emit("loader:close",{$trigger:this.$ctx}),this.elm.$alert.hide(),this.elm.$container.show()):(this._events.emit("loader:close",{$trigger:this.$ctx}
7),response.validationError?(this.showFillAlert(response.responseMessage),this.fillHiddenInputs("","","","","","","")):response.responseError?(this.showFillAlert(response.responseMessage),this.setDataInErrorCase()):(this.elm.$container.hide(),this.elm.$alert.removeClass("alert-error"),this.elm.$alert.addClass("alert-info"),this.elm.$alert.find(".icon").removeClass("icon-clear"),this.elm.$alert.find(".icon").addClass("icon-info-circle"),this.elm.$alert.show(),this.elm.$alert.find(".js-alert-text").html(response.responseMessage),this.setDataInErrorCase()))}).fail((xhr,ajaxOptions,thrownError)=>{this._events.emit("loader:close",{$trigger:this.$ctx}),this.showFillAlert("An error occured by request timeslotbooking"),this.setDataInErrorCase(),console.error(xhr)}):(this._events.emit("loader:close",{$trigger:this.$ctx}),this.showFillAlert("An error occured by request timeslotbooking, 404 not found"),!1)},showFillAlert(message){this.elm.$container.hide(),this.elm.$alert.removeClass("alert-info"),this.elm.$alert.addClass("alert-error"),this.elm.$alert.find(".icon").removeClass("icon-info-circle"),this.elm.$alert.find(".icon").addClass("icon-clear"),this.elm.$alert.show(),this.elm.$alert.find(".js-alert-text").html(message)},updateTimeSlots(ev,response){const targetDate=$(ev.currentTarget).val();let template="";response.days.filter(obj=>obj.date===targetDate)[0].timeslots.forEach(item=>{template=`${template}\n\t\t\t<div class="m-forminput m-forminput-radio" data-t-name="FormInput">\n\t\t\t\t<input class="m-forminput js-timeslot" type="radio"\n\t\t\t\t\tdata-carrier="${item.carrier}"\n\t\t\t\t\tdata-description="${item.description}"\n\t\t\t\t\tdata-requesthashcode="${item.requestHashCode}"\n\t\t\t\t\tdata-utcstarttime="${item.utcStartTime}"\n\t\t\t\t\tdata-timezoneid="${item.timeZoneId}"\n\t\t\t\t\tdata-utcendtime="${item.utcEndTime}"\n\t\t\t\t\tvalue="${item.id}" name="timeslot" id="${item.id}">\n\t\t\t\t\t<label class="a-formlabel radio " for="${item.id}">\n\t\t\t\t\t\t\t<span class="label-text">\n\t\t\t\t\t\t\t${item.label}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</label>\n\t\t\t</div>`}),this.elm.$timeslotsContainer.html(template),this.$(this.selector.timeslotRadio).first().attr("checked",!0)}})}(jQuery),function($){const toggleSelector=".js-togglebox-toggle",specificTogglesSelector=`> .item > ${toggleSelector}, > .item > .togglebox-content > .item > ${toggleSelector}`;T.Module.Togglebox=T.createModule({start(resolve){const mod=this;this.$ctx=$(this._ctx),this.isSynced=!1,this._events.on("t.sync",$.proxy(this.sync,this)),this.hashScope=this.$ctx.data("hash-scope")||"Togglebox",this.hashScopeScrollto=this.hashScope+"Scrollto",this.singleSelection=null!=this.$ctx.data("single-selection")&&this.$ctx.data("single-selection")||!1,this.trackAsTabs=null!=this.$ctx.data("track-as-tabs")&&this.$ctx.data("track-as-tabs")||!1,this.id=this.$ctx.data("t-id"),this.$contentToggles=this.$(specificTogglesSelector),this.$externalMarker=this.$(".js-external-marker"),this.activeItem=this.$ctx.data("initial-open"),this.$ctx.on("click",specificTogglesSelector,$.proxy(this.onClickContentToggle,this)),this._events.on("openToggleBoxItem",$.proxy(this.onOpenToggleBoxItem,this)),this._events.on("openToggleBox",function(id){mod.$externalMarker.length>0&&mod.$externalMarker.hasClass(id)&&mod.openPanel(mod.$externalMarker)}),this._events.on("closeToggleBox",function(id,animate){mod.$externalMarker.length>0&&mod.$externalMarker.hasClass(id)&&mod.closePanel(mod.$externalMarker,animate)}),this._events.on("closeAllToggleBoxItems",$.proxy(this.onCloseAllToggleBoxItems,this)),this._events.on("compareitem:toggleCompareDifferences",$.proxy(this.onToggleCompareDifferences,this)),this._events.on("addTrackValuesToTab",data=>this.trackingTabs(data)),$(window).on("hashchange",$.proxy(this.updateOpenToggles,this)),this.$ctx.on("transitionend",".togglebox-content",function(){return mod.sendRecalc($(this))}),resolve()},sync(){this.isSynced||(this.sendReloadAllClips(),this.checkForFormErrors(),this.isSynced=!0,this.updateOpenToggles())},closePanel($toggle,instant){let $content;const mod=this,idArray=[];for(let toggleItem of Array.from($toggle))$content=$(toggleItem).next(".togglebox-content"),$(toggleItem).removeClass("is-open"),Modernizr.csstransitions&&!instant?($content.addClass("is-in-transition"),mod.setContentHeight($content),$content.off("transitionend").one("transitionend",()=>$content.removeClass("is-in-transition").css("max-height","")),$content.removeClass("is-open"),setTimeout(()=>$content.css("max-height","0"),10)):$content.removeClass("is-open"),idArray.push($content.attr("id"));if(mod.sendRecalc($content),mod.$ctx.hasClass("js-disable-hash-change"))return;T.Utils.removeHash(mod.hashScope,idArray,!0)},getToggleById(id){return this.$(`#${id}`).prev(toggleSelector)},checkForFormErrors(){return this.$("*[data-t-name='Form']").each((i,form)=>{const $form=$(form),formModule=this._sandbox.getModuleById($form.data("t-id"));if(null!=formModule&&formModule.hasError()){$($form.parents(".m-togglebox .item").get().reverse()).each((pi,item)=>{const $item=$(item);
7this.openPanel($item.find(toggleSelector).first())})}})},openPanel($toggle){const mod=this,initialOpen=0===$toggle.hasClass("is-open").length,tabLoadTrigger=$toggle.data("load-trigger");tabLoadTrigger&&(this._events.emit(`loadTab:${tabLoadTrigger}`,{triggerEventTracking:!initialOpen}),this.trackAsTabs=!1);const $listElement=$toggle.parent("div"),ajaxId=$listElement.data("ajax-request-id");ajaxId?(T.Utils.startAjaxRequest(ajaxId,!1,!1,()=>mod.openPanelLoaded($toggle)),$listElement.removeAttr("data-ajax-request-id"),$listElement.removeData("ajax-request-id")):mod.openPanelLoaded($toggle),this.trackAsTabs&&T.Utils.getLayout().trackValues("tab open",{page_tab:$toggle.parent().find(".togglebox-content").data("tabtrackname"),page_url:$toggle.attr("href")})},openPanelLoaded($toggle){if(!$toggle.hasClass("is-open")){const $content=$toggle.next(".togglebox-content");if($toggle.addClass("is-open"),Modernizr.csstransitions?($content.off("transitionend").one("transitionend",()=>$content.removeClass("is-in-transition").addClass("is-open").css("max-height","")).addClass("is-in-transition"),this.setContentHeight($content)):(this.setContentHeight($content),$content.addClass("is-open").css("max-height","")),this.sendRecalc($content),!$toggle.hasClass("js-disable-set-hash")){const replaceHistory=!0;T.Utils.setHash(this.hashScope,$content.attr("id"),replaceHistory)}this._events.emit("togglebox:opened",{$context:this.$ctx,$content:$content,$toggle:$toggle}),this.sendReloadCliplister($content)}},sendRecalc($element){this._events.emit("recalc",{$element:$element,$ctx:this.$ctx})},sendReloadAllClips(){const mod=this;mod.$ctx.find(".togglebox-content").each(function(){const $content=$(this);($content.is(".is-open")||$content.is(".is-in-transition"))&&mod.sendReloadCliplister($content)})},sendReloadCliplister($toggleboxContent){const targetVideoId=$toggleboxContent.find(".m-video-cliplister").first().data("video-id");null!=targetVideoId&&this._events.emit("video:reloadclip",{reloadId:targetVideoId})},setContentHeight:$content=>$content.each(function(){const $currentContent=$(this);let currentHeight=$currentContent[0].scrollHeight;$currentContent.find(".togglebox-content.is-open").each(function(){$(this)[0].scrollHeight>$(this).height()&&(currentHeight+=$(this)[0].scrollHeight)}),0===currentHeight&&(currentHeight="none"),$currentContent.css("max-height",currentHeight)}),togglePanel($toggle,closeInstantly){if($toggle.closest('[data-t-name="Togglebox"]').data("t-id")===this.id){const $openToggle=$toggle.parent().siblings().children(`${toggleSelector}.is-open`),instant=null!=closeInstantly;this.singleSelection&&$openToggle.length&&this.closePanel($openToggle,instant),$toggle.hasClass("is-open")?this.closePanel($toggle,instant):this.openPanel($toggle)}},onClickContentToggle(ev){ev.preventDefault(),ev.stopImmediatePropagation(),this.togglePanel($(ev.currentTarget))},onCloseAllToggleBoxItems(instant,$item,listId){const mod=this;if(mod.$ctx.closest(`[data-t-id="${listId}"]`).length>0){const $itemsToClose=mod.$(`${toggleSelector}`).not($item);mod.closePanel($itemsToClose,instant)}},onOpenToggleBoxItem(data){const mod=this;data.$toggle.closest(mod.$ctx).length>0&&(data.$toggle.hasClass("is-open")||mod.togglePanel(data.$toggle,data.instant))},onToggleCompareDifferences(blnShowOnlyDifferences){if(!this.$ctx.is(".js-toggle-on-compare-differences"))return;const $items=this.$ctx.find("> .item"),$itemsWithDifferences=$items.filter(".js-has-compare-differences"),$itemsWithoutDifferences=$items.filter(":not(.js-has-compare-differences)");$itemsWithDifferences.each(function(){if($(this).find("tr:not(.js-has-compare-cell-differences)").toggleClass("hidden",blnShowOnlyDifferences),blnShowOnlyDifferences){$(this).find(toggleSelector).filter(":not(.is-open)").trigger("click")}}),$itemsWithoutDifferences.toggleClass("hidden",blnShowOnlyDifferences)},updateOpenToggles(){if(this.$ctx.hasClass("js-disable-hash-change"))return;let ids=T.Utils.getHashIds(this.hashScope);const scrolledIds=T.Utils.getHashIds(this.hashScopeScrollto);if(ids=(ids=ids.concat(scrolledIds)).concat(this.getInitialOpenIds()),this.openTogglesById(ids),scrolledIds.length>0&&this.scrollToHashId(scrolledIds[0]),this.$ctx.hasClass("js-supportproductdetailpage")){const hashIds=T.Utils.getHashIds("Tabs");hashIds.length>0&&this.scrollToHashId(hashIds[0])}},getInitialOpenIds(){let initialOpen=this.$ctx.data("initial-open");if(!initialOpen)return[];this.$ctx.data("initial-open",!1);let item=this.$ctx.find(".item").eq(initialOpen-1);return item?[item.find(">section").first().attr("id")]:[]},scrollToHashId(toggleId){let toggle=this.getToggleById(toggleId);if(null==toggle||!toggle.length)return;T.Utils.removeHash(this.hashScopeScrollto,[toggleId],!0),setTimeout(()=>T.Utils.scrollToTop(toggle),300)},openTogglesById(toggleIds){let toggles=$([]);for(let id of Array.from(toggleIds))toggles=toggles.add(this.getToggleById(id));let self=this;toggles.length?(toggles.filter(".togglebox-subtitle").each(function(){self.openPanel
7($(this))}),toggles.filter(".togglebox-title").each(function(){self.openPanel($(this))})):this.$contentToggles.filter(".is-open").each(function(){self.closePanel($(this),!1)})},trackingTabs(data){let $tabToTrack=this.$ctx.find(`a[href*='${data.trackTabId}']`);if($tabToTrack.length>0){let eventForTab=$tabToTrack.data("eventtracking"),delayEventForTab=$tabToTrack.data("delayeventtracking");eventForTab?(eventForTab.dataValues[data.trackvar]=data.trackValue,$tabToTrack.attr("data-eventTracking",JSON.stringify(eventForTab))):delayEventForTab&&(data.trackvar&&(delayEventForTab.dataValues[data.trackvar]=data.trackValue),T.Utils.getLayout().trackValues(data.trackType,delayEventForTab.dataValues))}}})}(jQuery),function($){T.Module.TotalAmount=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.config=this.$ctx.data(),this.stateclass={hidden:"is-hidden"},this.$downpaymentwrap=this.$(".js-downpayment-info"),this.$due={text:this.$(".js-update-due"),value:this.$(".js-calculate-due")},this.$balance={text:this.$(".js-update-balance")},this.sync=$.proxy(this.sync,this),this.onChangeDownpayment=$.proxy(this,"onChangeDownpayment"),this.onGetUpdateDownpayment=$.proxy(this,"onGetUpdateDownpayment"),this._events.on("t.sync",this.sync),resolve()},sync(){this.isSynced||(this.isSynced=!0,this._events.on("downpayment:update",this.onGetUpdateDownpayment),this.$due.value.on("change",this.onChangeDownpayment))},onChangeDownpayment(ev){const downpayment=Number(this.$due.value.val()),noDownpayment=!Boolean(downpayment);this.$downpaymentwrap.toggleClass(this.stateclass.hidden,noDownpayment);const downPaymentBooleanValue=Boolean(downpayment);if(document.getElementById("js-downpayment-boolean").value=downPaymentBooleanValue,!noDownpayment)return this.$due.text.text(T.Utils.localizePrice(downpayment)),this.$balance.text.text(T.Utils.localizePrice(this.config.totalPrice-downpayment)),this._events.emit("totalamount:downpaymentupdate")},onGetUpdateDownpayment(value){return this.$due.value.val(Number(value)).trigger("change")}})}(jQuery),function($){T.Module.TypePlateFinder=T.createModule({start(resolve){const mod=this;return mod.$ctx=$(this._ctx),mod.isSynced=!1,T.Utils.allSynced=!1,mod._events.on("t.sync",$.proxy(mod.sync,mod)),mod.$category=mod.$('select[data-category="select"]'),mod.$group=mod.$('select[data-group="select"]'),mod.$category.on("change",$.proxy(mod.enableGroups,mod)),mod.$group.on("change",$.proxy(mod.loadTypePlates,mod)),resolve()},sync(){const mod=this;if(!mod.isSynced)return mod.initPreselecting(),mod.isSynced=!0,T.Utils.allSynced=!0},getCurrentGroup(){return this.$group.filter(`[data-category='${this.$category.val()}']`)},hideGroups(){return this.$group.prop("disabled",!0).closest(".m-forminput").addClass("hidden")},initPreselecting(){const mod=this,category=mod.$ctx.data("preselect-category"),group=mod.$ctx.data("preselect-group");if(category&&mod.preselectFinder("category",category),group)return mod.preselectFinder("group",group)},preselectFinder(type,val){return("category"===type?this.$category:this.getCurrentGroup()).find(`[value='${val}']`).attr("selected","selected").trigger("change")},showGroup($group){return this.$(".typeplatefinder-groups .label-text").removeClass("disabled"),$group.prop("disabled",!1).removeClass("hidden"),$group.closest(".m-forminput").removeClass("hidden")},enableGroups(){return this.hideGroups(),this.showGroup(this.getCurrentGroup())},loadTypePlates(){return T.Utils.startAjaxRequest(this.$ctx.data("ajax-id"))}})}(jQuery),function($){T.Module.TypePlateFinderMediaGallery=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$selectDivison=this.$ctx.find(".js-select-divison"),this.$selectDivison.on("change",()=>this.triggerClusterAjax()),this.$productClusterTemplate=this.$ctx.find("#product-cluster-template"),this.productClusterDotTemplate=doT.template(this.$productClusterTemplate.html()),this._events.on("t.sync",()=>this.sync()),this._events.on("handleDobStepRequestResponse",data=>this.handleRequestResponse(data)),this.$mediaGalleryTemplate=this.$ctx.find("#media-gallery-template"),this.mediaGalleryDotTemplate=doT.template(this.$mediaGalleryTemplate.html()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},triggerClusterAjax(){const clusterAjax=this.$selectDivison.data("cluster-ajax");if(this.productDivisonCode=this.$selectDivison.find("option:selected").data("label"),clusterAjax&&this.productDivisonCode){T.Utils.getLayout().trackValues("type plate EG selection",{type_plate_eg_selection:this.productDivisonCode});const request=T.Utils.startAjaxRequest(!1,{url:clusterAjax,dataType:"JSON"},{egDivision:this.productDivisonCode});if(!request)return!1;request[0].done(response=>this.renderContentCluster(response))}this.$ctx.find('[data-replace-container="media-gallery"]').empty()},triggerClusterMediaAjax(){const clusterMediaAjax=this.$selectDivison.data("media-ajax");if(this.$selectCluster=this.$ctx.find("js-business-field"),this.productDivisonCode=this.$selectDivison.find("option:selected").data("label"),this.productClusterCode=this.$selectBusinessField.find("option:selected").val(),clusterMediaAjax&&this.productClusterCode){const request=T.Utils.startAjaxRequest(!1,{url:clusterMediaAjax,dataType:"JSON"},{eg:this.productDivisonCode,cluster:this.productClusterCode});if(!request)return!1;request[0].done(response=>this.renderContentMedia(response))}},triggerEgMediaAjax(){const clusterMediaAjax=this.$selectDivison.data("media-ajax");if(this.productDivisonCode=this.$selectDivison.find("option:selected").data("label"),clusterMediaAjax&&this.productDivisonCode){const request=T.Utils.startAjaxRequest(!1,{url:clusterMediaAjax,dataType:"JSON"},{eg:this.productDivisonCode});if(!request)return!1;request[0].done(response=>this.renderContentMedia(response))}},onSelectBusinessField(){this.businessFieldCode=this.$selectBusinessField.find("option:selected").val(),T.Utils.getLayout().trackValues("type plate Business field cluster selection",{type_plate_business_cluster_selection:this.businessFieldCode}),this.triggerClusterMediaAjax()},renderContentCluster(response){response.length||this.triggerEgMediaAjax(),this.productClusterHTML=this.productClusterDotTemplate(response),T.Utils.replaceContent(this.productClusterHTML,"replace",!1),this.$selectBusinessField=this.$ctx.find(".js-select-business-field"),this.$selectBusinessField.on("change",()=>this.onSelectBusinessField())},renderContentMedia(response){this.mediaGalleryHTML=this.mediaGalleryDotTemplate(response),T.Utils.replaceContent(this.mediaGalleryHTML,"replace",!1)}})}(jQuery),function($){T.Module.UspRebrush=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$uspVoucherCode=this.$ctx.find(".usp-voucher"),this.$uspTimePromotion=this.$ctx.find(".js-uspnavigation-promotion-time"),this.$uspSlider=this.$ctx.find(".usp-slider"),this.$paginationArrows=this.$ctx.find(".slider-arrow"),this.isRtl=Boolean($('html[dir="rtl"]').length),this.htmlIsModified=!1,this.initContent(),this._events.on("viewportChanged",()=>this.handleViewportChange()),resolve()}
7,initContent(){this.$uspTimePromotion.length&&this.initializePromotionTime(),this.restructureSlidesHTML(),this.initSlick()},restructureSlidesHTML(){const viewport=T.Utils.getViewport();this.$uspSlider.hasClass("slick-initialized")&&this.$uspSlider.slick("unslick"),"desktop"!==viewport?this.restructureSlidesHTMLDesktop():this.restructureSlidesHTMLMobile()},restructureSlidesHTMLDesktop(){if(this.htmlIsModified)return;const $promotionWrapper=this.$ctx.find(".js-promotion-wrapper");this.promotionItems=[],this.emptyPromotionParents=[],$promotionWrapper.each((index,promotionItem)=>{for(this.promotionItems.push($(promotionItem).children());promotionItem.childNodes.length;)promotionItem.before(promotionItem.childNodes[0]);this.emptyPromotionParents.push(promotionItem),promotionItem.remove()}),this.htmlIsModified=!0},restructureSlidesHTMLMobile(){this.htmlIsModified&&(this.emptyPromotionParents.forEach((emptyParent,index)=>{this.promotionItems[index].wrapAll(emptyParent)}),this.htmlIsModified=!1)},initSlick(){const $paginationArrows=this.$ctx.find(".slider-arrow"),$prevArrow=$paginationArrows.siblings(".icon-arrow-left"),$nextArrow=$paginationArrows.siblings(".icon-arrow-right");this.$uspSlider.slick({autoplay:!0,autoplaySpeed:5e3,accessibility:!1,arrows:!0,speed:0,dots:!1,infinite:!0,focusOnSelect:!0,appendArrows:$paginationArrows,prevArrow:$prevArrow,nextArrow:$nextArrow,slidesToShow:1,slidesToScroll:1,cssEase:"linear",rtl:this.isRtl}),this.$uspVoucherCode.on("click",e=>{T.Utils.copyVoucherCode(e.currentTarget)}),this.$uspVoucherCode.on("keypress",e=>{T.Utils.isKeyEnter(e)&&$(e.currentTarget).trigger("click")})},initializePromotionTime(){this.$uspTimePromotion.each((index,promotion)=>{const $promotion=$(promotion),promotionEndTime=$promotion.data("endTime");this.calculateRemainingPromotionTime($promotion,promotionEndTime)})},handleViewportChange(){this.restructureSlidesHTML(),this.$uspSlider.hasClass("slick-initialized")||this.initSlick()},calculateRemainingPromotionTime($promotion,promotionEndTime){const $closestPromotionWrapper=$promotion.closest(".js-promotion-wrapper"),dateTimeFormat=window.localization.configurations.dateFormat.toUpperCase()+" HH:mm:ss",endTimeInLocalFormat=moment(promotionEndTime).format(dateTimeFormat),nowTimeinLocal=moment().format(dateTimeFormat),diffTime=moment(endTimeInLocalFormat,dateTimeFormat)-moment(nowTimeinLocal,dateTimeFormat),duration=moment.duration(diffTime),daysLeft=Math.floor(duration.asDays());diffTime<=0&&$closestPromotionWrapper.remove(),$promotion.find(".js-days-left").text(this.addLeadingZero(daysLeft)),$promotion.find(".js-hours-left").text(this.addLeadingZero(duration.hours())),$promotion.find(".js-minutes-left").text(this.addLeadingZero(duration.minutes()))},addLeadingZero:num=>1===num.toString().length?`0${num}`:num})}(jQuery),function($){T.Module.Video=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$poster=this.$(".js-play-layer"),this.$posterBackground=this.$poster.children(".a-image"),this.videoIsPlaying=!1,this.videoIsPaused=!1,this.videoWatcherInterval=null,this.userManualPaused=!1,this.disableVideoTracking=this.$ctx.data("disable-video-tracking")||!1,this.videoIsLazyLoaded=this.$ctx.data("lazyloaded"),this.trackingAutoplay=!1,this.viewportAutoplay=this.$ctx.data("vp-autoplay"),this.autoplayViewportOffset=parseInt(this.$ctx.data("vp-autoplay-offset")||50)/100,this.viewportReAutoplay=this.$ctx.data("vp-re-auto-play"),this.looping=this.$ctx.data("loop"),this.autoplayStatus={inViewport:!1,wasAutoplayed:!1,stopped:!1},this.controlsHidden=!1===this.$ctx.data("controls"),this.posterIsPlaceholder=!1,this.videoController=T.Utils.createController(this.$ctx,"VideoController",this.$ctx.data("t-decorator")||"html5"),this.initPoster(),this._events.on("openLayer",data=>this.onOpenLayer(data)),this._events.on("closeLayer",data=>this.onCloseLayer(data)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.setupVideo())},getTId(){return this.$ctx.data("t-id")},hasPosterImage(){return this.$posterBackground.length>0},isVideoPaused(){return this.videoIsPaused},isVideoPlaying(){return this.videoIsPlaying},isLooping(){return this.looping},muteVideo(){this.hasVideoController()&&this.videoController.mute()},unmuteVideo(){this.autoplayStatus.inViewport&&this.hasVideoController()&&(this.autoplayStatus.stopped?this.videoController.unmute():!this.isAutoplayEnabled()&&this.controlsHidden&&this.videoController.unmute())},getCurrentTime(){return this.videoController.getCurrentTime()},getDuration(){return this.videoController.getDuration()},getVideoId(){return this.videoController.getVideoId()},isAutoplayEnabled(){return this.viewportAutoplay},isViewportReAutoplay(){return this.viewportReAutoplay},setProgressPlayed(time){this.videoController.setProgressPlayed(time)},restartStoppedViewportAutoplay(){this.autoplayStatus.stopped=!1},videoPlay($playButton=null){this.hasVideoController()&&(this.videoController.canPlay()?(this.hasPosterImage()?this.hidePoster(!0):this.videoController.showControls(),this.videoController.play()):this.videoController.requestPlay($playButton))},videoPause(userInteracted=!1){this.hasVideoController()&&(this.videoController.showControls(),this.videoController.pause(userInteracted))},videoStreamStop(){this.hasVideoController()&&(this.videoController.showControls(),this.videoController.stop())},isTrackingAutoplayEnabled(){return this.trackingAutoplay||this.isAutoplayEnabled()},setTrackingAutoplayEnabled(flag){this.trackingAutoplay=flag},getPlayerType(){return this.videoController.getPlayerType()}
7,setViewportAutoplay(flag){this.viewportAutoplay=flag,this.updateAutoplay()},ensureLazyLoaded(){this.videoController.ensureLazyLoaded()},hasVideoController(){return!!this.videoController},emitVideoLoaded(){this._events.emit("video:loaded",{$component:this.$ctx,component:this})},createInViewportController(){this.inViewportController=T.Utils.createController(this.$ctx,"IsInViewportController",""),this.inViewportController.init({element:this._ctx,visiblePercentage:this.autoplayViewportOffset,onViewportChanged:(element,inViewport)=>{this.autoplayStatus.inViewport=inViewport,this.updateAutoplay()}})},emitVideoPlay(){this.startVideoWatcher(),this._events.emit("video:play",{$component:this.$ctx,component:this})},emitVideoStop(){this.stopVideoWatcher(),this.videoIsPlaying=!1,this._events.emit("video:stop",{$component:this.$ctx,component:this})},emitVideoPause(){this.stopVideoWatcher();let autoPause=!1;this.lastVideoAutoPause&&(autoPause=!0,this.lastVideoAutoPause=!1),this._events.emit("video:pause",{$component:this.$ctx,component:this,autoPause:autoPause})},emitVideoSkip(){this._events.emit("video:skip",{$component:this.$ctx,component:this,position:this.getCurrentTime()})},emitVideoPosition(){this._events.emit("video:position",{$component:this.$ctx,component:this,position:this.getCurrentTime(),interval:300})},startVideoWatcher(){null===this.videoWatcherInterval&&(this.videoWatcherInterval=setInterval(()=>this.onVideoWatcherUpdate(),300))},stopVideoWatcher(){null!==this.videoWatcherInterval&&(clearInterval(this.videoWatcherInterval),this.videoWatcherInterval=null)},onVideoWatcherUpdate(){this.emitVideoPosition()},beforePause(){this.videoIsPlaying&&!this.videoController.isSeeking()&&(this.videoIsPlaying=!1,this.videoIsPaused=!0)},beforePlay(){this.unmuteVideo(),this.videoIsPlaying||(this.hidePoster(!0),this.videoIsPlaying=!0,this.videoIsPaused=!1)},beforeStop(){this.videoIsPlaying&&(this.videoIsPlaying=!1,this.videoIsPaused=!1)},initPoster(){if(!this.videoController.canPlay())if(0===this.$poster.length){this.posterIsPlaceholder=!0,this.$poster=$('<div class="play-layer js-play-layer"></div>');let posterUrl=this.videoController.getPosterUrl(this.$ctx);posterUrl?(this.$posterBackground=$('<div class="a-image placeholder-poster-image" data-t-name="Image"></div>'),this.$posterBackground.append($('<img class="stretched" src="'+posterUrl+'" loading="lazy">'))):this.$posterBackground=$('<div class="placeholder-poster-background"></div>'),this.$posterBackground.appendTo(this.$poster),this.$poster.append('<i class="icon icon-play icon-l"></i>'),this.$poster.appendTo(this.$ctx)}else this.$poster.hasClass("hidden")&&(this.posterIsPlaceholder=!0,this.$poster.removeClass("hidden"));this.$poster.on("click",()=>this.videoPlay())},showPoster(showBackground){this.viewportAutoplay||this.$poster.removeClass("hidden"),this.showPosterBackground(showBackground)},showPosterBackground(showBackground){showBackground?this.$posterBackground.removeClass("hidden"):this.$posterBackground.addClass("hidden")},hidePoster(showBackground){this.$poster.addClass("hidden"),this.showPosterBackground(showBackground)},setupVideo(){this.hasVideoController()&&this.videoController.setup(this,this.$ctx,{onPlaying:()=>{this.emitVideoPlay(),this.beforePlay()},onPaused:userInteracted=>{this.userManualPaused|=userInteracted,this.emitVideoPause(),this.beforePause()},onStopped:()=>{this.onAutoplayStop(),this.emitVideoStop(),this.showPoster(!0),this.beforeStop()},onPreloaded:()=>{this.createInViewportController(),this.posterIsPlaceholder&&this.$poster.remove(),this.videoIsSetUp=!0,this.videoController.showControls(),this.emitVideoLoaded()},onSeeking:()=>{this.emitVideoSkip()}},{lazyloaded:this.videoIsLazyLoaded,looping:this.looping})},onCloseLayer(data){this.$ctx.closest(data.$ctx).length&&this.hasVideoController()&&this.videoController.pause()},onOpenLayer(data){const triggerElementLayerId=$(data.$triggerElement).data("layer-id");this.$ctx.closest(`.js-video-layer[data-id="${triggerElementLayerId}"]`).length&&(this.videoIsSetUp||this.setupVideo()),this.inViewportController&&this.inViewportController.refresh()},onAutoplayStop(){this.looping||(this.autoplayStatus.stopped=!0)},updateAutoplay(){this.autoplayStatus.inViewport?this.viewportAutoplay&&!this.videoIsPlaying&&this.hasVideoController()&&!this.userManualPaused&&(this.autoplayStatus.stopped||!this.inViewportController||this.autoplayStatus.wasAutoplayed&&!this.viewportReAutoplay||(this.autoplayStatus.wasAutoplayed=!0,this.muteVideo(),this.videoController.play())):this.videoIsPlaying&&(this.lastVideoAutoPause=!0,this.videoPause())}})}(jQuery),function($){T.Module.YourekoAssistant=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.isSynced=!1,this.$brand=this.$ctx.data("brand"),this.$country=this.$ctx.data("c
7ountry"),this.$page=this.$ctx.data("page"),this.$yourekoconfiguration=this.$ctx.data("yourekoconfiguration"),this._events.on("t.sync",()=>this.sync()),this.$yourekoconfiguration&&this.loadyoureko(),resolve()},sync(){this.isSynced||(this.isSynced=!0)},loadyoureko(){var yourekoString="https://static.youreko.com/js/partners/"+this.$country.toLowerCase()+"/"+this.$brand.toLowerCase()+"/youreko.energy-review."+this.$brand.toLowerCase()+".all.min.js";const yourEkoScript=document.createElement("script");yourEkoScript.setAttribute("async",""),yourEkoScript.setAttribute("src",yourekoString),that=this,document.head.appendChild(yourEkoScript),"plp"===this.$page&&setTimeout(function(){that._events.emit("productTile:EquilizeHeight")},5e3)}})}(jQuery),function($){T.Module.AlternativeProductSlider=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$tilesSlider=this.$ctx.find(".tiles-slider"),this.slideCount=this.$tilesSlider.find(".js-alternativeproduct").length,this.$paginationArrows=this.$ctx.find(".js-alternativeproduct-tile-slider-arrows"),this.$prevArrow=this.$paginationArrows.find(".prev"),this.$nextArrow=this.$paginationArrows.find(".next"),this.slidesToShowDesktop=this.$ctx.data("slides-to-show-desktop")||4,this.slidesToShowMobile=this.$ctx.data("slides-to-show-mobile")||2,this.slidesToShowTablet=this.$ctx.data("slides-to-show-tablet")||3,this.slidesToScrollDesktop=Math.floor(this.slidesToShowDesktop),this.slidesToScrollMobile=Math.floor(this.slidesToShowMobile),this.slidesToScrollTablet=Math.floor(this.slidesToShowTablet),this.initSlick(),resolve()},initSlick(){this.hidePaginationArrows(),this.$tilesSlider.not(".slick-initialized").slick({infinite:!1,speed:300,dots:!1,arrows:this.slideCount>this.slidesToScrollDesktop,focusOnSelect:!1,appendArrows:this.$paginationArrows,prevArrow:this.$prevArrow,nextArrow:this.$nextArrow,slidesToShow:this.slidesToShowDesktop,slidesToScroll:this.slidesToScrollDesktop,responsive:[{breakpoint:900,settings:{slidesToShow:this.slidesToShowTablet,slidesToScroll:this.slidesToScrollTablet,dots:this.slideCount>this.slidesToShowTablet}},{breakpoint:600,settings:{slidesToShow:this.slidesToShowMobile,slidesToScroll:this.slidesToScrollMobile,dots:this.slideCount>this.slidesToShowMobile}}]})},hidePaginationArrows(){(!T.Utils.isViewport("desktop")||this.slideCount<=this.slidesToScrollDesktop)&&this.$paginationArrows.hide()}})}(jQuery),function($){T.Module.BuyArea=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.addToCartPrecheckSelector=".js-postal-addtocart-precheck-url",this.$addToBasketButton=$(".js-add-to-basket",this.$ctx),this.$closeErrorButton=$("button.a-button.a-button-plain.js-popover-close.popover-close",this.$ctx),this.$addToCompareCheckBox=$(".js-update-localstorage",this.$ctx),this.postalCodeWatcher=null,this.shopConversionArea=$("#shop-conversion-area"),this.$buyArea=$(".buyarea-form-wrapper"),this.dataStockUrl=this.shopConversionArea.data("real-stock-url"),this.$addToBasketButton.on("click",ev=>this.addToCartPrecheck(ev)),this._events.on("locationselectorLayout:locationset",this.initiateAddtoCart.bind(this)),this.$closeErrorButton.on("click",ev=>this.onClickCloseErrorPopover(ev)),this.buttonToBeSticky="",this.buttonToBeStickyFounded=!1,this.$addToBasketButton.on("click",ev=>this.addToCartPrecheck(ev)),this.$addToCompareCheckBox.on("click",ev=>this.onClickCheckBoxAddToCompare(ev)),this.$addToBasketButton.on("click",ev=>this.trackingServiceVib(ev)),this._events.on("locationselectorLayout:locationset",this.initiateAddtoCart.bind(this)),this._events.on("t.sync",()=>this.sync()),this.checkIfStockCallIsNeeded(resolve),resolve()},sync(){this.isSynced||(this._events.on("load",this.handleStickyAddToCartVisibility()),this.isSynced=!0),this.checkAddToCartButtonOrLinkToRecommendedProductsVisibility(),this.checkIfAddToCartExistToChangeColorBuyOnlineButton()},trackingServiceVib(){const serviceVib=document.getElementsByName("serviceItems");for(let i=0;i<serviceVib.length;i++){const isChecked=serviceVib[i].checked,serviceVibId=serviceVib[i].value;isChecked&&T.Utils.getLayout().trackValues("Additional service added",{serviceVib_id:serviceVibId})}},checkAddToCartButtonOrLinkToRecommendedProductsVisibility(){const findSimilarProducts=$(".js-similar-product-item"),findLinkRecoEngine=$(".js-cta-recoengine").hasClass("hidden"),findAddToBasket=$(".js-add-to-basket-recoengine").hasClass("hidden"),findInstallements=$(".js-oney-widget"),findProductServices=$(".product-services"),findQuantitySelector=$(".m-quantityselector");findSimilarProducts.length>0?($(".js-add-to-basket-recoengine").addClass("hidden"),$(".js-cta-recoengine").removeClass("hidden"),!findLinkRecoEngine&&findAddToBasket&&(findInstallements.length>0&&$(".js-oney-widget").addClass("hidden"),findProductServices.length>0&&$(".product-services").addClass("hidden"),findQuantitySelector.length>0&&$(".m-quantityselector").addClass("hidden"))):($(".js-cta-recoengine").addClass("hidden"),$(".js-add-to-basket-recoengine").removeClass("hidden"))},checkIfAddToCartExistToChangeColorBuyOnlineButton(){const addToCartExist=this.$buyArea.find(".main-cta"),onlineBuyButton=$(".js-onlinedealer-action");(0==addToCartExist.length||addToCartExist.attr("disabled")&&onlineBuyButton)&&$(".js-onlinedealer-action").addClass("new-color-buy-online")},checkConfigKeyValue(){mod=this;const configKeyValueHTMLElem=document.querySelector(".js-should-be-sticky-buttons");return configKeyValueHTMLElem&&"true"===configKeyValueHTMLElem.value},initiateAddtoCart(data){this.postalCodeWatcher&&(this.onClickAddToCartButton(this.postalCodeWatcher),this.postalCodeWatcher=null)},openErrorPopover(ev){this._events.emit("popover:open",ev)},onClickAddToCartButton(ev){const mod=this,$ajaxform=$(ev.currentTarget).closest(".
7js-ajax-request"),config=$ajaxform.data();if(this.checkSubmitWasDoubleClicked(config))return!1;const request=T.Utils.startAjaxRequest(config.ajaxId);return!(!request||0===Object.keys(request))&&request[0].done(function(result){if(T.Utils.triggeredAddToBasketButton=mod.$addToBasketButton,mod._events.emit("cart:update"),config.promotionUpdate&&T.Utils.startAjaxRequest(!1,{url:config.promotionUpdate+"/"+$ajaxform.find("[name=productCode]").val(),dataType:"html",dataRendering:!0}),window.X&&window.X.addProductToCart(),config.cartUpdate)return T.Utils.startAjaxRequest(!1,{url:config.cartUpdate,dataType:"html",dataRendering:!0})}).fail(xhr=>{403===xhr.status&&this.openErrorPopover(mod.$addToBasketButton)})},addToCartPrecheck(ev){const mod=this;ev.preventDefault();const addToCartEvent=ev;let $addtocartajax=$(this.addToCartPrecheckSelector,this.$ctx);if(this.isMainCtaButtonReadyToBeSticky()&&$(".sticky-main-cta-reference-pixel").parent().find(".main-cta").hasClass("sticky")&&document.querySelector(".sticky-main-cta-reference-pixel").scrollIntoView({behavior:"smooth",block:"center"}),this.isBuyOnlineButtonReadyToBeSticky()&&$(".js-onlinedealer-action").hasClass("sticky")&&document.querySelector(".sticky-main-cta-reference-pixel").scrollIntoView({behavior:"smooth",block:"center"}),$addtocartajax.length>0){T.Utils.startAjaxRequest($addtocartajax.data("ajax-id"))[0].done(function(result){result.locationSelectorOption||(result.locationSelectorOption="DISABLED"),"DISABLED"!==result.locationSelectorOption&&null===result.locationInSession&&result.locationRequired?(mod._events.emit("showLocationLayout",ev),mod.postalCodeWatcher=addToCartEvent):mod.onClickAddToCartButton(addToCartEvent)})}else mod.onClickAddToCartButton(addToCartEvent)},checkSubmitWasDoubleClicked(data){if(data&&data.preventDoubleSubmit){if(void 0===this.lastSubmitClicked&&(this.lastSubmitClicked=0),$.now()-this.lastSubmitClicked<1500)return!0;this.lastSubmitClicked=$.now()}return!1},openSideDrawer(ev){this._events.emit("open:sidedrawer")},checkIfStockCallIsNeeded(resolve){this.shopConversionArea.length>0&&this.dataStockUrl&&!this.shopConversionArea.hasClass("already-loaded")&&this.stockAjaxCall(resolve)},stockAjaxCall(resolve){const settings={url:this.dataStockUrl,method:"GET",timeout:0,headers:T.Utils.getCSRFTokenHeader()||{},contentType:"application/json"};$.ajax(settings).done(response=>{this.shopConversionArea.html(response),this.shopConversionArea.addClass("already-loaded"),this.reStartConversionArea(resolve)}).fail(error=>{console.error(error)})},reStartConversionArea(resolve){this.start(resolve),this._events.emit("reStartProductConversionArea"),T.Utils.initializeModules(this.shopConversionArea),this.handleStickyAddToCartVisibility()},checkLocalStorageComparisonItems(){const itemsFromLocalStorageShop=localStorage.getItem("product-compare-shop");if(null===itemsFromLocalStorageShop||void 0===itemsFromLocalStorageShop)return!1;const itemsFromLocalStorageShopArray=JSON.parse(itemsFromLocalStorageShop),itemsFromLocalStorageMkt=localStorage.getItem("product-compare-mkt");if(null===itemsFromLocalStorageMkt||void 0===itemsFromLocalStorageMkt)return!1;const itemsFromLocalStorageMktArray=JSON.parse(itemsFromLocalStorageShop);return itemsFromLocalStorageShopArray.length>0||itemsFromLocalStorageMktArray.length>0},isMainCtaButtonReadyToBeSticky(){const referencePixel=document.querySelector(".sticky-main-cta-reference-pixel"),mainCtaToSearch=!!referencePixel&&$(".sticky-main-cta-reference-pixel").parent().find(".main-cta"),isMainAddToCartCTAactive=mainCtaToSearch.length>0&&"disabled"!==mainCtaToSearch.attr("disabled")&&!mainCtaToSearch.hasClass("disabled"),isComparisonBarActive=!!document.querySelector(".js-update-localstorage")&&document.querySelector(".js-update-localstorage").checked;return this.checkConfigKeyValue()&&referencePixel&&isMainAddToCartCTAactive&&!isComparisonBarActive&&!this.checkLocalStorageComparisonItems()},isBuyOnlineButtonReadyToBeSticky(){const referencePixel=document.querySelector(".sticky-main-cta-reference-pixel"),isBuyOnlineButtonCTAactive=document.querySelector(".js-onlinedealer-action")&&!document.querySelector(".js-onlinedealer-action").disabled&&!document.querySelector(".js-onlinedealer-action").classList.contains("disabled"),isComparisonBarActive=!!document.querySelector(".js-update-localstorage")&&document.querySelector(".js-update-localstorage").checked;return this.checkConfigKeyValue()&&referencePixel&&!isComparisonBarActive&&!this.checkLocalStorageComparisonItems()&&isBuyOnlineButtonCTAactive},handleStickyAddToCartVisibility(){const referencePixel=document.querySelector(".sticky-main-cta-reference-pixel");if(!this.checkConfigKeyValue||!referencePixel||"mobile"!=T.Utils.getViewport())return!1;new IntersectionObserver((entries,observer)=>
7{entries.forEach(entry=>{this.buttonToBeStickyFounded?!0===entry.isIntersecting?this.buttonToBeSticky.classList.remove("sticky"):(entry.boundingClientRect.y>0&&this.buttonToBeSticky.classList.remove("sticky"),entry.boundingClientRect.y<=0&&(this.addMarginToReviewFilterButton(),this.buttonToBeSticky.classList.add("sticky"))):this.isMainCtaButtonReadyToBeSticky()?(this.buttonToBeSticky=document.querySelector(".sticky-main-cta-reference-pixel").parentNode.querySelector(".main-cta"),this.buttonToBeStickyFounded=!0):this.isBuyOnlineButtonReadyToBeSticky()&&(this.buttonToBeSticky=document.querySelector(".js-onlinedealer-action"),this.buttonToBeStickyFounded=!0)})},{rootMargin:"0px 0px",threshold:1}).observe(referencePixel)},onClickCheckBoxAddToCompare(){if(!this.checkConfigKeyValue)return!1;const isCTAButtonActive=""!==this.buttonToBeSticky&&!this.buttonToBeSticky.disabled&&!this.buttonToBeSticky.classList.contains("disabled"),isComparisonBarActive=!!document.querySelector(".js-update-localstorage")&&document.querySelector(".js-update-localstorage").checked;!this.checkConfigKeyValue()||!isCTAButtonActive||isComparisonBarActive||this.checkLocalStorageComparisonItems()?(document.querySelector(".sticky-main-cta-reference-pixel").parentNode.querySelector(".main-cta")||document.querySelector(".js-onlinedealer-action"))&&this.buttonToBeSticky.classList.remove("sticky"):this.checkConfigKeyValue()&&isCTAButtonActive&&!isComparisonBarActive&&!this.checkLocalStorageComparisonItems()&&(this.addMarginToReviewFilterButton(),this.buttonToBeSticky.classList.add("sticky"))},addMarginToReviewFilterButton(){document.querySelector(".scrollToFilterButton")&&document.querySelector(".scrollToFilterButton").classList.add("marginBottomWithStickyCTAButton")},onClickCloseErrorPopover(ev){ev.preventDefault(),$(".add-to-basket-error-session").removeClass("is-active")}})}(jQuery),function($){T.Module.CancelQuotationPopUp=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$notificationCheckbox=$("input[type='checkbox']",this.$ctx),this.sync=$.proxy(this.sync,this),this.sendCancelNotification=$.proxy(this.sendCancelNotification,this),this._events.on("t.sync",this.sync),this.$notificationCheckbox.on("change",this.sendCancelNotification),resolve()},sync(){this.isSynced||(this.isSynced=!0)},sendCancelNotification(){this.$notificationCheckbox.val(this.$notificationCheckbox.is(":checked")?"true":"false")}})}(jQuery),function($){T.Module.CareContract=T.createModule({start(resolve){return this.selectors={selectorServiceOption:".js-service-option",selectorTotal:".js-total",submit:".js-submit"},this.elm={$radioServiceOption:$(this.selectors.selectorServiceOption,this.$ctx),$total:$(this.selectors.selectorTotal,this.$ctx),$submit:$(this.selectors.submit,this.$ctx)},this.elm.$radioServiceOption.on("click",e=>{this.calcTotalAmount()}),this.calcTotalAmount(),resolve()},calcTotalAmount(){let sum=0;this.elm.$radioServiceOption.each((i,obj)=>{const $option=$(obj);$option.is(":checked")&&(sum+=Number.parseFloat($option.data("value")))}),this.elm.$total.text(T.Utils.localizePrice(sum)),0===sum?this.elm.$submit.attr("disabled","disabled"):this.elm.$submit.removeAttr("disabled")}})}(jQuery),function($){T.Module.CartShopping=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.productItemsWithSvib=$(".js-productitem"),this.$svibAjaxConfigInfo=this.$ctx.find(".js-svib-promo-info"),this.svibAjaxConfigInfo=this.$svibAjaxConfigInfo.data("ajax"),this.config=this.$ctx.data("config")||{},this.$productDeliveryInfo=$(".js-product-delivery-info"),this._selector={selectorEditCartButton:".js-edit-cart-button",mainProductCode:".js-main-product-code",serviceItem:".service-item",serviceItemCode:".js-service-item-code",serviceItemPrice:".price",cartPageHCCidValue:".js-cartpage-hc-cid-promo-info"},this.elm={$editCartButton:$(this._selector.selectorEditCartButton,this.$ctx),$cartPageHCCidValueElm:$(this._selector.cartPageHCCidValue,this.$ctx)},this._events.on("t.sync",()=>this.sync()),this.initButtons(),this.checkIfCallIsNeeded(),this.cartHCCidAjaxConfigInfoCheck(),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0)},initButtons(){this.elm.$editCartButton.on("click",ev=>this.onClickEditCartButton(ev))},getEditableCart(ev){let ctx=this,headers=T.Utils.getCSRFTokenHeader()||{};
7var postParams=($(ev.currentTarget).data("config")||{}).postParams||{};ctx._events.emit("loader:open",{loaderType:"layer",$trigger:this.elm.$editCartButton});const method=this.config.method||"GET",contentType=this.config.contenttype||"application/x-www-form-urlencoded; charset=UTF-8";$.ajax({url:this.config.switchModeUrl||"/",headers:headers,cache:!1,type:method,crossDomain:this.config.crossdomain||null,dataType:this.config.datatype||"html",data:postParams,contentType:"get"!==method.toLowerCase()&&contentType,success:(data,textStatus,jqXHR)=>(ctx._events.emit("loader:close",{$trigger:ctx.elm.$editCartButton}),ctx.switchToEditMode(data),!0),error:(jqXHR,textStatus,errorThrown)=>(ctx._events.emit("loader:close",{$trigger:ctx.elm.$editCartButton}),!1)})},switchToEditMode(data){return T.Utils.syncContent($(data),null,null,null,()=>{this.initButtons()}),!0},onClickEditCartButton(ev){return ev.preventDefault(),T.Utils.debounce(ev=>this.getEditableCart(ev),250,!0)(ev)},checkIfCallIsNeeded(){this.svibAjaxConfigInfo&&this.getProductsServicesCodesMap()},getProductsServicesCodesMap(){let productServicesCodesMap={};this.productItemsWithSvib.each((index,product)=>{if(!product||!$(product).find(this._selector.mainProductCode))return;const productCode=$(product).find(this._selector.mainProductCode).val(),currentProdcutQuantity=$(product).find(".js-tracking-quantity-product").val(),svibs=[],svibElements=$(product).find(this._selector.serviceItem).find(this._selector.serviceItemCode);svibElements.length>0&&svibElements.each((index,svibElement)=>{$(product).find(".js-tracking-quantity-service").filter((index,service)=>$(service).data("service-code")===svibElement.value).val()<currentProdcutQuantity&&svibs.push(svibElement.value)}),svibs.length>0&&(productServicesCodesMap={...productServicesCodesMap,[productCode]:svibs})}),this.getDataFromSvib(productServicesCodesMap)},getDataFromSvib(productServicesCodesMap){const isProductServicesCodesMapEmpty=0===Object.keys(productServicesCodesMap).length;if(!this.svibAjaxConfigInfo.url||isProductServicesCodesMapEmpty)return;const settings={url:this.svibAjaxConfigInfo.url,method:this.svibAjaxConfigInfo.method,timeout:0,headers:T.Utils.getCSRFTokenHeader()||{},contentType:"application/json",data:JSON.stringify({productServicesCodesMap:productServicesCodesMap})};$.ajax(settings).done(response=>{this.checkSvibPrice(response)}).fail(error=>{console.error(error)})},checkSvibPrice(svibData){this.productItemsWithSvib.each((index,product)=>{if(!product||!$(product).find(this._selector.mainProductCode))return;const productCode=$(product).find(this._selector.mainProductCode).val();svibData.forEach(svib=>{if(productCode===svib.vibCode){Object.entries(svib.sVibsPricesInfoMap).forEach(svibInToArray=>{const svibOptionElement=$(product).find(`.js-svib-${svibInToArray[0]}`);this.renderPrices(svibOptionElement,svibInToArray)})}})})},renderPrices(svibOptionElement,svibInToArray){if(svibOptionElement.length>0&&svibInToArray[1]&&svibInToArray[1].price){const actualPriceElement=svibOptionElement.find(this._selector.serviceItemPrice),priceToRender=svibInToArray[1].originalPrice?"(<span class='previous'>"+svibInToArray[1].originalPrice.formattedPriceWithCurrency+"</span> / "+svibInToArray[1].price.formattedPriceWithCurrency+")":"("+svibInToArray[1].price.formattedPriceWithCurrency+")";if(actualPriceElement.length>0)actualPriceElement.html(priceToRender);else{const priceElement=$("<span></span>");priceElement.addClass("price"),priceElement.text(priceToRender),svibOptionElement.find(".a-link.has-icon").before(priceElement)}}},cartHCCidAjaxConfigInfoCheck(){this.localStorageCartPageCid="HC_cid";let cidExistingLocalStorageValue=localStorage.getItem(this.localStorageCartPageCid);if(cidExistingLocalStorageValue){let data={cid:cidExistingLocalStorageValue};const CartPageCidAjax=this.elm.$cartPageHCCidValueElm.attr("data-ajax"),CartPageCidAjaxUrl=JSON.parse(CartPageCidAjax);T.Utils.startAjaxRequest(!1,{url:CartPageCidAjaxUrl.url,method:"POST",data:data})}}})}(jQuery),function($){T.Module.CheckoutDelivery=T.createModule({start(resolve){return this.isSynced=!1,this.$ctx=$(this._ctx),this.loaderRemoved=!1,this.sync=$.proxy(this,"sync"),this.onClickIframeLayerTrigger=$.proxy(this,"onClickIframeLayerTrigger"),this.onTriggerCheckoutDeliveryDateChange=$.proxy(this,"onTriggerCheckoutDeliveryDateChange"),this._events.on("t.sync",this.sync),resolve()},sync(mod){this.isSynced||(this.isSynced=!0,this.loaderRemoved||(this._events.emit("loader:close",{$loader:this.$(".js-loader-static")}),this.loaderRemoved=!0)),this.initDeliveryChange(),this.initDeliveryDate(),this.initDeliveryUPS()},initDeliveryChange(){return this.$triggerCheckoutDeliveryDateChange=this.$ctx.find(".js-checkout-deliverydate-change"),this.$triggerCheckoutDeliveryDateChange.off("change",this.onTriggerCheckoutDeliveryDateChange),this.$triggerCheckoutDeliveryDateChange.on("change",this.onTriggerCheckoutDeliveryDateChange)},initDeliveryDate(){return this.$initDeliveryDateCheck=this.$ctx.find(".js-checkout-deliverydate-init"),this.$initDeliveryDateCheck.off("init",this.onTriggerCheckoutDeliveryDateChange),this.$initDeliveryDateCheck.on("init",this.onTriggerCheckoutDeliveryDateChange),this.$initDeliveryDateCheck.trigger("init")},initDeliveryUPS(){if(this.$form=this.$ctx.find(".js-ups-config"),this.$form.length)return this.iframeLayerConfiguration=this.$form.data("iframe-layer"),this.$iframeLayerTrigger=this.$ctx.find(".js-iframe-layer"),this.$iframeLayerTrigger.off("click",this.onClickIframeLayerTrigger),this.$iframeLayerTrigger.on("click",this.onClickIframeLayerTrigger)},onClickIframeLayerTrigger(obj){this.$ctx.find(".js-ups-radio").trigger("setCustomError",!1);const mod=this,requestUrl=mod.iframeLayerConfiguration.url,addParams=mod.iframeLayerConfiguration.params||{},{paramrefs:paramrefs}=mod.iframeLayerConfiguration;if(paramrefs)for(let key in paramrefs)if(paramrefs.hasOwnProperty(key)){var inputValue;if("#"===paramrefs[key].charAt(0))inputValue=mod.$form.find(paramrefs[key]).val();else if(paramrefs[key].indexOf("<currenthost>")>=0)inputValue=mod.getMockedUrl(paramrefs[key]);else{const inputName=paramrefs[key].replace(/\./,"\\.");inputValue=mod.$form.find(`input[name=${inputName}]`).val()}inputValue&&inputValue.length>0&&(addParams[key]=inputValue)}
7const requestParams=$.param(addParams);if(requestUrl&&requestParams){const iframeUrl=requestUrl+(requestUrl.indexOf("?")>0?"&":"?")+requestParams;mod._events.emit("showIframeLayer",{url:iframeUrl})}return!1},onTriggerCheckoutDeliveryDateChange(obj){const mod=this,$initiator=$(obj.currentTarget),requestId=$initiator.data("ajax-deliverydate-request-id"),targetIdForErrorReplace=$initiator.data("target"),request=T.Utils.startAjaxRequest(requestId);return!!request&&request[0].always(function(){}).done(function(result){if(null!=result){const eventDataDate={dates:result.availableDates,blockedDays:result.nonDeliveryDaysOfWeek,targetId:targetIdForErrorReplace},eventDataError={action:"ajaxerror",$form:mod.$ctx,targetId:targetIdForErrorReplace};return result.error?($.extend(eventDataDate,{blockAll:!0}),$.extend(eventDataError,{showAjaxError:!0,blockSubmit:!1}),mod.$ctx.find(`[data-replace-origin=${targetIdForErrorReplace}]`).text(result.error)):($.extend(eventDataDate,{blockAll:!1}),$.extend(eventDataError,{showAjaxError:!1})),mod._events.emit("forminput-datepicker:deliveryDate",eventDataDate),mod._events.emit("form:trigger",eventDataError)}}).fail((xhr,ajaxOptions,thrownError)=>console.info(xhr))},getMockedUrl(url){let currenthost;currenthost=location.href.indexOf("/templates/")>=0?location.href.substr(0,location.href.indexOf("/templates/")):location.protocol+"//"+location.host;let currenturl=url.replace("<currenthost>",currenthost);return currenturl.indexOf("_callbacksimulation_")>0&&(currenturl=currenturl.substr(0,currenturl.indexOf("_callbacksimulation_")-1)),location.href.indexOf("/templates/")>=0&&(currenturl+=".html"),currenturl+(currenturl.indexOf("?")>0?"&":"?")+"_callbacksimulation_"}})}(jQuery),jQuery,T.Module.CheckoutOrderSummary=T.createModule({start:resolve=>resolve(),sync(){}}),jQuery,T.Module.CheckoutWelcome=T.createModule({start:resolve=>resolve(),sync(){}}),function($){T.Module.CookieLaw=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$policyForm=this.$ctx.find(".js-setcookiepolicy"),this.$checkboxes=this.$ctx.find(".js-cookie-settings"),this.$closeButton=this.$ctx.find(".js-close-button"),this.$checkboxesDefault=this.$ctx.find(".js-cookie-default-checked"),this.$cookieLawLayer=this.$ctx.closest(".cookielaw-modal-layer"),this.$layerCloseButtons=this.$cookieLawLayer.find(".js-close-button"),this.$extendCookieLaw=this.$ctx.find(".js-extend-cookie-mode"),this.openLayerOnLoad=!!this.$cookieLawLayer.data("openonload"),this.autoscroll=!this.$cookieLawLayer.data("no-autoscroll"),this.hasCookieLawLayer=this.$cookieLawLayer.length>0,this.events={toggleExtendMode:"morecontenttogglelink:toggleMoreLessLink"},this.checkboxDefaultConfig=this.$ctx.data("checkbox-config")||{},this.acceptThirdPartyCookiesAjaxUrl=this.$ctx.data("accept-third-party-cookies-ajax-url")||{},this.$allowPerformanceCookiesCheckbox=this.$checkboxes.filter("[name='allowPerformanceCookies']"),this.$allowTargetingCookiesCheckbox=this.$checkboxes.filter("[name='allowTargetingCookies']"),this.$allowThirdPartyCookiesCheckbox=this.$checkboxes.filter("[name='allowThirdPartyCookies']"),this.hasCookieLawLayer&&(this.cookielawLayerModule=T.Utils.application._sandbox.getModuleById(this.$cookieLawLayer.data("t-id"))),this.$accept=this.$(".js-accept"),this.$deny=this.$(".js-deny"),this.$save=this.$(".js-save"),this.$cancel=this.$(".js-cancel"),this.$configureCookies=this.$(".js-configure-cookies"),this.$configureCookiesContent=this.$(".js-extend-cookie-configuration"),this.$baseCookieContent=this.$(".js-base-cookielaw-content"),this.$extendedCookieContent=this.$(".js-extend-cookielaw-content"),this.$extendedCookieContentActions=this.$extendedCookieContent.filter(".cookielaw-actions"),this.lawIsOpen=!0,this.showCookieLaw=!!this.$ctx.data("show-cookie-law"),this.extendedModeDefault=!1,this.prepareTrackingDelay(),this.onSubmitFinishedCallbacks=this.onSubmitFinishedCallbacks||[],this.onSubmitFinishedCallbacks=this.onSubmitFinishedCallbacks.concat(this._ctx.onSubmitFinishedCallbacks||[]),this.$ctx.on("submit",".js-setcookiepolicy",evt=>this.onSubmitPolicyForm(evt)),this.$accept.on("click",evt=>this.onClickAccept(evt)),this.$deny.on("click",evt=>this.onClickDeny(evt)),this.$save.on("click",evt=>this.onClickSave(evt)),this.$cancel.on("click",evt=>this.onClickCancel(evt)),this.$closeButton.on("click",evt=>this.onClickCloseButton(evt)),this.$layerCloseButtons.on("click",evt=>this.onClickCloseButton(evt)),this.$configureCookies.on("click",evt=>this.onSwitchToExtendCookie(evt)),this.initAutoAccept();const showFullExtendMode=!0===this.$ctx.data("extended-initial");this.toggleCookieBaseExtendState(showFullExtendMode),window.consentAPI&&window.consentAPI.youtubeConsent&&(window.consentAPI.youtubeCookiesAccepted=(async()=>this.acceptThirdPartyCookiesOnly()),window.consentAPI.isYoutubeConsentGiven=(callback=>{"function"==typeof callback&&(window.consentAPI.youtubeConsentCallbacks=window.consentAPI.youtubeConsentCallbacks||[],window.consentAPI.youtubeConsentCallbacks.push(callback),callback(this.areThirdPartyCookiesAllowed()))}),this.triggerExistingYoutubeConsentCallbacks()),this.showCookieLaw&&this.show(),this._events.on("openCookieLayer",()=>this.openCookieLayer()),resolve()},triggerExistingYoutubeConsentCallbacks(){if(!window.consentAPI||!window.consentAPI.youtubeConsent)return;const existingYoutubeCallbacks=window.consentAPI.youtubeConsentCallbacks;
7if(existingYoutubeCallbacks){window.consentAPI.youtubeConsentCallbacks=[];for(const callback of existingYoutubeCallbacks)window.consentAPI.isYoutubeConsentGiven(callback)}},listenToSubmitFinished(callback){return this.onSubmitFinishedCallbacks=this.onSubmitFinishedCallbacks||[],this.onSubmitFinishedCallbacks.push(callback),this},executeSubmitFinishedCallbacks(){return!(!this.onSubmitFinishedCallbacks||0===this.onSubmitFinishedCallbacks.length)&&($(this.onSubmitFinishedCallbacks).each((index,callback)=>{callback(this)}),!0)},openCookieLayer(){this.$cookieLawLayer.find(".o-cookielaw").data("show-cookie-law")&&this.cookielawLayerModule.openLayer()},addChecked(ev){const $checkbox=$(ev.currentTarget);$checkbox.attr("checked",$checkbox.is(":checked"))},autoAccept(){this.isAutoAcceptEnabled()&&this.sendAutoAcceptCall()},sendAutoAcceptCall(close){this.extendedModeDefault||((this.autoAcceptTimeout||close)&&this.clearAutoAccept(),this.checkAndContinueTracking(!0)),this.hasCookieLawLayer?this.cookielawLayerModule.hideLayer():this.hide(this.lawIsOpen)},isAutoAcceptEnabled(){return this.$ctx.data("autoaccept")},clearAutoAccept(){return clearTimeout(this.autoAcceptTimeout),delete this.autoAcceptTimeout},hide(animate){if(this.lawIsOpen){if(!animate)return this.$ctx.hide(),void(this.lawIsOpen=!1);Modernizr.csstransitions&&this.$ctx.one("transitionend",()=>{this.lawIsOpen=!1}),setTimeout(()=>{this.$ctx.addClass("is-transitioned")},10)}},toggleCookieBaseExtendState(showFullExtendMode){this.shoudExtendedViewBeShown()||showFullExtendMode?(showFullExtendMode||this.clearAutoAccept(),this.$extendedCookieContent.show(),this.$baseCookieContent.hide(),this.$layerCloseButtons.hide(),this.$closeButton.hide(),showFullExtendMode&&(this.$save.removeClass("a-button-primary"),this.$save.addClass("a-button-secondary"),this.$extendedCookieContentActions.prepend([this.$accept,this.$deny]),this.$cancel.remove(),this.$extendCookieLaw.hide(),this.$configureCookiesContent.addClass("is-open"))):(this.extendedModeDefault||this.resetAutoAccept(),this.$extendedCookieContent.hide(),this.$baseCookieContent.show(),this.$layerCloseButtons.show(),this.$closeButton.show())},setPresetCookies(preset){this.$allowPerformanceCookiesCheckbox.prop("checked",preset.marketing),this.$allowTargetingCookiesCheckbox.prop("checked",preset.targeting),this.$allowThirdPartyCookiesCheckbox.prop("checked",preset.thirdparty),this.$allowPerformanceCookiesCheckbox.attr("checked",preset.marketing),this.$allowTargetingCookiesCheckbox.attr("checked",preset.targeting),this.$allowThirdPartyCookiesCheckbox.attr("checked",preset.thirdparty)},shoudExtendedViewBeShown(){return this.$configureCookies.hasClass("is-open")},show(){this.autoscroll&&T.Utils.scrollToTop(),this.lawIsOpen=!0,this.$ctx.show(),this.$ctx.is(":visible")&&(this.modalPopupFocus=ally.maintain.tabFocus({context:this.$ctx})),this.$ctx.removeClass("is-transitioned")},initAutoAccept(){this.isAutoAcceptEnabled()&&(this.showCookieLaw||this.hasCookieLawLayer&&this.openLayerOnLoad)&&(this.autoAcceptTimeout=setTimeout(()=>{this.autoAccept()},this.$ctx.data("autoaccept-timeout")))},resetAutoAccept(){this.clearAutoAccept(),this.initAutoAccept()},onClickAccept(ev){this.deInitFocusTrap(),this.setPresetCookies(this.checkboxDefaultConfig.accept),this.$policyForm.submit()},onClickSave(){this.deInitFocusTrap(),this.$policyForm.submit()},onClickDeny(ev){this.deInitFocusTrap(),this.setPresetCookies(this.checkboxDefaultConfig.deny),this.$policyForm.submit()},onClickCancel(){this.deInitFocusTrap(),this.extendedModeDefault&&this.$configureCookies.hasClass("is-open")?(this.hasCookieLawLayer?this.cookielawLayerModule.hideLayer():this.hide(!0),this.$extendCookieLaw.trigger(this.events.toggleExtendMode),this.toggleCookieBaseExtendState()):(this.$extendCookieLaw.trigger(this.events.toggleExtendMode),this.toggleCookieBaseExtendState())},onSubmitPolicyForm(ev){ev.preventDefault();const request=T.Utils.startAjaxRequest(this.$policyForm.data("ajax-id"));return!!request&&(request[0].done(()=>{this.clearAutoAccept(),this.checkAndContinueTracking(),this._events.emit("loader:close",{$trigger:this.$policyForm}),this.executeSubmitFinishedCallbacks()||this.hide(!0)}),!1)},onClickCloseButton(){this.deInitFocusTrap(),this.sendAutoAcceptCall(!0)},onSwitchToExtendCookie(){setTimeout(()=>{this.toggleCookieBaseExtendState()},0)},async acceptThirdPartyCookiesOnly(){return $.ajax({url:this.acceptThirdPartyCookiesAjaxUrl,cache:!1,type:"POST",headers:T.Utils.getCSRFTokenHeader()||{},success:(_result,_textStatus,_jqXHR)=>{this.$allowThirdPartyCookiesCheckbox.prop("checked",!0),this.checkAndContinueTracking()}})},cookieNameMapping:{allowPerformanceCookies:"cookies_allow_web_analytics",allowTargetingCookies:"cookies_allow_remarketing",allowThirdPartyCookies:"cookies_allow_third_party"},prepareTrackingDelay(){this.trackingDelayId="cookielaw-"+this.$ctx.data("t-id"),this.bodyModule=T.Utils.application.getModuleById($("body").data("t-id")),window.cookie_settings&&"false"===window.cookie_settings.cookies_allow_web_analytics&&this.bodyModule.delayPageLoadTracking(this.trackingDelayId);let trackedNames=[];"true"===window.cookie_settings.cookies_allow_remarketing&&trackedNames.push("remarket"),"true"===window.cookie_settings.cookies_allow_third_party&&trackedNames.push("thirdparty"),trackedNames.length>0&&T.Utils.getLayout().trackValues(trackedNames.join(" "),{})},areThirdPartyCookiesAllowed:()=>"true"===window.cookie_settings.cookies_allow_third_party,checkAndContinueTracking(ignoreUserSelect){let shouldFireTrackingEvents=!1,new_co
7okie_settings={};1!=ignoreUserSelect&&this.$checkboxes.each((i,e)=>{let attr=$(e).attr("name"),val=$(e).is(":checked");new_cookie_settings[this.cookieNameMapping[attr]]=val.toString()}),new_cookie_settings.cookies_allow_persistent_visitor_id=new_cookie_settings.cookies_allow_web_analytics,"true"===window.cookie_settings.config_allow_analytics_without_visitor_id&&(new_cookie_settings.cookies_allow_web_analytics="true"),"false"===window.cookie_settings.cookies_allow_web_analytics&&"true"===new_cookie_settings.cookies_allow_web_analytics&&(shouldFireTrackingEvents=!0);let trackedNames=[];"false"===window.cookie_settings.cookies_allow_remarketing&&"true"===new_cookie_settings.cookies_allow_remarketing&&trackedNames.push("remarket"),"false"===window.cookie_settings.cookies_allow_third_party&&"true"===new_cookie_settings.cookies_allow_third_party&&trackedNames.push("thirdparty"),$.extend(window.cookie_settings,new_cookie_settings),$(document).trigger("cookieConsentUpdated"),trackedNames.length>0&&T.Utils.getLayout().trackValues(trackedNames.join(" "),{},!shouldFireTrackingEvents),shouldFireTrackingEvents&&this.bodyModule.continuePageLoadTracking(this.trackingDelayId),this.areThirdPartyCookiesAllowed()&&this.triggerExistingYoutubeConsentCallbacks()},deInitFocusTrap(){this.modalPopupFocus&&this.modalPopupFocus.disengage()}})}(jQuery),function($){T.Module.CookieLawDisabled=T.createModule({start(resolve){if(this.$ctx=$(this._ctx),0===$("*[data-t-name='CookieLaw']").length){let trackedNames=[];this.$ctx.data("remarket")&&trackedNames.push("remarket"),this.$ctx.data("thirdparty")&&trackedNames.push("thirdparty"),trackedNames.length>0&&T.Utils.getLayout().trackValues(trackedNames.join(" "),{},!1),this.bodyModule=T.Utils.application.getModuleById($("body").data("t-id"))}resolve()}})}(jQuery),function($){T.Module.CookitLocatorToSearchButton=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$button=this.$ctx.find(".js-scroll-to-top"),this.$searchbar=$(".js-searchinput"),this.$button.on("click",()=>this.scrollToSearchClicked()),window.onscroll=(()=>this.scrollFunction()),resolve()},scrollToSearchClicked(){if(this.$searchbar.length>0){const offsetTop=this.$searchbar.offset().top-50;T.Utils.scrollToTop(offsetTop)}},scrollFunction(){const viewport=T.Utils.getViewport();!this.$searchbar||"mobile"!==viewport&&"tablet"!==viewport||(T.Utils.isInViewport(this.$searchbar)?this.$button.addClass("hidden"):this.$button.removeClass("hidden"))}})}(jQuery),function($){T.Module.DealerLocator=T.createModule({start(resolve){return resolve(),this.$ctx=$(this._ctx),this.$filter=this.$ctx.find(".m-filter"),this.$searchField=this.$ctx.find(".m-searchfield"),this._events.on("dealerlocator:search",data=>this.onDealerLocatorSearch(data)),this._events.on("t.sync",()=>this.sync())},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0,this.searchFieldId=this.$searchField.data("t-id"),this.$filter.length>0&&(this.filter=this._sandbox.getModuleById(this.$filter.data("t-id"))))},onDealerLocatorSearch(data){if(data.id===this.searchFieldId&&(null!=this.filter?this.filter.hasActiveFilters():void 0))return null!=this.filter?this.filter.reset():void 0}})}(jQuery),function($){T.Module.Dob2Address=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.data=this.$ctx.data(),this.jsCitySelector=".js-city-selector",this.jsStreetSelector=".js-street
7-selector",this.jsPostalCodeSelector=".js-postalcode-selector",this.jsStreetNumberSelector=".js-streetnumber-selector",this.jsToggleBox=".js-togglebox-final-address",this.jsRadioSelection=".js-dobaddress-final-address",this.jsRadioCorrectSelection=".js-dobaddress-final-address-correct",this.jsToggleBoxCheckedRadios=`${this.jsToggleBox} input[type='radio']:checked`,this.smsCheckboxId=this.$ctx.data("sms-checkbox-id"),this.cellPhoneId=this.$ctx.data("cell-phone-id"),this.smsActivationState=this.$ctx.data("sms-checkbox-activation-state")||!1,null!=this.smsCheckboxId&&this.cellPhoneId&&(this.$smsCheckbox=$(`#${this.smsCheckboxId}`),this.$cellPhone=$(`#${this.cellPhoneId}`)),this.$cityInput=this.$ctx.find(this.jsCitySelector),this.$streetInput=this.$ctx.find(this.jsStreetSelector),this.$postalCodeInput=this.$ctx.find(this.jsPostalCodeSelector),this.$streetnumberInput=this.$ctx.find(this.jsStreetNumberSelector),this.$billingAddressRadio=this.$ctx.find(".js-same-address"),this.$billingAddressRadio.prop("checked",!0),this.$fieldSetToggleBox=this.$ctx.find(this.jsToggleBox),this.submitCheck=!1,this.$form=$(document).find('form[data-ajax-id="ADDRESS"]'),this.dobSuggestionResolveConfig=this.$ctx.data("suggestion-resolve-ajax"),null!=this.dobSuggestionResolveConfig&&(this.dobSuggestionResolve=T.Utils.createController(this.$ctx,"LoadDataController",this.dobSuggestionResolveConfig.type||"LoadAjax,RenderJson"),this.dobSuggestionResolve.init(this.dobSuggestionResolveConfig)),this.$ctx.on("change",this.jsRadioSelection,ev=>this.onFinalAddressSelected(ev)),this._events.on("handleDobStepRequestResponse",data=>this.handleRequestResponse(data)),this._events.on("handleDobStepRequestResponseSuccess",data=>this.handleRequestResponseSuccess(data)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.form=this._sandbox.getModuleById(this.$form.data("t-id")),T.Utils.allSynced=!0)},handleRequestResponseSuccess(data){if(data){if("Dob2Problem"===data.$step.data("t-name"))data.response}},disableAddressFields(disabled){return this.$postalCodeInput.attr("disabled",disabled),this.$cityInput.attr("disabled",disabled),this.$streetnumberInput.attr("disabled",disabled),this.$streetInput.attr("disabled",disabled)},ensureValueInSuggestion(suggestion,cb){return null!=suggestion.value?cb(null,suggestion):null==this.dobSuggestionResolve?(console.error(`dob address missing 'suggestion-resolve-ajax' config. value missing suggestion ${JSON.stringify(suggestion)}`),cb("config is missing")):this.dobSuggestionResolve.execute({params:{id:suggestion.id},success:data=>(null!=data.value?suggestion.value=data.value:suggestion.value={zip:"",street:"",city:"",streetnumber:""},cb(null,suggestion)),error:err=>(console.error(`error while requesting suggestion: ${err}`),cb("suggestion call returned error"))})},handleAjaxResult(result){const mod=this;if(!(this.$form.find(".has-error").length>0))return result.correctAddress&&1===result.suggestions.length||this.submitCheck?this.$form.submitForm():(mod.$ctx.find(mod.jsToggleBoxCheckedRadios).prop("checked",!1),mod._events.emit("openToggleBox","final_address"),T.Utils.scrollToTop(mod.$fieldSetToggleBox.offset().top),this.$form.find('[type="submit"]').removeAttr("disabled")),mod.disableAddressFields(!0);this.$form.find('[type="submit"]').removeAttr("disabled")},submitForm(){return this.$form.addClass("js-is-valid").trigger("submit",{dblClickCheck:!1})},onFinalAddressSelected(ev){const mod=this,selectedValue=$(ev.currentTarget).val();switch(mod.disableAddressFields(!1),selectedValue){case"correct":return this.$form.submitForm();default:let suggestion=$(ev.currentTarget).data("value");this.ensureValueInSuggestion(suggestion,(error,suggestion)=>(null===error&&(mod.$postalCodeInput.val(suggestion.value.zip),mod.$cityInput.val(suggestion.value.city),mod.$streetInput.val(suggestion.value.street),mod.$streetnumberInput.val(suggestion.value.streetnumber),this.submitCheck=!0),mod._events.emit("closeToggleBox","final_address"),T.Utils.scrollToTop(mod.$postalCodeInput)))}},handleRequestResponse(data){let response=data.response;data.$step[0]===this.$ctx[0]&&(response.errors?this.fieldErrors(response.errors):this.showDobErrors(response))},fieldErrors(errors){for(var field in errors){let $field=this.$ctx.find(`[
7id=${field}]`),$dateField=$field.siblings(".js-pikaday");0===$dateField.length?$field.addClass("has-error"):($dateField.addClass("has-error"),$dateField.parent().addClass("has-error")),this.$ctx.find(`[data-replace-origin=${field}]`).text(errors[field])}},showDobErrors(response){response.headLineMessage&&(this.$headlineField=this.$ctx.find("[data-replace-origin=headLineMessage]"),this.$headlineField.text(response.headLineMessage),this.$headlineField.show()),response.errorDescription&&(this.$descriptitionField=this.$ctx.find("[data-replace-origin=errorDescription]"),this.$descriptitionField.text(response.errorDescription),this.$descriptitionField.show())},hideDobErrors(){data.$step[0]===this.$ctx[0]&&(this.$headlineField&&this.$headlineField.length>0&&this.$headlineField.hide(),this.$descriptitionField&&this.$descriptitionField.length>0&&this.$descriptitionField.hide())},onSubmitForm(ev){if(null!=this.form?this.form.hasError():void 0)return this.form.scrollToError(),!1;const{data:data}=this;return!(!this.$form.hasClass("js-is-valid")&&!data.noajax)||(null!=ev&&ev.preventDefault(),T.Utils.startAjaxRequest(data.ajaxId,data.ajax,{"dobAddressData.addressData.postalcode":this.$postalCodeInput.val(),"dobAddressData.addressData.town":this.$cityInput.val(),"dobAddressData.addressData.streetName":this.$streetInput.val(),"dobAddressData.addressData.streetnumber":this.$streetnumberInput.val()})[0].done($.proxy(this.handleAjaxResult,this)),!1)}})}(jQuery),function($){T.Module.Dob2Appliance=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$selectDivison=this.$ctx.find(".js-select-divison"),this.$selectDivison.on("change",()=>this.triggerClusterAjax()),this.$productClusterTemplate=this.$ctx.find("#product-cluster-template"),this.productClusterDotTemplate=doT.template(this.$productClusterTemplate.html()),this._events.on("t.sync",()=>this.sync()),this._events.on("handleDobStepRequestResponse",data=>this.handleRequestResponse(data)),this._events.emit("hideDobErrors",data=>this.hideDobErrors(data)),resolve()},sync(){this.isSynced||(this.isSynced=!0)},triggerClusterAjax(){const clusterAjax=this.$selectDivison.data("cluster-ajax");if(this.productDivisonCode=this.$selectDivison.find("option:selected").data("label"),this.businessFieldCode="",this.updateEnumberParameter(),clusterAjax&&this.productDivisonCode){const request=T.Utils.startAjaxRequest(!1,{url:clusterAjax,dataType:"JSON"},{egDivision:this.productDivisonCode});if(!request)return!1;request[0].done(response=>this.renderContent(response))}},onSelectBusinessField(){this.businessFieldCode=this.$selectBusinessField.find("option:selected").val(),this.updateEnumberParameter()},renderContent(response){this.productClusterHTML=this.productClusterDotTemplate(response),T.Utils.replaceContent(this.productClusterHTML,"replace",!1),this.$selectBusinessField=this.$ctx.find(".js-select-business-field"),this.$selectBusinessField.on("change",()=>this.onSelectBusinessField())},handleRequestResponse(data){let response=data.response;data.$step[0]===this.$ctx[0]&&(response.errors?this.fieldErrors(response.errors):this.showDobErrors(response))},fieldErrors(errors){for(var field in errors){let $field=this.$ctx.find(`[name=${field}]`),$dateField=$field.siblings(".js-pikaday");0===$dateField.length?$field.addClass("has-error"):($dateField.addClass("has-error"),$dateField.parent().addClass("has-error")),this.$ctx.find(`[data-replace-origin=${field}]`).text(errors[field])}},showDobErrors(response){response.headLineMessage&&(this.$headlineField=this.$ctx.find("[data-replace-origin=headLineMessage]"),this.$headlineField.text(response.headLineMessage),this.$headlineField.show()),response.errorDescription&&(this.$descriptitionField=this.$ctx.find("[data-replace-origin=errorDescription]"),this.$descriptitionField.text(response.errorDescription),this.$descriptitionField.show())},hideDobErrors(){data.$step[0]===this.$ctx[0]&&(this.$headlineField&&this.$headlineField.length>0&&this.$headlineField.hide(),this.$descriptitionField&&this.$descriptitionField.length>0&&this.$descriptitionField.hide())},updateEnumberParameter(){(this.productDivisonCode||this.businessFieldCode)&&$(".js-input-response-parameter").each((i,el)=>{"eg"==$(el).attr("name")?$(el).attr("value",this.productDivisonCode):$(el).attr("value",this.businessFieldCode)})}})}(jQuery),function($){window.localization.configurations;T.Module.Dob2Appointment=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,T.Utils.allSynced=!1,this.sync=$.proxy(this,"sync"),this.getWorkingDays=$.proxy(this,"getWorkingDays"),this.handleResponseWorkingDays=$.proxy(this,"handleResponseWorkingDays"),this.initCalendar=$.proxy(this,"initCalendar"),this.updateTimeslots=$.proxy(this,"updateTimeslots"),this.onChangeAppointment=$.proxy(this,"onChangeAppointment"),this.onChangeTimeslot=$.proxy(this,"onChangeTimeslot"),this.$calendar=this.$ctx.find(".js-appointment-calendar"),this.$timeslots=this.$ctx.find(".js-timeslot"),this.$timeslotContainer=this.$ctx.find(".appointment-timeslots"),this.$appointmentDay=this.$ctx.find(".js-appointment-day"),this.$appointmentTime=this.$ctx.find(".js-appointment-time"),this.$optionBook=this.$ctx.find(".js-appointment-option-book"),this.$optionContact=this.$ctx.find(".js-appointment-option-contact"),this.$form=this.$ctx.closest('[data-t-name="Form"]'),this.$tplCalendar=this.$(".tpl-calendar").html(),this.data=this.$ctx.data(),this.$hipError=this.$ctx.find(".js-hip-error"),this.$hipSuccess=this.$ctx.find(".js-hip-success"),this._events.on("handleDobStepRequestResponseSuccess",data=>this.handleRequestResponseSuccess(data)),this.firstLoad=!0,this._events.on("t.sync",this.sync),this.$optionBook.parent().toggleClass("hidden"),this._events.emit("form:disableSubmit",{id:this.$form.data("t-id")}),resolve()},sync(){if(!this.isSynced)return this.isSynced=!0,T.Utils.allSynced=!0},handleRequestResponseSuccess(data){if(data){if("Dob2Address"===data.$step.data("t-name")){data.response.hipError?(this.$hipError.removeClass("hidden"),this.$hipSuccess.addClass("hidden")):(this.$hipError.addClass("hidden"),this.$hipSuccess.removeClass("hidden"),this.getWorkingDays())}}},initCalendar(response){this.timeslotArray=[],this.dateArray=[];const dateMomentArray=[];let disabledDays="";$.each(response,(i,el)=>{dateMomentArray.push(moment(el.date)),this.dateArray.push(el.date),el.timeslots&&el.timeslots.length&&(this.timeslotArray[el.date]=el.appointmentData)});const dateMin=moment.min(dateMomentArray),dateMax=moment.max(dateMomentArray),m=moment(dateMin);for(;m.diff(dateMax,"days");){const mformat=m.format("YYYY-MM-DD");-1===this.dateArray.indexOf(mformat)&&(disabledDays+=mformat+","),m.add(1,"days")}return this.$calendar.html(doT.template(this.$tplCalendar)({dateMin:dateMin,dateMax:dateMax,defaultDate:dateMin,disabledDays:disabledDays,disableWeekends:""})),this.$appointments=this.$calendar.find("input[data-t-name]"),this.$appointments.on("change",this.onChangeAppointment),
70!=response.length&&this.$ctx.find(".js-input-response-initialAvailableDate").val(dateMin),T.Utils.application._sandbox.addModules(this.$appointments[0])},getWorkingDays(){this.$ctx.find(".js-callBackOptionDisabled").length>0&&this.$ctx.find(".js-callBackOptionDisabled").addClass("hidden"),this.enableTimeslotLoadingVisualization(this.$calendar);const request=T.Utils.startAjaxRequest(this.$ctx.data("ajax-appointment"));return!!request&&request[0].done(data=>{this.disableTimeslotLoadingVisualization(this.$calendar),data.length||(this.clearPrevData(),this.$ctx.find(".js-message").addClass("hidden"),this.$ctx.find('[data-obj-name="Day"]').removeAttr("data-obj-name"),this.$ctx.find(".js-input-response-time").removeAttr("data-obj-name"),this.$ctx.find(".js-input-response-summary-no-app").attr("data-obj-name","noAppointmentTime"),this.$currentContext=this.$ctx.parent().parent().parent().parent().parent().parent(),this.$currentContext.removeClass("is-active"),this.$currentContext.addClass("has-validated"),this.$currentContext.find(".js-step-number-wrapper").addClass("hidden"),this.$currentContext.find(".js-process-step-edit").removeClass("hidden"),this.$currentContext.find(".js-step-icon-wrapper").removeClass("hidden"),this.$currentContext.find(".js-process-step-content").removeClass("is-open"),this.$currentContext.find(".js-summary").removeClass("hidden"),this._events.emit("appointmentstepClose
7Layer"),$(".js-dob-book").attr("disabled",!1),this.$currentContext.find(".js-process-step-edit").addClass("hidden")),this.handleResponseWorkingDays(data)})},clearPrevData(){this.$ctx.find("[name='timeslotFound']").val(""),this.$ctx.find('[name="day"]').val(""),this.$ctx.find(".js-input-response-summary").val(""),this.$ctx.find(".js-input-response-time").val(""),this.$ctx.find(".js-input-response-timeslotType").val(""),this.$ctx.find(".js-input-response-initialAvailableDate").val(""),this.$ctx.find('[name="appointmentEndDate"]').val(""),this.$ctx.find('[name="appointmentStartDate"]').val("")},handleResponseWorkingDays(response){return this.workdays=response||[],Boolean(this.workdays.length)||this.$optionContact.is(":checked")||this.$optionContact.click(),Boolean(this.workdays.length)&&!this.$optionBook.is(":checked")&&this.$optionBook.click(),!Boolean(this.workdays.length)&&this.$optionContact.parent().hasClass("hidden")&&this.$optionContact.parent().toggleClass("hidden"),this.$optionBook.parent().toggleClass("hidden",!Boolean(this.workdays.length)),this.initCalendar(response)},updateTimeslots(response){if(this.$timeslotContainer.empty(),0!==response.length){let content="";for(const key in response)if(response.hasOwnProperty(key)){let index=response[key].appointmentStartDateLocal.indexOf("T"),timeSlot=response[key].appointmentStartDateLocal.substring(index+1,index+6)+"-"+response[key].appointmentEndDateLocal.substring(index+1,index+6);content+=`<div class="m-forminput m-forminput-radio"\n\t\t\t\t\t\tdata-t-name="FormInput"><input type="radio" name="timeslotFound" id="${key}" class="m-forminput js-timeslot"\n\t\t\t\t\t\tvalue="${key}" data-timeslot-value="${response[key].timeSlot}"><label class="a-formlabel radio" for="${key}">\n\t\t\t\t\t\t<span class="label-text">${timeSlot}</span>\n\t\t\t\t\t\t</label></input></div>`}return this.$timeslotContainer.append(content),this._sandbox.addModules(this.$timeslotContainer),this.$timeslots=this.$ctx.find(".js-timeslot"),this.$timeslots.on("change.timeslot",this.onChangeTimeslot),this.$timeslots.prop("disabled",!1),this.$timeslots.prop("checked",!1),this.$timeslots.filter(":enabled").first().prop("checked",!0).trigger("change.timeslot"),this.$appointmentDay.text(moment(this.$appointments.val()).format(window.localization.configurations.dateFormat.toUpperCase())),this._events.emit("form:enableSubmit",{id:this.$form.data("t-id")})}this.$ctx.find(".js-appointment-day").text("")},onChangeAppointment(ev){const $currentTarget=$(ev.currentTarget),targetDate=$currentTarget.val();if(this.currentAppointmentDate=targetDate,this.timeslotArray&&this.timeslotArray[targetDate])this.updateTimeslots(this.timeslotArray[targetDate]);else{if(this.dateArray.length){this.enableTimeslotLoadingVisualization($currentTarget);const request=T.Utils.startAjaxRequest(this.$ctx.data("ajax-freeappointment"),{},{date:targetDate});return request?request[0].done(data=>{this.disableTimeslotLoadingVisualization($currentTarget),this.updateTimeslots(data)}):(this.disableTimeslotLoadingVisualization($currentTarget),!1)}this.updateTimeslots([])}},enableTimeslotLoadingVisualization($currentTarget){this._events.emit("form:disableSubmit",{id:this.$form.data("t-id")}),this._events.emit("loader:open",{loaderType:"layer",$trigger:$currentTarget})},disableTimeslotLoadingVisualization($currentTarget){this._events.emit("form:enableSubmit",{id:this.$form.data("t-id")}),this._events.emit("loader:close",{$trigger:$currentTarget})},onChangeTimeslot(ev){return ev.currentTarget.classList.contains("js-appointment-option-contact")?(this.$ctx.find('[data-obj-name="Day"]').removeAttr("data-obj-name"),this.$ctx.find(".js-input-response-time").removeAttr("data-obj-name"),this.$ctx.find(".js-input-response-summary-no-app").attr("data-obj-name","noAppointmentTime")):(this.$ctx.find(".js-message").removeClass("hidden"),this.$ctx.find('[name="day"]').attr("data-obj-name","Day"),this.currentTimeSlot=$(ev.currentTarget).val(),this.updateAppointmentDate(),this.$ctx.find(".js-input-response-timeslotType").val(this.currentTimeSlot),this.$ctx.find(".js-input-response-summary-no-app").removeAttr("data-obj-name"),this.$ctx.find(".js-input-response-time").attr("value",$(ev.currentTarget).parent().find(".label-text").text()),this.$ctx.find(".js-input-response-summary").attr("value",$(ev.currentTarget).attr("data-timeslot-value")),this.$appointmentTime.text($(ev.currentTarget).parent().find(".label-text").text())),this.$appointmentTime.show()},updateAppointmentDate(){for(var key in this.selectedResponse=this.workdays.filter(data=>
7data.date==this.currentAppointmentDate)[0],this.selectedResponse.appointmentData)this.currentTimeSlot===key&&(this.selectedTimeslot=this.selectedResponse.appointmentData[this.currentTimeSlot]);this.selectedTimeslot&&$(".js-input-response").each((i,el)=>{let attrNames=$(el).attr("name");"servicePartner"==attrNames?$(el).attr("value",JSON.stringify(this.selectedTimeslot.servicePartnerData)):attrNames in this.selectedTimeslot&&$(el).attr("value",this.selectedTimeslot[attrNames])})}})}(jQuery),function($){T.Module.Dob2Problem=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,T.Utils.allSynced=!1,this.$form=this.$ctx.closest("form"),this.$titles=this.$ctx.find(".titles"),this.$backLink=this.$ctx.find(".js-back-link"),this.$freeText=this.$ctx.find(".js-free-text"),this.$backLink.on("click",ev=>this.onclickBackLink(ev)),this.$dobProblemTemplate=this.$ctx.find("#dob2-problem-selection"),this.skipSelection=!1,this.dobProblemTemplate=doT.template(this.$dobProblemTemplate.html()),this.$dobProblemTemplate.length&&doT.template(this.$dobProblemTemplate.html()),this.$dobFaultTemplate=this.$ctx.find("#dob2-fault-type-selection"),this.dobFaultTemplate=doT.template(this.$dobFaultTemplate.html()),this.$dobFaultTemplate.length&&doT.template(this.$dobFaultTemplate.html()),this.$selfhelpFaultTemplate=this.$ctx.find("#selfhelp-fault-type-selection"),this.selfhelpFaultTemplate=doT.template(this.$selfhelpFaultTemplate.html()),this.$selfhelpFaultTemplate.length&&doT.template(this.$selfhelpFaultTemplate.html()),this.$backLink.addClass("hidden"),this.$freeText.addClass("hidden"),this._events.on("handleDobStepRequestResponseSuccess",data=>this.handleRequestResponseSuccess(data)),this._events.emit("toggleNextButton",{$problemStep:$(this.$ctx),value:!0}),resolve()},sync(){if(!this.isSynced)return this.isSynced=!0,T.Utils.allSynced=!0},handleRequestResponseSuccess(data){if(data){if("Dob2Appliance"===data.$step.data("t-name")){let response=data.response;response.hasOwnProperty("selfHelpPage")&&response.selfHelpPage&&(Object.keys(response.dobQuestionTree.dobFaultTypes[0]).includes("dobFaults")||Object.keys(response.dobQuestionTree.dobFaultTypes[0]).includes("dobQuestions"))?this.renderDobProblemContentSelfhelp(response):this.renderDobProblemContent(response)}}},fillDotTemplate:(dotTemplate,data)=>dotTemplate(data).replace(/\s{2,}/g," "),replaceDotContent(content,callback){T.Utils.replaceContent(content,"replace",!1,callback)},renderDobProblemContentSelfhelp(json){this.$ctx.parent().parent().parent().parent().find(".js-step-submit").addClass("hidden"),this.$ctx.find(".problem-steps").remove(),this.$ctx.find(".selected").remove(),$(document).find(".js-summary").addClass("hidden"),this.$freeText.addClass("hidden"),this.$ctx.next().find(".js-step-submit").addClass("hidden"),this.$ctx.find(".js-back-link").addClass("hidden"),this.selfhelpProblemHTML=this.fillDotTemplate(this.selfhelpFaultTemplate,json),this.replaceDotContent(this.selfhelpProblemHTML,()=>{this.$faultTypes=this.$ctx.find(".js-fault-types"),this.$categories=this.$ctx.find(".js-categories"),this.$questions=this.$ctx.find(".js-questions"),this.$answers=this.$ctx.find(".js-answers"),this.bshGfleds=this.$ctx.find(".js-bsh-gfleds"),this.$rootText=this.$ctx.find(".js-dob-root"),this.$gfleds=this.$ctx.find(".js-gfleds"),this.$faults=this.$ctx.find(".js-faults"),this.$problems=this.$ctx.find(".js-problems"),this.$dynamicHiddenFormData=this.$ctx.find(".js-form-data-hidden"),this.$faultTypes.on("click",ev=>this.onClickFaultTypes(ev,json)),this.$problems.on("click",ev=>this.onClickProblems(ev)),this.$faults.on("click",ev=>this.onClickFaults(ev,json.singleFault)),this.bshGfleds.on("click",ev=>this.onClickOfGfleds(ev)),this.removeEmptyElements(".js-fault-types"),this.removeEmptyElements(".js-problems"),this.removeEmptyElements(".js-faults"),this.updateSelectedProblems(this.$rootText.text()),this.$rootText.addClass("hidden"),$("#dob2-problems").contents().each(function(){this.nodeType===Node.TEXT_NODE&&this.remove()});const $faultTypeId=this.$faultTypes[0].id;this.$ctx.find(`#${$faultTypeId}`).trigger("click")})},renderDobProblemContent(response){this.$ctx.parent().parent().parent().parent().find(".js-step-submit").addClass("hidden"),this.$ctx.find(".problem-steps").remove(),this.$ctx.find(".selected").remove(),$(document).find(".js-summary").addClass("hidden"),this.$freeText.addClass("hidden"),this.$ctx.next().find(".js-step-submit").addClass("hidden"),this.$ctx.find(".js-back-link").addClass("hidden"),this.dobProblemHTML=this.fillDotTemplate(this.dobProblemTemplate,response),this.replaceDotContent(this.dobProblemHTML,()=>{this.$faultTypes=this.$ctx.find(".js-fault-types"),this.$rootText=this.$ctx.find(".js-dob-root"),this.$dynamicHiddenFormData=this.$ctx.find(".js-form-data-hidden"),this.$faultTypes.on("click",ev=>this.onClickFaultTypes(ev)),this.removeEmptyElements(".js-fault-types"),this.updateSelectedProblems(this.$rootText.text()),this.$rootText.addClass("hidden"),$("#dob2-problems").contents().each(function(){this.nodeType===Node.TEXT_NODE&&this.remove()})})},onClickFaultTypes(ev,data){ev.preventDefault(),void 0!==data&&data.selfHelpPage?this.handleSelfHelpPage(ev):this.handleNonSelfHelpPage(ev)},handleSelfHelpPage(ev){this.hideElement(this.$faultTypes);const $categoryLink=$(ev.currentTarget).parent();this.updateSelectedProblems($(ev.currentTarget).find(".text").text()),$categoryLink.addClass("selected-category"),$categoryLink.find("> ul > li").hasClass("js-questions")?(this.showQuestions($categoryLink),this.$backLink.addClass("hidden")):$categoryLink.find("> ul > li").hasClass("js-answers")?(this.showAnswers($categoryLink),this.$backLink.addClass("hidden")):this.show
7FreeTextandNextBtn($(ev.currentTarget).data("dc-code"))},handleNonSelfHelpPage(ev){this.enableProblemLoadingVisualization(this.$form),this.$ctx.find(".js-categories").find("ul").remove(),this.$backLink.removeClass("hidden");const problemAjaxId=ev.currentTarget.dataset.ajaxId,urlParams={faultTypeId:ev.currentTarget.id},request=T.Utils.startAjaxRequest(problemAjaxId,{dontSendFormContent:!0},urlParams);if(!request)return!1;request[0].done(response=>{this.disableProblemLoadingVisualization(this.$form),this.renderDobProblemSubContent(ev,response)}),this.hideElement(this.$faultTypes),this.showCategoryLinks(ev,request[0])},showCategoryLinks(ev,req=!1){const $categoryLink=$(ev.currentTarget).parent();this.updateSelectedProblems($(ev.currentTarget).find(".text").text()),$categoryLink.addClass("selected-category"),$categoryLink.find("> ul > li").hasClass("js-questions")?this.showQuestions($categoryLink):$categoryLink.find("> ul > li").hasClass("js-answers")?this.showAnswers($categoryLink):req||this.showFreeTextandNextBtn($(ev.currentTarget).data("dc-code"))},renderDobProblemSubContent(ev,json){this.dobFaultHTML=this.fillDotTemplate(this.dobFaultTemplate,json),this.$ctx.find(".js-categories.selected-category").append(this.dobFaultHTML),this.$categories=this.$ctx.find(".js-categories"),this.$questions=this.$ctx.find(".js-questions"),this.$answers=this.$ctx.find(".js-answers"),this.bshGfleds=this.$ctx.find(".js-bsh-gfleds"),this.$gfleds=this.$ctx.find(".js-gfleds"),this.$faults=this.$ctx.find(".js-faults"),this.$problems=this.$ctx.find(".js-problems"),this.$dynamicHiddenFormData=this.$ctx.find(".js-form-data-hidden"),this.$problems.on("click",ev=>this.onClickProblems(ev)),this.$faults.on("click",ev=>this.onClickFaults(ev)),this.bshGfleds.on("click",ev=>this.onClickOfGfleds(ev)),this.removeEmptyElements(".js-problems"),this.removeEmptyElements(".js-faults"),this.$ctx.find(".titles").find("ul.selectedcategory.list-unstyled").find(".selected").text(""),this.showCategoryLinks(ev)},onClickProblems(ev){ev.preventDefault(),this.$backLink.removeClass("hidden");const $problemsLink=$(ev.currentTarget).parent();this.hideElement(this.$problems),this.updateSelectedProblems($(ev.currentTarget).find(".text").text()),$problemsLink.addClass("selected-category"),this.skipSelection?($problemsLink.addClass("selected-category selected-category-skipped"),$problemsLink.find("> ul > li").hasClass("js-questions")?this.showQuestions($problemsLink):$problemsLink.find("> ul > li").hasClass("js-answers")?this.showAnswers($problemsLink):this.showFreeTextandNextBtn($(ev.currentTarget).data("dc-code"))):($problemsLink.addClass("selected-category"),this.showAnswers($problemsLink))},onClickFaults(ev,singleFault=!1){ev.preventDefault(),this.$backLink.removeClass("hidden");const $faultsLink=$(ev.currentTarget).parent();this.hideElement(this.$faults),this.updateSelectedProblems($(ev.currentTarget).find(".text").text()),$faultsLink.hasClass("selected-category")?(this.showFreeTextandNextBtn($(ev.currentTarget).data("dc-code")),singleFault&&this._events.emit("problemstepCloseLayer")):$faultsLink.find(".js-problems").length&&!$faultsLink.hasClass("selected-category")?(this.skipSelection?$faultsLink.addClass("selected-category selected-category-skipped"):$faultsLink.addClass("selected-category"),this.showQuestions($faultsLink)):$faultsLink.find(".js-gfleds").length&&!$faultsLink.hasClass("selected-category")?($faultsLink.addClass("selected-category"),this.showElement($faultsLink.find(".js-gfleds"))):$faultsLink.find("ul").length||($faultsLink.addClass("selected-category"),this.showFreeTextandNextBtn($(ev.currentTarget).data("dc-code")),singleFault&&this._events.emit("problemstepCloseLayer"))},onClickOfGfleds(ev){ev.preventDefault(),$(ev.currentTarget).parent().addClass("selected-category"),this.hideElement(this.$gfleds),this.updateSelectedProblems($(ev.currentTarget).find(".text").text()),this.showFreeTextandNextBtn($(ev.currentTarget).data("dc-code"))},scrollToSummary(){T.Utils.scrollToTop(700)},showQuestions($parentAnswer){const $questionUl=$parentAnswer.find(".js-questions ul"),$questionsToShow=$parentAnswer.find(".js-questions"),$immedateQuestions=$parentAnswer.find("> ul > .js-questions");$questionUl.length||1===$immedateQuestions.length?1===$immedateQuestions.length?($immedateQuestions.removeClass("hide"),this.skipSelection=!0,$immedateQuestions.find("> .js-problems").trigger("click")):(this.skipSelection=!1,$immedateQuestions.removeClass("hide"),$immedateQuestions.each(function(){$(this).find("> .js-problems").removeClass("hide").addClass("show")}),this.scrollToSummary()):(this.skipSelection=!1,$questionsToShow.removeClass("hide"),this.showElement($parentAnswer.find(".js-problems")),this.scrollToSummary())},showAnswers($parentQuestion){const $answerUl=$parentQuestion.find(".js-answers ul"),$answersToShow=$parentQuestion.find(".js-answers"),$immedateAnswers=$parentQuestion.find("> ul > .js-answers");$answerUl.length||1===$immedateAnswers.length?1===$immedateAnswers.length?($immedateAnswers.removeClass("hide"),this.skipSelection=!0,$immedateAnswers.find("> .js-faults").trigger("click")):(this.skipSelection=!1,$immedateAnswers.removeClass("hide"),$immedateAnswers.each(function(){$(this).find("> .js-faults").removeClass("hide").addClass("show")}),this.scrollToSummary()):(this.skipSelection=!1,$answersToShow.removeClass("hide"),this.showElement($parentQuestion.find(".js-faults")),this.scrollToSummary()),$parentQuestion.hasClass("selected-category-skipped")&&$parentQuestion.addClass("selected-category")},updateSelectedProblems(text){this.$titles.find(".selectedcategory .selected").length?(this.$titles.find(".selectedcategory").removeClass("hidden"),this.$titles.find(".selectedcategory .selected").last().append(`<ul> <li class="selected ${this.skipSelection?"skipped":""}">\n\t\t\t\t<div class="selected-answer"> ${text} </div>\n\t\t\t\t </li></ul>`)):(this.$titles.find(".selectedcategory").addClass("hidden"),this.$titles.find(".selectedcategory").append('<ul> <li class="selected">\n\t\t\t\t </li></ul>'))},prevParentSkipped($lastSelected){const $islastRootSelected=this.$ctx.find(".selected-category").eq(-2);return $lastSelected.hasClass("selected-category-skipped")?($lastSelected.removeClass("selected-category selected-category-skipped"),this.$ctx.find(".selected .skipped").last().remove(),$lastSelected=$islastRootSelected,this.prevParentSkipped($lastSelected)):$lastSelected},onclickBackLink(ev){ev.preventDefault(),this.$freeText.addClass("hidden"),this._events.emit("toggleNextButton",{$problemStep:$(this.$ctx),value:!0});let $lastSelected=this.$ctx.find(".selected-category").last();if($lastSelected.hasClass("selected-category-skipped")&&($lastSelected=this.prevParentSkipped($lastSelected),this.hideElement(this.$problems),this.hideElement(this.$faults),this.hideElement(this.$gfleds)),$lastSelected.hasClass("js-questions")){const $lastParent=this.$ctx.find(".selected-category").eq(-2);this.showQuestions($lastParent),this.hideElement(this.$faults),this.hideElement(this.$gfleds)}else if($lastSelected.hasClass("js-categories"))this.$backLink.addClass("hidden"),this.$titles.find(".selectedcategory").addClass("hidden"),this.showElement(this.$faultTypes),this.hideElement(this.$problems),this.hideElement(this.$faults),this.hideElement(this.$gfleds);else if($lastSelected.hasClass("js-answers")){const $lastParent=this.$ctx.find(".selected-category").eq(-2);$lastParent.hasClass("selected-category-skipped")&&$lastParent.removeClass("selected-category"),this.showAnswers($lastParent),this.hideElement(this.$problems),this.hideElement(this.$gfleds)}else if($lastSelected.hasClass("js-gfleds")){const $lastParent=this.$ctx.find(".selected-category").eq(-2);this.showElement($lastParent.find(".js-gfleds"))}const $lastSelectedHeading=this.$ctx.find(".selectedcategory .selected").last();$lastSelectedHeading.hasClass("skipped")?this.$ctx.find(".selectedcategory .selected").eq(-2).remove():$lastSelectedHeading.remove(),$lastSelected.removeClass("selected-category")},removeEmptyElements(className){$(className).each(function(){const $this=$(this);0===$this.html().replace(/\s| /g,"").length&&$this.remove()}),this.$ctx.find("ul:only-child").parent("span").parent("a").parent("li").remove()},showElement($element){$element.removeClass("hide").addClass("show")},hideElement($element){$element.removeClass("show").addClass("hide")},generateDynaimcHiddenFormData(question,id,answer){this.$dynamicHiddenFormData.append(`<input type="hidden" name="${question}" id="${id}" value="${answer}">`)},showFreeTextandNextBtn(dcCode){this.scrollToSummary(),this._events.emit("toggleNextButton",{$problemStep:$(this.$ctx),value:!1}),this.$freeText.removeClass("hidden"),this.$ctx.find(".js-form-data-hidden").html("");let problemLabel,l=0,inputElements="";this.$ctx.find(".selectedcategory .selected-answer").each(function(){const answer=$(this).text();problemLabel=`<input type="hidden" name="problemLabel" id="problemLabel" value="${answer}">`,inputElements+=`<input type="hidden" name="DOB2_Problem_Selection_Steps" id="${++l}" value="${answer}">`}),this.$dynamicHiddenFormData.append(inputElements);let dcCodedata=`<input type="hidden" name="dcCode" id="dcCode" value="${dcCode}">`;this.$dynamicHiddenFormData.append(dcCodedata),this.$dynamicHiddenFormData.append(problemLabel)},enableProblemLoadingVisualization($currentTarget){this._events.emit("loader:open",{loaderType:"layer",$trigger:$
7currentTarget})},disableProblemLoadingVisualization($currentTarget){this._events.emit("loader:close",{$trigger:$currentTarget})}})}(jQuery),function($){T.Module.Dob2RepairAddress=T.createModule({start(resolve){return this.isSynced=!1,this.$ctx=$(this._ctx),this.$privateRadio=this.$ctx.find(".js-privateRepairAddress"),this.$companyRadio=this.$ctx.find(".js-companyRepairAddress"),this.$privateFields=this.$ctx.find(".js-repair-private-address-fields"),this.$companyFields=this.$ctx.find(".js-repair-company-address-fields"),this.$companyInputFields=this.$ctx.find(".js-repair-company-address-fields :input"),this.$privateInputFields=this.$ctx.find(".js-repair-private-address-fields :input"),this.$companyInputFields.attr("disabled",!0),this.$companyRadio.removeAttr("checked"),this.$privateRadio.prop("checked",!0),this.$companyFields.addClass("hidden"),this.$privateFields.addClass("selected"),this.$privateRadio.on("click",()=>this.showPrivateAddressFields()),this.$companyRadio.on("click",()=>this.showCompanyAddressFields()),this.loaderRemoved=!1,this.sync=$.proxy(this,"sync"),this._events.on("t.sync",this.sync),resolve()},sync(mod){this.isSynced||(this.isSynced=!0,this.loaderRemoved||(this._events.emit("loader:close",{$loader:this.$(".js-loader-static")}),this.loaderRemoved=!0))},showPrivateAddressFields(){this.showFields(),this.$ctx.find("#dobAddressData-addressData-title").val("").trigger("change"),this.disableFields("company")},showCompanyAddressFields(){this.showFields(),this.disableFields("private")},showFields(){this.$privateFields.toggleClass("hidden"),this.$companyFields.toggleClass("hidden"),this.$privateFields.toggleClass("selected"),this.$companyFields.toggleClass("selected")},disableFields(field){"company"===field?(this.$companyInputFields.attr("disabled",!0),this.$companyInputFields.val(""),this.$companyInputFields.removeClass("is-empty"),this.$companyInputFields.removeClass("had-focus"),this.$companyInputFields.removeClass("has-error"),this.$privateInputFields.removeAttr("disabled")):(this.$companyInputFields.val(""),this.$privateInputFields.attr("disabled",!0),this.$privateInputFields.val(""),this.$privateInputFields.removeClass("is-empty"),this.$privateInputFields.removeClass("had-focus"),this.$privateInputFields.removeClass("has-error"),this.$companyInputFields.removeAttr("disabled")),this.$dropdown=this.$ctx.find(".m-forminput-dropdown"),this.$dropdown.removeClass("is-not-selected"),this.$dropdown.removeClass("had-focus"),this.$dropdown.removeClass("has-error")}})}(jQuery),function($){T.Module.DobAddress=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.data=this.$ctx.data(),this.jsCitySelector=".js-city-selector",this.jsStreetSelector=".js-street
7-selector",this.jsPostalCodeSelector=".js-postalcode-selector",this.jsStreetNumberSelector=".js-streetnumber-selector",this.jsToggleBox=".js-togglebox-final-address",this.jsRadioSelection=".js-dobaddress-final-address",this.jsRadioCorrectSelection=".js-dobaddress-final-address-correct",this.jsToggleBoxCheckedRadios=`${this.jsToggleBox} input[type='radio']:checked`,this.smsCheckboxId=this.$ctx.data("sms-checkbox-id"),this.cellPhoneId=this.$ctx.data("cell-phone-id"),this.smsActivationState=this.$ctx.data("sms-checkbox-activation-state")||!1,null!=this.smsCheckboxId&&this.cellPhoneId&&(this.$smsCheckbox=$(`#${this.smsCheckboxId}`),this.$cellPhone=$(`#${this.cellPhoneId}`),this.$cellPhone.on("focusout",ev=>this.onCellPhoneBlurred(ev))),this.$cityInput=this.$ctx.find(this.jsCitySelector),this.$streetInput=this.$ctx.find(this.jsStreetSelector),this.$postalCodeInput=this.$ctx.find(this.jsPostalCodeSelector),this.$streetnumberInput=this.$ctx.find(this.jsStreetNumberSelector),this.$form=this.$ctx.find("form"),this.$fieldSetToggleBox=this.$ctx.find(this.jsToggleBox),this.submitCheck=!1,this.dobSuggestionResolveConfig=this.$ctx.data("suggestion-resolve-ajax"),null!=this.dobSuggestionResolveConfig&&(this.dobSuggestionResolve=T.Utils.createController(this.$ctx,"LoadDataController",this.dobSuggestionResolveConfig.type||"LoadAjax,RenderJson"),this.dobSuggestionResolve.init(this.dobSuggestionResolveConfig)),this.$form.on("submit",ev=>this.onSubmitForm()),this.$ctx.on("change",this.jsRadioSelection,ev=>this.onFinalAddressSelected(ev)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.form=this._sandbox.getModuleById(this.$form.data("t-id")),T.Utils.allSynced=!0,this.onCellPhoneBlurred(null))},ensureValueInSuggestion(suggestion,cb){return null!=suggestion.value?cb(null,suggestion):null==this.dobSuggestionResolve?(console.error(`dob address missing 'suggestion-resolve-ajax' config. value missing suggestion ${JSON.stringify(suggestion)}`),cb("config is missing")):this.dobSuggestionResolve.execute({params:{id:suggestion.id},success:data=>(null!=data.value?suggestion.value=data.value:suggestion.value={zip:"",street:"",city:"",streetnumber:""},cb(null,suggestion)),error:err=>(console.error(`error while requesting suggestion: ${err}`),cb("suggestion call returned error"))})},disableAddressFields(disabled){return this.$postalCodeInput.attr("disabled",disabled),this.$cityInput.attr("disabled",disabled),this.$streetnumberInput.attr("disabled",disabled),this.$streetInput.attr("disabled",disabled)},handleAjaxResult(result){const mod=this;if(!(this.$form.find(".has-error").length>0))return result.correctAddress&&1===result.suggestions.length||this.submitCheck?mod.submitForm():(mod.$ctx.find(mod.jsToggleBoxCheckedRadios).prop("checked",!1),mod._events.emit("openToggleBox","final_address"),T.Utils.scrollToTop(mod.$fieldSetToggleBox.offset().top),this.$form.find('[type="submit"]').removeAttr("disabled")),mod.disableAddressFields(!0);this.$form.find('[type="submit"]').removeAttr("disabled")},submitForm(){return this.$form.addClass("js-is-valid").trigger("submit",{dblClickCheck:!1})},onFinalAddressSelected(ev){const mod=this,selectedValue=$(ev.currentTarget).val();switch(mod.disableAddressFields(!1),selectedValue){case"correct":return mod.submitForm();case"change":return T.Utils.scrollToTop(mod.$postalCodeInput),mod._events.emit("closeToggleBox","final_address");default:let suggestion=$(ev.currentTarget).data("value");this.ensureValueInSuggestion(suggestion,(error,suggestion)=>(null===error&&(mod.$postalCodeInput.val(suggestion.value.zip),mod.$cityInput.val(suggestion.value.city),mod.$streetInput.val(suggestion.value.street),mod.$streetnumberInput.val(suggestion.value.streetnumber),this.submitCheck=!0),mod._events.emit("closeToggleBox","final_address"),T.Utils.scrollToTop(mod.$postalCodeInput)))}},onSubmitForm(ev){if(null!=this.form?this.form.hasError():void 0)return this.form.scrollToError(),!1;const{data:data}=this;return!(!this.$form.hasClass("js-is-valid")&&!data.noajax)||(null!=ev&&ev.preventDefault(),this.$form.find('[type="submit"]').attr("disabled","disabled"),T.Utils.startAjaxRequest(data.ajaxId,data.ajax,{"dobAddressData.addressData.postalcode":this.$postalCodeInput.val(),"dobAddressData.addressData.town":this.$cityInput.val(),"dobAddressData.addressData.streetName":this.$streetInput.val(),"dobAddressData.addressData.streetnumber":this.$streetnumberInput.val()})[0].done($.proxy(this.handleAjaxResult,this)),!1)},onCellPhoneBlurred(ev){if(this.$cellPhone.length>0){const state=__guard__(this.$cellPhone.val(),x=>x.length)>0&&this.$cellPhone[0].checkValidity();if(this.$smsCheckbox.is(":enabled")!==state)return this.$smsCheckbox.attr("disabled",!state),this.$smsCheckbox.prop("checked",state&&this.smsActivationState)}}})}(jQuery),function($){const glob_config=window.localization.configurations;T.Module.DobAppointment=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,T.Utils.allSynced=!1,this.sync=$.proxy(this,"sync"),this.getWorkingDays=$.proxy(this,"getWorkingDays"),this.handleResponseWorkingDays=$.proxy(this,"handleResponseWorkingDays"),this.initCalendar=$.proxy(this,"initCalendar"),this.updateTimeslots=$.proxy(this,"updateTimeslots"),this.onChangeAppointment=$.proxy(this,"onChangeAppointment"),this.onChangeTimeslot=$.proxy(this,"onChangeTimeslot"),this.$calendar=this.$(".js-appointment-calendar"),this.$timeslots=this.$(".js-timeslot"),this.$appointmentDay=this.$(".js-appointment-day"),this.$appointmentTime=this.$(".js-appointment-time"),this.$optionBook=this.$(".js-appointment-option-book"),this.$optionContact=this.$(".js-appointment-option-contact"),this.$form=this.$ctx.closest('[data-t-name="Form"]'),this._events.on("t.sync",this.sync),this.$optionBook.parent().toggleClass("hidden"),this._events.emit("form:disableSubmit",{id:this.$form.data("t-id")}),resolve()},sync(){if(!this.isSynced)return setTimeout(()=>this.getWorkingDays(),1),this.isSynced=!0,T.Utils.allSynced=!0},initCalendar(response){this.timeslotArray=[],this.dateArray=[];const dateMomentArray=[];let disabledDays="";$.each(response,(i,el)=>{dateMomentArray.push(moment(el.date)),this.dateArray.push(el.date),el.timeslots&&el.timeslots.length&&(this.timeslotArray[el.date]=el.timeslots)});const dateMin=moment.min(dateMomentArray),dateMax=moment.max(dateMomentArray),m=moment(dateMin);for(;m.diff(dateMax,"days");){const mformat=m.format("YYYY-MM-DD");-1===this.dateArray.indexOf(mformat)&&(disabledDays+=mformat+","),m.add(1,"days")}return this.$calendar.html(doT.template(this.$(".tpl-calendar").html())({dateMin:dateMin,dateMax:dateMax,defaultDate:dateMin,disabledDays:disabledDays,disableWeekends:""})),this.$appointments=this.$calendar.find("input[data-t-name]"),this.$appointments.on("change",this.onChangeAppointment),this.$timeslots.on("change.timeslot",this.onChangeTimeslot),T.Utils.application._sandbox.addModules(this.$appointments[0])},getWorkingDays(){const request=T.Utils.startAjaxRequest(this.$ctx.data("ajax-appointment"));return!!request&&request[0].done(this.handleResponseWorkingDays)},handleResponseWorkingDays(response){return this.workdays=response||[],Boolean(this.workdays.length)||this.$optionContact.is(":checked")||this.$optionContact.click(),Boolean(this.workdays.length)&&!this.$optionBook.is(":checked")&&this.$optionBook.click(),!Boolean(this.workdays.length)&&this.$optionContact.parent().hasClass("hidden")&&this.$optionContact.parent().toggleClass("hidden"),this.$optionBook.parent().toggleClass("hidden",!Boolean(this.workdays.length)),this.initCalendar(response)},updateTimeslots(response){return this.$timeslots.prop("disabled",!0),this.$timeslots.prop("checked",!1),this.$timeslots.each(function(i,el){const $timeslot=$(el);if(-1!==response.indexOf($timeslot.val()))return $timeslot.prop("disabled",!1)}),this.$timeslots.filter(":enabled").first().prop("checked",!0).trigger("change.timeslot"),this.$appointmentDay.text(moment(this.$appointments.val()).format(glob_config.dateFormat.toUpperCase())),this._events.emit("form:enableSubmit",{id:this.$form.data("t-id")})},onChangeAppointment(ev){const $currentTarget=$(ev.currentTarget),targetDate=$currentTarget.val();if(this.currentAppointmentDate=targetDate,this.timeslotArray&&this.timeslotArray[targetDate])this.updateTimeslots(this.timeslotArray[targetDate]);else{if(this.dateArray.length){this.enableTimeslotLoadingVisualization($currentTarget);const request=T.Utils.startAjaxRequest(this.$ctx.data("ajax-freeappointment"),{},{date:targetDate});return!!request&&request[0].done(data=>{this.disableTimeslotLoadingVisualization($currentTarget),this.updateTimeslots(data)})}this.updateTimeslots([])}},enableTimeslotLoadingVisualization($currentTarget){this._events.emit("form:disableSubmit",{id:this.$form.data("t-id")}),this._events.emit("loader:open",{loaderType:"area",loaderArea:this.$ctx.find(".appointment-timeslots"),$trigger:$
7currentTarget})},disableTimeslotLoadingVisualization($currentTarget){this._events.emit("form:enableSubmit",{id:this.$form.data("t-id")}),this._events.emit("loader:close",{$trigger:$currentTarget})},onChangeTimeslot(ev){return this.currentTimeSlot=$(ev.currentTarget).val(),this.updateAppointmentDate(),this.$appointmentTime.text($(ev.currentTarget).parent().find(".label-text").text()),this.$appointmentTime.show()},updateAppointmentDate(){for(var key in this.selectedResponse=this.workdays.filter(data=>data.date==this.currentAppointmentDate)[0],this.selectedResponse.appointmentData)this.currentTimeSlot===key&&(this.selectedTimeslot=this.selectedResponse.appointmentData[this.currentTimeSlot]);this.selectedTimeslot&&$(".js-input-response").each((i,el)=>{let attrNames=$(el).attr("name");"servicePartner"==attrNames?$(el).attr("value",JSON.stringify(this.selectedTimeslot.servicePartnerData)):attrNames in this.selectedTimeslot&&$(el).attr("value",this.selectedTimeslot[attrNames])})}})}(jQuery),function($){T.Module.DobAvailabilityResultList=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.sync=$.proxy(this.sync,this),this._events.on("t.sync",this.sync),console.log("DobAvailabilityResultList start"),resolve()},sync(){this.isSynced||(this.isSynced=!0,console.log("DobAvailabilityResultList sync"))}})}(jQuery),function($){const glob_config=window.localization.configurations;T.Module.DobRescheduleAppointment=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,T.Utils.allSynced=!1,this.sync=$.proxy(this,"sync"),this.$appointmentContainer=this.$(".js-reschedule-appointment-container"),this.$calendar=this.$(".js-reschedule-appointment-calendar"),this.$timeslots=this.$(".js-reschedule-timeslot"),this.$rescheduledAppointmentDay=this.$(".js-appointment-day"),this.$rescheduledAppointmentTime=this.$(".js-appointment-time"),this.$currentAppointmentDay=this.$(".js-current-appointment-day"),this.$currentAppointmentTime=this.$(".js-current-appointment-time"),this.$optionReschedule=this.$(".js-reschedule-appointment"),this.$optionRetain=this.$(".js-retain-appointment"),this.$keepAppointment=this.$(".js-keep-appointment-text"),this.$noDatesAvailable=this.$(".js-nodates-available-text"),this.$form=this.$ctx.closest('[data-t-name="Form"]'),this.$errorContainer=this.$form.siblings(".js-reschedule-error"),this._events.on("t.sync",this.sync),this.$optionReschedule.parent().toggleClass("hidden"),this._events.emit("form:disableSubmit",{id:this.$form.data("t-id")}),resolve()},sync(){if(!this.isSynced)return setTimeout(()=>this.getAvailableDays(),1),this.isSynced=!0,T.Utils.allSynced=!0},initCalendar(response){const dateArray=[];let disabledDays="";const availableAppointments=Object.keys(response.availableAppointmentsUI);$.each(availableAppointments,(i,el)=>dateArray.push(moment(el)));const dateMin=moment.min(dateArray),dateMax=moment.max(dateArray),m=moment(dateMin);for(;m.diff(dateMax,"days");){const mformat=m.format("YYYY-MM-DD");-1===availableAppointments.indexOf(mformat)&&(disabledDays+=mformat+","),m.add(1,"days")}return this.$calendar.html(doT.template(this.$(".tpl-calendar").html())({dateMin:dateMin,dateMax:dateMax,defaultDate:response.currentAppointmentStartDate,disabledDays:disabledDays,disableWeekends:""})),this.$appointments=this.$calendar.find("input[data-t-name]"),this.$appointments.on("change",(ev,data)=>this.onChangeAppointment(ev,response)),this.$timeslots.on("change.timeslot",ev=>this.onChangeTimeslot(ev)),setTimeout(()=>this.$timeslots.filter(`[value=${response.currentAppointmentSlotUI}]`).prop("checked",!0).trigger("change.timeslot"),50),T.Utils.application._sandbox.addModules(this.$appointments[0])},getAvailableDays(){const request=T.Utils.startAjaxRequest(this.$ctx.data("ajax-reschedule-appointment"));return!!request&&request[0].done(result=>this.handleAvailableWorkingDays(result))},handleAvailableWorkingDays(response){const resultCode=response.result.toUpperCase().trim();if("SUCCESS"===resultCode){const workdays=Object.keys(response.availableAppointmentsUI);return Boolean(workdays.length)||this.$optionRetain.is(":checked")||(this.$optionRetain.click(),this.$optionReschedule.toggleClass("hidden"),this.$noDatesAvailable.toggleClass("hidden")),Boolean(workdays.length)&&!this.$optionReschedule.is(":checked")&&(this.$optionReschedule.click(),this.$keepAppointment.toggleClass("hidden")),this.$currentAppointmentDay.text(moment(response.currentAppointmentStartDate).format(glob_config.dateFormat.toUpperCase())),null!=response.currentAppointmentEndTime?this.$currentAppointmentTime.text(`${response.currentAppointmentStartTime} - ${response.currentAppointmentEndTime}`):this.$currentAppointmentTime.text(`${response.currentAppointmentStartTime}`),this.$optionReschedule.parent().toggleClass("hidden"),this.initCalendar(response)}return"ERROR"===resultCode?window.location=response.redirectUrl:(this.$form.remove(),this.$errorContainer.toggleClass("hidden").addClass(response.result)),!1},setCurrentAppointmentInCalendar(currentAppointment){const currentDate=moment(currentAppointment),currentMonth=currentDate.month(),currentDay=currentDate.date();return this.$calendar.find(`[data-pika-month=${currentMonth}][data-pika-day=${currentDay}]`).parent().addClass("current-appointment")},updateTimeslots(appointments,currentAppointment){return this.$timeslots.prop("disabled",!0),this.$timeslots.prop("checked",!1),this.$timeslots.each(function(i,el){const $timeslot=$(el);if(-1!==appointments.indexOf($timeslot.val()))return $timeslot.prop("disabled",!1)}),this.$timeslots.filter(":enabled").first().prop("checked",!0).trigger("change.timeslot"),this.$rescheduledAppointmentDay.text(moment(this.$appointments.val()).format(glob_config.dateFormat.toUpperCase())),this.setCurrentAppointmentInCalendar(currentAppointment),this._events.emit("form:enableSubmit",{id:this.$form.data("t-id")})},onChangeAppointment(ev,response){const currentDate=$(ev.currentTarget).val();return this.updateTimeslots(response.availableAppointmentsUI[currentDate],response.currentAppointmentStartDate)},onChangeTimeslot(ev){return this.$rescheduledAppointmentTime.text($(ev.currentTarget).parent().find(".label-text").text()),this.$rescheduledAppointmentTime.show()}})}(jQuery),function($){T.Module.DobSingleStepAvailability=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.isDropdownSelected=!1,this.zipcodeInputValue=!1,T.Utils.allSynced=!1,this.$zipInput=this.$ctx.find(".js-zipcodecheck-input"),this.$zipButton=this.$ctx.find(".js-zipcode-check"),this.$zipDropdown=this.$ctx.find(".js-region-dropdown"),this.$zipButton.attr("disabled",!0),this.$servicePartnerItemContainer=this.$ctx.find(".js-service-partner-item"),this.$zipButton.on("click",ev=>this.zipButtonHandler(ev)),this.$zipDropdown.on("change",ev=>this.zipDropdownHandler(ev)),this.$zipInput.on("keypress",ev=>this.zipInputHandler(ev)),this.$zipInput.on("change",ev=>this.zipInputHandler(ev)),resolve()},sync(){if(!this.isSynced)return this.isSynced=!0,T.Utils.allSynced=!0},zipButtonHandler(ev){ev.preventDefault(),this.$servicePartnerItemContainer.html("");const ajaxId=this.$ctx.children().data("ajaxId"),request=T.Utils.startAjaxRequest(ajaxId);this._events.emit("loader:open",{loaderType:"layer",$trigger:this.$ctx}),request&&request[0]&&request[0].done(response=>{$(".js-zipcode-redirect-form").submit(),this._events.emit("loader:close",{$trigger:this.$ctx})})},isSubmitButtonEnabled(){this.isDropdownSelected&&this.zipcodeInputValue>=2||0===this.$zipDropdown.length&&this.zipcodeInputValue>=2?this.$zipButton.attr("disabled",!1):this.$zipButton.attr("disabled",!0)},zipInputHandler(ev){13==ev.charCode&&ev.preventDefault(),this.zipcodeInputValue=ev.currentTarget.value.length,this.isSubmitButtonEnabled()},zipDropdownHandler(ev){this.isDropdownSelected=ev.currentTarget.value,this.isSubmitButtonEnabled()}})}(jQuery),function($){T.Module.DobSummary=T.createModule({start(resolve){const mod=this;return mod.$ctx=$(this._ctx),mod.validateTermsSelector=".js-validate-terms",mod.requiredSelector=".js-required",mod.errorboxSelector=".js-errorbox",mod.errorboxHiddenClass="hidden",mod.$formWithTerms=mod.$ctx.find(mod.validateTermsSelector),mod.$required=mod.$formWithTerms.find(mod.requiredSelector),mod.$errorbox,mod.$formWithTerms.length&&mod.$required.length&&mod.setupTermsAcceptedValidation(),resolve()},sync(){},checkTermsAccepted(){const mod=this;return!(!mod.$required.length||!mod.$required.is(":checked"))},setupTermsAcceptedValidation(){return this.$formWithTerms.on("submit",$.proxy(this.onSubmitFormWithTerms,this)),this.$required.on("change",$.proxy(this.onClickTermsAccepted,this)),this.$errorbox=this.$formWithTerms.find(this.errorboxSelector)},onClickTermsAccepted(){const mod=this;if(mod.$errorbox.length)return mod.$errorbox.toggleClass(mod.errorboxHiddenClass,mod.checkTermsAccepted())},onSubmitFormWithTerms(ev){const mod=this;return mod.checkTermsAccepted()?(mod.$ctx.find('[type="submit"]').attr("disabled","disabled"),mod.$errorbox.addClass(mod.errorboxHiddenClass),mod._events.emit("loader:open",{loaderType:"layer"}),!0):(mod.$errorbox.removeClass(mod.errorboxHiddenClass),T.Utils.scrollToTop(mod.$errorbox),mod.$ctx.find('[type="submit"]').removeAttr("disabled"),!1)}})}(jQuery),function($){const glob_config=window.localization.configurations;T.Module.DobTechnicianTracking=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.$lastUpdateTime=this.$ctx.find(".js-last-updated"),this.reloadTimeConfig=parseInt(this.$ctx.data("reload-time"))||30,this.$reloadButton=this.$ctx.find(".js-reload-button"),this.timeFormat="HH:mm",this._events.on("t.sync",()=>this.sync()),this.$reloadButton.on("click",()=>this.refreshPage()),resolve()},sync(){this.isSynced||(this.updateDateTime(),this.reloadTimer()),this.isSynced=!0},updateDateTime(){const dateTimeFormat=glob_config.dateFormat.toUpperCase()+" "+this.timeFormat,dateTime=moment().format(dateTimeFormat);this.$lastUpdateTime.text(dateTime)},reloadTimer(){const reloadTimeinMS=60*this.reloadTimeConfig*1e3;setInterval(this.refreshPage,reloadTimeinMS)},refreshPage:()=>(window.location.reload(!0),!1)})}(jQuery),function($){null!=T.Utils&&T.Utils.registerContentInitializer(function(container){const $container=$(container);if($container.closest('[data-t-name="FirstAid"]').length>0){return $container.find('[data-t-name="Video"]').attr("data-lazyloaded",!0)}},!0),T.Module.FirstAid=T.createModule({start(resolve){const mod=this;return mod.$ctx=$(mod._ctx),mod.$categories=mod.$(".categories"),mod.$changeLink=mod.$(".js-change-link"),mod.$titles=mod.$(".titles"),mod.$solutions=mod.$(".solutions"),mod.request={step1:"firstaid-solution",step1direct:"firstaid-direct-solution",step2:"firstaid-repair"},mod.isSynced=!1,mod._events.on("t.sync",$.proxy(mod.sync,mod)),mod.$changeLink.on("click",$.proxy(mod.onClickChangeLink,mod)),mod.$categories.find("> li > a").on("click",$.proxy(mod.onClickCategory,mod)),T.Utils.registerMq("md",{match(){mod.$ctx.addClass("mobile"),mod.moveChangeLink()},unmatch(){mod.$ctx.removeClass("mobile"),mod.moveChangeLink()}},"max"),1!=mod.$ctx.data("in-dob")&&mod.$categories.find(".problems li > a").on("click",$.proxy(mod.onClickProblem,mod)),this._events.on("togglebox:opened",data=>this.onToggleBoxOpened(data)),resolve()},sync(){const mod=this;mod.isSynced||(mod.$ctx.data("ajax-init")&&mod.configureAjax(),mod.isSynced=!0)},generateProblemField:(name,id,hasGroup,problemData,fallbackData)=>$(`<input type="hidden" name="${name}" id="${id}" value="${hasGroup?problemData:fallbackData}">`),ajaxInit(data){const mod=this;if(void 0!==data){let resultingProblemGroupId,resultingProblemId,strProblemgroupid,strProblemid;const $ajaxContainerStep1=mod.$ctx.find(`[data-ajax-id=${mod.request.step1direct}]`),$ajaxContainerStep2=mod.$ctx.find(`[data-ajax-id=${mod.request.step2}]`),hasAdvice=void 0!==data.adviceid&&data.adviceid.length>0,hasCode=void 0!==data.code&&data.code.length>0,hasDiagnosisCode=void 0!==data.diagnosiscode&&data.diagnosiscode.length>0,hasProblemGroupId=void 0!==data.problemgroupid&&data.problemgroupid.length>0,hasProblemId=void 0!==data.problemid&&data.problemid.length>0;hasProblemGroupId?(resultingProblemGroupId=data.problemgroupid,hasProblemId&&(resultingProblemId=data.problemid)):hasDiagnosisCode&&(strProblemgroupid=mod.$ctx.attr("data-problemgroup-id"),strProblemid=mod.$ctx.attr("data-problem-id"),resultingProblemGroupId=strProblemgroupid,resultingProblemId=strProblemid);const $problemGroupToSelect=mod.$ctx.find(`[data-cat-id=${resultingProblemGroupId}]`);if(!$problemGroupToSelect.length)return;const $problemToSelect=mod.$ctx.find(`[data-problem-id=${resultingProblemId}]`);if(hasCode&&$ajaxContainerStep2.length>0){const $hiddenCodeStep2=$(`<input type="hidden" name="code" value="${data.code}">`);$ajaxContainerStep2.append($hiddenCodeStep2)}const ajaxConfigObj=null,ajaxDataObj=mod.setAjaxDataObj,request=T.Utils.startAjaxRequest(mod.request.step1direct,ajaxConfigObj,ajaxDataObj);return!!request&&request[0].always(function(){}).done(function(result){const $hiddenAdviceId=hasAdvice?$(`<input type="hidden" name="adviceid" value="${data.adviceid}">`):null,$hiddenCode=hasCode?$(`<input type="hidden" name="code" value="${data.code}">`):null,$hiddenDiagnosisCode=hasDiagnosisCode?$(`<input type="hidden" name="diagnosiscode" value="${data.diagnosiscode}">`):null,$hiddenProblemGroupID=mod.generateProblemField("problemgroupid","problemGroupID",hasProblemGroupId,data.problemgroupid,strProblemgroupid),$hiddenProblemId=mod.generateProblemField("problemid","problemId",hasProblemId,data.problemid,strProblemid);if($ajaxContainerStep1.append($hiddenCode,$hiddenAdviceId,$hiddenDiagnosisCode,$hiddenProblemGroupID,$hiddenProblemId),(hasProblemGroupId||hasDiagnosisCode)&&(mod.$ctx.removeClass("two").addClass("one"),$problemGroupToSelect.siblings(".problems").show(),$problemGroupToSelect.parent("li").addClass("selected-category"),$problemGroupToSelect.parent().siblings("li").hide(),mod.$titles.find(".selectedcategory").text(`: ${$problemGroupToSelect.find(".text").text()}`),mod.$changeLink.show(),hasProblemId||hasDiagnosisCode))return mod.$titles.find(".selectedproblem").text(`: ${$problemToSelect.find(".text").text()}`),mod.$ctx.removeClass("one").addClass("two"),mod.$categories.hide(),mod.checkHeight(),mod.$solutions.show(),mod._events.emit("form:toggleFormActions",!1)}).fail((xhr,ajaxOptions,thrownError)=>console.info(xhr))}},setAjaxConfigObj:ajaxId=>({url:T.Utils.getAjaxRequestObj(ajaxId).url}),setAjaxDataObj:()=>({data:""}),toggleProblems($selectedcategory){if(this.$ctx.hasClass("one"))return $selectedcategory.removeClass("selected-category"),$selectedcategory.siblings("li").show(),$selectedcategory.find(".problems").hide(),this.$changeLink.hide(),this.$ctx.removeClass("one");if(this.$ctx.hasClass("two")){const $categoryLink=this.$categories.find(".selected-category").find("[data-cat-id]").eq(0);return this.$ctx.removeClass("two").addClass("one"),this.$categories.show(),this.showProblems($categoryLink),this.$solutions.hide()}},configureAjax(){let params;const querystring=window.location.search.substring(1);try{params=JSON.parse(`{"${decodeURI(querystring).replace(/"/g,'\\"').replace(/&/g,'","').replace(/=/g,'":"')}"}`)}catch(error){}const ajaxData=params||{};if(!$.isEmptyObject(ajaxData))return this.ajaxInit(ajaxData)},moveChangeLink(){this.$ctx.hasClass("mobile")?this.$ctx.hasClass("two")?this.$changeLink.insertAfter(this.$titles.find(".problem-title")):this.$changeLink.insertAfter(this.$titles.find(".category-title")):this.$changeLink.insertAfter(this.$categories)},showProblems($categoryLink){this.$ctx.find("#problemGroupID").val($categoryLink.attr("data-cat-id")),$categoryLink.hasClass("has-problems")&&!$categoryLink.parent("li").hasClass("selected-category")&&(this.$ctx.addClass("one"),$categoryLink.siblings(".problems").show(),$categoryLink.parent("li").addClass("selected-category"),$categoryLink.parent().siblings("li").hide(),this.$changeLink.show(),this.checkHeight())},showSolutions($problem){const mod=this;if($problem.data("problem-id")){this.$ctx.removeClass("one").addClass("two"),this.$categories.hide(),this.$ctx.find("#problemId").val($problem.attr("data-problem-id"));const ajaxConfigObj=mod.setAjaxConfigObj(mod.request.step1),ajaxDataObj=mod.setAjaxDataObj,request=T.Utils.startAja
7xRequest(this.request.step1,ajaxConfigObj,ajaxDataObj);return!!request&&request[0].always(function(){}).done(function(result){return mod.$solutions.show(),mod.checkHeight(),mod._events.emit("form:toggleFormActions",!1)})}},checkHeight(){const mod=this,$selectedCategory=mod.$ctx.find(".selected-category");if($selectedCategory.length>0&&mod.$solutions.is(":hidden")){const height2=$selectedCategory.find(".problems").height(),height1=mod.$ctx.find(".titles").outerHeight(!0);return mod.$ctx.height(height1+height2)}if(mod.$ctx.css("height",""),$("body").scrollTop()>mod.$ctx.offset().top)return T.Utils.scrollToTop(mod.$ctx)},onClickCategory(ev){ev.preventDefault();const $categoryLink=$(ev.currentTarget);this.showProblems($categoryLink),this.$titles.find(".selectedcategory").text(`: ${$categoryLink.find(".text").text()}`),this.moveChangeLink()},onClickChangeLink(ev){ev.preventDefault();const $category=this.$changeLink.parents().find(".selected-category");this.toggleProblems($category),this.checkHeight(),this._events.emit("form:toggleFormActions",!0),this.moveChangeLink()},onClickProblem(ev){ev.preventDefault();const $problem=$(ev.currentTarget);this.showSolutions($problem),this.$titles.find(".selectedproblem").text(`: ${$problem.find(".text").text()}`),this.moveChangeLink()},onToggleBoxOpened(data){if(data.$content.closest(this.$ctx).length<1)return;data.$content.find('[data-t-name="Video"]').each((index,element)=>{const $element=$(element),videoComponent=this._sandbox.getModuleById($element.data("t-id"));if(!videoComponent)return;if(!0===$element.data("firstaid-initialized"))return;this.doIfVideoIsInitialized(videoComponent,()=>{videoComponent.ensureLazyLoaded(),this._events.on("video:loaded",data=>{data.component===videoComponent&&(videoComponent.setTrackingAutoplayEnabled(!0),$element.closest(".media").removeClass("hidden"),videoComponent.videoPlay())})}),$element.data("firstaid-initialized",!0)})},doIfVideoIsInitialized(videoComponent,callback){const timeoutCallback=function(){if(!videoComponent.hasVideoController())return window.setTimeout(timeoutCallback,250),!1;callback()};timeoutCallback()}})}(jQuery),function($){T.Module.Header=T.createModule({start(resolve){const mod=this;return mod.$header=$(mod._ctx),mod.$navWrap=mod.$(".nav-wrap"),mod.$navMain=mod.$(".m-navmain"),mod.$navMeta=mod.$(".m-navmeta"),mod.$conversionBar=mod.$(".conversion-bar"),mod.$searchForm=mod.$(".search-form"),mod.$breadcrumb=mod.$(".m-breadcrumb"),mod.$breadcrumbWrap=mod.$(".breadcrumb-wrap"),mod.$headerContent=mod.$(".header-content"),mod.$headerElements=mod.$(".header-elements"),mod._events.on("headerOpen",$.proxy(mod.onHeaderOpen,mod)),mod._events.on("headerClose",$.proxy(mod.onHeaderClose,mod)),T.Utils.registerMq("md",{match:()=>mod.setupMobile()},"max"),"tablet"===T.Utils.getViewport()&&mod.setupMobile(),T.Utils.registerMq("lg",{match:()=>mod.setupDesktop(),unmatch:()=>mod.setupMobile()}),resolve()},sync(){},setupDesktop(){this.$navMeta.prependTo(this.$headerElements),this.$conversionBar.appendTo(this.$navWrap),this.$searchForm.prependTo(this.$navWrap),this.$breadcrumb.appendTo(this.$navWrap)},setupMobile(){this.$navMain.after(this.$navMeta),this.$conversionBar.prependTo(this.$navWrap),this.$navMain.after(this.$searchForm),this.$breadcrumb.appendTo(this.$breadcrumbWrap)},onHeaderOpen(){return this.$header.toggleClass("header-open")},onHeaderClose(){return this.$header.removeClass("header-open")}})}(jQuery),function($){T.Module.HeaderRebrush=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$content=this.$ctx.find(".content"),this.$uspBar=this.$ctx.find(".usp-bar"),this.$logo=this.$ctx.find(".logo"),this.$hamburgerMenu=this.$ctx.find(".a-menu"),this.$flyOutContainer=this.$ctx.find(".fly-out-container"),this.$flyOut=this.$ctx.find(".fly-out"),this.$dimmigOverlay=this.$ctx.find(".dimming-overlay"),this.$navMyAccount=$(".m-navmyaccount"),this.$navMyAccountCloseButton=this.$navMyAccount.find(".js-popover-close"),this.$flyOutFirstLevelLinks=this.$flyOutContainer.find(".first-level"),this.$languageSelector=this.$ctx.find(".m-languagecountryswitch"),this.$breadcrumb=$(".js-
7header-breadcrumb"),this.$navLink=this.$ctx.find(".js-menu-link"),this.$searchIcon=this.$ctx.find(".js-search-icon"),this.$shoppingCart=this.$ctx.find(".shoppingcart"),this.$myAccount=this.$ctx.find(".js-avatar"),this.stickyObserverMobile=null,this.stickyObserverDesktop=null,this.listenStickyHeader(),this.observeAndToggleMyAccountAccessibility(),this.setupFlyoutHeightCorrectorMobile(),this.disableFlyoutAccessibility(),this.disableMyAccountAccessibility(),getComputedStyle(this.$ctx[0]).getPropertyValue("--toggle-state")&&this.setupTransparentHeaderToggleWatcher(),this._events.on("toggleHeader",()=>this.toggleHeader()),this._events.on("openHeader",ev=>this.openHeaderWithSublevel(ev)),this._events.on("viewportChanged",T.Utils.debounce(()=>{this.resetHeader(),this.quickShowFullHeader()},50)),this._events.on("headerResetFromNavigationFlyout",()=>this.resetHeader()),this.$dimmigOverlay.on("click",()=>this.toggleHeader()),this.$flyOutContainer.on("click",e=>{e.target===e.currentTarget&&this.toggleHeader()}),this.$flyOutContainer.on("keydown",e=>{this.closeFlyoutAfterKeyDowninLastElement(e)}),this._events.on("windowWidthChanged",T.Utils.debounce(()=>{this.resetHeader(),this.calculateBreadCrumbVisibility()},50)),T.Utils.setAnchorTargetScrollMargin(this.$ctx.outerHeight()+parseInt(this.$ctx.css("top"),10)),this.calculateBreadCrumbVisibility(),resolve()},closeFlyoutAfterKeyDowninLastElement(ev){const allFlyoutElements=document.querySelectorAll(".js-navigation-link-list.m-navigation-link-list.active .a-link"),promotionElement=document.querySelector(".promotion-teaser-wrap.mobile-layout .a-button");let lastElement;allFlyoutElements.length>0&&(lastElement=promotionElement||allFlyoutElements[allFlyoutElements.length-1]),ev.target!==lastElement||ev.shiftKey||"Tab"!==ev.key||(ev.preventDefault(),this.$hamburgerMenu.focus()),ev.target===this.$hamburgerMenu&&ev.shiftKey&&"Tab"===ev.key&&(ev.preventDefault(),lastElement.focus())},toggleHeader(){this.compensateScrollbarWidth(),this.toggleFlyoutAccessibility(),this.$ctx.toggleClass("open"),this.$hamburgerMenu.toggleClass("open"),$("body").toggleClass("no-scroll"),this.$flyOutContainer.toggleClass("active"),this.$ctx.hasClass("is-sticky-mobile")&&this.setFlyoutHightMobile(),this.setFlyoutHightDesktop(),this.toggleStickyElementsVisiblity()},quickShowFullHeader(){if(!$(".m-pagestage.pagestage-alt-position-toggle").length>0)return;const oldVp=this.currentVp;this.currentVp=T.Utils.getViewport(),"mobile"===oldVp&&"tablet"===this.currentVp||"tablet"===oldVp&&"mobile"===this.currentVp||(this.$content.addClass("is-resizing"),setTimeout(()=>{this.$content.removeClass("is-resizing")},0))},openHeaderWithSublevel(ev){const linkId=$(ev.currentTarget).data("reference-id");if(!linkId)return;this.$ctx.hasClass("open")||(this.compensateScrollbarWidth(),this.toggleFlyoutAccessibility()),this.$ctx.addClass("open"),this.$hamburgerMenu.addClass("open"),$("body").addClass("no-scroll"),this.$flyOutContainer.addClass("active"),this.toggleStickyElementsVisiblity();const $navLinkItem=this.$flyOut.find(`.js-navigation-link[data-reference-id="${linkId}"]`),$linkList=$navLinkItem.closest(".js-navigation-link-list");if(1!=this.getDataLinkHierarchy($navLinkItem)){const navLinkListId=$linkList.data("submenu-id");this.$flyOutFirstLevelLinks.find(`[data-reference-id='${navLinkListId}']`).click(),$navLinkItem.click()}else this.$flyOutFirstLevelLinks.find(`[data-reference-id='${linkId}']`).click();this.setFlyoutHightDesktop()},toggleStickyElementsVisiblity(){const $stickyElements=this.$ctx.find(".js-sticky-elements");this.$ctx.hasClass("open")?$stickyElements.hide():$stickyElements.show()},toggleHeaderTransparency(){const pageStageBottom=this.$pageStageHeroContent[0].getBoundingClientRect().bottom,headerBottom=this.$ctx[0].getBoundingClientRect().bottom;pageStageBottom>headerBottom&&this.$ctx.hasClass("is-transparent-now")||pageStageBottom<headerBottom&&!this.$ctx.hasClass("is-transparent-now")||this.$ctx.toggleClass("is-transparent-now")},toggleFlyoutAccessibility(){this.$ctx.hasClass("open")?this.disableFlyoutAccessibility():this.enableFlyoutAccesibility()},disableFlyoutAccessibility(){this.$flyOutContainer.find(".a-link").not(this.$navMyAccount.find("*")).not(this.$languageSelector.find("*")).attr("tabindex","-1"),this.$languageSelector.find('.a-link, [tabindex="0"]').attr("tabindex","-1"),this.activateHeaderAccessibilityWhenFlyoutIsClose()},enableFlyoutAccesibility(){this.$flyOutContainer.find(".a-link").not(this.$navMyAccount.find("*")).not(this.$languageSelector.find("*")).attr("tabindex","0"),this.enableLanguageSelectorAccesibitlity(),this.disableHeaderAccesibilityWhenFlyoutIsOpen()},disableHeaderAccesibilityWhenFlyoutIsOpen(){this.$navLink.attr("tabindex","-1"),this.$searchIcon.attr("tabindex","-1"),this.$shoppingCart.attr("tabindex","-1"),this.$myAccount.attr("tabindex","-1")},activateHeaderAccessibilityWhenFlyoutIsClose(){this.$navLink.attr("tabindex","0"),this.$searchIcon.attr("tabindex","0"),this.$shoppingCart.attr("tabindex","0"),this.$myAccount.attr("tabindex","0")},enableLanguageSelectorAccesibitlity(){this.$languageSelector.hasClass("open")?this.$languageSelector.find(".content-expanded").find('.a-link, [tabindex="-1"]').attr("tabindex","0"):this.$languageSelector.find(".content-collapsed").attr("tabindex","0")},observeAndToggleMyAccountAccessibility(){if(this.$navMyAccount.length){new MutationObserver(mutations=>{mutations.forEach(mutation=>{"class"===mutation.attributeName&&(this.$navMyAccount.hasClass("is-active")?this.enableMyAccountAccessibility():this.disableMyAccountAccessibility())})}).observe(this.$navMyAccount[0],{attributes:!0})}},disableMyAccountAccessibility(){this.$navMyAccount.attr("tabindex","-1"),this.$navMyAccount.find('.a-link, .a-button, [tabindex="0"]').attr("tabindex","-1")},enableMyAccountAccessibility(){this.$navMyAccount.attr("tabindex","0"),this.$navMyAccount.find('.a-link, .a-button, [tabindex="-1"]').attr("tabindex","0")},compensateScrollbarWidth(){if(this.$ctx.hasClass("open"))return void(document.body.style.paddingRight="0");const scrollbarWidth=window.innerWidth-document.body.clientWidth;document.body.style.paddingRight=`${scrollbarWidth}px`},setFlyoutHightMobile(){if("desktop"===T.Utils.getViewport())return;const visiblePartAboveHeader=this.$ctx.offset().top-$(window).scrollTop();this.$ctx.hasClass("open")?this.$ctx.hasClass("usp-bar-active")&&this.$ctx.hasClass("is-sticky-mobile")?this.$flyOutContainer.height(window.innerHeight-this.$uspBar.height()-this.$content.height()-visiblePartAboveHeader):this.$flyOutContainer.height(window.innerHeight-this.$content.height()-visiblePartAboveHeader):this.$flyOutContainer.css("height","auto")},resetHeader(){this.$navMyAccountCloseButton.click(),this.$ctx.removeAttr("style"),this.$ctx.removeClass("open"),this.$hamburgerMenu.removeClass("open"),$("body").removeClass("no-scroll"),this.$flyOutContainer.removeClass("active"),this.$flyOutContainer.css("height",""),document.body.style.paddingRight="0",this.disableFlyoutAccessibility(),this.disableMyAccountAccessibility(),this.toggleStickyElementsVisiblity()},setFlyoutHightDesktop(){if("desktop"!==T.Utils.getViewport())return;const headerPartInVp=this.$ctx.outerHeight()+this.$ctx.offset().top-$(window).scrollTop(),maxFlyoutHeight=window.innerHeight-headerPartInVp;this.$flyOut.css("max-height",`${maxFlyoutHeight}px`)},setupFlyoutHeightCorrectorMobile(){T.Utils.isIE()||this.resizeObserver||(this.resizeObserver=new ResizeObserver(T.Utils.debounce(entries=>
7{entries.forEach(()=>{this.setFlyoutHightMobile()})},20)),this.resizeObserver.observe(this.$content[0]))},setupTransparentHeaderToggleWatcher(){this.$pageStageHeroContent=$(".m-pagestage").find(".js-hero-image, .js-hero-video"),$(window).on("scroll",T.Utils.debounce(()=>{this.toggleHeaderTransparency()},10))},listenStickyHeader(){$(window).on("scroll",T.Utils.debounce(()=>{$(window).scrollTop()?(this.$content.addClass("sticky-content"),this.$ctx.addClass("is-sticky-mobile")):(this.$content.removeClass("sticky-content"),this.$ctx.removeClass("is-sticky-mobile"))},10))},calculateBreadCrumbVisibility(){if(!this.$breadcrumb.length)return;this.$breadcrumb.removeClass("hidden"),this.$breadcrumb.find(".m-breadcrumb-rebrush").innerWidth()<=this.$breadcrumb.find(".crumb-root-link").innerWidth()+this.$breadcrumb.find(".crumb-links-wrap").innerWidth()&&this.$breadcrumb.addClass("hidden")},getDataLinkHierarchy:$element=>$element.closest(".js-navigation-col").data("link-hierarchy")})}(jQuery),jQuery,T.Module.HeaderShop=T.createModule({start:resolve=>resolve(),sync(){}}),function($){T.Module.Layout=T.createModule({start(resolve){setTimeout(()=>{this.debounceMethodSetContentTextMediaAlignment()},500);const mod=this;return mod.$ctx=$(mod._ctx),mod.state={contentToggleHidden:"hidden"},T.Utils.allSynced=!1,mod.isSynced=!1,mod._events.on("t.sync",$.proxy(mod.sync,mod)),mod.initContentToggle(),mod.$("[data-promotion-trigger-id]").on("click",mod.setUrlToPromotionBundleContainer),mod._events.on("dom:replacement",$.proxy(mod.onAddDomContent,mod)),mod._events.on("togglePageScrolling",$.proxy(mod.onToggleScrolling,mod)),mod._events.on("utils:storageUpdateSkuCompare",$.proxy(mod.onStorageUpdateSkuCompare,mod)),resolve()},sync(){const mod=this;mod.setContentTextMediaAlignment(),mod.isSynced||(mod.isSynced=!0,T.Utils.modulesSynced())},filterAndHideDeselectedContentToggles($selectedContentToggle){const $toHide=this.$(this.selector.contentToggle.allTargets).filter(function(){return!$(this).is($selectedContentToggle)}).addClass(this.state.contentToggleHidden);return this.toggleValidationOnContentToggles($toHide)},toggleValidationOnContentToggles($content){const disable=$content.hasClass(this.state.contentToggleHidden);return $content.find("fieldset").each(function(){return $(this).prop("disabled",disable)})},initContentToggle(){const mod=this;mod.selector={contentToggle:{allTargets:"[data-content-id]",toggle:"[data-content-toggle]",trigger:"[data-content-toggle-trigger]"}},mod.$ctx.on("change",$.proxy(mod.onChangeContentToggleTrigger,mod)),mod.$ctx.on("change",mod.selector.contentToggle.trigger,$.proxy(mod.onChangeContentToggleTrigger,mod)),mod.$ctx.on("change",mod.selector.contentToggle.toggle,$.proxy(mod.onContentToggle,mod)),mod.triggerContentToggle()},debounceMethodSetContentTextMediaAlignment(){return this.setContentTextMediaAlignment=T.Utils.debounce(this.setContentTextMediaAlignment.bind(this),50),this.setContentTextMediaAlignment()},setUrlToPromotionBundleContainer(){setTimeout(()=>{history.replaceState(null,null,"#promotion-teaser-bundle")},650)},setContentTextMediaAlignment(){const $containers=$(".contenttextmedia-align-start-right, .contenttextmedia-align-start-left");if($containers.each((index,element)=>{const $container=$(element);let alignRight=$container.hasClass("contenttextmedia-align-start-right");return $container.find(".m-contenttextmedia:has(.media):not(.m-contenttextmediaslider .m-contenttextmedia), .m-contenttextmediaslider:has(.m-contenttextmedia .media)").each((index,updateElement)=>{const modId=$(updateElement).data("t-id");this._sandbox.getModuleById(modId).setAlign(alignRight?"right":"left"),alignRight=!alignRight})}),0===$containers.length)return this._events.emit("contentextmedia:reset-align",{})},triggerContentToggle(){return this.$(this.selector.contentToggle.toggle).trigger("change"),this.$(this.selector.contentToggle.trigger).trigger("change"),!0},onAddDomContent(data){return this.triggerContentToggle(),!0},onContentToggle(ev){const $contentToggleElement=$(ev.target);if($contentToggleElement.is("[type=hidden]"))return;const contentToggle=$contentToggleElement.data("content-toggle");if(!contentToggle)return;let $targetElm;switch(contentToggle){case":selected":$targetElm=this.$(`[data-content-id="${$contentToggleElement.find("option:selected").data("c
7ontent-toggle-id")}"]`);break;case":checked":$targetElm=this.$(`[data-content-id="${$contentToggleElement.data("content-toggle-id")}"]`)}$targetElm&&($contentToggleElement.is("select")?$contentToggleElement.val()&&($targetElm.removeClass("hidden"),this.filterAndHideDeselectedContentToggles($targetElm)):$contentToggleElement.is(":checked, :selected")&&($targetElm.removeClass(this.state.contentToggleHidden),$targetElm.is(".js-toggle-validate")&&this.toggleValidationOnContentToggles($targetElm),this.filterAndHideDeselectedContentToggles($targetElm)))},onChangeContentToggleTrigger(ev){const mod=this;return $(mod.selector.contentToggle.trigger+":not([type=hidden])").each(function(){if("radio"===this.type||"checkbox"===this.type){const selected=this.checked,dataContentToggleTrigger=$(this).data("content-toggle-trigger");if(void 0!==dataContentToggleTrigger&&(mod.$toggleContainerElm=$(`[data-content-toggle-container="${dataContentToggleTrigger}"]`),selected||mod.$toggleContainerElm.addClass(mod.state.contentToggleHidden),selected))return mod.$toggleContainerElm.removeClass(mod.state.contentToggleHidden)}})},onStorageUpdateSkuCompare(data){if(null!=data){const eventData=data;return this._events.emit("layout:storageUpdated",eventData)}},onToggleScrolling(data){const mod=this;return data.pin?mod.$ctx.addClass("pinned"):mod.$ctx.removeClass("pinned")}})}(jQuery),function($){T.Module.LazyContent=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.id=this.$ctx.data("t-id"),T.Utils.allSynced=!1,this.url=this.$ctx.data("url"),this.mode=this.$ctx.data("mode"),this._events.on("t.sync",()=>this.sync()),this.bodyModule=T.Utils.application.getModuleById($("body").data("t-id")),this.bodyModule.delayPageLoadTracking(this.id),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0,this.load())},load(){return T.Utils.startAjaxRequest(!1,{url:this.url,dataType:"html",dataRendering:!0},null,null,()=>this.bodyModule.continuePageLoadTracking(this.id))}})}(jQuery),function($){T.Module.List=T.createModule({start(resolve){this.debounceMethodEqualizeHeights(),this.getViewTypeFromCtx=$.proxy(this.getViewTypeFromCtx,this),this.handleLoadMoreState=$.proxy(this.handleLoadMoreState,this),this.requestMoreItems=$.proxy(this.requestMoreItems,this),this.renderMoreItems=$.proxy(this.renderMoreItems,this),this.showInitialItems=$.proxy(this.showInitialItems,this),this.showMoreItems=$.proxy(this.showMoreItems,this),this.toggleListViewType=$.proxy(this.toggleListViewType,this),this.updateInitialListViewType=$.proxy(this.updateInitialListViewType,this),this.onLoadMore=$.proxy(this.onLoadMore,this),this.onInitializeLoadMore=$.proxy(this.onInitializeLoadMore,this),this.onToggleGridView=$.proxy(this.onToggleGridView,this),this.onToggleListView=$.proxy(this.onToggleListView,this),this._class={gridView:"grid-view",listView:"list-view",bricksView:"bricks-view",listRebrushView:"list-rebrush-view",gridViewSkipMd:"grid-view-skip-md"},this.sync=$.proxy(this.sync,this),this.isSynced=!1,this.$ctx=$(this._ctx),this.$list=this.$ctx.find(".js-list-layout"),this.$ctx.data("ecr-active")&&T.Utils.loadEcrScript(this.$ctx.data("ecr-url")),this._events.on("toggleGridView",this.onToggleGridView),this._events.on("toggleListView",this.onToggleListView),this._events.on("initializeLoadMore",this.onInitializeLoadMore),this._events.on("loadMore",this.onLoadMore),this._events.on("t.sync",this.sync);const config=T.Utils.list;return this.currentPageSize=0,this.listId=this.$ctx.data("list-id"),this.staticViewType=this._class.gridView,this.currentViewType,this.hasDynamicViewType=!1,this.currentViewTypeLarge="",this.hasViewTypeToggle=this.$ctx.data("has-view-type-toggle"),this.equalHeightActive=!1,this.$matchedElements=[],this.itemsPerRow={mobile:config.itemPerRow,tablet:config.itemPerRowMd,desktop:config.itemPerRowLg},this.currentItemsPerRow=0,this.allItems=[],this.initializeListViewType(),this._events.on("viewportChanged",viewport=>this.onViewportChange(viewport)),this.onViewportChange(T.Utils.getViewport()),$(document).on("list:loadpage",()=>
7{this.attachImgLoadListenerOrTriggerMatchHeight()}),resolve()},sync(){if(!this.isSynced){this.updateInitialListViewType();let observer=new MutationObserver(()=>{this.$ctx.hasClass(this._class.gridView)&&this.attachImgLoadListenerOrTriggerMatchHeight()});this.$list[0]&&observer.observe(this.$list[0],{childList:!0,subtree:!0}),this.isSynced=!0}},renderInitialData(formAjaxId,initialUrl){this.$ctx.find(`[data-init-data="${formAjaxId}"]`).length>0||T.Utils.startAjaxRequest(formAjaxId,{url:initialUrl,dataType:"json",dataRendering:!0},!1,!1,()=>{$(document).trigger("footnotes:initreplacement"),$(document).trigger("searchheader:jumptoanchor")},this.$ctx)},attachImgLoadListenerOrTriggerMatchHeight(){const $lazyloadedImg=this.$list.find("img").filter('.lazyload, img[loading="lazy"]');$lazyloadedImg.length>0?$lazyloadedImg.map((i,img)=>{void 0!==img.attachedLoadListener&&null!==img.attachedLoadListener||(img.attachedLoadListener=!0,$(img).on("load",()=>this.equalizeHeights(!0)))}):this.equalizeHeights(!0)},debounceMethodEqualizeHeights(){return this.equalizeHeights=T.Utils.debounce(this.equalizeHeights.bind(this),1e3)},equalizeHeights(enableEqualHeights){if(this.$ctx.hasClass(this._class.bricksView)||this.$ctx.hasClass(this._class.listRebrushView))return;const mod=this;if(mod.registeredGroups=mod.registeredGroups||[],!this.$ctx.data("disable-matchheight")){const $items=mod.findListItems(),$itemsWithEqualHeight=$items.filter(".has-equal-height");if($.fn.matchHeight._throttle=240,$items.length>0)if(enableEqualHeights){let $itemsToApplyEqualHeight;this.equalHeightActive=!0,$itemsToApplyEqualHeight=$itemsWithEqualHeight.length>0?$items.slice($itemsWithEqualHeight.length-$itemsWithEqualHeight.length%mod.itemsPerRow,$items.length):$items;const tempArray=mod.createItemHeightMatchingGroups($itemsToApplyEqualHeight),groupOptions={byRow:!0,property:"height",target:null};$.each(tempArray,(index,itemGroup)=>{$(itemGroup).registerMatchHeight(groupOptions),mod.registeredGroups.push({elements:itemGroup,options:groupOptions})}),mod.$matchedElements.concat(tempArray),mod.$matchedElements.push($itemsToApplyEqualHeight)}else null!=mod.$matchedElements&&mod.$matchedElements.length>0&&($.each(mod.$matchedElements,(index,itemGroup)=>{$(itemGroup).removeMatchHeight()}),mod.registeredGroups=[]),mod.findListItems().removeClass("has-equal-height"),this.equalHeightActive=!1}this.listMatchHeightUpdateTID||(this.listMatchHeightUpdateTID=window.setTimeout(()=>{if(mod.registeredGroups.length>0){const consider_parents=!0;$.fn.matchHeight._applyByGroups(mod.registeredGroups,consider_parents)}else this.$ctx.matchHeightElementOrParents();this.listMatchHeightUpdateTID=null},500))},findListItems(){return this.$ctx.find(".js-product-teaser")},createItemHeightMatchingGroups:$itemsToApplyEqualHeight=>[$itemsToApplyEqualHeight.find(".js-detail-wrapper"),$itemsToApplyEqualHeight.find(".js-product-info-wrapper"),$itemsToApplyEqualHeight.find(".js-product-text-wrapper"),$itemsToApplyEqualHeight.find(".js-conversion-wrapper"),$itemsToApplyEqualHeight.find(".js-price-wrapper"),$itemsToApplyEqualHeight.find(".js-stock-info-wrapper"),$itemsToApplyEqualHeight.find(".js-button-group-wrapper"),$itemsToApplyEqualHeight.find(".js-brandsection-wrapper"),$itemsToApplyEqualHeight.find(".js-product-images-wrapper")],handleLoadMoreState(loadMoreState){return this.equalHeightActive&&this.equalizeHeights(!0),this.currentPageSize=loadMoreState.currentPageSize,this._events.emit("loadMoreCallback",{listId:this.listId,currentPageSize:loadMoreState.currentPageSize,hideLoadMoreButton:loadMoreState.allElementsVisible}),this._onAfterLoadMore()},initializeListViewType(){return this.getViewTypeFromCtx(),this.toggleListViewType(this.staticViewType)},getViewTypeFromCtx(){if(this.$ctx.hasClass(this._class.listView)?this.staticViewType=this._class.listView:this.$ctx.hasClass(this._class.bricksView)?this.staticViewType=this._class.bricksView:this.staticViewType=this._class.gridView,this.currentViewType=this.staticViewType,null!=this.hasViewTypeToggle&&this.hasViewTypeToggle)return this.hasDynamicViewType=!0,this.currentViewTypeLarge=this.staticViewType},requestMoreItems(requestData){let loadMoreState={};loadMoreState={allElementsVisible:!1};return requestData.done($.proxy(function(a){const list=a;if(!list||!this.getListItems(list))return console.error("No items found in JSON"),!1;list.response&&list.response.items&&this.checkForSetToChangeViewMode(list.response.items);const current=this.getPageNumber(list),max=this.getMaxPageNumber(list);return loadMoreState.allElementsVisible=current>=max,this.handleLoadMoreState(loadMoreState)},this)).fail($.proxy(function(){return loadMoreState.allElementsVisible=!0,this.handleLoadMoreState(loadMoreState)},this))},checkForSetToChangeViewMode(items){if((items=items||[]).length<=0)return;items.filter(element=>null!=element.set).length>0&&(this._events.emit("toggleListView",{listId:this.listId}),this._events.emit("removeLayoutOptions",{listId:this.listId}))},getListItems:listResponse=>null!=listResponse.response?listResponse.response.items:void 0,getPageNumber:response=>response.response.pageNumber,getMaxPageNumber:response=>response.response.maxPageNumber,renderMoreItems(data){let allElementsVisible=!1;
7const loadMoreState={};let itemsToRender=[];const allItems=data.jsonData[data.jsonAttrKey],newCurrentPageSize=data.currentPageSize+data.loadMorePageSize;0===data.currentPageSize?(data.renderAllItems&&$.each(allItems,function(index,item){if(index>=data.loadMorePageSize)return item.isHidden=!0}),this.allItems=allItems,itemsToRender=0===data.loadMorePageSize||data.renderAllItems?allItems:allItems.slice(data.currentPageSize,newCurrentPageSize)):itemsToRender=allItems.slice(data.currentPageSize,newCurrentPageSize);const result={};result[data.jsonAttrKey]=itemsToRender,result._response=data.jsonData,null!=data.urlParams&&$.each(data.urlParams,(key,value)=>result[key]=value);const $template=$("<div/>").html(T.Utils.renderTemplateMarkup(data.request,result,!1));return T.Utils.syncContent($template,data.replaceContainerId,data.contentRenderType),newCurrentPageSize>=data.jsonData[data.jsonAttrKey].length&&(allElementsVisible=!0),loadMoreState.currentPageSize=newCurrentPageSize,loadMoreState.allElementsVisible=allElementsVisible,loadMoreState},showInitialItems(initialPageSize){const $listItems=this.$ctx.find(".js-item"),currentPageSize=$listItems.length,hiddenElements=currentPageSize>initialPageSize,loadMoreState={};if(loadMoreState.allElementsVisible=!hiddenElements,!isNaN(initialPageSize))for(let i=0,end=initialPageSize-1,asc=0<=end;asc?i<=end:i>=end;asc?i++:i--)$($listItems[i]).removeClass("hidden");return this._events.emit("updateItemCount",{listId:this.listId,itemCount:currentPageSize}),loadMoreState},showMoreItems(currentPageSize,loadMorePageSize,hiddenClass,hiddenSelector,visibleClass){let i;const $hiddenItems=this.$ctx.find(`.js-item.${hiddenSelector}`);let allElementsVisible=!1;const loadMoreState={},newCurrentPageSize=currentPageSize+loadMorePageSize;if(0===loadMorePageSize){let asc,end;for(i=0,asc=0<=(end=$hiddenItems.length-1);asc?i<=end:i>=end;asc?i++:i--)$($hiddenItems[i]).removeClass(hiddenClass),null!=visibleClass&&""!==visibleClass&&$($hiddenItems[i]).addClass(visibleClass)}else{let asc1,end1;for(i=0,asc1=0<=(end1=loadMorePageSize-1);asc1?i<=end1:i>=end1;asc1?i++:i--)$($hiddenItems[i]).removeClass(hiddenClass),null!=visibleClass&&""!==visibleClass&&$($hiddenItems[i]).addClass(visibleClass)}return 0===this.$ctx.find(`.js-item.${hiddenSelector}`).length&&(allElementsVisible=!0),loadMoreState.currentPageSize=newCurrentPageSize,loadMoreState.allElementsVisible=allElementsVisible,loadMoreState},toggleListViewType(newViewType){newViewType===this._class.gridView?(this.$ctx.addClass(this._class.gridView),this.$ctx.removeClass(this._class.listView),this.$ctx.removeClass(this._class.bricksView)):newViewType===this._class.bricksView?(this.$ctx.addClass(this._class.bricksView),this.$ctx.removeClass(this._class.listView),this.$ctx.removeClass(this._class.gridView)):(this.$ctx.addClass(this._class.listView),this.$ctx.removeClass(this._class.gridView),this.$ctx.removeClass(this._class.bricksView))},updateInitialListViewType(){return this._events.emit("onGridListInit",{listId:this.listId,viewType:this.currentViewType})},onLoadMore(data){if(this.listId===data.listId){let loadMoreState={};switch(data.loadMoreType){case"dom":loadMoreState=this.showMoreItems(data.currentPageSize,data.loadMorePageSize,"hidden","hidden","");break;case"data":loadMoreState=data.currentPageSize>0&&data.renderAllItems?this.showMoreItems(data.currentPageSize,data.loadMorePageSize,"load-more-hidden","load-more-hidden:not(.filter-hidden)","load-more-visible"):this.renderMoreItems(data);break;case"ajax":return void(loadMoreState=this.requestMoreItems(data.requestData))}return this.equalizeHeights(!0),this.handleLoadMoreState(loadMoreState)}},onInitializeLoadMore(data){if(this.listId===data.listId){let initdata;switch(data.loadMoreType){case"dom":return this.handleLoadMoreState(this.showInitialItems(data.initialPageSize));case"ajax":var $initdata=this.$ctx.find("[data-init-data]").eq(0);if($initdata.length&&(initdata=JSON.parse($initdata.text())),!initdata||!initdata.response)return!1;var loadMoreState={},list=initdata.response,current=parseInt(list.pageNumber),max=parseInt(list.maxPageNumber);return loadMoreState.allElementsVisible=current===max,this.handleLoadMoreState(loadMoreState)}}},onToggleGridView(data){this.listId===data.listId&&(this.$list=data.$currentList||this.$list,this.currentViewTypeLarge=this._class.gridView,this.currentViewType=this._class.gridView,this.toggleListViewType(this._class.gridView),this.attachImgLoadListenerOrTr
7iggerMatchHeight())},onToggleListView(data){this.listId===data.listId&&(this.$list=data.$currentList||this.$list,this.currentViewTypeLarge=this._class.listView,this.currentViewType=this._class.listView,this.toggleListViewType(this._class.listView),this.equalizeHeights(!0))},onViewportChange(viewport){if(this._onViewportChange(),this.currentViewType===this._class.bricksView)return;let newListViewType=this._class.gridView;if(this.hasDynamicViewType?"desktop"===viewport&&(newListViewType=this.currentViewTypeLarge===this._class.listView?this._class.listView:this._class.gridView):newListViewType=this.staticViewType===this._class.listView?this._class.listView:this._class.gridView,this.currentItemsPerRow=this.itemsPerRow[viewport],newListViewType!==this.currentViewType&&(this.currentViewType=newListViewType,this.toggleListViewType(newListViewType)),"mobile"===viewport){if(this.equalHeightActive)return this.equalizeHeights(!1)}else if(newListViewType===this._class.gridView)return this.equalizeHeights(!0)},_onViewportChange(){},_onAfterLoadMore(){}})}(jQuery),function($){T.Module.MyAccountPromotionApplianceDetails=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.selectors={registeredProductDropdownSelector:".js-registered-product-dropdown",appliancedetailsComponent:".js-productregistration-appliancedetails",registeredProductDropdownContainer:".js-registered-product-dropdown-container",registeredProductInputSelector:".js-registered-product-input",purchaseDateReadOnlySelector:".js-purchase-date-readonly",pickadayInput:".js-pikaday",pickadayInputContainer:".js-purchase-date-picker",purchaseDateText:".js-text",kisDropdown:".js-kis-dropdown",kisDropdownContainer:".js-kis-dropdown-container",fdNumerInput:".js-fdNumber-input",serialNumberInput:".js-serialNumber-input",applianceInput:".js-appliance-input",registeredProductsForm:".js-registered-products-form"},this.$registeredProductsDropdowns=this.$ctx.find(this.selectors.registeredProductDropdownSelector),this.$registeredProductInputs=this.$ctx.find(this.selectors.registeredProductInputSelector),this.$registeredProductsForm=this.$ctx.find(this.selectors.registeredProductsForm);const $kisDropdownContainer=this.$ctx.find(this.selectors.kisDropdown).parents(this.selectors.kisDropdownContainer);return this.$registeredProductsDropdowns.on("change",ev=>this.onRegisteredProductChanged(ev)),$kisDropdownContainer.hide(),$(this.selectors.fdNumerInput).data("invalidHook",{cb:this.openMoreContentToggleLink}),$(this.selectors.serialNumberInput).data("invalidHook",{cb:this.openMoreContentToggleLink}),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.$registeredProductInputs.each((idx,input)=>{const productReference=$(input).data("reference"),$appliancedetailsComponent=$(input).parents(this.selectors.appliancedetailsComponent);if(productReference){const productsConfig=$(input).data("products-config");this.fillConnectedFields(productsConfig,productReference,$appliancedetailsComponent)}}),this.$registeredProductsDropdowns.each((idx,dropdown)=>{const $productsDropdown=$(dropdown),productReference=$productsDropdown.find(":selected").data("reference");if(productReference){const productsConfig=$productsDropdown.data("products-config"),availableKis=this.getKisData(productsConfig,productReference),$appliancedetailsComponent=$productsDropdown.parents(this.selectors.appliancedetailsComponent);this.fillKisDropdown(availableKis,$productsDropdown,!1),this.fillConnectedFields(productsConfig,productReference,$appliancedetailsComponent)}}))},onRegisteredProductChanged(ev){const $productsDropdown=$(ev.currentTarget),productsConfig=$productsDropdown.data("products-config"),productReference=$productsDropdown.find(":selected").data("reference"),availableKis=this.getKisData(productsConfig,productReference),$appliancedetailsComponent=$productsDropdown.parents(this.selectors.appliancedetailsComponent);this.fillKisDropdown(availableKis,$productsDropdown,!0),this.fillConnectedFields(productsConfig,productReference,$appliancedetailsComponent)},getKisData(productsConfig,productReference){let availableKis=null;return productsConfig[productReference]&&(availableKis=productsConfig[productReference].availableKis),availableKis},fillKisDropdown(availableKis,$productsDropdown,onChange){const $kisDropdownContainer=$productsDropdown.parents(this.selectors.registeredProductDropdownContainer).siblings(this.selectors.kisDropdownContainer),$kisDropdown=$kisDropdownContainer.find(this.selectors.kisDropdown);if(onChange&&$kisDropdownContainer.removeClass("has-error"),$kisDropdown.empty(),availableKis){$kisDropdown.append(new Option("",$productsDropdown.val())),$kisDropdown.val($productsDropdown.val());const preselectedValue=$kisDropdown.data("preselected-value"),preselectedValueExist=availableKis.find(obj=>obj.value===preselectedValue);for(let i of availableKis)$kisDropdown.append(new Option(i.text,i.value)),$kisDropdownContainer.show();preselectedValueExist&&$kisDropdown.val(preselectedValue)}else $kisDropdownContainer.hide(),$kisDropdown.append(new Option("",$productsDropdown.val())),$kisDropdown.val($productsDropdown.val())},fillConnectedFields(productsConfig,productReference,$appliancedetailsComponent){let fdNumberValue="",serialNumberValue="",purchaseDateValue="",applianceIdValue="";const $fieldFdNumber=$appliancedetailsComponent.find(this.selectors.fdNumerInput),$fieldSerialNumber=$appliancedetailsComponent.find(this.selectors.serialNumberInput),$pikaDayInput=$appliancedetailsComponent.find(this.selectors.pickadayInput),$applianceInput=$appliancedetailsComponent.find(this.selectors.applianceInput),$pikaDayInputDecorator=$appli
7ancedetailsComponent.find('[data-t-decorator="DatePicker"]'),$pikaDayContainer=$pikaDayInput.parents(this.selectors.pickadayInputContainer),$purchaseDateReadOnly=$pikaDayContainer.siblings(this.selectors.purchaseDateReadOnlySelector);productReference&&(fdNumberValue=productsConfig[productReference].fdNumberValue,serialNumberValue=productsConfig[productReference].serialNumberValue,purchaseDateValue=productsConfig[productReference].purchaseDateValue,applianceIdValue=productsConfig[productReference].applianceIdValue),$fieldFdNumber.val(fdNumberValue),$fieldSerialNumber.val(serialNumberValue),$applianceInput.val(applianceIdValue),$pikaDayInputDecorator.trigger("datepicker:setDate",[purchaseDateValue]),productsConfig[productReference]&&productsConfig[productReference].fdNumberReadOnly?($fieldFdNumber.addClass("readonly"),$fieldFdNumber.attr("readonly","readonly")):($fieldFdNumber.removeClass("readonly"),$fieldFdNumber.removeAttr("readonly")),productsConfig[productReference]&&productsConfig[productReference].serialNumberReadOnly?($fieldSerialNumber.addClass("readonly"),$fieldSerialNumber.attr("readonly","readonly")):($fieldSerialNumber.removeClass("readonly"),$fieldSerialNumber.removeAttr("readonly")),productsConfig[productReference]&&productsConfig[productReference].purchaseDateReadOnly?($pikaDayInput.hide(),$pikaDayContainer.removeClass("had-focus"),$purchaseDateReadOnly.find(this.selectors.purchaseDateText).text($pikaDayInput.val()),$purchaseDateReadOnly.show()):($pikaDayContainer.show(),$pikaDayInput.show(),$purchaseDateReadOnly.find(this.selectors.purchaseDateText).text(""),$purchaseDateReadOnly.hide()),($fieldFdNumber.length>0&&$fieldFdNumber.val()||$fieldSerialNumber.length>0&&$fieldSerialNumber.val())&&this.openMoreContentToggleLink($fieldFdNumber.get(0))},openMoreContentToggleLink(field){let $moreContentLink=$(field).closest('[data-t-name="MoreContentToggleLink"]');$moreContentLink.length>0&&$moreContentLink.trigger("morecontenttogglelink:openMoreLessLink")}})}(jQuery),function($){T.Module.MyAccountRegisterAnotherProduct=T.createModule({start(resolve,reject){this.$ctx=$(this._ctx),this._selector={addAnotheProduct:".js-add-another-product",purchaseDate:".pikaday__display",searchField:".js-searchfield-input",addAnotherProductAjax:".js-add-another-product-ajax",fdDateNumber:".js-fdNumber-input",serialNum:".js-serialNumber-input"},this.elm={$addAnotherProduct:this.$(this._selector.addAnotheProduct,this.$ctx),$addAnotherProductAjax:this.$(this._selector.addAnotherProductAjax,this.$ctx)},this.addAnotherProductAjaxId=this.elm.$addAnotherProductAjax.data("ajax-id"),this.sync=$.proxy(this.sync,this),this._events.on("t.sync",this.sync),this.elm.$addAnotherProduct.on("click",$.proxy(this.onAddAnotherProduct,this)),$(this._selector.fdDateNumber).data("invalidHook",{cb:this.openMoreContentToggleLink}),$(this._selector.serialNum).data("invalidHook",{cb:this.openMoreContentToggleLink}),resolve()},sync(){this.isSynced||(this.isSynced=!0)},validateInputFields(selector){let areFieldsValid=!0;return $(selector).each((index,field)=>{let $field=$(field);T.Utils.isValid($field)||(T.Utils.setInvalidStateClasses($field),areFieldsValid=!1)}),areFieldsValid},openMoreContentToggleLink(field){let $moreContentLink=$(field).closest('[data-t-name="MoreContentToggleLink"]');$moreContentLink.length>0&&$moreContentLink.trigger("morecontenttogglelink:openMoreLessLink")},onAddAnotherProduct(e){const isPurchaseDateValidated=this.validateInputFields(this._selector.purchaseDate),isSearchFieldValidated=this.validateInputFields(this._selector.searchField),isFdNumValid=this.validateInputFields(this._selector.fdDateNumber),isSerialNumValid=this.validateInputFields(this._selector.serialNum);return isSearchFieldValidated&&isPurchaseDateValidated&&isFdNumValid&&isSerialNumValid&&T.Utils.startAjaxRequest(this.addAnotherProductAjaxId),!1}})}(jQuery),function($){T.Module.MyProducts=T.createModule({start(resolve){this.$ctx=$(this._ctx);return this.onSubmitDeleteProductForm=$.proxy(this.onSubmitDeleteProductForm,this),this.class={ajaxform:".js-delete-product-form",submit:".js-submit-delete-product"},this.$deleteProductForm=this.$(this.class.ajaxform),this.$deleteProductForm.on("submit",this.onSubmitDeleteProductForm),resolve()},sync(){},onSubmitDeleteProductForm(ev){const mod=this;ev.preventDefault();const $form=$(ev.currentTarget),ajaxId=$form.data("ajax-id"),ajaxConf=$form.data("ajax"),request=T.Utils.startAjaxRequest(ajaxId);return!!request&&request[0].then(function(response){if(T.Utils.ajaxResponseErrorCaseCheck(ajaxConf.errorCase,response))return mod._events.emit("loader:close",{$trigger:$(mod.class.submit,$form)})})}})}(jQuery),function($){T.Module.MyProductsRebrush=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.strLoaderClose="loader:close",this.strLoaderOpen="loader:open",this.loadMoreButtonSelector=".js-load-more",this.producttilesContainerSelector=".js-producttiles-container",this.addNewTileSelector=".js-add-new",this.productTileSelector=".js-myproducttile",this.lastProductClassName="js-last-product",this.callOutsContainerSelector=".js-callouts",this.productImageContainerSelector=".js-product-image",this.productTitleContainerSelector=".js-producttitle",this.purchaseDateContainerSelector=".js-purchase-date",this.registrationSourceContainerSelector=".js-registration-source",this.$headerRebrush=$(".js-header-rebrush"),this.amount=0,this.$producttilesContainer=this.$ctx.find(this.producttilesContainerSelector),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.getMoreProducts(!0))},getMoreProducts(isInitialCall){this._events.emit(this.strLoaderOpen,{loaderType:"area",loaderArea:this.$producttilesContainer,$trigger:this.$ctx});let viewPort=T.Utils.getViewport();this.amount="mobile"===viewPort?isInitialCall?3:this.amount+4:isInitialCall?7:this.amount+8,this.headerHeight=this.$headerRebrush.height()+parseInt(this.$headerRebrush.css("top"),10);const request=T.Utils.startAjaxRequest("getMoreProducts",null,{amount:this.amount},null,()=>{this.setMatchHeight()});request&&request[0].done(response=>{if(this.$loadMoreButton=this.$ctx.find(this.loadMoreButtonSelector),this.$productTiles=this.$ctx.find(this.productTileSelector),this.newLastProductIndex=this.$productTiles.length-1,this.$callOutsContainer=this.$ctx.find(this.callOutsContainerSelector),this.$productImageContainer=this.$ctx.find(this.productImageContainerSelector),this.$productTitleContainer=this.$ctx.find(this.productTitleContainerSelector),this.$purchaseDateContainer=this.$ctx.find(this.purchaseDateContainerSelector),this.$registrationSourceContainer=this.$ctx.find(this.registrationSourceContainerSelector),this.$loadMoreButton.off("click"),this.$loadMoreButton.on("click",()=>this.getMoreProducts(!1)),this.$productTiles.eq(this.oldLastProductIndex).addClass(this.lastProductClassName),this.$lastProduct=this.$ctx.find(`.${this.lastProductClassName}`),this.$lastProduct.length>0){const scrollTop=this.$lastProduct.offset().top-this.headerHeight;$(document).scrollTop(scrollTop)}this.oldLastProductIndex=this.newLastProductIndex}).fail((xhr,ajaxOptions,thrownError)=>{console.log(xhr,ajaxOptions,thrownError)}).always(()=>{this._events.emit(this.strLoaderClose,{$trigger:this.$ctx})})},setMatchHeight(){setTimeout(()=>{this.matchContainerHeights()},750)},matchContainerHeights(){this.$callOutsContainer.matchHeight(),this.$productImageContainer.matchHeight(),this.$productTitleContainer.matchHeight(),this.$purchaseDateContainer.matchHeight(),this.$registrationSourceContainer.matchHeight()}})}(jQuery),function($){T.Module.MyProfileForms=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.deleteAddressFormSelector=".js-delete-address-form",this.submitDeleteAddressSelector=".js-submit-delete-address",this.deleteAccountFormSelector=".js-delete-account-form",this.submitDeleteAccountSelector=".js-submit-delete-account",this.sync=$.proxy(this.sync,this),this.$deleteAddressForm=this.$(this.deleteAddressFormSelector),this.$deleteAddressForm.on("submit",$.proxy(this.onSubmitDeleteAddressForm,this)),this.$deleteAccountForm=this.$(this.deleteAccountFormSelector),this.deleteAccountAjaxConfig=this.$deleteAccountForm.data("ajax"),this.deleteAccountAjaxId=this.$deleteAccountForm.data("ajax-id"),this.$deleteAccountForm.on("submit",$.proxy(this.onSubmitDeleteAccountForm,this)),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0)},onSubmitDeleteAccountForm(ev){const mod=this;ev.preventDefault();const request=T.Utils.startAjaxRequest(this.deleteAccountAjaxId,this.deleteAccountAjaxConfig);return!!request&&request[0].then(function(response){if(T.Utils.ajaxResponseErrorCaseCheck(mod.deleteAccountAjaxConfig.errorCase,response))return mod._events.emit("loader:close",{$trigger:mod.$deleteAccountForm.find(mod.submitDeleteAccountSelector)})})},onSubmitDeleteAddressForm(ev){const mod=this;ev.preventDefault();const $form=$(ev.currentTarget);mod.deleteAddressAjaxConfig=$form.data("ajax"),mod.deleteAddressAjaxId=$form.data("ajax-id");const request=T.Utils.startAjaxRequest(mod.deleteAddressAjaxId,mod.deleteAddressAjaxConfig);return!!request&&request[0].then(function(response){if(T.Utils.ajaxResponseErrorCaseCheck(mod.deleteAddressAjaxConfig.errorCase,response))return mod._events.emit("loader:close",{$trigger:mod.$deleteAddressForm.find(mod.submitDeleteAddressSelector)})})}})}(jQuery),function($){T.Module.OnlineDealerLayer=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.sendsMcid=this.$ctx.data("mcid"),this.$mcidField=this.$ctx.find(".js-mcid"),this.counter=0,T.Utils.resetPrecondition("onlinedealerlayer:mcidready"),this._events.on("wopPlpDataOnlineDealerLayer",data=>this.wopPlpOnlineDealerLayer(data)),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.sendsMcid&&(()=>{setTimeout(function watchSatellite(){"undefined"!=typeof _satellite&&_satellite.getVisitorId().getMarketingCloudVisitorID()>0||30===this.counter?this.sendMcidReady():setTimeout(watchSatellite.bind(this),200),this.counter++}.bind(this),300)})(),this.isSynced=!0)},sendMcidReady(){"undefined"!=typeof _satellite?(this.mcid=_satellite.getVisitorId().getMarketingCloudVisitorID(),this.$mcidField.val(this.mcid),setTimeout(()=>{T.Utils.fulfillPrecondition("onlinedealerlayer:mcidready")},0)):T.Utils.fulfillPrecondition("onlinedealerlayer:mcidready")},wopPlpOnlineDealerLayer(data){this.resultsText=$(".js-online-dealers-randomized-legal-advice"),this.noResultsText=$(".js-online-dealers-randomized-legal-no-results"),data.dealers.length>0&&this.resultsText.length>0?(this.resultsText.removeClass("hidden"),!this.noResultsText.hasClass("hidden")&&this.noResultsText.addClass("hidden")):this.noResultsText.length>0&&(this.noResultsText.removeClass("hidden"),!this.resultsText.hasClass("hidden")&&this.resultsText.addClass("hidden")),this.$ctx.find(".dealerlocator-width .redirect-data").attr("data-redirect-url",data.dealerLocatorUrl),this._events.emit("wopPlpDealerLocatorURL",data.dealerLocatorUrl),this.sendTranckingEvent(data.dealers)},sendTranckingEvent(dealers){this.dealersNamesArray=dealers.map(dealer=>dealer.title).join("|"),T.Utils.getLayout().trackValues("Buy online logos loaded",{dealersShown:this.dealersNamesArray}
7)}})}(jQuery),function($){T.Module.OrderNotes=T.createModule({start(resolve){return this.$ctx=$(this._ctx),T.Utils.allSynced=!1,this.config=this.$ctx.data("config")||{},this._selector={selectorPostParams:".js-post-params",selectorSendButton:".js-send-note",selectorNoteTextarea:".js-note"},this.elm={$collectionPostParams:$(this._selector.selectorPostParams,this.$ctx),$sendButton:$(this._selector.selectorSendButton,this.$ctx),$noteTextarea:$(this._selector.selectorNoteTextarea,this.$ctx)},this._events.on("t.sync",()=>this.sync()),this.elm.$sendButton.on("click",ev=>this.onSend(ev)),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0)},createNote(){if($.trim(this.elm.$noteTextarea.val()).length>0){this._events.emit("tracking:generic",{trackType:"xD2C order note sent"});const postParams=[];this.elm.$collectionPostParams.each(function(index){const field={name:$(this).attr("name"),value:$(this).val()};return postParams.push(field)});const ctx=this,CSRFHeader=T.Utils.getCSRFTokenHeader()||{};$.ajax({url:this.config.url,cache:!1,type:"POST",headers:CSRFHeader,dataType:"HTML",contentType:"application/x-www-form-urlencoded; charset=UTF-8",data:postParams,success:(data,textStatus,jqXHR)=>(ctx.updateList(data),ctx.elm.$noteTextarea.trigger("reset"),!0),error:(jqXHR,textStatus,errorThrown)=>!1})}return!0},updateList:data=>(T.Utils.replaceContent(data),!0),onSend(ev){return ev.preventDefault(),T.Utils.debounce(ev=>this.createNote(),250,!0)(ev)}})}(jQuery),jQuery,T.Module.OrderPurchaseDetail=T.createModule({start:resolve=>resolve(),sync(){}}),function($){T.Module.OverwriteBasketPrices=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.config=this.$ctx.data("config")||{},this._selector={selectorEditRowButton:".js-edit-row-button",selectorConfirmRowButton:".js-confirm-row-button",selectorCancelRowButton:".js-cancel-row-button",selectorResetRowButton:".js-reset-row-button",selectorCancelButton:".js-cancel-button",selectorSaveButton:".js-save-button",selectorPostParams:"input, select, input[type=radio], textarea",selectorDiscountField:".js-discount-field",selectorNewItemPriceField:".js-newitemprice-field",selectorReasonField:".js-reason-field",selectorEditModeRow:"tr.edit-mode",selectorEditModeReasonRow:"tr.edit-mode-reason",selectorReadonlyModeRow:"tr.readonly-mode",selectorDisabledButtons:".a-link.is-disabled",selectorHiddenInputs:"form input[type=hidden]",selectorForm:"form",selectorFormErrorWrapper:".form-error-wrapper",selectorBelowLimitReasonErrorMessage:".js-belowlimit-reason-errormessage",selectorBelowLimitReasonTextarea:".js-belowlimit-reason-textarea",selectorDiscountFieldRadio:".js-discount-field-radio"},this.elm={$editRowButton:$(this._selector.selectorEditRowButton,this.$ctx),$confirmRowButton:$(this._selector.selectorConfirmRowButton,this.$ctx),$cancelRowButton:$(this._selector.selectorCancelRowButton,this.$ctx),$resetRowButton:$(this._selector.selectorResetRowButton,this.$ctx),$cancelButton:$(this._selector.selectorCancelButton,this.$ctx),$saveButton:$(this._selector.selectorSaveButton,this.$ctx),$postParams:$(this._selector.selectorPostParams,this.$ctx),$discountField:$(this._selector.selectorDiscountField,this.$ctx),$discountFieldRadio:$(this._selector.selectorDiscountFieldRadio,this.$ctx),$newItemPriceField:$(this._selector.selectorNewItemPriceField,this.$ctx),$disabledButtons:$(this._selector.selectorDisabledButtons,this.$ctx),$form:$(this._selector.selectorForm,this.$ctx),$reasonField:$(this._selector.selectorReasonField,this.$ctx),$formErrorWrapper:$(this._selector.selectorFormErrorWrapper,this.$ctx),$belowLimitReasonErrorMessage:$(this._selector.selectorBelowLimitReasonErrorMessage,this.$ctx),$belowLimitReasonTextarea:$(this._selector.selectorBelowLimitReasonTextarea,this.$ctx)},this._events.on("t.sync",()=>this.sync()),this.initElements(),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0,this.elm.$belowLimitReasonTextarea.on("keyup",ev=>this.hideBelowLimitReasonErrorMessage()))},initElements(){this.elm.$editRowButton.on("click",ev=>this.onClickActionButton(ev,this.config.editRowUrl)),this.elm.$confirmRowButton.on("click",ev=>this.onClickActionButton(ev,this.config.confirmRowUrl,!0)),this.elm.$cancelRowButton.on("click",ev=>this.onClickActionButton(ev,this.config.cancelRowUrl)),this.elm.$resetRowButton.on("click",ev=>this.onClickActionButton(ev,this.config.resetRowUrl)),this.elm.$cancelButton.on("click",ev=>this.onClickActionButton(ev,this.config.cancelUrl)),this.elm.$saveButton.on("click",ev=>this.onClickActionButton(ev,this.config.saveUrl)),this.elm.$discountField.on("keypress change",ev=>this.onChangePrice(ev,this.elm.$newItemPriceField)),this.elm.$newItemPriceField.on("keypress change",ev=>this.onChangePrice(ev,this.elm.$discountField)),this.elm.$postParams.on("focus change",ev=>this.onFocusPostParams(ev)),this.elm.$postParams.on("focusout change",ev=>this.onFocusOutPostParams(ev)),this.elm.$discountFieldRadio.on("change",()=>this.hideBelowLimitReasonErrorMessage(!0)),this.elm.$disabledButtons.off("click").prop("href","").removeAttr("href"),this.elm.$discountField.val()&&this.elm.$newItemPriceField.removeAttr("required"),this.elm.$newItemPriceField.val()&&this.elm.$discountField.removeAttr("required")},doAction(url,postParams,$button){let ctx=this,headers=T.Utils.getCSRFTokenHeader()||{};
7var method=($button.data("config")||{}).method||"POST";ctx._events.emit("loader:open",{loaderType:"layer",$trigger:$button}),$.ajax({url:url,headers:headers,cache:!1,type:method,crossDomain:this.config.crossdomain||null,dataType:this.config.datatype||"html",data:postParams,contentType:this.config.contenttype||"application/x-www-form-urlencoded; charset=UTF-8",success:(data,textStatus,jqXHR)=>(ctx._events.emit("loader:close",{$trigger:$button}),ctx.switchMode(data),!0),error:(jqXHR,textStatus,errorThrown)=>(ctx._events.emit("loader:close",{$trigger:$button}),!1)})},hideBelowLimitReasonErrorMessage(removeTextarea){const $editModeReasonRow=$(this._selector.selectorEditModeReasonRow,this.$ctx),$belowLimitReasonTextarea=$editModeReasonRow.find(this._selector.selectorBelowLimitReasonTextarea),$belowLimitReasonErrorMessage=$editModeReasonRow.find(this._selector.selectorBelowLimitReasonErrorMessage);$belowLimitReasonTextarea.length>0&&$belowLimitReasonTextarea.val().length>0?$belowLimitReasonErrorMessage.addClass("hidden"):$belowLimitReasonErrorMessage.removeClass("hidden"),removeTextarea&&$editModeReasonRow.remove()},switchMode(data){return T.Utils.syncContent($(data),null,null,null,()=>{this.initElements()}),!0},onClickActionButton(ev,url,validate){ev.preventDefault();let ctx=this,$button=$(ev.currentTarget),postParams=($button.data("config")||{}).postParams||{};const $editModeRow=$(this._selector.selectorEditModeRow,this.$ctx),$editModeReasonFields=$(this._selector.selectorEditModeReasonRow,this.$ctx).find(this._selector.selectorPostParams);let $postParamFields=$editModeRow.find(this._selector.selectorPostParams);const $hiddenInputs=$(this._selector.selectorHiddenInputs,this.$ctx);let isvalid=!0;if($postParamFields=$.merge($postParamFields,$hiddenInputs),$postParamFields=$.merge($postParamFields,$editModeReasonFields),validate&&(isvalid=T.Utils.isValid($postParamFields)),isvalid)$postParamFields.each(function(index){var field={[$(this).attr("name")]:$(this).val()};"radio"===$(this).attr("type")?$(this).prop("checked")&&(postParams=$.extend(postParams,field)):postParams=$.extend(postParams,field)}),T.Utils.debounce(()=>{this.doAction(url,postParams,$button)},250,!0)();else{let invalidFieldsFound=!1;$postParamFields.each(function(index){let isinvalid=!T.Utils.isValid($(this));$(this).toggleClass("has-error",isinvalid),isinvalid&&(invalidFieldsFound=!0)}),ctx.elm.$formErrorWrapper.toggleClass("has-required-error",invalidFieldsFound)}},onChangePrice(ev,$fieldToReset){$fieldToReset.val(""),$fieldToReset.removeAttr("required"),$(ev.currentTarget).attr("required","required"),/^[A-Z0-9\,\.]+$/i.test(ev.currentTarget.value)||(ev.currentTarget.value=ev.currentTarget.value.replace(/[^A-Z0-9\,\.]+/i,"")),this.hideBelowLimitReasonErrorMessage(!0)},onFocusPostParams(ev){this.elm.$formErrorWrapper.removeClass("has-custom-error").removeClass("has-required-error"),this.elm.$postParams.removeClass("has-error"),this.elm.$reasonField.removeClass("has-error")},onFocusOutPostParams(ev){this.elm.$formErrorWrapper.toggleClass("has-required-error",!T.Utils.isValid($(ev.currentTarget)))}})}(jQuery),function($){T.Module.ProductDetail=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.trackingType={productMediaInteraction:"product media interaction",sliderScroll:"slider scroll",sliderOpen:"slider open",galleryClick:"gallery click"},this.$ctx.data("ecr-active")&&T.Utils.loadEcrScript(this.$ctx.data("ecr-url")),T.Utils.addSkusToEcr(this.$ctx.data("sku")),this._events.on("t.sync",()=>this.sync()),this._events.on("mediaGalleryInteraction:sliderScroll",data=>this.trackMGSliderScroll(data)),this._events.on("mediaGalleryInteraction:openLayer",data=>this.trackMGSliderLayerOpen(data)),this._events.on("mediaGalleryInteraction:thumbnailClick",data=>
7this.trackMGThumbnailClick(data)),this.isSynced=!1,resolve()},sync(){this.isSynced||(this.isSynced=!0,this.addProductToRecentlyViewedItems())},addProductToRecentlyViewedItems(){const productCode=this.$ctx.data("sku"),catalogType=this.$ctx.data("catalog-type");if(!productCode||!catalogType)return;const recentlyViewedItemsFromLocalStorage=localStorage.getItem("recentlyViewedItems")||"[]";let recentlyViewedItems=JSON.parse(recentlyViewedItemsFromLocalStorage)||[];(recentlyViewedItems=(recentlyViewedItems=recentlyViewedItems.filter(product=>product.productCode!==productCode)).slice(-9)).push({productCode:productCode,catalogType:catalogType,created:new Date}),localStorage.setItem("recentlyViewedItems",JSON.stringify(recentlyViewedItems))},trackMGSliderScroll(data){const currentSlide=data.slide;if(this.$ctx.find(currentSlide).length>0){const trackData=this.getMGInteractionTrackingDetails(currentSlide,this.trackingType.sliderScroll);this.trackMGInteraction(this.trackingType.productMediaInteraction,trackData)}},trackMGSliderLayerOpen(data){const currentSlide=data.$triggerElement;if(this.$ctx.find(currentSlide).length>0){const trackData=this.getMGInteractionTrackingDetails(currentSlide,this.trackingType.sliderOpen);this.trackMGInteraction(this.trackingType.productMediaInteraction,trackData)}}
7,trackMGThumbnailClick(data){const currentSlide=data.$ctx;if(this.$ctx.find(currentSlide).length>0){const trackData=this.getMGInteractionTrackingDetails(currentSlide,this.trackingType.galleryClick);this.trackMGInteraction(this.trackingType.productMediaInteraction,trackData)}},getMGInteractionTrackingDetails(slide,interactionType){const slideIndex=parseInt($(slide).data("slick-index"))+1;return{product_media_interaction:interactionType,product_media_type:$(slide).data("media-type"),product_media_element:slideIndex}},trackMGInteraction(type,data){return this._events.emit("tracking:generic",{trackType:type,trackData:data})}})}(jQuery),function($){T.Module.ProductDetailRebrush=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$buyAreaTitle=this.$ctx.find(".m-buyareatitle"),this.$buyArea=this.$ctx.find(".buyarea-form-wrapper"),this.$productGallery=this.$ctx.find(".product-gallery"),this.$serviceArea=this.$ctx.find(".service-area"),this.$compareProduct=this.$ctx.find(".js-product-compare"),this.$compareSticky=$(".js-compare-stickybar"),this.$compareStickyHeight=0,this.$adjustCompareStickyHeight=!0,this.$lastScrollTop=0,this.trackingType={productMediaInteraction:"product media interaction",sliderScroll:"slider scroll",sliderOpen:"slider open",galleryClick:"gallery click"},this.lastTopPosition=0,this.scrollEventDebounceTime=50,this.scrollListenerInitialized=!1,this.$ctx.data("ecr-active")&&T.Utils.loadEcrScript(this.$ctx.data("ecr-url")),T.Utils.addSkusToEcr(this.$ctx.data("sku")),this._events.on("t.sync",()=>this.sync()),this._events.on("mediaGalleryInteraction:sliderScroll",data=>this.trackMGSliderScroll(data)),this._events.on("mediaGalleryInteraction:openLayer",data=>this.trackMGSliderLayerOpen(data)),this._events.on("mediaGalleryInteraction:thumbnailClick",data=>
7this.trackMGThumbnailClick(data)),this.isSynced=!1,$(window).on("resize",T.Utils.debounce($.proxy(this.onResize,this),this.scrollEventDebounceTime)),this.onResize(),this.$compareProduct.on("change",".js-toggle-compare",$.proxy(this.onChangeCompareProduct,this)),this.dealerlayerbutton=".js-onlinedealer-action",resolve()},sync(){this.isSynced||(this.isSynced=!0,this.addProductToRecentlyViewedItems())},addProductToRecentlyViewedItems(){const productCode=this.$ctx.data("sku"),catalogType=this.$ctx.data("catalog-type");if(!productCode||!catalogType)return;const recentlyViewedItemsFromLocalStorage=localStorage.getItem("recentlyViewedItems")||"[]";let recentlyViewedItems=JSON.parse(recentlyViewedItemsFromLocalStorage)||[];(recentlyViewedItems=(recentlyViewedItems=recentlyViewedItems.filter(product=>product.productCode!==productCode)).slice(-9)).push({productCode:productCode,catalogType:catalogType,created:new Date}),localStorage.setItem("recentlyViewedItems",JSON.stringify(recentlyViewedItems))},onResize(){"desktop"===T.Utils.getViewport()?(this.setupDesktop(),this.enableScrollListener()):(this.setupMobile(),this.disableScrollListener())},enableScrollListener(){this.scrollListenerInitialized||($(window).on("scroll.serviceArea",()=>this.onWindowScroll()),this.scrollListenerInitialized=!0)},disableScrollListener(){$(window).off("scroll.serviceArea"),this.scrollListenerInitialized=!1},onWindowScroll(){this.windowServiceAreaDelta=window.innerHeight-this.$serviceArea.height();const currentTopPosition=window.pageYOffset||document.documentElement.scrollTop,absoluteScrollDelta=Math.abs(currentTopPosition-this.lastTopPosition),serviceAreaTopValue=parseInt(this.$serviceArea.css("top"));if($(".js-compare-stickybar").hasClass("is-show")&&(this.$compareStickyHeight=$(".js-compare-stickybar").height()),this.windowServiceAreaDelta<0)currentTopPosition>this.lastTopPosition?(this.newTopValue=serviceAreaTopValue-absoluteScrollDelta,this.newTopValue<this.windowServiceAreaDelta?this.$serviceArea.css({top:`${this.windowServiceAreaDelta}px`}):this.$serviceArea.css({top:`${this.newTopValue}px`}),this.$serviceArea.css({top:`${parseInt(this.$serviceArea.css("top"))-this.$compareStickyHeight}px`}),this.$compareStickyHeight=0):(this.newTopValue=serviceAreaTopValue+absoluteScrollDelta+this.$compareStickyHeight,this.$compareStickyHeight=0,serviceAreaTopValue<0&&(this.newTopValue>0?this.$serviceArea.css({top:"0"}):this.$serviceArea.css({top:`${this.newTopValue}px`})));else{this.$serviceArea.css({top:"0"});const serviceAreaTop=this.$serviceArea.scrollTop();serviceAreaTop>=this.$lastScrollTop?this.$adjustCompareStickyHeight&&(this.$serviceArea.css({top:`${parseInt(this.$serviceArea.css("top"))-this.$compareStickyHeight}px`}),this.$compareStickyHeight=0,this.$adjustCompareStickyHeight=!1):this.$adjustCompareStickyHeight||(this.$serviceArea.css({top:`${parseInt(this.$serviceArea.css("top"))+this.$compareStickyHeight}px`}),this.$compareStickyHeight=0,this.$adjustCompareStickyHeight=!0),this.$lastScrollTop=serviceAreaTop}this.calculateServiceAreaHeaderOffset(currentTopPosition),this.lastTopPosition=currentTopPosition<=0?0:currentTopPosition},calculateServiceAreaHeaderOffset(currentTopPosition){const $stickyNav=$(".nav-sticky"),$headerRebrush=$(".js-header-rebrush");$stickyNav.length&&this.setServiceAreaHeaderOffset($stickyNav),$headerRebrush.length&&this.setServiceAreaHeaderRebrushOffset($headerRebrush,currentTopPosition)},setServiceAreaHeaderOffset($stickyNav){setTimeout(()=>{$stickyNav.hasClass("is-active")?this.$serviceArea.css("transform",`translateY(${$stickyNav.height()}px)`):this.$serviceArea.css("transform","translateY(0)")},this.scrollEventDebounceTime)},setServiceAreaHeaderRebrushOffset($headerRebrush,currentTopPosition){setTimeout(()=>{const headerRebrushHeightScrollDelta=parseInt($headerRebrush.css("top"))+$headerRebrush.height();let serviceAreaOffset=0;if(currentTopPosition+parseInt($headerRebrush.css("top"))>=0&&(serviceAreaOffset=currentTopPosition+parseInt($headerRebrush.css("top"))),currentTopPosition>=$headerRebrush.height()&&(serviceAreaOffset=headerRebrushHeightScrollDelta),this.windowServiceAreaDelta<0){const serviceAreaBottomDelta=this.newTopValue+Math.abs(this.windowServiceAreaDelta);serviceAreaBottomDelta<headerRebrushHeightScrollDelta&&(serviceAreaOffset=serviceAreaBottomDelta),this.newTopValue<this.windowServiceAreaDelta&&(serviceAreaOffset=0)}this.$serviceArea.css("transform",`translateY(${serviceAreaOffset}px)`)},this.scrollEventDebounceTime)},setupMobile(){this.$buyAreaTitle.prependTo(this.$productGallery),this.$buyArea.appendTo(this.$productGallery)},setupDesktop(){this.$buyAreaTitle.prependTo(this.$serviceArea),this.$buyArea.appendTo(this.$serviceArea)},trackMGSliderScroll(data){const currentSlide=data.slide;if(this.$ctx.find(currentSlide).length>0){const trackData=this.getMGInteractionTrackingDetails(currentSlide,this.trackingType.sliderScroll);this.trackMGInteraction(this.trackingType.productMediaInteraction,trackData)}},trackMGSliderLayerOpen(data){const currentSlide=data.$triggerElement;if(this.$ctx.find(currentSlide).length>0){const trackData=this.getMGInteractionTrackingDetails(currentSlide,this.trackingType.sliderOpen);this.trackMGInteraction(this.trackingType.productMediaInteraction,trackData)}}
7,trackMGThumbnailClick(data){const currentSlide=data.$ctx;if(this.$ctx.find(currentSlide).length>0){const trackData=this.getMGInteractionTrackingDetails(currentSlide,this.trackingType.galleryClick);this.trackMGInteraction(this.trackingType.productMediaInteraction,trackData)}},getMGInteractionTrackingDetails(slide,interactionType){const slideIndex=parseInt($(slide).data("slick-index"))+1;return{product_media_interaction:interactionType,product_media_type:$(slide).data("media-type"),product_media_element:slideIndex}},trackMGInteraction(type,data){return this._events.emit("tracking:generic",{trackType:type,trackData:data})},onChangeCompareProduct(ev){const mod=this;let $parentAjaxContainer=null,isProductRemovedFromComparision=!1;$(ev.ajaxContainer).length?(mod.$compareProduct=$(ev.ajaxContainer),$parentAjaxContainer=$(ev.ajaxContainer),isProductRemovedFromComparision=!0):$parentAjaxContainer=$(ev.currentTarget).closest(".js-ajax-request");const $chk=mod.$compareProduct.find(".js-update-localstorage"),chkName=$chk.attr("name"),ajaxRequestId=$parentAjaxContainer.attr("data-ajax-id"),ajaxRequestData={[chkName]:$chk.val()},request=T.Utils.startAjaxRequest(ajaxRequestId,null,ajaxRequestData);return!!request&&request[0].always(function(){}).done(function(result){if(null!=result){const $skuContainer=mod.$compareProduct.find(".js-update-localstorage"),localStorageKey=$skuContainer.attr("data-key"),strSkuInComparison=$skuContainer.attr("data-skuincomparison");T.Utils.localStorageSetItem(localStorageKey,strSkuInComparison);const ownSku=$skuContainer.val(),isInComparison=-1!==strSkuInComparison.indexOf(ownSku);mod.switchAjaxConfigUrl(mod.$compareProduct,isInComparison),"checked"===$skuContainer.attr("checked")||ev.closedFromStickyBar||(mod._events.emit("compare:removeProduct",ownSku),isProductRemovedFromComparision=!0);const arrSku=JSON.parse(strSkuInComparison);mod.switchCompareLabel($skuContainer,arrSku.length,isInComparison);const productImageUrl=mod.$compareProduct.data("imageUrl");mod._events.emit("updateCompareCount",{itemCount:arrSku.length,imgUrl:productImageUrl,productCode:ownSku,productRemoved:isProductRemovedFromComparision});const eventData={id:$skuContainer.attr("id"),arrSku:arrSku};return mod._events.emit("productconversionarea:skuComparisonChanged",eventData)}}).fail((xhr,ajaxOptions,thrownError)=>console.info(xhr))},switchAjaxConfigUrl($elm,blnInComparison){let objAjaxConfig;if(!$elm)return;const strAjaxConfig=$elm.attr("data-ajax");try{objAjaxConfig=JSON.parse(strAjaxConfig)}catch(error){console.error('"data-ajax" value has to be an object')}if("object"==typeof objAjaxConfig&&null!==objAjaxConfig){const strAdd="add-to",strRemove="remove-from",patternAdd=new RegExp(strAdd),patternRemove=new RegExp(strRemove),matchAdd=objAjaxConfig.url.match(patternAdd),matchRemove=objAjaxConfig.url.match(patternRemove);blnInComparison?null!=matchAdd&&(objAjaxConfig.url=objAjaxConfig.url.replace(patternAdd,strRemove)):null!=matchRemove&&(objAjaxConfig.url=objAjaxConfig.url.replace(patternRemove,strAdd))}return $elm.attr("data-ajax",JSON.stringify(objAjaxConfig))},switchCompareLabel($elm,numberOfItems,blnInComparison){if(!$elm)return;const isComparable=numberOfItems>1,labelId=$elm.attr("id"),$label=$elm.siblings(`[for="${labelId}"]`),$labelNotComparable=$label.children(":not(.js-compare-label)"),$labelisComparable=$label.find(".js-compare-label");return isComparable?($labelNotComparable.toggleClass("hidden",blnInComparison),$labelisComparable.toggleClass("hidden",!blnInComparison)):($labelNotComparable.toggleClass("hidden",!1),$labelisComparable.toggleClass("hidden",!0))}})}(jQuery),function($){T.Module.ProductListModule=T.createModule({start(resolve){return this.isSynced=!1,this.$ctx=$(this._ctx),this.productListModuleAjaxId=this.$ctx.data("ajax-id"),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.productListModuleAjaxId&&T.Utils.startAjaxRequest(this.productListModuleAjaxId),this.isSynced=!0)}})}(jQuery),function($){T.Module.ProductTeaserGridContainer=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.productTeaserGridContainerAjaxId=this.$ctx.data("ajax-id"),this.itemsPerRow={desktop:4,tablet:2,mobile:1},this._events.on("viewportChanged",()=>{this.gridEqualizeHeights()}),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(T.Utils.startAjaxRequest(this.productTeaserGridContainerAjaxId,null,null,null,()=>{this.gridEqualizeHeights()}),this.isSynced=!0)},gridEqualizeHeights(){$.fn.matchHeight._throttle=240,this.oldItemRows&&this.removeBindingsFromOldGroup(),this.euqalizeHeightsForEachRow()},removeBindingsFromOldGroup(){this.oldItemRows.forEach(row=>
7{this.createItemHeightMatchingGroups(row).forEach(group=>{$(group).matchHeight({remove:!0})})})},euqalizeHeightsForEachRow(){const $items=this.$ctx.find(".js-item"),viewPort=T.Utils.getViewport(),itemRows=this.sliceIntoChunks($items,this.itemsPerRow[viewPort]);itemRows.forEach(row=>{this.createItemHeightMatchingGroups(row).forEach(group=>{$(group).matchHeight({byRow:!1})})}),this.oldItemRows=itemRows,this.forceUpdate=!1},sliceIntoChunks(arr,chunkSize){const res=[];for(let i=0;i<arr.length;i+=chunkSize){const chunk=arr.slice(i,i+chunkSize);res.push(chunk)}return res},createItemHeightMatchingGroups:$itemsToApplyEqualHeight=>[$itemsToApplyEqualHeight.find(".js-product-images-wrapper"),$itemsToApplyEqualHeight.find(".js-detail-wrapper"),$itemsToApplyEqualHeight.find(".js-product-info-wrapper"),$itemsToApplyEqualHeight.find(".js-product-text-wrapper"),$itemsToApplyEqualHeight.find(".js-conversion-wrapper"),$itemsToApplyEqualHeight.find(".js-price-wrapper"),$itemsToApplyEqualHeight.find(".js-stock-info-wrapper"),$itemsToApplyEqualHeight.find(".js-button-group-wrapper"),$itemsToApplyEqualHeight.find(".js-brandsection-wrapper")]})}(jQuery),function($){T.Module.ProductTile=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$addToCompareBtn=this.$ctx.find(".js-add-to-compare"),this.$compareBtnAjax=this.$addToCompareBtn.data("request"),this.$localStorageKey=this.$addToCompareBtn.data("key"),this.$productCode=this.$addToCompareBtn.data("product-code"),this.$productDetailsContainer=this.$ctx.find(".js-localstorage-details"),this.$addToCompareBtn.on("click",()=>this.addProductToCompare()),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},addProductToCompare(){T.Utils.scrollToTop();const request=T.Utils.startAjaxRequest("ajax-compareview-add",this.$compareBtnAjax);request&&request[0]&&request[0].done(response=>{if(response){const existingProductsinCompare=T.Utils.localStorageGetItem(this.$localStorageKey);if(Array.isArray(existingProductsinCompare))existingProductsinCompare.push(this.$productCode),T.Utils.localStorageSetItem(this.$localStorageKey,existingProductsinCompare);else{const parts=this.$productDetailsContainer.data("productUrl").split("/"),imageCategory="Product_Shots"===parts[3]?"PRODUCT_SHOT":void 0,productCategory=this.$productDetailsContainer.data("productCategory"),productName=this.$productDetailsContainer.data("productName"),imageID=parts[parts.length-1].split(".")[0],productData={productCode:this.$productCode,productName:productName,productImage:{id:imageID,category:imageCategory}};this.addToCompareLocalStorage(existingProductsinCompare,productCategory,productData,this.$localStorageKey)}}})},addToCompareLocalStorage(existingProductsinCompare,productCategory,productData,localstorageKey){existingProductsinCompare&&productCategory&&localstorageKey&&(existingProductsinCompare.hasOwnProperty(productCategory)||(existingProductsinCompare[productCategory]=[]),existingProductsinCompare[productCategory].push(productData),T.Utils.localStorageSetItem(localstorageKey,existingProductsinCompare))}})}(jQuery),function($){T.Module.ProductTileRebrush=T.createModule({start(resolve){this.$ctx=$(this._ctx),T.Utils.addSkusToEcr(this.$ctx.data("sku")),this.$tileContainer=this.$ctx.closest(".product-tile-container"),this.$keyWrap=this.$tileContainer.find(".js-keybenefits"),this.$expandableArea=this.$tileContainer.find(".js-product-expandable-area"),this.$keyIconWrap=this.$tileContainer.find(".product-expandable-icon-area"),this.$arrowDown=this.$tileContainer.find(".js-down-arrow"),this.$awardSlider=this.$ctx.find(".js-product-awards"),this.$awardimage=this.$ctx.find(".js-awardimage"),this.$triggerAjaxOnEnter=this.$tileContainer.find(".js-trigger-ajax-on-enter"),this.$highlightsChips=this.$ctx.find(".js-product-top-highlights"),this.$images=this.$awardSlider.find("img"),this.$tileImage=this.$ctx.find(".product-main-image-container img"),this.$thumbnailProductImage=this.$ctx.find(".js-horizontal-thumbnail-images .a-image"),this.$productTileRebrush=this.$ctx.parent().find(".js-o-producttilerebrush"),this.$loadMoreButton=this.$ctx.parent().find(".js-loadmore-tile-button"),this.trackHighlightsChips=!0,this.$addToCart=$(".js-add-to-basket",this.$ctx),this.$buttonWrapper=$(".js-button-group-wrapper",this.$ctx),this.$onlineDealerLayer=$(".js-onlinedealer-action",this.$ctx),T.Commons.LazyLoadingInitializer.disableLazyLoading(this.$images),this.$tileImage&&T.Commons.LazyLoadingInitializer.disableLazyLoading(this.$tileImage),this.slidesToShowAwardSlider=2,this.slidesToShowHighlightsChip=2,this.$highlightsChips.length>0&&this.$highlightsChips.children().length<=4&&(this.slidesToShowHighlightsChip=1),this.$ctx.parents().find(".ajax-productlist-one-popovers .m-popover").attr("tabindex",-1),this.$ctx.parents().find(".ajax-productlist-one-popovers .m-popover .popover-arrow").attr("tabindex",-1),this.$ctx.parents().find(".ajax-productlist-one-popovers .m-popover .popover-header,.ajax-productlist-one-popovers .m-popover .popover-header .popover-close").attr("tabindex",-1),this.$ctx.parents().find(".ajax-productlist-one-popovers .m-popover .popover-content a").attr("tabindex",-1),this.$ctx.find(".keybenefits-wrapper .m-popover").attr("tabindex",-1),this.$ctx.find(".keybenefits-wrapper .m-popover .popover-header").attr("tabindex",-1),this.slidesToScroll=1,this.slickInitializer=T.Utils.debounce(()=>{this.initSlick(),this.initSlickHighlights()},200),this.$arrowUp=this.$tileContainer.find(".js-up-arrow"),this.arrowDown=this.$ctx.find(this.$arrowDown),this.arrowDown.on("click",()=>this.toggleKeyBenefitsArea()),this.arrowDown.on("keyup",event=>{13===event.keyCode&&this.toggleKeyBenefitsArea()}),this.triggerAjaxOnEnter=this.$ctx.find(this.$triggerAjaxOnEnter),this.triggerAjaxOnEnter.on("keyup",(event,elem)=>{13===event.keyCode&&$(event.target).click()}
7),this.triggerAjaxOnEnter.on("keydown",(event,elem)=>{9===event.keyCode&&this.addTabIndexForAccessibility()}),this.$thumbnailProductImage.on("click",ev=>this.thumbnailImageClicked(ev,!0)),this.$thumbnailProductImage.on("mouseover",ev=>this.thumbnailImageClicked(ev,!0)),this.$awardimage.on("click",ev=>this.awardimageClicked(ev)),this.arrowUp=this.$ctx.find(this.$arrowUp),this.arrowUp.on("click",()=>this.toggleKeyBenefitsArea()),this.arrowUp.on("keyup",event=>{13===event.keyCode&&this.toggleKeyBenefitsArea()}),this.equalizeHeights=T.Utils.debounce(()=>{this.productTileEqualizeHeights()},1e3),this._events.on("t.sync",()=>this.sync()),this.$loadMoreButton.on("click",()=>this.onClickLoadMore()),this.$highlightsChips.on("swipe",()=>this.onSwipe()),this.$addToCart.on("click keypress",ev=>this.addToCartPrecheck(ev)),this.$onlineDealerLayer.on("click",ev=>this.onlineDealerLayer(ev)),this.$getKeyBenefitsPopover=this.$ctx.find(".js-copi-key-click"),this.$getKeyBenefitsPopover.on("click",ev=>this.getKeyBenefitsPopover(ev)),this._events.on("productTile:EquilizeHeight",()=>this.productTileEqualizeHeights()),this.equalizeHeights=T.Utils.debounce(()=>{this.productTileEqualizeHeights()},3e3),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.debounce(this.slickInitializer(),200),T.Utils.debounce(this.equalizeHeights(),200),this._events.on("loadMoreRebrushPLP",()=>this.loadMoreExpandableArea())),this.whereToBuyButton()},whereToBuyButton(){const that=this;$.each(this.$productTileRebrush,function(){const buttonWrapper=that.$buttonWrapper,onlineDealerLayer=$(buttonWrapper).children("div").children(that.$onlineDealerLayer),addToCart=$(buttonWrapper).children("form").children(that.$addToCart),button=$(buttonWrapper).children("form").children("button");(button.is("[disabled=disabled]")||onlineDealerLayer.length>0&&0===addToCart.length&&0===button.length)&&onlineDealerLayer.removeClass("a-button-secondary").addClass("a-button-primary")})},toggleKeyBenefitsArea(){let currentContextExpandableRows=this.calculateExpandablePerRow();$.each(currentContextExpandableRows,function(index,val){$(val.querySelector(".js-keybenefits")).toggleClass("keybenefits"),$(val.querySelector(".js-down-arrow")).toggleClass("hidden"),$(val.querySelector(".js-up-arrow")).toggleClass("hidden"),$(val.querySelector(".product-expandable-icon-area")).toggleClass("toggle-bottom")}),this.$keyWrap.find("li").toggleClass("expandable-area-fadeIn-fadeOut"),this.productTileEqualizeHeights()},awardimageClicked(ev){this.$tileContainer.find(".awards-popover").each(function(i,obj){$(obj).hasClass("is-active")&&this.$tileContainer.find(".awards-popover, .awards-popover .popover-header, .awards-popover .popover-content").attr("tabindex",0)})},thumbnailImageClicked(ev,clickValue){const currentTargetImage=$(clickValue?ev.currentTarget:ev),mainImageContainer=currentTargetImage.parents(".product-image").find(".product-main-image-container");let oldImage,imageLinks=$(mainImageContainer.children()),imageToBeshown=null;for(let i=0;i<imageLinks.length;i++)imageLinks[i].dataset.mainImage==currentTargetImage.data("thumbImage")&&(imageToBeshown=imageLinks[i]),$(imageLinks[i]).hasClass("hidden")||(oldImage=imageLinks[i]);if(currentTargetImage.data("thumbImage")!=(oldImage&&oldImage.dataset.mainImage)){$(imageToBeshown).find(".a-image").addClass("fadeIn").removeClass("fadeOut"),$(oldImage).addClass("hidden"),$(oldImage).find(".a-image").addClass("fadeOut").removeClass("fadeIn"),$(imageToBeshown).removeClass("hidden"),currentTargetImage.parent().find(".highlight").removeClass("highlight"),currentTargetImage.addClass("highlight")}},onClickLoadMore(){this.$productTileRebrush.removeClass("hidden"),this.$loadMoreButton.addClass("hidden")},onSwipe(){this.trackHighlightsChips&&(T.Utils.getLayout().trackValues("technical labels swiped",{}),this.trackHighlightsChips=!1)},productTileEqualizeHeights(){const $oldItems=this.$oldItems||$(),$items=this.findListItems();if($items.not($oldItems).length>0){let $itemsToApplyEqualHeight;this.$oldItems=$items,$itemsToApplyEqualHeight=$items;let tempArray=this.createItemHeightMatchingGroups($itemsToApplyEqualHeight),groups=[];const groupOptions={byRow:!0,property:"height",target:null,remove:!1,apply:!1};this.removeOldGroupsFromMatchHeight(),$.each(tempArray,(index,itemGroup)=>{$(itemGroup).matchHeight(groupOptions),groups.push({elements:itemGroup,options:groupOptions})}),this.oldGroups=groups}if(this.oldGroups){const consider_parents=!0;$.fn.matchHeight._applyByGroups(this.oldGroups,consider_parents)}},findListItems(){return this.$tileContainer.find(".js-o-producttilerebrush")},createItemHeightMatchingGroups:$itemsToApplyEqualHeight=>[$itemsToApplyEqualHeight.find(".js-campaign-title"),$itemsToApplyEqualHeight.find(".js-product-promotion-wrapper"),$itemsToApplyEqualHeight.find(".js-product-code"),$itemsToApplyEqualHeight.find(".js-product-title"),$itemsToApplyEqualHeight.find(".js-product-section"),$itemsToApplyEqualHeight.find(".js-product-awards"),$itemsToApplyEqualHeight.find(".js-title-heading"),$itemsToApplyEqualHeight.find(".js-product-expandable-area"),$itemsToApplyEqualHeight.find(".js-product-highlights"),$itemsToApplyEqualHeight.find(".js-product-main-image-container"),$itemsToApplyEqualHeight.find(".js-price"),$itemsToApplyEqualHeight.find(".js-brandsection-wrapper"),$itemsToApplyEqualHeight.find(".js-product-cta-area"),$itemsToApplyEqualHeight.find(".js-comparison-wrapper")],removeOldGroupsFromMatchHeight(){this.oldGroups&&$.each(this.oldGroups,(index,oldGroup)=>{$(oldGroup.elements).matchHeight({remove:!0})})},initSlick(){this.$awardSlider.not(".slick-initialized").slick({speed:300,dots:!1,focusOnSelect:!1,arrows:!1,slidesToShow:this.slidesToShowAwardSlider,slidesToScroll:this.slidesToScroll,autoplay:!1,infinite:!1,variableWidth:!0})},initSlickHighlights(){this.$highlightsChips.not(".slick-initialized").slick({speed:300,dots:!1,focusOnSelect:!1,arrows:!1,slidesToShow:this.slidesToShowHighlightsChip,slidesToScroll:this.slidesToScroll,autoplay:!1,infinite:!1,variableWidth:!0}),this.$highlightsChips.find(".chip").removeClass("hiddenChips")},loadMoreExpandableArea(){let keyWrapClassBefore=this.$tileContainer.find(".js-keybenefits").last().hasClass("keybenefits");this.$tileContainer.find(".js-keybenefits").first().hasClass("keybenefits")&&keyWrapClassBefore||(this.$keyWrap.removeClass("keybenefits"),this.$arrowDown.addClass("hidden"),this.$arrowUp.removeClass("hidden"),this.$keyIconWrap.removeClass("toggle-bottom"))},addTabIndexForAccessibility(){if(this.$tileContainer.find(".hotstorypopover")){var highlightContent=".hotstorypopover , .hotstorypopover .popover-header , .hotstorypopover .popover-content h2 , .hotstorypopover .popover-content .a-image , .hotstorypopover .popover-content p ";this.$tileContainer.find(".hotstorypopover").each(function(i,obj){$(obj).hasClass("is-active")?this.$tileContainer.find(highlightContent).attr("tabindex",0):this.$tileContainer.find(highlightContent).attr("tabindex",-1)})}},addToCartPrecheck(ev){ev.preventDefault()},getKeyBenefitsPopover(ev){const ajaxContainer=$($(ev.currentTarget)[0].parentElement),ajaxId=ajaxContainer.data("ajaxId"),ajaxObj=ajaxContainer.data("ajax");T.Utils.startAjaxRequest(ajaxId,ajaxObj,null,null,()=>{$(document).trigger("footnotes:initreplacement")})},onlineDealerLayer(ev){ev.preventDefault();const config=$(ev.currentTarget).data();return config.eventName="onlinedealerbutton:click",this._events.emit("onlinedealerbutton:click",config)},calculateExpandablePerRow(){let parentOfProductTiles=this.$ctx.parent(),listOfProductTilesAfterFilterTeaser=[],listOfProductTilesBeforeFilterTeaser=[],withOutHiddenChildren=[],indexOfClickedTileWithParentContainer=0;const tileCountBeforeFilterTeaser=parentOfProductTiles.children(".js-filter-teaser").not(".m-youreko-assistant").prevAll().length-1;return parentOfProductTiles.children(".js-filter-teaser").not(".m-youreko-assistant").length>0&&!parentOfProductTiles.children(".js-filter-teaser").not(".m-youreko-assistant").hasClass("hidden")?parentOfProductTiles.children().not(".m-youreko-assistant").index(this.$ctx)<=tileCountBeforeFilterTeaser?(listOfProductTilesBeforeFilterTeaser.push(parentOfProductTiles.children(".js-filter-teaser").not(".m-youreko-assistant").prevAll().not(".hidden")),listOfProductTilesBeforeFilterTeaser=Array.from(listOfProductTilesBeforeFilterTeaser[0]).reverse(),indexOfClickedTileWithParentContainer=$(listOfProductTilesBeforeFilterTeaser).index(this.$ctx),this.expandProductTilesPerRow(listOfProductTilesBeforeFilterTeaser,indexOfClickedTileWithParentContainer)):(listOfProductTilesAfterFilterTeaser.push(parentOfProductTiles.children(".js-filter-teaser").not(".m-youreko-assistant").nextAll()),indexOfClickedTileWithParentContainer=listOfProductTilesAfterFilterTeaser[0].index(this.$ctx),this.expandProductTilesPerRow(listOfProductTilesAfterFilterTeaser[0],indexOfClickedTileWithParentContainer)):(withOutHiddenChildren.push(parentOfProductTiles.children().not(".hidden").not(".js-filter-teaser").not(".m-youreko-assistant")),indexOfClickedTileWithParentContainer=withOutHiddenChildren[0].index(this.$ctx),this.expandProductTilesPerRow(withOutHiddenChildren[0],indexOfClickedTileWithParentContainer))},expandProductTilesPerRow(productTiles,indexOfClickedTileWithParentContainer){const viewport=T.Utils.getViewport();if("desktop"===viewport){let moduleIndexValue=indexOfClickedTileWithParentContainer%3;return 0===moduleIndexValue?[...this.$ctx,...$(productTiles[indexOfClickedTileWithParentContainer+1]),...$(productTiles[indexOfClickedTileWithParentContainer+2])]:1===moduleIndexValue?[...this.$ctx,...$(productTiles[indexOfClickedTileWithParentContainer-1]),...$(productTiles[indexOfClickedTileWithParentContainer+1])]:[...this.$ctx,...$(productTiles[indexOfClickedTileWithParentContainer-1]),...$(productTiles[indexOfClickedTileWithParentContainer-2])]}if("tablet"===viewport){return 0===indexOfClickedTileWithParentContainer%2?[...this.$ctx,...$(productTiles[indexOfClickedTileWithParentContainer+1])]:[...this.$ctx,...$(productTiles[indexOfClickedTileWithParentContainer-1])]}return[...this.$ctx]}})}(jQuery),function($){T.Module.ProductTilesSlider=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.$tilesSlider=this.$ctx.find(".tiles-slider"),this.slideCount=this.$tilesSlider.find(".js-producttile").length,this.$paginationArrows=this.$ctx.find(".producttile-slider-arrows"),this.$prevArrow=this.$paginationArrows.find(".prev"),this.$nextArrow=this.$paginationArrows.find(".next"),this.slideCount>3?this.slidesToShowDesktop=3.5:this.slidesToShowDesktop=3,this.slidesToShowDesktop=this.$ctx.data("slides-to-show-desktop")||3.75,this.slidesToShowMobile=this.$ctx.data("slides-to-show-mobile")||1.5,this.slidesToShowTablet=this.$ctx.data("slides-to-show-tablet")||2.75,this.slidesToScrollDesktop=Math.floor(this.slidesToShowDesktop),this.slidesToScrollMobile=Math.floor(this.slidesToShowMobile),this.slidesToScrollTablet=Math.floor(this.slidesToShowTablet),this.initSlick(),resolve()},initSlick(){this.hidePaginationArrows(),this.$tilesSlider.not(".slick-initialized").slick({infinite:!1,speed:300,dots:this.slideCount>this.slidesToScrollDesktop,arrows:this.slideCount>this.slidesToScrollDesktop,focusOnSelect:!1,appendArrows:this.$paginationArrows,prevArrow:this.$prevArrow,nextArrow:this.$nextArrow,slidesToShow:this.slidesToShowDesktop,slidesToScroll:this.slidesToScrollDesktop,responsive:[{breakpoint:900,settings:{slidesToShow:this.slidesToShowTablet,slidesToScroll:this.slidesToScrollTablet,dots:this.slideCount>this.slidesToScrollTablet}},{breakpoint:600,settings:{slidesToShow:this.slidesToShowMobile,slidesToScroll:this.slidesToScrollMobile,dots:this.slideCount>this.slidesToScrollMobile}}]})},hidePaginationArrows(){(!T.Utils.isViewport("desktop")||this.slideCount<=this.slidesToScrollDesktop)&&this.$paginationArrows.hide()}})}(jQuery),function($){T.Module.RecommendedProducts=T.createModule({start(resolve){return this.isSynced=!1,this.$ctx=$(this._ctx),this.recommendedProductsAjaxId=this.$ctx.data("ajax-id"),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){return this.isSynced||this.recommendedProductsAjaxId&&T.Utils.startAjaxRequest(this.recommendedProductsAjaxId),this.isSynced=!0,this.isSynced}})}(jQuery),function($){T.Module.RetailerReviewContainer=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.$retailerRatingReviews=$(".js-retailer-rating-reviews"),this.$bvReviewHeading=$(".js-bv-review-heading"),this.tabId=this.$ctx.data("tab-id"),this.retailerReviewsAjaxId=this.$ctx.data("ajax-id"),this.$retailerReviewsContainerSelector=this.$ctx.find("#retailerReviews"),this._events.on("showRetailerReviews",()=>this.scrollToRetailerReviews()),this._events.on("t.sync",()=>this.sync()),this._events.on("loadTab:reviews",data=>this.loadRetailerReview(data)),resolve()},sync(){return this._events.emit("ifRetailerReviewsPresent"),this.isSynced=!0,this.isSynced},loadRetailerReview(data){this.retailerReviewsAjaxId&&this.getRetailerReviews(data)},getRetailerReviews(data){const request=T.Utils.startAjaxRequest(this.retailerReviewsAjaxId);request&&request[0]&&request[0].done(response=>{this._events.emit("loader:close",{$trigger:this.$ctx}),response&&response.ratingSummary&&(response.ratingSummary.length>0?(this.displayRetailerReviewLink(),this.displayBVReviewHeader(),data.triggerEventTracking&&this._events.emit("addTrackValuesToTab",{trackTabId:this.tabId,trackType:"tab open",trackvar:"external_retailer_ratings",trackValue:"true"})):data.triggerEventTracking&&this._events.emit("addTrackValuesToTab",{trackTabId:this.tabId,trackType:"tab open"}))})},displayRetailerReviewLink(){this.$retailerRatingReviews&&this.$retailerRatingReviews.show()},displayBVReviewHeader(){this.$bvReviewHeading&&this.$bvReviewHeading.show()},scrollToRetailerReviews(){this.openReviewTabRetailerReviews(),setTimeout(()=>{const stickyTab=document.getElementsByClassName("tabs-slider");T.Utils.scrollToTop($(this.$retailerReviewsContainerSelector).offset().top-Math.max(4*stickyTab[0].offsetHeight,150))},100)},openReviewTabRetailerReviews(){return this._events.emit("openTabToggleBox",{tabId:this.tabId,scrollToTab:!1,$parent:$(document)})}})}(jQuery),function($){T.Module.Review=T.createModule({start(resolve){if(this.$ctx=$(this._ctx),this.ioBlackBoxId=this.$ctx.data("io-blackbox-id"),this.$reviewText=$(".js-trigger-review-guidelines",this.$ctx),this.$popoverContainer=$('*[data-id="popOverLink-additional-info"]',this.$ctx),this.$sweepstakeButton=$("#form-button-sweepstake",this.$ctx),this.$noSweepstakeButton=$("#form-button-nosweepstake",this.$ctx),this.$radioButtons=$("input[type=radio][name=values\\[\\'contextdatavalue_IncentivizedReview\\'\\]]",this.$ctx),questionsContainer=$("#questions-container",this.$ctx),this.ioBlackBoxId&&this.ioBlackBoxId.length>0&&T.Commons.ScriptLoader.loadOnceIovationLibrary(this.ioBlackBoxId),this.$popoverContainer.length>0){new MutationObserver(function(mutations){mutations.forEach(function(mutation){if("class"===mutation.attributeName){$(mutation.target).prop(mutation.attributeName).includes("is-active")?questionsContainer.addClass("questions-highlighted"):questionsContainer.removeClass("questions-highlighted")}})}).observe(this.$popoverContainer[0],{attributes:!0})}return this.$radioButtons.length>0?this.$sweepstakeButton.removeClass("hidden"):this.$noSweepstakeButton.removeClass("hidden"),this.$radioButtons.on("change",ev=>this.onRadioChange(ev)),this.$reviewText.on("focus",()=>this.onFocusReviewText()),resolve()},sync(){},onFocusReviewText(){return this._events.emit("review:openReviewTextGuidelines")},setQuestionsContainerHighlight(){console.log("CSS Change"),this.$popoverContainer.hasClass("is-active")?this.$questionsContainer.removeClass("highlight"):this.$questionsContainer.addClass("highlight")},onRadioChange(ev){"true"==ev.target.value?(this.$sweepstakeButton.removeClass("hidden"),this.$noSweepstakeButton.addClass("hidden")):"false"==ev.target.value&&(this.$sweepstakeButton.addClass("hidden"),this.$noSweepstakeButton.removeClass("hidden"))}})}(jQuery),function($){T.Module.ReviewContainer=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.$links=this.$ctx.find(".js-morelesslink"),this.$links.on("click",ev=>this.fetchOpenLink(ev)),this._events.on("t.sync",()=>this.sync()),reso
7lve()},sync(){this.isSynced||(this.isSynced=!0)},fetchOpenLink(ev){if(!$(ev.currentTarget).hasClass("is-open")){const $link=this.$ctx.find(".js-morelesslink.is-open");if($link.length>0)return void this.closeMoreLessLink($link)}},closeMoreLessLink($link){this._events.emit("moreless:close",{$link:$link,notransition:!1})}})}(jQuery),function($){T.Module.ReviewDisplay=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.intialReviewTabOpen=!1,this.requestobj={obj:this.$ctx},this.ratingDistribution={},this.totalReviewCount=0,this.averageOverallRating=0,this.tabId=this.$ctx.data("tab-id"),this.reviewsAjaxId=this.$ctx.data("ajax-id"),this.reviewsAjax=this.$ctx.data("ajax"),this.$loadMoreReviewButton=this.$ctx.find(".js-loadmore-review-button"),this.limit=this.$ctx.data("limit"),this.currentPage=this.$ctx.data("current-page"),this.scrollFilterButton=document.getElementById("scrollToFilter"),this.$scrollButton=this.$ctx.find(".scrollToFilterButton"),this.$noReviewContainer=this.$ctx.find(".js-filter-no-result"),this.$reviewSection=$(".js-review-section"),this.totalReviews=null,this.totalPage=0,this.secondaryRatingsObject=null,this.reviewFilterArray=[],this.reviewsCountTracking=0,this.totalQuestionCount=0,this.totalAnswerCount=0,this.disableIncentivised=!1,this.showIncentivised=!1,this.showLocale=!1,this.reviewStatistics={},this.localizedFilterValues={},this.ageFilterVal=[],this.usageFrequencyFilterVal=[],this.householdFilterVal=[],this.cookingExpertiseFilterVal=[],this.responsForselectedFilter=[],window.onscroll=(()=>this.scrollFunction()),this._events.on("review:filter",data=>this.callUpdatedAjaxForReviews(data)),this._events.on("review:filterReset",ev=>this.onResetFilterClick(ev)),this._events.on("loadTab:reviews",()=>this.intialReviewTabLoad()),this._events.on("reviewcloseicon:clicked",()=>this.reviewCloseIconClicked()),this.$loadMoreReviewButton.on("click",()=>this.onClickLoadMore()),this._events.on("scrollToTab:review",()=>this.openAndScrollToReviewTab()),this._events.on("scrollToReviewSection",()=>this.openReviewSection()),this._events.on("isAPIBasedBVReviews",()=>this.triggerReviewTracking()),this._events.on("isAPIBasedBVQuestions",()=>this.triggerQuestionsTracking()),this.$scrollButton.on("click",ev=>this.onClickScrollButton(ev)),this._events.emit("reviews:isReady"),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},intialReviewTabLoad(){this.intialReviewTabOpen||(this.startAjaxForReviews(),this.intialReviewTabOpen=!0)},startAjaxForReviews(){const request=T.Utils.startAjaxRequest(this.reviewsAjaxId,this.reviewsAjax);request&&request[0]&&request[0].done(response=>{if(response&&response.totalResults){this.ratingDistribution=response.reviewStatistics.ratingDistribution,this.totalReviewCount=response.totalReviewCount,this.totalReviews=response.totalResults,this.secondaryRatingsObject=response.reviewStatistics.secondaryRatingsAverages,this.averageOverallRating=response.averageOverallRating,this.totalQuestionCount=response.totalQuestionCount,this.totalAnswerCount=response.totalAnswerCount,this.reviewStatistics=response.reviewStatistics,this.localizedFilterValues=response.localizedFilterValues,this.filterValueMap(response.localizedFilterValues),!1===response.incentivisedToggleHidden&&(this.showIncentivised=!0),!1===response.localeToggleHidden&&(this.showLocale=!0),response.allFiltervalues={ageFilter:this.ageFilterVal,usageFrequencyFilter:this.usageFrequencyFilterVal,householdFilter:this.householdFilterVal,cookingExpertiseFilter:this.cookingExpertiseFilterVal};const localstorageData={reviewStatistics:response.reviewStatistics,productReviewDataList:response.productReviewDataList,allLocalesCountryFlag:response.allLocalesCountryFlag,filters:response.filters,showCachedSelectedReviews:!0,totalResults:response.totalResults,showCachedReviews:!0};T.Utils.localStorageSetItem("cachedfilters",localstorageData),response.showLocale=this.showLocale,response.disableIncentivised=this.disableIncentivised,response.showIncentivised=this.showIncentivised,response.loadMoreClicked=!1,this.showLoadMore()}this.renderResponeToTemplate(this.requestobj,response,"replace"),this.$filter=this.$ctx.find(".js-select-filter"),this.$filter.on("select2:open",()=>{setTimeout(()=>{this.$ctx.find("span.filterDisable").closest("li").addClass("disableReviewOption")},10)}),this.createSchema(response)})},filterValueMap(allFilterData){const data=this;Object.keys(allFilterData).map(function(key){key.includes("Age")&&data.ageFilterVal.push(allFilterData[key]),key.includes("UsageFrequency")&&data.usageFrequencyFilterVal.push(allFilterData[key]),key.includes("Household")&&data.householdFilterVal.push(allFilterData[key]),key.includes("CookingExpertise")&&data.cookingExpertiseFilterVal.push(allFilterData[key])})},onClickLoadMore(){let $pageOffset=this.$ctx.find(".js-offSet");const offsetValue=this.limit*this.currentPage;let searchValue=this.$ctx.find(".js-search-input").val().trim(),searchInput=this.$ctx.find(".js-search");searchValue&&searchInput.val(searchValue),$pageOffset.val(offsetValue);const request=T.Utils.startAjaxRequest(this.reviewsAjaxId,this.reviewsAjax
7);request&&request[0]&&request[0].done(response=>{if(response){response.allFiltervalues={ageFilter:this.ageFilterVal,usageFrequencyFilter:this.usageFrequencyFilterVal,householdFilter:this.householdFilterVal,cookingExpertiseFilter:this.cookingExpertiseFilterVal},response.loadMoreClicked=!0,this.renderResponeToTemplate(this.requestobj,response,"append"),this.currentPage=this.currentPage+1,this.showLoadMore();let $filterbarLastReviewCount=this.$ctx.find(".js-last-review-index");const pageOffsetValue=parseInt($pageOffset.val());if(response.totalResults>pageOffsetValue+this.limit){const lastIndex=response.offset+this.limit;$filterbarLastReviewCount.html(lastIndex)}else{const lastIndex=response.totalResults;$filterbarLastReviewCount.html(lastIndex)}this.reviewsCountTracking=this.reviewsCountTracking+(response.productReviewDataList&&response.productReviewDataList.length);const loadMoreTrackingObject={review_filter_result_shown:this.reviewsCountTracking};T.Utils.getLayout().trackValues("review load more",loadMoreTrackingObject),this.updateSchema(response,"loadmore")}})},reviewCloseIconClicked(){this.$ctx.find(".js-filter-no-result").css("display","none")},showLoadMore(){this.totalPage=Math.ceil(this.totalReviews/this.limit),this.currentPage<this.totalPage?this.$loadMoreReviewButton.removeClass("hidden"):this.$loadMoreReviewButton.addClass("hidden")},callUpdatedAjaxForReviews(data){let $offset=this.$ctx.find(".js-offSet");this.$noReviewContainer.css("display","block"),$offset.val(0);let $reviewItemContainer=this.$ctx.find(".js-review-item-container"),$reviewWrapperContainer=this.$ctx.find(".js-review-wrapper-container"),$noreviewWrapper=this.$ctx.find(".js-noreview-wrapper");const $reviewFilterbarContainer=this.$ctx.find(".js-review-filterbar-container");0!==$reviewFilterbarContainer.length?T.Utils.scrollToTop($reviewFilterbarContainer):T.Utils.scrollToTop($reviewWrapperContainer),this.reviewsCountTracking=this.limit,this.currentPage=1,this.appliedFilter="";const ajaxrequest=T.Utils.startAjaxRequest(this.reviewsAjaxId,this.reviewsAjax);ajaxrequest&&ajaxrequest[0]&&ajaxrequest[0].done(response=>{if(response){if(response.showCachedReviews=!1,response.showCachedSelectedReviews=!1,this.responsForselectedFilter=response.productReviewDataList,response.productReviewDataList){const localStorageReviews=T.Utils.localStorageGetItem("cachedfilters");localStorageReviews.productReviewDataList=response.productReviewDataList,localStorageReviews.filters=response.filters,localStorageReviews.totalResults=response.totalResults,localStorageReviews.allLocalesCountryFlag=response.allLocalesCountryFlag,T.Utils.localStorageSetItem("cachedfilters",localStorageReviews)}else{const cachedReviews=T.Utils.localStorageGetItem("cachedfilters");response.productReviewDataList=cachedReviews.productReviewDataList,response.totalResults=cachedReviews.totalResults,response.allLocalesCountryFlag=cachedReviews.allLocalesCountryFlag,response.filters=cachedReviews.filters,response.showCachedReviews=cachedReviews.showCachedReviews,response.showCachedSelectedReviews=cachedReviews.showCachedSelectedReviews}if(null!==response.reviewStatistics&&(response.reviewStatistics.modifiedRatingDistribution=this.ratingDistribution),0===response.totalReviewCount)response.reviewStatistics=this.reviewStatistics,response.localizedFilterValues=this.localizedFilterValues;else if(T.Utils.localStorageGetItem("cachedfilters")){const selectedFilters=T.Utils.localStorageGetItem("cachedfilters");response.reviewStatistics=selectedFilters.reviewStatistics}else this.reviewStatistics=response.reviewStatistics;response.totalReviewCount=this.totalReviewCount,response.averageOverallRating=this.averageOverallRating,response.totalQuestionCount=this.totalQuestionCount,response.totalAnswerCount=this.totalAnswerCount,"toggleFilter"!==data.component&&"filterModal"!==data.component&&!0===this.showIncentivised&&(response.incentivisedToggleHidden?(this.appliedFilter=data.name,response.nonIncentivisedReview&&(response.filters.contextDataValueIncentivizedReviewDisabled=!0),this.disableIncentivised=!0):this.disableIncentivised=!1),""!==this.appliedFilter&&"singleReset"===data.type&&data.name===this.appliedFilter&&(this.disableIncentivised=!1),response.allFiltervalues={ageFilter:this.ageFilterVal,usageFrequencyFilter:this.usageFrequencyFilterVal,householdFilter:this.householdFilterVal,cookingExpertiseFilter:this.cookingExpertiseFilterVal},response.showLocale=this.showLocale,response.disableIncentivised=this.disableIncentivised,response.showIncentivised=this.showIncentivised,response.loadMoreClicked=!1;const viewport=T.Utils.getViewport();let renderResponse=!1;if((this.responsForselectedFilter||!this.responsForselectedFilter&&"mobile"!==viewport||!this.responsForselectedFilter&&"mobile"===viewport&&"filterModal"!==data.component)&&(renderResponse=!0,"mobile"===viewport&&this._events.emit("closeModal:reviews")),renderResponse?this.renderResponeToTemplate(this.requestobj,response,"replace"):this._events.emit("openLayer:NoreviewsForFilter"),this.$filter=this.$ctx.find(".js-select-filter"),this.$filter.on("select2:open",()=>{setTimeout(()=>{this.$ctx.find("span.filterDisable").closest("li").addClass("disableReviewOption")},10)}),this.$ctx.find(".js-reset-filter-button").on("click",ev=>this.onResetFilterClick(ev)),this.totalReviews=response.totalResults,this.trackingReviews(data,this.totalReviews),renderResponse)if(this.totalReviews>0)$reviewWrapperContainer.empty();else{if(response.filters.secondaryRating.length>0){let $secondaryRatingEl=this.$ctx.find('[data-filtername="secondaryRating"]');$.each($secondaryRatingEl,(index,el)=>{console.log("el",el);const secondaryRatingLabel=this.secondaryRatingsObject[$(el).data("filtervalue")].label;$(el).find(".text").text(secondaryRatingLabel)})}$reviewItemContainer.empty(),$noreviewWrapper&&$noreviewWrapper.empty(),this.$ctx.find(".js-starting-review-index").html(0),this.$ctx.find(".js-last-review-index").html(0),this.$ctx.find(".js-total-review-count").html(0)}this.showLoadMore(),this.updateSchema(response,"filter")}})},onResetFilterClick(ev){let $filters=this.$ctx.find(".js-filter-input");for(let i=0;i<$filters.length;i++)"contextDataValueIncentivizedReviewDisabled"===$filters[i].id||"localeDisabled"===$filters[i].id?$filters[i].value=!1:$filters[i].value="";this.callUpdatedAjaxForReviews(ev)},updateSchema(BVResponse,calledFrom){var productData=document.getElementById("product-data").textContent;if(productData=JSON.parse(productData),null!=BVResponse&&null!=BVResponse.productReviewDataList&&BVResponse.productReviewDataList.length>0){"filter"===calledFrom&&(productData.review=[]),productData.review=this.addReviewData(BVResponse,productData.review);let updatedProductObject=JSON.stringify(productData);document.getElementById("product-data").textContent=updatedProductObject}},createSchema(BVResponse){var productData=document.getElementById("product-data").textContent;if(productData=JSON.parse(productData),null!=BVResponse&&null!=BVResponse.productReviewDataList&&BVResponse.productReviewDataList.length>0){let reviewSchema={review:[]};reviewSchema.review=this.addReviewData(BVResponse,reviewSchema.review);const mergedObject={...productData,...reviewSchema};let updatedProductObject=JSON.stringify(mergedObject);document.getElementById("product-data").textContent=updatedProductObject}},addReviewData(BVResponse,review){for(let i=0;i<BVResponse.productReviewDataList.length;i++){const reviewData=BVResponse.productReviewDataList[i];let reviewObject={"@type":"Review",dateCreated:reviewData.submissionTime.date,datePublished:reviewData.lastSubmissionTime.date,headline:reviewData.title,reviewBody:reviewData.text,reviewRating:{"@type":"Rating",ratingValue:reviewData.rating,bestRating:5},author:{"@type":"Person",name:reviewData.nickName},image:[],comment:[]};if(reviewData.photos&&reviewData.photos.length)for(let index=0;
7index<reviewData.photos.length;index++)reviewObject.image.push(reviewData.photos[index].Sizes.normal.Url);if(reviewData.clientResponses)for(let index=0;index<reviewData.clientResponses.length;index++)reviewObject.comment.push(reviewData.clientResponses[index]);review.push(reviewObject)}return review},openAndScrollToReviewTab(BVcontainer){if(this.openReviewTab(),BVcontainer)T.Utils.scrollToTop($(BVcontainer));else{const stickyTab=document.getElementsByClassName("tabs-slider");stickyTab.length>0?T.Utils.scrollToTop($(this.$reviewSection).offset().top-Math.max(3*stickyTab[0].offsetHeight,150)):T.Utils.scrollToTop($(this.$ctx).offset().top-200)}},openReviewSection(BVcontainer){if(BVcontainer)T.Utils.scrollToTop($(BVcontainer));else{const stickyTab=document.getElementsByClassName("tabs-slider");stickyTab.length>0?T.Utils.scrollToTop($(this.$reviewSection).offset().top-Math.max(3*stickyTab[0].offsetHeight,150)):T.Utils.scrollToTop($(this.$ctx).offset().top-200)}},openReviewTab(){return this._events.emit("openTabToggleBox",{tabId:this.tabId,scrollToTab:!1,$parent:$(document)})},scrollFunction(){const viewport=T.Utils.getViewport();let containerElem=document.querySelector(".js-review-item-container"),filterContainerElem=document.querySelector(".js-review-FilterBar-Layer");null==containerElem||"mobile"!==viewport&&"tablet"!==viewport||(T.Utils.isInViewport(containerElem)?T.Utils.isInViewport(filterContainerElem)?this.scrollFilterButton.style.display="none":this.scrollFilterButton.style.display="block":this.scrollFilterButton.style.display="none")},onClickScrollButton(ev){ev.preventDefault(),T.Utils.scrollToTop($(".js-review-FilterBar-Layer").offset().top-210)},trackingReviews(data,reviewCount){return this.trackingReviews(data,reviewCount)},renderResponeToTemplate(request,response,addMethod){const template=$("<div/>").html(T.Utils.renderTemplateMarkup(request,response,!1)),key=this.$ctx.find("[data-replace-container]").data("replace-container");T.Utils.syncContent(template,key,addMethod)},triggerReviewTracking(){T.Utils.getLayout().trackValues("read product reviews",{})},triggerQuestionsTracking(){T.Utils.getLayout().trackValues("read product questions",{})}})}(jQuery),function($){T.Module.SearchResultContentSection=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$loadMoreBtn=this.$ctx.find(".load-more"),this.currentItemsVisible=0,this.itemsPerRequest=6,this.pageNumber=1,this.$serviceSectionTemplate=this.$ctx.find(".searchresult-content-section"),this.serviceSectionDotTemplate=this.$serviceSectionTemplate.length&&doT.template(this.$serviceSectionTemplate.html()),this.updateHeights=T.Utils.debounce(()=>$.fn.matchHeight._update(),200),this.$loadMoreBtn.on("click",e=>{e.preventDefault(),this.getContent()}),this._events.on("viewportChanged",()=>this.equalizeHeights()),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.getContent())},getContent(){const request=T.Utils.startAjaxRequest(this.$ctx.data("ajax-id"),null,{from:this.currentItemsVisible,max:this.itemsPerRequest,pageNumber:this.pageNumber},null,()=>{request[0].done(res=>{this.currentItemsVisible=this.currentItemsVisible+this.itemsPerRequest,this.pageNumber=this.pageNumber+1,this.toggleLoadMoreBtnVisibility(res),this.equalizeHeights(),$(document).trigger("searchheader:jumptoanchor")})});request[0].fail(()=>{const $templateMarkup=$("<div/>").html(T.Utils.renderTemplateMarkup({},{},!0,this.$ctx));T.Utils.syncContent($templateMarkup,null,null,!1,null)})},toggleLoadMoreBtnVisibility(json){let total;json.result&&(total=json.result.hits.total),json.response&&(total=json.response.totalResultCount),total&&(total<=this.currentItemsVisible?this.$loadMoreBtn.addClass("hidden"):this.$loadMoreBtn.removeClass("hidden"))},equalizeHeights(){const contentElements=this.$ctx.find(".searchresult-content").children();$.fn.matchHeight._throttle=240,this.oldContentElements&&(this.oldContentElements.matchHeight({remove:!0}),this.oldContentElements.find("img").off("load",this.updateHeights)),"mobile"!==T.Utils.getViewport()&&(contentElements.matchHeight({byRow:!1}),contentElements.find("img").on("load",this.updateHeights),this.oldContentElements=contentElements)}})}(jQuery),function($){T.Module.ServiceTeaserArea=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,T.Utils.allSynced=!1,this.$img=this.$ctx.find("img"),this._events.on("t.sync",()=>this.sync()),this.$img.on("load",()=>this.onImageLoaded()),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0,this.ro=new ResizeObserver(()=>
7{this.matchTeaserHeights()}),this.$ctx[0]&&this.ro.observe(this.$ctx[0]),T.Utils.debounce(this.matchTeaserHeights(),200))},matchTeaserHeights(){if(T.Utils.isViewport("desktop"))this.matchHeightDebounced(".m-serviceteaser .a-heading"),this.matchHeightDebounced(".m-serviceteaser .content-inner");else if(T.Utils.isViewport("tablet")){const serviceTeaserLength=this.$("> .m-serviceteaser").length;2!==serviceTeaserLength&&4!==serviceTeaserLength||(this.matchHeightDebounced(".m-serviceteaser .a-heading"),this.matchHeightDebounced(".m-serviceteaser .content-inner"))}this.matchHeightDebounced(".m-serviceteaser")},matchHeightDebounced(selector,timeoutInMs){timeoutInMs=timeoutInMs||150,this.debounceMethods=this.debounceMethods||{};let debounceCallback=this.debounceMethods[selector]||null;if(null===debounceCallback){const callback=()=>{this.$ctx.find(selector).matchHeight()};debounceCallback=T.Utils.debounce(callback,timeoutInMs),this.debounceMethods[selector]=debounceCallback}return debounceCallback(),debounceCallback},onImageLoaded(){this.matchTeaserHeights()}})}(jQuery),function($){T.Module.SimilarProductTable=T.createModule({start(resolve){return this.isSynced=!1,this.$ctx=$(this._ctx),this.$inputProductCode=this.$ctx.find(".js-product-code"),this.$compareProduct=this.$ctx.find(".js-compare-product"),this.$productsCompareButton=this.$ctx.find(".js-similar-product-ajax"),this.similarProductsAjaxId=this.$productsCompareButton.data("ajax-id"),this.similarProductsAjax=this.$productsCompareButton.data("ajax"),this.$productsCompareButton.on("click",()=>this.findCompareProductItems()),this.debouncedEqualizeHeights=T.Utils.debounce(()=>{this.originalEqualizeHeights()},200),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){return this.isSynced||T.Utils.debounce(this.debouncedEqualizeHeights(),200),this.$img=this.$ctx.find(".js-product-image img"),this.$img.length>0&&this.$img.on("load",()=>this.onImageLoaded()),this.isSynced=!0,this.isSynced},onImageLoaded(){this.debouncedEqualizeHeights()},originalEqualizeHeights(){const $oldItems=this.$oldItems||$(),$items=this.$ctx.find(".similar-product-item");if($items.not($oldItems).length>0){this.$oldItems=$items;const tempArray=this.createItemHeightMatchingGroups();let groups=[];const groupOptions={byRow:!0,property:"height",target:null,remove:!1,apply:!1};this.removeOldGroupsFromMatchHeight(),$.each(tempArray,(index,itemGroup)=>{$(itemGroup).matchHeight(groupOptions),groups.push({elements:itemGroup,options:groupOptions})}),this.oldGroups=groups}if(this.oldGroups){const consider_parents=!0;$.fn.matchHeight._applyByGroups(this.oldGroups,consider_parents)}},createItemHeightMatchingGroups(){const $productImage=this.$ctx.find(".similar-product-item .js-product-image"),$productTitle=this.$ctx.find(".similar-product-item .js-product-title"),$productRating=this.$ctx.find(".similar-product-item .js-product-rating"),$productCompareHeading=this.$ctx.find(".similar-product-item .js-product-compare-heading"),$productHighlights=this.$ctx.find(".similar-product-item .js-product-highlights");return[$productImage,$productTitle,$productRating,$productCompareHeading,this.$ctx.find(".similar-product-item .js-product-compare-value"),$productHighlights,this.$ctx.find(".similar-product-item .js-product-energy"),this.$ctx.find(".similar-product-item .js-product-price"),this.$ctx.find(".similar-product-item .js-product-detail-link")]},removeOldGroupsFromMatchHeight(){this.oldGroups&&$.each(this.oldGroups,(index,oldGroup)=>{$(oldGroup.elements).matchHeight({remove:!0})})},findCompareProductItems(){let productCodes=[];this.$inputProductCode.each((index,element)=>{productCodes.push(element.value)}),this.similarProductsAjax.data.productCode=JSON.stringify(productCodes);const request=T.Utils.startAjaxRequest(this.similarProductsAjaxId,this.similarProductsAjax);request&&request[0]&&request[0].done(result=>{result&&result.url&&window.location.replace(result.url)})}})}(jQuery),function($){T.Module.TeaserContainer=T.createModule({start(resolve){return this.parseTeaserConfig(),this.calculate(),this.setClasses(),$(window).on("resize",T.Utils.debounce($.proxy(this.onResize,this),50)),this.$("img").on("load",()=>this.onLoadTeaserImage()),this.initTeaser(),resolve()},sync(){},calculate(){this.$teasers=this.$("> .m-teaser"),this.teaserRows=[];let restAmount=this.$teasers.length,configIndex=this.rules.length-1;return(()=>{const result=[];for(;restAmount>0&&configIndex>=0;){const lastRule=this.rules[configIndex],prevRule=this.rules[configIndex-1];let minSum=0,checkFlag=!1;if(lastRule.flex){for(let i=configIndex,asc=configIndex<=0;asc?i<=0:i>=0;asc?i++:i--)minSum+=this.rules[i].amount;for(checkFlag=restAmount%lastRule.amount==0;restAmount>=minSum||checkFlag&&restAmount>0;)this.teaserRows.splice(0,0,lastRule.class),checkFlag=(restAmount-=lastRule.amount)%lastRule.amount==0;if(null==prevRule&&restAmount>0&&restAmount<lastRule.amount&&!this.teaserRows.length){this.teaserRows.splice(0,0,lastRule.class),restAmount-=lastRule.amount;break}result.push(configIndex--)}else this.teaserRows.splice(0,0,lastRule.class),restAmount-=lastRule.amount,configIndex--}return result})()},getTeaserRowRule(rowClass){for(let rule of Array.from(this.rules))if(rule.class===rowClass)return rule}
7,initTeaser(){return this.matchTeaserHeights()},matchTeaserHeights(){if(T.Utils.isViewport("desktop"))return(()=>{const result=[];for(let i=0,end=$(this._ctx).data("rowCount"),asc=0<=end;asc?i<end:i>end;asc?i++:i--)this.matchHeightDebounced(`> .row-${i} .a-image`),this.matchHeightDebounced(`> .row-${i} .a-heading`),this.matchHeightDebounced(`> .row-${i} .content-inner`),this.matchHeightDebounced(`> .row-${i} .teaser-content`),result.push(this.matchHeightDebounced(`> .row-${i} .teaser-wrap`));return result})();T.Utils.isViewport("tablet")&&(this.matchHeightDebounced('> [class*="teaser-200-"] .a-image'),this.matchHeightDebounced('> [class*="teaser-200-"] .a-heading'),this.matchHeightDebounced('> [class*="teaser-200-"] .content-inner'),this.matchHeightDebounced('> [class*="teaser-200-"] .teaser-content'),this.matchHeightDebounced('> [class*="teaser-200-"] .teaser-wrap'))},matchHeightDebounced(selector,timeoutInMs){timeoutInMs=timeoutInMs||50,this.debounceMethods=this.debounceMethods||{};let debounceCallback=this.debounceMethods[selector]||null;if(null===debounceCallback){const callback=()=>{this.$(selector).matchHeight()};this.debounceMethods[selector]=debounceCallback=T.Utils.debounce(callback,timeoutInMs)}return debounceCallback(),debounceCallback},parseTeaserConfig(){const config=T.Utils.teaser.container;return this.rules=[],(()=>{const result=[];for(let rule of Array.from(config)){let teasersPerRow=1,flexibleAmountOfRows=!1;const ruleParts=rule.match(/(100|200-2|200-4|300|500)(\*n)?/);switch(ruleParts[1]){case"200-2":case"500":teasersPerRow=2;break;case"300":teasersPerRow=3;break;case"200-4":teasersPerRow=4}"*n"===ruleParts[2]&&(flexibleAmountOfRows=!0),result.push(this.rules.push({amount:teasersPerRow,class:`teaser-${ruleParts[1]}`,flex:flexibleAmountOfRows}))}return result})()},setClasses(){const mod=this;let i=0;mod.$teasers.removeClass("hidden");let rowCount=0,teaserEffectClass="",$teaser="";this.teaserRows.forEach(function(rowClass){for(let j=0,end=mod.getTeaserRowRule(rowClass).amount,asc=0<=end;asc?j<end:j>end;asc?j++:j--)$teaser=mod.$teasers.eq(i),teaserEffectClass=$teaser.hasClass("effect-on-hover")?"effect-on-hover":$teaser.hasClass("effect")?"effect":"",$teaser.removeClass(),$teaser.addClass("m-teaser").addClass(rowClass),$teaser.addClass("m-teaser").addClass(teaserEffectClass),$teaser.addClass(`row-${rowCount}`),i++;rowCount++}),$(this._ctx).hasClass("js-selfhelp-teasers")||mod.$teasers.filter(`:gt(${i-1})`).addClass("hidden"),$(this._ctx).data("row-count",rowCount)},onResize(){return this.matchTeaserHeights()},onLoadTeaserImage(){this.matchTeaserHeights()}})}(jQuery),function($){T.Module.TechnicalOverview=T.createModule({start(resolve){return this.isSynced=!1,this.$ctx=$(this._ctx),this.$prominentMoreInfo=this.$ctx.find(".js-prominent-more-info"),this.$prominentMoreInfo.on("click",()=>this.onClickScrollToAdditionalInfo()),resolve()},onClickScrollToAdditionalInfo(){$("#section-technicalspecs").get(0).scrollIntoView({behavior:"smooth"})}})}(jQuery),function($,doT){T.Commons.ControllerInitializer.register("AddressAutocomplete","data-addressautocomplete-controllers"),T.Module.AddressAutocomplete=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.isSynced=!1,this.dataAttributes={fieldIdentifier:"autosuggestFieldIdentifier",storeData:"data-storeData"},this.selector={scriptTemplateType:"data-ajax-template"},this.config=this.$ctx.data("addressAutocompleteConfiguration"),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.initialize(!1))},initialize(update){update&&(this.config=this.$ctx.data("addressAutocompleteConfiguration"))},getData(request,params,cbData){let contentType="application/x-www-form-urlencoded; charset=utf-8";return"json"===request.dataType.toLowerCase()&&(contentType="application/json; charset=utf-8"),$.ajax({url:request.url,cache:!1,type:request.method,dataType:request.dataType,contentType:"get"!==request.method.toLowerCase()&&contentType,data:params,success:(result,textStatus,jqXHR)=>(cbData.successCallback&&cbData.successCallback(result,cbData),!0),error:(jqXHR,textStatus,errorThrown)=>(cbData.errorCallback&&cbData.errorCallback(null,cbData),!1)})},renderTemplate(templateSelector,result,errorCase){const templateType=errorCase?"error":"success";let $tempContainer=$(templateSelector+"["+this.selector.scriptTemplateType+'="'+templateType+'"]',this.$ctx);if(0===$tempContainer.length)return void this.log(this.config.name,`no ${templateType} template defined`);return $tempContainer.length>1&&($tempContainer=$($tempContainer.get(0))),doT.template($tempContainer.html())(result)},registerFieldListener(dependingFields){dependingFields.map(field=>field.$elm.is("select")?$(document).on("change",`#${field.id}`,ev=>this.onKeyupOrChangeInput(ev)):$(document).on("keyup",`#${field.id}`,T.Utils.debounce(ev=>this.onKeyupOrChangeInput(ev),this.config.delay||(this.config.delay=300))))},triggerAutocompleteRequest(data,fields,$elm){const params={};for(let field of fields)field.requestName&&(params[field.requestName]=field.$elm.val());return this.getData(data.ajax,params,{$elm:$elm})},checkFeatureIsApplicable(data){if(data.fields.length>0){let field=data.fields[0];return(field.id?this.getFieldById(field):this.getFieldByName(field)).length>0}return!0},collectNecessaryFields(data){let collectedFields={};if(0===data.fields.length)return this.log(data.name,"wrong configurated fields for autocomplete feature"),collectedFields;for(let field of data.fields){var $field;0===($field=field.id?this.getFieldById(field):this.getFieldByName(field)).length?this.log(data.name,`field does not exist in scope of autocomplete feature: ${field.name}:${field.id}`):$field.length>1?this.log(data.name,`field exists multiple in scope of autocomplete feature: ${field.name}:${field.id}`):(field.originalIdentifier?$field.data(this.dataAttributes.fieldIdentifier,field.originalIdentifier):($field.data(this.dataAttributes.fieldIdentifier,field.id),field.originalIdentifier=field.id),field.id=$field.attr("id"),field.$elm=$field,collectedFields[field.name]=field)}return collectedFields}
7,filterDependingFields(data,fields){let dependingFields=[];if(data.dependingFields)data.dependingFields.map(dependingField=>fields[dependingField]?dependingFields.push(fields[dependingField]):this.log(data.name,`depending field does not exist in list of fields: ${dependingField}`));else for(let fieldname in fields)dependingFields.push(fields[fieldname]);return dependingFields},prepareResponseFields(fields){let responseFields={};for(let fieldname in fields){var responseName;const field=fields[fieldname];"object"==typeof field.responseName?(responseName=Object.keys(field.responseName)[0],field.valueName=Object.values(field.responseName)[0],responseFields[responseName]=field):field.responseName&&(responseFields[field.responseName]=field)}return responseFields},checkFieldsToTriggerAutocomplete(data,dependingFields,fields){if(data.dependencies&&data.dependencies.length>0){for(let dependencyCases of data.dependencies)if(this.checkDependency(dependencyCases,fields))return!0;return!1}{let countFilledFields=0;for(let field of dependingFields)field.$elm.val()&&countFilledFields++;return countFilledFields>=dependingFields.length}},checkDependency(dependencyCases,fields){for(let dependency of dependencyCases)if(null==fields[dependency.name])this.log(this.config.name,`dependency field does not exist in list of fields: ${dependency.name}`);else{const value=fields[dependency.name].$elm.val();if(!new RegExp(dependency.condition).test(value))return!1}return!0},whichObjHasProperty(fields,property){for(let key in fields)if(fields[key].hasOwnProperty(property))return fields[key];return null},getObjByName(fields,fieldName){const field=fields.find(o=>o.name===fieldName);return field||(this.log(this.config.name,`FieldName does not exist in list of fields: ${fieldName}`),null)},getFieldById(field){const parts=field.id.split("*");if(2===parts.length){const searchBegin=parts[0].length>0?`[id^="${parts[0]}"]`:"",searchEnd=parts[1].length>0?`[id$="${parts[1]}"]`:"";return $(searchBegin+searchEnd,this.$ctx)}return $(`#${field.id}`,this.$ctx)},getFieldByName(field){return $(`[name=${field.name}]`,this.$ctx)},log:(feature,msg)=>console.log(`AddressAutocomplete: ${feature}: ${msg}`)})}(jQuery,window.doT),function($){T.Module.CIAMActivationCodeController=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.config=this.$ctx.data("config"),this.selectors={verificationForm:"form",verificationEmailInput:".js-verification-email",sendActivationCode:".js-send-activationcode",activationCodeIsSentMessage:".js-activationcode-issent-message",verificationCodeInput:".js-verification-code",customErrorMessage:".js-custom-error-message",verificationCodeDigitInput:".js-verification-code-digit",activationCodeContainer:".js-activationcode-container"},this.cssClass={verificationError:"has-ajax-error",verificationIsValid:"validation-is-valid"},this.$verificationEmailInput=this.$ctx.find(this.selectors.verificationEmailInput),this.$sendActivationCodeButton=this.$ctx.find(this.selectors.sendActivationCode),this.$verificationCodeInput=this.$ctx.find(this.selectors.verificationCodeInput),this.$verificationCodeError=this.$verificationCodeInput.parent().find(this.selectors.customErrorMessage),this.$verificationCodeDigitInput=this.$ctx.find(this.selectors.verificationCodeDigitInput),this.$activationCodeContainer=this.$ctx.find(this.selectors.activationCodeContainer),this.$form=this.$ctx.find(this.selectors.verificationForm),0===this.$form.length&&(this.$formFields=this.$verificationEmailInput),this.$verificationEmailInput.on("input",ev=>this.onInputVerificationEmail(ev)),this.$verificationCodeDigitInput.on("input",ev=>this.onInputActivationCodeDigit(ev)),this.$verificationCodeDigitInput.on("paste",ev=>this.onPasteActivationCodeDigit(ev)),this.$sendActivationCodeButton.on("click",()=>this.onSendActivationCode()),this.$verificationCodeInput.on("input focusout",ev=>this.onVerifyActivationCode(ev)),this.initDigits(),resolve()},onSendActivationCode(){if(this.$activationCodeContainer.removeClass("hidden"),this.$verificationCodeInput.val(""),this.$ctx.find(this.selectors.activationCodeIsSentMessage).css("visibility","hidden"),this.isValidFormData()){const request=T.Utils.startAjaxRequest(this.$sendActivationCodeButton.data("ajaxRequestId"));if(!request)return;this.$sendActivationCodeButton.prop("disabled",!0),request[0].done(response=>{this.$sendActivationCodeButton.prop("disabled",!1)}).fail((xhr,ajaxOptions,thrownError)=>console.error(xhr))}},onVerifyActivationCode(ev){if("focusout"!==ev.type&&this.$verificationCodeInput.removeClass(this.cssClass.verificationError),""!==this.$verificationCodeInput.val()&&!this.$verificationCodeInput.is("[readonly]")&&this.$verificationCodeInput.is(":valid")){const request=T.Utils.startAjaxRequest(this.$verificationCodeInput.data("ajaxRequestId"));if(!request||!request[0])return;request[0].done(response=>{response.valid?(this.handleValidationOnSuccess(response),T.Utils.getLayout().trackValues("SKID/OCO Merge Submit",{})):this.handleValidationOnError(response)}).fail((xhr,ajaxOptions,thrownError)=>console.error(xhr))}},initDigits(){this.$digitInputs=[],this.$verificationCodeDigitInput.each((index,element)=>{this.$digitInputs.push(this.$verificationCodeDigitInput.filter(`.js-digit-${index+1}`))})},isValidFormData(){if(this.$form.length>0){return!("function"==typeof this.$form[0].checkValidity)||this.$form[0].checkValidity()}let validFormFields=!0;return this.$formFields.each(function(){$(this)[0].checkValidity()&&null!==$(this).val()&&0!==$(this).val().length||(validFormFields=!1)}),this.$formFields.length>0&&validFormFields},handleValidationOnSuccess(response){response.email&&(this.$verificationEmailInput.val(response.email),this.$verificationEmailInput.prop("readonly",!0)),this.$sendActivationCodeButton.prop("disabled",!0),this.$verificationCodeInput.addClass(this.cssClass.verificationIsValid),0!==this.$form.length||this.config.successRequestMethod?(this.$verificationCodeInput.prop("readonly",!0),setTimeout(()=>{this.config.successRequestMethod&&"get"!==this.config.successRequestMethod.toLowerCase()?(this.$form.attr("action",response.successUrl),this.$form.submit()):window.location.href=response.successUrl},0|this.config.redirectDelay)):this.$verificationCodeInput.trigger("verification.activationcode")},handleValidationOnError(response){this.$verificationEmailInput.prop("readonly",!1),this.$verificationCodeInput.prop("readonly",!1),this.$verificationCodeError.html(response.errorMessage),this.$verificationCodeInput.removeClass(this.cssClass.verificationIsValid),this.$verificationCodeInput.addClass(this.cssClass.verificationError),0!==this.$form.length||this.config.successRequestMethod||this.$verificationCodeInput.trigger("verification.activationcode")},onInputActivationCodeDigit(ev){this.digitInputValues=[];const $currentDigit=$(ev.currentTarget),$nextSibling=$currentDigit.next(this.selectors.verificationCodeDigitInput);$currentDigit.val()&&$nextSibling.trigger("focus"),this.$digitInputs.forEac
7h(item=>{this.digitInputValues.push(item.val())});const activationCode=`${this.digitInputValues.join("")}`;this.$verificationCodeInput.val(activationCode).trigger("input").trigger("focusout")},emptyVerificationCodeDigits(){this.$verificationCodeDigitInput.val("")},onPasteActivationCodeDigit(ev){ev.preventDefault();let clipboardDigits=ev.originalEvent.clipboardData.getData("text").split("",this.$digitInputs.length);this.emptyVerificationCodeDigits();for(let i=0;i<clipboardDigits.length;i++)this.$digitInputs[i].val(clipboardDigits[i]),this.$digitInputs[i].trigger("input");this.$digitInputs[this.$digitInputs.length-1].trigger("focus"),this.$verificationCodeInput.trigger("input").trigger("focusout")},onInputVerificationEmail(ev){this.$verificationEmailInput.val().length>0?this.$sendActivationCodeButton.removeAttr("disabled"):this.$sendActivationCodeButton.attr("disabled","disabled")}})}(jQuery),function($){T.Module.CIAMVerificationMethodController=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isInitCall=!0,this.config=this.$ctx.data("config")||{},this.selectors={accessCodeTextSelector:".js-accesscode-text",accessCodeRadioSelector:".js-accesscode-radio",accessCodeFieldsetSelector:".js-accesscode-fieldset",accessCodeInputSelector:".js-accesscode-input",differentEmailTextSelector:".js-differentemail-text",differentEmailRadioSelector:".js-differentemail-radio",differentEmailFieldsetSelector:".js-differentemail-fieldset",differentEmailInputSelector:".js-differentemail-input",sameEmailRadioSelector:".js-sameemail-radio",sameEmailInputSelector:".js-sameemail-input",hiddenRadiosSelector:".js-accesscode-radio.hidden, .js-differentemail-radio.hidden, .js-sameemail-radio.hidden",mergeaccountSelector:".js-mergeaccount-input",registeraccountSelector:".js-registeraccount-input",verificationCodeSelector:".js-verification-code",firstNameSelector:".js-firstname",lastNameSelector:".js-lastname"},this.elem={$accessCodeText:this.$ctx.find(this.selectors.accessCodeTextSelector),$accessCodeRadio:this.$ctx.find(this.selectors.accessCodeRadioSelector),$accessCodeFieldset:this.$ctx.find(this.selectors.accessCodeFieldsetSelector),$accessCodeInput:this.$ctx.find(this.selectors.accessCodeInputSelector),$differentEmailText:this.$ctx.find(this.selectors.differentEmailTextSelector),$differentEmailRadio:this.$ctx.find(this.selectors.differentEmailRadioSelector),$differentEmailFieldset:this.$ctx.find(this.selectors.differentEmailFieldsetSelector),$differentEmailInput:this.$ctx.find(this.selectors.differentEmailInputSelector),$sameEmailRadio:this.$ctx.find(this.selectors.sameEmailRadioSelector),$sameEmailInput:this.$ctx.find(this.selectors.sameEmailInputSelector),$mergeaccount:this.$ctx.find(this.selectors.mergeaccountSelector),$registeraccount:this.$ctx.find(this.selectors.registeraccountSelector),$verificationCode:this.$ctx.find(this.selectors.verificationCodeSelector),$firstnameInput:this.$ctx.find(this.selectors.firstNameSelector),$lastnameInput:this.$ctx.find(this.selectors.lastNameSelector)},this.cssClass={validationError:"has-error",verificationError:"has-ajax-error",verificationIsValid:"validation-is-valid"},this.radioGroupName=this.elem.$sameEmailInput.attr("name"),this.elem.$sameEmailInput.on("change",ev=>{this.onToggleVerificationModeSameEmail(ev)}),this.elem.$mergeaccount.on("change",ev=>{this.onToggleAccountSelectionMergeAccount(ev)}),this.elem.$registeraccount.on("change",ev=>{this.onToggleAccountSelectionRegisterAccount(ev)}),this.elem.$accessCodeInput.on("change",ev=>{this.onToggleVerificationModeAccessCode(ev)}),this.elem.$differentEmailInput.on("change",ev=>{this.onToggleVerificationModeDifferentEmail(ev)}),this.elem.$verificationCode.on("change verification.activationcode",ev=>{this.onTriggerVerificationCode(ev)}),this._events.on("forminput:triggerAAFRegistration",data=>{this.onTriggerAAFRegistration(data)}),this._events.on("t.sync",()=>this.sync()),this.initReplacedContentHandler=(container=>{this.initReplacedContent(container)}),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.registerContentInitializer(this.initReplacedContentHandler,!0),this.initVerificationMethod(),this.isDisableFormNeeded()?this.setFormDisabled(!0):this.config.enableSubmitOnVerification&&this.setDisableSubmitForm(!0),this.config.enableSubmit&&this.setDisableSubmitForm(!1))},stop(){T.Utils.unregisterContentInitializer(this.initReplacedContentHandler,!0)},initReplacedContent(container){let $container=$(container),$differentEmailFieldset=$container.find(this.selectors.differentEmailFieldsetSelector);$differentEmailFieldset.length>0&&(this.elem.$differentEmailFieldset=$differentEmailFieldset,this.elem.$differentEmailText=$container.find(this.selectors.differentEmailTextSelector),this.elem.$verificationCode=$container.find(this.selectors.verificationCodeSelector),this.elem.$verificationCode.on("change verification.activationcode",ev=>{this.onTriggerVerificationCode(ev)}
7),this.initVerificationMethod())},initVerificationMethod(){this.elem.$accessCodeInput.prop("checked")?this.showAccessCodeSection(!0):this.elem.$sameEmailInput.prop("checked")?this.showSameEmailSection(!0):this.elem.$differentEmailInput.prop("checked")&&this.showDifferentEmailSection(!0)},onToggleVerificationModeAccessCode(ev){this.elem.$accessCodeInput.prop("checked")&&this.showAccessCodeSection(!0)},onToggleVerificationModeSameEmail(ev){this.elem.$sameEmailInput.prop("checked")&&this.showSameEmailSection(!0)},onToggleVerificationModeDifferentEmail(ev){this.elem.$differentEmailInput.prop("checked")&&this.showDifferentEmailSection(!0)},onToggleAccountSelectionMergeAccount(ev){this.elem.$mergeaccount.prop("checked")&&(this.elem.$registeraccount.attr("name")||this.elem.$registeraccount.prop("checked",!1),this.elem.$mergeaccount.data("formDisabled")&&this.setFormDisabled(!0))},onToggleAccountSelectionRegisterAccount(ev){this.elem.$registeraccount.prop("checked")&&(this.elem.$mergeaccount.attr("name")||this.elem.$mergeaccount.prop("checked",!1),this.elem.$registeraccount.data("formDisabled")||this.setFormDisabled(!1))},onTriggerVerificationCode(){this.config.enableSubmitOnVerification&&this.elem.$differentEmailInput.prop("checked")&&setTimeout(()=>{this.setDisableSubmitForm(!this.isValidVerificationCode())},50)},onTriggerAAFRegistration(data){if(Array.isArray(data.result.fields)){for(let field of data.result.fields){if(field.field===this.radioGroupName&&Array.isArray(field.options)){if(!this.isInitCall)break;for(let option of field.options)this.elem.$sameEmailInput.val()===option.value&&this.showElement(this.elem.$sameEmailRadio),this.elem.$differentEmailInput.val()===option.value&&this.showElement(this.elem.$differentEmailRadio),this.elem.$accessCodeInput.val()===option.value&&this.showElement(this.elem.$accessCodeRadio);this.config.disableVerificationMethodPreselection||this.preselectRadio(field.value),this.$ctx.find(this.selectors.hiddenRadiosSelector).remove(),this.isInitCall=!1}}this.config.enableSubmitOnVerification&&this.elem.$accessCodeInput.prop("checked")&&setTimeout(()=>{this.setDisableSubmitForm(!this.isValidAccessCode())},50)}},isValidVerificationCode(){return this.elem.$verificationCode.val().length>0&&this.elem.$verificationCode.hasClass(this.cssClass.verificationIsValid)&&!this.elem.$verificationCode.is(":invalid")},isValidAccessCode(){return this.elem.$accessCodeText.val().length>0&&!this.elem.$accessCodeText.hasClass(this.cssClass.validationError)&&!this.elem.$accessCodeText.is(":invalid")},isDisableFormNeeded(){return!(!this.elem.$mergeaccount.data("formDisabled")&&this.elem.$mergeaccount.prop("checked")||!this.elem.$registeraccount.data("formDisabled")&&this.elem.$registeraccount.prop("checked"))&&(this.elem.$mergeaccount.data("formDisabled")||this.elem.$registeraccount.data("formDisabled"))},setFormDisabled(state){const $form=this.$ctx.closest("form");$form.data("disabledFormState")!==state&&($form.data("disabledFormState",state),this.elem.$mergeaccount.length>0&&this.elem.$registeraccount.length>0?(this.setPreventEnableFields($form.find("fieldset"),state),state?setTimeout(()=>{T.Utils.genericFormDisableFieldsOnHide($form.find("fieldset"))},100):(T.Utils.genericFormKeepDisabledFieldsOnShow($form.find("fieldset")),this.elem.$firstnameInput.prop("disabled",!1),this.elem.$lastnameInput.prop("disabled",!1)),this.elem.$sameEmailInput.length>0&&this.config.enableSubmitOnVerification?this.elem.$sameEmailInput.prop("checked")&&this.setDisableSubmitForm(state):this.setDisableSubmitForm(state)):(setTimeout(()=>{this.setPrefilledFieldsReadOnly($form.find("fieldset"))},100),this.setDisableSubmitForm(!1)))},setPreventEnableFields($container,prevent){const $formFields=$container.find("input, textarea, select").not(":hidden, :checkbox, :radio");prevent?$formFields.attr("data-preventenabled",!0):$formFields.removeAttr("data-preventenabled")},setPrefilledFieldsReadOnly($container){$container.find("input, textarea, select").not(":hidden, :checkbox, :radio").each(function(){null!==$(this).val()&&0!==$(this).val().length&&($(this).prop("disabled")||($(this).is("select")?T.Utils.createHiddenElementForReadonly($(this),".select-wrap"):$(this).prop("readonly",!0)))})},setDisableSubmitForm(state){const $form=this.$ctx.closest("form");state?this._events.emit("form:disableSubmit",{id:$form.data("t-id")}):this._events.emit("form:enableSubmit",{id:$form.data("t-id")})},preselectRadio(value){const enableFields=!0!==this.$ctx.closest("form").data("disabledFormState");value===this.elem.$sameEmailInput.val()?(this.elem.$sameEmailInput.prop("checked",!0),this.showSameEmailSection(enableFields)):value===this.elem.$differentEmailInput.val()?(this.elem.$differentEmailInput.prop("checked",!0),this.showDifferentEmailSection(enableFields)):value===this.elem.$accessCodeInput.val()&&(this.elem.$accessCodeInput.prop("checked",!0),this.showAccessCodeSection(enableFields))},showAccessCodeSection(enableFields){this.showElement(this.elem.$accessCodeFieldset),this.hideElement(this.elem.$differentEmailFieldset),enableFields&&(this.enableElement(this.elem.$accessCodeText),this.disableElement(this.elem.$differentEmailText),this.disableElement(this.elem.$verificationCode),this.config.enableSubmitOnVerification&&this.setDisableSubmitForm(!0))},showDifferentEmailSection(enableFields){this.hideElement(this.elem.$accessCodeFieldset),this.showElement(this.elem.$differentEmailFieldset),enableFields&&(this.disableElement(this.elem.$accessCodeText),this.enableElement(this.elem.$differentEmailText),this.enableElement(this.elem.$verificationCode),this.config.enableSubmitOnVerification&&this.setDisableSubmitForm(!0))},showSameEmailSection(enableFields){this.hideElement(this.elem.$accessCodeFieldset),this.hideElement(this.elem.$differentEmailFieldset),enableFields&&(this.disableElement(this.elem.$accessCodeText),this.disableElement(this.elem.$differentEmailText),this.disableElement(this.elem.$verificationCode),this.config.enableSubmitOnVerification&&this.setDisableSubmitForm(!1))},enableElement($element){$element.removeAttr("disabled"),$element.attr("required","required")},disableElement($element){$element.removeAttr("required"),$element.removeClass("had-focus is-empty has-error"),$element.attr("disabled","disabled"),$element.val("")},showElement($element){$element.removeClass("hidden")},hideElement($element){$element.addClass("hidden")}})}(jQuery),function($){T.Module.ConsentTracking=T.createModule({start(resolve){this.$ctx=$(this._ctx);return this.$ctx.find(".m-forminput-checkbox").find("[type=checkbox]").on("change",function(){const isChecked=$(this).is(":checked"),checkboxId=$(this).attr("id")||"";isChecked?T.Utils.getLayout().trackValues("Give optin",{optin_checkbox_ID:checkboxId}):T.Utils.getLayout().trackValues("Withdraw optin",{optin_checkbox_ID:checkboxId})}),resolve()}})}(jQuery),function($){T.Commons.ControllerInitializer.register("CopyFieldsController","data-copyfields-controller"),T.Module.CopyFieldsController=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.config=this.$ctx.data("c
7opyFieldsControllerConfiguration"),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.initialize(!1))},initialize(update){update&&(this.config=this.$ctx.data("copyFieldsControllerConfiguration")),this.addEventHandler()},addEventHandler(){for(const field of this.config)if(1===$(field.toField).length){const eventType=field.eventType||"focusout";$(field.fromField).on(eventType,ev=>this.onEventHandler(ev,field))}},onEventHandler(ev,field){const $toField=$(field.toField),copyRule=field.rule||"initiate";("initiate"===copyRule&&""===$toField.val()||"synchronize"===copyRule)&&$toField.val($(field.fromField).val())}})}(jQuery),function($){T.Module.EventDelayController=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.delay=this.$ctx.data("delay"),this.timer=setTimeout(()=>this.executeAfterDelay(),1e3*this.delay),resolve()},executeAfterDelay(){console.log("Execute after Delay")}})}(jQuery),function($){T.Module.DependentDropdowns=T.createModule({start(resolve){this.$ctx=$(this._ctx),T.Utils.allSynced=!1,this.config=this.$ctx.data("config"),this.$dependentDropdowns=$([]);const ctx=this;return $(this.config.dropdowns).each(function(index){const $item=$(document.getElementById(this.id));return $item.prop("alias",this.alias),$item.attr("data-alias",this.alias),$item.prop("itemDefault",this.itemDefault),ctx.$dependentDropdowns=ctx.$dependentDropdowns.add($item)}),this._events.on("t.sync",()=>this.sync()),this.$dependentDropdowns.on("change",ev=>this.onChange(ev)),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0)},matchCustom(params,data){let searchTerm;if(this.configFile.showSearchbar){if(searchTerm=params.term,""===$.trim(params.term))return data;if(void 0===data.text)return null;if(0===data.text.toUpperCase().indexOf(searchTerm.toUpperCase())){return $.extend({},data,!0)}return null}if(searchTerm=$.trim(params.term),this.countOptions=this.$select.children("option").length,searchTerm.length>0&&(searchTerm=params.term.charAt(params.term.length-1)),this.searchTermCurrent!==searchTerm&&(this.matchedItems=[],this.counter=0,this.keyCounter=0),0===this.keyCounter&&0===data.text.toUpperCase().indexOf(searchTerm.toUpperCase())&&this.matchedItems.push(data),this.counter++,this.countOptions===this.counter){if(this.matchedItems.length>0){if(searchTerm.length>0){const ID=this.matchedItems[this.keyCounter]._resultId;setTimeout(()=>{const container=this.$dropdownParent.find(".select2-results .select2-results__options")[0];return container.scrollHeight>container.clientHeight&&$(container).scrollTop(document.getElementById(ID).offsetTop),$(document.getElementById(ID)).trigger("mouseenter")},10)}this.counter=0}this.searchTermCurrent===searchTerm&&this.keyCounter++}return this.matchedItems.length===this.keyCounter&&(this.keyCounter=0),this.searchTermCurrent=searchTerm,this.$dropdownParent.find("input.select2-search__field").val(searchTerm),data.disabled=!1,data},setData(data){const ctx=this;return $(data.fields).each(function(index){const $dropdown=ctx.$dependentDropdowns.filter(`[data-alias="${this.name}"]`);this.$dropdownParent=$dropdown.closest(".m-forminput-dropdown"),this.$select=$dropdown,this.matchedItems=[],this.searchTermCurrent="",this.counter=0,this.keyCounter=0;let config=this.$select.attr("data-config")||{};try{this.configFile=JSON.parse(config),config=this.configFile}catch(error){console.warn("Not possible to parse the json file")}const optionsDefault=[{id:"",text:$dropdown.prop("itemDefault")}],{options:options}=this,optionsFull=$.merge(optionsDefault,options);return $dropdown.html(""),$dropdown.select2({data:optionsFull,matcher:ctx.matchCustom.bind(this),dropdownAutoWidth:config.dropdownAutoWidth||!0,dropdownParent:$dropdown.closest(".m-forminput-dropdown"),minimumResultsForSearch:config.minimumResultsForSearch||0,multiple:config.multiple||!1,allowClear:config.allowClear||!1,placeholder:config.placeholder||null,maximumInputLength:config.maximumInputLength||0,maximumSelectionLength:config.maximumSelectionLength||0,minimumInputLength:config.minimumInputLength||0,language:{noResults:()=>this.configFile.noResultsMessage,inputTooShort:()=>this.configFile.inputTooShortMessage,maximumSelected:()=>this.configFile.maximumSelectionLengthMessage,inputTooLong:()=>this.configFile.inputTooLongMessage}}),$dropdown.trigger("setInputError",!1)})},getData(ctx,selectedDropDownList){const CSRFHeader=T.Utils.getCSRFTokenHeader()||{};return $.ajax({url:this.config.url,cache:!1,type:"POST",headers:CSRFHeader,dataType:"JSON",contentType:"application/json; charset=utf-8",data:JSON.stringify(selectedDropDownList),success:(data,textStatus,jqXHR)=>(ctx.setData(data),!0),error:(jqXHR,textStatus,errorThrown)=>!1})},onChange(ev){const selectedDropDownList={fields:[]};return this.$dependentDropdowns.each(function(index){const option={name:$(this).prop("alias"),value:$(this).val()};return selectedDropDownList.fields.push(option)}),this.getData(this,selectedDropDownList)}})}(jQuery),function($){var S2=jQuery.fn.select2.amd;S2.define("select2/extendevents",["jquery","./core","./keys"],function($,Select2,KEYS){var S2_registerEvents_original=Select2.prototype._registerEvents;Select2.prototype._registerEvents=function(){var self=this;this.on("keypress",function(evt){var key=evt.which;
7self.isOpen()?key===KEYS.TAB&&self.trigger("results:select",{}):key!==KEYS.DOWN&&key!==KEYS.UP&&key!==KEYS.LEFT&&key!==KEYS.RIGHT||self.open()}),S2_registerEvents_original.apply(this,arguments)}}),S2.require("select2/extendevents")}(),function($){T.Module.EventActionController=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.config=this.$ctx.data("config"),this.el={$trigger:this.$ctx.find(this.config.trigger),$target:this.$ctx.find(this.config.target)},this.el.$trigger.on(this.config.event,ev=>this.action(ev)),resolve()},action(ev){console.log(ev),console.log("action is triggered")}})}(jQuery),function($){T.Module.IsInViewportController=T.createModule({start:resolve=>resolve(),init(options){return this.element=options.element,null!=options.onViewportChanged&&(this.viewportConfig={percentage:options.visiblePercentage||0,onViewportChanged:options.onViewportChanged}),this.viewportWorker=window.viewportWorker||(window.viewportWorker=this.createViewportWorker()),this.viewportWorker.controllers.push(this),this.refresh()},refresh(){const viewportHeight=this.getViewportHeight();return this.calculateViewportState(viewportHeight)},createViewportWorker(){return $(window).on("scroll resize",T.Utils.debounce(evt=>this.refreshAll(),100)),{controllers:[]}},refreshAll(){const viewportHeight=this.getViewportHeight();return Array.from(window.viewportWorker.controllers).map(controller=>controller.calculateViewportState(viewportHeight))},calculateViewportState(viewportHeight){let inViewport=!1;if($(this.element).is(":visible")){const boundRect=this.element.getBoundingClientRect();if(null==boundRect||null==boundRect.top||null==boundRect.bottom)return;const{top:top}=boundRect,{bottom:bottom}=boundRect,elementOffset=(bottom-top)*((null!=this.viewportConfig?this.viewportConfig.percentage:void 0)||0);inViewport=!(bottom-elementOffset<0)&&!(top+elementOffset>viewportHeight)}return null!=this.viewportConfig?this.viewportConfig.onViewportChanged(this.element,inViewport):void 0},getViewportHeight:()=>window.innerHeight||document.documentElement.clientHeight})}(jQuery),function($){T.Module.IUMPageController=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.config=this.$ctx.data("config")||{},this.hostUrl=window.location.href,this.isSynced=!1,this.noBackOrForward=!0,this.selectors={chapterNumber:"chapter-number",isPage:"is-page"},this.strLoaderClose="loader:close",this.strLoaderOpen="loader:open",this.setRouteParams(),this.indexUrl=this.createIndexAjaxUrl(),this.$iumnavigationl1Template=this.$ctx.find("#iumnavigationl1-template"),this.$iumnavigationl2Template=this.$ctx.find("#iumnavigationl2-template"),this.$iumcontentTemplate=this.$ctx.find("#iumcontent-template"),this.$iumsearchresultsTemplate=this.$ctx.find("#iumsearchresults-template"),this.iumnavigationl1DotTemplate=doT.template(this.$iumnavigationl1Template.html()),this.iumnavigationl2DotTemplate=doT.template(this.$iumnavigationl2Template.html()),this.iumcontentDotTemplate=doT.template(this.$iumcontentTemplate.html()),this.iumsearchresultsDotTemplate=doT.template(this.$iumsearchresultsTemplate.html()),this.updateTilesNavi(),this.addTitleTagInfo(),T.Utils.registerPopStateHandler("ium-popstate",()=>this.onPopState()),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.getSearchResults())},addTitleTagInfo(){this.createTitleText(),$("title").length<=0?$("head").prepend(`<title>${this.titleText}</title>`):$("title").text(this.titleText)},addMetaIconUrlTagInfo(){const imageTag=$(".m-iumnavigationl1 .m-iumtile.active .a-image img");if(!imageTag[0])return;const sourceUrl=imageTag[0].getAttribute("src");$("meta[name=internal-icon-url]").length<=0?$("head").append(`<meta name="internal-icon-url" content="${sourceUrl}">`):$("meta[name=internal-icon-url]").attr("content",sourceUrl)},addMetaDescriptionTagInfo(shortDesc){this.createMetaDescriptionContent(shortDesc),$("meta[name=description]").length<=0?$("head").prepend(`<meta name="description" content="${this.descriptionContent}">`):$("meta[name=description]").attr("content",this.descriptionContent)},appendRenderingFinishedIndicator(){document.getElementById("internal-document-rendering-finished")||$("body").append('<div id="internal-document-rendering-finished" />')},createTitleText(){this.titleText=`${this.config.titleText}
7 ${this.config.productCode} ${this.config.brandName}`},createMetaDescriptionContent(shortDesc){let shortDescText;shortDesc&&shortDesc.$?(shortDescText=Array.isArray(shortDesc.$)?shortDesc.$.join(" "):shortDesc.$||"",this.descriptionContent=`${this.titleText} ${shortDescText}`):this.descriptionContent=this.titleText},setRouteParams(){const hashIndex=this.hostUrl.indexOf("#");-1!=hashIndex&&(this.hostUrl=this.hostUrl.substring(0,hashIndex));const queryStart=this.hostUrl.indexOf("?");let urlWithoutQueryParams=this.hostUrl;-1==queryStart?this.queryParams="":(urlWithoutQueryParams=this.hostUrl.substring(0,queryStart),this.queryParams=this.hostUrl.substring(queryStart));let lastPathItem=this.hostUrl.split("/").pop().split("?")[0];lastPathItem===this.config.materialNumber?(this.currentChapterNumber="index",this.baseUrl=urlWithoutQueryParams):(this.currentChapterNumber=lastPathItem,this.baseUrl=urlWithoutQueryParams.substring(0,urlWithoutQueryParams.lastIndexOf("/"))),this.currentStartChapterNumber=this.currentChapterNumber},prepareJsonObject(obj){function traverse(jsObject,jsPath){jsObject["@_path"]=jsPath,Array.isArray(jsObject)?function(arr,jsPath){arr.forEach(function(item,index){"object"==typeof item&&traverse(item,jsPath+"["+index+"]")})}(jsObject,jsPath):"object"==typeof jsObject&&function(obj,jsPath){for(var key in obj)if(obj.hasOwnProperty(key)){let item=obj[key];null!==item&&"object"==typeof item&&traverse(item,jsPath+(jsPath?".":"")+key)}}(jsObject,jsPath)}traverse(obj,"")},loadJSON(url,callback){this._events.emit(this.strLoaderOpen,{loaderType:"layer",$trigger:this.$ctx});const request=T.Utils.startAjaxRequest(!1,{url:url,dataType:"json"});request&&request[0].done(response=>{callback(response)}).fail(()=>{console.log("An error occured by request: "+url)}).always(()=>{this._events.emit(this.strLoaderClose,{$trigger:this.$ctx})})},updateTilesNavi(){this.loadJSON(this.indexUrl,jsonResponse=>{this.navigationStructureJSON=jsonResponse,this.navigationStructureJSON["@productCode"]=this.config.productCode,this.navigationStructureJSON["@actionUrl"]=this.baseUrl,this.navigationStructureJSON["@searchValue"]=this.getURLParameterByName("search")||"",this.updateCurrentStartRootChapter(),this.updateSecondLevelStartChapter(),this.updateThirdLevelStartChapter(),this.navigationStructureJSON.createTilesIconUrl=(tocIconName=>this.createTilesIconUrl(tocIconName)),this.navigationStructureJSON.createPageUrl=(chapter=>this.createPageUrl(chapter)),this.navigationStructureJSON["@fullChapters"]?this.updateNavigation():this.getChapters()})},getChapters(){this.chaptersList={},this.navigationStructureJSON.childnodes.childnode&&this.navigationStructureJSON.childnodes.childnode.forEach((item,index)=>{this.loadJSON(this.createCustomAjaxUrl(item["@id"]),jsonResponse=>{this.chaptersList[item["@id"].toString()]=jsonResponse,this.chaptersList[item["@id"].toString()].createPageUrl=(chapter=>this.createPageUrl(chapter)),index===this.navigationStructureJSON.childnodes.childnode.length-1&&(this.navigationStructureJSON["@fullChapters"]=this.chaptersList,this.updateNavigation())})})},updateNavigation(){this.navigationStructureHTML=this.fillDotTemplate(this.iumnavigationl1DotTemplate,this.navigationStructureJSON),this.replaceDotContent(this.navigationStructureHTML,()=>{this.initTilesNaviLinks()})},updateCurrentStartRootChapter(){this.currentStartRootChapter=this.findRootChapter(this.navigationStructureJSON.childnodes.childnode,this.currentChapterNumber.toString()),null!==this.currentStartRootChapter&&void 0!==this.currentStartRootChapter||(this.currentStartRootChapter=this.findRootChapter(this.navigationStructureJSON.childnodes.childnode,this.currentChapterNumber.toString(),!0))},updateSecondLevelStartChapter(){this.currentStartRootChapter&&this.currentStartRootChapter.childnodes&&this.currentStartRootChapter.childnodes.childnode&&(this.secondLevelStartChapter=this.findRootChapter(this.currentStartRootChapter.childnodes.childnode,this.currentChapterNumber.toString()),null!==this.secondLevelStartChapter&&void 0!==this.secondLevelStartChapter||(this.secondLevelStartChapter=this.findRootChapter(this.currentStartRootChapter.childnodes.childnode,this.currentChapterNumber.toString(),!0)))},updateThirdLevelStartChapter(){this.secondLevelStartChapter&&this.secondLevelStartChapter.childnodes&&this.secondLevelStartChapter.childnodes.childnode&&(this.thirdLevelStartChapter=this.findRootChapter(this.secondLevelStartChapter.childnodes.childnode,this.currentChapterNumber.toString()),null!==this.thirdLevelStartChapter&&void 0!==this.thirdLevelStartChapter||(this.thirdLevelStartChapter=this.findRootChapter(this.secondLevelStartChapter.childnodes.childnode,this.currentChapterNumber.toString(),!0)))},updateLeftNavi(){this.currentChapterJSON=this.navigationStructureJSON.childnodes.childnode.filter(node=>node["@id"]===this.currentChapterNumber.toString()),this.currentChapterJSON.length>
70&&(this.currentChapterJSON[0].createPageUrl=(chapter=>this.createPageUrl(chapter)),this.leftNavigationHTML=this.fillDotTemplate(this.iumnavigationl2DotTemplate,this.currentChapterJSON[0]),this.replaceDotContent(this.leftNavigationHTML,()=>{this.initLeftNaviLinks()}))},updateContent(ispage){function replaceContent(context){context.replaceDotContent(context.contentStructureHTML,()=>{context.initContent(),context.initContentLinks()})}function addConfigData(context){context.contentStructureJSON["@jsonBaseUrl"]=context.config.jsonBaseUrl,context.contentStructureJSON["@materialNumber"]=context.config.materialNumber,context.contentStructureJSON["@baseUrl"]=context.baseUrl,context.contentStructureJSON.createPageUrl=(chapter=>context.createPageUrl(chapter))}if(ispage){let jsonContentUrl=this.createChapterAjaxUrl();this.chaptersList[this.currentChapterNumber.toString()]?(this.contentStructureJSON=this.chaptersList[this.currentChapterNumber.toString()],addConfigData(this),this.contentStructureHTML=this.fillDotTemplate(this.iumcontentDotTemplate,this.contentStructureJSON),replaceContent(this)):this.loadJSON(jsonContentUrl,jsonResponse=>{this.prepareJsonObject(jsonResponse),this.contentStructureJSON=jsonResponse,addConfigData(this),this.chaptersList[this.currentChapterNumber.toString()]=this.contentStructureJSON,this.contentStructureHTML=this.fillDotTemplate(this.iumcontentDotTemplate,this.contentStructureJSON),replaceContent(this)})}else{let rootChapter=this.findRootChapter(this.chaptersList,this.currentChapterNumber.toString(),!0),rootChapterNode=rootChapter.node?rootChapter.node:rootChapter.BSHCollectionOfElements;this.currentChapterNumber.toString()===rootChapterNode["@base-id"]?this.contentStructureJSON=rootChapterNode:this.contentStructureJSON=this.findRootChapter(rootChapterNode,this.currentChapterNumber.toString(),!0),this.contentStructureJSON&&(addConfigData(this),this.contentStructureHTML=this.fillDotTemplate(this.iumcontentDotTemplate,this.contentStructureJSON),replaceContent(this))}},findRootChapter(chaptersArray,chapterNumber,useBaseId){let matchedIndex;const idKey=useBaseId?"@base-id":"@id";function traverse(nextObject,rootKey){Array.isArray(nextObject)?function(arr){for(const item of arr)traverse(item,rootKey)}(nextObject):nextObject instanceof Object&&function(obj){for(const key of Object.keys(obj)){if(obj[idKey]===chapterNumber){matchedIndex=rootKey;break}traverse(obj[key],rootKey)}}(nextObject)}if(Array.isArray(chaptersArray))chaptersArray.forEach((item,rootKey)=>{traverse(item,rootKey)});else for(const rootKey of Object.keys(chaptersArray))traverse(chaptersArray[rootKey],rootKey);return chaptersArray[matchedIndex]},fillDotTemplate:(dotTemplate,data)=>dotTemplate(data).replace(/\s{2,}/g," "),replaceDotContent(content,callback){T.Utils.replaceContent(content,"replace",!1,callback)},initTilesNaviLinks(){let withoutPushState=!1;this.secondLevelStartChapter&&(withoutPushState=!0),this.$tilesNavi=this.$ctx.find(".m-iumnavigationl1"),this.$tilesNaviMenuItems=this.$tilesNavi.find(".tileslist .listitem .m-iumtile");if(this.$tilesNaviMenuItems.each((index,elem)=>{let $link=$(elem).find(".a-link"),tilesChapterNumber=$(elem).data(this.selectors.chapterNumber).toString();$link.on("click",(ev,data)=>{this.currentChapterNumber=tilesChapterNumber;let isPage=$(ev.currentTarget).data(this.selectors.isPage),url=this.createPageUrl(this.currentChapterNumber);this.$tilesNaviMenuItems.removeClass("active"),$(elem).addClass("active"),this.onClickTilesNaviMenuItem(url,data,ev,isPage),void 0!==data&&data.disableTracking||this.iumTracking("ium section open")})}),this.currentStartRootChapter){let chapterLinkSelector=`.a-link.disableicon[data-chapter-number='${this.currentStartRootChapter["@id"]}']`;this.currentStartRootChapter=null,this.$tilesNaviMenuItems.find(chapterLinkSelector).trigger("click",{disableTracking:!0,withoutPushState:withoutPushState,replaceState:!0})}else this.addMetaDescriptionTagInfo(),this.addCrawlerInfos()},addCrawlerInfos(){this.updateDocumentTitle(),this.addMetaIconUrlTagInfo(),this.appendRenderingFinishedIndicator()},initLeftNaviLinks(){let withoutPushState=!1;this.thirdLevelStartChapter&&(withoutPushState=!0),this.$leftNavi=this.$ctx.find(".m-iumnavigationl2"),this.$leftNaviMainMenuItems=this.$leftNavi.find(".mainmenulist .mainmenuitem > .a-button"),this.$leftNaviSubMenuItems=this.$leftNavi.find(".submenulist .submenuitem > .a-link");if(this.$leftNaviMainMenuItems.each((index,elem)=>
7{$(elem).off("click"),$(elem).on("click",(ev,data)=>{this.currentChapterNumber=$(elem).data(this.selectors.chapterNumber);let isPage=$(elem).data(this.selectors.isPage),$leftNaviSubMenu=$(elem).siblings(".submenulist"),url=this.createPageUrl(this.currentChapterNumber);this.$leftNaviMainMenuItems.removeClass("active"),$(elem).addClass("active"),$leftNaviSubMenu.slideToggle(),this.onClickLeftNaviMainMenuItem(url,data,ev,isPage),void 0!==data&&data.disableTracking||this.iumTracking("ium tab open")})}),this.$leftNaviSubMenuItems.each((index,elem)=>{$(elem).on("click",(ev,data)=>{this.currentChapterNumber=$(elem).data(this.selectors.chapterNumber);let isPage=$(elem).data(this.selectors.isPage),$mainMenuItem=$(elem).closest(".mainmenuitem").find(".a-button");this.$leftNaviMainMenuItems.removeClass("active"),$mainMenuItem.addClass("active");let url=this.createPageUrl(this.currentChapterNumber);this.$leftNaviSubMenuItems.removeClass("active"),$(elem).addClass("active"),this.onClickLeftNaviSubMenuItem(url,data,ev,isPage),void 0!==data&&data.disableTracking||this.iumTracking("ium tab open")})}),this.secondLevelStartChapter){let secondLevelChapterLinkSelector=`[data-chapter-number='${this.secondLevelStartChapter["@id"]}']`;this.secondLevelStartChapter=null,this.$leftNaviMainMenuItems.filter(secondLevelChapterLinkSelector).trigger("click",{disableTracking:!0,withoutPushState:withoutPushState,replaceState:!0})}else this.addMetaDescriptionTagInfo(this.contentStructureJSON.shortdesc),this.addCrawlerInfos()},initContentLinks(){this.$contentContainer=this.$ctx.find(".m-iumlayoutcontainer .iumcontent"),this.$contentLinks=this.$contentContainer.find(".a-st4link"),this.$contentLinks.each((index,elem)=>{$(elem).on("click",ev=>{this.currentChapterNumber=$(elem).data(this.selectors.chapterNumber);let url=this.createPageUrl(this.currentChapterNumber);this.onClickContentLink(url,!1,ev)})})}
7,initContent(){if(this.thirdLevelStartChapter){let thirdLevelChapterLinkSelector=`[data-chapter-number='${this.thirdLevelStartChapter["@id"]}']`;this.thirdLevelStartChapter=null,this.thirdLevel=!0,this.$leftNaviSubMenuItems.filter(thirdLevelChapterLinkSelector).trigger("click",{disableTracking:!0,withoutPushState:!1,replaceState:!0})}else"2"!==this.contentStructureJSON["@level"]||this.thirdLevel||(this.addMetaDescriptionTagInfo(this.contentStructureJSON.shortdesc),this.thirdLevel=!1);"3"===this.contentStructureJSON["@level"]&&(this.addMetaDescriptionTagInfo(this.contentStructureJSON.shortdesc),this.thirdLevel=!1)},createTilesIconUrl(tocIconName){return`${this.config.jsonBaseUrl}/${this.config.materialNumber}/assets/img/tocicons/icon_${tocIconName}.svg`},createPageUrl(chapter){return`${this.baseUrl}/${chapter}${this.queryParams}`},createIndexAjaxUrl(){return`${this.config.jsonBaseUrl}/${this.config.materialNumber}/${this.config.targetCulture}/json/index.json`},createChapterAjaxUrl(){return`${this.config.jsonBaseUrl}/${this.config.materialNumber}/${this.config.targetCulture}/json/${this.currentChapterNumber}.json`},createCustomAjaxUrl(chapterNumber){return`${this.config.jsonBaseUrl}/${this.config.materialNumber}/${this.config.targetCulture}/json/${chapterNumber}.json`},onClickTilesNaviMenuItem(url,data,ev,ispage){ev.preventDefault(),this.updateContentAndState(url,data,ispage),this.updateLeftNavi();let viewport=T.Utils.getViewport();"tablet"===viewport||"mobile"===viewport?this.scrollMeIntoView():this.scrollMeIntoView(!0)},onClickLeftNaviMainMenuItem(url,data,ev,ispage){ev.preventDefault(),this.updateContentAndState(url,data,ispage);let viewport=T.Utils.getViewport();"tablet"===viewport||"mobile"===viewport?this.scrollMeIntoView():this.scrollMeIntoView(!0)},onClickLeftNaviSubMenuItem(url,data,ev,ispage){ev.preventDefault(),this.updateContentAndState(url,data,ispage);let viewport=T.Utils.getViewport();"tablet"===viewport||"mobile"===viewport?this.scrollMeIntoView():this.scrollMeIntoView(!0)},onClickContentLink(url,data,ev){ev.preventDefault(),this.setCurrentStateUrl(url,data),this.updateTilesNavi();let viewport=T.Utils.getViewport();"tablet"===viewport||"mobile"===viewport?this.scrollMeIntoView():this.scrollMeIntoView(!0)},updateContentAndState(url,data,ispage){this.updateLeftNavi(),this.setCurrentStateUrl(url,data),this.updateContent(ispage),this.updateDocumentTitle(),this.addMetaIconUrlTagInfo()},updateDocumentTitle(){const $mainChapter=$(".iumleftnavi .pagename"),$subsection=$(".iumleftnavi .mainmenuitem .a-button.active span"),$secondSubsection=$subsection.closest(".mainmenuitem").find(".submenuitem .active span"),mainChapter=$mainChapter.length&&$mainChapter[0].innerText,subsection=$subsection.length&&$subsection[0].innerText,secondSubsection=$secondSubsection.length&&$secondSubsection[0].innerText;mainChapter&&subsection&&secondSubsection?document.title=`${secondSubsection} - ${subsection} - ${mainChapter}`:mainChapter&&subsection?document.title=`${subsection} - ${mainChapter}`:mainChapter&&(document.title=`${mainChapter}`)},setCurrentStateUrl(url,data){let navigateFunc=history.pushState,withoutPushState=!1;data&&data.withoutPushState&&(withoutPushState=!0),withoutPushState||(data&&data.replaceState&&(navigateFunc=history.replaceState),navigateFunc.call(history,{currentStateUrl:url},document.title,url))},onPopState(){this.getSearchResults(void 0,!1),null!=history.state&&null!=history.state.currentStateUrl&&(this.hostUrl=history.state.currentStateUrl,this.setRouteParams(),this.updateTilesNavi(),this.addTitleTagInfo())},scrollMeIntoView(desktop){let $content=this.$ctx.find(".iumcontent");desktop?setTimeout(()=>{$(document).scrollTop(this.$tilesNavi.offset().top)},500):setTimeout(()=>{$content[0].scrollIntoView()},500)},initIumSearchResultsPagination(){const molecule=document.getElementById("IUMPagination");if(!molecule)return;const onNewPageSelectCallback=page=>{this.getSearchResults(page,!0,!0);let viewport=T.Utils.getViewport();"tablet"===viewport||"mobile"===viewport?this.scrollMeIntoView():this.scrollMeIntoView(!0)};molecule.module?molecule.module.listenToSelectPage(onNewPageSelectCallback):(molecule.callbacks=molecule.callbacks||[],molecule.callbacks.push(onNewPageSelectCallback))},getSearchResults(currentPage,shouldUpdateUrl=!0,urlPageParamHidden=!1){const searchText=this.getURLParameterByName("search");if(!searchText)return!1;const resultsIndexStart=10*((currentPage=currentPage||parseInt(this.getURLParameterByName("page"))||1)-1);shouldUpdateUrl&&this.insertURLParam("page",currentPage,{withoutPushState:1===currentPage&&!urlPageParamHidden});const request=T.Utils.startAjaxRequest(!1,{url:this.config.searchEndpoint,dataType:"json",data:{q:searchText,documentType:this.config.documentType,referenceId:this.config.materialNumber,from:resultsIndexStart,max:10,t
7ype:"full"}});if(!request)return!1;request[0].done(jsonResponse=>{this.searchResultsStructureJSON=jsonResponse,this.searchResultsStructureJSON.result.page=currentPage,this.searchResultsStructureHTML=this.fillDotTemplate(this.iumsearchresultsDotTemplate,this.searchResultsStructureJSON),this.replaceDotContent(this.searchResultsStructureHTML,()=>{this.initIumSearchResultsPagination()})})},getURLParameterByName:name=>T.Utils.getURLParameterByName(name),insertURLParam(key,value,data){key=encodeURIComponent(key),value=encodeURIComponent(value);const param=document.location.search.substr(1).split("&");let i=0;for(;i<param.length;i++)if(param[i].startsWith(key+"=")){let pair=param[i].split("=");pair[1]=value,param[i]=pair.join("=");break}i>=param.length&&(param[param.length]=[key,value].join("="));let params=param.join("&");const queryStart=this.hostUrl.indexOf("?");let urlWithoutQueryParams=this.hostUrl;-1==queryStart?this.queryParams="":(urlWithoutQueryParams=this.hostUrl.substring(0,queryStart),this.queryParams=`?${params}`),this.hostUrl=`${urlWithoutQueryParams}?${params}`,this.setCurrentStateUrl(`${urlWithoutQueryParams}?${params}`,data)},removeURLParam(param){if(param="undefined"!=param?param:"",!this.getURLParameterByName(param))return!1;const regex=new RegExp("[?&]"+param+"[^&]+","");history.replaceState(null,null,location.href.split("?")[0]+this.queryParams.replace(regex,"").replace(/^&/,"?")),this.queryParams=this.queryParams.replace(regex,"").replace(/^&/,"?"),this.hostUrl=location.href.split("?")[0]+this.queryParams.replace(regex,"").replace(/^&/,"?")},iumTracking(trackType){$(".m-iumsearchresults").empty(),this.removeURLParam("search"),this.removeURLParam("page");const dataValues=this.createDataValues();T.Utils.getLayout().trackValues(trackType,dataValues)},createDataValues(){let dataValues={ium_material_number:this.config.materialNumber,ium_node_id:this.currentChapterNumber.toString()};return this.config.productCode&&(dataValues.products=[{product_id:this.config.productCode,product_brand:this.config.brandName}]),dataValues}})}(jQuery),function($){T.Module.LoadDataController=T.createModule({start(resolve){return this.$ctx=$(this._ctx),resolve()},init(options){return this.config=options,this._config(this.config)},execute(options){const dataLoadedCb=options.dataLoaded?options.dataLoaded:data=>{},successCb=options.success?options.success:data=>{},errorCb=options.error?options.error:err=>{},params=options.params||{};return this._load(params,data=>(this._dataLoaded(data),dataLoadedCb(data),this._render(data,successCb,errorCb)),errorCb)},handleError:err=>console.error(err),_config(config){},_load(params,successCb,errorCb){},_dataLoaded(data){},_render(data,successCb,errorCb){}})}(jQuery),function($){T.Commons.ControllerInitializer.register("RecaptchaController","data-recaptcha-controller"),T.Module.RecaptchaController=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.config=this.$ctx.data("recaptchaControllerConfiguration"),this.$form=this.$ctx.closest("form"),this.$tokenInput=this.$form.find(".js-recaptcha-response"),this.siteKey=this.config["data-site-key"],this.locale=this.config["data-locale"],this.isEnterprise=this.config["data-enterprise-version"],this.triggerRecaptcha=!0,this.$currentButton=$(),this.$ctx.on("click",ev=>{this.$currentButton=$(ev.currentTarget)}),this._events.on("googlerecaptcha:validate",data=>{this.triggerRecaptchaAPI(data,this.isEnterprise?grecaptcha.enterprise:grecaptcha)}),this.$form.on("keydown",ev=>{this.lastPressedKey=ev.which,ev.stopImmediatePropagation()}),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Commons.ScriptLoader.loadOnceGoogleRecaptchaAPI(this.siteKey,this.locale,this.isEnterprise))},triggerRecaptchaAPI(data,recaptchaObject){if((data&&data.ev&&data.ev.originalEvent&&(this.$currentButton.is(this.$ctx)||13===this.lastPressedKey)||data.handleSignInAjax)&&data.allowSubmit&&(data.ev.preventDefault(),data.handleSignInAjax&&!this.triggerRecaptcha&&this._events.emit("handleSignInAjax",data.ajaxParams),this.triggerRecaptcha)){const action=this.$form.attr("action");recaptchaObject.ready(()=>{recaptchaObject.execute(this.siteKey,{action:"submit"}).then(token=>{this.triggerRecaptcha=!1,this.$tokenInput.val(token),data.handleSignInAjax&&data.ajaxParams&&this._events.emit("handleSignInAjax",data.ajaxParams),action&&"#"!==action&&this.$form.submit()})})}}})}(jQuery),function($){T.Module.RedirectController=T.createModule({start(resolve){if(this.$ctx=$(this._ctx),T.Utils.allSynced=!1,this.config=this.$ctx.data("c
7onfig")||{},this._selector={selectorErrorBox:".js-errorbox",selectorPaymentButton:".js-payment-button",selectorLoaderLayer:".js-loader-static",selectorForm:"form"},this.elm={$errorBox:$(this._selector.selectorErrorBox,this.$ctx),$paymentButton:$(this._selector.selectorPaymentButton,this.$ctx),$loaderLayer:$(this._selector.selectorLoaderLayer,this.$ctx),$form:$(this._selector.selectorForm,this.$ctx)},"in-progress"===this.config.paymentStatus)this.startPolling();else if(void 0!==this.config.delayRedirectInSeconds){let delay=this.config.delayRedirectInSeconds;"string"==typeof this.config.delayRedirectInSeconds&&(delay=parseInt(this.config.delayRedirectInSeconds)||0),this.config.redirectUrl?window.setTimeout(()=>{this.executeRedirect()},1e3*delay):this.elm.$form.length>0&&window.setTimeout(()=>{this.executeSubmit()},1e3*delay)}resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0)},startPolling(){this.elm.$loaderLayer.removeClass("is-hidden"),this.elm.$paymentButton.prop("disabled",!0),this.checkPaymentStatus()},checkPaymentStatus(){let ctx=this;const method=this.config.method||"GET",contentType=this.config.contenttype||"application/json; charset=utf-8";return $.ajax({url:this.config.pollUrl,cache:this.config.cache||!1,type:method,crossDomain:this.config.crossdomain||null,dataType:this.config.datatype||"JSON",contentType:"get"!==method.toLowerCase()&&contentType,success:(data,textStatus,jqXHR)=>"DONE"===data.result?(ctx.executeRedirect(),!0):(setTimeout(()=>{ctx.checkPaymentStatus()},ctx.config.intervalTime||2e3),!0),error:(jqXHR,textStatus,errorThrown)=>(ctx.executeRedirect(),!1)})},executeRedirect(){window.top.location=this.config.redirectUrl},executeSubmit(){this.elm.$form.submit()}})}(jQuery),function($){T.Module.ScrollToTargetController=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.scrollTargetSelector=this.$ctx.data("scroll-target-selector")||".js-scroll-target",this.preventScrollingSelectors=this.$ctx.data("prevent-scrolling-selectors"),this.$scrollTarget=this.$ctx.find(this.scrollTargetSelector),this.$preventScrollingElements=this.$ctx.find(this.preventScrollingSelectors),this.stickyHeaderDisabledTime=this.$ctx.data("sticky-header-disabled-time")||250,this.$headerRebrush=$(".js-header-rebrush"),this.$headerRebrushMenu=this.$headerRebrush.find(".content .menu"),this.hasHeaderRebrush=this.$headerRebrush.length>0,this.scrollToTarget(),resolve()},scrollToTarget(){$(window).on("load",()=>{if(window.sessionStorage.getItem("scrollToTarget")&&(this._events.emit("header:temporarily-turnoff-sticky",{howLongShouldItBeDisaled:this.stickyHeaderDisabledTime}),this.$scrollTarget.length>0&&this.$preventScrollingElements.length<1))if(this.hasHeaderRebrush){const scrollDelta=this.$scrollTarget.offset().top-2*this.$headerRebrushMenu.outerHeight(!0);T.Utils.scrollToTop(scrollDelta)}else T.Utils.scrollToTop(this.$scrollTarget);window.sessionStorage.removeItem("scrollToTarget")})}})}(jQuery),function($){T.Module.SecondaryTagManager=T.createModule({start(resolve){return this.isSynced=!1,this.$ctx=$(this._ctx),this.secondaryDomain=this.$ctx.data("secondary-domain"),this.secondaryAccountId=this.$ctx.data("secondary-account-id"),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.secondaryDomain&&this.secondaryAccountId&&this.insertSecondaryTagManager())},insertSecondaryTagManager(){const tagManagerScript=document.createElement("script");tagManagerScript.setAttribute("type","text/javascript"),tagManagerScript.innerText=`(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://${this.secondaryDomain}/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','${this.secondaryAccountId}');`,$(this.$ctx).remove(),document.head.appendChild(tagManagerScript)}})}(jQuery);const st4FaqSchemaContext="https://schema.org",st4FaqSchemaType="FAQPage",st4FaqSchemaQuestion="Question",st4FaqSchemaAnswer="Answer";function __guard__(value,transform){return void 0!==value&&null!==value?transform(value):void 0}function __guard__(value,transform){return void 0!==value&&null!==value?transform(value):void 0}!function($){T.Module.SelfhelpController=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.config=this.$ctx.data("c
7onfig")||{},this.articleId=this.config.articleId,this.ajaxUrl=this.createAjaxUrl(),this.currentPageUrl=window.location.href,this.pageBaseUrl=this.config.baseUrl?this.config.baseUrl:window.location.origin,this.jsonDobUrl=this.config.jsonDobUrl,this.businessCluster=this.config.selfhelpPageProdDivision,this.ajaxProductTeaserUrl=this.config.ajaxProductTeaserUrl,this.articleOverviewSection=$("#article-overview"),this.relevantArticlesSection=$("#relevant-articles"),this.articlePage=$(".article"),this.articleToggleBoxDisplayThreshold=this.config.articleToggleBoxDisplayThreshold?this.config.articleToggleBoxDisplayThreshold:20,this.$title=$("head title"),this.$pageTitle=$(".m-pagetitle"),this.$metaTitle=$("meta[name=title]"),this.$metaDesc=$("meta[name=description]"),this.$richMetaTitle=$('meta[property="og:title"]'),this.$richMetaDesc=$('meta[property="og:description"]'),this.$richMetaImage=$('meta[property="og:image"]'),this.$breadCrumbs=$(".m-breadcrumb-rebrush"),this.categoryPageTitle=this.$title.text(),this.categoryPageMetaTitle=this.$metaTitle.attr("content"),this.categoryPageMetaDesc=this.$metaDesc.attr("content"),this.$articlePageRichMetaTitle=this.$richMetaTitle.attr("content"),this.$articlePageRichMetaDesc=this.$richMetaDesc.attr("content"),this.$head=$("head"),this.$canonicalLinkTag=this.$head.find("link[rel=canonical]"),this.addCanonicalTag(),this.extendBreadcrumbs(),this.$relevantArticlesTemplate=this.$ctx.find("#selfhelp-relevant-articles"),this.$articleOverviewTemplate=this.$ctx.find("#selfhelp-article-overview"),this.$contentTemplate=this.$ctx.find("#selfhelp-content"),this.$dobLinkTemplate=this.$ctx.find("#selfhelp-dob-link"),this.relevantArticlesDotTemplate=this.$relevantArticlesTemplate.length&&doT.template(this.$relevantArticlesTemplate.html()),this.articleOverviewDotTemplate=this.$articleOverviewTemplate.length&&doT.template(this.$articleOverviewTemplate.html()),this.contentDotTemplate=this.$contentTemplate.length&&doT.template(this.$contentTemplate.html()),this.dobLinkDotTemplate=this.$dobLinkTemplate.length&&doT.template(this.$dobLinkTemplate.html()),this.getContent(),this.setCurrentStateUrl(this.currentPageUrl,!0),T.Utils.registerPopStateHandler("selfhelp-popstate",()=>this.onPopState()),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.trackingDelayId="st4article-"+this.$ctx.data("t-id"),this.bodyModule=T.Utils.application.getModuleById($("body").data("t-id")),this.bodyModule.delayPageLoadTracking(this.trackingDelayId))},extendBreadcrumbs(){const $breadcrumbsListContainer=this.$breadCrumbs.find(".crumb-links-wrap");let $breadcrumbTemplate=$breadcrumbsListContainer.find(".crumb").first().clone();const $breadcrumbTemplateLink=$breadcrumbTemplate.find(".a-link");$breadcrumbTemplate.addClass("js-selfhelp-category-breadcrumb");const urlParts=this.pageBaseUrl.split("/"),categoryName=urlParts[urlParts.length-1];if($breadcrumbTemplateLink.attr("href",this.pageBaseUrl),$breadcrumbTemplateLink.find("span").text(`${categoryName.charAt(0).toUpperCase()}${categoryName.slice(1)}`),$breadcrumbsListContainer.append($breadcrumbTemplate),"index"!==this.articleId){const $breadcrumbArticleTemplate=$breadcrumbTemplate.clone(),$breadcrumbArticleTemplateLink=$breadcrumbArticleTemplate.find(".a-link");$breadcrumbArticleTemplate.removeClass("js-selfhelp-category-breadcrumb"),$breadcrumbArticleTemplate.addClass("js-selfhelp-article-breadcrumb"),$breadcrumbArticleTemplateLink.attr("href",this.createPageUrl(null,this.articleId)),$breadcrumbArticleTemplateLink.find("span").text(this.articleId),$breadcrumbsListContainer.append($breadcrumbArticleTemplate)}},addCanonicalTag(){this.$canonicalLinkTag.length>0||this.$head.prepend('<link rel="canonical" href="" />'),this.$canonicalLinkTag=this.$head.find("link[rel=canonical]")},createSEOimageUrl(){return`${this.createImageBaseUrl().join("/")}/`},createAjaxUrl(){let baseUrl=this.config.jsonBaseUrl;return this.serviceProductCategory=baseUrl.split("/").map(e=>1===e.length?e:"").join(""),"/"!=baseUrl.substr(-1)&&(baseUrl+="/"),`${baseUrl}${this.articleId}.json`},getContent(){const request=T.Utils.startAjaxRequest(!1,{url:this.ajaxUrl,dataType:"json"});if(!request)return!1;request[0].done(jsonResponse=>{this.renderContent(jsonResponse)})},getSeoTitle(obj){if(!obj["seo-root"])return"";const seoEntryTitle=this.searchForSeoEntry(obj["seo-root"],"SEO category page title");return seoEntryTitle&&seoEntryTitle.p&&seoEntryTitle.p.$?seoEntryTitle.p.$:""}
7,getSeoImage(obj){if(!obj["seo-root"])return"";const seoEntryImage=this.searchForSeoEntry(obj["seo-root"],"SEO meta info");return seoEntryImage&&seoEntryImage["image-container"]&&seoEntryImage["image-container"].img&&seoEntryImage["image-container"].img["@href"]?`${this.createSEOimageUrl()}${seoEntryImage["image-container"].img["@href"]}`:""},getSeoDescription(obj){if(!obj["seo-root"])return"";const seoEntryDescription=this.searchForSeoEntry(obj["seo-root"],"SEO meta info");return seoEntryDescription&&seoEntryDescription.p&&seoEntryDescription.p.$?seoEntryDescription.p.$:""},searchForSeoEntry(obj,searchTerm){let seoEntry;function traverse(jsObject,jsPath){seoEntry||(jsObject["@_path"]=jsPath,Array.isArray(jsObject)?function(arr,jsPath){seoEntry||arr.forEach(function(item,index){"object"==typeof item&&traverse(item,jsPath+"["+index+"]")})}(jsObject,jsPath):"object"==typeof jsObject&&function(obj,jsPath){if(!seoEntry)for(var key in obj)if(obj.hasOwnProperty(key)){let item=obj[key];null!==item&&"object"==typeof item&&("seo-entry"===key&&obj["seo-entry"]["@name"]===searchTerm&&(seoEntry=obj["seo-entry"]),traverse(item,jsPath+(jsPath?".":"")+key))}}(jsObject,jsPath))}return traverse(obj,""),seoEntry},renderContent(json){if("index"!==this.articleId)json["@articleIconUrl"]=this.getSeoImage(json),this.setArticlePageMeta(json),this.renderArticleContent(json).then(()=>{this.generateFAQSchema(json),this._events.emit("updateArticleFeedbackTrackingData",this.articleId,this.serviceProductCategory),this.getDobLinkContent(json).then(()=>{this.appendRenderingFinishedIndicator(json)}),this.recursiveNodeIteration(json)}),this.hideOverviewContent();else{this.setCategoryPageMeta();const enrichedJSON=this.getEnrichedArticleLinkJSON(json);this.renderRelevantArticles(enrichedJSON).then(()=>{this.renderArticleOverview(enrichedJSON).then(()=>{this.appendRenderingFinishedIndicator()})}),this.removeFAQSchema(),this.hideArticleContent()}},appendRenderingFinishedIndicator(json){document.getElementById("internal-document-rendering-finished")||$("body").append('<div id="internal-document-rendering-finished" />'),this.trackSt4Article(),this.isArticleClicked&&(this.trackSt4ArticleOnClick(json),this.isArticleClicked=!1)},getDobLinkContent(json){const diagnosisCode=json["@dc-code"],productDivision=json["@eg"];if(!(diagnosisCode&&productDivision||this.config.debug))return Promise.resolve();const request=T.Utils.startAjaxRequest(!1,{url:this.jsonDobUrl+"?diagnosisCode="+diagnosisCode+"&productDivision="+productDivision+"&businessCluster="+this.businessCluster,dataType:"json"});return request?new Promise(resolve=>{request[0].done(jsonResponse=>{jsonResponse&&jsonResponse.link&&this.renderDobLinkContent(jsonResponse).then(()=>resolve()),resolve()})}):Promise.resolve()},recursiveNodeIteration(jsonNode){this.checkForProductCodes(jsonNode),this.checkForBshCollection(jsonNode),jsonNode.node&&this.recursiveNodeIteration(jsonNode.node)},checkForProductCodes(jsonNode){if("Tool"===jsonNode["@class"]&&"article numbers"===jsonNode["@detailed-topic-type_part"]){const productCodes=this.getProductCodes(jsonNode);this.getProductTeasers(productCodes,jsonNode["@id"])}},getProductCodes(jsonNode){const productCodes=[];return $.each(jsonNode.properties.property,(index,value)=>{value.proptype.p.$&&productCodes.push(value.proptype.p.$)}),productCodes},checkForBshCollection(jsonNode){$.each(jsonNode.BSHCollectionOfElements,(index,value)=>{this.recursiveNodeIteration(value)})},getProductTeasers(productCodes,containerId){if(!productCodes)return Promise.resolve();const request=T.Utils.startAjaxRequest(!1,{url:this.ajaxProductTeaserUrl+"&productCodes="+productCodes.toString(),dataType:"html"});return request?new Promise(resolve=>{request[0].done(htmlResponse=>{htmlResponse&&this.renderProductTeasers(htmlResponse,containerId).then(()=>resolve()),resolve()})}):Promise.resolve()},hideOverviewContent(){$(".m-pagetitle").remove(),$(".shortdesc").hide(),this.hideContentTextMedia(),this.$ctx.find(".overview").hide(),this.$ctx.find(".article").show()},hideArticleContent(){$(".m-hero > .g-layout-full").first().find(".g-col").first().prepend(this.$pageTitle),this.showContentTextMedia(),this.$ctx.find(".article").hide(),this.$ctx.find(".overview").show()},hideContentTextMedia(){$("#content").children(":first").is($(".m-selfhelpcontroller"))||$("#content").children(":first").nextUntil(".m-selfhelpcontroller").addBack().hide()},showContentTextMedia(){$("#content").children(":first").is($(".m-selfhelpcontroller"))||$("#content").children(":first").nextUntil(".m-selfhelpcontroller").addBack().show()},renderArticleContent(json){return this.contentDotTemplate?new Promise(resolve=>{const enrichedJSON=this.enrichArticleContentJSON(json);this.contentHTML=this.fillDotTemplate(this.contentDotTemplate,enrichedJSON),this.replaceDotContent(this.contentHTML,()=>{this.scrollToPageContent(this.articlePage),resolve()})}):Promise.resolve()},renderRelevantArticles(json){if(!this.relevantArticlesDotTemplate)return Promise.resolve();const mostRelevantArticlesCategoryJSON=this.getMostRelevantArticlesCategory(json);return new Promise(resolve=>{this.relevantArticlesHTML=this.fillDotTemplate(this.relevantArticlesDotTemplate,mostRelevantArticlesCategoryJSON),this.replaceDotContent(this.relevantArticlesHTML,()=>{this.initArticleLinks(this.relevantArticlesSection),window.scrollY&&this.scrollToPageContent(this.relevantArticlesSection),resolve()})})},renderArticleOverview(json){return this.articleOverviewDotTemplate?new Promise(resolve=>{const allArticles=this.getUniqueArticles(json);
7if(allArticles.forEach(article=>{article["@iconBaseUrl"]=this.createSEOimageUrl()}),allArticles.length<=this.articleToggleBoxDisplayThreshold)this.articleOverviewHTML=this.fillDotTemplate(this.articleOverviewDotTemplate,allArticles);else{let allFaultGroupedArticles=this.getFaultGroupedArticles(json);allFaultGroupedArticles.groups.forEach(group=>{group.articles.forEach(article=>{article["@iconBaseUrl"]=this.createSEOimageUrl()})}),this.articleOverviewHTML=this.fillDotTemplate(this.articleOverviewDotTemplate,allFaultGroupedArticles)}this.replaceDotContent(this.articleOverviewHTML,()=>{this.initArticleLinks(this.articleOverviewSection),resolve()})}):Promise.resolve()},renderDobLinkContent(json){return this.dobLinkDotTemplate?new Promise(resolve=>{this.dobLinkHTML=this.fillDotTemplate(this.dobLinkDotTemplate,json),this.replaceDotContent(this.dobLinkHTML,()=>{resolve()})}):Promise.resolve()},renderProductTeasers(html,containerId){const $container=this.$ctx.find('.js-selfhelp-product-teasers[data-container-id="'+containerId+'"]');return $container?($container.html(html),new Promise(resolve=>{T.Utils.initializeModules($container,()=>{resolve()})})):Promise.resolve()},fillDotTemplate:(dotTemplate,data)=>dotTemplate(data).replace(/\s{2,}/g," "),replaceDotContent(content,callback){T.Utils.replaceContent(content,"replace",!1,callback)},getUniqueArticles(json){let dict=[],articleList=[];return json.node[0].node.forEach(articleCategory=>{articleCategory.node.forEach(article=>{dict[article["@id"]]||(articleList.push(article),dict[article["@id"]]=1)})}),articleList},getFaultGroupedArticles(json){let groupList={groupIndicator:!0,groups:[]};return json.node[0].node.forEach(articleCategory=>{let group={};group.title=articleCategory.title,group["@class"]=articleCategory["@class"],group["@id"]=articleCategory["@id"],articleCategory.metalist&&"most relevant articles"===articleCategory.metalist.meta.$?groupList.mostRelevantArticles=articleCategory:(group.articles=articleCategory.node,groupList.groups.push(group))}),groupList},setCategoryPageMeta(){this.$title.text(this.categoryPageTitle),this.$metaTitle.attr("content",this.categoryPageMetaTitle),this.$metaDesc.attr("content",this.categoryPageMetaDesc),this.$richMetaTitle.attr("content",this.$articlePageRichMetaTitle),this.$richMetaDesc.attr("content",this.$articlePageRichMetaDesc)},setArticlePageMeta(json){const pageTitle=this.createTitleText(json.title),pageDesc=this.createMetaDescriptionContent(json.shortdesc),pageMetaTitle=this.getSeoTitle(json),pageMetaDesc=this.getSeoDescription(json),pageMetaImg=this.getSeoImage(json);this.$title.text(pageTitle),pageMetaTitle?(this.$metaTitle.attr("content",pageMetaTitle),this.$richMetaTitle.attr("content",pageMetaTitle)):(this.$metaTitle.attr("content",pageTitle),this.$richMetaTitle.attr("content",pageTitle)),pageMetaDesc?(this.$metaDesc.attr("content",pageMetaDesc),this.$richMetaDesc.attr("content",pageMetaDesc)):(this.$metaDesc.attr("content",pageDesc),this.$richMetaDesc.attr("content",pageDesc)),this.$richMetaImage.attr("content",pageMetaImg)},createTitleText(title){return`${title?title.$+" | ":""}${this.config.brandName} ${this.config.targetCulture}`},createMetaDescriptionContent(desc){return`${desc?desc.$+" | ":""}${this.config.brandName} ${this.config.targetCulture}`},initArticleLinks(context){this.$articleLinks=context.find(".m-article-link-list .a-link"),this.$articleLinks.each((index,link)=>{link.addEventListener("click",e=>{e.preventDefault(),this.clearContent();const articleUrl=this.pageBaseUrl+"/"+link.dataset.articleid;this.setCurrentStateUrl(articleUrl,!1,!0),window.location.href=articleUrl})})},clearContent(){this.articlePage.empty(),this.articleOverviewSection.empty(),this.relevantArticlesSection.empty()},onPopState(){null!=history.state&&null!=history.state.currentStateAjaxUrl&&null!=history.state.articleId?(this.$canonicalLinkTag.attr("href",history.state.currentUrl),history.state.isArticlePage?(this.ajaxUrl=history.state.currentStateAjaxUrl,this.articleId=history.state.articleId,this.getContent()):window.location.reload()):window.location.reload()},setCurrentStateUrl(url,replace=!1,isArticlePage=!0){let canonicalUrl=url.split("?")[0].split("#")[0].replace(/\/$/,"");this.$canonicalLinkTag.attr("href",canonicalUrl);let navigateFunc=history.pushState;replace&&(navigateFunc=history.replaceState),navigateFunc.call(history,{currentStateAjaxUrl:this.ajaxUrl,articleId:this.articleId,currentUrl:url,isArticlePage:isArticlePage},document.title,url)},enrichArticleContentJSON(json){let enrichedJSON=json;const[jsonBaseUrl,materialCode]=this.createImageBaseUrl();return enrichedJSON["@jsonBaseUrl"]=jsonBaseUrl,enrichedJSON["@materialNumber"]=materialCode,enrichedJSON.createPageUrl=((articleBaseID,articleId)=>this.createPageUrl(articleBaseID,articleId)),enrichedJSON},getMostRelevantArticlesCategory(json){let articleCategoryJSON={};return json.node[0].node.forEach(articleCategory=>{articleCategory.metalist&&"most relevant articles"===articleCategory.metalist.meta.$&&(articleCategoryJSON=articleCategory)}),articleCategoryJSON.node.forEach(article=>{article["@iconBaseUrl"]=this.createSEOimageUrl()}),articleCategoryJSON},getEnrichedArticleLinkJSON(json){let enrichedJSON=json;return enrichedJSON.node[0].node.forEach(articleCategory=>{articleCategory.node.forEach(article=>{article.url=this.createPageUrl("",article["@id"])})}),enrichedJSON},createImageBaseUrl(){const baseUrlElements=this.config.jsonBaseUrl.split("/");return[`${baseUrlElements[0]}//${baseUrlElements[2]}/${baseUrlElements[3]}/${baseUrlElements[4]}`,baseUrlElements[5]]},createPageUrl(articleBaseID,articleId){return`${this.pageBaseUrl}/${articleId}`},scrollToPageContent(content){$(".m-pagetitle").is(":visible")?setTimeout(()=>{$(document).scrollTop($(".m-pagetitle").offset().top-50)},250):setTimeout(()=>{$(document).scrollTop(content.offset().top-200)},250)},trackSt4ArticleOnClick(json){let pageDimensions=T.Utils.getPageDimensions();pageDimensions&&(pageDimensions.page_name=`selfhelpST4page|${json["@eg"]}|${this.articleId}`,pageDimensions.page_type="selfhelpST4ArticlePage",pageDimensions.selfhelp_article_id=this.articleId,T.Utils.getLayout().trackValues("pageview",pageDimensions))},trackSt4Article(){this.dobLink=this.$ctx.find(".js-st4doblink");let dataPageDimensions={};this.$ctx.find(".js-selfhelp-product-teasers").length>0&&(dataPageDimensions.article_included_links="productlinks"),this.dobLink.length>0&&(dataPageDimensions.article_included_links=dataPageDimensions.article_included_links?`${dataPageDimensions.article_included_links},doblinks`:"doblinks",this.dobLink.on("click",()=>this.trackDOBLink())),Object.keys(dataPageDimensions).length>0&&this._events.emit("tracking:page-dimensions",dataPageDimensions),this.bodyModule.continuePageLoadTracking(this.trackingDelayId)},trackDOBLink(){T.Utils.getLayout().trackValues("selfhelp article dob click",{})},generateFAQSchema(data){if(data.BSHCollectionOfElements){let questionNodes=[];if(data.BSHCollectionOfElements.map(element=>{element.node&&"Question"===element.node["@class"]&&questionNodes.push({id:element.node["@base-id"],question:element.node.title.$})}),questionNodes.length){let ST4FaqSchema={};ST4FaqSchema["@context"]=st4FaqSchemaContext,ST4FaqSchema["@type"]="FAQPage",ST4FaqSchema.mainEntity=[],questionNodes.map(node=>{ST4FaqSchema.mainEntity.push({"@type":"Question",name:node.question,acceptedA
7nswer:{"@type":"Answer",text:$(`#${node.id}`).html()}})});let ST4FaqSchemaData=JSON.stringify(ST4FaqSchema);T.Utils.updateHeadWithSchemaLDJson(ST4FaqSchemaData,"st4-faqschema","application/ld+json")}else this.removeFAQSchema()}else this.removeFAQSchema()},removeFAQSchema(){$("#st4-faqschema").length&&$("#st4-faqschema").remove()}})}(jQuery),function($){T.Module.SingleInputChoice=T.createModule({start(resolve){this.$ctx=$(this._ctx),T.Utils.allSynced=!1,this.config=this.$ctx.data("config")||{},this._selector={selectorRequestParams:".js-request-param",selectorInputChoices:"input:not(:radio):not(:checkbox):not(:hidden)",selectorInputRadioMolecules:".m-forminput-radio",selectorInputMatched:".m-forminput-radio + input",selectorSendButton:".js-ajax-send",selectorErrorBox:".js-errorbox"},this.elm={$collectionRequestParams:$(this._selector.selectorRequestParams,this.$ctx),$collectionInputChoices:$(this._selector.selectorInputChoices,this.$ctx),$collectionInputRadioMolecules:$(this._selector.selectorInputRadioMolecules,this.$ctx),$sendButton:$(this._selector.selectorSendButton,this.$ctx),$errorBox:$(this._selector.selectorErrorBox,this.$ctx)},this._events.on("t.sync",()=>this.sync()),this.elm.$sendButton.on("click",ev=>this.onSend(ev)),this.elm.$collectionInputRadioMolecules.on("click",ev=>this.onSelect(ev)),this.elm.$collectionInputChoices.on("focusout",ev=>this.onFocusout(ev)),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0)},sendRequest(ctx,ev){const postParams=[];let inputField,isValid=!0;if(this.elm.$collectionRequestParams.each(function(index){const isChecked=$(this).is(":checked"),isCheckbox=$(this).is(":checkbox"),isRadio=$(this).is(":radio"),isHidden=$(this).is(":hidden"),isElmValid=$(this).is(":valid"),isDisabled=$(this).is(":disabled"),isEmptyOrHasError=$(this).hasClass("is-empty")||$(this).hasClass("has-error");if(!isDisabled&&!isRadio&&!isCheckbox){isHidden||(!isElmValid&&isValid&&(isValid=!1),isEmptyOrHasError&&(isValid=!1));const field={name:$(this).attr("name"),value:$(this).val()};postParams.push(field),inputField=$(this)}else if(isChecked){const field={name:$(this).attr("name"),value:$(this).val()};postParams.push(field)}}),isValid){"email"===inputField.attr("type")&&$.trim(inputField.val()).length>0&&this._events.emit("tracking:generic",{trackType:"xD2C quote email"}),ctx._events.emit("loader:open",{loaderType:"layer",$trigger:ctx.elm.$sendButton});const CSRFHeader=T.Utils.getCSRFTokenHeader()||{};return $.ajax({url:this.config.url,cache:!1,headers:CSRFHeader,type:this.config.method||"POST",crossDomain:this.config.crossdomain||null,dataType:this.config.datatype||"JSON",contentType:this.config.contenttype||"application/json; charset=utf-8",data:postParams,success:(data,textStatus,jqXHR)=>(ctx.elm.$collectionRequestParams.removeClass("has-custom-error").removeClass("has-custom-success"),data.fieldId?data.error&&ctx.$(`#${data.fieldId}`).addClass("has-custom-error"):ctx.elm.$collectionInputChoices.each(function(){$(this).attr("disabled")||(data.error?$(this).addClass("has-custom-error fallback-error"):($(this).val(""),$(this).addClass("has-custom-success")))}),ctx._events.emit("loader:close",{$trigger:ctx.elm.$sendButton}),!0),error:(jqXHR,textStatus,errorThrown)=>(ctx.elm.$collectionInputChoices.each(function(){$(this).attr("disabled")||($(this).addClass("has-custom-error fallback-error"),ctx._events.emit("loader:close",{$trigger:ctx.elm.$sendButton}))}),!1)})}},onSelect(ev){const $target=$(ev.currentTarget);this.elm.$collectionInputChoices.attr("disabled","disabled"),this.elm.$collectionInputChoices.removeClass("is-empty"),this.elm.$collectionInputChoices.removeClass("has-error has-custom-error has-custom-success"),$target.next("input").removeAttr("disabled")},onFocusout(ev){const $input=$(ev.currentTarget);$input.removeClass("has-custom-error has-custom-success"),$input.val().length>0&&$input.removeClass("is-empty")},onSend(ev){ev.preventDefault();const $input=this.$ctx.find(this._selector.selectorInputMatched).not(":disabled");""===$input.val()&&$input.addClass("is-empty"),this.sendRequest(this,ev)}})}(jQuery),function($){T.Module.StickynessControllerForHeaderRebrush=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$stickyElement=this.$ctx.parent(),this.$headerRebrush=$(".o-headerrebrush");const firstStickyElement=$(".js-is-sticky")[0];this.$stickyElement.is(firstStickyElement)&&this.observeHeaderSticknessByIntersection(),resolve()},observeHeaderSticknessByIntersection(){const headerStickyPartHeight=this.getHeaderStickyPartHeight(),observer=new IntersectionObserver(([entry],observer)=>{!entry.isIntersecting&&this.isAboveTheFold(entry)&&(this.moveFromOriginalPositionToStickyContainer(),this.setAnchorScrollMarginIncludingStickyElements(),this.observeStickyElementOriginalPositionPlaceholder(),observer.disconnect())},{rootMargin:`-${headerStickyPartHeight}px 0px 0px 0px`,threshold:1}),stickyElement=this.$stickyElement[0];observer.observe(stickyElement)},isAboveTheFold:intersectionObserverEntry=>intersectionObserverEntry.boundingClientRect.bottom<window.innerHeight,observeStickyElementOriginalPositionPlaceholder(){const originalPositionPlaceholderElement=this.getOriginalPositionPlaceholderElement();if(!originalPositionPlaceholderElement)return;const headerStickyPartHeight=this.getHeaderStickyPartHeight();new IntersectionObserver(([entry],observer)=>{entry.isIntersecting&&(this.moveBackToOriginalPosition(),observer.disconnect(),this.observeHeaderSticknessByIntersection())},{rootMargin:`-${headerStickyPartHeight+1}px 0px 0px 0px`,threshold:1}).observe(originalPositionPlaceholderElement)},moveFromOriginalPositionToStickyContainer(){const $stickyElementsContainer=this.getStickyElementsContainer(),$placeholderForOriginalPosition=this.createElementWithSameDimensions(this.$stickyElement);this.$stickyElement.css({margin:0}),$placeholderForOriginalPosition.insertAfter(this.$stickyElement),$stickyElementsContainer.append(this.$stickyElement)},moveBackToOriginalPosition(){const $stickyElementOriginalPosition=$(".js-sticky-element-was-here");this.$stickyElement.css({margin:""}),$stickyElementOriginalPosition.replaceWith(this.$stickyElement)},createElementWithSameDimensions($original){const originalHeightWithMargin=$original.outerHeight(!0),$clone=$('<div class="js-sticky-element-was-here"></div>');return $clone.height(originalHeightWithMargin),$clone},setAnchorScrollMarginIncludingStickyElements(){const headerStickyPartHeight=this.getHeaderStickyPartHeight(),stickyElementsHeight=this.getStickyElementsHeight();T.Utils.setAnchorTargetScrollMargin(headerStickyPartHeight+stickyElementsHeight)},getHeaderStickyPartHeight(){return this.$headerRebrush.find(".conversion-bar").outerHeight()}
7,getStickyElementsHeight(){return this.getStickyElementsContainer().height()},getStickyElementsContainer(){return this.$headerRebrush.find(".js-sticky-elements")},getOriginalPositionPlaceholderElement:()=>$(".js-sticky-element-was-here")[0]})}(jQuery),function($){T.Module.TableStickyController=T.createModule({start(resolve){this.$ctx=$(this._ctx),T.Utils.allSynced=!1,this.elm={$table:this.$ctx.find("table"),$window:$(window)},T.Commons.ScriptLoader.loadOnceDataTablesLibrary(()=>(this.isFixBothColumnsEnabled=this.$ctx.data("fix-both-columns"),this.isPositionRecalculationRequired=this.$ctx.data("recalculate-position"),this.setStickyHeader=$.proxy(this.setStickyHeader,this),this.removeStickyHeader=$.proxy(this.removeStickyHeader,this),this.addStickyHeader=$.proxy(this.addStickyHeader,this),this._events.on("t.sync",()=>this.sync()),resolve()))},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0,this.initDataTable())},initDataTable(){this.elm.dataTable=this.elm.$table.DataTable({paging:!1,searching:!1,ordering:!1,scrollX:!0,info:!1,fixedColumns:{leftColumns:1,rightColumns:this.isFixBothColumnsEnabled?1:0}}),$.extend(this.elm,{$dataTableScrollHead:this.$ctx.find(".dataTables_scrollHead"),$dataTableScrollBody:this.$ctx.find(".dataTables_scrollBody"),$dataTableScrollWrapper:this.$ctx.find(".DTFC_ScrollWrapper"),$dataTableFixedColumnsHeadWrapper:this.isFixBothColumnsEnabled?this.$ctx.find(".DTFC_LeftHeadWrapper, .DTFC_RightHeadWrapper"):this.$ctx.find(".DTFC_LeftHeadWrapper"),$dataTableLeftHeadWrapper:this.$ctx.find(".DTFC_LeftHeadWrapper"),$dataTableScrollHeadFirstHeaderCell:this.$ctx.find(".dataTables_scrollHead th:first"),$dataTableLeftHeadWrapperHeaderCell:this.$ctx.find(".DTFC_LeftHeadWrapper th")}),this.calculatedData={stickyHeaderTop:this.elm.$table.offset().top,tableBottom:this.elm.$table.offset().top+this.elm.$table.outerHeight()-1*this.elm.$dataTableLeftHeadWrapper.outerHeight()},this.elm.$window.on("scroll",T.Utils.debounce(()=>this.onScroll(),200)),this.elm.$window.on("resize",T.Utils.debounce(()=>this.onWindowResize(),250))},onScroll(){return this.setStickyHeader()},onWindowResize(){this.elm.dataTable.rows().recalcHeight().draw()},setStickyHeader(){return this.elm.$dataTableScrollHead.css("width",this.elm.$dataTableScrollBody.outerWidth()),this.elm.$dataTableLeftHeadWrapperHeaderCell.css("width",this.elm.$dataTableScrollHeadFirstHeaderCell.outerWidth()),this.isPositionRecalculationRequired&&(this.calculatedData.stickyHeaderTop=this.elm.$table.offset().top,this.calculatedData.tableBottom=this.elm.$table.offset().top+this.elm.$table.outerHeight()-1*this.elm.$dataTableLeftHeadWrapper.outerHeight()),$(window).scrollTop()>this.calculatedData.stickyHeaderTop&&$(window).scrollTop()<=this.calculatedData.tableBottom?this.addStickyHeader():this.removeStickyHeader()},removeStickyHeader(){return this.elm.$dataTableFixedColumnsHeadWrapper.css({position:"relative",top:"0px"}),this.elm.$dataTableScrollHead.css({position:"relative",top:"0px"}),this.elm.$dataTableScrollHead.css("transform","translateY(0%)")},addStickyHeader(){return this.elm.$dataTableScrollHead.css("transform","translateY(0%)"),this.elm.$dataTableFixedColumnsHeadWrapper.css("transform","translateY(0%)"),this.elm.$dataTableFixedColumnsHeadWrapper.css({position:"fixed",top:"0px",zIndex:"1",left:"auto"}),this.elm.$dataTableScrollHead.css({position:"fixed",top:"0px",zIndex:"1"}),this.elm.$dataTableScrollWrapper.css({height:""})}})}(jQuery),function($){T.Module.TrackingByUrlParamController=T.createModule({start(resolve){this.$ctx=$(this._ctx);const{urlParam:urlParam,urlValue:urlValue}=this.$ctx.data("tbup"),{trackType:trackType,dataValues:dataValues}=this.$ctx.data("tbup").trackingData;T.Utils.getURLParameterByName(urlParam)===urlValue&&this._events.emit("tracking:generic",{trackType:trackType,trackData:dataValues}),resolve()}})}(jQuery),function($,doT){T.Commons.ControllerInitializer.register("TypeaheadController","data-typeahead-controllers"),T.Module.TypeaheadController=T.createModule({start(resolve){return this.$ctx=$(this._ctx),T.Utils.allSynced=!1,this.isSynced=!1,this.config=this.$ctx.data("typeaheadConfiguration"),this.layerContainsModuls=!1,this.stateclass={error:".has-error, .is-invalid, .has-ajax-error"},this.dataAttributes={fieldIdentifier:"autosuggestFieldIdentifier"},this.fields={},this.responseFields={},this.dependingFields=[],this.suggestionOptions=[],this.selector={scriptTemplateType:"data-ajax-template",suggestLayers:".js-suggest-layer",replaceContainer:"data-replace-container",replaceId:"data-replace-id"},this.suggestResultsRowSelector=".js-typeahead-row",this.suggestItemCurrentClass="state-current",this.$currentSelectedItem=!1,this.alwaysUpdateErrorState=!1,this.typeaheadMinLength=this.config.minlength||2,this.id=++window.typeaheadControllerId||(window.typeaheadControllerId=1),this.$form=this.$ctx.parent("form"),$(document).on(`mousedown.typeahead-${this.id}`,`${this.selector.suggestLayers} ${this.suggestResultsRowSelector}`,ev=>this.onClickSuggestLayer(ev)),$(document).on(`change.typeahead-${this.id}`,`${this.selector.suggestLayers} ${this.suggestResultsRowSelector}`,ev=>this.onClickSuggestLayer(ev)),this.$suggestLayer=this.$ctx.find(this.selector.suggestLayers),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.initialize(!1),T.Utils.allSynced=!0)},initialize(update){if(this.collectNecessaryFields(this.config),!update)return this.filterDepen
7dingFields(this.config,this.fields),this.prepareResponseFields(this.fields),this.registerFieldListener(this.dependingFields)},getData(params,cbData){return this._getData(params,result=>this.setData(result,cbData))},setData(result,cbData){let hideLayer=!0;if(this.response=result,this._isValidResponse(result)&&(this.suggestionOptions=this._getSuggestionOptions(result),this._isSingleMatch(result,this.suggestionOptions,this.fieldValue)||this._isNoMatchAvailable(result,this.suggestionOptions,this.fieldValue)||this.suggestionOptions.length>0&&this._shouldDisplaySuggestions()&&(hideLayer=!1,this.renderSuggestLayer(this.suggestionOptions,this.$field.data(this.dataAttributes.fieldIdentifier)))),this.$suggestLayer.toggleClass("hidden",hideLayer),!this.$field.is(":focus")||this.alwaysUpdateErrorState)return this.updateErrorState()},renderTemplate(templateSelector,result,errorCase){const templateType=errorCase?"error":"success";let $tempContainer=$(templateSelector+"["+this.selector.scriptTemplateType+'="'+templateType+'"]',this.$ctx);if(0===$tempContainer.length)return void this.log(this.config.name,`no ${templateType} template defined`);return $tempContainer.length>1&&($tempContainer=$($tempContainer.get(0))),doT.template($tempContainer.html())(result)},onKeyupOrChangeInput(ev){if(!$(ev.currentTarget).is("[readonly]"))return this.isLayerVisible()&&-1!==[13,38,40].indexOf(ev.which)?this.onLayerKeyPress(ev):__guard__(this.$field.val(),x=>x.length)>=this.typeaheadMinLength?this.triggerAutocompleteRequest():this.suggestionOptions=[]},onLayerKeyPress(ev){switch(ev.which){case 13:if(this.$currentSelectedItem)return ev.preventDefault(),this.onPickCurrent(),!1;break;case 38:return ev.preventDefault(),this.onSelectPrevious(),!1;case 40:return ev.preventDefault(),this.onSelectNext(),!1}},onClickSuggestLayer(ev){const $element=$(ev.currentTarget);if($element.closest(this.$suggestLayer).length>0)return this.selectElementFromSuggestLayer($element)},onBlurField(ev){return this.updateErrorState(),this._onBlurField()},onFocusField(ev){let showLayer=!1,suggestionOptions=this.suggestionOptions||[];const inputFieldValue=this.$field.val();return suggestionOptions.length>0&&!this._isSingleMatch(this.response,suggestionOptions,this.$field.val())&&(showLayer=!0),this._shouldDisplaySuggestions()&&inputFieldValue.length>=this.typeaheadMinLength||(showLayer=!1),this.$suggestLayer.toggleClass("hidden",!showLayer),this._onFocusField()},updateErrorState(){const validInput=this.isValidInput(),shouldShowError=this._shouldShowValidation();return this.$field.trigger("setCustomError",shouldShowError&&!validInput),this.$field.toggleClass("had-focus",shouldShowError&&validInput),this._updateErrorState(this.$field.val(),validInput)},isValidInput(){const suggestionOptions=this.suggestionOptions||[];return!!this._isSingleMatch(this.response,suggestionOptions,this.fieldValue)||(this._isNoMatchAvailable(this.response,suggestionOptions,this.fieldValue),!1)},selectElementFromSuggestLayer($element){const value=$element.find("input").attr("value");return this.selectSuggestLayerValue(value),this.resetCurrentSelection(),this.closeLayer()},collectNecessaryFields(data){let $field;if(0===data.fields.length)return void this.log(data.name,"wrong configurated fields for typeahead feature");if(data.fields.length>1)return void this.log(data.name,"too many configurated fiels for typeahead feature");const field=data.fields[0];if(0===($field=null!=field.id?this.getFieldById(field):this.getFieldByName(field)).length)return this.log(data.name,`field does not exist in scope of typeahead feature: ${field.name}:${field.id}`);if($field.length>1)return this.log(data.name,`field exists multiple in scope of typeahead feature: ${field.name}:${field.id}`);{let id;if(null==$field.attr("id")&&(id=`field-unique-${this.id}`,$field.attr("id",id),$field.data(this.dataAttributes.fieldIdentifier,field.name)),field.originalIdentifier?$field.data(this.dataAttributes.fieldIdentifier,field.originalIdentifier):($field.data(this.dataAttributes.fieldIdentifier,field.id),field.originalIdentifier=field.id),field.id=$field.attr("id"),this.$field=$field,this.$field.on("blur",ev=>this.onBlurField(ev)),this.$field.on("focus",ev=>this.onFocusField(ev)),this.$field.attr("autocomplete","off"),null!=this.config.errorMessage){this.$field.next(".form-error-wrapper").find(".js-cu
7stom-error-message").html(this.config.errorMessage)}return this._initField(this.$field),this.$field.data("prevent-form-submit",!0),field.$elm=$field,this.fields[field.name]=field}},getFieldById(field){const parts=field.id.split("*");if(2===parts.length){const searchBegin=parts[0].length>0?`[id^="${parts[0]}"]`:"",searchEnd=parts[1].length>0?`[id$="${parts[1]}"]`:"";return $(searchBegin+searchEnd,this.$ctx)}return $(`#${field.id}`,this.$ctx)},getFieldByName(field){return $(`[name=${field.name}]`,this.$ctx)},filterDependingFields(config,fields){return null!=config.dependingFields?Array.from(config.dependingFields).map(dependingField=>null==fields[dependingField]?this.log(this.config.name,`depending field does not exist in list of fields: ${dependingField}`):this.dependingFields.push(fields[dependingField])):(()=>{const result=[];for(let fieldname in fields){const field=fields[fieldname];result.push(this.dependingFields.push(field))}return result})()},prepareResponseFields(fields){return(()=>{const result=[];for(let fieldname in fields){var responseName;const field=fields[fieldname];"object"==typeof field.responseName?(responseName=Object.keys(field.responseName)[0],field.valueName=Object.values(field.responseName)[0],result.push(this.responseFields[responseName]=field)):result.push(this.responseFields[field.responseName]=field)}return result})()},registerFieldListener(dependingFields){return Array.from(dependingFields).map(field=>field.$elm.is("select")?$(document).on("change",`#${field.id}`,ev=>this.onKeyupOrChangeInput(ev)):$(document).on("keyup",`#${field.id}`,T.Utils.debounce(ev=>this.onKeyupOrChangeInput(ev),this.config.delay||(this.config.delay=300))))},triggerAutocompleteRequest(){const params={};for(let field of Array.from(this.dependingFields))this.fieldValue=field.$elm.val(),params[field.requestName]=field.$elm.val();return this.getData(params,{$elm:this.$field})},renderSuggestLayer(result,targetId){const suggestTemplateSelector=`.${this.config.suggestTemplate}`,suggestResult=this.renderTemplate(suggestTemplateSelector,result,!1),$suggestLayer=this.$field.parent().find(this.selector.suggestLayers);return 0===$suggestLayer.length?this.log(this.config.name,"no suggest layer found"):$suggestLayer.length>1&&this.log(this.config.name,"multiple suggest layers found"),$suggestLayer.html(suggestResult),this.$suggestLayer.toggleClass("hidden",!0),$suggestLayer.toggleClass("hidden",!1),this.$layerOptions=this.$suggestLayer.find(this.suggestResultsRowSelector),this.$currentSelectedItem=!1},selectSuggestLayerValue(value){return this.$field.val(value),this.$field.is("select")&&this.$field.trigger("change"),this.triggerAutocompleteRequest()},onPickCurrent(){return this.selectElementFromSuggestLayer(this.$currentSelectedItem),this.resetCurrentSelection()},onSelectNext(){if((null!=this.$layerOptions?this.$layerOptions.length:void 0)>0){let $next;if(!this.$currentSelectedItem)return($next=this.$layerOptions.first()).addClass(this.suggestItemCurrentClass),this.$currentSelectedItem=$next;if(($next=this.$currentSelectedItem.next()).length>0)return this.$currentSelectedItem.removeClass(this.suggestItemCurrentClass),$next.addClass(this.suggestItemCurrentClass),this.$currentSelectedItem=$next}},onSelectPrevious(){if((null!=this.$layerOptions?this.$layerOptions.length:void 0)>0&&this.$currentSelectedItem){const $prev=this.$currentSelectedItem.prev();return $prev.length>0?(this.$currentSelectedItem.removeClass(this.suggestItemCurrentClass),$prev.addClass(this.suggestItemCurrentClass),this.$currentSelectedItem=$prev):this.resetCurrentSelection()}},isLayerVisible(){return!this.$suggestLayer.hasClass("hidden")&&(null!=this.$layerOptions?this.$layerOptions.length:void 0)>0},closeLayer(){return this.$suggestLayer.addClass("hidden")},resetCurrentSelection(){if(this.$currentSelectedItem)return this.$currentSelectedItem.removeClass(this.suggestItemCurrentClass),this.$currentSelectedItem=!1},log:msg=>console.log(`Typeahead: ${msg}`),_getSuggestionOptions:response=>[],_isValidResponse:response=>!1,_getInputFieldValueFromSuggestion:(response,optionValue)=>optionValue.value,_isSingleMatch:(response,suggestionOptions,inputValue)=>1===suggestionOptions.length&&(null!=suggestionOptions[0].value?suggestionOptions[0].value.toLowerCase():void 0)===(null!=inputValue?inputValue.toLowerCase():void 0),_isNoMatchAvailable:(response,suggestionOptions,inputValue)=>0===suggestionOptions.length,_initField($field){},_updateErrorState(fieldValue,validInput){},_shouldShowValidation:()=>!0,_shouldDisplaySuggestions:()=>!0,_onBlurField(){},_onFocusField(){},_getData(params,cb){let contentType="application/x-www-form-urlencoded; charset=utf-8";const request=this.config.ajax;return"json"===(null!=request.dataType?request.dataType.toLowerCase():void 0)&&(contentType="application/json; charset=utf-8"),$.ajax({url:request.url,cache:!1,type:request.method,dataType:request.dataType,contentType:"get"!==request.method.toLowerCase()&&contentType,data:params,success:(result,textStatus,jqXHR)=>(cb(result),!0),error:(jqXHR,textStatus,errorThrown)=>!1})}})}(jQuery,window.doT),function($){T.Module.UploadController=T.createModule({start(resolve){return this.$ctx=$(this._ctx),T.Utils.allSynced=!1,this.isSynced=!1,this.maxUploadTimeExceedTimer=null,this.select={uploadNotifyRequired:"[data-upload-required]"},this.uploadAjax=null,this._events.on("uploadcontroller:initiate",cbdata=>this.onInitiateFileUpload(cbdata)),this._events.on("uploadcontroller:start",cbdata=>this.onStartFileUpload(cbdata)),this._events.on("uploadcontroller:cancel",cbdata=>this.onCancelFileUpload(cbdata)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0)},onInitiateFileUpload(cbdata){this.isSameController(cbdata)&&cbdata.uploadRequired&&this.notifyUploadDependencies(!1)},onStartFileUpload(cbdata){if(!this.isSameController(cbdata))return;
7cbdata.notifyIsUploading(!0);let mod=this;this.notifyUploadDependencies(!1),this.sendFormData(cbdata.$form,cbdata),null!=cbdata.uploadTimeout&&cbdata.uploadTimeout>0&&(this.maxUploadTimeExceedTimer=setTimeout(()=>{mod.uploadErrorHandler(cbdata,"UPLOAD_TIMEOUT_EXCEEDED")},cbdata.uploadTimeout))},onCancelFileUpload(cbdata){this.isSameController(cbdata)&&(cbdata.notifyIsUploading(!1),this.uploadAjax.abort(),cbdata.uploadRequired||this.notifyUploadDependencies(!0))},isSameController(cbdata){return this.$ctx.is(cbdata.$uploadController)},notifyUploadDependencies(succeeded){const $notifyRequiredObjs=this.$ctx.find(this.select.uploadNotifyRequired);if($notifyRequiredObjs.length>0)return succeeded?(()=>{const result=[];for(let notifyObj of Array.from($notifyRequiredObjs))result.push(this._events.emit("form:enableSubmit",{id:$(notifyObj).data("t-id")}));return result})():(()=>{const result1=[];for(let notifyObj of Array.from($notifyRequiredObjs))result1.push(this._events.emit("form:disableSubmit",{id:$(notifyObj).data("t-id")}));return result1})()},sendFormData($form,cbdata){let formData=!1,mod=this;const CSRFHeader=T.Utils.getCSRFTokenHeader()||{};window.FormData?formData=new FormData($form[0]):console.error("Your Browser doesn't suport FormData"),this.uploadAjax=$.ajax({url:cbdata.uploadUrl,data:formData||$form.serialize(),mimeType:"multipart/form-data",cache:!1,headers:CSRFHeader,contentType:!1,processData:!1,type:"POST",success:(data,textStatus,jqXHR)=>{if("object"==typeof data&&null!=data.errorMsg&&""!==data.errorMsg)mod.uploadErrorHandler(cbdata,data.errorMsg);else{let parsedData;try{parsedData=JSON.parse(data)}catch(error){console.error(error)}mod.uploadSucceedHandler(cbdata,parsedData)}},error:(jqXHR,textStatus,errorThrown)=>{"abort"===textStatus?mod.uploadAbortAjaxHandler(cbdata):mod.uploadErrorHandler(cbdata,"NO_CONTENT_RECEIVED")}})},uploadErrorHandler(cbdata,msg){cbdata.notifyUploadError(msg),cbdata.uploadRequired||this.notifyUploadDependencies(!0)},uploadAbortAjaxHandler(cbdata){cbdata.notifyUploadAborted()},uploadSucceedHandler(cbdata,uploadResult){return cbdata.notifyUploadSucceeded(uploadResult),null!=this.maxUploadTimeExceedTimer&&clearTimeout(this.maxUploadTimeExceedTimer),this.notifyUploadDependencies(!0)}})}(jQuery),function($){T.Module.VideoController=T.createModule({start(resolve){this.$ctx=$(this._ctx),resolve()},setup(videoComponent,$videoComponent,callbacks,options){this.videoComponent=videoComponent,this.$videoComponent=$videoComponent,this.callbacks=callbacks,this.lazyloaded=options.lazyloaded,this.looping=options.looping,this.shouldBePlaying=!1,this.controlsShouldBeVisible=!1,this.neverShowControls=!1===this.$videoComponent.data("controls"),this.hideFullscreenControl=!1===this.$videoComponent.data("controls-fullscreen"),this.streamIsInitialized=!1,this.playerIsInitialized=!1,this.programmaticPause=!1,this.setStateNotPlaying(),this.lazyloaded&&!this.loadAnyway||this.setupVideoInternal(),this.setupComplete=!0},ensureLazyLoaded(){this.loadAnyway=!0,this.setupComplete&&this.setupVideoInternal()},play(){this.setupVideoInternal(),this.shouldBePlaying=!0,this.streamIsInitialized?this._play():this.requestPlay()},pause(userInteracted=!1){this.shouldBePlaying=!1,this.programmaticPause=!userInteracted,this.streamIsInitialized&&this._pause()},stop(){this.shouldBePlaying=!1,this.streamIsInitialized&&this._stop()},isSeeking(){return!!this.streamIsInitialized&&this._isSeeking()},showControls(){this.neverShowControls||(this.controlsShouldBeVisible=!0,this.playerIsInitialized&&this._showControls())},hideControls(){this.controlsShouldBeVisible=!1,this.playerIsInitialized&&this._hideControls()},mute(){this.shouldBeMuted=!0,this.playerIsInitialized&&this._mute()},unmute(){this.shouldBeMuted=!1,this.playerIsInitialized&&this._unmute()},getCurrentTime(){return this.streamIsInitialized?this._getCurrentTime():0},getDuration(){return this.streamIsInitialized?this._getDuration():0},setProgressPlayed(time){if(!this.streamIsInitialized)return 0;this._setProgressPlayed(time)},setupVideoInternal(){this.playerIsInitialized||this._setupVideo()},notifyPlayerInitialized(){this.playerIsInitialized||(this.playerIsInitialized=!0,this.neverShowControls?this.hideControls():this.controlsShouldBeVisible&&this.showControls(),this._preloadStream())},notifyStreamInitialized(){this.streamIsInitialized?this.error("notifyStreamInitialized is called multiple times."):(this.streamIsInitialized=!0,this.controlsShouldBeVisible&&this._showControls(),this.shouldBeMuted&&this._mute(),this.shouldBePlaying&&this._play(),this.callbacks.onPreloaded())},setStatePlaying(){this.isPlaying=!0},setStateNotPlaying(){this.isPlaying=!1},isStatePlaying(){return this.isPlaying||!1},notifyPlaying(){this.isStatePlaying()||(this.setStatePlaying(),this.callbacks.onPlaying())},notifyStopped(){this.isStatePlaying()&&(this.setStateNotPlaying(),this.callbacks.onStopped())},notifyPaused(){this.isStatePlaying()&&(this._isVideoEnded()?this.notifyStopped():(this.setStateNotPlaying(),this.callbacks.onPaused(!this.programmaticPause),this.programmaticPause=!1))},notifySeeking(){this.callbacks.onSeeking()},error(msg){console.info(`${this.getPlayerType()}[t-id ${this.$ctx.data("t-id")},${this.getVideoId()}]: ${msg}`)},_setupVideo(){},_play(){},requestPlay($playButton=null){},canPlay:()=>!0,_pause(){},_stop(){},_isSeeking(){},_preloadStream(){},_mute(){},_unmute(){},_showControls(){},_hideControls(){},_getCurrentTime(){},_getDuration(){},_setProgressPlayed(){},_isVideoEnded(){return this.getCurrentTime()>0&&this.getCurrentTime()>=this.getDuration()},getPlayerType(){},getVideoId(){},getPosterUrl:$videoComponent=>null})}(jQuery),function($,doT){T.Module.WebMappingAutocomplete=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.doT=void 0,this.initialized=!1,resolve()},initialized(jsonConfig){return this.initialized=!0,"function"==typeof this.initializedListener&&this.initializedListener(),this._events.emit("webMappingAutocomplete:initialized",{$component:this.$ctx,component:this,jsonConfig:jsonConfig})},addInitializedListener(cb){return this.initialized&&cb(),this.initializedListener=cb},registerInputField(domElement,cb){},getLatLngByAddress(address,cb){},getAddressByLatLng(latLng,cb){},getLatLngByZipCode(zipCode,cb){},getAutoCompleteSuggestions(searchTerm,$element,cb){},initialize(data){},initByGeoLocation(){}})}(jQuery),function($){T.Module.WebMappingImagery=T.createModule({start(resolve){return this.$ctx=$(this._ctx),T.Utils.allSynced=!1,this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0)},initialized(jsonConfig){return this._events.emit("webMappingImagery:initialized",{$component:this.$ctx,component:this,jsonConfig:jsonConfig})},createMap(domElement,centeredCoordinate,zoomLevel){},setMapCenter(coordinate){},setZoomLevel(zoomLevel){},hasMap(){},destroyMarker(marker){},createMapBounds(){},createCoordinate(coords){},fitToBounds(bounds){},setEnableControls(flag){},getLayerElement(){},triggerMapResize(){},addResizeListener(cb){},createMarker(markerLocation,contentElement,markerWidth,markerHeight){},getRouteUrl(currentLocation,dealerCoords){}})}(jQuery),function($){T.Module.YouTubeConsentPopover=T.createModule({start(resolve){this.$ctx=$(this._ctx),this.$consentPopover=this.$ctx.parent(),this.$acceptConsentButton=this.$ctx.find(".js-accept-youtubeconsent"),this.$ctx.on("show-popover",(_ev,videoComponent,$playButton)=>{this.videoComponent=videoComponent,this.popoverTarget=$playButton||this.videoComponent.$ctx,this.$consentPopover.trigger("popover.open",[this.popoverTarget])}),this.$acceptConsentButton.on("click",()=>{window.consentAPI&&window.consentAPI.youtubeConsent&&window.consentAPI.youtubeCookiesAccepted&&(this.$acceptConsentButton.attr("disabled","disabled"),window.consentAPI.youtubeCookiesAccepted().then(()=>{this.videoComponent&&(this.videoComponent.videoPlay(),this._events.emit("popover:close",{$ctx:this.popoverTarget}))}).finally(()=>{this.$acceptConsentButton.removeAttr("disabled")}))}),resolve()}})}(jQuery),jQuery,T.Module.Link.AjaxPopoverLink=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.ajaxUrl=this.$ctx.data("ajax-path"),this.ajaxPopoverId=this.$ctx.data("ajax-p
7opoverid"),this.$ctx.on("click",ev=>this.openAjaxPopover(ev))},openAjaxPopover(ev){ev.preventDefault(),ev.stopPropagation();var mod=this;mod.$ctx.attr("data-popover-id",mod.ajaxPopoverId);const request=T.Utils.startAjaxRequest(!1,{url:this.ajaxUrl,dataType:"html",dataRendering:!0});return request?request[0].done(function(result){mod._events.emit("popover:open",mod.$ctx),mod.$ctx.removeAttr("data-popover-id")}).fail(function(xhr,ajaxOptions,thrownError){mod.$ctx.removeAttr("data-popover-id")}):(mod.$ctx.removeAttr("data-popover-id"),!1)}}),function($){T.Module.Link.CookieLawLink=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$cookieLawLayer=$(".cookielaw-modal-layer"),this.$cookielaw=$(".o-cookielaw"),this.hasCookieLaw=this.$cookielaw.length>0,this.hasCookieLawLayer=this.$cookieLawLayer.length>0,this.hasCookieLaw&&(this.cookielawModule=T.Utils.application._sandbox.getModuleById(this.$cookielaw.data("t-id"))),this.hasCookieLawLayer&&(this.cookielawLayerModule=T.Utils.application._sandbox.getModuleById(this.$cookieLawLayer.data("t-id"))),window.consentAPI=window.consentAPI||{},window.consentAPI.openCookieLayer||(window.consentAPI.openCookieLayer=(()=>{this.hasCookieLaw&&(this.cookielawModule.clearAutoAccept(),this.hasCookieLawLayer?this.showCookieLawLayer():this.showCookieLaw(),this.cookielawModule.extendedModeDefault=!0,this.cookielawModule.$extendCookieLaw.length&&(this.cookielawModule.shoudExtendedViewBeShown()||(this.cookielawModule.$extendCookieLaw.trigger("morecontenttogglelink:toggleMoreLessLink"),this.cookielawModule.toggleCookieBaseExtendState())))})),this.$ctx.on("click",ev=>{ev.preventDefault(),ev.stopPropagation(),window.consentAPI.openCookieLayer()})},showCookieLaw(){return this.cookielawModule.show()},showCookieLawLayer(){return this.cookielawLayerModule.showLayer()}})}(jQuery),jQuery,T.Module.Link.DeclineAllCookiesLink=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx.on("click",ev=>{ev.preventDefault(),ev.stopPropagation(),window.consentAPI&&window.consentAPI.declineAllCookies&&window.consentAPI.declineAllCookies()})}}),function($){T.Module.Link.ForwardingOverlay=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$ctx.on("click",ev=>{this.onClick(ev)}),resolve()},onClick(ev){T.Utils.setCookie("oidc_fw_ov_dsp",!0,999999)}})}(jQuery),function($){T.Module.Link.ScrollToTarget=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$ctx.on("click",ev=>{this.onClick(ev)}),resolve()},onClick(ev){window.sessionStorage.setItem("scrollToTarget","true")}})}(jQuery),function($){T.Module.Link.Wizard=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.selector={wizard:".js-wizard"},this.$ctx.on("click",ev=>{this.onClick(ev)})},onClick(ev){ev.preventDefault(),$(this.selector.wizard).trigger("wizard.openPrev",[this.$ctx])}})}(jQuery),function($){T.Module.LoadMore.Ajax=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),T.Utils.allSynced=!1,this.isSynced=!1,this.$ctx=$(this._ctx),this.config=this.$ctx.data(),this.checkDataResponse=$.proxy(this.checkDataResponse,this),this.countUpPageNumber=$.proxy(this.countUpPageNumber,this),this.hideComponent=$.proxy(this.hideComponent,this),this.initializeLoadMore=$.proxy(this.initializeLoadMore,this),this.showComponent=$.proxy(this.showComponent,this),this.onClickButton=$.proxy(this.onClickButton,this),this.onLoadMoreCallback=$.proxy(this.onLoadMoreCallback,this),this.onSubmitFilter=$.proxy(this.onSubmitFilter,this),this.sync=$.proxy(this.sync,this),this._events.on("loadMoreCallback",this.onLoadMoreCallback),this._events.on("t.sync",this.sync),this._events.on("loadMoreButtonVisibility",this.onSubmitFilter),this.less=this.$ctx.hasClass("less"),this.componentHidden=!1,this.pageinput=this.config.inputId||!1,this.pageSize=1,this.listId=this.config.listId,this.request={}},sync(){if(!this.isSynced&&(this._events.emit("initializeLoadMore",{listId:this.listId,loadM
7oreType:"ajax"}),this.isSynced=!0,T.Utils.allSynced=!0,this.$ctx.data("initial-ajax-request"))){const response=T.Utils.onAjaxControllerTriggered(null,this.$ctx);response&&response[0]&&response[0].done(()=>{if(response[0].responseText){const resp=JSON.parse(response[0].responseText);if(this.pageSize=this.getPageSize(resp),this.getPageNumber(resp)>=this.getMaxPageNumber(resp))return this.hideComponent()}})}},getPageNumber:response=>response.response.pageNumber,getMaxPageNumber:response=>response.response.maxPageNumber,getPageSize:response=>1,checkDataResponse(){return!!this.request&&this._events.emit("loadMore",{listId:this.listId,loadMoreType:"ajax",requestData:this.request[0]})},countUpPageNumber(){const mod=this;if(mod.pageinput){const elm=document.getElementById(mod.pageinput);return elm.value=parseInt(elm.value)+this.pageSize}},hideComponent(){const $button=this.$ctx;return this.componentHidden=!0,$button.slideUp(()=>$button.addClass("hidden").removeAttr("style"))},loadMore(){let renderArray=[];const updateContainers=this.config.ajaxUpdateContainers;"[object Array]"===Object.prototype.toString.call(updateContainers)&&(renderArray=renderArray.concat(updateContainers));const listContainer={id:this.config.ajaxRenderId,method:this.less?"prepend":"append"};return renderArray.unshift(listContainer),this._parent.openLoader(),this.request=T.Utils.startAjaxRequest(this.config.ajaxRequestId,{render:renderArray,callback:$.proxy(this.checkDataResponse,this)})},showComponent(){return this.$ctx.removeClass("hidden").removeAttr("style"),this.componentHidden=!1},onClickButton(ev){return this.countUpPageNumber(),this.loadMore()},onLoadMoreCallback(data){if(this.listId===data.listId){if(this._parent.closeLoader(),data.hideLoadMoreButton)return this.hideComponent();if(this.componentHidden)return this.showComponent()}},onSubmitFilter(data){return data.loadMoreButtonVisibility?this.showComponent():this.hideComponent()}})}(jQuery),jQuery,T.Module.LoadMore.ContentSearch=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject)},getMaxPageNumber(response){const maxPageNumber=response.result.hits.total/response.request.max;return Math.ceil(maxPageNumber)},getPageNumber(response){const pageNumber=response.request.from/response.request.max;return Math.ceil(pageNumber)+1},getPageSize:response=>response.request.max}),function($){T.Module.LoadMore.Data=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.initializeLoadMore=$.proxy(this.initializeLoadMore,this),this.hideComponent=$.proxy(this.hideComponent,this),this.loadJsonDataCallback=$.proxy(this.loadJsonDataCallback,this),this.loadMore=$.proxy(this.loadMore,this),this.parseUrlParams=$.proxy(this.parseUrlParams,this),this.showComponent=$.proxy(this.showComponent,this),this.onClickButton=$.proxy(this.onClickButton,this),this.onToggleLoadMore=$.proxy(this.onToggleLoadMore,this),this.onInitEvent=$.proxy(this.onInitEvent,this),this.onLoadMoreCallback=$.proxy(this.onLoadMoreCallback,this),this.initialPageSize=parseInt(this.$ctx.data("page-size-initial"),10),this.loadMorePageSize=parseInt(this.$ctx.data("page-size-loadmore"),10),this.currentPageSize=0,this.initEvent=this.$ctx.data("init-event"),this.initId=this.$ctx.data("init-id"),this.requestContext=this.$ctx.data("request-context"),this.loadMoreUrl=this.$ctx.data("loadmore-url"),this.loadMoreUrlParam=this.$ctx.data("loadmore-url-param"),this.urlParamObject={},this.jsonAttributeKey=this.$ctx.data("loadmore-json-property"),this.replaceContainerId=this.$ctx.data("loadmore-replace-container"),this.renderAllItems=this.$ctx.data("render-all-items"),this.dataHasBeenLoaded=!1,this.contentRenderType="append",this.isRebrushPLP=this.$ctx.parents(".o-listrebrush").length>0,this._events.on("toggleLoadMore",this.onToggleLoadMore),this._events.on("loadMoreCallback",this.onLoadMoreCallback),this.listId=this.$ctx.data("list-id"),null!=this.loadMoreUrlParam&&""!==this.loadMoreUrlParam&&this.parseUrlParams(),null!=this.initEvent&&""!==this.initEvent?this._events.on(this.initEvent,this.onInitEvent):this.initializeLo
7adMore()},initializeLoadMore(){const mod=this;if(!this.dataHasBeenLoaded)if(this.dataHasBeenLoaded=!0,this.currentPageSize=0,null!=this.loadMoreUrl&&null!=this.replaceContainerId){isNaN(this.initialPageSize)&&(this.loadMorePageSize=0),isNaN(this.loadMorePageSize)&&(this.loadMorePageSize=0);const request=T.Utils.startAjaxRequest(!1,{url:this.loadMoreUrl,dataType:"JSON",data:this.urlParamObject});if(!request)return!1;this.request=request[0],this.request.obj=$(this.requestContext),this.request.done(this.loadJsonDataCallback).fail(()=>mod.hideComponent())}else this.hideComponent()},hideComponent(){const mod=this;return this.$ctx.slideUp(()=>mod.$ctx.addClass("hidden").removeAttr("style"))},loadJsonDataCallback(data){return data.response?this.jsonData=data.response:this.jsonData=data,this.directlyDealersWrapper=$(".js-directly-dealers-wrapper"),this._events.emit("updateItemCount",{listId:this.listId,itemCount:this.jsonData[this.jsonAttributeKey].length}),this._events.emit("initializeLoadMore",{listId:this.listId,jsonData:this.jsonData}),this.isRebrushPLP&&this._events.emit("wopPlpDataOnlineDealerLayer",this.jsonData),this.directlyDealersWrapper.length>0?this.loadMore(this.loadMorePageSize):this.loadMore(this.initialPageSize),this.contentRenderType="append"},loadMore(loadMorePageSize){return this._parent.openLoader(),this._events.emit("loadMore",{listId:this.listId,loadMoreType:"data",request:this.request,urlParams:this.urlParamObject,jsonData:this.jsonData,jsonAttrKey:this.jsonAttributeKey,currentPageSize:this.currentPageSize,loadMorePageSize:loadMorePageSize,contentRenderType:this.contentRenderType,replaceContainerId:this.replaceContainerId,renderAllItems:this.renderAllItems})},parseUrlParams(){const mod=this,urlParamArray=this.loadMoreUrlParam.split(",");if(urlParamArray.length>0&&$.each(urlParamArray,function(index,keyValuePair){const keyValueArray=keyValuePair.split("=");return mod.urlParamObject[keyValueArray[0]]=keyValueArray[1]}),null!=this.urlParamObject.option)return this.replaceContainerId+=`-${this.urlParamObject.option}`},showComponent(){const mod=this;return this.$ctx.slideDown(()=>mod.$ctx.removeClass("hidden").removeAttr("style"))},onClickButton(ev){return this.loadMore(this.loadMorePageSize)},onInitEvent(data){if(null!=data.eventName&&"onlinedealerbutton:click"===data.eventName){if(data.relatedListId&&data.relatedListId!==this.listId)return;return this.dataHasBeenLoaded=!1,this.contentRenderType="replace",this.loadMoreUrl=data.baseUrl,this.initializeLoadMore(),this._events.emit("showOnlineDealerLayer",{$evTarget:null,$relatedLayer:this.$ctx.closest(".m-layer")})}return this.initializeLoadMore()},onLoadMoreCallback(data){if(this.listId===data.listId)return this._parent.closeLoader(),this.currentPageSize=data.currentPageSize,data.hideLoadMoreButton?this.hideComponent():this.showComponent()},onToggleLoadMore(data){return data.showComponent?this.showComponent():this.hideComponent()}})}(jQuery),function($){T.Module.LoadMore.Dom=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.initializeLoadMore=$.proxy(this.initializeLoadMore,this),this.hideComponent=$.proxy(this.hideComponent,this),this.onClickButton=$.proxy(this.onClickButton,this),this.onLoadMoreCallback=$.proxy(this.onLoadMoreCallback,this),this.initialPageSize=parseInt(this.$ctx.data("page-size-initial"),10),this.loadMorePageSize=parseInt(this.$ctx.data("page-size-loadmore"),10),this.currentPageSize=this.initialPageSize,this._events.on("loadMoreCallback",this.onLoadMoreCallback),this.listId=this.$ctx.data("list-id"),this.initializeLoadMore()},initializeLoadMore(){if(isNaN(this.loadMorePageSize)&&(this.loadMorePageSize=0),this._events.emit("initializeLoadMore",{listId:this.listId,loadMoreType:"dom",initialPageSize:this.initialPageSize}),isNaN(this.initialPageSize))return this.hideComponent()},hideComponent(){const mod=this;
7return this.$ctx.slideUp(()=>mod.$ctx.addClass("hidden").removeAttr("style"))},onClickButton(ev){return this._parent.openLoader(),this._events.emit("loadMore",{listId:this.listId,loadMoreType:"dom",currentPageSize:this.currentPageSize,loadMorePageSize:this.loadMorePageSize})},onLoadMoreCallback(data){if(this.listId===data.listId&&(this._parent.closeLoader(),this.currentPageSize=data.currentPageSize,data.hideLoadMoreButton))return this.hideComponent()}})}(jQuery),jQuery,T.Module.MoreContentToggleLink.NonCollapsible=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject)},sync(){},toggleContent(){this.$contentToggle.hasClass("is-open")||(this.disableFormInputsOnToggle&&this.toggleFormInputsState(!1),this.openContent(),this.$morelessbutton.hide()),this.$contentToggle.toggleClass("is-open")}}),function($){T.Module.MoreContentToggleLink.ToggleRequired=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject)},toggleContent(){const $affectedElements=this.$ctx.find(".js-toggle-required"),$isOpen=this.$ctx.find(".js-is-open");this.$contentToggle.hasClass("is-open")?(this.closeContent(),$isOpen.val("false"),$affectedElements.removeAttr("required"),$affectedElements.removeClass("had-focus"),$affectedElements.removeClass("is-empty"),$affectedElements.attr("disabled","disabled"),$affectedElements.each((index,elem)=>{const $currentElement=$(elem);$currentElement.hasClass("has-error")&&setTimeout(()=>{$currentElement.removeClass("has-error"),$currentElement.val("")},2e3)})):(this.openContent(!1),$isOpen.val("true"),$affectedElements.removeAttr("disabled"),$affectedElements.attr("required","required"))}})}(jQuery),function($,doT){T.Module.SelectedFilter.ClientSide=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.doT=doT,this.groupId=this.$ctx.data("groupId"),this.onFilterStateChange=$.proxy(this,"onFilterStateChange"),this.onClick=$.proxy(this,"onClick"),this.onReset=$.proxy(this,"onReset"),this._events.on("filterStateChange",this.onFilterStateChange),this._events.on("filterlayerresetbutton:clicked",()=>this.onReset())},destroy(){return this._events.off("filterStateChange"),this._events.off("filterlayerresetbutton:clicked"),this.$ctx.remove()},onClick(ev){return this._events.emit("selectedfilter:clicked",{name:this.name,value:this.value,type:this.type,resetValue:!1,groupId:this.groupId}),this.destroy()},onFilterStateChange(data){if(data.itemData.itemId===this.value&&"selected"!==data.itemData.actionType)return this.destroy()},onReset(){return this.destroy()}})}(jQuery,window.doT),function($){T.Module.SelectedFilter.QuestionSelected=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$closeSelectedFilter=this.$ctx.find(".js-close-selected-filter"),this.$closeSelectedFilter.on("click",ev=>this.removeSelectedFilter(ev))},removeSelectedFilter(ev){const closeFilterName=ev.target.parentElement.dataset.filtername,closeFilterValue=ev.target.parentElement.dataset.filtervalue,$inputName=$(`.js-${closeFilterName}`);let inputArray=[];$inputName.length>0&&"search"!=closeFilterName&&(inputArray=(inputArray=$inputName.val().split(",")).filter(element=>element!==closeFilterValue)),$inputName.val(inputArray),this._events.emit("question:filter",{component:"filter",name:closeFilterName,value:closeFilterValue})}})}(jQuery),function($){T.Module.SelectedFilter.ReviewSelected=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$closeSelectedFilter=this.$ctx.find(".js-close-selected-filter"),this.$closeSelectedFilter.on("click",ev=>this.removeSelectedFilter(ev))},removeSelectedFilter(ev){const closeFilterName=ev.target.parentElement.dataset.filtername,closeFilterValue=ev.target.parentElement.dataset.filtervalue,$inputName=$(`.js-${closeFilterName}`);let inputArray=[];$inputName.length>0&&"search"!=closeFilterName&&(inputArray=(inputArray=$inputName.val().split(",")).filter(element=>element!==closeFilterValue)),$inputName.val(inputArray),1==document.getElementsByClassName("js-selected-filter").length?this._events.emit("review:filterReset",ev):this._events.emit("review:filter",{component:"filter",name:closeFilterName,value:closeFilterValue,type:"singleReset"})}})}(jQuery),jQuery,T.Module.SelectedFilter.Sparepart=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$closeSelectedFilter=this.$ctx.find(".js-close-selected-filter"),this.$resetSelectedFilter=this.$ctx.find(".js-reset-filter-button"),this.$closeSelectedFilter.on("click",ev=>this.removeSelectedFilter(ev)),this.$resetSelectedFilter.on("click",ev=>this.resetSelectedFilter(ev)),this._events.on("t.sync",()=>this.sync()),this.isSynced=!1},sync(){this.isSynced||(this.isSynced=!0)},removeSelectedFilter(ev){const ajax_id=this.$ctx.data("ajax-id"),request=T.Utils.startAjaxRequest(ajax_id);request&&request[0]&&request[0].done(xhrData=>{this._events.emit("removespareparts",xhrData),this._events.emit("updateListData",xhrData)}),this.$SelectedFilterContainer=this.$ctx.find(".js-selected-filter-container"),this.$SelectedFilterContainer.empty()},resetSelectedFilter(ev){this.removeSelectedFilter()}}),jQuery,T.Module.SelectedFilter.Chip=T.createDecorator({start(resolve){return this._parent.start(resolve),this.$closeIcon=this.$ctx.find(".js-close-icon"),this.$ctx.off("
7click"),this.$closeIcon.on("click",e=>this.onClick(e)),this.$closeIcon.on("keydown",e=>this.onKeyDown(e)),resolve()},onKeyDown(e){(T.Utils.isKeyEnter(e)||T.Utils.isKeySpace(e))&&(e.stopPropagation(),this.onClick(e))}}),function($){T.Module.CheckoutDeliveryMode.Rebrush=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this._selector={deliverySelection:".js-deliveryselection"},this.elm={$deliverySelection:$(this._selector.deliverySelection,this.$ctx)},this.elm.$deliverySelection.on("click",ev=>this.onChangeMethod(ev));const $radioButton=this.$ctx.find(".js-trigger-ajax-request");if($radioButton.is(":checked")){$radioButton.parents(".js-grid-container").addClass("border-highlight")}return resolve()},onChangeMethod(ev){const $clickedRadio=$(ev.currentTarget),$parentContainer=$clickedRadio.parents(".js-grid-container"),$parentContainers=$clickedRadio.parents().find(".js-grid-container"),$containerRadio=$clickedRadio.find(".js-trigger-ajax-request");if($parentContainers.removeClass("border-highlight"),$parentContainer.addClass("border-highlight"),$containerRadio.prop("checked",!0),!T.Utils.startAjaxRequest("ajax-checkout-changedeliverymode"))return console.log("request failed"),!1}})}(jQuery),jQuery,T.Module.Chips.Multiselect=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$multiselectButton=this.$ctx.find(".js-dropdown-content").find(".js-multiselect-submit"),this.$multiselectButton.on("click",e=>{this.emitChipMultiselectSubmit(e)}),resolve()},emitChipMultiselectSubmit(e){e.preventDefault(),this._events.emit("chipMultiselectSubmit",this.$ctx),this._parent.toggleDropdown()}}),function($){T.Module.Chips.Select=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$options=this.$ctx.find(".js-dropdown-content").find(".js-chips-select-option"),this.$options.on("click",e=>this.onSelectOption($(e.currentTarget))),this.$options.on("keydown",e=>{(T.Utils.isKeyEnter(e)||T.Utils.isKeySpace(e))&&this.onSelectOption($(e.currentTarget))}),this.setSelectedOption(),resolve()},onSelectOption($option){this.setSelectedOption($option),this._events.emit("chipOptionSelected",$option),this._parent.toggleDropdown()},setSelectedOption($option){let $selectedOption;$option?(this.$options.removeClass("selected"),$option.addClass("selected"),$selectedOption=$option.first()):($selectedOption=this.$ctx.find(".selected").first().length?this.$ctx.find(".selected").first():this.$options.first(),this.$options.removeClass("selected"),$selectedOption.addClass("selected"));const $chipsContentInner=this.$ctx.find(".js-chips-content-inner");$chipsContentInner.html($selectedOption.html()),$chipsContentInner.attr("title",$selectedOption.html())}})}(jQuery),function($){T.Module.Filter.Ajax=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.onClickFilterResetButton=$.proxy(this,"onClickFilterResetButton")},onClickFilterResetButton(ev){ev.preventDefault(),this._events.emit("filterlayerresetbutton:clicked"),this._events.emit("filter:reset")}})}(jQuery),function($,doT){T.Module.Filter.ClientSide=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.doT=doT,this.checkShowHideState=$.proxy(this,"checkShowHideState"),this.handleActiveFilterCount=$.proxy(this,"handleActiveFilterCount"),this.handleEmptyFilterList=$.proxy(this,"handleEmptyFilterList"),this.handleFilterDataObjectChange=$.proxy(this,"handleFilterDataObjectChange"),this.handleFilterDataObjectReset=$.proxy(this,"handleFilterDataObjectReset"),this.handleSelectedFilterContainerState=$.proxy(this,"handleSelectedFilterContainerState"),this.handleNewFacetData=$.proxy(this,"handleNewFacetData"),this.showComponent=$.proxy(this,"showComponent"),this.updateItemCount=$.proxy(this,"updateItemCount"),this.onFilterStateChange=$.proxy(this,"onFilterStateChange"),this.onNewFacetDataAvailable=$.proxy(this,"onNewFacetDataAvailable"),this.onUpdateItemCount=$.proxy(this,"onUpdateItemCount"),this.$showHideWrapper=this.$(".js-show-hide-wrapper"),this.$filterGroups=this.$(".js-filter-group"),this.$selectedFilterWrap=this.$(".js-selected-filter-wrap"),this.$selectedFilterContainer=this.$(".js-selected-filter-container"),this.selectedFilterTpl=this.doT.template(this.$(".js-selected-filter-tpl").html()),this._events.on("newFacetDataAvailable",this.onNewFacetDataAvailable),this._events.on("filterStateChange",this.onFilterStateChange),this._events.on("updateItemCount",this.onUpdateItemCount),this.selectedFilterGroups={},this.selectedFiltersCount=0,this.listId=this.$ctx.data("list-id"),this.checkShowHideState(this.$filterGroups)},reset(){return this.$filterBlockOuter.removeClass("is-opened"),this._events.emit("filterlayerresetbutton:clicked"),this.handleFilterStateChange(this.handleFilterDataObjectReset,{},!0),this._events.emit("initializeActiveFilter",{$ctx:this.$ctx})},checkShowHideState($filterGroups){return $filterGroups.length<=4?this.$showHideWrapper.addClass("hidden"):this.$showHideWrapper.removeClass("hidden")},handleActiveFilterCount(){return this._events.emit("updateActiveFilterCount",{listId:this.listId,activeFilterCount:this.selectedFiltersCount})},handleEmptyFilterList(){return $.each(this.$(".js-filter-list-container"),function(index,filterList){const $filterList=$(filterList);return 0===$filterList.find(".js-filter-list-row:not(.hidden)").length?$filterList.closest(".
7js-filter-group").addClass("hidden"):$filterList.closest(".js-filter-group").removeClass("hidden")})},handleFilterDataObjectChange(data){if(null!=data.groupId){if("selected"===data.actionType)return this.renderSelectedFilter(data),null==this.selectedFilterGroups[data.groupId]&&(this.selectedFilterGroups[data.groupId]={}),null==this.selectedFilterGroups[data.groupId].selectedFilterItems&&(this.selectedFilterGroups[data.groupId].selectedFilterItems=[]),this.selectedFilterGroups[data.groupId].innerOperator=data.innerOperator,this.selectedFilterGroups[data.groupId].selectedFilterItems.push(data.itemId),this.selectedFiltersCount++;if(this.selectedFilterGroups[data.groupId].selectedFilterItems.splice($.inArray(data.itemId,this.selectedFilterGroups[data.groupId].selectedFilterItems),1),this.selectedFiltersCount--,0===this.selectedFilterGroups[data.groupId].selectedFilterItems.length)return delete this.selectedFilterGroups[data.groupId]}},handleFilterDataObjectReset(){const mod=this;return this.selectedFiltersCount=0,$.each(this.selectedFilterGroups,(groupId,filterGroup)=>delete mod.selectedFilterGroups[groupId])},handleFilterStateChange(callback,data,emitFilterEvent){if("function"==typeof callback&&callback(data),this.handleActiveFilterCount(),this.handleSelectedFilterContainerState(),emitFilterEvent)return this._events.emit("filterByFacets",{listId:this.listId,selectedFilterGroups:this.selectedFilterGroups,selectedFiltersCount:this.selectedFiltersCount})},handleSelectedFilterContainerState(){return this.selectedFiltersCount<1?this.$selectedFilterWrap.removeClass("selected"):this.$selectedFilterWrap.addClass("selected")},handleNewFacetData(facets){return $.each(this.$(".js-filter-group"),function(index,filterGroup){const $filterGroup=$(filterGroup);return $.each($filterGroup.find(".js-filter-list-row-item"),function(index,filterRowItem){const $filterRowItem=$(filterRowItem),$filterRow=$filterRowItem.closest(".js-filter-list-row"),filterItemId=$filterRowItem.data("item-id");if(!facets.hasOwnProperty(filterItemId))return $filterRow.addClass("hidden");{$filterRow.removeClass("hidden"),0;const $itemFilterCount=$filterRowItem.find(".js-item-filter-count");if($itemFilterCount.length>0)return $itemFilterCount.text(facets[filterItemId].itemCount)}})})},renderSelectedFilter(selectedFilterData){const selectedFilterHtml=this.selectedFilterTpl(selectedFilterData);return this.$selectedFilterContainer.append(selectedFilterHtml),this._sandbox.addModules(this.$selectedFilterContainer.find(`.js-selected-filter[data-input-value="${selectedFilterData.itemId}"]`)[0])},resetSortDropdown(){return this._events.emit("updateSortingDropdown",{sortKey:"",triggerChange:!0,triggerUpdateSticky:!0})},showComponent(){return this.$ctx.removeClass("hidden")},updateItemCount(newItemCount){return this.$ctx.find(".js-counter").text(newItemCount)},onClickFilterResetButton(ev){ev.preventDefault();return this._events.emit("filterlayerresetbutton:clicked"),this.handleFilterStateChange(this.handleFilterDataObjectReset,{},!0),this._events.emit("initializeActiveFilter",{$ctx:this.$ctx}),this._parent.closeFilterLayer()},onFilterStateChange(data){const mod=this;if(data.$filterList.closest(mod.$ctx).length){let emitFilterEvent=!0;return null!=data.emitFilterEvent&&({emitFilterEvent:emitFilterEvent}=data),mod.handleFilterStateChange(mod.handleFilterDataObjectChange,data.itemData,emitFilterEvent)}},onNewFacetDataAvailable(data){const mod=this;if(mod.listId===data.listId)return mod.handleNewFacetData(data.facets),mod.handleEmptyFilterList(),mod.showComponent(),mod.updateItemCount(data.itemCount),mod.checkShowHideState(mod.$(".js-filter-group:not(.hidden)")),this._parent.closeFilterLayer()},onUpdateItemCount(data){const mod=this;if(mod.listId=data.listId)return mod.updateItemCount(data.itemCount)}})}(jQuery,window.doT),function($){T.Module.Filter.DealerLocator=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.initializeActiveFilters=$.proxy(this,"initializeActiveFilters"),this.initializeBaseFilterItems=$.proxy(this,"initializeBaseFilterItems"),this.onInitializeActiveFilter=$.proxy(this,"onInitializeActiveFilter"),this.onInitializeFilter=$.proxy(this,"onInitializeFilter"),this._events.on("initializeActiveFilter",this.onInitializeActiveFilter),this._events.on("initializeFilter",this.onInitializeFilter),this.baseFilterGroups=[],this.activeFilters=[]},initializeActiveFilters(activeFilters){const mod=this;return $.each(activeFilters,(index,activeFilter)=>$.each(mod.baseFilterGroups,(index,baseFilterGroup)=>$.each(baseFilterGroup.filters,function(index,filterItem){if(activeFilter===filterItem.filterID){const emitFilterEvent=!1,data={actionType:"selected",itemId:filterItem.filterID,itemName:filterItem.title,groupId:baseFilterGroup.groupID,isPreselected:!0},$filterList=mod.$(`.js-filter-list-container[data-group-id="${baseFilterGroup.groupID}"]`);return mod._events.emit("filterStateChange",{$filterList:$filterList,itemData:data,emitFilterEvent:emitFilterEvent}),mod._events.emit("addPreselectedFilter",{groupId:baseFilterGroup.groupID,filterId:filterItem.filterID,isPreselected:!0})}})))},initializeBaseFilterItems(data){this.baseFilterGroups=data.baseFilterGroups;const request={obj:this.$ctx},$template=$("<div/>").html(T.Utils.renderTemplateMarkup(request,data,!1)),key=this.$ctx.find("[data-replace-container]").data("replace-container");return T.Utils.syncContent($template,key,"replace")},onInitializeActiveFilter(data){const mod=this;if(mod.$ctx===data.$ctx&&mod.activeFilters.length>0)return mod.initializeActiveFilters(mod.activeFilters),mod.$filterLayer.addClass("is-opened")},onInitializeFilter(data){return data.enableFilter?(this.initializeBaseFilterItems(data),data.activeFilters.length>0&&(this.activeFilters=data.activeFilters,this.initializeActiveFilters(data.activeFilters),this._parent.openFilterLayer(),T.Utils.isViewport("tablet")||T.Utils.isViewport("desktop"))?this.$filterLayer.addClass("is-opened"):void 0):this.$(".js-filterbar-filter").addClass("filterbar-item-invisible")}})}(jQuery),function($){T.Module.FilterBar.ClientSide=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.onNewFacetDataAvailable=$.proxy(this,"onNewFacetDataAvailable"),this.listId=this.$ctx.data("list-id"),this._events.on("newFacetDataAvailable",$.proxy(this.onNewFacetDataAvailable,this))},onNewFacetDataAvailable(data){const mod=this;if(mod.listId===data.listId)return data.triggerChange=!0,data.triggerUpdateSticky=!0,mod._parent.updateSortingDropDown(data)}})}(jQuery),function($){T.Module.FilterBar.Sticky=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$sticky=this.$(".sticky-container"),this.$stickyContent=this.$(".filter-bar-sticky-content"),this.$filter=this.$ctx.closest(".m-filter"),this.listId=this.$ctx.data("list-id"),$(window).on("scroll.
7sticky-filter",$.proxy(this.onWindowScroll,this)),$(window).on("resize.sticky-filter",$.proxy(this.onWindowResize,this)),this.lastScrollTop=$(window).scrollTop(),this._events.on("t.sync",$.proxy(this.sync,this)),this._events.on("upDateStickyBar",$.proxy(this.setupSticky,this)),this._events.on("updateStickyViewTypeButtonState",$.proxy(this.onUpdateStickyViewTypeButtonState,this)),this._events.on("updateStickySortingDropDown",$.proxy(this.onUpdateStickySortingDropDown,this)),this._events.on("hideSticky",$.proxy(this.hideSticky,this)),this._events.on("toggleGridView",$.proxy(this.setSortButtons,this)),this._events.on("toggleListView",$.proxy(this.setSortButtons,this)),this.setupSticky()},sync(){this._events.emit("header:disable-sticky")},setupSticky(){return this.$ctx.find(".js-filterbar-nav").clone(!1).appendTo(this.$stickyContent),this.replaceClasses(),this.$selectSticky=this.$sticky.find(".js-sticky-filterbar-sorting").find("select"),this.$selectSticky.select2({minimumResultsForSearch:-1}),this.setSortButtons(),this.$sticky.find(".js-sticky-filterbar-filter").on("click",$.proxy(this.scrollToFilter,this)),this.$sticky.find(".js-sticky-filterbar-compare").on("click",$.proxy(this.scrollToFilter,this)),this.$selectSticky.on("change.userAction",$.proxy(this.onChangeSortingOptionSticky,this))},setSortButtons(){return this.$stickyContent.find(".js-filterbar-icons").html(this.$ctx.find(".js-filterbar-icons").html()),this.$depictionBtns=this.$sticky.find(".js-filterbar-view-toggle").on("click",$.proxy(this.switchDepiction,this))},replaceClasses(){return this.$stickyContent.find(".js-filterbar-compare").removeClass("js-filterbar-compare").addClass("js-sticky-filterbar-compare"),this.$stickyContent.find(".js-filterbar-filter").removeClass("js-filterbar-filter").addClass("js-sticky-filterbar-filter"),this.$stickyContent.find(".js-filterbar-sorting").removeClass("js-filterbar-sorting").addClass("js-sticky-filterbar-sorting")},scrollToFilter(){const position=this.$ctx.offset().top-20;return T.Utils.scrollToTop(position)},switchDepiction(ev){const mod=this,$target=$(ev.currentTarget);if(!$target.hasClass("is-active"))return $target.hasClass("js-filterbar-gridview")?T.Utils.scrollToTop(this.ctx,()=>mod._events.emit("onGridListButton","",".js-filterbar-gridview")):T.Utils.scrollToTop(this.$ctx,()=>mod._events.emit("onGridListButton","",".js-filterbar-listview")),this.$depictionBtns.removeClass("is-active"),$target.addClass("is-active")},hideSticky(data){const mod=this;if(mod.$sticky.closest(data.$element).length)return mod.$sticky.addClass("no-anim"),mod.$sticky.removeClass("is-active"),mod.$sticky.removeClass("no-anim")},onChangeSortingOptionSticky(){this.scrollToFilter();const sortKey=this.$selectSticky.val();return this._events.emit("updateSortingDropdown",{$ctx:this.$ctx,sortKey:sortKey,triggerChange:!0,triggerUpdateSticky:!1})},onUpdateStickySortingDropDown(data){const mod=this;if(mod.$ctx===data.$ctx)return mod.$selectSticky.val(data.sortKey).trigger("change.select2")},onUpdateStickyViewTypeButtonState(data){if(this.listId===data.listId){this.$sticky.find(".js-filterbar-view-toggle").removeClass("is-active");let viewTypeClass="gridview";return"list-view"===data.viewType&&(viewTypeClass="listview"),this.$sticky.find(`.js-filterbar-view-toggle.filterbar-${viewTypeClass}`).addClass("is-active")}},onWindowScroll(){const scrollTop=$(window).scrollTop();return"top"===T.Utils.getOffScreenDirection(this.$filter)&&scrollTop-this.lastScrollTop<0?this.$sticky.addClass("is-active"):this.$sticky.removeClass("is-active"),this.lastScrollTop=scrollTop},onWindowResize(){const mod=this;switch(T.Utils.getViewport()){case"mobile":if("object"==typeof mod.$selectSticky.data("select2"))return mod.$selectSticky.select2("destroy");break;default:if("object"!=typeof mod.$selectSticky.data("select2"))return mod.$selectSticky.select2({minimumResultsForSearch:-1})}}})}(jQuery),function($){T.Module.FilterLayer.Ajax=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$pageNrInput=this.$ctx.closest(".o-list").find('input[name="pageNumber"]'),this.$requestElm=this.$ctx.closest(".
7js-ajax-request"),this.$list=this.$ctx.closest("[data-list-id]"),$.extend(this.request,{id:this.$requestElm.attr("data-ajax-id"),listId:this.$list.attr("data-list-id")}),this.requestStarted=!1,this.$ctx.find(".a-rating, .a-rating a").on("click",ev=>this.onRatingStarClicked(ev)),this.$ctx.find(".a-selectablerange").on("click",ev=>this.onSelectableRangeClicked(ev)),this.triggerProductListUpdate=$.proxy(this,"triggerProductListUpdate"),this.onChangeFilterValue=$.proxy(this,"onChangeFilterValue"),this.onRemoveSelectedFilter=$.proxy(this,"onRemoveSelectedFilter")},checkFilterResponse(request){return this._events.emit("loadMore",{listId:this.request.listId,loadMoreType:"ajax",requestData:request[0]})},triggerProductListUpdate(data){if(!1===this.requestStarted){this._events.emit("filterlayer:filterChanged",{$component:this.$ctx,component:this});const request=T.Utils.startAjaxRequest(data.id,data.config);return!!request&&(this.checkFilterResponse(request),this.requestStarted=!0)}},onChangeFilterValue(ev){this._parent.onChangeFilterValue(ev);const mod=this,$filter=$(ev.currentTarget),singlevalue=$filter.data("singleValue");if(singlevalue){const $duplicates=mod.$(`[data-single-value='${singlevalue}']`).not($filter);$duplicates.length>0&&$duplicates.val(""),$(`input[data-hidden-filter='${singlevalue}']`).remove()}return mod.$pageNrInput.val("1"),this.triggerProductListUpdate(this.request)},onRemoveSelectedFilter(data){const mod=this;let hiddenFilterCode,$hiddenfilter,categoryReplacement;if("category"===data.type?$hiddenfilter=$(`[data-hidden-filter^='${data.name}']`):data.minValue||data.maxValue?(hiddenFilterCode=data.name+"."+data.minValue+"-"+data.maxValue,$hiddenfilter=$(`[data-hidden-filter='${hiddenFilterCode}']`)):(hiddenFilterCode=data.name+"."+data.value,$hiddenfilter=$(`[data-hidden-filter='${hiddenFilterCode}']`)),"category"===data.type&&(categoryReplacement=this.createCategoryFilterReplacement(data)),$hiddenfilter.length>0)categoryReplacement?$hiddenfilter.val(categoryReplacement):$hiddenfilter.remove();else switch(data.type){case"default":case"category":if(categoryReplacement){var inputName=this.removeAvailableInputsForAttribute("categories"),newHidden=$("<input>");newHidden.val(categoryReplacement),newHidden.attr("name",inputName),newHidden.attr("type","hidden"),mod.$filterGroupWrapper.append(newHidden);break}var selector=`[value='${data.value}']`,$input=mod.$filterGroupWrapper.find(selector);if(!$input.length)return;$input.attr("checked",!1);break;case"range":case"ratings":if(selector=`[data-range-name='${data.name}']`,!($input=mod.$filterGroupWrapper.find(selector)).length)return;if($input.is("[type='checkbox']"))$input.prop("checked",!1).change();else{$input.find("input").val("null")}}return this.triggerProductListUpdate(this.request)},removeAvailableInputsForAttribute(attribute){var inputName,mod=this;return mod.$filterGroupWrapper.find("input[name$='.attribute'][value='"+attribute+"']").each(function(){inputName=(inputName=$(this).attr("name")).substring(0,inputName.indexOf("]")+1),mod.$filterGroupWrapper.find("input[name^='"+inputName+"']").remove()}),inputName},createCategoryFilterReplacement(filter){if(filter.value){const categoryPath=filter.value.split("/");if(categoryPath.length>=2){return`{"attribute": "categories", "valueType": "MULTI", "values.0": "${categoryPath.slice(0,categoryPath.length-1).join("/")}"}`}return'{"attribute": "categories", "valueType": "MULTI"}'}return null},onRatingStarClicked(ev){ev.preventDefault();const keyCheckboxes=$(ev.target).closest(".filterlayer-rating").find(">input"),valueCheckboxes=$(ev.target).closest(".a-rating").parent().find("input"),allValueCheckboxes=$(ev.target).closest(".filterlayer-rating").find("input[name$='minValue'], input[name$='maxValue']");keyCheckboxes.prop("checked",!0).change(),allValueCheckboxes.prop("checked",!1),valueCheckboxes.prop("checked",!0).change()},onSelectableRangeClicked(ev){ev.preventDefault();const keyCheckboxes=$(ev.target).closest(".filterlayer-selectablerange").find(">input"),selectedValueCheckboxes=$(ev.target).closest(".a-selectablerange").parent().find("input"),allValueCheckboxes=$(ev.target).closest(".filterlist-container").find("input");keyCheckboxes.prop("checked",!0).change(),allValueCheckboxes.prop("checked",!1),selectedValueCheckboxes.prop("checked",!0).change()}})}(jQuery),function($){T.Module.FilterLayer.ClientSide=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject);return this.$ctx=$(this._ctx),this.removeFilterItemRowActiveState=$.proxy(this,"removeFilterItemRowActiveState"),this.onChangeFilterValue=$.proxy(this,"onChangeFilterValue"),this.onReset=$.proxy(this,"onReset")},reset(){return this.onReset()},removeFilterItemRowActiveState($filterItemRow){if($filterItemRow.length>0){return $filterItemRow.removeClass("is-active"),$filterItemRow.find(".js-filter-item-input").prop("checked",!1)}},onChangeFilterValue(ev){const $input=$(ev.target),$item=$input.closest(".
7js-filter-list-row-item"),$filterList=$item.closest(".js-filter-list-container"),itemId=$item.data("item-id"),itemName=$item.data("item-name");let actionType="deselected";$input.is(":checked")&&(actionType="selected");const itemData={actionType:actionType,itemId:itemId,itemName:itemName,groupId:$filterList.data("group-id"),innerOperator:$filterList.data("inner-operator")};return this._parent.toggleElementActiveState($item),this._events.emit("filterStateChange",{$filterList:$filterList,itemData:itemData})},onReset(){const mod=this,$filterItemRows=this.$(".js-filter-list-container").find(".js-filter-list-row-item");return $.each($filterItemRows,function(index,filterItemRow){const $filterItemRow=$(filterItemRow);return mod.removeFilterItemRowActiveState($filterItemRow)})}})}(jQuery),function($){T.Module.FilterLayer.DealerLocator=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject);return this.$ctx=$(this._ctx),this.addFilterItemRowActiveState=$.proxy(this,"addFilterItemRowActiveState"),this._events.on("addPreselectedFilter",$.proxy(this.onAddPreselectedFilter,this))},addFilterItemRowActiveState($filterItemRow,data){if($filterItemRow.length>0){return $filterItemRow.addClass("is-active"),data.isPreselected&&$filterItemRow.addClass("is-preselected"),$filterItemRow.find(".js-filter-item-input").prop("checked",!0)}},onAddPreselectedFilter(data){const $filterItemRow=this.$(`.js-filter-list-container[data-group-id="${data.groupId}"]`).find(`.js-filter-list-row-item[data-item-id="${data.filterId}"]`);return this.addFilterItemRowActiveState($filterItemRow,data)}})}(jQuery),function($){T.Module.FilterLayer.SearchableTableList=T.createDecorator({request:null,start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),T.Utils.allSynced=!1,this.$filterGroupWrapper=null,this.$filterInput=null,this._selector={searchButton:".js-search-button",multiSelectFields:"select[multiple]",isBackNavigated:".js-isBackNavigated"},this.elm={$multiSelectFields:$(this._selector.multiSelectFields,this.$ctx),$searchButton:$(this._selector.searchButton,this.$ctx),$isBackNavigated:$(this._selector.isBackNavigated,this.$ctx)},this.storageNamespace=this.$ctx.data("storageNamespace"),this._events.on("t.sync",()=>this.sync()),this.elm.$multiSelectFields.on("select2:unselect",ev=>this.onChangeSelect2(ev)),this.elm.$searchButton.on("click",ev=>this.onChangeFilter(ev)),this.$ctx.on("searchabletablelist.saveFilter",ev=>this.persistFilter(ev)),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0,"true"===this.elm.$isBackNavigated.val()&&this.prepopulateFilter())},doEventBinding(){},equalizeHeadingHeights(){},toggleElementActiveState($item){},onChangeFilterValue(ev){},onRemoveSelectedFilter(data){},onChangeFilter(ev){this.$ctx=$(this._ctx),$(document.getElementById(this.$ctx.data("table-id"))).trigger("searchableTableList.updateTableData")},onReset(){window.location.reload(!0)},onChangeSelect2:ev=>!!ev.params.originalEvent&&ev.params.originalEvent.stopPropagation(),persistFilter(ev){this.$ctx=this._ctx,this.$filterSelector=".js-persist",this.$dateFilterSelector=".js-persist-date",this.$filterItems=$(this.$ctx).find(this.$filterSelector),this.$dateFilterItems=$(this.$ctx).find(this.$dateFilterSelector);const selectedFilters={text:[],date:[],table:[]};$.each(this.$filterItems,(index,filterItems)=>selectedFilters.text.push({filterId:$(filterItems).attr("id"),filterValue:$(filterItems).val()})),$.each(this.$dateFilterItems,(index,dateFilterItems)=>selectedFilters.date.push({filterId:$(dateFilterItems).attr("name"),filterValue:$(dateFilterItems).val()})),sessionStorage.setItem(this.storageNamespace,JSON.stringify(selectedFilters))},prepopulateFilter(){console.log(this.storageNamespace);const preSelectedFilters=JSON.parse(sessionStorage.getItem(this.storageNamespace));if(null!=preSelectedFilters){let $dataTable;null!=preSelectedFilters.text&&($.each(preSelectedFilters.text,function(index,filterItems){null!=filterItems.filterValue&&$(`[name='${filterItems.filterId}']`).val(filterItems.filterValue)}),$(".js-persist").trigger("change.select2")),null!=preSelectedFilters.date&&($.each(preSelectedFilters.date,function(index,dateFilterItems){if(null!=dateFilterItems.filterValue){const $dateField=$(`input[name='${dateFilterItems.filterId}']`);$dateField.val(dateFilterItems.filterValue),setTimeout(()=>
7$dateField.parents(".js-slider").siblings(".js-custom-filter-dropdown").trigger("click"),20)}}),this.$ctx=$(this._ctx),$dataTable=$(document.getElementById(this.$ctx.data("table-id")))),setTimeout(()=>{$dataTable.trigger("searchableTableList.updateTableDataWithFilters"),sessionStorage.removeItem(this.storageNamespace)},20)}}})}(jQuery),jQuery,T.Module.Form.GoogleRecaptcha=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject)},checkAllowSubmit(allowSubmit,ev){this._events.emit("googlerecaptcha:validate",{ev:ev,allowSubmit:allowSubmit})}}),function($){T.Module.Form.Tracking=T.createDecorator({TRACK_TYPE_FORM_SUBMIT:"form submit",TRACK_TYPE_FORM_ERROR:"form error",TRACK_TYPE_UNKNOWN:"unknown",BREAK_EACH_LOOP:!1,CONTINUE_EACH_LOOP:!0,TRACK_ERROR_FIELDS_LIMIT:5,start(resolve){this._parent.start(resolve),this.errorTypeMapping={"error-required":"valueMissing","error-mismatch":"patternMismatch","error-confirm":"customError","error-min-length":"tooShort","error-custom":"customError"},this.setupHtmlValidation(),this.extendEventTrackingData()},setupHtmlValidation(){this.elm.$form.find(this.select.buttonSubmit).on("mousedown",()=>{this.hasErrors=this.trackFieldErrors()})},extendEventTrackingData(){let fieldCtr=0;this.$ctx.find("*[data-eventtracking]").each((index,fieldEl)=>{fieldCtr++;const $fieldEl=$(fieldEl),layoutTracking=T.Utils.getLayout(),elementData=layoutTracking.parseEventTrackingConfigFrom($fieldEl);if(!elementData||!elementData.dataValues)return;const formFieldNumber=elementData.dataValues.form_field_number||"";""!==formFieldNumber&&"PLACEHOLDER: NUMBER DEFINED IN HYBRIS"!==formFieldNumber||(elementData.dataValues.form_field_number=fieldCtr.toString(),$fieldEl.attr(layoutTracking.ATTRIBUTE_DATA_EVENT_TRACKING,JSON.stringify(elementData)))})},onFormKeyDown(ev){return!1!==this._parent.onFormKeyDown.apply(this,arguments)&&("ENTER"===(ev.key||"").toUpperCase()&&(this.hasErrors=this.trackFieldErrors()),!0)},onSubmitLink(){return this.hasErrors=this.trackFieldErrors(),this._parent.onSubmitLink.apply(this,arguments)},onSubmitForm(){return this.hasErrors||this.trackValidFormSubmit(),this._parent.onSubmitForm.apply(this,arguments)},trackValidFormSubmit(){const dataValues=this.createDataValues();T.Utils.getLayout().trackValues(this.TRACK_TYPE_FORM_SUBMIT,dataValues)},trackFieldErrors(){return this.resetProcessedErrorFields(),this.evaluateHtmlValidation(),this.evaluateJsValidation(),this.hasProcessedErrorFields()},resetProcessedErrorFields(){this.processedErrorFields={}},rememberProcessedErrorField(fieldName){this.processedErrorFields[fieldName]=!0},isProcessedErrorField(fieldName){return!1!==(this.processedErrorFields[fieldName]||!1)},hasProcessedErrorFields(){return Object.keys(this.processedErrorFields).length>0},isErrorLimitReached(){return Object.keys(this.processedErrorFields).length>this.TRACK_ERROR_FIELDS_LIMIT},isStillNotProcessed(fieldName){return!this.isProcessedErrorField(fieldName)&&(this.rememberProcessedErrorField(fieldName),!0)},evaluateHtmlValidation(){if(!("function"==typeof this.elm.$form[0].checkValidity))return;if(this.elm.$form[0].checkValidity())return;const $invalidFields=this.elm.$form.find("input:invalid, select:invalid, textarea:invalid");$.each($invalidFields,(index,invalidField)=>{this.trackHtml5InvalidField(invalidField)})},trackHtml5InvalidField(invalidField){const fieldName=invalidField.getAttribute("name")||"unknown field name";if(!this.isStillNotProcessed(fieldName))return;const errorType=this.getErrorTypeFromInvalidField(invalidField),errorMessage=invalidField.validationMessage||"unknown error";this.trackInvalidField(invalidField,fieldName,errorType,errorMessage)},evaluateJsValidation(){this.$ctx.find("input, select, textarea").each((inputIndex,invalidField)=>{$(invalidField).parent().find(".a-errormessage:visible").each((errorIndex,errorEl)=>{this.trackJsInvalidField(invalidField,errorEl)})})},trackJsInvalidField(invalidField,errorEl){const fieldName=invalidField.getAttribute("name")||"unknown field name";if(!this.isStillNotProcessed(fieldName))return;const errorType=this.getErrorTypeFromErrorMessage(errorEl),errorMessage=errorEl.innerText||"unknown error";this.trackInvalidField(invalidField,fieldName,errorType,errorMessage)},getErrorTypeFromInvalidField(invalidField){const validity=invalidField.validity||{};let errorType=this.TRACK_TYPE_UNKNOWN;return $.each(validity,(key,value)=>!0===value?(errorType=key,this.BREAK_EACH_LOOP):this.CONTINUE_EACH_LOOP),errorType},trackInvalidField(fieldEl,fieldName,errorType,errorMessage){if(this.isErrorLimitReached())return;let fieldType=fieldEl.nodeName.toUpperCase();"INPUT"===fieldType&&(fieldType+=":"+(fieldEl.getAttribute("type")||"text"));const dataValues=this.createDataValues(fieldName,errorType,errorMessage,fieldType);T.Utils.getLayout().trackValues(this.TRACK_TYPE_FORM_ERROR,dataValues)},getErrorTypeFromErrorMessage(errorEl){const $errorEl=$(errorEl);let errorType=this.TRACK_TYPE_UNKNOWN;return $.each(this.errorTypeMapping,(key,value)=>$errorEl.hasClass(key)?(errorType=value,this.BREAK_EACH_LOOP):this.CONTINUE_EACH_LOOP),errorType},createDataValues(formField,errorType,errorMessage,fieldType){const dataValues={form_name:(this.elm.$form.attr("data-form-name")||"no_form_name_given").toString()};return errorMessage&&(dataValues.error_message=errorMessage),formField&&(dataValues.form_field=formField),errorType&&(dataValues.error_type=errorType),fieldType&&(dataValues.field_type=fieldType),dataValues}})}(jQuery),function($){T.Module.FormInput.FileUpload=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.onFileSelectionClicked=$.proxy(this.onFileSelectionClicked,this),this.$ctx.on("click",this.onFileSelectionClicked),resolve()},onFileSelectionClicked(ev){if(this.$ctx.is("[readonly]"))return ev.preventDefault(),!1}})}(jQuery),function($){T.Module.FormInput.ActionLink=T.createDecorator({start(resolve,reject){return this.$ctx=$(this._ctx),T.Utils.allSynced=!1,this._selector={requestButtonSelector:".js-action-link"},this.elm={$requestButton:$(this._selector.requestButtonSelector,this.$ctx)},this.maxClicks=this.elm.$requestButton.data("max-clicks"),this.doneClicks=0,this._events.on("t.sync",()=>this.sync()),$(this._selector.requestButtonSelector,this.$ctx).on("click",ev=>this.onClickRequestButton(ev)),console.log("{{ name }} start"),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0,console.log("{{ name }} sync"))}
7,getRequest(ev){let request;return this.elm.$requestButton.attr("disabled")||(request=T.Utils.onAjaxControllerTriggered(ev,!0)),!!request&&(this.doneClicks++,this.doneClicks===this.maxClicks&&(this.elm.$requestButton.attr("disabled","disabled"),this.elm.$requestButton.css("cursor","default")),!0)},onClickRequestButton(ev){return ev.preventDefault(),T.Utils.debounce(ev=>this.getRequest(ev),250,!0)(ev)}})}(jQuery),function($){T.Module.FormInput.AddressAutoSuggest=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.config=this.$ctx.data("autosuggest-config"),this.selectors={suggestionsLayer:".js-autocomplete-layer",resultItemRadioWrapper:".js-suggest-layer-autocomplete-result-item-radio-wrapper",resultItemRadio:".js-suggest-layer-autocomplete-result-item-radio",labelSearchfield:".js-addressautosuggest-searchfield-label",labelSearchfieldText:".label-text"},this.suggestionsTemplateContainer=this.config.suggestionsTemplateContainer,this.labelAddressField=this.config.labelAddressField,this.labelOriginField=this.config.labelOriginField,this.$form=this.$ctx.closest("form"),this.$fieldset=this.$ctx.closest("fieldset"),this.$fieldset.append(this.suggestionsTemplateContainer),this.$labelSearchfield=this.$fieldset.find(this.selectors.labelSearchfield),this.$suggestionsLayer=this.$form.find(this.selectors.suggestionsLayer),this.$labelSearchfield.find(this.selectors.labelSearchfieldText).html(this.labelAddressField),this.fieldKeygroup=this.$ctx.data("field-keygroup"),this.$relatedFields=this.$form.find(`[data-field-keygroup=${this.fieldKeygroup}]`),this.$ctx.on("keyup",T.Utils.debounce(ev=>{this.getSuggestions(ev)},this.config.delay||(this.config.delay=300))),$(document).on("mousedown click",ev=>{this.hideSuggestLayer(ev)}),this.$suggestionsLayer.on("mousedown click",ev=>{this.getDetails(ev)}),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0)},hideSuggestLayer(ev){this.$suggestionsLayer.empty(),this.$suggestionsLayer.toggleClass("hidden",!0)},getValueFromKey(parts,key){let returnValue;return parts.forEach(element=>{element.key===key&&(returnValue=element.value)}),returnValue},fillFields(result){this.$labelSearchfield.find(this.selectors.labelSearchfieldText).html(this.labelOriginField),this.$relatedFields.each((index,element)=>{const $element=$(element),fieldKey=$element.data("field-key"),fieldValue=this.getValueFromKey(result.parts,fieldKey);fieldValue?$element.val(fieldValue):$element.val(""),$element.trigger("change")})},fillDotTemplate(templateSelector,result){let $templateContainer=this.$form.find(templateSelector);if(0===$templateContainer.length)return void console.log("no template defined");return $templateContainer.length>1&&($templateContainer=$($templateContainer.get(0))),doT.template($templateContainer.html())(result)},renderSuggestionsLayer(result){this.$suggestionsLayer.html(this.fillDotTemplate(this.config.templateSelector,result)),this.$suggestionsLayer.toggleClass("hidden",!1)},getSuggestions(ev){const searchText=$(ev.currentTarget).val(),minLength=this.config.minlength||3;if(searchText.length<minLength)return;const requestData={searchText:searchText},requestGetSuggestions=T.Utils.startAjaxRequest(null,this.config.suggestionsAjax,requestData);return!!requestGetSuggestions&&requestGetSuggestions[0].always(()=>{}).done(result=>{null!=result&&this.renderSuggestionsLayer(result)}).fail((xhr,ajaxOptions,thrownError)=>{console.log(xhr.status)})},getDetails(ev){const requestData={placeId:$(ev.target).closest(this.selectors.resultItemRadioWrapper).find(this.selectors.resultItemRadio).val()},requestGetDetails=T.Utils.startAjaxRequest(null,this.config.detailsAjax,requestData);return!!requestGetDetails&&requestGetDetails[0].always(()=>{}).done(result=>{null!=result&&this.fillFields(result)}).fail((xhr,ajaxOptions,thrownError)=>{console.log(xhr.status)})}})}(jQuery),function($){T.Module.FormInput.BarcodeScanner=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.select={eanInputField:".eanfield-input"},document.body.addEventListener("keypress",ev=>this.scanBarcode(ev),!0),resolve()},sync(){},stop(){this.isStopped||(this.isStopped=!0,document.body.removeEventListener("keypress",ev=>this.scanBarcode(ev),!0))},focusEanField(){$(this.select.eanInputField).val(""),$(this.select.eanInputField).focus()},scanBarcode(ev){const activeElementDataTName=$(document.activeElement)[0].getAttribute("data-t-name");(activeElementDataTName&&"FormInput"!==activeElementDataTName||!activeElementDataTName)&&this.focusEanField()}})}(jQuery),function($){T.Module.FormInput.BVPictureUpload=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$uploadButton=this.$(".js-upload-picture"),this.$itemContainer=this.$(".js-item-container"),this.maxPhotos=this.$ctx.data("max-photos"),this.$layer=this.$(".m-layer"),this.uploadLayerTemplate=doT.template(this.$(".upload-layer-template").html()),this.itemTemplate=doT.template(this.$ctx.find(".item-template").html()),this._events.on("openLayer",ev=>this.onOpenLayer(ev)),this._events.on("closeLayer",ev=>
7this.onCloseLayer(ev)),this.$itemContainer.find(".item").remove().each((index,element)=>{const jElement=$(element),url=jElement.find('[data-type="url"]').val(),thumbUrl=jElement.find('[data-type="thumburl"]').val(),caption=jElement.find('[data-type="caption"]').val();if(null!=url&&url.length>0)return this.addPhoto(url,thumbUrl,caption)}),resolve()},onOpenLayer(ev){if(!ev.$ctx.is(this.$layer))return;const uploadLayerContent=$(this.uploadLayerTemplate()),layerContainer=this.$layer.find(".js-layer-container-inner");return layerContainer.html(uploadLayerContent),T.Utils.initializeModules(layerContainer.first()),this._sandbox.getModuleById(layerContainer.find("[data-t-name='PictureUpload']").data("t-id")).setUploadFinishedListener(photoData=>this.onUploadFinished(photoData))},onCloseLayer(ev){if(!ev.$ctx.is(this.$layer))return;const uploadLayerContent=$(this.uploadLayerTemplate()),layerContainer=this.$layer.find(".js-layer-container-inner");layerContainer.html(uploadLayerContent);const existingUploadNode=layerContainer.find("*[data-t-name='PictureUpload']");return existingUploadNode.length>0?T.Utils.destroyModules(existingUploadNode):void 0},onUploadFinished(photoData){const layerModule=this._sandbox.getModuleById(this.$layer.data("t-id"));return null!=layerModule&&layerModule.hideLayer(),this.addPhoto(photoData.url,photoData.thumbUrl,photoData.caption)},addPhoto(url,thumbUrl,caption){if(!(this.$itemContainer.find(".item").length+1<=this.maxPhotos))return;const item=$(this.itemTemplate({url:url,thumbUrl:thumbUrl,caption:caption}));return item.find(".icon-delete").on("click",ev=>this.onClickCloseIcon(ev)),this.$itemContainer.append(item),this.renameHiddenInputs(),this.$itemContainer.find(".item").length>=this.maxPhotos?this.$uploadButton.attr("disabled","disabled"):void 0},onClickCloseIcon(ev){return ev.preventDefault(),$(ev.target).closest(".item").remove(),this.$uploadButton.removeAttr("disabled"),this.renameHiddenInputs()},renameHiddenInputs(){return this.$itemContainer.find(".item").each(function(index,element){return $(element).find("input[data-type='url']").attr("name",`values['photourl_${index+1}']`),$(element).find("input[data-type='thumburl']").attr("name",`transientValues['photothumburl_${index+1}']`),$(element).find("input[data-type='caption']").attr("name",`values['photocaption_${index+1}']`)})}})}(jQuery),function($){const glob_common=window.localization.messages.common,glob_button=glob_common.button,glob_month=glob_common.month,glob_weekday=glob_common.weekday,glob_config=window.localization.configurations;T.Module.FormInput.Calendar=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject);return this.$ctx=$(this._ctx),$.extend(this.elm,{$calendar:this.$ctx}),this.configuration=this.$ctx.data(),this.configuration.dateDisplayFormat=glob_config.dateFormat.toUpperCase(),this.configuration.dateFormat="YYYY-MM-DD",this.numberOfMonths=1,this.initCalendar(),this._events.on("viewportChanged",viewport=>this.onViewportChange(viewport)),this.onViewportChange(T.Utils.getViewport()),$(document).on("keyup",$.proxy(this.onKeyup,this))},checkDisabledDate(date){if(this.configuration.dateDisabledDays){const disabledDays=this.configuration.dateDisabledDays.split(",");for(let d of Array.from(disabledDays))if(moment(date).format(this.configuration.dateFormat)===d.trim())return!0}return!1},initCalendar(){const settings={checkIfNativeDate:()=>!1,classes:"m-forminput-datepicker input calendar hidden",dayOffset:0,format:this.configuration.dateDisplayFormat,outputFormat:this.configuration.dateFormat,pikadayOptions:{bound:!1,defaultDate:moment(),disableDayFn:$.proxy(this.checkDisabledDate,this),firstDay:this.getFirstDay(),mainCalendar:"left",numberOfMonths:this.numberOfMonths,setDefaultDate:!0,showMonthAfterYear:!1,showTime:!1,isRTL:this.getTextDireciton(),i18n:{previousMonth:glob_button.previous,nextMonth:glob_button.next,months:[glob_month.january.long,glob_month.february.long,glob_month.march.long,glob_month.april.long,glob_month.may.long,glob_month.june.long,glob_month.july.long,glob_month.august.long,glob_month.september.long,glob_month.october.long,glob_month.november.long,glob_month.december.long],weekdays:[glob_weekday.sunday.long,glob_weekday.monday.long,glob_weekday.tuesday.long,glob_weekday.wednesday.long,glob_weekday.thursday.long,glob_weekday.friday.long,glob_weekday.saturday.long],weekdaysShort:[glob_weekday.sunday.short,glob_weekday.monday.short,glob_weekday.tuesday.short,glob_weekday.wednesday.short,glob_weekday.thursday.short,glob_weekday.friday.short,glob_weekday.saturday.short]},onDraw:this.onDrawNewMonth.bind(this),theme:"m-forminput-datepicker calendar container"},placeholder:""};
7this.configuration.dateMax&&(settings.pikadayOptions.maxDate=moment(this.configuration.dateMax).toDate()),this.configuration.dateMin&&(settings.pikadayOptions.minDate=moment(this.configuration.dateMin).toDate()),this.configuration.dateDisableWeekends&&(settings.pikadayOptions.disableWeekends=this.configuration.dateDisableWeekends),this.configuration.defaultDate&&(settings.pikadayOptions.defaultDate=moment(this.configuration.defaultDate).toDate()),settings.pikadayOptions.setDefaultDate&&this.$ctx.val(moment(this.configuration.defaultDate).format(this.configuration.dateFormat)),this.pikadayinstance=pikadayResponsive(this.$ctx,settings),this.configurateWrapper(),this.initDataEventTracking()},initDataEventTracking(){this.onDrawNewMonth()},onDrawNewMonth(){if(!this.pikadayinstance||!this.pikadayinstance.pikaday)return;const hasEventTrackingString=$el=>""!==($el.data("data-eventtracking")||"").trim();if(hasEventTrackingString(this.$ctx))return;let elWithoutEventTracking=[];$(this.pikadayinstance.pikaday.el).find("button, select").each((index,el)=>{hasEventTrackingString($(el))||elWithoutEventTracking.push(el)});const $source=this.$ctx,$targets=$(elWithoutEventTracking);T.Utils.getLayout().proxyDataEventTracking($source,$targets,{focus:"focus mousedown"})},stepDate(step){const date=this.pikadayinstance.pikaday.getMoment();for(date.add(step,"d");this.checkDisabledDate(date);)date.add(step,"d");return this.pikadayinstance.pikaday.setMoment(date)},onKeyup(ev){switch(ev.which){case 39:this.stepDate(1);break;case 37:this.stepDate(-1)}},configurateWrapper(){return this.elm.$wrapper=this.$ctx.parent(),this.setParentAttributes(["data-field-nr"]),this.moveClassToParent()},setParentAttributes(attributes){const mod=this;return Array.from(attributes).map(a=>mod.elm.$wrapper.attr(a,mod.$ctx.attr(a)))},moveClassToParent(){return this.elm.$wrapper.attr("class",this.$ctx.attr("class")).end().attr("class","")},onViewportChange(viewport){return this.numberOfMonths="desktop"===viewport?this.$ctx.data("numberOfMonthDesktop")||2:1,this.pikadayinstance.pikaday._o.numberOfMonths=this.numberOfMonths,this.pikadayinstance.pikaday.gotoMonth(this.pikadayinstance.pikaday.getMoment().toDate().getMonth()),this.pikadayinstance.pikaday.draw()},getFirstDay(){switch(glob_config.firstDayOfWeek){case"sunday":return 0;case"monday":return 1;case"tuesday":return 2;case"wednesday":return 3;case"thursday":return 4;case"friday":return 5;case"saturday":return 6;default:return 0}},getTextDireciton:()=>"true"===glob_config.textDirectionRightToLeft})}(jQuery),function($){T.Module.FormInput.Checkbox=T.createDecorator({start(resolve,reject){return this.$ctx=$(this._ctx),this.elm={$label:this.$ctx.find("label"),$checkbox:this.$ctx.find('input[type="checkbox"]')},this.stateclass={focus:"had-focus",error:"has-error",notSelected:"is-not-selected"},this._events.on("t.sync",()=>this.sync()),this.elm.$label.on("click",ev=>this.onClick(ev)),this.elm.$checkbox.on("change",ev=>this.onChange(ev)),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0)},onClick(ev){if(!this.elm.$checkbox.is(":checked"))return setTimeout(()=>this.elm.$checkbox.blur(),0)},onChange(ev){this.toggleStateClass(this.stateclass.focus,!this.elm.$checkbox.is(":checked"),this.$ctx),this.toggleStateClass(this.stateclass.notSelected,!this.elm.$checkbox.is(":checked")&&this.elm.$checkbox.is(":invalid"),this.$ctx),this.elm.$checkbox.removeClass(this.stateclass.error)}})}(jQuery),function($){T.Module.FormInput.ClickableRating=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$ratingResult=this.$ctx.find(".js-rating-result"),this.$text=this.$ctx.find(".js-rating-text"),this.updateChecked(),this.$ctx.find('input[type="radio"]').change(()=>this.updateChecked()),this.$ratingResult.on("keypress",ev=>ev.preventDefault()),this.$ratingResult.on("invalid",()=>this.setContainerIsEmptyClass()),resolve()},updateChecked(){const selectedLabelValue=this.$ctx.find('input[type="radio"]:checked').val();return this.$ratingResult.val(selectedLabelValue),selectedLabelValue&&this.$ratingResult.trigger("focusout"),this.$text.html(`${selectedLabelValue||"0"}/5`)},setContainerIsEmptyClass(){this.$ctx.addClass("is-empty")}})}(jQuery),function($){const glob_config=window.localization.configurations,glob_common=window.localization.messages.common,glob_button=glob_common.button,glob_month=glob_common.month,glob_weekday=glob_common.weekday,glob_calendar=glob_common.calendar;T.Module.FormInput.DatePicker=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),$.extend(this.elm={$datePicker:this.$ctx}
7),$.extend(this.stateclass,{error:"has-error",noerror:"has-no-error",errorrequired:"is-not-selected",focused:"had-focus",empty:"is-empty",readonly:"[readonly]",ajaxError:"has-ajax-error",ignoreAjaxError:"ignore-ajax-error"}),this.configuration=this.$ctx.data(),this.configuration.dateDisplayFormat=glob_config.dateFormat.toUpperCase(),this.configuration.dateFormat="YYYY-MM-DD",this.configuration.blockAll=!1,this.restrictMaxDate=$(".js-datepicker-maxdate").length,this.onHandleCustomErrorWrapper=$.proxy(this,"onHandleCustomErrorWrapper"),this.showCalendar=$.proxy(this.showCalendar,this),this._events.on("t.sync",()=>this.sync()),this._events.on("form:trigger",data=>this.onFormTrigger(data)),this._events.on("forminput-datepicker:deliveryDate",data=>this.onUpdateDeliveryDate(data)),this.$ctx.on("datepicker:setDate",(ev,date)=>this.handleSetDate(ev,date)),this.elm.$datePicker.is(this.stateclass.readonly)?(this.elm.$input=$("+input",this.elm.$datePicker),this.formatOutputedDate()):this.initDatePicker(),resolve()},sync(){this.isSynced||(this._parent.sync(),this.isSynced=!0)},addLeadingZero:date=>1===date.length?`0${date}`:date,checkDisabledDate(date){let shiftedBlockedDays=[];if(void 0!==this.configuration.nonDeliveryDaysOfWeek){"string"!=typeof this.configuration.nonDeliveryDaysOfWeek&&(this.configuration.nonDeliveryDaysOfWeek=this.configuration.nonDeliveryDaysOfWeek.toString());const blockedDays=this.configuration.nonDeliveryDaysOfWeek.split(",");shiftedBlockedDays=this.shiftDays(blockedDays)}const cfg=this.configuration.availableDays;if(cfg&&cfg.length>0){let availableDays;availableDays="string"==typeof cfg?cfg.split(","):cfg;const momentDate=moment(date).format(this.configuration.dateFormat).trim(),dayOfWeek=date.getDay();let disableDate=!0;for(let d of Array.from(availableDays))if(momentDate===d){disableDate=!1;for(let d2 of Array.from(shiftedBlockedDays))dayOfWeek===d2&&(disableDate=!0)}return disableDate}if(this.configuration.blockAll)return!0},checkForInvalidDateString:value=>"Invalid date"===value.toString()||"Invalid Date"===value.toString(),invertDatePickerLayout(){const $wrapper=this.$ctx.parent();if($wrapper.hasClass("date-picker")){this.checkForInvalidDateString(this.$ctx.val())&&this.$ctx.attr("value","");const stash=$wrapper.attr("class");return this.$ctx.parent().replaceWith(this.$ctx.attr({type:"text",class:stash}))}},initDatePicker(){const mod=this;mod.pikadayinstance="",mod.pikadayinstance=pikadayResponsive(mod.elm.$datePicker,{format:this.configuration.dateDisplayFormat,outputFormat:this.configuration.dateFormat,checkIfNativeDate(){},placeholder:mod.getPlaceholder(),classes:"m-forminput input js-pikaday",dayOffset:0,pikadayOptions:{firstDay:this.getFirstDay(),disableDayFn:mod.configuration.disabledays?$.proxy(this.checkDisabledDate,this):null,minDate:!!mod.configuration.disabledays&&moment().toDate(),maxDate:this.restrictMaxDate?new Date:null,showTime:!1,isRTL:this.getTextDireciton(),yearRange:[1900,new Date((new Date).setFullYear((new Date).getFullYear()+1)).getFullYear()],defaultDate:mod.configuration.defaultDate?new Date(mod.configuration.defaultDate):void 0,setDefaultDate:!!mod.configuration.defaultDate,i18n:{previousMonth:glob_button.previous,nextMonth:glob_button.next,months:[glob_month.january.long,glob_month.february.long,glob_month.march.long,glob_month.april.long,glob_month.may.long,glob_month.june.long,glob_month.july.long,glob_month.august.long,glob_month.september.long,glob_month.october.long,glob_month.november.long,glob_month.december.long],weekdays:[glob_weekday.sunday.long,glob_weekday.monday.long,glob_weekday.tuesday.long,glob_weekday.wednesday.long,glob_weekday.thursday.long,glob_weekday.friday.long,glob_weekday.saturday.long],weekdaysShort:[glob_weekday.sunday.short,glob_weekday.monday.short,glob_weekday.tuesday.short,glob_weekday.wednesday.short,glob_weekday.thursday.short,glob_weekday.friday.short,glob_weekday.saturday.short]}}}),mod.configurateWrapper(),moment.updateLocale(moment.locale(),{invalidDate:"[common.calendar.invaliddate]"===glob_calendar.invaliddate?"Invalid Date":glob_calendar.invali
7ddate}),this.elm.$datePicker.closest('[data-t-name="CustomFilterDateSelection"]').trigger("inputdatepicker:initdatepicker",{nr:this.elm.$datePicker.data("picker-nr"),obj:mod.pikadayinstance}),this.initDataEventTracking()},initDataEventTracking(){const $source=this.$ctx,$target=$(this.pikadayinstance.pikaday._o.field);T.Utils.getLayout().proxyDataEventTracking($source,$target)},configurateWrapper(){const mod=this;return mod.elm.$wrapper=mod.$ctx.parent(),mod.elm.$wrapper.on("setInputError",this.onHandleCustomErrorWrapper),mod.elm.$next=mod.$ctx.next(),mod.elm.$input=$("+input",mod.elm.$datePicker),mod.setParentAttributes(["data-field-nr"]),mod.moveClassToParent(),mod.elm.$wrapper.on("click",this.showCalendar),mod.handleForminputEvents(mod.elm.$datePicker.filter("[required]").length)},handleForminputEvents(required){return this.elm.$input.on("focus",ev=>(this.checkForInvalidDateString(this.$ctx.val())&&this.$ctx.attr("value",""),this._parent.toggleStateClass(this.stateclass.focused,!1,this.elm.$wrapper),this._parent.toggleStateClass(this.stateclass.error+" "+this.stateclass.noerror,!1,this.elm.$wrapper),this._parent.toggleStateClass(this.stateclass.error+" "+this.stateclass.noerror,!1,this.elm.$next))),this.elm.$input.on("focusout",ev=>{if(this.checkForInvalidDateString(this.$ctx.val())&&this.$ctx.attr("value",""),this._parent.toggleStateClass(this.stateclass.focused,!0,this.elm.$wrapper),!this.isAutocompleteTrigger&&this.constraint&&this.state.constraintTrigger)return this.triggerConstraints()}),this.elm.$input.on("keyup",ev=>(this.checkForInvalidDateString(this.$ctx.val())&&this.$ctx.attr("value",""),this._parent.toggleStateClass(this.stateclass.error+" "+this.stateclass.noerror,!1,this.elm.$wrapper),this._parent.toggleStateClass(this.stateclass.error+" "+this.stateclass.noerror,!1,this.elm.$next))),required&&(this.elm.$input.attr("required",!0),this.elm.$input.on("focusout keyup",ev=>{const target=ev.currentTarget;return this._parent.toggleStateClass(this.stateclass.errorrequired,""===target.value||this.checkForInvalidDateString(target.value),this.elm.$wrapper)})),this.elm.$input.on("focusout keyup",ev=>{if("Invalid date"===ev.currentTarget.value||this.elm.$wrapper.hasClass(this.stateclass.ajaxError))return $(this).attr("value","")})},onHandleCustomErrorWrapper(ev,errorMessage,append){return this.toggleStateClass(this.stateclass.error,Boolean(errorMessage),this.elm.$input),this.setCustomErrorMessage(this.elm.$wrapper,errorMessage,append),!0},setParentAttributes(attributes){const mod=this;return Array.from(attributes).map(a=>mod.elm.$wrapper.attr(a,mod.$ctx.attr(a)))},moveClassToParent(){const mod=this;return mod.$ctx.hasClass("has-error")&&mod.elm.$next.addClass("has-error"),mod.$ctx.hasClass("has-ajax-error")&&mod.elm.$next.addClass("has-ajax-error"),mod.elm.$wrapper.attr("class",mod.$ctx.attr("class")).end().attr("class","")},formatOutputedDate(){let date=new Date(this.$ctx.val());return this.checkForInvalidDateString(date)?(date="",this.$ctx.attr("value",""),!0):(null==this.elm.$clone&&(this.elm.$clone=this.$ctx.clone()),this.$ctx.attr("type","hidden").after(()=>this.elm.$clone.attr("disabled",!0).val(()=>this.configuration.dateDisplayFormat.replace(/YYYY/,date.getFullYear()).replace(/MM/,this.addLeadingZero((date.getMonth()+1).toString())).replace(/DD/,this.addLeadingZero(date.getDate().toString())))))},getFirstDay(){switch(glob_config.firstDayOfWeek){case"sunday":return 0;case"monday":return 1;case"tuesday":return 2;case"wednesday":return 3;case"thursday":return 4;case"friday":return 5;case"saturday":return 6;default:return 0}},getPlaceholder(){const placeholder=this.elm.$datePicker.attr("placeholder")||"";return this.elm.$datePicker.attr("placeholder",""),placeholder},getTextDireciton:()=>"true"===glob_config.textDirectionRightToLeft,shiftDays(arrIndex){const shiftedIndex=[];for(let x of Array.from(arrIndex)){const y=parseInt(x,10)-1;shiftedIndex.push(y)}return shiftedIndex},onFormTrigger(data){const mod=this;if(0!==mod.elm.$datePicker.closest(data.$form).length&&(null==data.targetId||data.targetId===mod.$ctx.attr("id")))switch(data.action){case"readonly":if(mod.pikadayinstance)return mod.pikadayinstance.pikaday.destroy(),mod.invertDatePickerLayout(),mod.$ctx.addClass(data.editclass),mod.$ctx.attr("readonly",!0),mod.formatOutputedDate();break;case"editable":if(mod.$ctx.hasClass(data.editclass)){mod.$ctx.attr("readonly",!1);try{mod.elm.$clone.remove()}catch(e){console.error(e)}return mod.initDatePicker()}break;case"ajaxerror":var stateclass=mod.stateclass.ajaxError;return null==data.blockSubmit||data.blockSubmit||(stateclass+=` ${mod.stateclass.ignoreAjaxError}`),mod._parent.toggleStateClass(stateclass,data.showAjaxError,mod.elm.$
7wrapper)}},handleSetDate(ev,date){this.pikadayinstance||this.initDatePicker(),this.pikadayinstance.pikaday.setDate(date)},onUpdateDeliveryDate(data){const mod=this;if(null==data.targetId||data.targetId===mod.$ctx.attr("id"))return null!=data.dates&&(mod.configuration.availableDays=data.dates,!mod.$ctx.val()&&data.dates.length>0&&mod.pikadayinstance.pikaday.setDate(data.dates[0])),null!=data.blockedDays&&(mod.configuration.nonDeliveryDaysOfWeek=data.blockedDays),null!=data.blockAll?mod.configuration.blockAll=data.blockAll:void 0},showCalendar(){this.pikadayinstance.pikaday.show()}})}(jQuery),function($){T.Module.FormInput.Dropdown=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject);const mod=this;mod.$dropdown=mod.$ctx,mod.$select=mod.$("select"),mod.$selectlink=mod.$select.filter(".js-input-select-link"),mod.$constrainttrigger=mod.$dropdown.filter(""),mod.$required=mod.$select.filter("[required]"),mod.requiredclass="is-not-selected",mod.inactiveWithoutValueClass="inactive-without-value",mod.selectonlyclasses=["js-trigger-ajax-request","js-input-select-link"].join(" "),mod.ctxonlyclasses="js-make-editable has-error",this.matchedItems=[],this.searchTermCurrent="",this.counter=0,this.keyCounter=0,this.configFile=this.$select.attr("data-config")||{};try{this.configFile=JSON.parse(this.configFile)}catch(error){}return this.lazyloadConfig=this.readLazyloadConfiguration(),this.lazyloadConfig?this.initDropdownLazyload():this.initDropdown(),mod.$required.on({change(ev){const $requiredSelect=$(ev.currentTarget);return mod.updateRequired($requiredSelect)}}),mod.$selectlink.on({change:ev=>mod.followOptionLink(ev)}),mod.$dropdown.on("edit",$.proxy(function(ev,eventData){const $target=$(ev.currentTarget),$enable=$target.find("select"),$disable=$target.find("input"),invertReadonly=eventData.invert,$requiredSelect=$target.find("select[required]");return mod.updateRequired($requiredSelect),mod._parent.toggleDisabled($enable,$disable,invertReadonly),mod.onUpdateInactiveWithoutValue(invertReadonly)},mod)),this.sync=$.proxy(this.sync,this),this._events.on("select:updateInactiveWithoutValue",blnHideIntro=>this.onUpdateInactiveWithoutValue(blnHideIntro)),this.$select.on("enableSelectField",()=>this.updateInactiveWithoutValue(!0)),this.$select.on("disableSelectField",()=>this.updateInactiveWithoutValue(!1)),this.$select.on("activateLazyloadScrolling",()=>this.activateLazyloadScrolling()),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this._parent.sync(),this.state.attrConstraintTrigger=Boolean(this.constraint.attr.url),this.state.typeConstraintTrigger=Boolean(this.constraint.type.url),this.state.constraintTrigger=this.state.attrConstraintTrigger||this.state.typeConstraintTrigger,this.isAutocompleteTrigger&&!this.state.constraintTrigger||this.$dropdown.on("change",ev=>this.onSelect(ev)),this.$dropdown.on("triggerconstraint",ev=>this.onSelect(ev)),this.isSynced=!0)},matchCustom(params,data){if(this.configFile.showSearchbar){if(""===$.trim(params.term))return data;if(void 0===data.text)return null;if(data.children&&data.children.length>0){const match=$.extend({},!0,data);return match.children.length>0?match:modelMatcher(params,match)}const originalText=data.text.toUpperCase(),searchTerm=params.term.toUpperCase();return originalText.indexOf(searchTerm)>-1?data:null}if(searchTerm=$.trim(params.term),this.countOptions=this.$select.children("option").length,searchTerm.length>0&&(searchTerm=params.term.charAt(params.term.length-1)),this.searchTermCurrent!==searchTerm&&(this.matchedItems=[],this.counter=0,this.keyCounter=0),0===this.keyCounter&&0===data.text.toUpperCase().indexOf(searchTerm.toUpperCase())&&this.matchedItems.push(data),this.counter++,this.countOptions===this.counter){if(this.matchedItems.length>0){if(searchTerm.length>0){const ID=this.matchedItems[this.keyCounter]._resultId;setTimeout(()=>{const container=this.$ctx.find(".select2-results .select2-results__options")[0];return container.scrollHeight>container.clientHeight&&$(container).scrollTop(document.getElementById(ID).offsetTop),$(document.getElementById(ID)).trigger("mouseenter")},10)}this.counter=0}this.searchTermCurrent===searchTerm&&this.keyCounter++}return this.matchedItems.length===this.keyCounter&&(this.keyCounter=0),this.searchTermCurrent=searchTerm,this.$ctx.find("input.select2-search__field").val(searchTerm),data.disabled=!1,data},readLazyloadConfiguration(){let lazyloadConfig=this.$select.attr("data-lazyload-scrolling");try{lazyloadConfig&&(lazyloadConfig=JSON.parse(lazyloadConfig))}catch(error){}return lazyloadConfig},activateLazyloadScrolling(){this.lazyloadConfig||(this.lazyloadConfig=this.readLazyloadConfiguration(),this.lazyloadConfig&&this.initDropdownLazyload())},initDataEventTracking(){const $source=this.$select,$target=this.$ctx.find(".select2-container [tabindex]").first();T.Utils.getLayout().proxyDataEventTracking($source,$target)},initDropdown(){const mod=this;return this.configFile.showSearchbar||this.$dropdown.addClass("no-searchbar"),mod.$select.is(":disabled")&&mod.$select.closest(".select-wrap").addClass("select-disabled"),mod.$select[0].hasAttribute("multiple")&&mod.$ctx.addClass("multiple-dropdown"),mod.$select.select2({allowClear:mod.configFile.allowClear||!1,matcher:this.matchCustom.bind(this),dropdownAutoWidth:mod.configFile.dropdownAutoWidth||!0,dropdownParent:mod.$dropdown,minimumResultsForSearch:mod.configFile.minimumResultsForSearch||0,multiple:mod.configFile.multiple||!1,placeholder:mod.configFile.showPlaceholder&&mod.c
7onfigFile.placeholder?mod.configFile.placeholder:null,maximumInputLength:mod.configFile.maximumInputLength||0,maximumSelectionLength:mod.configFile.maximumSelectionLength||0,minimumInputLength:mod.configFile.minimumInputLength||0,language:{noResults:()=>this.configFile.noResultsMessage,inputTooShort:()=>this.configFile.inputTooShortMessage,maximumSelected:()=>this.configFile.maximumSelectionLengthMessage,inputTooLong:()=>this.configFile.inputTooLongMessage},templateResult:function(data){if(mod.configFile.templateResultMarkup){let variableValue,templateString=mod.configFile.templateResultMarkup.templateString;return mod.configFile.templateResultMarkup.templateVariables.forEach(variable=>{variableValue=variable.text?variable.text:JSON_Helpers.getValueByJsonPath(data,variable.sourcePath),templateString=templateString.replace(variable.variableToken,variableValue)}),$(templateString)}{if(!data.element)return data.text;let $element=$(data.element);if($element[0]&&$element[0].className){let $wrapper=$("<span></span>");return $wrapper.addClass($element[0].className),$wrapper.text(data.text),$wrapper}return data.text}},templateSelection:function(data){if(mod.configFile.templateSelectionMarkup){let variableValue,templateString=mod.configFile.templateSelectionMarkup.templateString;return mod.configFile.templateSelectionMarkup.templateVariables.forEac
7h(variable=>{variableValue=variable.text?variable.text:JSON_Helpers.getValueByJsonPath(data,variable.sourcePath),templateString=templateString.replace(variable.variableToken,variableValue)}),$(templateString)}return data.text}}),mod.updateRequired(mod.$required),mod.onUpdateInactiveWithoutValue(!0),mod.$select.on("select2:open",$.proxy(mod.onOpenSelect2,mod)),mod.$select.on("select2:close",e=>mod.$dropdown.addClass("had-focus")),this.initDataEventTracking(),mod.$dropdown.removeClass(mod.selectonlyclasses),mod.$dropdown.find(".select2-selection__rendered").is("span")&&mod.$dropdown.find(".select2-selection__rendered").attr("role","textbox"),mod.$select.removeClass(mod.ctxonlyclasses)},initDropdownLazyload(){const mod=this;this.configFile.showSearchbar||this.lazyloadConfig.showSearchbar?this.$dropdown.removeClass("no-searchbar"):this.$dropdown.addClass("no-searchbar"),mod.$select[0].hasAttribute("multiple")&&mod.$ctx.addClass("multiple-dropdown"),this.lazyloadConfig.requestName=this.lazyloadConfig.requestName||{},this.lazyloadConfig.responseName=this.lazyloadConfig.responseName||{};let requestNameSearchTerm=this.lazyloadConfig.requestName.searchTerm||"searchTerm",requestNamePageLimit=this.lazyloadConfig.requestName.pageLimit||"pageLimit",requestNamePage=this.lazyloadConfig.requestName.pageNumber||"page",requestNameTrigger=this.lazyloadConfig.requestName.trigger,responseNameResultItems=this.lazyloadConfig.responseName.resultItems||"results",responseNameItemId=this.lazyloadConfig.responseName.itemId||"id",responseNameItemName=this.lazyloadConfig.responseName.itemName||"text",responseNameMoreFlage=this.lazyloadConfig.responseName.moreFlage||"more";const getTriggerValueForRequest=()=>this.lazyloadConfig.getTriggerValueBySelector?$(this.lazyloadConfig.getTriggerValueBySelector).val():null,storeData=data=>{if(this.lazyloadConfig.storeDataAttribute&&this.lazyloadConfig.storeData){let dataAttr=this.lazyloadConfig.storeDataAttribute,dataProperty=this.lazyloadConfig.storeData;this.$select.removeAttr(dataAttr),this.$select.attr(dataAttr,JSON.stringify({[dataProperty]:data[dataProperty]}))}};if(this.lazyloadConfig.preselectedItemName){let preselectedItemId=this.lazyloadConfig.preselectedItemId||this.lazyloadConfig.preselectedItemName,preselectedItemName=this.lazyloadConfig.preselectedItemName;var option=new Option(preselectedItemName,preselectedItemId,!0,!0);this.$select.append(option),setTimeout(()=>{mod.$select.val(preselectedItemId).trigger("change")},100)}this.$select.select2({ajax:{url:mod.lazyloadConfig.ajaxUrl||"",dataType:mod.lazyloadConfig.dataType||"json",method:mod.lazyloadConfig.method||"get",delay:mod.lazyloadConfig.delay||250,data:function(params){let requestData={};return requestData[requestNameSearchTerm]=params.term||"",requestData[requestNamePage]=params.page?params.page-1:0,requestData[requestNamePageLimit]=mod.lazyloadConfig.pageLimit||100,requestNameTrigger&&(requestData[requestNameTrigger]=getTriggerValueForRequest()),requestData},processResults:function(data,params){data||((data={})[responseNameResultItems]=[],data[responseNameMoreFlage]=!0);let resultItems=data[responseNameResultItems],moreFlag=data[responseNameMoreFlage],results=[];return $.each(resultItems,function(index,value){results.push({id:value[responseNameItemId],text:value[responseNameItemName]})}),mod.lazyloadConfig.storeData&&storeData(data),{results:results,pagination:{more:moreFlag}}},cache:!0},allowClear:mod.configFile.allowClear||!1,dropdownAutoWidth:mod.configFile.dropdownAutoWidth||!0,dropdownParent:mod.$dropdown,minimumResultsForSearch:mod.configFile.minimumResultsForSearch||0,multiple:mod.configFile.multiple||!1,placeholder:mod.lazyloadConfig.showPlaceholder&&mod.configFile.placeholder?mod.configFile.placeholder:null,maximumInputLength:mod.configFile.maximumInputLength||0,maximumSelectionLength:mod.configFile.maximumSelectionLength||0,minimumInputLength:mod.lazyloadConfig.searchTermMinLength||0,language:{loadingMore:()=>this.configFile.loadingMoreMessage,noResults:()=>this.configFile.noResultsMessage,inputTooShort:()=>this.configFile.inputTooShortMessage,maximumSelected:()=>this.configFile.maximumSelectionLengthMessage,inputTooLong:()=>this.configFile.inputTooLongMessage}}),this.initDataEventTracking()},makeEditable(ev,blnInvertReadonly){const $el=$(ev.currentTarget);return $el.find("select").attr("disabled",blnInvertReadonly),$el.find("input").attr("disabled",!blnInvertReadonly)},followOptionLink(ev){const target=ev.currentTarget;if(0!==target.selectedIndex)return window.location.href=target.value},updateRequired($select){const mod=this;if(void 0!==$select){const $requiredSelect=$select,$requiredForminput=$requiredSelect.closest(".m-forminput-dropdown"),selectedValue=$requiredSelect.val(),isSelected=null!=selectedValue&&selectedValue.length>0;return $requiredForminput.toggleClass(mod.requiredclass,!isSelected)}},onOpenSelect2(){const $select2=this.$(".select2"),$wrapper=this.$(".select2-dropdown").parent();if($(".select2-container").width(this.$dropdown.width()),this.$(".select2-search__field").removeAttr("role"),this.$(".select2-search__field").attr("type","text"),$wrapper.length)return $wrapper.css({left:0,top:$select2.position().top+$select2.outerHeight(),width:$select2.outerWidth()})},onUpdateInactiveWithoutValue(blnHideIntro){const mod=this,$select=mod.$select.filter(":visible");setTimeout(function(){if(($select.is(":disabled")||$select.is("[readonly]"))&&!$select.val())return $select.closest(".select-wrap").toggleClass(mod.inactiveWithoutValueClass,blnHideIntro)},100)},updateInactiveWithoutValue(enable){const $selectWrap=this.$select.closest(".select-wrap");enable?($selectWrap.removeClass(this.inactiveWithoutValueClass),$selectWrap.hasClass("readonly")||(this.$select.removeAttr("disabled"),this.$dropdown.find("input[type=hidden]").attr("disabled",!0))):($selectWrap.addClass(this.inactiveWithoutValueClass),$selectWrap.hasClass("readonly")||(this.$select.attr("disabled",!0),this.$dropdown.find("input[type=hidden]").removeAttr("disabled")))},onSelect(){if(this.constraint&&this.state.constraintTrigger){if(this.$select.is(":invalid"))return!0;
7if(this.state.attrConstraintTrigger){if(!this.$select.val())return!0;setTimeout(()=>{this.constraintRequest("attr")},50)}else if(this.state.typeConstraintTrigger){if(!this.$select.val())return!0;setTimeout(()=>{this.constraintRequest("type")},50)}}return!0}})}(jQuery),function($){T.Module.FormInput.MultilineDropdown=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject);const mod=this;return mod.$dropdown=mod.$ctx,mod.$select=$("select",mod.$dropdown),mod.$selectlink=mod.$select.filter(".js-input-select-link"),mod.$required=mod.$select.filter('[required="true"]'),mod.selectonlyclasses=["js-trigger-ajax-request"].join(" "),mod.ctxonlyclasses="js-make-editable has-error",mod.initDropdown(),mod.$dropdown.on("edit",$.proxy(function(ev,eventData){const $target=$(ev.currentTarget),$enable=$target.find("select"),$disable=$target.find("input"),invertReadonly=eventData.invert;return mod._parent.toggleDisabled($enable,$disable,invertReadonly)},mod)),mod.$required.on({change:ev=>mod.$dropdown.removeClass("is-not-selected")}),mod.$selectlink.on({change:ev=>mod.followOptionLink(ev)}),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this._parent.sync(),this.state.attrConstraintTrigger=Boolean(this.constraint.attr.url),this.state.typeConstraintTrigger=Boolean(this.constraint.type.url),this.state.constraintTrigger=this.state.attrConstraintTrigger||this.state.typeConstraintTrigger,this.isAutocompleteTrigger||this.$dropdown.on("change",ev=>this.onSelect(ev)),this.$dropdown.on("triggerconstraint",ev=>this.onSelect(ev)),this.isSynced=!0)},initDataEventTracking(){const $source=this.$select,$target=this.$ctx.find(".select2-container [tabindex]").first();T.Utils.getLayout().proxyDataEventTracking($source,$target)},initDropdown(){const mod=this;mod.$select.select2({dropdownParent:mod.$ctx,minimumResultsForSearch:1/0,width:"style",templateResult:function(option){if(!option.id)return option.text;return $(`<div>${option.element.dataset.content}</div>`)}}),mod.$dropdown.removeClass(mod.selectonlyclasses),mod.$select.removeClass(mod.ctxonlyclasses),mod.$select.on("select2:open",function(){const $select2=mod.$(".select2");return mod.$(".select2-dropdown").parent().css({left:0,top:$select2.position().top+$select2.outerHeight(),width:$select2.outerWidth()}),mod.$select.on("select2:close",e=>mod.$dropdown.addClass("had-focus"))}),this.initDataEventTracking()},followOptionLink(ev){const target=ev.currentTarget;if(0!==target.selectedIndex)return window.location.href=target.value},onSelect(){if(this.constraint&&this.state.constraintTrigger){if(this.$select.is(":invalid"))return!1;if(this.state.attrConstraintTrigger){if(!this.$select.val())return!1;this.constraintRequest("attr")}else this.state.typeConstraintTrigger&&this.constraintRequest("type")}return!0}})}(jQuery),function($){T.Module.FormInput.Password=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$passwordWrapper=this.$ctx.parent(".js-password-wrapper"),this.$caseValidationMessage=$(".js-case-validation",this.$passwordWrapper),this.$numberValidationMessage=$(".js-number-validation",this.$passwordWrapper),this.$lengthValidationMessage=$(".js-length-validation",this.$passwordWrapper),this.$strengthbar=$(".js-strength-bar",this.$passwordWrapper),this.validationCheck=!1,this.liveValidation=$.proxy(this.liveValidation,this),this.showValidationMessageOnBlur=$.proxy(this.showValidationMessageOnBlur,this),this.updatePasswordStrength=$.proxy(this.updatePasswordStrength,this),this.$ctx.on("keyup input",T.Utils.debounce(this.liveValidation,150)),this.$ctx.on("focusout",this.showValidationMessageOnBlur),this.$ctx.on("focus",ev=>{this.$ctx.removeClass("has-error")}),resolve()},liveValidation(ev){const caseCheck=new RegExp("^(?=.*[a-z])(?=.*[A-Z])"),numCheck=new RegExp("(?=.*[0-9])"),lengthCheck=new RegExp("(?=.{8,})"),spCharCheck=new RegExp("[^a-zA-Z0-9]"),inputVal=this.$ctx.val();let strength=0,hasSpChar=!1;return caseCheck.test(inputVal)?(this.$caseValidationMessage.removeClass("is-invalid is-valid").addClass("is-valid"),strength++):this.$caseValidationMessage.removeClass("is-invalid is-valid").addClass("is-invalid"),numCheck.test(inputVal)?(this.$numberValidationMessage.removeClass("is-invalid is-valid").addClass("is-valid"),strength++):this.$numberValidationMessage.removeClass("is-invalid is-valid").addClass("is-invalid"),lengthCheck.test(inputVal)?(this.$lengthValidationMessage.removeClass("is-invalid is-valid").addClass("is-valid"),strength++):this.$lengthValidationMessage.removeClass("is-invalid is-valid").addClass("is-invalid"),this.validationCheck=3===strength,spCharCheck.test(inputVal)&&(hasSpChar=!hasSpChar),this.validationCheck&&"input"===ev.type&&this.$ctx.removeClass("has-error"),this.updatePasswordStrength(strength,hasSpChar)},showValidationMessageOnBlur(){this.validationCheck||this.$ctx.hasClass("has-error")||this.$ctx.addClass("has-error")},updatePasswordStrength(progressStrength,specialChar){let progressclass="strength-progress-1 strength-progress-2 strength-progress-3 strength-progress-4";switch(progressStrength){case 1:this.$strengthbar.removeClass(progressclass).addClass("strength-progress-1");break;case 2:this.$strengthbar.removeClass(progressclass).addClass("strength-progress-2");break;case 3:this.$strengthbar.removeClass(progressclass).addClass("strength-progress-3");break;default:this.$strengthbar.removeClass(progressclass)}3===progressStrength&&specialChar&&this.$strengthbar.removeClass(progressclass).addClass("strength-progress-4")}})}(jQuery),function($){T.Module.FormInput.SimpleCaptcha=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$captchaValueField=this.$ctx.find(".js-captcha-token"),this.$refreshCaptcha=this.$ctx.find(".js-reset"),this.$captchaImg=this.$ctx.find(".js-captcha-img"),this.$captchaContainer=this.$ctx.find(".js-captcha-img-container"),this.onRefreshCaptcha=$.proxy(this,"onRefreshCaptcha"),this.$refreshCaptcha.on("click",this.onRefreshCaptcha),this.validateCaptcha=$.proxy(this,"validateCaptcha"),this.$captchaValueField.on("focusout",this.validateCaptcha),this.mutationObs=new MutationObserver(mutation=>{this.validateCaptcha()})},sync(){this.$captchaValueField.val(""),this.mutationObs.observe(this.$captchaValueField[0],{attributes:!0,attributeFilter:["class"]})},setCaptcha(){const formId=this.$captchaContainer.find(".js-captcha-key").val(),captchaToken=this.$captchaContainer.find(".js-captcha-img-url").val()+"?ckey="+formId+"&"+Date.now();return this.$captchaImg.attr("src",captchaToken),this.$captchaImg.find("source").attr("srcset",captchaToken),this.$captchaValueField.val("")},onRefreshCaptcha(ev){this.setCaptcha(),ev.preventDefault()},validateCaptcha(){this.$captchaValueField.hasClass("is-empty")?this.$ctx.addClass("captcha-empty had-focus"):this.$ctx.removeClass("captcha-empty had-focus")}})}(jQuery),function($){T.Module.FormInput.SliderCaptcha=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject);const mod=this;return mod.$ctx=$(this._ctx),mod.$captchaKeyField=mod.$(".js-captcha-key"),mod.captchaKeyValue=mod.$ctx.data("captcha-key"),mod.ulockUrl=mod.$ctx.data("unlock-url"),mod.$captchaValueField=mod.$(".js-captcha-token"),mod.$form=mod.$ctx.closest('[data-t-name="Form"]'),mod.$slider=mod.$(".js-slider-captcha"),mod.$sliderValue=mod.$(".js-slider-captcha-value"),mod.disableSubmit(),mod.setUpSlideCaptcha(),mod.initDataEventTracking(),mod.onUiSliderEnd=$.proxy(mod,"onUiSliderEnd"),mod.$slider[0].noUiSlider.on("end",mod.onUiSliderEnd)},sync(){},initDataEventTracking(){const $source=this.$sliderValue,$targets=this.$slider.find(".noUi-handle, .noUi-origin");T.Utils.getLayout().proxyDataEventTracking($source,$targets,{focus:"focus mousedown"})},disableSubmit(){return this._events.emit("form:disableSubmit",{id:this.$ctx.data("t-id")})},enableSubmit(){return this._events.emit("form:enableSubmit",{id:this.$ctx.data("t-id")})}
7,getCaptcha(){const request=T.Utils.startAjaxRequest("unlock",null,{ckey:this.captchaKeyValue});return!!request&&request[0].done($.proxy(this.setCaptcha,this)).fail($.proxy(this.disableSubmit,this))},setCaptcha(response){return this.$captchaValueField.val(response.token),this.enableSubmit()},setUpSlideCaptcha(){return this.isRtl=void 0!==$("body").attr("dir")||void 0!==$("html").attr("dir"),this.$captchaKeyField.val(this.captchaKeyValue),noUiSlider.create(this.$slider[0],{start:[0],direction:this.isRtl?"rtl":"ltr",range:{min:0,max:1}})},onUiSliderEnd(values){const mod=this,val=parseInt(values[0]);1===val?(mod.$sliderValue.val(val).trigger("change"),mod.getCaptcha(),mod._parent.toggleStateClass("has-error",!1)):(mod.$slider[0].noUiSlider.set(0),mod.disableSubmit())}})}(jQuery),function($){T.Module.FormInput.TextArea=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject);const mod=this;return mod.$ctx=$(mod._ctx),mod.$textAreaInput=mod.$("textarea"),mod.$textAreaMinLength=$(".m-forminput-textarea").attr("data-min-size"),mod.$textAreaCharacterCounter=mod.$(".character-counter"),this.$textAreaInput.on("blur",$.proxy(this.handleTextareaMinLength,this)),mod.$textAreaInput.is("[required]")&&mod.$ctx.addClass("is-required"),void 0!==mod.$textAreaCharacterCounter.html()&&mod.initTextArea(),mod.elm.$input=mod.$textAreaInput,mod.$ctx.on("edit",$.proxy(function(ev,eventData){const invertReadonly=eventData.invert;return mod._parent.makeEditable(mod.$textAreaInput,invertReadonly)},mod))},initTextArea(){return this.maxLength=void 0!==this.$textAreaInput.attr("maxlength")&&this.$textAreaInput.attr("maxlength"),this.$textAreaInput.on("keyup",$.proxy(this.onTextAreaInputChange,this)),this.$textAreaInput.on("reset",$.proxy(this.onResetTextArea,this)),this.onTextAreaInputChange()},handleTextareaMinLength(ev){if(this.$textAreaMinLength){const textarea=ev.target,textAreaValue=ev.target.value,errorContaier=$(".m-forminput-textarea").parent().find(".error-min-length")[0];if(!textarea||!textAreaValue||!errorContaier)return;textAreaValue.trim().length>=this.$textAreaMinLength||0===textAreaValue.length?(errorContaier.style.display="none",textarea.classList.remove("has-error")):(errorContaier.style.display="block",textarea.classList.add("has-error"))}},onResetTextArea(){return $(this.$textAreaInput).val(""),$(this.$textAreaInput).trigger("keyup")},onTextAreaInputChange(ev){if(!1!==this.maxLength)return this.length=this.$textAreaInput.val().length,this.$textAreaCharacterCounter.text(this.maxLength-this.length),ev&&13===ev.which&&(this.$textAreaInput.val(this.$textAreaInput.val().trim()+" "),this.length=this.$textAreaInput.val().length),this.$textAreaCharacterCounter.text(this.maxLength-this.length)}})}(jQuery),function($){T.Module.ImageVideoGallery.ReviewGallery=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.isSynced=!1,this.sync=$.proxy(this.sync,this)},sync(){if(!this.isSynced)return this.isSynced=!0,this._parent.initializeLayer()}})}(jQuery),function($){T.Module.IPGContainer.ZoovuAssistant=T.createDecorator({start(resolve){return this._parent.start(resolve),this.$ctx=$(this._ctx),this.isSynced=!1,this.productadviserid=this.$ctx.data("product-adviser-id"),this._events.on("t.sync",()=>this.sync()),this.targetGroupId=$("body").data("pageDimensions").targetGroup,resolve()},sync(){this.isSynced||(this.isSynced=!0,this.loadZoovuAssistantScript(),this.targetGroupId&&sessionStorage.setItem("segment",this.targetGroupId))},loadZoovuAssistantScript(){T.Commons.ScriptLoader.loadOnceZoovuAssistant(this.productadviserid)}})}(jQuery),function($){T.Module.Layer.CookieLaw=T.createDecorator({CLASS_NAME_BLUR:"cookielaw-blur-background",start(resolve,reject){this._parent.start(resolve,reject),this.$cookielaw=this.$ctx.find(".o-cookielaw"),this.cookielawModule=T.Utils.application._sandbox.getModuleById(this.$cookielaw.data("t-id")),this.setupEvents()},setupEvents(){this.cookielawModule.listenToSubmitFinished(()=>{this.hideLayer()}),this.listenToCloseByUserAction(()=>{this.cookielawModule.sendAutoAcceptCall()})},hideLayer(){this._parent.hideLayer.apply(this,arguments),this.removeBlur()},showLayer(){this._parent.showLayer.apply(this,arguments),this.addBlur()},openLayer(){this._parent.openLayer.apply(this,arguments),this.addBlur()},addBlur(){this.getBody().addClass(this.CLASS_NAME_BLUR)},removeBlur(){this.getBody().removeClass(this.CLASS_NAME_BLUR)},getBody(){return this.$body=this.$body||$("body").first(),this.$body}})}(jQuery),function($){T.Module.Layer.ExitIntent=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.isExitIntentLayerStateSaved=!1,this.exitIntentId=this.$ctx.data("exitintent-layer
7-id")||"no-layer-id-given",this.exitIntentApiUrl=this.$ctx.data("exitintent-api-url")||"/enhancedpageload",this.handleMouseLeave=(ev=>this.onMouseLeave(ev)),this.setupEvents()},removeEventListener(){$(document).off("mouseleave",ev=>this.handleMouseLeave(ev))},setupEvents(){$(document).on("mouseleave",ev=>this.handleMouseLeave(ev))},hideLayer(){this._parent.hideLayer.apply(this,arguments),this.removeEventListener(),this.$ctx.remove()},showLayer(){this._parent.showLayer.apply(this,arguments)},openLayer(){this._parent.openLayer.apply(this,arguments)},onMouseLeave(event){(event.clientY<=0||event.clientX<=0||event.clientX>=window.innerWidth||event.clientY>=window.innerHeight)&&(this.openLayer(),this.exitIntentApiUrl&&!this.isExitIntentLayerStateSaved&&this.rememberExitIntentAsOpened())},rememberExitIntentAsOpened(){$.ajax({url:this.exitIntentApiUrl,cache:!1,type:"GET",data:{layerId:this.exitIntentId},success:()=>{this.isExitIntentLayerStateSaved=!0}})}})}(jQuery),function($,doT){T.Module.Layer.Iframe=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.isSynced=!1,this.$ctx=$(this._ctx),this.configuration=this.$ctx.data(),this.$iframe=this.$ctx.find("iframe"),this.$iframeWrapper=this.$ctx.find(".js-layer-container-inner"),this.sync=$.proxy(this.sync,this),this.onShowIframeLayer=$.proxy(this.onShowIframeLayer,this),this.onCloseIframeLayer=$.proxy(this.onCloseIframeLayer,this),this._events.on("showIframeLayer",this.onShowIframeLayer),this._events.on("closeLayer",this.onCloseIframeLayer)},sync(){this.isSynced||(this.isSynced=!0)},onShowIframeLayer(data){return data.url&&this.$iframe.attr("src",data.url),this._parent.showLayer(data.$evTarget,!1),this.$iframe.on("load",()=>(this.$iframeWrapper.addClass("layer-enable-scroll-onmobile"),this.$iframe.off("load")))},onCloseIframeLayer(){return this.$iframeWrapper.removeClass("layer-enable-scroll-onmobile")}})}(jQuery,window.doT),function($){T.Module.Layer.LocationSelector=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$requestform=$(".js-ajax-request",this.$ctx),this.$requesttrigger=$(".js-submit-location",this.$ctx),this.$locationinput=$(".js-location-input",this.$ctx),this.$regioninput=$(".js-region-input",this.$ctx),this.$errorMessageJson=$(".js-custom-error-message",this.$ctx),this.sync=$.proxy(this.sync,this),this._events.on("t.sync",this.sync),this.$locationinput.on("change",()=>this.onChangeLocationInput()),this.$requestform.on("submit",ev=>this.onTriggerLocationSubmit(ev)),this._events.on("showLocationLayer",this.onShowLocationLayer),resolve()},sync(){this.isSynced||(this.isSynced=!0)},onShowLocationLayer(data){this._parent.openLayer()},onChangeLocationInput(){this.$locationinput.hasClass("has-error")&&this.$locationinput.removeClass("has-error")},showError($element){$element.show()},setJsonError(errorMsg){if(this.$locationinput.data("location-type").toUpperCase()!=="REGION".toUpperCase())this.$errorMessageJson.text(errorMsg),this.$locationinput.addClass("has-error"),this.$locationinput.removeClass("had-focus"),this.showError(this.$errorMessageJson);else{const regionErrorMessage=this.$ctx.find(".js-custom-error-message"),regionInput=this.$ctx.find(".js-region-input");regionErrorMessage.text(errorMsg),regionInput.addClass("has-error"),regionInput.removeClass("had-focus"),this.showError(regionErrorMessage)}},onTriggerLocationSubmit(e){if("function"==typeof e.preventDefault&&e.preventDefault(),this.$locationinput.val()||(this.$locationinput=$(".js-location-input",this.$ctx)),""===this.$locationinput.val())this.$locationinput.addClass("has-error");else if(this.$locationinput.data("location-type").toUpperCase()!=="REGION".toUpperCase()&&this.$locationinput.val().length<3)this.$locationinput.addClass("has-error");else{const request=T.Utils.startAjaxRequest(this.$requestform.data("ajax-id"));if(!request)return!1;request[0].done(response=>{const result=JSON.parse(response);if(result.success)this._events.emit("hideLayer",!0),this._events.emit("locationselector:locationset",{locationinput:this.$locationinput.val()}),setTimeout(()=>{window.location.reload()},1e3);else{const validationMessage=result.error;this.setJsonError(validationMessage)}})}return!1}})}(jQuery),function($){T.Module.NoReviewsDisplay=T.createModule({start(resolve){return this.$ctx=$(this._ctx),this.isSynced=!1,this.$noReviewCloseIcon=this.$ctx.find(".no-reviews-found-close-icon"),this.$noReviewCloseIcon.on("click",()=>this.onClickReviewCloseIcon()),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0)},onClickReviewCloseIcon(){return this._events.emit("reviewcloseicon:clicked")}})}(jQuery),function($){T.Module.Layer.Wizard=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.cbAfterSyncIsDone=!1,this.selector={stepContainer:".js-step",buttonNext:".js-next",buttonPrev:".js-previous",buttonNavigate:".js-navigate",f
7ieldsToValidate:"input, select, textarea"},this.elem={$buttonNext:this.$ctx.find(this.selector.buttonNext),$buttonPrev:this.$ctx.find(this.selector.buttonPrev),$buttonNavigate:this.$ctx.find(this.selector.buttonNavigate)},this.elem.$buttonNext.on("click",ev=>{this.elem.$buttonNext.is(":radio, :checkbox")||ev.preventDefault(),this.openNext($(ev.currentTarget))}),this.elem.$buttonPrev.on("click",ev=>{ev.preventDefault(),this.openPrev($(ev.currentTarget))}),this.$ctx.on("wizard.openPrev",(ev,$triggerElement)=>{this.openPrev($triggerElement)}),this.elem.$buttonNavigate.on("click",ev=>{this.elem.$buttonNavigate.is(":radio, :checkbox")||ev.preventDefault(),this.openNext($(ev.currentTarget))})},triggerAjax($triggerElement,$currentStepContainer,$nextStepContainer){this.cbAfterSyncIsDone=!1;const $currentElem=$triggerElement;T.Utils.startAjaxRequest(!1,{url:$currentElem.data("url"),method:"GET",dataType:"html",dataRendering:!0},null,null,()=>{this.cbAfterSync($currentStepContainer,$nextStepContainer)})[0].fail(msg=>{console.info(msg)})},cbAfterSync($currentStepContainer,$nextStepContainer){this.cbAfterSyncIsDone=!0,this.showNextStep($currentStepContainer,$nextStepContainer)},validateWithoutForm(){let isValid=!0;const $fieldsToValidate=this.$ctx.find(this.selector.stepContainer).filter(":visible").find(this.selector.fieldsToValidate);return $fieldsToValidate.length>0&&($fieldsToValidate.filter(":radio, :checkbox").trigger("change"),isValid=T.Utils.isValid($fieldsToValidate)),isValid},openNext($triggerElement){if($triggerElement.hasClass("js-next")&&!this.validateWithoutForm())return;const $currentButton=$triggerElement,$currentStepContainer=$currentButton.parents(this.selector.stepContainer),selectedContainerOrder=$currentStepContainer.data("order"),nextContainerOrder=parseInt(selectedContainerOrder+1),$nextStepContainer=$(`[data-order='${nextContainerOrder}']`);if($currentButton.hasClass("js-dynAjax")){let triggerdelay=$currentButton.data("layerWizardDelay")||3e3;this.triggerAjax($triggerElement,$currentStepContainer,$nextStepContainer),setTimeout(()=>{this.cbAfterSyncIsDone||this.showNextStep($currentStepContainer,$nextStepContainer)},triggerdelay)}else this.showNextStep($currentStepContainer,$nextStepContainer)},openPrev($triggerElement){this.elem.$buttonNavigate.filter(":radio, :checkbox").prop("checked",!1);const $currentStepContainer=$triggerElement.parents(this.selector.stepContainer),selectedContainerOrder=$currentStepContainer.data("order"),prevContainerOrder=parseInt(selectedContainerOrder-1),$prevStepContainer=$(`[data-order='${prevContainerOrder}']`);this.showPreviousStep($currentStepContainer,$prevStepContainer)},showNextStep($currentStepContainer,$nextStepContainer){$currentStepContainer.addClass("hide").removeClass("show"),$nextStepContainer.removeClass("hide").addClass("show")},showPreviousStep($currentStepContainer,$prevStepContainer){this.elem.$buttonNext.is(":radio, :checkbox")&&this.elem.$buttonNext.prop("checked",!1),$currentStepContainer.addClass("hide").removeClass("show"),$prevStepContainer.removeClass("hide").addClass("show")}})}(jQuery),function($){T.Module.Layer.ClipLister=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$video=this.$ctx.find(".m-video-cliplister"),this.layerVideoId=this.$video.data("video-id"),this._events.on("contenttextmedia:video-prechecked",data=>this.onVideoPrechecked(data))},onVideoPrechecked(data){if(this.layerVideoId===data.videoId)return $(`[data-layer-id='${this.configuration.id}']`).removeClass("hidden")}})}(jQuery),function($,doT){T.Module.Layer.DealerLocator=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$containerInner=this.$(".js-layer-container-inner"),this.onAppendMapToLayer=jQuery.proxy(this,"onAppendMapToLayer"),this.doT=doT,this._events.on("t.sync",$.proxy(this.sync,this)),this._events.on("appendMapToLayer",this.onAppendMapToLayer)},sync(){},onAppendMapToLayer(data){return this.$containerInner.append(data.mapNode),this._parent.showLayer(data.$evTarget,!0)}})}(jQuery,window.doT),function($){T.Module.Layer.EnhancedPageLoad=T.createDecorator({TIMEOUT_MS:2e3,start(resolve,reject){this._parent.start(resolve,reject),this.enhancedId=this.$ctx.data("enhanced-layer-id")||"no-layer-id-given",this.enhancedApiUrl=this.$ctx.data("enhanced-api-url")||"/enhancedpageload"},showLayer($triggerElement,emitOpenLayerEvent){this._parent.showLayer($triggerElement,emitOpenLayerEvent),this.startDelay()},openLayer(){this._parent.openLayer(),this.startDelay()},startDelay(){this.timeoutId&&window.clearTimeout(this.timeoutId),this.timeoutId=window.setTimeout(this.rememberAsOpened.bind(this),this.TIMEOUT_MS)},rememberAsOpened(){$.ajax({url:this.enhancedApiUrl,cache:!1,type:"GET",data:{layerId:this.enhancedId}})}})}(jQuery),function($,doT){T.Module.Layer.OnlineDealer=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this._events.on("showOnlineDealerLayer",data=>this.onShowOnlineDealerLayer(data))},sync(){},onShowOnlineDealerLayer(data){data.$relatedLayer&&data.$relatedLayer.length&&!this.$ctx.is(data.$relatedLayer)||this._parent.showLayer(data.$evTarget,!1)}})}(jQuery,window.doT),function($){T.Module.Layer.QuestionGuidelines=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.isQuestionGuidelinesViewed=!1,this._events.on("question:openQuestionTextGuidelines",this.onShowQuestionTextGuidelines),this._events.on("question:closeQuestionTextGuidelines",this.onCloseQuestionTextGuidelines)},onShowQuestionTextGuidelines(){const viewport=T.Utils.getViewport();return(!this.isQuestionGuidelinesViewed||"mobile"!==viewport)&&(this._parent.showLayer(this,!1),this.isQuestionGuidelinesViewed=!0,this.isQuestionGuidelinesViewed)},onCloseQuestionTextGuidelines(){this._parent.hideLayer("skip")}})}(jQuery),function($){T.Module.Layer.ReviewGuidelines=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.isReviewGuidelinesViewed=!1,this._events.on("review:openReviewTextGuidelines",this.onShowReviewTextGuidelines)},sync(){},onShowReviewTextGuidelines(data){if(!this.isReviewGuidelinesViewed)return this._parent.showLayer(this,!1),this.isReviewGuidelinesViewed=!0,this.isReviewGuidelinesViewed}})}(jQuery),function($){T.Module.MediaGallery.Layer=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.currentSlide=0,this.slidesToShowDesktop=10,this.slidesToShowTablet=5,this.slidesToShowMobile=5,this.viewport=T.Utils.getViewport(),this._events.on("openLayer",data=>this.onOpenLayer(data)),this._events.on("closeLayer",data=>this.onCloseLayer(data)),this.resizeHandler=(()=>{this.$mainSlider&&this.$mainSlider.slick("setPosition")}),resolve()},setSliderPosition(slideIndex){this.currentSlide=slideIndex},addAfterSlideChangeListener(cb){this.afterSlideChangeListener=cb},onOpenLayer(data){const triggerElementLayerId=$(data.$triggerElement).data("layer-id");0!==this.$ctx.closest(`[data-t-name='Layer'][data-id='${triggerElementLayerId}']`).length&&(this.currentSlide=$(data.$triggerElement).data("slick-index")||0,this.initializeLayerSlider(),"mobile"!==this.viewport&&this.initialzeThumbn
7ailSlider(),this._events.emit("togglePageScrolling",{pin:!0}),this.isTrackingEnabled&&this._events.emit("mediaGalleryInteraction:openLayer",data),$(window).on("resize",this.resizeHandler))},initializeLayerSlider(){if(!this.mainSlider)return this.$mainSliderArrowLeft.addClass("hidden-mobile hidden-tablet"),this.$mainSliderArrowRight.addClass("hidden-mobile hidden-tablet"),this.mainSlider=this._sandbox.getModuleById(this.$mainSlider.data("t-id")),void(null!=this.mainSlider&&(this.mainSlider.init({useCSS:!1,slidesToShow:1,initialSlide:this.currentSlide,infinite:!0,dots:!0,dotsClass:"hidden-desktop",fade:!1,autoplay:!1}),this.updateCounter(this.currentSlide),0==this.currentSlide&&this.$mainSliderArrowLeft.addClass("hide"),this.mainSlider.addAfterSlideChangeListener(newSlideIndex=>{"function"==typeof this.afterSlideChangeListener&&this.afterSlideChangeListener(newSlideIndex),this._onAfterSlideChanged(newSlideIndex)})));this.mainSlider.setPosition(this.currentSlide,!1)},initialzeThumbnailSlider(){this.mainSlider=this._sandbox.getModuleById(this.$mainSlider.data("t-id"));const thumbnailSliderVisible=(null!=this.mainSlider?this.mainSlider.getSlideCount():void 0)>1;if(this.$thumbnailSlider.length>0&&thumbnailSliderVisible){if(this.thumbnailSlider=this._sandbox.getModuleById(this.$thumbnailSlider.data("t-id")),null!=this.thumbnailSlider&&this.thumbnailSlider.addAfterSlideChangeListener(slideIndex=>this.onAfterThumbnailSlideChange(slideIndex)),null!=this.thumbnailSlider){this.thumbnailSlider.init({infinite:!1,arrows:!0,dots:!1,useCSS:!1,focusOnSelect:!1,alwaysInitialize:!0,slidesToShow:{desktop:this.slidesToShowDesktop,tablet:this.slidesToShowTablet,mobile:this.slidesToShowMobile}});const currentSlideModule=this.mainSlider.getCurrentSlideModule();currentSlideModule&&"imagesequencer"===currentSlideModule.$ctx.attr("data-media-type")&&this.thumbnailSlider.slickSlider.slick("slickSetOption","swipe",!0)}null!=this.thumbnailSlider&&this.thumbnailSlider.addSlideClickListener(slideIndex=>this.onThumbnailSlideClick(slideIndex)),null!=this.thumbnailSlider&&(this.thumbnailSlider.setVisible(thumbnailSliderVisible),this.thumbnailSlider.slickSlider.slick("resize")),this.activateThumb(null!=this.mainSlider?this.mainSlider.getPosition():void 0)}else this.$thumbnailSlider.addClass("hidden")},onCloseLayer(){this._events.emit("togglePageScrolling",{pin:!1}),$(window).unbind("resize",this.resizeHandler)},_onAfterSlideChanged(newSlideIndex){const thumbnailPosition=null!=this.thumbnailSlider?this.thumbnailSlider.getPosition():void 0;this.activateThumb(newSlideIndex),this.updateCounter(newSlideIndex);const maxCountThumb=this.mainSlider.getSlideCount();this.$thumbnailSlider.find(".slick-current").hasClass("slick-active")||(thumbnailPosition<newSlideIndex?null!=this.thumbnailSlider&&this.thumbnailSlider.goToNextSlide():null!=this.thumbnailSlider&&this.thumbnailSlider.goToPreviousSlide()),null!=this.layer&&this.layer.setSliderPosition(newSlideIndex),this._onAfterMainSlideChange(newSlideIndex);const currentSlideModule=this.mainSlider.getCurrentSlideModule(),is360Image=currentSlideModule&&"imagesequencer"===currentSlideModule.$ctx.attr("data-media-type");if(0===newSlideIndex)this.$mainSliderArrowLeft.addClass("hide"),this.$mainSliderArrowRight.removeClass("hide");else if(newSlideIndex===maxCountThumb-1)this.$mainSliderArrowRight.addClass("hide"),this.$mainSliderArrowLeft.removeClass("hide");else{if(is360Image){let isDragging=!1,startX=0;this.$mainSlider.on("mousedown touchstart",e=>{isDragging=!0,startX=e.clientX||e.originalEvent.touches[0].clientX}),this.$mainSlider.on("mousemove touchmove",e=>{if(!isDragging)return;const deltaX=(e.clientX||e.originalEvent.touches[0].clientX)-startX;Math.abs(deltaX)>200&&(isDragging=!1,deltaX>0?this.mainSlider.slickSlider.slick("slickPrev"):this.mainSlider.slickSlider.slick("slickNext"))}),this.$mainSlider.on("mouseup touchend",()=>{isDragging=!1})}this.$mainSliderArrowLeft.removeClass("hide").removeAttr("hidden"),this.$mainSliderArrowRight.removeClass("hide"),this.$mainSlider.on("mousedown touchstart",e=>{this.mainSlider.slickSlider.slick("slickSetOption","swipe",!0),this.mainSlider.slickSlider.slick("slickSetOption","draggable",!0),this.mainSlider.slickSlider.slick("slickSetOption","touchMove",!0),this.mainSlider.slickSlider.slick("slickSetOption","mouseMove",!0),this.mainSlider.slickSlider.slick("slickSetOption","fade",!1),this.mainSlider.slickSlider.slick("slickSetOption","cssEase","ease")})}},onAfterThumbnailSlideChange(){this.validateSlideClasses();const maxCountThumbs=this.thumbnailSlider.getSlideCount(),arrayAllVisibleThumbnails=this.$thumbnailSlider.find(".slick-active"),minIndexVisible=arrayAllVisibleThumbnails.first().data("slick-index")+1,maxIndexVisible=arrayAllVisibleThumbnails.last().data("slick-index")+1;1===minIndexVisible?this.$thumbnailSliderArrowLeft.addClass("hide"):this.$thumbnailSliderArrowLeft.removeClass("hide"),maxIndexVisible===maxCountThumbs?this.$thumbnailSliderArrowRight.addClass("hide"):this.$thumbnailSliderArrowRight.removeClass("hide")},initializeSliders(){},initializeLayer(){}})}
7(jQuery),function($){T.Module.MediaGallery.Pressdetail=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject)},_onAfterMainSlideChange(newSlideIndex){this._parent._onAfterMainSlideChange(newSlideIndex);const $slide=this.$mainSlider.find(".slick-current"),url1=$slide.find(".js-change-download:not(.lazyload, .lazyloaded)").data("download-dpi1");this.$downloadTarget1=$("[data-target-dpi1]"),this.$downloadTarget1.attr("href",url1);const url2=$slide.find(".js-change-download:not(.lazyload, .lazyloaded)").data("download-dpi2");return this.$downloadTarget2=$("[data-target-dpi2]"),this.$downloadTarget2.attr("href",url2)}})}(jQuery),function($,doT){T.Module.MediaGallery.Spareparts=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject);this.doT=doT,this.$ctx=$(this._ctx),this.$paginationnumber=this.$(".js-paginationnumber"),this.ajaxDone=!1,this.searchFlag=!1,this.slideIntialized=!1,this.previousSlideIndex=0,this.imagesArray=[],this.sparePartsArray=[],this.downloadArray=[],this.dataPKArray=[],this.sparepartItemSlideTpl=this.doT.template(this.$(".js-sparepart-item-slide-tpl").html()),this.sparepartNoResultsTpl=this.doT.template(this.$(".js-sparepart-no-results").html()),this.sparePartItemThumbnailsliderTpl=this.doT.template(this.$(".js-sparepart-item-thumbnailslide-tpl").html()),this.sparePartNoFiltersTpl=this.doT.template(this.$(".js-sparepart-filter-results").html()),this._events.on("changeImgOnSearch",dataPK=>this.changeImageOnSearch(dataPK)),this.$(".js-mediagallery-zoom").removeClass("hidden"),this._events.on("removespareparts",data=>this.sparePartsSuccessCallback(data)),this._events.on("sync",()=>this.sync()),this.isSynced=!1,resolve()},sync(){this.isSynced||(this.isSynced=!0,this.initializeSpareparts())},initializeMediaGallery(){},emitSparePartDataChange(data){if(null!=this.mainSlider){const indexActiveSlide=null!=this.mainSlider?this.mainSlider.getPosition():void 0;this._events.emit("sparePartDataChange",{imageList:this.imagesArray[indexActiveSlide],sparePartList:this.sparePartsArray[indexActiveSlide],dataPK:this.dataPKArray[indexActiveSlide]})}},emitMediaGallerySlideChange(){null!=this.mainSlider&&this._events.emit("sparePartsSlideChange",{action:"gallery_slide"})},sparePartsSuccessCallback(xhrData){if(null!=xhrData&&null!=xhrData.response){const data=xhrData.response;if(data.length>0)$.each(data,(index,item)=>{item.index=index;const slideHtml=this.sparepartItemSlideTpl(item);if(this.$mainSlider.append(slideHtml),0==data[0].diagram.length){this.$ctx.find(".js-info-div").addClass("hidden"),this.$ctx.find(".js-spare-part-downloads").addClass("hidden"),this.$ctx.find(".js-mediagallery-zoom").addClass("hidden"),this.sparePartsArray.push(item.items);const noFiltersHtml=this.sparePartNoFiltersTpl(item);this.$ctx.find(".js-response-message").html(noFiltersHtml),data[0].sparePartFamily&&this._events.emit("searchDataChange",{searchHide:"true"})}else{const noFiltersHtml=this.sparePartNoFiltersTpl(item);this.imagesArray.push(item.diagram[0].image),this.sparePartsArray=[],this.sparePartsArray.push(item.items),this.dataPKArray.push(item.dataPK),this.downloadArray.push(item.diagram[0].download),this.$ctx.find(".js-response-message").html(noFiltersHtml)}}),this.initializeSparepartSlider(data);else{this.stop();const noResultsHtml=this.sparepartNoResultsTpl({});this.$ctx.closest(".js-sparepart-wrapper").empty().append(noResultsHtml),this._events.emit("sparepartsNoResults")}}},setDownloadLinks(){const indexActiveSlide=this.mainSlider.getPosition(),$downloadFile=this.$ctx.parent().find(".js-spare-part-download-file");for(let index=0;index<$downloadFile.length;index++)$($downloadFile[index]).find("span").html(this.downloadArray[indexActiveSlide][0].txt),$($downloadFile[index]).attr("href",this.downloadArray[indexActiveSlide][0].href);const $downloadAllFiles=this.$ctx.parent().find(".js-spare-part-download-all-files");for(let index=0;index<$downloadFile.length;index++)$($downloadAllFiles[index]).find("span").html(this.downloadArray[indexActiveSlide][1].txt),$($downloadAllFiles[index]).attr("href",this.downloadArray[indexActiveSlide][1].href)},setOCRFrame(){this.$(".a-image-hires .js-sparepart-scan-frame").addClass("hidden");const $ocrFrame=this.$mainSlider.find(".slick-current .a-image-hires .js-sparepart-scan-frame");$ocrFrame.length>0&&($ocrFrame.removeClass("hidden"),$ocrFrame.css({left:0,top:0}))},_onAfterMainSlideChange(newSlideIndex){this._parent._onAfterMainSlideChange(newSlideIndex),this.setOCRFrame(),this.searchFlag||this.emitSparePartDataChange(),this.slideIntialized&&this.previousSlideIndex!==newSlideIndex?this.emitMediaGallerySlideChange():this.slideIntialized=!0,this.previousSlideIndex=newSlideIndex,this.downloadArray.length>0&&this.setDownloadLinks()},initializeSpareparts(){if(!this.ajaxDone){const ajax_id=this.$ctx.data("ajax-id")||"mediagallery-spareparts-images",request=T.Utils.startAjaxRequest(ajax_id,null,"init");if(!request)return;request[0].done(xhrData=>this.sparePartsSuccessCallback(xhrData)).fail(xhr=>console.info(xhr)),this.ajaxDone=!0}},initializeSparepartSlider(data){T.Utils.initializeModules(this.$mainSlider,()=>{this._parent.initializeMediaGallery(),null!=this.layer&&this.layer.addAfterSlideChangeListener(newSlideIndex=>null!=this.mainSlider?this.mainSlider.setPosition(newSlideIndex):void 0),null!=this.mainSlider&&this.mainSlider.setSlickDragEvents(!1),this.emitSparePartDataChange(data),this.setDownloadLinks(),this._events.emit("initializeSparePartLayer",{data:data,downloads:this.downloadArray})}),this.onInitializeSparePartThumbnail(data)},onInitializeSparePartThumbnail(eventData){if(eventData.length>0){$.each(eventData,(index,item)=>{item.index=index;const spartpartSliderHtml=this.sparePartItemThumbnailsliderTpl(item);this.$thumbnailSlider.append(spartpartSliderHtml)});const newlyAddedSlides=this.$thumbnailSlider.find(".slide:not([data-t-id])");T.Utils.initializeModules(newlyAddedSlides,()=>{this.initializeThumbnailSlider()})}}
7,initializeThumbnailSlider(){if(!this.thumbnailSlider)return this.thumbnailSlider=this._sandbox.getModuleById(this.$thumbnailSlider.data("t-id")),void(null!=this.thumbnailSlider&&(this.thumbnailSlider.init({useCSS:!1,slidesToShow:1,initialSlide:this.currentSlide}),this.thumbnailSlider.addAfterSlideChangeListener(newSlideIndex=>{"function"==typeof this.afterSlideChangeListener&&this.afterSlideChangeListener(newSlideIndex),this._onAfterSlideChanged(newSlideIndex)})));this.thumbnailSlider.setPosition(this.currentSlide,!1)},changeImageOnSearch(dataPK){let index=this.dataPKArray.indexOf(dataPK);null!=this.mainSlider&&(this.searchFlag=!0,this.mainSlider.setPosition(index),this.searchFlag=!1)}})}(jQuery,window.doT),function($){T.Module.MediaGallery.RebrushedMediaGallery=T.createDecorator({start(resolve,reject){return this.$ctx=$(this._ctx),this._parent.start(resolve,reject)},sync(){if(!this.isSynced)return this.isSynced=!0,T.Utils.allSynced=!0,this.slidesToShowTablet=this.$ctx.data("slides-to-show"),this.slidesToShowDesktop=this.$ctx.data("slides-to-show"),this.$(".mediagallery-downloadlink-desktop").length>0&&(this.slidesToShowDesktop=this.$ctx.data("slides-to-show-less")),this.initializeMediaGallery()},onAfterMainSlideChange(slideIndex){if(null!=slideIndex){const thumbnailPosition=null!=this.thumbnailSlider?this.thumbnailSlider.getPosition():void 0;
7this.activateThumb(slideIndex),this.updateCounter(slideIndex);const maxCountThumb=this.mainSlider.getSlideCount();this.thumbnailSlider&&this.floatNumberSlides&&this.thumbnailSlider.setPosition(slideIndex,!0),this.$thumbnailSlider.find(".slick-current").hasClass("slick-active")||(thumbnailPosition<slideIndex?null!=this.thumbnailSlider&&this.thumbnailSlider.goToNextSlide():null!=this.thumbnailSlider&&this.thumbnailSlider.goToPreviousSlide()),null!=this.layer&&this.layer.setSliderPosition(slideIndex),this._onAfterMainSlideChange(slideIndex);const currentSlideModule=this.mainSlider.getCurrentSlideModule(),is360Image=currentSlideModule&&"imagesequencer"===currentSlideModule.$ctx.attr("data-media-type");if(0===slideIndex)this.$mainSliderArrowLeft.addClass("hide").attr("hidden","hidden"),this.$mainSliderArrowRight.removeClass("last-slide");else if(slideIndex===maxCountThumb-1)this.$mainSliderArrowRight.addClass("last-slide"),this.$mainSliderArrowLeft.removeClass("hide").removeAttr("hidden");else{if(is360Image){let isDragging=!1,startX=0;this.$mainSlider.on("mousedown touchstart",e=>{isDragging=!0,startX=e.clientX||e.originalEvent.touches[0].clientX}),this.$mainSlider.on("mousemove touchmove",e=>{if(!isDragging)return;const deltaX=(e.clientX||e.originalEvent.touches[0].clientX)-startX;Math.abs(deltaX)>150&&(isDragging=!1,deltaX>0?this.mainSlider.slickSlider.slick("slickPrev"):this.mainSlider.slickSlider.slick("slickNext"))}),this.$mainSlider.on("mouseup touchend",()=>{isDragging=!1})}this.$mainSliderArrowLeft.removeClass("hide").removeAttr("hidden"),this.$mainSliderArrowRight.removeClass("last-slide"),this.$mainSlider.on("mousedown touchstart",e=>{this.mainSlider.slickSlider.slick("slickSetOption","swipe",!0),this.mainSlider.slickSlider.slick("slickSetOption","draggable",!0),this.mainSlider.slickSlider.slick("slickSetOption","touchMove",!0),this.mainSlider.slickSlider.slick("slickSetOption","mouseMove",!0),this.mainSlider.slickSlider.slick("slickSetOption","fade",!1),this.mainSlider.slickSlider.slick("slickSetOption","cssEase","ease")})}}},onAfterThumbnailSlideChange(){this.validateSlideClasses();const maxCountThumbs=this.thumbnailSlider.getSlideCount(),arrayAllVisibleThumbnails=this.$thumbnailSlider.find(".slick-active"),minIndexVisible=arrayAllVisibleThumbnails.first().data("slick-index")+1,maxIndexVisible=arrayAllVisibleThumbnails.last().data("slick-index")+1;1===minIndexVisible?this.$thumbnailSliderArrowLeft.addClass("hide"):this.$thumbnailSliderArrowLeft.removeClass("hide"),maxIndexVisible===maxCountThumbs?this.$thumbnailSliderArrowRight.addClass("hide"):this.$thumbnailSliderArrowRight.removeClass("hide")},initializeSliders(){this.mainSlider=this._sandbox.getModuleById(this.$mainSlider.data("t-id")),this.$mainSliderArrowLeft.addClass("hide hidden-mobile hidden-tablet"),this.$mainSliderArrowRight.addClass("hidden-mobile hidden-tablet"),null!=this.mainSlider&&(this.mainSlider.addAfterSlideChangeListener(slideIndex=>this.onAfterMainSlideChange(slideIndex)),this.mainSlider.init({infinite:!0,arrows:!0,dots:!0,dotsClass:"hidden-desktop",useCSS:!1,fade:!1,slidesToShow:1,autoplay:!1,adaptiveHeight:!0,centerMode:!1,swipe:!0}));const thumbnailSliderVisible=(null!=this.mainSlider?this.mainSlider.getSlideCount():void 0)>1;this.$thumbnailSlider.length>0&&thumbnailSliderVisible?(this.thumbnailSlider=this._sandbox.getModuleById(this.$thumbnailSlider.data("t-id")),null!=this.thumbnailSlider&&(this.thumbnailSlider.addAfterSlideChangeListener(slideIndex=>this.onAfterThumbnailSlideChange(slideIndex)),this.thumbnailSlider.init({infinite:!1,arrows:!0,dots:!1,useCSS:!1,focusOnSelect:!1,alwaysInitialize:!0,swipe:!0,slidesToShow:{desktop:this.slidesToShowDesktop,tablet:this.slidesToShowTablet,mobile:this.slidesToShowMobile},slidesToScroll:{desktop:Math.floor(this.slidesToShowDesktop-1),tablet:Math.floor(this.slidesToShowTablet-1),mobile:Math.floor(this.slidesToShowMobile)}})),null!=this.thumbnailSlider&&(this.thumbnailSlider.addSlideClickListener(slideIndex=>this.onThumbnailSlideClick(slideIndex)),this.thumbnailSlider.setVisible(thumbnailSliderVisible)),this.activateThumb(null!=this.mainSlider?this.mainSlider.getPosition():void 0)):this.$thumbnailSlider.addClass("hidden")}})}(jQuery),jQuery,window.doT,T.Module.MediaGalleryLayer.ReviewGallery=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.isSynced=!1,this._events.on("t.sync",()=>this.sync())},sync(){this.isSynced||(this.isSynced=!0)},initializeLayerSlider(){this.layerSlider||(this.layerSlider=this._sandbox.getModuleById(this.$layerSlider.data("t-id")),null!=this.layerSlider&&(this.layerSlider.init({useCSS:!1,slidesToShow:1,slideToScroll:1,dots:!0,initialSlide:this.currentSlide}),this.layerSlider.addAfterSlideChangeListener(newSlideIndex=>{"function"==typeof this.afterSlideChangeListener&&this.afterSlideChangeListener(newSlideIndex)}))),this.layerSlider&&this.layerSlider.setPosition(this.currentSlide,!1)}}),function($,doT){T.Module.MediaGalleryLayer.Spareparts=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject);this.$ctx=$(this._ctx),this.doT=doT,this.downloadArray=[],this.sparepartItemSlideTpl=this.doT.template(this.$(".js-s
7parepart-item-layer-slide-tpl").html()),this._events.on("initializeSparePartLayer",data=>this.onInitializeSparePartLayer(data)),this._events.on("sparepartsNoResults",data=>this.onSparepartsNoResults(data))},stop(){this._events.off("initializeSparePartLayer"),this._events.off("sparepartsNoResults")},setDownloadLinks(){const indexActiveSlide=this.$layerSlider.slick("slickCurrentSlide"),$downloadFile=this.$(".js-spare-part-download-file"),$downloadAllFiles=this.$(".js-spare-part-download-all-files");$downloadFile.find("span").html(this.downloadArray[indexActiveSlide][0].txt),$downloadFile.attr("href",this.downloadArray[indexActiveSlide][0].href),$downloadAllFiles.find("span").html(this.downloadArray[indexActiveSlide][1].txt),$downloadAllFiles.attr("href",this.downloadArray[indexActiveSlide][1].href)},_onAfterSlideChanged(newSlideIndex){const $currentSlide=this.$layerSlider.find(".slick-current");this._events.emit("resetFramePosition",{$ctx:$currentSlide}),this.downloadArray.length>0&&this.setDownloadLinks(),this.layerSlider&&this.layerSlider.setSlickDragEvents(!1)},onInitializeSparePartLayer(eventData){if(eventData.data.length>0){$.each(eventData.data,(index,item)=>{item.index=index;const slideHtml=this.sparepartItemSlideTpl(item);this.$layerSlider.append(slideHtml)});const newlyAddedSlides=this.$layerSlider.find(".slide:not([data-t-id])");T.Utils.initializeModules(newlyAddedSlides,()=>{this.initializeLayerSlider(),eventData.downloads&&(this.downloadArray=eventData.downloads)})}},onSparepartsNoResults(){this.stop()}})}(jQuery,window.doT),function($){T.Module.PaymentAdyen.CreditCard=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.card=null},initPaymentMethod(checkout){const card=checkout.create("card",{styles:T.Utils.paymentAdyenStylesObject||{},showPayButton:!1,onChange:(state,component)=>{this.fillHiddenFormFields(card.data);const checkboxInfoDiv=this.$ctx.find(".js-store-details-checkbox-info");$(checkboxInfoDiv).addClass("hidden");let cardCheckboxSave=state.data.storePaymentMethod,subscriptionCartValue=checkout.options.subscriptionCart;state.isValid?subscriptionCartValue?cardCheckboxSave?($(checkboxInfoDiv).addClass("hidden"),this.enableFormSubmit()):($(checkboxInfoDiv).removeClass("hidden"),this.disableFormSubmit()):this.enableFormSubmit():this.disableFormSubmit()},onFocus:()=>{this.elm.$errorMessage.hide()},onBrand:event=>{this.elm.$paymentMethodBrand.val(event.brand),this.config.adyenConfig.paymentMethodConfigurationData&&this.enableCheckbox(event.brand)}}).mount(this.elmToMount);this.card=card,this.displayStoredCards(checkout),this.isPaymentMethodValid(),this.hideCheckboxOnload()},isPaymentMethodValid(){this.card.isValid?this.enableFormSubmit():this.disableFormSubmit()},updatePaymentData(){this.fillHiddenFormFields(this.card.data)},hideCheckboxOnload(){let observer=new MutationObserver(()=>{this.cardContainerContext.find(this.selector.storeDetailsAdyenCheckbox).length>0&&(this.toggleCheckbox(!1),observer.disconnect())});observer.observe(this.cardContainerContext[0],{childList:!0,subtree:!0})},displayStoredCards(checkout){const storedCards=this.config.adyenConfig.paymentMethodsResponse.storedPaymentMethods||[];storedCards.length>0&&storedCards.forEach((card,index)=>{card.onChange=((state,component)=>{state.isValid?(this.enableFormSubmit(),this.elm.$paymentMethodBrand.val(card.brand)):this.disableFormSubmit()});checkout.create("card",card).mount(`#stored-card-${index}`)})},handleStoredCardsSelection(ev){if(this.disableFormSubmit(),this.elm.$storedCardDiv.addClass("hidden"),ev.currentTarget.parentElement.querySelector(this.selector.newCardContainer))this.elm.$newCardContainer.removeClass("hidden"),this.card.state.isValid&&this.enableFormSubmit();else{this.elm.$newCardContainer.addClass("hidden");const $selectedCardParentDiv=ev.currentTarget.parentElement.querySelector(this.selector.storedCardDiv),$cvvField=ev.currentTarget.parentElement.querySelector(this.selector.adyenCvvField);$selectedCardParentDiv.classList.remove("hidden"),$cvvField.classList.contains(this.selector.adyenCheckoutFieldIsValid)&&this.enableFormSubmit()}}})}(jQuery),function($){T.Module.PaymentAdyen.FromAction=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.actionObj=this.$ctx.data("action"),this.delay=this.$ctx.data("delay"),this.redirectLayer=this.$ctx.find(".js-adyen-redirect-layer")},initPaymentMethod(checkout){const paymentMethodObjValue=this.actionObj.paymentMethodType;paymentMethodObjValue.match(/^upi/)||paymentMethodObjValue.match(/^swish/)?checkout.createFromAction(this.actionObj,{onError:(error,component)=>{window.location.href=$(".js-backlink").attr("href")+"&timeout=true",sessionStorage.setItem("upierrormsghidden","true")},onAdditionalDetails:(state,component)=>{const urlindex=window.location.href.match(/\/([^\/]+)\/?$/)[1],payload=state.data.details.payload,paymentData=state.data.paymentData,actionUrl=$(component._node).parents(".js-paymentadyen").data("upiaction")+urlindex+"&payload="+payload+"&paymentData="+paymentData,request=T.Utils.startAjaxRequest(!1,{url:actionUrl,method:"POST"});if(!request)return!1;request[0].fail(result=>window.location.href=actionUrl)}}).mount("#paymentadyen-fromAction"):(this._events.emit("showLayer",{$trigger:this.redirectLayer}),setTimeout(()=>{checkout.createFromAction(this.actionObj,{}).mount("#paymentadyen-fromAction")},this.delay))}})}(jQuery),function($){T.Module.PaymentAdyen.Oney=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.paymenttype=this.$ctx.data("paymenttype"),this.card=null},initPaymentMethod(checkout){const card=checkout.create(this.paymenttype,{styles:T.Utils.paymentAdyenStylesObject||{},showPayButton:!1,onChange:(state,component)=>{this.fillHiddenFormFields(card.data),state.isValid?this.enableFormSubmit():this.disableFormSubmit()},onFocus:()=>{this.elm.$errorMessage.hide()},onBrand:event=>{this.elm.$paymentMethodBrand.val(event.brand)}}).mount(this.elmToMount);this.card=card,this.isPaymentMethodValid()},isPaymentMethodValid(){this.card.isValid?this.enableFormSubmit():this.disableFormSubmit()},updatePaymentData(){this.fillHiddenFormFields(this.card.data)}})}(jQuery),function($){T.Module.PaymentAdyen.Upi=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.paymenttype=this.$ctx.data("paymenttype"),this.card=null},initPaymentMethod(checkout){const card=checkout.create(this.paymenttype,{styles:T.Utils.paymentAdyenStylesObject||{},showPayButton:!1,onChange:(state,component)=>{let browserInfo={},statedata=state.data,browser_agent=window.navigator.userAgent,browser_color=window.screen.colorDepth,browser_lang=window.navigator.language||window.navigator.browserLanguage||"en",browser_height=window.screen.height,browser_width=window.screen.width,browser_times=(new Date).getTimezoneOffset(),browser_java=window.navigator.javaEnabled(),upidata={...statedata,browserInfo:browserInfo={acceptHeader:"*/*",userAgent:browser_agent,colorDepth:browser_color,language:browser_lang,screenHeight:browser_height,screenWidth:browser_width,timeZoneOffset:browser_times,javaEnabled:browser_java}};this.fillHiddenFormFields(upidata),state.isValid?this.enableFormSubmit():this.disableFormSubmit()},onFocus:()=>{this.elm.$errorMessage.hide()}}).mount(this.elmToMount);this.card=card,this.isPaymentMethodValid()}})}(jQuery),function($){T.Module.Form.ComputopHPP=T.createDecorator({start(resolve,reject){this.$ctx=$(this._ctx),resizeIFrameContext=this,window.addEventListener("message",this.ctEventListener),this.$iFrame=this.$ctx.find(".computop-iframe-section"),this.pmtFrames=document.getElementById("pmtFrame"),this.isSynced=!1,this._parent.start(resolve,reject)},sync(){this.isSynced||(this.isSynced=!0,this.frameSetAttributes())},frameSetAttributes(){this.pmtFrameset=document.getElementById("pmtFrame"),this.pmtFrameset.setAttribute("scrolling","no"),this.pmtFrameset.setAttribute("frameborder","0"),this.checkStyleHeight()},onSubmitForm(ev){ev.preventDefault(),this.sendMsg()},sendMsg(){document.getElementById("pmtFrame").contentWindow.postMessage("makeDirectPayment","*")},ctEventListener(event){let data=event.data;if(!data.startsWith("cthpp"))return;let ctDictionary=data.split(":");switch(ctDictionary[1]){case"resize":let resizeInformation=JSON.parse(atob(ctDictionary[2]));resizeIFrameContext.resizeIFrame(resizeInformation);break;default:console.log("UNKNOWN")}},resizeIFrame(resizeInformation){document.getElementById("pmtFrame").style.height=resizeInformation.height+"px",this.checkStyleHeight()},checkStyleHeight(){this.pmtFrames.style.height?this.closeLoader():this.openLoader()},openLoader(){this._events.emit("loader:open",{loaderType:"inline-area",loaderArea:this.$iFrame,$trigger:this.$iFrame})},closeLoader(){this._events.emit("loader:close",{$trigger:this.$iFrame})}})}(jQuery),function($){T.Module.Form.PayUPaymentsos=T.createDecorator({start(resolve,reject){return this.$ctx=$(this._ctx),this.selector={formSelector:"form"},this.elm={$form:this.$ctx.closest(this.selector.formSelector)},this.$payUDiv=this.$ctx.find(".js-payu-payment-selection"),this.$payUNameInput=this.$payUDiv.find("#js-payu-cardh
7older-name"),this.$payUPaymentOSPaymentId=this.$payUDiv.find(".js-payUPaymentOSPaymentId"),this.$redirectLayer=this.$payUDiv.find(".js-paymentos-redirect-layer"),this.$scrollTopDiv=this.$ctx.find(".checkoutpayment-payment-container"),this.$returnRedirectUrl=$(".js-backlink").attr("href"),this.config=this.$payUDiv.data("config"),this.scrollToPayUDelayTime=this.config.scrollToPayUDelayTime||1e3,this._events.on("t.sync",()=>this.sync()),this.isSynced=!1,this._parent.start(resolve,reject),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.disableFormSubmit(),this.payULoad())},payULoad(){this.loadPayUsdk(this.config.sdkUrl,()=>{this.payURender()},this.config.additionalAttribute),setTimeout(()=>{T.Utils.scrollToTop(this.$scrollTopDiv.offset().top)},this.scrollToPayUDelayTime)},loadPayUsdk(sdkurl,cb,additionalAttribute){try{T.Commons.ScriptLoader.loadOncePayU(sdkurl,cb,additionalAttribute)}catch(error){console.error(`url failure ${error.message}`)}},disableFormSubmit(){this._events.emit("form:disableSubmit",{id:this.elm.$form.data("t-id")})},enableFormSubmit(){this._events.emit("form:enableSubmit",{id:this.elm.$form.data("t-id")})},checkPayUFormValidation(){""!=this.$payUNameInputValue&&this.cardNumberValidonChange&&this.cardExpiryValidonChange&&this.cardCVVValidonChange?this.enableFormSubmit():this.disableFormSubmit()},payURender(){const formElements=new POS.Fields(this.config.publicKey,{}),style={base:{color:"#000000",fontWeight:600,fontSize:"16px",fontSmoothing:"antialiased",":focus":{color:"#000000"},"::placeholder":{color:"#999999"},":focus::placeholder":{color:"#424770"}},invalid:{color:"#FF0000",":focus":{color:"#000000"},"::placeholder":{color:"#FFCCA5"}}},placeholders={cardNumber:"1234 1234 1234 1234",expDate:"MM / YY",cvv:"CVV"};this.cardNumber=formElements.create("cardNumber",{placeholders:placeholders,style:style,includeCardImage:!1}),this.cardNumber.mount("#payu-card-number");const expiry=formElements.create("creditCardExpiry",{placeholders:placeholders,style:style});expiry.mount("#payu-exp-date");const cvv=formElements.create("cvv",{placeholders:placeholders,style:style});cvv.mount("#payu-cvv"),this.cardNumber.on("change",event=>{this.cardNumberValidonChange=event.complete,this.checkPayUFormValidation()}),expiry.on("change",event=>{this.cardExpiryValidonChange=event.complete,this.checkPayUFormValidation()}),cvv.on("change",event=>{this.cardCVVValidonChange=event.complete,this.checkPayUFormValidation()}),$(this.$payUNameInput).on("keypress",e=>{var regex=new RegExp("^[a-zA-Z ]+$"),key=e.key;return!!regex.test(key)||(e.preventDefault(),!1)}),$(this.$payUNameInput).on("change",event=>{this.$payUNameInputValue=this.$payUNameInput.val(),this.checkPayUFormValidation()})},onSubmitForm(ev){ev.preventDefault(),this.sendPayUMsg()},async sendPayUMsg(){const additionalData={holder_name:this.$payUNameInput.val()},result=await POS.createToken(this.cardNumber,{additionalData:additionalData,environment:this.config.environment}),myPayUJSON=JSON.parse(result),data={ctoken:myPayUJSON.token,cvv:myPayUJSON.encrypted_cvv,paymentId:this.$payUPaymentOSPaymentId.val()},request=T.Utils.startAjaxRequest(!1,{url:this.$ctx.attr("action"),method:"POST",dataType:"html",dataRendering:!1,data:data});if(!request)return!1;request&&request[0].done(response=>{var responseData=$(response),redirectLayerDiv=this.$redirectLayer;this.$redirectPayUData=responseData.find(redirectLayerDiv);var redirectPayUData=responseData.find(".js-paymentosPayURedirect");redirectPayUData.attr("data-action")?(this.$redirectPayUurl=redirectPayUData.data("action"),this.$delay=this.$redirectPayUData.data("delay"),this._events.emit("showLayer",{$trigger:this.$redirectPayUData}),setTimeout(()=>{window.location.replace(this.$redirectPayUurl.redirectionUrl)},this.$delay)):(window.location.href=this.$returnRedirectUrl,sessionStorage.setItem("payupaymentoserrormsg","true"))}).fail(()=>{console.log("An error occured by request: "),window.location.href=this.$returnRedirectUrl})}})}(jQuery),function($){T.Module.PaymentQRCode.Orderpage=T.createDecorator({start(resolve){this.$ctx=$(this._ctx),this._selector={qrConfig:"[data-payment-qr-config]"},this.qrConfig=$(this._selector.qrConfig).data("paymentQrConfig"),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.showQRCode())},showQRCode(){this.qrConfig.codeUrl?this.qrcode=new QRCode(this._ctx,{typeNumber:7,render:"canvas",width:200,height:200,correctLevel:3,text:this.qrConfig.codeUrl}):console.error("QR code URL has expired")}})}(jQuery),function($){T.Module.Form.PaymentRazorpay=T.createDecorator({start(resolve,reject){this.$ctx=$(this._ctx),this.$razorpayDiv=this.$ctx.find(".js-razorpay-paymentmethods-container"),this.config=this.$razorpayDiv.data("config"),this.razorpayPaymentType=this.$razorpayDiv.data("razorpaytype"),this.scrollToRazorpayDelayTime=this.config.scrollToRazorpayDelayTime||1e3,this.options=this.config.razorpayConfig,this._selector={razorpayConfig:"[data-razorpay-config]",formSelector:"form"},this.elm={$form:this._selector.formSelector},this.razorpayData=$(this._selector.razorpayConfig).data("razorpayConfig"),this._events.on("t.sync",()=>this.sync()),this.isSynced=!1,this._parent.start(resolve,reject)},sync(){this.isSynced||(this.isSynced=!0,this.razorpayCdnLoad())},razorpayCdnLoad(){this.loadRazorpaySdk(this.config.sdkUrl,()=>{this.razorPayModal()},this.config.additionalAttribute),setTimeout(()=>{T.Utils.scrollToTop(this.$ctx.offset().top)},this.scrollToRazorpayDelayTime)},loadRazorpaySdk(sdkUrl,cb,additionalAttribute){T.Commons.ScriptLoader.loadOnceRazorpay(sdkUrl,cb,additionalAttribute)},disableFormSubmit(){this._events.emit("form:disableSubmit",{id:this.elm.$form.data("t-id")})},razorPayModal(){this.disableFormSubmit();const that=this,url=this.config.responseData,razorpayPaymentMethodModes=(this.razorpayPaymentType.length>0?this.razorpayPaymentType.replace(/[\[\]\s]/g,"").split(","):[]).map(method=>({method:method}));let options={key:this.config.key,amount:this.config.amount,currency:this.config.currency,name:this.config.name,order_id:this.config.orderId,handler:function(response){let formaction=that.$ctx;if(response.razorpay_payment_id){const rzp_url=url+"&razorpay_payment_id="+response.razorpay_payment_id+"&razorpay_order_id="+response.razorpay_order_id+"&razorpay_signature="+response.razorpay_signature+"&status=success";$(formaction).attr("action",rzp_url),that.selector={formSelector:formaction},that.elm={$form:that.selector.formSelector},that._events.emit("form:enableSubmit",{id:that.elm.$form.data("t-id")}),that.elm.$form.submit(),that._events.emit("form:disableSubmit",{id:that.elm.$form.data("t-id")})}else window.location.href=$(".js-backlink").attr("href")},prefill:{name:this.config.customer_name,email:this.config.customer_email,contact:this.config.customer_contact},config:{display:{blocks:{other:{instruments:razorpayPaymentMethodModes}},sequence:["block.other"],preferences:{show_default_blocks:!1}}},modal:{confirm_close:!0,escape:!1,ondismiss:function(){window.location.href=$(".js-backlink").attr("href")}}};var rzp1=new Razorpay(options);rzp1.open(),rzp1.on("payment.failed",function(response){let formaction=that.$ctx;response.error.metadata?this.rzp_url=url+"&razorpay_payment_id="+response.error.metadata.payment_id+"&razorpay_order_id="+response.error.metadata.order_id+"&status=failure":response.error.data.error.metadata?this.rzp_url=url+"&razorpay_payment_id="+response.error.data.error.metadata.payment_id+"&razorpay_order_id="+response.error.data.error.metadata.order_id+"&status=failure":window.location.href=$(".js-backlink").attr("href"),$(formaction).attr("action",this.rzp_url),that.selector={formSelector:formaction},that.elm={$form:that.selector.formSelector},that._events.emit("form:enableSubmit",{id:that.elm.$form.data("t-id")}),that.elm.$form.submit(),that._events.emit("form:disableSubmit",{id:that.elm.$form.data("t-id")})})}})}(jQuery),function($){T.Module.PaymentSelection.Rebrush=T.createDecorator({start(resolve){return this.$ctx=$(this._ctx),this.selector={method:".js-method"},this.elm={$method:this.$(this.selector.method)},this._events.on("t.sync",()=>this.sync()),this.$ctx.on("change",":radio",ev=>this.onChangeMethod(ev)),this.elm.$method.on("click",ev=>this.onChangeMethod(ev)),this.extendFormData=$.proxy(this.extendFormData,this),this._events.on("downpayment:updateform",this.extendFormData),$(".alert-error.upierror").addClass("hidden"),sessionStorage.getItem("upierrormsghidden")?$(".alert-error.upierror").removeClass("hidden"):$(".alert-error.upierror").addClass("hidden"),sessionStorage.removeItem("upierrormsghidden"),$(".alert-error.payu-paymentos-error").addClass("hidden"),sessionStorage.getItem("payupaymentoserrormsg")?$(".alert-error.payu-paymentos-error").removeClass("hidden"):$(".alert-error.payu-paymentos-error").addClass("hidden"),sessionStorage.removeItem("payupaymentoserrormsg"),resolve()},sync(){this.isSynced=!0},extendFormData(downpaymentData){return this.downpaymentData=downpaymentData},onChangeMethod(ev){const $clickedRadio=$(ev.currentTarget),$imageTrigger=$(ev.currentTarget).find(".js-payment-image"),$parentContainer=$clickedRadio.parents(".method"),$parentContainers=$clickedRadio.parents().find(".method"),$containerRadio=$clickedRadio.find(".js-radio");return $parentContainers.removeClass("border-highlight"),$parentContainer.addClass("border-highlight"),$containerRadio.prop("checked",!0),this.handleAjaxRequest($clickedRadio,$imageTrigger)}})}(jQuery),function($){T.Module.PaymentSelection.ToggleTable=T.createDecorator({start(resolve){return this.$ctx=$(this._ctx),T.Utils.allSynced=!1,this._selector={paymentTableSelector:".js-payment-table",paymentTableMessageSelector:".js-payment-table-message",paymentImageSelector:".js-payment-image"},this.elm={$paymentTables:$(this._selector.paymentTableSelector,this.$ctx),$paymentTableMessages:$(this._selector.paymentTableMessageSelector,this.$ctx)},this._events.on("t.sync",$.proxy(this.sync,this)),$(this._selector.paymentImageSelector,this.$ctx).on("click",ev=>this.onClickImage(ev)),this.$ctx.on("change",":radio",ev=>this.onChangeMethod(ev)),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0)},toggleTable(el){const $paymentTable=$(document.getElementById(el.data("paymenttable")),this.$ctx),$paymentTableMessage=$(document.getElementById(el.data("paymenttable")+"-message"),this.$ctx);return this.elm.$paymentTables.toggleClass("is-hidden",!0),this.elm.$paymentTableMessages.toggleClass("is-hidden",!0),$paymentTable.toggleClass("is-hidden",!1),$paymentTableMessage.toggleClass("is-hidden",!1)},onChangeMethod(ev){const $clickedRadio=$(ev.currentTarget);return this.toggleTable($clickedRadio),this._events.emit("recalc",{$element:this.$ctx.find(".installments")})}})}(jQuery),jQuery,T.Module.ProductTilesSliderContainer.RecentlyViewedItems=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.maxItemAgeInDays=30}
7,getAddionalRequestParams(){return this.getRecentlyViewedItemsFromLocalStorage()},getRecentlyViewedItemsFromLocalStorage(){const recentlyViewedItemsFromLocalStorage=localStorage.getItem("recentlyViewedItems")||"[]";let recentlyViewedItems=JSON.parse(recentlyViewedItemsFromLocalStorage)||[];return recentlyViewedItems=this.filterOutdatedItems(recentlyViewedItems),(recentlyViewedItems=this.removeCreatedKey(recentlyViewedItems)).reverse(),{items:recentlyViewedItems}},filterOutdatedItems(recentlyViewedItems){const currentDate=new Date;return recentlyViewedItems.filter(product=>{const createdItemDate=new Date(product.created);return createdItemDate.setDate(createdItemDate.getDate()+this.maxItemAgeInDays),createdItemDate>=currentDate})},removeCreatedKey:recentlyViewedItems=>recentlyViewedItems.map(item=>(delete item.created,item))}),function($){T.Module.SearchField.AdvanceEnumber=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.strLoaderClose="loader:close",this.strLoaderOpen="loader:open",this.$cameraButton=this.$ctx.find(".js-searchfield-icon-camera"),this.$fileInput=this.$ctx.find(".js-file-input"),this.$searchFieldInput=this.$ctx.find(".js-searchfield-input"),this.$searchFieldButton=this.$ctx.find(".js-searchfield-searchbutton"),this.$previewPicture=this.$ctx.find(".js-preview-picture"),this.$uploadPictureForm=this.$ctx.find("form.js-upload-form"),this.$closestForm=this.$ctx.closest("form"),this.$errorContainer=this.$ctx.find(".js-searchfield-formerrorwrapper .error-container"),this.$errorMessageFileFormat=this.$errorContainer.find(".js-error-fileformat"),this.$errorMessageServer=this.$errorContainer.find(".js-error-server"),this.$errorMessageJson=this.$errorContainer.find(".js-error-json"),this.$errorMessageRequired=this.$errorContainer.find(".error-required"),this.fileReader=new FileReader,this.$uploadController=this.$ctx.find("[data-t-name=UploadController]"),this.$uploadPictureForm.length<=0&&(this.$uploadPictureForm=this.$closestForm),this.uploadControllerData={$form:this.$uploadPictureForm,uploadTimeout:this.config.uploadTimeout||3e4,uploadRequired:!1,uploadUrl:this.config.uploadUrl,notifyIsUploading:()=>this.pictureUploading(),notifyUploadSucceeded:result=>this.pictureUploadDone(result),notifyUploadError:errorMsg=>this.pictureUploadError(errorMsg),$uploadController:this.$uploadController},this.$cameraButton.on("click",ev=>this.onClickCameraButton(ev)),this.$fileInput.on("change",ev=>this.onInputPicture(ev)),this.$searchFieldInput.on("input",ev=>this.onInputSearchFieldInput(ev)),this.fileReader.addEventListener("load",()=>this.onLoadFileReader(),!1),this.$fddateLayerArea=this.$ocrFieldFd.closest("fieldset"),this.$znrLayerArea=this.$ocrFieldZnr.closest("fieldset"),this.checkCanToggleOptionalFields()&&setTimeout(()=>{this.$moreContentLink.trigger("morecontenttogglelink:openMoreLessLink")},500)},checkCanToggleOptionalFields(){return!!(this.$moreContentLink&&this.$moreContentLink.length>0&&(this.$ocrFieldFd&&this.$ocrFieldFd.val()||this.$ocrFieldZnr&&this.$ocrFieldZnr.val()))},readFile(file){this.fileReader.readAsDataURL(file)},isPermittedFileSize(file){return file.size<=this.config.maxFilesize},setError($element){this.$searchFieldInput.val(""),this.validate(),$element.show()},unsetError(){this.$errorMessageFileFormat.hide(),this.$errorMessageServer.hide(),this.$errorMessageJson.hide()},setJsonError(result){this.unsetError(),this.$previewPicture.show(),this.$errorMessageJson.text(result.errorMsg),this.setError(this.$errorMessageJson)},onInputSearchFieldInput(ev){this.unsetError()},onLoadFileReader(){this._events.emit("uploadcontroller:start",this.uploadControllerData),this.$fileInput.val("")},onClickCameraButton(ev){ev.stopPropagation(),this.validate(),T.Utils.getLayout().trackValues("photo enumber upload click",{}),this.$fileInput.trigger("click")},onInputPicture(ev){let file=$(ev.currentTarget)[0].files[0];file&&(this.isPermittedFileSize(file)&&file.type.indexOf("image/")>-1?(this.unsetError(),this.readFile(file)):(this.unsetError(),this.setError(this.$errorMessageFileFormat),this.$previewPicture.attr("src",this.config.nopictureSrc),this.$previewPicture.show()))},pictureUploading(){this._events.emit(this.strLoaderOpen,{loaderType:"area",loaderArea:this.$searchFieldInput,$trigger:this.$searchFieldInput}),this.$ocrFieldZnr.length>0&&this._events.emit(this.strLoaderOpen,{loaderType:"area",loaderArea:this.$znrLayerArea,$trigger:this.$ocrFieldZnr}),this.$ocrFieldFd.length>0&&this._events.emit(this.strLoaderOpen,{loaderType:"area",loaderArea:this.$fddateLayerArea,$trigger:this.$ocrFieldFd})},pictureUploadDone(result){switch(this.$ocrFieldZnr.length>0&&(this.$ocrFieldZnr.val("").trigger("change"),this._events.emit(this.strLoaderClose,{$trigger:this.$ocrFieldZnr})),this.$ocrFieldFd.length>0&&(this.$ocrFieldFd.val("").trigger("change"),this._events.emit(this.strLoaderClose,{$trigger:this.$ocrFieldFd})),this._events.emit(this.strLoaderClose,{$trigger:this.$searchFieldInput}),result.responseCode){case"error_could_not_be_handled":T.Utils.getLayout().trackValues("photo enumber generic error",{}),this.$previewPicture.attr("src",this.config.nopictureSrc),this.setJsonError(result);break;case"error_enr_not_retrieved":T.Utils.getLayout().trackValues("photo enumber not retrieved error",{}),this.$previewPicture.attr("src",this.fileReader.result),this.setJsonError(result);break;case"success_enr_retrieved":T.Utils.getLayout().trackValues("photo enumber success",{service_product_id:result.enr,service_fddate:result.fddate,service_znr:result.znr}),this.unsetError(),this.$previewPicture.attr("src",this.fileReader.result),this.$previewPicture.show(),this.$searchFieldInput.val(result.enr),this.$searchFieldInput.trigger("focus"),this.$ocrFieldFd.length>0&&(this.$ocrFieldFd.removeAttr("readonly"),this.$ocrFieldFd.val(result.fddate).trigger("change")),this.$ocrFieldZnr.length>0&&(this.$ocrFieldZnr.removeAttr("readonly"),this.$ocrFieldZnr.val(result.znr).trigger("change")),this.checkCanToggleOptionalFields()&&this.$moreContentLink.trigger("morecontenttogglelink:openMoreLessLink"),this.$searchFieldInput.trigger("input"),this.validate()}},pictureUploadError(errorMsg){this._events.emit(this.strLoaderClose,{$trigger:this.$searchFieldInput}),this.$ocrFieldZnr.length>0&&this._events.emit(this.strLoaderClose,{$trigger:this.$ocrFieldZnr}),this.$ocrFieldFd.length>0&&this._events.emit(this.strLoaderClose,{$trigger:this.$ocrFieldFd}),this.unsetError(),this.setError(this.$errorMessageServer),this.$previewPicture.attr("src",this.config.nopictureSrc),this.$previewPicture.show()},_getValueFromSuggestionOption(radioOption,cb){this.$previewPicture.hide(),this.$previewPicture.attr("src",""),"function"==typeof cb&&cb(radioOption.value),this.$searchFieldInput.trigger("input")}})}(jQuery),function($,doT){T.Module.SearchField.CookitLocator=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.doT=doT,this.suggestionTpl=this.doT.template(this.$ctx.find(".js-webmap-suggestion-template").html()),this.$inputWrapper=this.$(".js-searchinput"),this.$inputAddress=this.$(".js-searchfield-input"),this.$inputLat=this.$(".js-lat-input"),this.$inputLng=this.$(".js-l
7ng-input"),this.$inputCountryCode=this.$(".js-country-code-input"),this.$inputUserCountryCode=this.$(".js-user-country-code-input"),this.$buttonGeoLocation=this.$(".js-button-geo-location"),this.$submit=this.$(".js-searchfield-searchbutton"),this.$layer=this.$(".js-searchfield-suggestlayer"),this.$suggestOption=this.$(".suggestlayer-results-row :input"),this.$form=this.$(".js-ajax-request"),this.$redirectData=this.$(".redirect-data"),this.redirectUrl=this.$redirectData.data("redirect-url"),this.formAction=this.$redirectData.data("action"),this.shouldInitializeByUrl=!1,this.hasProductContext=!1,this.jsonConfig=window.storeLocator,this.parentModuleId=this.$ctx.closest(".o-cookitlocator").data("t-id"),this.disableAutoSearchByLocation=!0,this.hideGeoLocation=!1,this.urlObject=T.Utils.splitUrl(window.location.href),this.shouldInitializeByUrl=this.verifyUrlForSearchByUrl(),this.disableAutoSearchByLocation=this.jsonConfig.initiallyCollapsed,this.hideGeoLocation=this.jsonConfig.hideGeoLocation,this._events.on("webMappingAutocomplete:initialized",data=>this.initialize(data)),this._events.on("wopPlpCookitLocatorURL",data=>this.wopPlpCookitLocatorUrlUpdate(data)),this.sendsMcid=this.$ctx.data("mcid"),this.$mcidField=this.$ctx.find(".js-mcid"),this.counter=0,this.micdready="onlinecookitlayer:mcidready",T.Utils.resetPrecondition(this.micdready),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),this.currentLat,this.currentLng,resolve()},sync(){this.isSynced||this.sendsMcid&&((()=>{setTimeout(function isSatelliteReady(){"undefined"!=typeof _satellite&&_satellite.getVisitorId().getMarketingCloudVisitorID()>0||30===this.counter?this.setMcid():setTimeout(isSatelliteReady.bind(this),200),this.counter++}.bind(this),300)})(),this.isSynced=!0)},setMcid(){"undefined"!=typeof _satellite?(this.mcid=_satellite.getVisitorId().getMarketingCloudVisitorID(),this.$mcidField.val(this.mcid),setTimeout(()=>{T.Utils.fulfillPrecondition(this.micdready)},0)):T.Utils.fulfillPrecondition(this.micdready)},disableGeoLocation(){return this.$buttonGeoLocation.off("click"),this.$buttonGeoLocation.remove(),this.$inputWrapper.removeClass("has-geo-location")},checkForCountryCodeContext(){if(null!=this.jsonConfig.countryCode)return this.$inputCountryCode.val(this.jsonConfig.countryCode)},getLatLngByAddress(address){return this.webMappingAutocomplete.getLatLngByAddress(address,(error,location,address,userCountry)=>{if(!error)return this.setUserCountryForCookitSearch(userCountry),this.initializeCookitSearch(location,address);console.info("No location for address found")})},getAddressByLatLng(latLng){return this.webMappingAutocomplete.getAddressByLatLng(latLng,(error,location,address,userCountry)=>(this.setAddressInSearchField(address),this.setUserCountryForCookitSearch(userCountry),this.initializeCookitSearch(location,address)))},getAutoCompleteSuggestions(searchTerm){return this.webMappingAutocomplete.getAutoCompleteSuggestions(searchTerm,this.$inputAddress,(err,suggestions)=>this.handleAutoCompleteResults(err,suggestions))},handleAutoCompleteResults(err,suggestions){if(err)return void console.error(err);this.validate(),suggestions.parentModuleId=this.parentModuleId;const suggestionHtml=this.suggestionTpl(suggestions);return this.$layer.empty().append(suggestionHtml)},initialize(data){if(data.$component.closest(this.$ctx).length>0)return this.webMappingAutocomplete=data.component,this.webMappingAutocomplete.registerInputField(this.$inputAddress.get(0),(err,suggestions)=>this.handleAutoCompleteResults(err,suggestions)),this.checkForCountryCodeContext(),this.$buttonGeoLocation.on("click",event=>this.onClickButtonGeoLocation(event)),this.$submit.on("click",event=>this.onClickButtonFindCookit(event)),this.$suggestOption.on("change",event=>this.onChangeOption(event)),this.shouldInitializeByUrl?this.initByUrl():!0!==this.disableAutoSearchByLocation&&this.initByGeoLocation(),this.$ctx.find('[disabled="disabled"]').removeAttr("disabled")},initByGeoLocation(){if(this.jsonConfig)return"object"!=typeof navigator.geolocation?(this.toggleUserInterface(!0),void this.disableGeoLocation()):this.hideGeoLocation?(this.toggleUserInterface(!0),void this.disableGeoLocation()):navigator.geolocation.getCurrentPosition(position=>{const latLng={lat:position.coords.latitude,lng:position.coords.longitude};return this.getAddressByLatLng(latLng)},error=>{if(error.code===error.PERMISSION_DENIED)return this.disableGeoLocation()})},getCookitLocations(){this.toggleUserInterface(!1);const request=T.Utils.startAjaxRequest(this.$form.data("ajax-id"));return!!request&&request[0].done(data=>this.getCookitLocationsCallback(data))},formatEventDate(eventDate){if(eventDate){const dateParts=eventDate.split("-");return dateParts[2]+"."+dateParts[1]+"."+dateParts[0]}},composeNewObject(data){return data.map(element=>{let distance=null;const latitude=element.lat,longitude=element.lng;latitude&&longitude&&(distance=this.calculateDistance(latitude,longitude));let date=this.formatEventDate(element.eventDate);
7return{id:element.id,type:element.type,firstname:element.firstname,lastname:element.lastname,startTime:element.startTime,endTime:element.endTime,name:element.name,address:element.address,contactUrl:element.contactUrl,zip:element.zip,city:element.city,distance:distance,lat:element.lat,lng:element.lng,imageURL:element.imageURL,phone:element.phone,description:element.description,eventDate:date,registrationUrl:element.registrationUrl,email:element.email,homePageUrl:element.homePageUrl,openingHours:element.openingHours,location:element.location}})},calculateDistance(lat2,lon2){const lat=this.$inputLat.val(),lng=this.$inputLng.val(),dLat=this.degreesToRadians(lat2-lat),dLon=this.degreesToRadians(lon2-lng),a=Math.sin(dLat/2)*Math.sin(dLat/2)+Math.cos(this.degreesToRadians(lat))*Math.cos(this.degreesToRadians(lat2))*Math.sin(dLon/2)*Math.sin(dLon/2);return(6371*(2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a)))).toFixed(1)},degreesToRadians:degrees=>degrees*(Math.PI/180),getEventsMock:data=>data,getCookitLocationsCallback(data){return this.toggleUserInterface(!0),this._events.emit("newCookitsAvailable",{parentModuleId:this.parentModuleId,currentLocation:this.currentLocation,hasProductContext:this.hasProductContext,cookit:this.composeNewObject(data)})},initByUrl(){const{address:address}=this.urlObject.get,location={lat:this.urlObject.get.lat,lng:this.urlObject.get.lng};return this.setAddressInSearchField(decodeURIComponent(address)),this.setLatLngForCookitSearch(location),this.getCookitLocations()},initializeCookitSearch(location,address){return this.setLatLngForCookitSearch(location),this.redirectToCookitSearchPage(location,address),this.getCookitLocations()},redirectToCookitSearchPage(location,address){this.redirectUrl&&"redirect"===this.formAction&&(window.location=this.getRedirectUrl(location,address))},getRedirectUrl(location,address){return this.redirectUrl.indexOf("?")>-1?`${this.redirectUrl}&lng=${location.lng}&lat=${location.lat}&address=${encodeURIComponent(address)}&country=${this.$inputCountryCode.val()}#cookit-locator`:`${this.redirectUrl}?lng=${location.lng}&lat=${location.lat}&address=${encodeURIComponent(address)}&country=${this.$inputCountryCode.val()}#cookit-locator`},setAddressInSearchField(address){return this.$inputAddress.val(address),this.$inputAddress.trigger("change"),this.$clear.removeClass("hidden"),this.$inputAddress.one("click",address,()=>this.getAutoCompleteSuggestions(address))},setLatLngForCookitSearch(location){return this.$inputLat.val(location.lat),this.$inputLng.val(location.lng),this.currentLocation=location},setUserCountryForCookitSearch(userCountryCode){if(""!==userCountryCode)return this.$inputUserCountryCode.val(userCountryCode)},toggleUserInterface(shouldEnable){return shouldEnable?(this.$inputAddress.removeAttr("disabled"),this.$buttonGeoLocation.removeAttr("disabled"),this.$submit.removeAttr("disabled"),this.$layer.find("input").removeAttr("disabled")):(this.$inputAddress.attr("disabled","disabled"),this.$buttonGeoLocation.attr("disabled","disabled"),this.$submit.attr("disabled","disabled"),this.$layer.find("input").attr("disabled","disabled"))},verifyUrlForSearchByUrl(){return null!=this.urlObject.get&&null!=this.urlObject.get.lat&&null!=this.urlObject.get.lng&&null!=this.urlObject.get.address},getAddress(){return this.$inputAddress.val()},onChangeInput(){const term=this.$inputAddress.val();return term.length>=2?(this.getAutoCompleteSuggestions(term),this._parent.openLayer(),this.$clear.removeClass("hidden")):(this._parent.closeLayer(),this.$clear.addClass("hidden")),this._parent.validate()},onChangeOption(ev){this.$input.val(ev.currentTarget.value),this.$input.trigger("trackingSuggestionSelected"),this.validate();const address=this.getAddress();return this._events.emit("cookitlocator:search",{id:this.$ctx.data("t-id"),address:address}),this.getLatLngByAddress(address)},onClickButtonFindCookit(ev){ev.preventDefault();const address=this.getAddress();if(address.length>0)return this._events.emit("cookitlocator:search",{id:this.$ctx.data("t-id"),address:address}),this.getLatLngByAddress(address)},onClickButtonGeoLocation(ev){return ev.preventDefault(),this.initByGeoLocation()},wopPlpCookitLocatorUrlUpdate(data){this.redirectUrl=data}})}(jQuery,window.doT),function($,doT){T.Module.SearchField.DealerLocator=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.doT=doT,this.suggestionTpl=this.doT.template(this.$ctx.find(".js-webmap-suggestion-template").html()),this.$inputWrapper=this.$(".js-searchinput"),this.$inputAddress=this.$(".js-searchfield-input"),this.$inputLat=this.$(".js-lat-input"),this.$inputLng=this.$(".js-l
7ng-input"),this.$inputCountryCode=this.$(".js-country-code-input"),this.$inputUserCountryCode=this.$(".js-user-country-code-input"),this.$buttonGeoLocation=this.$(".js-button-geo-location"),this.$submit=this.$(".js-searchfield-searchbutton"),this.$layer=this.$(".js-searchfield-suggestlayer"),this.$suggestOption=this.$(".suggestlayer-results-row :input"),this.$form=this.$(".js-ajax-request"),this.$redirectData=this.$(".redirect-data"),this.redirectUrl=this.$redirectData.data("redirect-url"),this.formAction=this.$redirectData.data("action"),this.shouldInitializeByUrl=!1,this.hasProductContext=!1,this.jsonConfig=window.storeLocator,this.parentModuleId=this.$ctx.closest(".o-dealerlocator").data("t-id"),this.disableAutoSearchByLocation=!0,this.hideGeoLocation=!1,this.urlObject=T.Utils.splitUrl(window.location.href),this.shouldInitializeByUrl=this.verifyUrlForSearchByUrl(),this.disableAutoSearchByLocation=this.jsonConfig.initiallyCollapsed,this.hideGeoLocation=this.jsonConfig.hideGeoLocation,this._events.on("webMappingAutocomplete:initialized",data=>this.initialize(data)),this._events.on("wopPlpDealerLocatorURL",data=>this.wopPlpDealerLocatorUrlUpdate(data)),this.sendsMcid=this.$ctx.data("mcid"),this.$mcidField=this.$ctx.find(".js-mcid"),this.counter=0,this.micdready="onlinedealerlayer:mcidready",T.Utils.resetPrecondition(this.micdready),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||this.sendsMcid&&((()=>{setTimeout(function isSatelliteReady(){"undefined"!=typeof _satellite&&_satellite.getVisitorId().getMarketingCloudVisitorID()>0||30===this.counter?this.setMcid():setTimeout(isSatelliteReady.bind(this),200),this.counter++}.bind(this),300)})(),this.isSynced=!0)},setMcid(){"undefined"!=typeof _satellite?(this.mcid=_satellite.getVisitorId().getMarketingCloudVisitorID(),this.$mcidField.val(this.mcid),setTimeout(()=>{T.Utils.fulfillPrecondition(this.micdready)},0)):T.Utils.fulfillPrecondition(this.micdready)},disableGeoLocation(){return this.$buttonGeoLocation.off("click"),this.$buttonGeoLocation.remove(),this.$inputWrapper.removeClass("has-geo-location")},checkForCountryCodeContext(){if(null!=this.jsonConfig.countryCode)return this.$inputCountryCode.val(this.jsonConfig.countryCode)},getLatLngByAddress(address){return this.webMappingAutocomplete.getLatLngByAddress(address,(error,location,address,userCountry)=>{if(!error)return this.setUserCountryForDealerSearch(userCountry),this.initializeDealerSearch(location,address);console.info("No location for address found")})},getAddressByLatLng(latLng){return this.webMappingAutocomplete.getAddressByLatLng(latLng,(error,location,address,userCountry)=>(this.setAddressInSearchField(address),this.setUserCountryForDealerSearch(userCountry),this.initializeDealerSearch(location,address)))},getAutoCompleteSuggestions(searchTerm){return this.webMappingAutocomplete.getAutoCompleteSuggestions(searchTerm,this.$inputAddress,(err,suggestions)=>this.handleAutoCompleteResults(err,suggestions))},handleAutoCompleteResults(err,suggestions){if(err)return void console.error(err);this.validate(),suggestions.parentModuleId=this.parentModuleId;const suggestionHtml=this.suggestionTpl(suggestions);return this.$layer.empty().append(suggestionHtml)},initialize(data){if(data.$component.closest(this.$ctx).length>0)return this.webMappingAutocomplete=data.component,this.webMappingAutocomplete.registerInputField(this.$inputAddress.get(0),(err,suggestions)=>this.handleAutoCompleteResults(err,suggestions)),this.checkForCountryCodeContext(),this.$buttonGeoLocation.on("click",event=>this.onClickButtonGeoLocation(event)),this.$submit.on("click",event=>this.onClickButtonFindDealer(event)),this.$suggestOption.on("change",event=>this.onChangeOption(event)),this.shouldInitializeByUrl?this.initByUrl():!0!==this.disableAutoSearchByLocation&&this.initByGeoLocation(),this.$ctx.find('[disabled="disabled"]').removeAttr("disabled")},initByGeoLocation(){if(this.jsonConfig)return"object"!=typeof navigator.geolocation?(this.toggleUserInterface(!0),void this.disableGeoLocation()):this.hideGeoLocation?(this.toggleUserInterface(!0),void this.disableGeoLocation()):navigator.geolocation.getCurrentPosition(position=>{const latLng={lat:position.coords.latitude,lng:position.coords.longitude};return this.getAddressByLatLng(latLng)},error=>{if(error.code===error.PERMISSION_DENIED)return this.disableGeoLocation()})},getDealerLocations(){this.toggleUserInterface(!1);const request=T.Utils.startAjaxRequest(this.$form.data("ajax-id"));return!!request&&request[0].done(data=>this.getDealerLocationsCallback(data))},getDealerLocationsCallback(data){return this.toggleUserInterface(!0),this._events.emit("newDealersAvailable",{parentModuleId:this.parentModuleId,currentLocation:this.currentLocation,hasProductContext:this.hasProductContext,dealers:data.dealers})},initByUrl(){if(""!=this.urlObject.get&&""!=this.urlObject.get.address&&(""==this.urlObject.get.lat||""==this.urlObject.get.lng))return this.getLatLngByAddress(this.urlObject.get.address);const{address:address}=this.urlObject.get,location={lat:this.urlObject.get.lat,lng:this.urlObject.get.lng};return this.setAddressInSearchField(decodeURIComponent(address)),this.setLatLngForDealerSearch(location),this.getDealerLocations()},initializeDealerSearch(location,address){return this.setLatLngForDealerSearch(location),this.redirectToDealerSearchPage(location,address),this.getDealerLocations()},redirectToDealerSearchPage(location,address){this.redirectUrl&&"redirect"===this.formAction&&(window.location=this.getRedirectUrl(location,address))},getRedirectUrl(location,address){return this.redirectUrl.indexOf("?")>-1?`${this.redirectUrl}&lng=${location.lng}&lat=${location.lat}&address=${encodeURIComponent(address)}&country=${this.$inputCountryCode.val()}#dealer-locator`:`${this.redirectUrl}?lng=${location.lng}&lat=${location.lat}&address=${encodeURIComponent(address)}&country=${this.$inputCountryCode.val()}#dealer-locator`},setAddressInSearchField(address){return this.$inputAddress.val(address),this.$inputAddress.trigger("change"),this.$clear.removeClass("hidden"),this.$inputAddress.one("click",address,()=>this.getAutoCompleteSuggestions(address))}
7,setLatLngForDealerSearch(location){return this.$inputLat.val(location.lat),this.$inputLng.val(location.lng),this.currentLocation=location},setUserCountryForDealerSearch(userCountryCode){if(""!==userCountryCode)return this.$inputUserCountryCode.val(userCountryCode)},toggleUserInterface(shouldEnable){return shouldEnable?(this.$inputAddress.removeAttr("disabled"),this.$buttonGeoLocation.removeAttr("disabled"),this.$submit.removeAttr("disabled"),this.$layer.find("input").removeAttr("disabled")):(this.$inputAddress.attr("disabled","disabled"),this.$buttonGeoLocation.attr("disabled","disabled"),this.$submit.attr("disabled","disabled"),this.$layer.find("input").attr("disabled","disabled"))},verifyUrlForSearchByUrl(){return null!=this.urlObject.get&&null!=this.urlObject.get.address||null!=this.urlObject.get&&null!=this.urlObject.get.lat&&""!=this.urlObject.get.lat&&null!=this.urlObject.get.lng&&""!=this.urlObject.get.lng&&null!=this.urlObject.get.address},getAddress(){return this.$inputAddress.val()},onChangeInput(){const term=this.$inputAddress.val();return term.length>=2?(this.getAutoCompleteSuggestions(term),this._parent.openLayer(),this.$clear.removeClass("hidden")):(this._parent.closeLayer(),this.$clear.addClass("hidden")),this._parent.validate()},onChangeOption(ev){this.$input.val(ev.currentTarget.value),this.$input.trigger("trackingSuggestionSelected"),this.validate();const address=this.getAddress();return this._events.emit("dealerlocator:search",{id:this.$ctx.data("t-id"),address:address}),this.getLatLngByAddress(address)},onClickButtonFindDealer(ev){ev.preventDefault();const address=this.getAddress();if(address.length>0)return this._events.emit("dealerlocator:search",{id:this.$ctx.data("t-id"),address:address}),this.getLatLngByAddress(address)},onClickButtonGeoLocation(ev){return ev.preventDefault(),this.initByGeoLocation()},wopPlpDealerLocatorUrlUpdate(data){this.redirectUrl=data}})}(jQuery,window.doT),function($){T.Module.SearchField.Dob2AddressField=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.citySelector="."+this.$ctx.data("city-selector"),this.postalcodeSelector="."+this.$ctx.data("postalcode-selector"),this.streetSelector="."+this.$ctx.data("street-selector"),this.streetnumberSelector="."+this.$ctx.data("streetnumber-selector"),this.$postalCodeArray=this.$ctx.closest("form").find(this.postalcodeSelector),this.$cityArray=this.$ctx.closest("form").find(this.citySelector),this.$streetArray=this.$ctx.closest("form").find(this.streetSelector),this.$streetnumberArray=this.$ctx.closest("form").find(this.streetnumberSelector),this.$postalCode=this.$postalCodeArray.slice(0,1),this.$city=this.$cityArray.slice(0,1),this.$street=this.$streetArray.slice(0,1),this.$streetnumber=this.$streetnumberArray.slice(0,1),this.inputAjaxDelay=this.$ctx.data("input-ajaxdelay"),this.isSynced=!1,this._events.on("t.sync",()=>this.sync())},sync(){this.isSynced||(this.isSynced=!0)},getAjaxRequestFormData(){return{input:this.$ctx.find("input.js-searchfield-input").attr("name"),"dobAddressData.addressData.postalcode":this.$postalCode.val(),"dobAddressData.addressData.town":this.$city.val(),"dobAddressData.addressData.streetName":this.$street.val(),"dobAddressData.addressData.streetnumber":this.$streetnumber.val()}},getAjaxCallCacheState(){return`${this.$postalCode.val()}*_*${this.$city.val()}*_*${this.$street.val()}*_*${this.$streetnumber.val()}`},openLayer(){return this._parent.adjustLayerOffsetToFormRow(),this._parent.adjustLayerWidthToFormRow(),this._parent.openLayer()},_getValueFromSuggestionOption(radioOption,cb){if(this.$dobAddress=this.$ctx.closest('div[data-t-name="Dob2Address"]'),this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id")),void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{if(null===error){let finalZip=this.getFinalZip(suggestion.value.zip);this.updateAddress(suggestion.value.city,suggestion.value.street,finalZip,suggestion.value.streetnumber)}else console.error(error)})}},getFinalZip(zip){let userZip=this.$postalCode.val();return userZip.startsWith(zip)&&userZip.length>zip.length?userZip:zip},updateAddress(city,street,zip,streetnumber){Boolean(zip)&&this.$postalCode.val(zip),Boolean(city)&&this.$city.val(city),Boolean(street)&&this.$street.val(street),Boolean(streetnumber)&&this.$streetnumber.val(streetnumber),this._events.emit("updateProxyValue")}})}(jQuery),function($){T.Module.SearchField.Dob2PrivateBillingAddressField=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.citySelector="."+this.$ctx.data("city-selector"),this.postalcodeSelector="."+this.$ctx.data("postalcode-selector"),this.streetSelector="."+this.$ctx.data("street-selector"),this.streetnumberSelector="."+this.$ctx.data("streetnumber-selector"),this.$postalCodeArray=this.$ctx.closest("form").find(this.postalcodeSelector),this.$cityArray=this.$ctx.closest("form").find(this.citySelector),this.$streetArray=this.$ctx.closest("form").find(this.streetSelector),this.$streetnumberArray=this.$ctx.closest("form").find(this.streetnumberSelector),this.$postalCode=this.$postalCodeArray.closest("#dobBillToAddressData-addressData-postalcode"),this.$city=this.$cityArray.closest("#dobBillToAddressData-addressData-town"),this.$street=this.$streetArray.closest("#dobBillToAddressData-addressData-street
7Name"),this.$streetnumber=this.$streetnumberArray.closest("#dobBillToAddressData-addressData-streetnumber"),this.inputAjaxDelay=this.$ctx.data("input-ajaxdelay"),this.isSynced=!1,this._events.on("t.sync",()=>this.sync())},sync(){this.isSynced||(this.isSynced=!0)},getAjaxRequestFormData(){return{input:this.$ctx.find("input.js-searchfield-input").attr("name"),"dobAddressData.addressData.postalcode":this.$postalCode.val(),"dobAddressData.addressData.town":this.$city.val(),"dobAddressData.addressData.streetName":this.$street.val(),"dobAddressData.addressData.streetnumber":this.$streetnumber.val()}},getAjaxCallCacheState(){return`${this.$postalCode.val()}*_*${this.$city.val()}*_*${this.$street.val()}*_*${this.$streetnumber.val()}`},openLayer(){return this._parent.adjustLayerOffsetToFormRow(),this._parent.adjustLayerWidthToFormRow(),this._parent.openLayer()},_getValueFromSuggestionOption(radioOption,cb){if(this.$dobAddress=this.$ctx.closest('div[data-t-name="Dob2Address"]'),this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id")),void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{if(null===error){let finalZip=this.getFinalZip(suggestion.value.zip);this.updateAddress(suggestion.value.city,suggestion.value.street,finalZip,suggestion.value.streetnumber)}else console.error(error)})}},getFinalZip(zip){let userZip=this.$postalCode.val();return userZip.startsWith(zip)&&userZip.length>zip.length?userZip:zip},updateAddress(city,street,zip,streetnumber){Boolean(zip)&&this.$postalCode.val(zip),Boolean(city)&&this.$city.val(city),Boolean(street)&&this.$street.val(street),Boolean(streetnumber)&&this.$streetnumber.val(streetnumber),this._events.emit("updateProxyValue")}})}(jQuery),function($){T.Module.SearchField.Dob2City=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.postalCodeSelector=this.$ctx.attr("data-postalcode-selector"),this.$postalCodeField=this.$ctx.closest("form").find(`.${this.postalCodeSelector}`),this.isSynced=!1,this._events.on("t.sync",()=>this.sync())},_getValueFromSuggestionOption(radioOption,cb){if(this.$dobAddress=this.$ctx.closest('div[data-t-name="Dob2Address"]'),this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id")),void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{null===error?(null!=suggestion.value.zip&&this.updatePostalCode(suggestion.value.zip),cb(suggestion.value.city)):console.error(error)})}},updatePostalCode(postalCode){this.$postalCodeField.val(postalCode),this._events.emit("updateProxyValue")},getAjaxCallCacheState(){return`${this.$postalCodeField.val()}*_*${this.$input.val()}`},getAjaxRequestFormData(){const mod=this;let postalCode=null;return mod.$postalCodeField.length>0&&(postalCode=mod.$postalCodeField.val()),{input:"town","dobAddressData.addressData.postalcode":postalCode}},openLayer(){return this._parent.adjustLayerOffsetToFormRow(),this._parent.adjustLayerWidthToFormRow(),this._parent.openLayer()}})}(jQuery),function($){T.Module.SearchField.Dob2CompanyAddressField=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.citySelector="."+this.$ctx.data("city-selector"),this.postalcodeSelector="."+this.$ctx.data("postalcode-selector"),this.streetSelector="."+this.$ctx.data("street-selector"),this.streetnumberSelector="."+this.$ctx.data("streetnumber-selector"),this.$postalCodeArray=this.$ctx.closest("form").find(this.postalcodeSelector),this.$cityArray=this.$ctx.closest("form").find(this.citySelector),this.$streetArray=this.$ctx.closest("form").find(this.streetSelector),this.$streetnumberArray=this.$ctx.closest("form").find(this.streetnumberSelector),this.$postalCode=this.$postalCodeArray.slice(3),this.$city=this.$cityArray.slice(3),this.$street=this.$streetArray.slice(3),this.$streetnumber=this.$streetnumberArray.slice(3),this.inputAjaxDelay=this.$ctx.data("input-ajaxdelay"),this.isSynced=!1,this._events.on("t.sync",()=>this.sync())},sync(){this.isSynced||(this.isSynced=!0)},getAjaxRequestFormData(){return{input:this.$ctx.find("input.js-searchfield-input").attr("name"),"dobAddressData.addressData.postalcode":this.$postalCode.val(),"dobAddressData.addressData.town":this.$city.val(),"dobAddressData.addressData.streetName":this.$street.val(),"dobAddressData.addressData.streetnumber":this.$streetnumber.val()}},getAjaxCallCacheState(){return`${this.$postalCode.val()}*_*${this.$city.val()}*_*${this.$street.val()}*_*${this.$streetnumber.val()}`},openLayer(){return this._parent.adjustLayerOffsetToFormRow(),this._parent.adjustLayerWidthToF
7ormRow(),this._parent.openLayer()},_getValueFromSuggestionOption(radioOption,cb){if(this.$dobAddress=this.$ctx.closest('div[data-t-name="Dob2Address"]'),this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id")),void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{if(null===error){let finalZip=this.getFinalZip(suggestion.value.zip);this.updateAddress(suggestion.value.city,suggestion.value.street,finalZip,suggestion.value.streetnumber)}else console.error(error)})}},getFinalZip(zip){let userZip=this.$postalCode.val();return userZip.startsWith(zip)&&userZip.length>zip.length?userZip:zip},updateAddress(city,street,zip,streetnumber){Boolean(zip)&&this.$postalCode.val(zip),Boolean(city)&&this.$city.val(city),Boolean(street)&&this.$street.val(street),Boolean(streetnumber)&&this.$streetnumber.val(streetnumber),this._events.emit("updateProxyValue")}})}(jQuery),function($){T.Module.SearchField.Dob2CompanyCity=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.postalCodeSelector=this.$ctx.attr("data-postalcode-selector"),this.$postalCodeField=this.$ctx.closest("form").find(`.${this.postalCodeSelector}`),this.isSynced=!1,this._events.on("t.sync",()=>this.sync())},_getValueFromSuggestionOption(radioOption,cb){if(this.$dobAddress=this.$ctx.closest('div[data-t-name="Dob2RepairAddressFields"]'),this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id")),void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{null===error?(null!=suggestion.value.zip&&this.updatePostalCode(suggestion.value.zip),cb(suggestion.value.city)):console.error(error)})}},updatePostalCode(postalCode){this.$postalCodeField.val(postalCode),this._events.emit("updateProxyValue")},getAjaxCallCacheState(){return`${this.$postalCodeField.val()}*_*${this.$input.val()}`},getAjaxRequestFormData(){const mod=this;let postalCode=null;return mod.$postalCodeField.length>0&&(postalCode=mod.$postalCodeField.val()),{input:"town","dobAddressData.addressData.companypostalcode":postalCode}},openLayer(){return this._parent.adjustLayerOffsetToFormRow(),this._parent.adjustLayerWidthToFormRow(),this._parent.openLayer()}})}(jQuery),function($){T.Module.SearchField.Dob2CompanyPostalCode=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),this.citySelector=this.$ctx.attr("data-city-selector")},getAjaxRequestFormData:()=>({input:"postalcode"}),openLayer(){return this._parent.adjustLayerWidthToFormRow(),this._parent.openLayer()},_getValueFromSuggestionOption(radioOption,cb){if(this.$dobAddress=this.$ctx.closest('div[data-t-name="Dob2RepairAddressFields"]'),this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id")),void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{null===error?(this.updateCity(suggestion.value.city),cb(suggestion.value.zip)):console.error(error)})}},updateCity(city){null!==this.citySelector&&void 0!==this.citySelector&&(this.$input.closest("form").find(`.${this.citySelector}`).val(city),this._events.emit("updateProxyValue"))}})}(jQuery),function($){T.Module.SearchField.Dob2CompanyStreet=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject);const codeSelector=this.$ctx.attr("data-postalcode-selector");this.$postalCodeField=null!=codeSelector?this.$input.closest("form").find(`.${codeSelector}`):$();const citySelector=this.$ctx.attr("data-city-selector");this.$cityField=null!=citySelector?this.$input.closest("form").find(`.${citySelector}`):$(),this.isSynced=!1,this._events.on("t.sync",()=>this.sync())},_getValueFromSuggestionOption(radioOption,cb){if(this.$dobAddress=this.$ctx.closest('div[data-t-name="Dob2RepairAddressFields"]'),this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id")),void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{null===error?(this.updatePostalCodeAndCity(suggestion.value.zip,suggestion.value.city),null!=suggestion.value.street&&cb(suggestion.value.street)):console.error(error)})}},updatePostalCodeAndCity(postalCode,city){this.$postalCodeField.val(postalCode),this.$cityField.val(city),this._events.emit("updateProxyValue")},getAjaxCallCacheState(){return`${this.$postalCodeField.val()}*_*${this.$cityField.val()}*_*${this.$input.val()}`},getAjaxRequestFormData(){return{input:"street","dobAddressData.addressData.companypostalcode":this.$postalCodeField.val(),"dobAddressData.addressData.companytown":this.$cityField.val()}}
7,openLayer(){this._parent.adjustLayerWidthToFormRow(),this._parent.openLayer()}})}(jQuery),function($){T.Module.SearchField.Dob2CompanyStreetNumber=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),this.citySelector="."+this.$ctx.data("city-selector"),this.postalcodeSelector="."+this.$ctx.data("postalcode-selector"),this.streetSelector="."+this.$ctx.data("street-selector"),this.streetnumberSelector="."+this.$ctx.data("streetnumber-selector"),this.$postalCode=this.$ctx.closest("form").find(this.postalcodeSelector),this.$city=this.$ctx.closest("form").find(this.citySelector),this.$street=this.$ctx.closest("form").find(this.streetSelector),this.$streetnumber=this.$ctx.closest("form").find(this.streetnumberSelector)},getAjaxRequestFormData(){return{input:"streetnumber","dobAddressData.addressData.companypostalcode":this.$postalCode.val(),"dobAddressData.addressData.companytown":this.$city.val(),"dobAddressData.addressData.companystreetName":this.$street.val(),"dobAddressData.addressData.companystreetnumber":this.$streetnumber.val()}},openLayer(){return this._parent.adjustLayerWidthToFormRow(),this._parent.openLayer()},_getValueFromSuggestionOption(radioOption,cb){if(this.$dobAddress=this.$ctx.closest('div[data-t-name="Dob2RepairAddressFields"]'),this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id")),void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{null===error?this.updateAddress(suggestion.value.city,suggestion.value.street,suggestion.value.zip):console.error(error)})}},updateAddress(city,street,zip){this.$postalCode.val(zip),this.$city.val(city),this.$street.val(street),this._events.emit("updateProxyValue"),this.validate()}})}(jQuery),function($){T.Module.SearchField.Dob2PostalCode=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),this.citySelector=this.$ctx.attr("data-city-selector")},getAjaxRequestFormData:()=>({input:"postalcode"}),openLayer(){return this._parent.adjustLayerWidthToFormRow(),this._parent.openLayer()},_getValueFromSuggestionOption(radioOption,cb){if(this.$dobAddress=this.$ctx.closest('div[data-t-name="Dob2Address"]'),this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id")),void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{null===error?(this.updateCity(suggestion.value.city),cb(suggestion.value.zip)):console.error(error)})}},updateCity(city){null!==this.citySelector&&void 0!==this.citySelector&&(this.$input.closest("form").find(`.${this.citySelector}`).val(city),this._events.emit("updateProxyValue"))}})}(jQuery),function($){T.Module.SearchField.Dob2RepairAddressField=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.citySelector="."+this.$ctx.data("city-selector"),this.postalcodeSelector="."+this.$ctx.data("postalcode-selector"),this.streetSelector="."+this.$ctx.data("street-selector"),this.streetnumberSelector="."+this.$ctx.data("streetnumber-selector"),this.$addressCtx=this.$ctx.parent().parent().parent().parent().parent().parent().parent().parent().parent(),this.$currCtx=this.$addressCtx.find(".js-repair-company-address-fields"),this.$postalCode=this.$currCtx.find(this.postalcodeSelector),this.$city=this.$currCtx.find(this.citySelector),this.$street=this.$currCtx.find(this.streetSelector),this.$streetnumber=this.$currCtx.find(this.streetnumberSelector),this.inputAjaxDelay=this.$ctx.data("input-ajaxdelay"),this.isSynced=!1,this._events.on("t.sync",()=>this.sync())},sync(){this.isSynced||(this.isSynced=!0)},getAjaxRequestFormData(){return{input:this.$ctx.find("input.js-searchfield-input").attr("name"),"dobAddressData.addressData.postalcode":this.$postalCode.val(),"dobAddressData.addressData.town":this.$city.val(),"dobAddressData.addressData.streetName":this.$street.val(),"dobAddressData.addressData.streetnumber":this.$streetnumber.val()}},getAjaxCallCacheState(){return`${this.$postalCode.val()}*_*${this.$city.val()}*_*${this.$street.val()}*_*${this.$streetnumber.val()}`},openLayer(){return this._parent.adjustLayerOffsetToFormRow(),this._parent.adjustLayerWidthToF
7ormRow(),this._parent.openLayer()},_getValueFromSuggestionOption(radioOption,cb){if(this.$dobAddress=this.$ctx.closest('div[data-t-name="Dob2Address"]'),this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id")),void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{if(null===error){let finalZip=this.getFinalZip(suggestion.value.zip);this.updateAddress(suggestion.value.city,suggestion.value.street,finalZip,suggestion.value.streetnumber)}else console.error(error)})}},getFinalZip(zip){let userZip=this.$postalCode.val();return userZip.startsWith(zip)&&userZip.length>zip.length?userZip:zip},updateAddress(city,street,zip,streetnumber){Boolean(zip)&&this.$postalCode.val(zip),Boolean(city)&&this.$city.val(city),Boolean(street)&&this.$street.val(street),Boolean(streetnumber)&&this.$streetnumber.val(streetnumber),this._events.emit("updateProxyValue")}})}(jQuery),function($){T.Module.SearchField.Dob2RepairCity=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.postalCodeSelector=this.$ctx.attr("data-postalcode-selector"),this.$postalCodeField=this.$ctx.closest("form").find(`.${this.postalCodeSelector}`),this.isSynced=!1,this._events.on("t.sync",()=>this.sync())},_getValueFromSuggestionOption(radioOption,cb){if(this.$dobAddress=this.$ctx.closest('div[data-t-name="Dob2Address"]'),this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id")),void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{null===error?(null!=suggestion.value.zip&&this.updatePostalCode(suggestion.value.zip),cb(suggestion.value.city)):console.error(error)})}},updatePostalCode(postalCode){this.$postalCodeField.val(postalCode),this._events.emit("updateProxyValue")},getAjaxCallCacheState(){return`${this.$postalCodeField.val()}*_*${this.$input.val()}`},getAjaxRequestFormData(){const mod=this;let postalCode=null;return mod.$postalCodeField.length>0&&(postalCode=mod.$postalCodeField.val()),{input:"town","dobAddressData.addressData.postalcode":postalCode}},openLayer(){return this._parent.adjustLayerOffsetToFormRow(),this._parent.adjustLayerWidthToFormRow(),this._parent.openLayer()}})}(jQuery),function($){T.Module.SearchField.Dob2RepairPostalCode=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),this.citySelector=this.$ctx.attr("data-city-selector")},getAjaxRequestFormData:()=>({input:"postalcode"}),openLayer(){return this._parent.adjustLayerWidthToFormRow(),this._parent.openLayer()},_getValueFromSuggestionOption(radioOption,cb){if(this.$dobAddress=this.$ctx.closest('div[data-t-name="Dob2Address"]'),this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id")),void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{null===error?(this.updateCity(suggestion.value.city),cb(suggestion.value.zip)):console.error(error)})}},updateCity(city){null!==this.citySelector&&void 0!==this.citySelector&&(this.$input.closest("form").find(`.${this.citySelector}`).val(city),this._events.emit("updateProxyValue"))}})}(jQuery),function($){T.Module.SearchField.Dob2RepairStreet=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject);const codeSelector=this.$ctx.attr("data-postalcode-selector");this.$postalCodeField=null!=codeSelector?this.$input.closest("form").find(`.${codeSelector}`):$();const citySelector=this.$ctx.attr("data-city-selector");this.$cityField=null!=citySelector?this.$input.closest("form").find(`.${citySelector}`):$(),this.isSynced=!1,this._events.on("t.sync",()=>this.sync())},_getValueFromSuggestionOption(radioOption,cb){if(this.$dobAddress=this.$ctx.closest('div[data-t-name="Dob2Address"]'),this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id")),void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{null===error?(this.updatePostalCodeAndCity(suggestion.value.zip,suggestion.value.city),null!=suggestion.value.street&&cb(suggestion.value.street)):console.error(error)})}},updatePostalCodeAndCity(postalCode,city){this.$postalCodeField.val(postalCode),this.$cityField.val(city),this._events.emit("updateProxyValue")},getAjaxCallCacheState(){return`${this.$postalCodeField.val()}*_*${this.$cityField.val()}*_*${this.$input.val()}`},getAjaxRequestFormData(){return{input:"street","dobAddressData.addressData.postalcode":this.$postalCodeField.val(),"dobAddressData.addressData.town":this.$cityField.val()}}
7,openLayer(){this._parent.adjustLayerWidthToFormRow(),this._parent.openLayer()}})}(jQuery),function($){T.Module.SearchField.Dob2RepairStreetNumber=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),this.citySelector="."+this.$ctx.data("city-selector"),this.postalcodeSelector="."+this.$ctx.data("postalcode-selector"),this.streetSelector="."+this.$ctx.data("street-selector"),this.streetnumberSelector="."+this.$ctx.data("streetnumber-selector"),this.$postalCode=this.$ctx.closest("form").find(this.postalcodeSelector),this.$city=this.$ctx.closest("form").find(this.citySelector),this.$street=this.$ctx.closest("form").find(this.streetSelector),this.$streetnumber=this.$ctx.closest("form").find(this.streetnumberSelector),console.log(this.$ctx.closest("form").find(this.postalcodeSelector),"this.postalcodeSelector")},getAjaxRequestFormData(){return{input:"streetnumber","dobAddressData.addressData.postalcode":this.$postalCode.val(),"dobAddressData.addressData.town":this.$city.val(),"dobAddressData.addressData.streetName":this.$street.val(),"dobAddressData.addressData.streetnumber":this.$streetnumber.val()}},openLayer(){return this._parent.adjustLayerWidthToFormRow(),this._parent.openLayer()},_getValueFromSuggestionOption(radioOption,cb){if(this.$dobAddress=this.$ctx.closest('div[data-t-name="Dob2Address"]'),this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id")),void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{null===error?this.updateAddress(suggestion.value.city,suggestion.value.street,suggestion.value.zip):console.error(error)})}},updateAddress(city,street,zip){this.$postalCode.val(zip),this.$city.val(city),this.$street.val(street),this._events.emit("updateProxyValue"),this.validate()}})}(jQuery),function($){T.Module.SearchField.Dob2Street=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject);const codeSelector=this.$ctx.attr("data-postalcode-selector");this.$postalCodeField=null!=codeSelector?this.$input.closest("form").find(`.${codeSelector}`):$();const citySelector=this.$ctx.attr("data-city-selector");this.$cityField=null!=citySelector?this.$input.closest("form").find(`.${citySelector}`):$(),this.isSynced=!1,this._events.on("t.sync",()=>this.sync())},_getValueFromSuggestionOption(radioOption,cb){if(this.$dobAddress=this.$ctx.closest('div[data-t-name="Dob2Address"]'),this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id")),void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{null===error?(this.updatePostalCodeAndCity(suggestion.value.zip,suggestion.value.city),null!=suggestion.value.street&&cb(suggestion.value.street)):console.error(error)})}},updatePostalCodeAndCity(postalCode,city){this.$postalCodeField.val(postalCode),this.$cityField.val(city),this._events.emit("updateProxyValue")},getAjaxCallCacheState(){return`${this.$postalCodeField.val()}*_*${this.$cityField.val()}*_*${this.$input.val()}`},getAjaxRequestFormData(){return{input:"street","dobAddressData.addressData.postalcode":this.$postalCodeField.val(),"dobAddressData.addressData.town":this.$cityField.val()}},openLayer(){this._parent.adjustLayerWidthToFormRow(),this._parent.openLayer()}})}(jQuery),function($){T.Module.SearchField.Dob2StreetNumber=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),this.citySelector="."+this.$ctx.data("city-selector"),this.postalcodeSelector="."+this.$ctx.data("postalcode-selector"),this.streetSelector="."+this.$ctx.data("street-selector"),this.streetnumberSelector="."+this.$ctx.data("streetnumber-selector"),this.$postalCode=this.$ctx.closest("form").find(this.postalcodeSelector),this.$city=this.$ctx.closest("form").find(this.citySelector),this.$street=this.$ctx.closest("form").find(this.streetSelector),this.$streetnumber=this.$ctx.closest("form").find(this.streetnumberSelector)},getAjaxRequestFormData(){return{input:"streetnumber","dobAddressData.addressData.postalcode":this.$postalCode.val(),"dobAddressData.addressData.town":this.$city.val(),"dobAddressData.addressData.streetName":this.$street.val(),"dobAddressData.addressData.streetnumber":this.$streetnumber.val()}}
7,openLayer(){return this._parent.adjustLayerWidthToFormRow(),this._parent.openLayer()},_getValueFromSuggestionOption(radioOption,cb){if(this.$dobAddress=this.$ctx.closest('div[data-t-name="Dob2Address"]'),this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id")),void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{null===error?this.updateAddress(suggestion.value.city,suggestion.value.street,suggestion.value.zip):console.error(error)})}},updateAddress(city,street,zip){this.$postalCode.val(zip),this.$city.val(city),this.$street.val(street),this._events.emit("updateProxyValue"),this.validate()}})}(jQuery),function($){T.Module.SearchField.DobAddressField=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),this.citySelector="."+this.$ctx.data("city-selector"),this.postalcodeSelector="."+this.$ctx.data("postalcode-selector"),this.streetSelector="."+this.$ctx.data("street-selector"),this.streetnumberSelector="."+this.$ctx.data("streetnumber-selector"),this.$postalCode=this.$ctx.closest("form").find(this.postalcodeSelector),this.$city=this.$ctx.closest("form").find(this.citySelector),this.$street=this.$ctx.closest("form").find(this.streetSelector),this.$streetnumber=this.$ctx.closest("form").find(this.streetnumberSelector),this.inputAjaxDelay=this.$ctx.data("input-ajaxdelay")},getAjaxRequestFormData(){return{input:this.$ctx.find("input.js-searchfield-input").attr("name"),"dobAddressData.addressData.postalcode":this.$postalCode.val(),"dobAddressData.addressData.town":this.$city.val(),"dobAddressData.addressData.streetName":this.$street.val(),"dobAddressData.addressData.streetnumber":this.$streetnumber.val()}},getAjaxCallCacheState(){return`${this.$postalCode.val()}*_*${this.$city.val()}*_*${this.$street.val()}*_*${this.$streetnumber.val()}`},openLayer(){return this._parent.adjustLayerOffsetToFormRow(),this._parent.adjustLayerWidthToFormRow(),this._parent.openLayer()},sync(){this.isSynced||(this.$dobAddress=this.$ctx.closest('div[data-t-name="DobAddress"]'),this.$dobAddress.length>0&&(this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id"))))},_getValueFromSuggestionOption(radioOption,cb){if(void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{if(null===error){let finalZip=this.getFinalZip(suggestion.value.zip);null!=finalZip?this.updateAddress(suggestion.value.city,suggestion.value.street,finalZip,suggestion.value.streetnumber):this.updateAddress(suggestion.value.city,suggestion.value.street,null,suggestion.value.streetnumber)}else console.error(error)})}},getFinalZip(zip){let userZip=this.$postalCode.val();return null!=userZip?userZip.startsWith(zip)&&userZip.length>zip.length?userZip:zip:null},updateAddress(city,street,zip,streetnumber){Boolean(zip)&&this.$postalCode.val(zip),Boolean(city)&&this.$city.val(city),Boolean(street)&&this.$street.val(street),Boolean(streetnumber)&&this.$streetnumber.val(streetnumber),this._events.emit("updateProxyValue")}})}(jQuery),function($){T.Module.SearchField.DobCity=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.postalCodeSelector=this.$ctx.attr("data-postalcode-selector"),this.$postalCodeField=this.$ctx.closest("form").find(`.${this.postalCodeSelector}`),this.isSynced=!1,this._events.on("t.sync",()=>this.sync())},sync(){this.isSynced||(this.$dobAddress=this.$ctx.closest('div[data-t-name="DobAddress"]'),this.$dobAddress.length>0&&(this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id"))))},_getValueFromSuggestionOption(radioOption,cb){if(void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{null===error?(null!=suggestion.value.zip&&this.updatePostalCode(suggestion.value.zip),cb(suggestion.value.city)):console.error(error)})}},updatePostalCode(postalCode){this.$postalCodeField.val(postalCode),this._events.emit("updateProxyValue")},getAjaxCallCacheState(){return`${this.$postalCodeField.val()}*_*${this.$input.val()}`},getAjaxRequestFormData(){const mod=this;let postalCode=null;return mod.$postalCodeField.length>0&&(postalCode=mod.$postalCodeField.val()),{input:"town","dobAddressData.addressData.postalcode":postalCode}},openLayer(){return this._parent.adjustLayerOffsetToFormRow(),this._parent.adjustLayerWidthToF
7ormRow(),this._parent.openLayer()}})}(jQuery),function($){T.Module.SearchField.DobPostalCode=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),this.citySelector=this.$ctx.attr("data-city-selector")},getAjaxRequestFormData:()=>({input:"postalcode"}),openLayer(){return this._parent.adjustLayerWidthToFormRow(),this._parent.openLayer()},sync(){this.isSynced||(this.$dobAddress=this.$ctx.closest('div[data-t-name="DobAddress"]'),this.$dobAddress.length>0&&(this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id"))))},_getValueFromSuggestionOption(radioOption,cb){if(void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{null===error?(this.updateCity(suggestion.value.city),cb(suggestion.value.zip)):console.error(error)})}},updateCity(city){null!==this.citySelector&&void 0!==this.citySelector&&(this.$input.closest("form").find(`.${this.citySelector}`).val(city),this._events.emit("updateProxyValue"))}})}(jQuery),function($){T.Module.SearchField.DobStreet=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject);const codeSelector=this.$ctx.attr("data-postalcode-selector");this.$postalCodeField=null!=codeSelector?this.$input.closest("form").find(`.${codeSelector}`):$();const citySelector=this.$ctx.attr("data-city-selector");this.$cityField=null!=citySelector?this.$input.closest("form").find(`.${citySelector}`):$(),this.isSynced=!1,this._events.on("t.sync",()=>this.sync())},sync(){this.isSynced||(this.$dobAddress=this.$ctx.closest('div[data-t-name="DobAddress"]'),this.$dobAddress.length>0&&(this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id"))))},_getValueFromSuggestionOption(radioOption,cb){if(void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{null===error?(this.updatePostalCodeAndCity(suggestion.value.zip,suggestion.value.city),null!=suggestion.value.street&&cb(suggestion.value.street)):console.error(error)})}},updatePostalCodeAndCity(postalCode,city){this.$postalCodeField.val(postalCode),this.$cityField.val(city),this._events.emit("updateProxyValue")},getAjaxCallCacheState(){return`${this.$postalCodeField.val()}*_*${this.$cityField.val()}*_*${this.$input.val()}`},getAjaxRequestFormData(){return{input:"street","dobAddressData.addressData.postalcode":this.$postalCodeField.val(),"dobAddressData.addressData.town":this.$cityField.val()}},openLayer(){this._parent.adjustLayerWidthToFormRow(),this._parent.openLayer()}})}(jQuery),function($){T.Module.SearchField.DobStreetNumber=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),this.citySelector="."+this.$ctx.data("city-selector"),this.postalcodeSelector="."+this.$ctx.data("postalcode-selector"),this.streetSelector="."+this.$ctx.data("street-selector"),this.streetnumberSelector="."+this.$ctx.data("streetnumber-selector"),this.$postalCode=this.$ctx.closest("form").find(this.postalcodeSelector),this.$city=this.$ctx.closest("form").find(this.citySelector),this.$street=this.$ctx.closest("form").find(this.streetSelector),this.$streetnumber=this.$ctx.closest("form").find(this.streetnumberSelector)},getAjaxRequestFormData(){return{input:"streetnumber","dobAddressData.addressData.postalcode":this.$postalCode.val(),"dobAddressData.addressData.town":this.$city.val(),"dobAddressData.addressData.streetName":this.$street.val(),"dobAddressData.addressData.streetnumber":this.$streetnumber.val()}},openLayer(){return this._parent.adjustLayerWidthToFormRow(),this._parent.openLayer()},sync(){this.isSynced||(this.$dobAddress=this.$ctx.closest('div[data-t-name="DobAddress"]'),this.$dobAddress.length>0&&(this.dobAddress=this._sandbox.getModuleById(this.$dobAddress.data("t-id"))))},_getValueFromSuggestionOption(radioOption,cb){if(void 0!==this.dobAddress){let suggestion=$(radioOption).data("value");this.dobAddress.ensureValueInSuggestion(suggestion,(error,suggestion)=>{null===error?this.updateAddress(suggestion.value.city,suggestion.value.street,suggestion.value.zip):console.error(error)})}},updateAddress(city,street,zip){this.$postalCode.val(zip),this.$city.val(city),this.$street.val(street),this._events.emit("updateProxyValue"),this.validate()}})}(jQuery),function($){T.Module.SearchField.ENumberOCR=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.strLoaderClose="loader:close",this.strLoaderOpen="loader:open",this.$cameraButton=this.$ctx.find(".js-searchfield-icon-camera"),this.$fileInput=this.$ctx.find(".js-file-input"),this.$searchFieldInput=this.$ctx.find(".js-searchfield-input"),this.$searchFieldButton=this.$ctx.find(".js-searchfield-searchbutton"),this.$uploadPictureForm=this.$ctx.find("form.js-upload-form"),this.$closestForm=this.$ctx.closest("form"),this.$errorContainer=this.$ctx.find(".js-searchfield-formerrorwrapper .error-container"),this.$errorMessageFileFormat=this.$errorContainer.find(".js-error-fileformat"),this.$errorMessageServer=this.$errorContainer.find(".js-error-server"),this.$errorMessageJson=this.$errorContainer.find(".js-error-json"),this.$errorMessageRequired=this.$errorContainer.find(".error-required"),this.fileReader=new FileReader,this.$uploadController=this.$ctx.find("[data-t-name=UploadController]"),this.$uploadPictureForm.length<=0&&(this.$uploadPictureForm=this.$closestForm),this.uploadControllerData={$form:this.$uploadPictureForm,uploadTimeout:this.config.uploadTimeout||3e4,uploadRequired:!1,uploadUrl:this.config.uploadUrl,notifyIsU
7ploading:()=>this.pictureUploading(),notifyUploadSucceeded:result=>this.pictureUploadDone(result),notifyUploadError:errorMsg=>this.pictureUploadError(errorMsg),$uploadController:this.$uploadController},this.$cameraButton.on("click",ev=>this.onClickCameraButton(ev)),this.$fileInput.on("change",ev=>this.onInputPicture(ev)),this.$searchFieldInput.on("input",ev=>this.onInputSearchFieldInput(ev)),this.fileReader.addEventListener("load",()=>this.onLoadFileReader(),!1),this.$fddateLayerArea=this.$ocrFieldFd.closest("fieldset"),this.$znrLayerArea=this.$ocrFieldZnr.closest("fieldset")},checkCanToggleOptionalFields(){return!!(this.$moreContentLink&&this.$moreContentLink.length>0&&(this.$ocrFieldFd&&this.$ocrFieldFd.val()||this.$ocrFieldZnr&&this.$ocrFieldZnr.val()))},readFile(file){this.fileReader.readAsDataURL(file)},isPermittedFileSize(file){return file.size<=this.config.maxFilesize},setError($element){this.$searchFieldInput.val(""),this.validate(),$element.show()},unsetError(){this.$errorMessageFileFormat.hide(),this.$errorMessageServer.hide(),this.$errorMessageJson.hide()},setJsonError(result){this.unsetError(),this.$errorMessageJson.text(result.errorMsg),this.setError(this.$errorMessageJson)},onInputSearchFieldInput(ev){this.unsetError()},onLoadFileReader(){this._events.emit("uploadcontroller:start",this.uploadControllerData),this.$fileInput.val("")},onClickCameraButton(ev){ev.stopPropagation(),this.validate(),T.Utils.getLayout().trackValues("photo enumber upload click",{}),this.$fileInput.trigger("click")},onInputPicture(ev){let file=$(ev.currentTarget)[0].files[0];file&&(this.isPermittedFileSize(file)&&file.type.indexOf("image/")>-1?(this.unsetError(),this.readFile(file)):(this.unsetError(),this.setError(this.$errorMessageFileFormat)))},pictureUploading(){this._events.emit(this.strLoaderOpen,{loaderType:"area",loaderArea:this.$searchFieldInput,$trigger:this.$searchFieldInput}),this.$ocrFieldZnr.length>0&&this._events.emit(this.strLoaderOpen,{loaderType:"area",loaderArea:this.$znrLayerArea,$trigger:this.$ocrFieldZnr}),this.$ocrFieldFd.length>0&&this._events.emit(this.strLoaderOpen,{loaderType:"area",loaderArea:this.$fddateLayerArea,$trigger:this.$ocrFieldFd})},pictureUploadDone(result){switch(this.$ocrFieldZnr.length>0&&(this.$ocrFieldZnr.val("").trigger("change"),this._events.emit(this.strLoaderClose,{$trigger:this.$ocrFieldZnr})),this.$ocrFieldFd.length>0&&(this.$ocrFieldFd.val("").trigger("change"),this._events.emit(this.strLoaderClose,{$trigger:this.$ocrFieldFd})),this._events.emit(this.strLoaderClose,{$trigger:this.$searchFieldInput}),result.responseCode){case"error_could_not_be_handled":T.Utils.getLayout().trackValues("photo enumber generic error",{}),this.setJsonError(result);break;case"error_enr_not_retrieved":T.Utils.getLayout().trackValues("photo enumber not retrieved error",{}),this.setJsonError(result);break;case"success_enr_retrieved":T.Utils.getLayout().trackValues("photo enumber success",{service_product_id:result.enr,service_fddate:result.fddate,service_znr:result.znr}),this.unsetError(),this.$searchFieldInput.val(result.enr),this.$searchFieldInput.trigger("focus"),result.fddate&&this.$ocrFieldFd.length>0&&(this.$ocrFieldFd.removeClass("hidden"),this.$fdNumberLabel.removeClass("hidden"),this.$ocrFieldFd.val(result.fddate).trigger("change")),result.znr&&this.$ocrFieldZnr.length>0&&(this.$ocrFieldZnr.removeClass("hidden"),this.$serialNumberLabel.removeClass("hidden"),this.$ocrFieldZnr.val(result.znr).trigger("change")),this.$searchFieldInput.trigger("input"),this.validate()}},pictureUploadError(errorMsg){this._events.emit(this.strLoaderClose,{$trigger:this.$searchFieldInput}),this.$ocrFieldZnr.length>0&&this._events.emit(this.strLoaderClose,{$trigger:this.$ocrFieldZnr}),this.$ocrFieldFd.length>0&&this._events.emit(this.strLoaderClose,{$trigger:this.$ocrFieldFd}),this.unsetError(),this.setError(this.$errorMessageServer)},_getValueFromSuggestionOption(radioOption,cb){"function"==typeof cb&&cb(radioOption.value),this.$searchFieldInput.trigger("input")}})}(jQuery),function($,doT){T.Module.SearchField.ENumber=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$enrFieldInput=this.$ctx.find(".js-searchfield-input"),this.$enrFieldInput.addClass("upercase"),this.$enrFieldInput.on("focusout",ev=>{this.onFocusOutEnrField(ev)})},onFocusOutEnrField(ev){const $currentTarget=$(ev.currentTarget);$currentTarget.val()&&$currentTarget.val($currentTarget.val().toUpperCase())}})}(jQuery,window.doT),function($){T.Module.SearchField.Sparepart=T.createDecorator({start(resolve,reject){return this._events.on("searchDataChange",$.proxy(this.onSearchDataChange,this)),this._parent.start(resolve,reject)},onSearchDataChange(data){"true"==data.searchHide&&this.$ctx.find(".js-hide-search").addClass("hidden")},onKeydownInput(ev){if(13===ev.keyCode)return ev.preventDefault(),this.submitSearch()},onSearchSubmit(ev){if($(ev.currentTarget).find(`[data-t-id='${this.id}']`))return ev.preventDefault(),this.submitSearch()}})}(jQuery),function($){T.Module.SearchInputRebrush.Inline=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$pageBackgroun
7d=this.$ctx.find(".page-background"),this.$searchContent=this.$ctx.find(".search-content"),this.initialMarginBottomValue=parseInt(this.$ctx.css("margin-bottom")),this.$pageBackground.on("click",()=>this.closeSearchLayer()),this.$inputField.on("focus",()=>this.handleInlineInputFieldClick()),this.initFlyoutContent(),resolve},handleInlineInputFieldClick(){this.$suggestLayer.hasClass("active")||(T.Utils.isViewport("desktop")||$("body").addClass("no-scroll"),this.activateSuggestLayer(),this.checkForInputFieldChanges())},activateSuggestLayer(){this.$suggestLayer.addClass("active"),this.$searchContent.removeClass("hidden")},closeSearchLayer(){this.$suggestLayer.hasClass("active")&&($("body").removeClass("no-scroll"),this.$inputField.blur(),this.$ctx.css("margin-bottom",`${this.initialMarginBottomValue}px`),this.$searchContent.addClass("hidden"),this.$suggestLayer.removeClass("active"))}})}(jQuery),function($){T.Module.SearchInputRebrush.Empathy=T.createDecorator({start(resolve){this.$ctx=$(this._ctx),this.$suggestLayer=this.$ctx.find(".suggest-layer"),this.$ctx.on("click",e=>{e.preventDefault(),this.openArchetype()}),this.$ctx.on("keydown",e=>{T.Utils.isKeyEnter(e)&&e.target===this.$suggestLayer[0]&&this.openArchetype()}),resolve()},openArchetype(){window.X.search()}})}(jQuery),function($){T.Module.SearchResultPromotionTeaser.SearchResultPromotionTeaserGCWPE=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.selectors={myProductEdit:".js-myproductedit",myProductTileDetail:".js-myproducttile-detail",editButton:".js-edit-button"},this.$myProductEdit=$(this.selectors.myProductEdit),this.$myProductTileDetail=this.$myProductEdit.find(this.selectors.myProductTileDetail),this.$myProductTileDetailEditButton=this.$myProductTileDetail.find(this.selectors.editButton),this.$editButton=this.$ctx.find(this.selectors.editButton),this.$editButton.on("click",()=>{this.$myProductTileDetailEditButton.trigger("click")}),resolve()}})}(jQuery),function($){T.Module.SideDrawerFlyInLayer.Simple=T.createDecorator({start(resolve,reject){return this.$ctx=$(this._ctx),this.$overlay=this.$ctx.find(".js-fly-in-layer-overlay"),this.$closeBtn=this.$ctx.find(".js-close-button"),this.$closeBtn.on("click",()=>this.hideLayer()),this.$flag=$(".js-fly-in-flag"),this.$flag.on("click",()=>{this.$ctx.addClass("is-open")}),resolve()},hideLayer(){this._events.emit("sidedrawer.close",this.$ctx),this.$ctx.removeClass("is-open"),$("body").removeClass("scroll-disabled"),this.$overlay.addClass("hidden")}})}(jQuery),jQuery,T.Module.SignIn.GoogleRecaptcha=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject)},checkAllowSubmit(allowSubmit,ev,handleSignInAjax,ajaxParams){this._events.emit("googlerecaptcha:validate",{ev:ev,allowSubmit:allowSubmit,handleSignInAjax:handleSignInAjax,ajaxParams:ajaxParams})}}),function($){T.Module.Slide.SlideContentTextMedia=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$contentTextMedia=this.$ctx.find("[data-t-name=ContentTextMedia]");const $images=this.$contentTextMedia.find("img");T.Commons.LazyLoadingInitializer.disableLazyLoading($images)},syncSlide(){if(this._parent.syncSlide(),this.$contentTextMedia.length>0)return this.contentTextMedia=this._sandbox.getModuleById(this.$contentTextMedia.data("t-id")),null!=this.contentTextMedia?this.contentTextMedia.addInitializedListener(()=>this._parent.slideInitialized()):void 0},onBeforeSlideOut(){return this._parent.onBeforeSlideOut(),null!=this.contentTextMedia?this.contentTextMedia.closeMoreLess():void 0}})}(jQuery),jQuery,T.Module.Slide.SlideGeneric=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject)},syncSlide(){return this._parent.syncSlide(),this._parent.slideInitialized()}}),jQuery,T.Module.Slide.SlideImage=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.imageLoaded=!1,this.$image=this.$ctx.find("div.a-image"),this.$imageTag=this.$image.find("img"),T.Commons.LazyLoadingInitializer.disableLazyLoading(this.$imageTag)}
7,syncSlide(){this._parent.syncSlide(),this.imageLoaded=!1,this.$imageTag.length>0?this.$imageTag[0].naturalHeight>1?this.handleImageLoaded():this.$imageTag.on("load",()=>this.handleImageLoaded()):this.handleImageLoaded()},handleImageLoaded(){this.imageLoaded||(this.imageLoaded=!0,this._handleImageLoaded(),this._parent.slideInitialized())},_handleImageLoaded(){}}),function($){T.Module.Slide.SlideImageHires=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$layerSlider=this.$ctx.closest(".slick-slider"),this.lastZoomFactor=1,this.$currentLayer=this.$ctx.closest(".m-layer.is-active"),this.$zoomButtons=this.$currentLayer.find(".js-mediagalleryproduct-zoom-in, .js-mediagalleryproduct-zoom-out"),this.$zoomButtonIn=this.$zoomButtons.eq(0).find("button"),this.$zoomButtonOut=this.$zoomButtons.eq(1).find("button"),this.$imageContainer=this.$ctx.find(".js-mediagalleryproduct-zoomimage"),this.$currentImage=this.$imageContainer.find("img"),this._events.on("viewportChanged",viewport=>this.onViewportChange(viewport))},syncSlide(){if(this._parent.syncSlide(),"image-hires"===this.$ctx.data("media-type")||"image-ocr"===this.$ctx.data("media-type")||"image-hires"===this.$ctx.children().data("media-type")||"image-ocr"===this.$ctx.children().data("media-type"))return this.$zoomButtons.removeClass("hidden")},setupPanzoom(){this.panZoomSettings={disablePan:!0,exponential:!1,minScale:1,$zoomIn:this.$zoomButtons.eq(0),$zoomOut:this.$zoomButtons.eq(1)};const totalZoomSteps=parseInt(this.$imageContainer.data("total-zoomsteps"),10),maxScale=this.$currentImage[0].naturalWidth/this.$currentImage.width();return $.extend(this.panZoomSettings({increment:(maxScale-1)/totalZoomSteps,maxScale:maxScale})),this.$currentImage.panzoom(this.panZoomSettings),this.addPanZoomListeners(),this.$zoomButtonOut.attr("disabled","disabled")},addPanZoomListeners(){const mod=this;return this.$currentImage.on("panzoomchange.mediagallery",$.proxy(mod.onPanZoomChange,mod)),this.$currentImage.on("panzoomstart",$.proxy(function(ev,panzoom){return mod.$currentImage.off("panzoomchange.mediagallery"),mod.onPanZoomChange(ev,panzoom,mod)},mod)),mod.$currentImage.on("panzoomend",$.proxy(function(ev,panzoom){return mod.onPanZoomChange(ev,panzoom,mod),mod.$currentImage.on("panzoomchange.mediagallery",$.proxy(mod.onPanZoomChange,mod))},mod))},resetZoom(destroyPanZoom){if(this.$currentImage&&this.$currentImage.panzoom&&"function"==typeof this.$currentImage.panzoom&&(this.$currentImage.panzoom("reset"),destroyPanZoom))return this.$currentImage.panzoom("destroy")},onImageLoaded(data){if(data.$currentTarget.closest(this.$ctx))return this.setupPanzoom()},onPanZoomChange(ev,panzoom){const mod=this,matrixData=panzoom.getMatrix(),currentZoomFactorString=matrixData[0];let offsetX=matrixData[4],offsetY=matrixData[5];const currentZoomFactorRoundedString=parseFloat(currentZoomFactorString).toFixed(2),currentZoomFactor=parseFloat(currentZoomFactorRoundedString),maxScaleRounded=parseFloat(panzoom.options.maxScale.toFixed(2));return currentZoomFactor>1?(panzoom.options.disablePan=!1,mod.$zoomButtonOut.removeAttr("disabled"),currentZoomFactor===maxScaleRounded?mod.$zoomButtonIn.attr("disabled","disabled"):mod.$zoomButtonIn.removeAttr("disabled")):(mod.$currentImage.panzoom("resetPan",{animate:!0,silent:!0}),offsetX="0",offsetY="0",panzoom.options.disablePan=!0,mod.$zoomButtonOut.attr("disabled","disabled"),mod.$zoomButtonIn.removeAttr("disabled")),"panzoomend"!==ev.type&&"panzoomchange"!==ev.type||currentZoomFactor!==mod.lastZoomFactor&¤tZoomFactor<=maxScaleRounded&&mod._events.emit("setZoom",{zoomFactor:currentZoomFactor,$ctx:this.$layerSlider.find(".slick-current"),offsetX:offsetX,offsetY:offsetY}),this.lastZoomFactor=currentZoomFactor},onAfterSlideIn(){return this._parent.onAfterSlideIn(),this.resetZoom(!0)},onViewportChange(viewport){return this.resetZoom()}})}(jQuery),function($){T.Module.Slide.SlideImagePanzoomPDP=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.lastZoomFactor=1,this.zoomStep=.3,this.$currentLayer=this.$ctx.closest(".m-layer"),this.$zoomButtons=this.$currentLayer.find(".js-mediagalleryproduct-zoom-in, .js-mediagalleryproduct-zoom-out"),this.$zoomButtonIn=this.$zoomButtons.eq(0).find("button"),this.$zoomButtonOut=this.$zoomButtons.eq(1).find("button"),this.$imageContainer=this.$ctx.find(".js-mediagalleryproduct-zoomimage"),this.$currentImage=this.$imageContainer.find("img"),this.$zoomedin=!1,this._events.on("viewportChanged",viewport=>this.onViewportChange(viewport))}
7,syncSlide(){if(this._parent.syncSlide(),"image-hires"===this.$ctx.data("media-type")||"image-ocr"===this.$ctx.data("media-type")||"image-hires"===this.$ctx.children().data("media-type")||"image-ocr"===this.$ctx.children().data("media-type"))return this.$zoomButtons.removeClass("hidden")},setupPanzoom(){this.panZoomSettings={disablePan:!0,exponential:!1,minScale:1,$zoomIn:this.$zoomButtons.eq(0),$zoomOut:this.$zoomButtons.eq(1)},this.resetZoom(!0);const totalZoomSteps=parseInt(this.$imageContainer.data("total-zoomsteps"),10),maxScale=this.$currentImage[0].naturalWidth/this.$currentImage.width();return $.extend(this.panZoomSettings,{increment:(maxScale-1)/totalZoomSteps,maxScale:maxScale}),this.$currentImage.panzoom(this.panZoomSettings),this.addPanZoomListeners(),this.addPanZoomHoveringListeners(),this.$zoomButtonOut.attr("disabled","disabled")},addPanZoomListeners(){const mod=this;this.$currentImage.on("panzoomchange.mediagallery",$.proxy(mod.onPanZoomChange,mod)),this.$currentImage.on("panzoomstart",$.proxy(function(ev,panzoom){return mod.$currentImage.off("panzoomchange.mediagallery"),mod.onPanZoomChange(ev,panzoom,mod)},mod));let isClicked=!0;return this.$currentImage.on("click touchstart",ev=>{this.setIsTouch(ev)||(1==isClicked?(this.$currentImage.panzoom("zoom"),isClicked=!1,this.$zoomedin=!0,this.$imageContainer.addClass("zoomedIn")):(isClicked=!0,this.resetZoom(),this.$zoomedin=!1,this.$currentImage.removeClass("zoomedIn")))}),this.$imageContainer.on("touchstart",ev=>{this.setIsTouch(ev)||this.resetZoom()}),mod.$currentImage.on("panzoomend",$.proxy(function(ev,panzoom){return mod.onPanZoomChange(ev,panzoom,mod),mod.$currentImage.on("panzoomchange.mediagallery",$.proxy(mod.onPanZoomChange,mod))},mod))},addPanZoomHoveringListeners(){this.$imageContainer.on("mousemove",ev=>{this.setIsTouch(ev)||"mousemove"===ev.type&&this.$zoomedin&&this.zoomOnMousemove(this.$imageContainer,this.$currentImage,ev,!0)})},resetZoom(destroyPanZoom){if(this.$currentImage&&this.$currentImage.panzoom&&"function"==typeof this.$currentImage.panzoom&&(this.$currentImage.panzoom("reset"),destroyPanZoom))return this.$currentImage.panzoom("destroy")},_handleImageLoaded(){return this.setupPanzoom()},onPanZoomChange(ev,panzoom){const mod=this,matrixData=panzoom.getMatrix(),currentZoomFactorString=matrixData[0];let offsetX=matrixData[4],offsetY=matrixData[5];const currentZoomFactorRoundedString=parseFloat(currentZoomFactorString).toFixed(2),currentZoomFactor=parseFloat(currentZoomFactorRoundedString),maxScaleRounded=parseFloat(panzoom.options.maxScale.toFixed(2));return currentZoomFactor>1?(panzoom.options.disablePan=!1,mod.$zoomButtonOut.removeAttr("disabled"),currentZoomFactor===maxScaleRounded?mod.$zoomButtonIn.attr("disabled","disabled"):mod.$zoomButtonIn.removeAttr("disabled")):(mod.$currentImage.panzoom("resetPan",{animate:!0,silent:!0}),offsetX="0",offsetY="0",panzoom.options.disablePan=!0,mod.$zoomButtonOut.attr("disabled","disabled"),mod.$zoomButtonIn.removeAttr("disabled")),"panzoomend"!==ev.type&&"panzoomchange"!==ev.type||currentZoomFactor!==mod.lastZoomFactor&¤tZoomFactor<=maxScaleRounded&&mod._events.emit("setZoom",{zoomFactor:currentZoomFactor,$ctx:this.$ctx,offsetX:offsetX,offsetY:offsetY}),this.lastZoomFactor=currentZoomFactor},onAfterSlideIn(){return this._parent.onAfterSlideIn(),this.setupPanzoom()},onViewportChange(viewport){return this.resetZoom()}})}(jQuery),function($){T.Module.Slide.SlideImagePanzoom=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.lastZoomFactor=1,this.zoomStep=.3,this.$currentLayer=this.$ctx.closest(".m-layer"),this.$zoomButtons=this.$currentLayer.find(".js-mediagalleryproduct-zoom-in, .js-mediagalleryproduct-zoom-out"),this.$zoomButtonIn=this.$zoomButtons.eq(0).find("button"),this.$zoomButtonOut=this.$zoomButtons.eq(1).find("button"),this.$imageContainer=this.$ctx.find(".js-mediagalleryproduct-zoomimage"),this.$currentImage=this.$imageContainer.find("img"),this._events.on("viewportChanged",viewport=>this.onViewportChange(viewport))}
7,syncSlide(){if(this._parent.syncSlide(),"image-hires"===this.$ctx.data("media-type")||"image-ocr"===this.$ctx.data("media-type")||"image-hires"===this.$ctx.children().data("media-type")||"image-ocr"===this.$ctx.children().data("media-type"))return this.$zoomButtons.removeClass("hidden")},setupPanzoom(){this.panZoomSettings={disablePan:!0,exponential:!1,minScale:1,$zoomIn:this.$zoomButtons.eq(0),$zoomOut:this.$zoomButtons.eq(1)},this.resetZoom(!0);const totalZoomSteps=parseInt(this.$imageContainer.data("total-zoomsteps"),10),maxScale=this.$currentImage[0].naturalWidth/this.$currentImage.width();return $.extend(this.panZoomSettings,{increment:(maxScale-1)/totalZoomSteps,maxScale:maxScale}),this.$currentImage.panzoom(this.panZoomSettings),this.addPanZoomListeners(),this.$zoomButtonOut.attr("disabled","disabled")},addPanZoomListeners(){const mod=this;return this.$currentImage.on("panzoomchange.mediagallery",$.proxy(mod.onPanZoomChange,mod)),this.$currentImage.on("panzoomstart",$.proxy(function(ev,panzoom){return mod.$currentImage.off("panzoomchange.mediagallery"),mod.onPanZoomChange(ev,panzoom,mod)},mod)),this.$imageContainer.on("mousemove mouseenter touchstart",ev=>{this.setIsTouch(ev)||("mouseenter"!==ev.type?this.zoomOnMousemove(this.$imageContainer,this.$currentImage,ev):this.zoomOnMousemove(this.$imageContainer,this.$currentImage,ev,!0))}),this.$imageContainer.on("mouseleave touchstart",ev=>{this.setIsTouch(ev)||this.resetZoom()}),mod.$currentImage.on("panzoomend",$.proxy(function(ev,panzoom){return mod.onPanZoomChange(ev,panzoom,mod),mod.$currentImage.on("panzoomchange.mediagallery",$.proxy(mod.onPanZoomChange,mod))},mod))},resetZoom(destroyPanZoom){if(this.$currentImage&&this.$currentImage.panzoom&&"function"==typeof this.$currentImage.panzoom&&(this.$currentImage.panzoom("reset"),destroyPanZoom))return this.$currentImage.panzoom("destroy")},_handleImageLoaded(){return this.setupPanzoom()},onPanZoomChange(ev,panzoom){const mod=this,matrixData=panzoom.getMatrix(),currentZoomFactorString=matrixData[0];let offsetX=matrixData[4],offsetY=matrixData[5];const currentZoomFactorRoundedString=parseFloat(currentZoomFactorString).toFixed(2),currentZoomFactor=parseFloat(currentZoomFactorRoundedString),maxScaleRounded=parseFloat(panzoom.options.maxScale.toFixed(2));return currentZoomFactor>1?(panzoom.options.disablePan=!1,mod.$zoomButtonOut.removeAttr("disabled"),currentZoomFactor===maxScaleRounded?mod.$zoomButtonIn.attr("disabled","disabled"):mod.$zoomButtonIn.removeAttr("disabled")):(mod.$currentImage.panzoom("resetPan",{animate:!0,silent:!0}),offsetX="0",offsetY="0",panzoom.options.disablePan=!0,mod.$zoomButtonOut.attr("disabled","disabled"),mod.$zoomButtonIn.removeAttr("disabled")),"panzoomend"!==ev.type&&"panzoomchange"!==ev.type||currentZoomFactor!==mod.lastZoomFactor&¤tZoomFactor<=maxScaleRounded&&mod._events.emit("setZoom",{zoomFactor:currentZoomFactor,$ctx:this.$ctx,offsetX:offsetX,offsetY:offsetY}),this.lastZoomFactor=currentZoomFactor},onAfterSlideIn(){return this._parent.onAfterSlideIn(),this.setupPanzoom()},onViewportChange(viewport){return this.resetZoom()}})}(jQuery),function($){T.Module.Slide.SlideImageSequencer=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$currentLayer=this.$ctx.closest(".m-layer"),this.$zoomButtons=this.$currentLayer.find(".js-mediagalleryproduct-zoom-in, .js-mediagalleryproduct-zoom-out"),this.$zoomButtonIn=this.$zoomButtons.eq(0).find("button"),this.$zoomButtonOut=this.$zoomButtons.eq(1).find("button"),this.$imageSequencer=this.$ctx.find(".m-imagesequencer"),this.isImageSequencerWithPanzoom=this.$imageSequencer.hasClass("js-mediagalleryproduct-panzoom"),this.$magic360=this.$imageSequencer.find("a.Magic360"),this.magic360Id=this.$magic360.attr("id"),this.slideImageSequencerModule=T.Utils.application._sandbox.getModuleById(this.$ctx.data("t-id"))},syncSlide(){return this._parent.syncSlide(),this._parent.slideInitialized()},onAfterSlideIn(){if(this.$zoomButtonIn.hide(),this.$zoomButtonOut.hide(),"undefined"!=typeof Magic360&&Magic360){this.$imageSequencer.removeClass("stopped-on-last-frame"),setTimeout(()=>{Magic360.start(this.magic360Id),this.isImageSequencerWithPanzoom&&this.slideImageSequencerModule.resetZoom(!0)},50);var frameChecker=setInterval(()=>{this.$magic360.find(".m360-hint").length>0&&(this.$imageSequencer.addClass("stopped-on-last-frame"),this.isImageSequencerWithPanzoom&&(this.$zoomButtonIn.show(),this.$zoomButtonOut.show(),this.slideImageSequencerModule.setupPanzoom()),clearInterval(frameChecker))},10)}this._parent.onAfterSlideIn(),this.slider.setSlickDragEvents(!1)},onBeforeSlideOut(){this.$zoomButtonIn.show(),this.$zoomButtonOut.show(),this.$imageSequencer.removeClass("stopped-on-last-frame"),this._parent.onBeforeSlideOut(),this.slider.setSlickDragEvents(!0)}})}(jQuery),function($){T.Module.Slide.SlidePanzoom=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.lastZoomFactor=1,this.$currentLayer=this.$ctx.closest(".m-layer"),this.$zoomButtons=this.$currentLayer.find(".js-mediagalleryproduct-zoom-in, .js-mediagalleryproduct-zoom-out"),this.$zoomButtonOut=this.$zoomButtons.eq(1).find("button"),this.$zoomButtonIn=this.$zoomButtons.eq(0).find("button"),this.$panzoomObj=this.$ctx.find(".js-mediagalleryproduct-panzoom"),this.$magic360Wrapper=this.$panzoomObj.find("a.Magic360"),this.dragging=!1,this._events.on("viewportChanged",viewport=>this.onViewportChange(viewport))}
7,syncSlide(){this._parent.syncSlide()},addPanZoomListeners(){const mod=this;return this.$panzoomObj.on("panzoomchange.mediagallery",$.proxy(mod.onPanZoomChange,mod)),this.$panzoomObj.on("panzoomstart",$.proxy(function(ev,panzoom){return mod.$panzoomObj.off("panzoomchange.mediagallery"),mod.onPanZoomChange(ev,panzoom,mod)},mod)),this.$ctx.on("mousedown touchstart",ev=>{this.setIsTouch(ev)||(clearTimeout(this.timeoutAfterDragRelease),this.dragging=!0,this.resetZoom())}),$(window).on("mouseup touchend",ev=>{this.setIsTouch(ev)||(clearTimeout(this.timeoutAfterDragRelease),this.timeoutAfterDragRelease=setTimeout(()=>{this.dragging=!1},1e3))}),this.$ctx.on("mousemove mouseenter touchstart",ev=>{this.setIsTouch(ev)||(this.dragging?$(".Magic360-container").removeClass("zoom-in-cursor"):($(".Magic360-container").addClass("zoom-in-cursor"),"mouseenter"!==ev.type?this.zoomOnMousemove(this.$ctx,this.$panzoomObj,ev):this.zoomOnMousemove(this.$ctx,this.$panzoomObj,ev,!0)))}),this.$ctx.on("mouseleave touchstart",ev=>{this.setIsTouch(ev)||this.resetZoom()}),mod.$panzoomObj.on("panzoomend",$.proxy(function(ev,panzoom){return mod.onPanZoomChange(ev,panzoom,mod),mod.$panzoomObj.on("panzoomchange.mediagallery",$.proxy(mod.onPanZoomChange,mod))},mod))},setupPanzoom(){return this.panZoomSettings={disablePan:!0,exponential:!1,minScale:this.$panzoomObj.data("min-scale")||1,$zoomIn:this.$zoomButtons.eq(0),$zoomOut:this.$zoomButtons.eq(1)},this.resetZoom(!0),$.extend(this.panZoomSettings,{increment:this.$panzoomObj.data("zoom-factor")||.3,maxScale:this.$panzoomObj.data("max-scale")||3}),this.$panzoomObj.panzoom(this.panZoomSettings),this.addPanZoomListeners(),this.$zoomButtonOut.attr("disabled","disabled")},onPanZoomChange(ev,panzoom){let mod=this;const matrixData=panzoom.getMatrix();let offsetX=matrixData[4],offsetY=matrixData[5];const currentZoomFactorString=matrixData[0],currentZoomFactorRoundedString=parseFloat(currentZoomFactorString).toFixed(2),currentZoomFactor=parseFloat(currentZoomFactorRoundedString),maxScaleRounded=parseFloat(panzoom.options.maxScale.toFixed(2));return currentZoomFactor>1?(this.$magic360Hint=this.$magic360Wrapper.find(".m360-hint"),this.$magic360Hint.remove(),this.$magic360Wrapper.addClass("no-pointer-events"),currentZoomFactor===maxScaleRounded?mod.$zoomButtonIn.attr("disabled","disabled"):mod.$zoomButtonIn.removeAttr("disabled"),mod.$zoomButtonOut.removeAttr("disabled"),panzoom.options.disablePan=!1):(this.$magic360Wrapper.removeClass("no-pointer-events"),mod.$panzoomObj.panzoom("resetPan",{animate:!0,silent:!0}),offsetX="0",offsetY="0",mod.$zoomButtonIn.removeAttr("disabled"),mod.$zoomButtonOut.attr("disabled","disabled"),panzoom.options.disablePan=!0),"panzoomend"!==ev.type&&"panzoomchange"!==ev.type||currentZoomFactor!==mod.lastZoomFactor&¤tZoomFactor<=maxScaleRounded&&mod._events.emit("setZoom",{zoomFactor:currentZoomFactor,$ctx:this.$ctx,offsetX:offsetX,offsetY:offsetY}),this.lastZoomFactor=currentZoomFactor,this.lastZoomFactor},resetZoom(destroyPanZoom){this.$panzoomObj&&this.$panzoomObj.panzoom&&"function"==typeof this.$panzoomObj.panzoom&&(this.$panzoomObj.panzoom("reset"),destroyPanZoom&&this.$panzoomObj.panzoom("destroy"))},onViewportChange(viewport){return this.resetZoom()},onAfterSlideIn(){this._parent.onAfterSlideIn()}})}(jQuery),jQuery,T.Module.Slide.SlideProductTeaser=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject)},syncSlide(){return this._parent.syncSlide(),this._parent.slideInitialized()}}),jQuery,T.Module.Slide.SlideSelectedPressPicture=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject)},syncSlide(){return this._parent.syncSlide(),this._parent.slideInitialized()}}),jQuery,T.Module.Slide.SlideTeaser=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject)},syncSlide(){return this._parent.syncSlide(),this._parent.slideInitialized()}}),function($){T.Module.Slide.SlideVideo=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$video=this.$ctx.find(".m-video"),this.videoStopReceived=!1,this.$video.data("autoplay",!1),this.$video.removeAttr("data-autoplay"),this.videoViewportAutoPlay=this.$video.data("vp-autoplay"),this.$video.data("vp-autoplay",!1),this.$video.removeAttr("data-vp-autoplay"),this.$video.data("lazyloaded",!0),this.$teasers=this.$ctx.find(".teaser"),this.$counter=$(".m-mediagallery-layer .counter")},syncSlide(){this.$teasers=this.$ctx.find(".teaser"),this.video=this._sandbox.getModuleById(null!=this.$video?this.$video.data("t-id"):void 0),this._events.on("video:loaded",data=>this.onVideoLoaded(data)),this._events.on("video:play",data=>this.onVideoPlay(data)),this._events.on("video:stop",data=>this.onVideoStop(data,!1)),this._events.on("video:pause",data=>this.onVideoStop(data,!0)),this.video.isVideoPlaying()&&this.onVideoPlay({$component:this.$video}
7),this._parent.syncSlide(),this._parent.slideInitialized()},onInitialSlide(){this._parent.onInitialSlide()},onBeforeSlideIn(){this.$counter.hide(),this._parent.onBeforeSlideIn(),this.slider.setPaginationDotsVisibility(this.hasToReEstablishDots()),this.video.ensureLazyLoaded(),this.videoStopReceived=!1},onAfterSlideIn(){this._parent.onAfterSlideIn(),this.videoViewportAutoPlay&&null!==this.video&&void 0!==this.video&&this.video.setViewportAutoplay(!0)},onBeforeSlideOut(){this.$counter.show(),this._parent.onBeforeSlideOut(),this.videoViewportAutoPlay&&null!==this.video&&void 0!==this.video&&this.video.setViewportAutoplay(!1),null!=this.video&&(this.video.videoPause(),this.videoStopReceived&&this.video.isViewportReAutoplay()&&(this.video.videoStreamStop(),this.video.restartStoppedViewportAutoplay(),this.videoStopReceived=!1)),this.slider.setPaginationArrowVisibility(!0),this.slider.setPaginationDotsVisibility(!0)},onVideoLoaded(){},onVideoPlay(data){(null!=data.$component?data.$component[0]:void 0)===(null!=this.$video?this.$video[0]:void 0)&&(this.addClassPlaying(!0),this.setAutoplayAllowed(!1),this.slider.setSlickDragEvents(!1),this.slider.setPaginationDotsVisibility(!1),this.slider.setPaginationArrowVisibility(!1))},onVideoStop(data,pause){if((null!=data.$component?data.$component[0]:void 0)===(null!=this.$video?this.$video[0]:void 0))return this.videoStopReceived=!0,setTimeout(()=>{(null!=this.video?this.video.isVideoPlaying():void 0)||(this.setAutoplayAllowed(!0),this.addClassPlaying(!1),this.slider.setSlickDragEvents(!0),this.slider.setPaginationArrowVisibility(!0),this.slider.setPaginationDotsVisibility(!0))},200)},hasToReEstablishDots(){return!!this.video.hasPosterImage()||!!this.slider.hasDots()},addClassPlaying(displayRemoveClass){this.$ctx.toggleClass("playing",displayRemoveClass)}})}(jQuery),function($){T.Module.StepElement.CompareAddByProductNumber=T.createDecorator({start(resolve){this._parent.start(resolve),this.$ctx=$(this._ctx),this.$searchInput=this.$ctx.find(".js-searchfield-input"),this.ajaxContainer=this.$ctx.find(".js-recommended-products.js-ajax-request"),this.ajaxId=this.ajaxContainer.data("ajaxId"),this.ajaxObj=this.ajaxContainer.data("ajax"),this.$localStorageKey=this.ajaxContainer.data("localstorage-key"),this.setupInputValidation(),this.$cta.on("click",()=>this.addProductToComparison()),resolve()},setupInputValidation(){this.$cta.attr("disabled","disabled");new MutationObserver(mutationList=>{for(const mutation of mutationList){if("attributes"!==mutation.type)return;"true"===mutation.target.getAttribute("data-is-valid")?this.$cta.removeAttr("disabled"):this.$cta.attr("disabled","disabled")}}).observe(this.$searchInput[0],{attributes:!0})},addProductToComparison(){const productCode=this.$searchInput.val(),$productDeatilsContainer=this.$ctx.find(".js-compare-product-details");this.ajaxObj.data["add-compare-product"]=productCode;const request=T.Utils.startAjaxRequest(this.ajaxId,this.ajaxObj);request&&request[0]&&request[0].done(response=>{if(response){const productsinCompare=T.Utils.localStorageGetItem(this.$localStorageKey),productFamily=$productDeatilsContainer.data("productFamily"),currentLocalStorageFamily=T.Utils.localStorageGetItem("product-family");if(Array.isArray(productsinCompare))productFamily==currentLocalStorageFamily?(productsinCompare.push(productCode),T.Utils.localStorageSetItem(this.$localStorageKey,productsinCompare)):(T.Utils.localStorageSetItem(this.$localStorageKey,[productCode]),T.Utils.localStorageSetItem("product-family",productFamily));else if($productDeatilsContainer){const parts=$productDeatilsContainer.data("productUrl").split("/"),productName=$productDeatilsContainer.data("productName"),imageID=parts[parts.length-1].split(".")[0],imageCategory="Product_Shots"===parts[3]?"PRODUCT_SHOT":void 0,productData={productCode:productCode,productName:productName,productImage:{id:imageID,category:imageCategory}};this.addToCompareLocalStorage(productsinCompare,productFamily,productData)}}}),T.Utils.scrollToTop()},addToCompareLocalStorage(existingProductsinCompare,productCategory,productData){existingProductsinCompare&&productCategory&&(existingProductsinCompare.hasOwnProperty(productCategory)||(existingProductsinCompare[productCategory]=[]),existingProductsinCompare[productCategory].push(productData),T.Utils.localStorageSetItem(this.$localStorageKey,existingProductsinCompare))}})}(jQuery),function($){T.Module.StepElement.CompareAddBySimilarity=T.createDecorator({start(resolve){this._parent.start(resolve),this.$ctx=$(this._ctx),this.ajaxContainer=this.$ctx.find(".js-recommended-products.js-ajax-request"),this.ajaxId=this.ajaxContainer.data("ajaxId"),this.ajaxObj=this.ajaxContainer.data("ajax"),this.$addBySimilarityButton=this.$ctx.find(".js-add-by-similarity"),this.$addBySimilarityButton.on("click",()=>this.addProductToComparison()),resolve()},addProductToComparison(){T.Utils.startAjaxRequest(this.ajaxId,this.ajaxObj),T.Utils.scrollToTop()}})}(jQuery),function($){T.Module.Table.SearchableTableList=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),T.Utils.allSynced=!1,this._selector={rowLink:".js-link",telephoneLink:".js-call",paginationPrev:".js-prev",paginationNext:".js-next",headerCells:".js-sort",sortIndicator:".js-sort-indicator",selHiddenSortOrder:".js-sort-order",selHiddenSortColumn:".js-sort-column",selHiddenCurrentPage:".js-current-page"},this._state={sortup:"is-ascending",sortdown:"is-descending"},this.elm={$rowLink:$(this._selector.rowLink,this.$ctx),$hiddenSortOrder:$(this._selector.selHiddenSortOrder,this.$ctx),$hiddenSortColumn:$(this._selector.selHiddenSortColumn,this.$ctx),$hiddenCurrentPage:$(this._selector.selHiddenCurrentPage,this.$ctx)},this.storageNamespace=this.$ctx.data("storageNamespace"),this._events.on("t.sync",()=>this.sync()),this.$ctx.on("click",this._selector.rowLink,ev=>this.onClickOnARow(ev)),this.$ctx.on("click",this._selector.telephoneLink,ev=>this.onClickOnATelephoneLink(ev)),this.$ctx.on("click",this._selector.paginationPrev,ev=>this.onGoingToPreviousTablePage(ev)),this.$ctx.on("click",this._selector.paginationNext,ev=>this.onGoingToNextTablePage(ev)),this.$ctx.on("click",this._selector.headerCells,ev=>this.onClickHeader(ev)),this.$ctx.on("morecontenttogglelink.contentUpdate",ev=>this.onUpdateTableData(ev)),this.$ctx.on("searchableTableList.updateTableData",ev=>this.onUpdateTableData(ev)),this.$ctx.on("searchableTableList.updateTableDataWithFilters",ev=>this.updateTableDataWithFilters(ev)),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0)},startAjaxRequest:ev=>(T.Utils.onAjaxControllerTriggered(ev,!0),!1),onClickOnARow(ev){ev.preventDefault(),ev.stopPropagation();const url=$(ev.currentTarget).data("details-url");
7this.persistCurrentTableState(url),window.location.href=url},onClickOnATelephoneLink(ev){ev.stopImmediatePropagation()},onGoingToPreviousTablePage(ev){const page=parseInt(this.elm.$hiddenCurrentPage.val())-1;this.elm.$hiddenCurrentPage.val(page),this.startAjaxRequest(ev)},onGoingToNextTablePage(ev){const page=parseInt(this.elm.$hiddenCurrentPage.val())+1;this.elm.$hiddenCurrentPage.val(page),this.startAjaxRequest(ev)},onClickHeader(ev){const $headcolumn=$(ev.currentTarget),ascending=$headcolumn.hasClass("is-ascending");$(this._selector.headerCells).removeClass(`${this._state.sortup} ${this._state.sortdown}`);const sortColumn=$headcolumn.data("sortcolumn");this.elm.$hiddenSortColumn.val(sortColumn),this.elm.$hiddenCurrentPage.val("1"),ascending?($headcolumn.addClass(this._state.sortdown),$headcolumn.removeClass(this._state.sortup),this.elm.$hiddenSortOrder.val("DESCENDING")):($headcolumn.addClass(this._state.sortup),$headcolumn.removeClass(this._state.sortdown),this.elm.$hiddenSortOrder.val("ASCENDING")),this.startAjaxRequest(ev)},onUpdateTableData(ev){this.elm.$hiddenCurrentPage.val("1"),this.startAjaxRequest(ev)},updateTableDataWithFilters(ev){const preSelectedFilters=JSON.parse(sessionStorage.getItem(this.storageNamespace));preSelectedFilters&&preSelectedFilters.table.length&&(preSelectedFilters.table[0].currentPage&&this.elm.$hiddenCurrentPage.val(preSelectedFilters.table[0].currentPage),preSelectedFilters.table[0].sortColumn&&this.elm.$hiddenSortColumn.val(preSelectedFilters.table[0].sortColumn),preSelectedFilters.table[0].sortOrder&&this.elm.$hiddenSortOrder.val(preSelectedFilters.table[0].sortOrder),this.startAjaxRequest(ev))},activateScrolling(){},deactivateScrolling(){},checkWidth(){},createFixedHead(){},setupDOMReferences(){},setupFixedHead(){},setupScrollable(){},setupStatic(){},setFixedPosition(){},syncPinnedFixedWidth(){},syncRowHeight(){},syncScrollableFixedWidth(){},onRecalc(){},onResize(){},persistCurrentTableState(url){let selectedFilters;$(document.getElementsByClassName(this.$ctx.data("filter-selector"))).trigger("searchabletablelist.saveFilter"),(selectedFilters=null!=sessionStorage.getItem(this.storageNamespace)?JSON.parse(sessionStorage.getItem(this.storageNamespace)):{text:[],date:[],table:[]}).table.push({currentPage:this.elm.$hiddenCurrentPage.val(),sortColumn:this.elm.$hiddenSortColumn.val(),sortOrder:this.elm.$hiddenSortOrder.val(),navigationOutUrl:url}),sessionStorage.setItem(this.storageNamespace,JSON.stringify(selectedFilters))}})}(jQuery),function($){T.Module.Tabs.Static=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.isHeaderOne=$(".o-header").length>0,this.isHeaderRebrush=$(".o-headerrebrush").length>0,this._parent.sync=$.proxy(this,"sync"),this._parent.setupTabs=$.proxy(this,"setupTabs"),this.elm={$activeTabLink:this.$tabs.find(".is-active")},this.$tabSticky=this.$ctx.find(".js-tabs-sticky"),this.$tabStatic=this.$ctx.find(".js-tabs-static"),this.$tabCtcWrapper=this.$ctx.find(".js-tabs-sticky-ctc-wrapper"),this.$stickyCartButton=this.$ctx.find(".tabs-sticky-ctc-wrapper .js-add-to-basket"),$(window).on("resize load",ev=>this.onWindowResizeTabsWrapper(ev)),this.isHeaderOne&&$(window).on("scroll",T.Utils.debounce(()=>this.onWindowScroll(),50)),this._events.on("headerOpen",$.proxy(this.onHeaderOpen,this)),T.Utils.allSynced=!1,this.isSynced=!1},sync(){this.isSynced||(this.setupTabs(),this.isSynced=!0,this.isHeaderRebrush&&this.$ctx.hasClass("js-is-sticky")&&this.makeStickyForHeaderRebrush(),T.Utils.allSynced=!0)},setupTabs(){this.$ctx.on("click",".tab-more",this._parent.onClickTabMore),this._events.on("reArrangeTabs",this._parent.arrangeTabs),this.arrangeTabs(),T.Utils.startAddModule=!0,$(window).on("resize load",this._parent.onWindowResize);const $tab=this.elm.$activeTabLink;$tab.length&&$tab.data("jump-to")&&T.Utils.scrollToTop($tab.offset().top)},onWindowScroll(){const scrollTop=$(window).scrollTop(),$headerNavSticky=$(".nav-sticky"),$findwrapperHeight=this.$tabSticky.find(".tabs-wrapper").outerHeight(),$tabStaticHeight=this.$tabStatic.outerHeight();if(this.$tabStatic.length){const $outOfTabOffsetCheck=$tabStaticHeight+this.$tabStatic.offset().top;$headerNavSticky.hasClass("is-active")?(this.$tabSticky.css("transform",`translateY(${$headerNavSticky.outerHeight()}px)`),this.$tabSticky.addClass("animate-out"),scrollTop<=this.$tabStatic.offset().top?(this.$tabSticky.css("transform","translateY(0px)"),this.$tabSticky.removeClass("is-fixed"),this.$tabSticky.removeClass("animate-out"),this.$tabStatic.css("padding-top","0px")):scrollTop<$outOfTabOffsetCheck&&(this.$tabSticky.addClass("is-fixed"),this.$tabStatic.css("padding-top",$findwrapperHeight+"px"))):(this.$tabSticky.css("transform","translateY(0px)"),scrollTop>=this.$tabStatic.offset().top?(this.$tabSticky.addClass("is-fixed"),this.$tabSticky.css("max-width",this.$tabStatic.outerWidth()+"px"),this.$tabStatic.css("padding-top",$findwrapperHeight+"px")):(this.$tabSticky.removeClass("is-fixed"),this.$tabStatic.css("padding-top","0px")))}},onHeaderOpen(){this.$tabSticky.removeClass("is-fixed")},makeStickyForHeaderRebrush(){T.Utils.createController(this.$ctx,"StickynessControllerForHeaderRebrush","")}
7,onWindowResizeTabsWrapper(){if(this.$tabStatic.length){const wantedTabsWrapperWidth=this.$tabStatic.outerWidth()-this.$tabCtcWrapper.outerWidth();this.$ctx.find(".tabs-wrapper").css("width",wantedTabsWrapperWidth-20+"px")}const wantedTabsCtcWrapperHeight=this.$ctx.find(".tabs-wrapper li").outerHeight();this.$tabCtcWrapper.css("min-height",wantedTabsCtcWrapperHeight+"px"),setTimeout(()=>{$(".tab-more").is(":visible")?$(".tab-more").closest(".tabs-nav").addClass("tab-more-visible"):$(".tab-more").closest(".tabs-nav").removeClass("tab-more-visible")},100)}})}(jQuery),function($){T.Module.TabsRebrush.FullWidth=T.createDecorator({start(resolve,reject){return this.$ctx=$(this._ctx),this.$tabsSlider=this.$ctx.find(".tabs-slider"),this.$allTabs=this.$tabsSlider.find(".tab"),this.$dropdownToggle=this.$ctx.find(".js-dropdown-toggle"),this.$dropdownItems=this.$ctx.find(".js-dropdown-item"),this.$tabsDropdown=this.$ctx.find(".tabs-dropdown"),this.isDesktop=T.Utils.isViewport("desktop"),this.$paginationArrows=this.$ctx.find(".tabs-slider-pagination-arrows"),this.$prevArrow=this.$paginationArrows.children(".prev"),this.$nextArrow=this.$paginationArrows.children(".next"),this.sliderPosition=0,this.allTabsWidth=this.$tabsSlider.outerWidth(),this.maxWidth=this.$ctx.find(".tabs-rebrush-desktop").outerWidth(),this.tabWidth=this.$allTabs.first().outerWidth(),this.headerMenu=$(".o-headerrebrush .menu"),this.$headerNavSticky=$(".nav-sticky"),this.isHeaderOne=this.$headerNavSticky.length>0,this.addSmoothScrollBehavior(),this.validateAnchorLinks(),this.initSlider(),this.checkViewport(),this.setDropdownToggleText($(this.$dropdownItems.get(0)).text()),$(window).on("scroll",T.Utils.debounce(()=>{this.determineCurrentTabPosition(),this.observeStickyHeaderOneScrollBehaviour()},50)),this.$dropdownToggle.on("click",()=>this.toggleDropdown()),this.$dropdownItems.on("click",e=>this.onClickDropdownItem(e)),this._events.on("windowWidthChanged",T.Utils.debounce(()=>{this.checkViewport()},50)),this.$allTabs.on("click",()=>this.preventHeaderOneBeingSticky()),this.$dropdownItems.on("click",()=>this.preventHeaderOneBeingSticky()),resolve()},preventHeaderOneBeingSticky(){this.isHeaderOne&&this.$headerNavSticky.data("force-inactive","true")},observeStickyHeaderOneScrollBehaviour(){this.isHeaderOne&&(this.$headerNavSticky.hasClass("is-active")?this.handleScrollUp():this.handleScrollDown())},handleScrollUp(){const headerHeight=this.$headerNavSticky[0].getBoundingClientRect().height;this.$ctx.css("top",`${headerHeight}px`)},handleScrollDown(){this.$ctx.css("top","0")},addSmoothScrollBehavior(){$("html").css("scroll-behavior","smooth")},validateAnchorLinks(){this.validateAnchorLinksDesktop(),this.validateAnchorLinksMobile()},validateAnchorLinksDesktop(){this.$allTabs.each((index,tab)=>{$(`#${tab.dataset.scrollId}`)[0]||($(tab).remove(),this.$allTabs=this.$tabsSlider.find(".tab"))})},validateAnchorLinksMobile(){this.$dropdownItems.each((index,tab)=>{$(`#${tab.dataset.scrollId}`)[0]||($(tab).remove(),this.$dropdownItems=this.$ctx.find(".js-dropdown-item"))})},initSlider(){this.conditonallyRenderPaginationButtons(),this.$nextArrow.on("click",()=>{const newSliderPosition=this.sliderPosition+this.tabWidth,maxSliderPosition=this.allTabsWidth-this.maxWidth;this.sliderPosition=newSliderPosition>maxSliderPosition?maxSliderPosition:newSliderPosition,this.slideSlider()}),this.$prevArrow.on("click",()=>{const newSliderPosition=this.sliderPosition-this.tabWidth;this.sliderPosition=newSliderPosition<0?0:newSliderPosition,this.slideSlider()}),this.determineCurrentTabPosition()},conditonallyRenderPaginationButtons(){this.togglePrevButton(),this.toggleNextButton()},togglePrevButton(){this.sliderPosition?this.$prevArrow.removeClass("hidden"):this.$prevArrow.addClass("hidden")},toggleNextButton(){this.allTabsWidth-this.sliderPosition>this.maxWidth?this.$nextArrow.removeClass("hidden"):this.$nextArrow.addClass("hidden")},slideSlider(){this.$tabsSlider.css("transform",`translateX(-${this.sliderPosition}px)`),this.conditonallyRenderPaginationButtons()},determineCurrentTabPosition(){const tableOfContentsBottomPosition=this.$ctx[0].getBoundingClientRect().bottom,isTableOfContentsSticky=this.$ctx[0].getBoundingClientRect().top<=parseInt(this.$ctx.css("top"),10)+10,$allTabs=this.isDesktop?this.$allTabs:this.$dropdownItems;if(!isTableOfContentsSticky)return $allTabs.removeClass("active"),this.setDropdownToggleText($(this.$dropdownItems.get(0)).text()),void this.setSliderPosition(0);$allTabs.each((index,tab)=>{if($(`#${tab.dataset.scrollId}`)[0].getBoundingClientRect().top>tableOfContentsBottomPosition+10){const $activeTab=$($allTabs[index-1]);return $activeTab.addClass("active"),$activeTab.siblings().removeClass("active"),this.setDropdownToggleText($activeTab.text()),this.setSliderPosition(index-1),!1}if(index===$allTabs.length-1){const $activeTab=$($allTabs[index]);$activeTab.addClass("active"),$activeTab.siblings().removeClass("active"),this.setDropdownToggleText($activeTab.text()),this.setSliderPosition(index)}})},setSliderPosition(tabIndex){const spaceLeft=.65*this.tabWidth,newSliderPosition=this.tabWidth*tabIndex-spaceLeft,maxSliderPosition=this.allTabsWidth-this.maxWidth;this.allTabsWidth<=this.maxWidth?this.sliderPosition=0:(newSliderPosition>Math.abs(maxSliderPosition)?this.sliderPosition=maxSliderPosition:this.sliderPosition=newSliderPosition+spaceLeft?newSliderPosition:0,this.slideSlider())},checkViewport(){this.setStickyOffsetTop(),this.applyScrollMarginTopToAnchors(),T.Utils.isViewport("desktop")?(this.resetSlider(),this.isDesktop=!0):(this.observeHeaderResizeMobile(),this.isDesktop=!1)},applyScrollMarginTopToAnchors(){const scrollMarginTop=this.$ctx.outerHeight()+(this.headerMenu.outerHeight()-1);T.Utils.setAnchorTargetScrollMargin(scrollMarginTop)},resetSlider(){this.sliderPosition=0,this.allTabsWidth=this.$tabsSlider.outerWidth(),this.maxWidth=this.$ctx.find(".tabs-rebrush-desktop").outerWidth(),this.tabWidth=this.$allTabs.first().outerWidth(),this.determineCurrentTabPosition(),this.slideSlider()},setStickyOffsetTop(){this.headerMenu.length&&(T.Utils.isViewport("desktop")?this.$ctx.css("top",this.headerMenu.innerHe
7ight()):this.$ctx.css("top",$(".o-headerrebrush").outerHeight(!0)))},observeHeaderResizeMobile(){if(this.isHeaderOne)return;const header=$(".o-headerrebrush");let prevState=header.hasClass("is-sticky-mobile");new MutationObserver(mutations=>{mutations.forEach(mutation=>{if("class"===mutation.attributeName){const currentState=mutation.target.classList.contains("is-sticky-mobile");prevState!==currentState&&(prevState=currentState,setTimeout(()=>{this.setStickyOffsetTop(),this.applyScrollMarginTopToAnchors()},350))}})}).observe(header[0],{attributes:!0,attributeOldValue:!0,attributeFilter:["class"]})},setDropdownToggleText(text){this.$dropdownToggle.find(".js-dropdown-toggle-text").text(text)},toggleDropdown(){this.$dropdownToggle.toggleClass("open"),this.$tabsDropdown.toggleClass("open"),this.setDropdownMaxHeight()},onClickDropdownItem(e){const $currentTab=$(e.currentTarget);this.setDropdownToggleText($currentTab.text()),this.toggleDropdown()},setDropdownMaxHeight(){const maxAvailableHeight=window.innerHeight-(this.$dropdownToggle.outerHeight()+this.headerMenu.outerHeight());this.$tabsDropdown.css("max-height",maxAvailableHeight)}})}(jQuery),function($){T.Module.Teaser.Navigation=T.createDecorator({start(resolve){return this._parent.start(resolve),this.navigationUrl=window.location.href,this.isSynced=!1,this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,this.isWarrantyUrl())},isWarrantyUrl(){if(this.navigationUrl.includes("?teaser-code")){let warrantyId="#"+this.navigationUrl.substring(this.navigationUrl.lastIndexOf("=")+1);T.Utils.scrollToTop($(warrantyId))}}})}(jQuery),jQuery,T.Module.Togglebox.IUMTogglebox=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Utils.allSynced=!0)}}),function($){T.Module.Header.Sticky=T.createDecorator({lastScrollTop:0,start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$headerElements=this.$(".header-elements"),this.$sticky=this.$(".nav-sticky"),this.scrollSticky="scroll.sticky",this.resizeSticky="resize.sticky",this.$stickyElements=this.$sticky.find(".nav-sticky-elements"),this.$originalNavMain=this.$(".m-navmain"),this.stickyHeaderDisabled=!1,this.setupSticky(),$(window).on(this.scrollSticky,T.Utils.debounce($.proxy(this.onWindowScroll,this),50)),$(window).on(this.resizeSticky,$.proxy(this.onWindowResize,this)),this.calculateNavMainWidth(),this.lastScrollTop=$(window).scrollTop(),this._events.on("header:disable-sticky",$.proxy(this.onDisableStickyHeader,this)),this._events.on("header:temporarily-turnoff-sticky",$.proxy(this.onTemporarilyTurnOffStickyHeader,this))},sync(){},calculateNavMainWidth(){const $navMain=this.$stickyElements.find(".m-navmain");if($navMain.length){if(T.Utils.isViewport("desktop")){const $otherStickyElements=$navMain.siblings();let navMainMaxWidth=Math.floor(this.$stickyElements.width());return $otherStickyElements.each(function(){return navMainMaxWidth-=Math.ceil($(this).outerWidth(!0))}),(navMainMaxWidth-=1)>$navMain.find(".first-level")[0].scrollWidth&&(navMainMaxWidth=""),$navMain.css({width:navMainMaxWidth})}return $navMain.css({width:""})}},setupSticky(){this.$(".m-navmain").clone().find(".second-level").remove().end().appendTo(this.$stickyElements),this.$stickyElements.find(".a-totop").appendTo(this.$stickyElements);const $clonedConversionBar=this.$(".conversion-bar").clone();return $clonedConversionBar.children().each((i,e)=>$(e).removeAttr("data-t-id")),$clonedConversionBar.appendTo(this.$stickyElements),$clonedConversionBar.find('[data-replace-container="cart_flyout"]').remove(),$clonedConversionBar.find(".m-conversionbar").attr("data-cloned",!0),this._sandbox.addModules($clonedConversionBar[0]),this.$stickyElements.find(".js-mobile-menu-toggle").on("click",$.proxy(this.onClickMobileMenuToggle,this)),this.$stickyElements.find(".m-navmain .first-level > li > .a-link").on("click",$.proxy(this.onClickMenuEntry,this)),this.$stickyElements.find(".conversion-bar [data-popover-id]").on("click",$.proxy(this.onClickConversionBarPopoverTrigger,this)),this.$stickyElements.find(".js-search").on("click",$.proxy(this.onClickSearchTrigger,this))},onClickConversionBarPopoverTrigger:ev=>(T.Utils.scrollToTop(),ev.preventDefault()),onClickMenuEntry(ev){const mod=this,$trigger=$(ev.currentTarget);if($trigger.data("id"))return T.Utils.scrollToTop(mod.$originalNavMain,()=>mod._events.emit("navmain:open-flyout",{id:$trigger.data("id")||null})),ev.preventDefault()},onClickMobileMenuToggle(ev){const mod=this;return T.Utils.scrollToTop(mod.$originalNavMain,()=>mod._events.emit("navmain:open-mobile-menu")),ev.preventDefault()},onClickSearchTrigger(ev){const mod=this;return T.Utils.scrollToTop(()=>mod._events.emit("toggleSearchForm",{isSearchActive:!0})),ev.preventDefault()},onDisableStickyHeader(){this.$sticky.remove(),$(window).off(this.scrollSticky),$(window).off(this.resizeSticky)},onTemporarilyTurnOffStickyHeader(conf){const turnOffTime=conf&&void 0!==conf.howLongShouldItBeDisaled?conf.howLongShouldItBeDisaled:250;this.stickyHeaderDisabled=!0,this.$sticky.removeClass("is-active"),setTimeout(()=>{this.stickyHeaderDisabled=!1},turnOffTime)},onWindowResize(ev){return this.calculateNavMainWidth()},onWindowScroll(ev){const scrollTop=$(window).scrollTop();return this.stickyHeaderDisabled?this.lastScrollTop=scrollTop:this.$sticky.data("force-inactive")?(this.$sticky.removeData("force-inactive"),this.$sticky.removeClass("is-active"),this.lastScrollTop=scrollTop):("top"===T.Utils.getOffScreenDirection(this.$headerElements)&&scrollTop-this.lastScrollTop<0?(this.$sticky.hasClass("is-active")||this.calculateNavMainWidth(),this.$sticky.addClass("is-active")):this.$sticky.removeClass("is-active"),this.lastScrollTop=scrollTop)}})}(jQuery),function($){T.Module.Layout.CloseOnScroll=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),$(window).on("scroll",T.Utils.handleThrottleEvent(()=>this.closePopoversOnScroll(),100))},closePopoversOnScroll(){const allPopover=window.popoverConfiguration;let openPopover;for(var key in allPopover)if(allPopover.hasOwnProperty(key)){var popover=allPopover[key];popover.popover&&popover.popover.opened&&(openPopover=popover)}const elementDimension=openPopover&&openPopover.popover&&openPopover.popover._ctx.getBoundingClientRect();elementDimension&&elementDimension.bottom>0&&elementDimension.top-window.innerHeight<0||openPopover&&openPopover.popover.closePopover()}})}(jQuery),function($){T.Module.Layout.EnergyLabel=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),T.Utils.allSynced=!1,this.isEnergyLabelSynced=!1,this.$ctx=$(this._ctx),this._events.on("t.sync",()=>this.energyLabelSync())},energyLabelSync(){this.isEnergyLabelSynced||(this.isEnergyLabelSynced=!0,T.Utils.allSynced=!0,this.renderProductCodeEnergyLabel())}
7,renderProductCodeEnergyLabel(){const $productCodes=this.$ctx.find(".js-product-code-energy-label");if(!$productCodes.length)return;let productCodeString="";$.each($productCodes,(index,value)=>{const productCode=$(value).data("product-code");-1===productCodeString.indexOf(productCode)&&(""!==productCodeString&&(productCodeString+=","),productCodeString+=productCode)});const ajaxUrl=this.$ctx.data("product-code-energy-label").ajaxUrl,request=T.Utils.startAjaxRequest(!1,{url:ajaxUrl,dataType:"JSON",data:{productCodes:productCodeString}});if(!request)return!1;request[0].done(result=>{const energyLabelResult=result.result;for(let key in energyLabelResult){const $productCodeContainers=$productCodes.filter(`[data-product-code="${key}"]`);energyLabelResult[key].forEach(energyLabel=>{this.appendEnergyLabelHtml(energyLabel,$productCodeContainers)})}})},appendEnergyLabelHtml(energyLabel,$productCodeContainers){const $newEnergyLabel=$("<span>");if($newEnergyLabel.addClass("energy-label"),energyLabel.energyLabel){const $imageLink=$("<a>");$imageLink.addClass("a-link"),$imageLink.prop("href",energyLabel.energyLabel);const $image=$("<img>");$image.addClass("energy-label-image"),$image.prop("src",energyLabel.energyLabelIcon),$imageLink.append($image),$newEnergyLabel.append($imageLink)}if(energyLabel.energyDatasheet){const $datasheetLink=$("<a>");$datasheetLink.addClass("a-link"),$datasheetLink.prop("href",energyLabel.energyDatasheet),$datasheetLink.prop("title",energyLabel.energyDatasheetLinkText),$datasheetLink.append(energyLabel.energyDatasheetLinkText),$newEnergyLabel.append($datasheetLink)}if((energyLabel.energyLabel||energyLabel.energyDatasheet)&&$productCodeContainers.append($newEnergyLabel),energyLabel.energyClassRange){const $energyClassRange=$("<span>");$energyClassRange.addClass("energy-label-class-range"),$energyClassRange.append(energyLabel.energyClassRange),$productCodeContainers.append($energyClassRange)}}})}(jQuery),function($){T.Module.Layout.ForwardingOverlay=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.config=this.$ctx.data("forwardingoverlay"),this.ajaxUrl=this.config.ajaxUrl,this._events.on("t.sync",()=>this.sync())},sync(){this.isSynced||(this.onLoad(),this.isSynced=!0,T.Utils.allSynced=!0,T.Utils.modulesSynced())},onLoad(){this.verifyLayerVisibility()&&this.requestLayer()},requestLayer(){return this.$ctx.find('[data-replace-container="forwardingOverlay"]').length||this.$ctx.append("<div data-replace-container='forwardingOverlay'></div>"),T.Utils.startAjaxRequest(!1,{url:this.ajaxUrl,method:"GET",dataType:"html",dataRendering:!0}
7)[0].fail(msg=>console.info(msg))},verifyLayerVisibility(){return!!this.ajaxUrl}})}(jQuery),function($){T.Module.Layout.Tooltip=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),T.Utils.allSynced=!1,this.isToolTipSynced=!1,this.$ctx=$(this._ctx),this._events.on("t.sync",()=>this.tooltipSync())},tooltipSync(){this.isToolTipSynced||(this.isToolTipSynced=!0,T.Utils.allSynced=!0,$(document).on("mouseenter","[data-tooltip]",$.proxy(this.onEnterTooltipTrigger,this)),$(document).on("mouseleave","[data-tooltip]",$.proxy(this.onLeaveTooltipTrigger,this)))},onEnterTooltipTrigger(ev){const $trigger=$(ev.currentTarget);return this._events.emit("tooltip:open",{$trigger:$trigger})},onLeaveTooltipTrigger(ev){const $trigger=$(ev.currentTarget);return this._events.emit("tooltip:close",{$trigger:$trigger})}})}(jQuery),function($){T.Module.Layout.Tracking=T.createDecorator({ATTRIBUTE_DATA_EVENT_TRACKING:"data-eventtracking",LOG_TYPE_INFO:"info",LOG_TYPE_WARN:"warn",LOG_TYPE_ERROR:"error",start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.defaults={trackingSelector:"["+this.ATTRIBUTE_DATA_EVENT_TRACKING+"]",debounceEventsTime:1e3,eventNamespace:".tracking",isDev:!0},this.configuration=$.extend(this.defaults,this.$ctx.data()),this.delayProcessEventTimeoutInMs=0,this.delayProcessEventTimeoutId=!1,this.lastMilestoneTimestamp={},this._events.on("video:position",data=>this.onVideoPosition(data)),this._events.on("video:play",data=>this.onVideoPlay(data)),this._events.on("video:stop",data=>this.onVideoStop(data)),this._events.on("video:pause",data=>this.onVideoPause(data)),this._events.on("video:skip",data=>this.onVideoSkip(data)),this._events.on("dom:replacement",()=>this.initializeEventTracking()),this._events.on("tracking:page-dimensions",function(event){const $body=$("body");let pageDimensions=$body.data("page-dimensions");pageDimensions=$.extend(pageDimensions,event),$body.attr("data-page-dimensions",JSON.stringify(pageDimensions))}),this._events.on("tracking:generic",data=>this.trackValues(data.trackType,data.trackData||{})),this._events.on("extendedbreadcrumb:open",data=>this.onExtendBreadCrumb(data)),this._events.on("sparepartNumberResult",data=>this.onTrackingSparepartnumber(data)),this._events.on("sparePartsSlideChange",data=>this.onTrackingSparepartSlideChange(data)),this.pageLoadDelayers={},this.isPageLoadTrackingDone=!1,this.delayedPrePageLoadTrackingEvents=[],this.initializeEventTracking()},performPageLoadTracking(){let anyDelays=!1;if($.each(this.pageLoadDelayers,(key,value)=>{value||(anyDelays=!0,this.outputConsoleLog(`Tracking is delayed by module #${key}`))}),!anyDelays){if(this.pageLoadTrackingPerformed)return;this.pageLoadTrackingPerformed=!0;const pageDimensions=T.Utils.getPageDimensions();if(jQuery.each(pageDimensions,function(key,value){"boolean"==typeof value&&(pageDimensions[key]=value.toString())}),window.bshEventQueue)this.addToBshEventQueue("pageview",pageDimensions);else var trackingInterval=setInterval(()=>{window.bshEventQueue&&(clearInterval(trackingInterval),this.addToBshEventQueue("pageview",pageDimensions))},250);this.performDelayedPrePageLoadTrackingEvents()}},addToBshEventQueue(trackType,dataValues){window.bshEventQueue=window.bshEventQueue||[],window.bshEventQueue.push({command:"ADD EVENT",name:trackType,data:dataValues})},addToDelayedPrePageLoadTrackingEvents(trackType,dataValues){const message=`Delay tracking Event "${trackType}" with values ${JSON.stringify(dataValues)} until page load tracking is done`;this.outputConsoleLog(message,this.LOG_TYPE_INFO);const trackingObjCfg={trackType:trackType,dataValues:dataValues};this.delayedPrePageLoadTrackingEvents.push(trackingObjCfg)},performDelayedPrePageLoadTrackingEvents(){if(this.isPageLoadTrackingDone)return;this.isPageLoadTrackingDone=!0;jQuery.each(this.delayedPrePageLoadTrackingEvents,(index,trackingObjCfg)=>{this.trackValues(trackingObjCfg.trackType,trackingObjCfg.dataValues)})},delayPageLoadTracking(id){this.pageLoadDelayers[id]=!1},continuePageLoadTracking(id){this.pageLoadDelayers[id]=!0,this.performPageLoadTracking()},initializeEventTracking(){const $elementsRaw=this.$(this.configuration.trackingSelector).filter(":not([tracked])").filter(":not(.js-extend-breadcrumb)");return $.each($elementsRaw,(index,element)=>{const $element=$(element),elementData=this.parseEventTrackingConfigFrom($element);elementData.eventTypeArray=(null!=elementData.eventType?elementData.eventType.split(" "):void 0)||[],0!==elementData.eventTypeArray.length?($element.data("elementData",elementData),$element.attr("tracked",!0),this.bindEvent($element,elementData)):this.outputConsoleLog("No eventType is set",this.LOG_TYPE_WARN)})},onlyOncePerPageLoad($element){const onlyOncePerPageLoad=$element.data("onlyOncePerPageLoad")||!1,eventTrackingDone=$element.data("eventTrackingDone")||!1;return!(!onlyOncePerPageLoad||!eventTrackingDone)||($element.data("eventTrackingDone",!0),!1)},bindEvent($element,elementData){$element.data("onlyOncePerPageLoad",elementData.onlyOncePerPageLoad||!1),"onLoad"===elementData.eventType&&(this.delayProcessEventTimeoutInMs=parseInt($element.attr("data-auto-open-timeout")),this.delayProcessEventTimeoutInMs&&this.delayProcessEventTimeoutInMs>0?this.delayProcessEvent($element):this.processEvent($element));0===elementData.eventType.indexOf("tracking:")?this._events.on(elementData.eventType,event=>{this.processEvent($element,event,!0)}):$.each(elementData.eventTypeArray,(index,event)=>{let func=()=>{this.processEvent($element,null,!0)};func=T.Utils.debounce(func,this.configuration.debounceEventsTime,!0),$element.on(event+this.configuration.eventNamespace,func)})},delayProcessEvent($element){this.resetDelayProcessEventTimeoutId(),this.delayProcessEventTimeoutId=setTimeout(()=>{this.processEvent($element)},this.delayProcessEventTimeoutInMs)},resetDelayProcessEventTimeoutId(){this.delayProcessEventTimeoutId&&(clearTimeout(this.delayProcessEventTimeoutId),this.delayProcessEventTimeoutId=!1)},processEvent($element,overrideDataValues,doOnlyOncePerPageLoad){if(doOnlyOncePerPageLoad&&this.onlyOncePerPageLoad($element))return;const elementData=this.parseEventTrackingConfigFrom($element);let statusValue=!0;if(elementData){if("product compare interaction"===elementData.trackType&&(statusValue=$element.is(":checked")),statusValue){let dataValues=this.fetchElementValues(elementData.dataValues,$element);if(null!=overrideDataValues&&(dataValues=$.extend(dataValues,overrideDataValues)),null!=dataValues)if(null!=elementData.listener&&elementData.listener.length>0){if(null!=this.listeners){let callbacks=this.listeners[elementData.listener];if(null!=callbacks)for(const callback of callbacks)callback($element,elementData,dataValues)}}else this.trackValues(elementData.trackType,dataValues)}}else this.outputConsoleLog("No dataValues are found on the Element",this.LOG_TYPE_WARN)},fetchElementValues(dataValues,$element,onlyReturnValue){let trackingValue,value,noKeyReturn;null==onlyReturnValue&&(onlyReturnValue=!1);const helperObj={};let abortTracking=!1;for(let key in dataValues){if(value=dataValues[key],trackingValue=null,"getValue"===key)trackingValue=this.getValue(value,$element,dataValues.key);else if("getValueById"===key)trackingValue=this.getValueBySelector(value,$element,value.key);else if("getAdditionalObjByRadioSelector"===key)trackingValue=this.getValueBySelector(value,$element,value.key),noKeyReturn=!0;else if("filterInitialValue"===key)abortTracking=!this.filterInitialValue(value,$element,value);else if("getCheckboxChecked"===key)trackingValue=this.getCheckboxChecked($element,value);else if("triggerFormSubmitEvent"===key)this.triggerFormSubmitEvent($element),abortTracking=!0;else if("key"===key);else if(Array.isArray(value)){trackingValue={key:key,value:[]};for(let subObject of Array.from(value)){var subValue;subValue="string"!=typeof subObject&&"number"!=typeof subObject&&"boolean"!=typeof subObject?this.fetchElementValues(subObject,$element):subObject,trackingValue.value.push(subValue)}}else trackingValue="object"==typeof value?{key:key,value:this.fetchElementValues(value,$element,!0)}:{key:key,value:value};if(null!==trackingValue&&(noKeyReturn?$.extend(helperObj,trackingValue.value):helperObj[key]instanceof Array?helperObj[key].push(trackingValue.value):helperObj[trackingValue.key]=trackingValue.value),abortTracking)return}return onlyReturnValue&&trackingValue?trackingValue.value:helperObj},getValue(valueType,$element,key){let valueAction={};valueType||(valueType="");const valueTypeLowerCase=valueType.toLocaleLowerCase();let trackingValue="";return"function"==typeof(valueAction={href:()=>trackingValue=$element.closest("a").attr("href"),input(){let inputValue;return inputValue=$element.is("input")?$element.val():$element.find("input").val(),trackingValue=inputValue},select(){let optionValue=$element.find("option:selected").attr("value");return optionValue||(optionValue=$element.find("option:selected").text()),trackingValue=optionValue},selectdata(){let $targetElement=$element;"checkbox"!==$element.attr("type")&&($targetElement=$element.find("option:selected"));let optionValue=$targetElement.attr("data-track-value");return optionValue||(optionValue=$targetElement.attr("value")),trackingValue=optionValue},status(){let statusValue=$element.is(":checked");return"dealer_locator_filter_interaction"===key&&(statusValue=statusValue?"enable":"disable"),trackingValue=statusValue},enablestatus(){const statusValue=$element.is(":checked");return trackingValue=statusValue?"enable":"disable"},name:()=>trackingValue=$element.attr("name"),text:()=>trackingValue=$element.text(),hasclass:()=>trackingValue=$element.hasClass("teaser-is-selected"),rangeslider_lower:()=>trackingValue=$element.find(".rangeslider-value-lower").val(),rangeslider_upper:()=>trackingValue=$element.find(".rangeslider-value-upper").val(),rangeselect_lower(){trackingValue="checkbox"===$element.attr("type")?$element.attr("data-minvalue"):$element.find("option:selected").attr("data-minvalue")},rangeselect_upper(){trackingValue="checkbox"===$element.attr("type")?$element.attr("data-maxvalue"):$element.find("option:selected").attr("data-maxvalue")},radiodata(){let additionalTrackingValues=$element.filter("input[type=radio]:checked").data("additional-trackingvalues");return trackingValue=additionalTrackingValues}})[valueTypeLowerCase]?valueAction[valueTypeLowerCase]():this.outputConsoleLog(valueType+" is no valid value, please proof the value of valueType",this.LOG_TYPE_WARN),{key:key||valueType,value:trackingValue}},getValueBySelector(data,$element,key){for(let selector in data)if("key"!==selector)return this.getValue(data[selector],$(selector),key)},triggerFormSubmitEvent:$element=>$element.closest("form").find("input").trigger("formSubmit"),getCheckboxChecked:($element,key)=>({key:key,value:$element.is(":checked")?"checked":"unchecked"}),filterInitialValue:(data,$element,initialValue)=>"checkbox"===$element.prop("type")&&$element.is(":checked")!==initialValue,replaceEscapingChar($element){let eventTrackingString=$element.attr(this.ATTRIBUTE_DATA_EVENT_TRACKING)||"";return eventTrackingString=(eventTrackingString=(eventTrackingString=eventTrackingString.replace(/dataValues":\[\\{/,'dataValues":[{')).replace(/\[\/{/,"[{")).replace(/}\/\]/,"}]")},parseEventTrackingConfigFrom($element){const eventTrackingString=this.replaceEscapingChar($element);return""===eventTrackingString?null:JSON.parse(eventTrackingString)},trackValues(trackType,dataValues,ignoreDelaying){if(trackType&&dataValues&&0!==dataValues.length)if(this.isPageLoadTrackingDone||ignoreDelaying)if(window.bshEventQueue)this.addToBshEventQueue(trackType,dataValues);else var trackingIntervalValues=setInterval(()=>{window.bshEventQueue&&(clearInterval(trackingIntervalValues),this.addToBshEventQueue(trackType,dataValues))},250);else this.addToDelayedPrePageLoadTrackingEvents(trackType,dataValues);else this.outputConsoleLog("Tracking Event on this element is not val
7id, check data-attribute values",this.LOG_TYPE_WARN)},outputConsoleLog(message,type){let color;switch(type){case this.LOG_TYPE_WARN:color="Tomato";break;case this.LOG_TYPE_ERROR:color="Red";break;default:color="Green"}this.configuration.isDev&&console.info(`%c${message}`,`color:${color}`)},isMilestoneValidByTimestamp(videoComponent){if(!this.isPlayerTypeWantedToCheck(videoComponent))return!0;const current=this.createMilestoneTimestamp(videoComponent),last=this.getLastMilestoneTimestamp(videoComponent),timestampDiff=Math.abs(current.timestamp-last.timestamp),positionDiff=Math.abs(current.position-last.position);return Math.abs(timestampDiff-positionDiff)<=1.5},isPlayerTypeWantedToCheck:videoComponent=>!1!==({cliplister:!0,Vimeo:!0}[videoComponent.getPlayerType()]||!1),getLastMilestoneTimestamp(videoComponent){const moduleId=videoComponent.getTId();return this.lastMilestoneTimestamp[moduleId]||this.createMilestoneTimestamp(videoComponent)},setLastMilestoneTimestamp(videoComponent){const moduleId=videoComponent.getTId();this.lastMilestoneTimestamp[moduleId]=this.createMilestoneTimestamp(videoComponent)},createMilestoneTimestamp:videoComponent=>({timestamp:Math.floor(Date.now()/1e3),position:videoComponent.getCurrentTime()}),onVideoPosition(data){const tracked=this.getVideoTrackingObject(data);if(!data.component.disableVideoTracking&&null!==tracked)return(()=>{const results=[];for(let milestone of Array.from(tracked.milestones)){let result=void 0;!1===milestone.tracked&&data.position>=milestone.min&&data.position<=milestone.max&&this.isMilestoneValidByTimestamp(data.component)&&(milestone.tracked=!0,this.trackValues("video milestone",{video_name:tracked.videoId,video_duration:tracked.duration,video_autoplay:tracked.autoplay?"YES":"NO",video_milestone:milestone.name,video_player:tracked.player}),result=this.storeVideoTrackingObject(data.$component,tracked)),results.push(result)}return results})()},onVideoPlay(data){return this.trackVideoStateChange(data,"play")},onVideoSkip(data){return this.trackVideoStateChange(data,"skip")},onVideoPause(data){let state="pause";return data.autoPause&&(state="auto-pause"),this.trackVideoStateChange(data,state)},onVideoStop(data){return this.trackVideoStateChange(data,"stop")},trackVideoStateChange(data,stateChange){if(!data.component.disableVideoTracking)return this.setLastMilestoneTimestamp(data.component),this.trackValues("video interaction",{video_name:data.component.getVideoId(),video_time:data.component.getCurrentTime(),video_duration:data.component.getDuration(),video_autoplay:data.component.isTrackingAutoplayEnabled()?"YES":"NO",video_interaction:stateChange,video_player:data.component.getPlayerType(),looping:data.component.isLooping()?"YES":"NO"})},getVideoTrackingObject(data){const{$component:$component}=data,{component:component}=data;if("true"!==$component.attr("tracked")){const duration=component.getDuration();if(isNaN(duration))return;const up25=duration/100*25,up50=duration/100*50,up75=duration/100*75,up95=duration/100*95,tracked={duration:duration,videoId:component.getVideoId(),autoplay:component.isTrackingAutoplayEnabled(),player:component.getPlayerType(),milestones:[{min:3,max:up25,tracked:!1,name:"3sec-25%"},{min:up25,max:up50,tracked:!1,name:"25%-50%"},{min:up50,max:up75,tracked:!1,name:"50%-75%"},{min:up75,max:up95,tracked:!1,name:"75%-95%"},{min:up95,max:duration,tracked:!1,name:"95%-100%"}]};return $component.attr("tracked",!0),$component.data("trackingData",tracked),tracked}return $component.data("trackingData")},storeVideoTrackingObject:($component,trackedData)=>$component.data("trackingData",trackedData),proxyDataEventTracking($source,$targets,eventTypeMapping){const elementData=this.parseEventTrackingConfigFrom($source);elementData&&"string"==typeof elementData.eventType&&-1===elementData.eventType.indexOf("change")&&(eventTypeMapping&&$.each(eventTypeMapping,(source,target)=>{-1!==elementData.eventType.indexOf(source)&&(elementData.eventType=elementData.eventType.replace(source,target))}),$targets.attr(this.ATTRIBUTE_DATA_EVENT_TRACKING,JSON.stringify(elementData)),this.initializeEventTracking())},addTrackingListener(listenerId,callback){null==this.listeners&&(this.listeners={}),null==this.listeners[listenerId]&&(this.listeners[listenerId]=[]),this.listeners[listenerId].push(callback)},onTrackingSparepartSlideChange(data){this.trackValues("spare parts action",{spare_parts_action:data.action})},onTrackingSparepartnumber(data){this.trackValues("spare parts action",{spare_parts_action:data.action,spare_parts_result:data.result,spare_parts_component:data.sparepartnumber})},onExtendBreadCrumb(data){console.log(data);let $breadcrumbComponent=data.$component,breadcrumbEvent=JSON.parse($breadcrumbComponent.attr("data-eventtracking"));this.trackValues(breadcrumbEvent.trackType,{}),"true"!==$breadcrumbComponent.attr("tracked")&&$breadcrumbComponent.attr("tracked",!0)}})}(jQuery),function($){T.Module.List.BricksLayout=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$listLayout=this.$(".list-layout"),this.shouldFirstEnlarge=this.$ctx.data("first-enlarged"),this.updateLater=T.Utils.debounce(()=>{this.update()},300),this.registerListeners(),this.$form=this.$ctx.find("form"),this.formAjaxId=this.$form.data("ajax-id"),this.updateLayout(),this.observeList(),this._events.on("t.sync",this.sync)},sync(){this.updateLater()},observeList(){let observer=new MutationObserver(()=>this.registerListeners());this.$listLayout[0]&&observer.observe(this.$listLayout[0],{childList:!0,subtree:!0})},registerListeners(){this.$img=this.$ctx.find("img"),this.$img.each((index,element)=>{new ResizeObserver((entry,observer)=>{this.updateLater()}).observe(element)}),this._events.on("filterlayerresetbutton:clicked",()=>this.onResetButtonClicked()),this._events.on("filterlayer:filterChanged",()=>this.onResetEnlarged()),$(window).on("resize",()=>{this.update(),this.$listLayout.css("width","")})},update(){if(this.shouldFirstEnlarge){const $items=this.$ctx.find(".js-item");$items.length>0&&$items.first().data("clinker-span",2)}this.updateLayout()},onResetEnlarged(){this.firstEnlarged=!1},onResetButtonClicked(){this.firstEnlarged=!1;T.Utils.startAjaxRequest(this.formAjaxId,{dontSendFormContent:!0},{pageNumber:1})},_onAfterLoadMore(){this._parent._onAfterLoadMore(),this.updateLater()},updateLayout(){let containerWidth=this.$listLayout.width(),columns=1;containerWidth>
7=parseInt(T.Utils.getViewportBreakpoint("md"))&&(columns=2),containerWidth>=parseInt(T.Utils.getViewportBreakpoint("lg"))&&(columns=4);let columnHeights={};for(let i=0;i<columns;i++)columnHeights[i]=0;this.$listLayout.find(".item").each(function(){let item=$(this),itemColumn=0,lowestColumnHeight=-1;for(let i=0;i<columns;i++)(-1===lowestColumnHeight||columnHeights[i]<lowestColumnHeight)&&(lowestColumnHeight=columnHeights[i],itemColumn=i);let itemColumnSpan=item.data("clinker-span");null==itemColumnSpan&&(itemColumnSpan=1),itemColumnSpan>columns&&(itemColumnSpan=columns),itemColumn+itemColumnSpan>columns&&(itemColumn=0);let highest=0;for(let i=itemColumn;i<itemColumn+itemColumnSpan;i++)columnHeights[i]>highest&&(highest=columnHeights[i]);for(let i=itemColumn;i<itemColumn+itemColumnSpan;i++)columnHeights[i]=highest;let columnWidth=containerWidth/columns;item.css("position","absolute"),item.css("width",itemColumnSpan*columnWidth),item.css("left",itemColumn*columnWidth),item.css("top",columnHeights[itemColumn]);let itemHeight=item.height();for(let i=itemColumn;i<itemColumn+itemColumnSpan;i++)columnHeights[i]+=itemHeight;item.addClass("layouted")});let highest=0;for(let i=0;i<columns;i++)columnHeights[i]>highest&&(highest=columnHeights[i]);this.$listLayout.css("height",highest),this.$listLayout.css("min-height",highest)}})}(jQuery),jQuery,T.Module.List.ContentSearch=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject)},getListItems:listResponse=>__guard__(__guard__(null!=listResponse?listResponse.result:void 0,x1=>x1.hits),x=>x.hits),getMaxPageNumber(response){const maxPageNumber=response.result.hits.total/response.request.max;return Math.ceil(maxPageNumber)},getPageNumber(response){const pageNumber=response.request.from/response.request.max;return Math.ceil(pageNumber)+1}}),function($){T.Module.List.FilteredList=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$form=this.$ctx.find("form"),this.formAjaxId=this.$form.data("ajax-id"),this.initialUrl=this.$form.data("current-state-ajax-uri"),this.id=this.$ctx.data("t-id"),this.bodyModule=T.Utils.application.getModuleById($("body").data("t-id")),this._events.on("filter:reset",()=>this.onFilterReset()),this.replaceInitialState(),T.Utils.registerAjaxCallbackAfterSync(this.formAjaxId,result=>this.onAjaxCallFinished(result),"filteredList"),T.Utils.registerPopStateHandler(this.formAjaxId+"-popstate",()=>{this.loadCurrentHistoryState()}),this._events.on("t.sync",()=>this.sync())},sync(){this.isSynced||(this.isSynced=!0,this.renderInitialData(this.formAjaxId,this.initialUrl))},replaceInitialState(){if(null==this.initialUrl)return;const options={state:{currentStateAjaxUri:this.initialUrl}};T.Utils.replaceHistory(options)},onAjaxCallFinished(result){this.scrollToProductInHash(),this.appendProductParameters(),null!=result.response.currentStateAjaxUri&&this.updateCurrentStateAjaxUri(result.response.currentStateAjaxUri)},scrollToProductInHash(){const hashSkus=T.Utils.getHashIds("ProductCode");if(!hashSkus||!Array.isArray(hashSkus)||0===hashSkus.length)return;const sku=hashSkus[0];setTimeout(()=>{const teaser=this.$ctx.find(`.m-productteaser[data-sku='${sku}'],.m-productteaserset[data-sku='${sku}'],.o-producttilerebrush[data-sku='${sku}']`);teaser.length>0&&$("html,body").scrollTop(teaser.offset().top-80);const options={url:window.location.href.split("#")[0]};T.Utils.replaceHistory(options)},500)},appendProductParameters(){var links=this.$ctx.find(".m-productteaser a, .m-productteaserset a");links.off("click.hashupdater"),links.on("click.hashupdater",ev=>{ev.preventDefault();var link=$(ev.currentTarget),teaser=link.closest(".m-productteaser");if(teaser.length>0&&!teaser.is(".m-productteaser-set-item"))this.appendProductTeaserInfoToParameters(teaser);else{var setTeaser=link.closest(".m-productteaserset");setTeaser.length>0&&this.appendProductTeaserInfoToParameters(setTeaser)}link.attr("href")&&link.attr("href").length&&"#"!==link.attr("href")&&("_blank"===link.attr("target")?window.open(link.attr("href"),link.attr("target")):window.location=link.attr("href"))})},appendProductTeaserInfoToParameters(teaser){var sku=teaser.data("sku"),pageNumber=teaser.data("page-number");let ajaxUri="";history.state&&(ajaxUri=history.state.currentStateAjaxUri);const filerCb=name=>"pageNumber"!==name;let ajaxUriParameters=this.getParameters(ajaxUri,filerCb);ajaxUriParameters.push(`pageNumber=${pageNumber}`);let queryParameters=this.getParameters(window.location.href,filerCb);queryParameters.push(`pageNumber=${pageNumber}`);const options={state:{currentStateAjaxUri:ajaxUriParameters.join("&")},url:`?${queryParameters.join("&")}#/ProductCode=${sku}/`};T.Utils.replaceHistory(options)},updateCurrentStateAjaxUri(ajaxUri){let newFilterParameters=this.getParameters(ajaxUri,name=>!("categoryString"===name||"type"===name||"searchTerm"===name)),allParam
7s=this.getParameters(window.location.href,name=>!(0===name.indexOf("f_")||"categoryString"===name||"type"===name||"pageNumber"===name||"sortAttribute"===name||"sortDirection"===name||"additionalSortAttribute"===name||"additionalSortDirection"===name||"searchTerm"===name)).concat(newFilterParameters);allParams=this.removeDuplicates(allParams),allParams=this.removeDuplicatesOfPrefilters(allParams),this.doUpdateState(ajaxUri,"?"+allParams.join("&"))},doUpdateState(ajaxUri,queryString){if(this.currentlyRequesting)return;if(null!=history.state&&history.state.currentStateAjaxUri===ajaxUri)return;const options={state:{currentStateAjaxUri:ajaxUri},url:queryString};noQuery="false","?"==queryString&&(noQuery="true"),T.Utils.replaceHistory(options,noQuery)},getParameters(urlString,filterCb){const keptParameters=[],url=new URL(urlString,location.origin);if(!url.search)return keptParameters;const parameters=url.search.substring(1).split("&");for(let parameter of parameters){let name=parameter.split("=")[0];parameter.length>0&&filterCb(name)&&keptParameters.push(parameter)}return keptParameters},loadCurrentHistoryState(){if(null==history.state)return;if(this.currentlyRequesting)return void(this.restoreStateAgainLater=!0);this.currentlyRequesting=!0;const config={url:history.state.currentStateAjaxUri,method:"GET",dontSendFormContent:!0};T.Utils.startAjaxRequest(this.formAjaxId,config,null,null,()=>{this.currentlyRequesting=!1,this.restoreStateAgainLater&&(this.restoreStateAgainLater=!1,this.loadCurrentHistoryState())})},onFilterReset(){let ajaxUri=history.state.currentStateAjaxUri,remainingParameters=this.getParameters(ajaxUri,name=>!(0===name.indexOf("f_")||"pageNumber"===name||"sortAttribute"===name||"additionalSortAttribute"===name||"additionalSortDirection"===name||"sortDirection"===name));remainingParameters=this.removeDuplicates(remainingParameters);let filterLessUrl=ajaxUri.substring(0,ajaxUri.indexOf("?"))+"?"+remainingParameters.join("&");this.updateCurrentStateAjaxUri(filterLessUrl),this.loadCurrentHistoryState()},removeDuplicates:array=>array.filter(function(item,pos,self){return self.indexOf(item)===pos}),removeDuplicatesOfPrefilters:array=>array.filter(function(item,pos,self){let itemKey=item.substring(0,item.indexOf("=")),itemValue=item.substring(item.indexOf("=")+1);if(0===itemKey.indexOf("f_")){let attr=itemKey.substring(1,itemKey.lastIndexOf("_"));if(-1!==self.indexOf("q"+attr+"="+itemValue))return!1}return!0})})}(jQuery),function($){T.Module.List.FilterTracking=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.id=this.$ctx.data("t-id"),this.bodyModule=T.Utils.application.getModuleById($("body").data("t-id")),this.bodyModule.delayPageLoadTracking(this.id),this.lastProductFilterInteraction="start",this.trackType="product filter interaction",this.trackingData={},this.dealerlayerButtonsRequest=!1,this.formAjaxId=this.$ctx.find("form").first().data("ajax-id"),this.formAjax=this.$ctx.find("form").data("ajax"),this.formAjaxCounter=0,this.orderCount=0,this.orderMap={},this.lastSelectedFilter={},this.promotionFeatureUsed=!1,this.filterTeaserUsed=!1,this._events.on("usefilter:selected",data=>{this.promotionFeatureUsed=!0,this.trackingValue=data.trackingValue}),this._events.on("usefilter:selected",()=>this.filterTeaserUsed=!0),T.Utils.registerAjaxCallbackAfterSync(this.formAjaxId,response=>this.onAjaxAfterProductList(response),"trackingAfterProductList"),T.Utils.getLayout().addTrackingListener("prefilteredList",($element,elementData,dataValues)=>{this.$ctx.has($element).length&&this.onTrackingEvent(elementData,dataValues)}),null!==this.formAjax.followUpRequest&&null!==this.formAjax.followUpRequest.id&&"dealerlayer-integration-buttons"===this.formAjax.followUpRequest.id?(this.dealerlayerButtonsRequest=!0,T.Utils.registerAjaxCallbackAfterSync("dealerlayer-integration-buttons",response=>setTimeout(()=>this.onAjaxAfterDealerLayerIntegration(response),1e3),"trackingAfterDealerLayer")):this.dealerlayerButtonsRequest=!1},onAjaxAfterProductList(response){if(response=response.response,null==this.lastProductFilterInteraction)return;let selectedFiltersTracked=[];if("reset"!==this.lastProductFilterInteraction&&null!==response.selectedFilters){for(let selectedFilter of response.selectedFilters)for(let selectedFilterEntry of selectedFilter.entries){let selectedFilterTracked,productFilterValue=selectedFilterEntry.hasOwnProperty("value");selectedFilterTracked=productFilterValue?{product_filter_category:selectedFilter.attribute,product_filter_value:selectedFilterEntry.value,order:this.orderMap[selectedFilter.attribute+"_"+selectedFilterEntry.value]}:{product_filter_category:selectedFilter.attribute,product_filter_value_min:selectedFilterEntry.minValue,product_filter_value_max:selectedFilterEntry.maxValue,order:this.orderMap[selectedFilter.attribute]},"enable"!==this.lastSelectedFilter.product_filter_interaction&&"change"!==this.lastSelectedFilter.product_filter_interaction||this.lastSelectedFilter.product_filter_category===selectedFilter.attribute&&(this.lastSelectedFilter.product_filter_category=selectedFilter.attribute,productFilterValue?this.lastSelectedFilter.product_filter_value=selectedFilterEntry.value:(this.lastSelectedFilter.product_filter_value_min=selectedFilterEntry.minValue,this.lastSelectedFilter.product_filter_value_max=selectedFilterEntry.maxValue)),selectedFiltersTracked.push(selectedFilterTracked)}selectedFiltersTracked.sort((a,b)=>a.order<b.order?-1:a.order>
7b.order?1:0).forEach(v=>delete v.order)}let resultCountPerPage=null!=response.items?response.items.length:0;this.trackingData={product_filter_interaction:this.lastProductFilterInteraction,product_filter_option_count:null!=response.availableFilters?response.availableFilters.length:0,product_filter_result_count:response.totalResultCount,product_filter_result_count_per_page:resultCountPerPage,product_filter_order:this.orderCount,product_filters:selectedFiltersTracked,product_filter_category:this.lastSelectedFilter.product_filter_category},this.promotionFeatureUsed&&(this.trackingData={...this.trackingData,product_filter_shortcut:this.trackingValue}),this.filterTeaserUsed&&(this.trackingData.product_filter_interaction="enable"),this.lastSelectedFilter.hasOwnProperty("product_filter_value")?this.trackingData.product_filter_value=this.lastSelectedFilter.product_filter_value:(this.trackingData.product_filter_value_min=this.lastSelectedFilter.product_filter_value_min,this.trackingData.product_filter_value_max=this.lastSelectedFilter.product_filter_value_max),this.formAjaxCounter+=1,this.dealerlayerButtonsRequest||(this.trackingData.product_filter_buyable_result_count_per_page=resultCountPerPage,this.formAjaxCounter>1&&T.Utils.getLayout().trackValues(this.trackType,this.trackingData),this.lastProductFilterInteraction=null,this._events.emit("tracking:page-dimensions",this.trackingData),this.formAjaxCounter<=1&&this.bodyModule&&this.bodyModule.continuePageLoadTracking(this.id)),this.promotionFeatureUsed=!1,this.filterTeaserUsed=!1},onAjaxAfterDealerLayerIntegration(response){if(null==this.lastProductFilterInteraction)return;let buttonAddToCart=this.$ctx.find('[data-popover-id ^="add-to-cart"]'),buyableResultCount=0;null!=response.typeGroups&&null!=response.typeGroups.buyButton&&null!=response.typeGroups.buyButton.buttons&&(buyableResultCount=response.typeGroups.buyButton.buttons.length),buttonAddToCart.length>0&&(buyableResultCount=buttonAddToCart.length),this.trackingData.product_filter_buyable_result_count_per_page=buyableResultCount,this.formAjaxCounter>1&&T.Utils.getLayout().trackValues(this.trackType,this.trackingData),this._events.emit("tracking:page-dimensions",this.trackingData),this.formAjaxCounter<=1&&this.bodyModule&&this.bodyModule.continuePageLoadTracking(this.id),this.lastProductFilterInteraction=null},onTrackingEvent(elementData,dataValues){if(this.trackType=elementData.trackType,"reset"===dataValues.product_filter_interaction)this.orderMap={},this.lastSelectedFilter={},++this.orderCount;else{let orderMapKey;orderMapKey=dataValues.hasOwnProperty("product_filter_value")?dataValues.product_filter_category+"_"+dataValues.product_filter_value:dataValues.product_filter_category,this.lastSelectedFilter={product_filter_category:dataValues.product_filter_category,product_filter_interaction:dataValues.product_filter_interaction},"disable"===dataValues.product_filter_interaction?(delete this.orderMap[orderMapKey],dataValues.hasOwnProperty("product_filter_value")?this.lastSelectedFilter.product_filter_value=dataValues.product_filter_value:(this.lastSelectedFilter.product_filter_value_min=dataValues.product_filter_value_min,this.lastSelectedFilter.product_filter_value_max=dataValues.product_filter_value_max)):"enable"===dataValues.product_filter_interaction?this.orderMap[orderMapKey]=++this.orderCount:"change"===dataValues.product_filter_interaction&&null==this.orderMap[orderMapKey]&&(this.orderMap[orderMapKey]=++this.orderCount)}this.lastProductFilterInteraction=dataValues.product_filter_interaction}})}(jQuery),function($){T.Module.List.OnlineDealer=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$img=this.$ctx.find("img"),this.isSynced=!1,this.equalizeHeights=T.Utils.debounce(()=>{this.originalEqualizeHeights()},100),this._events.on("dealerTeaserStart",this.onDealerTeaserAdded.bind(this)),this._events.on("t.sync",()=>this.sync()),this.$img.closest(".js-media").length>0&&this.$img.on("load",()=>this.onImageLoaded())},sync(){this.isSynced||(this.isSynced=!0,this.equalizeHeights())},originalEqualizeHeights(){if(this.$ctx.hasClass("list-rebrush-view"))return;const $itemsWithoutImage=this.$ctx.find('[data-has-no-image="true"]'),$items=this.$ctx.find(".js-item"),matchHeightOptions={byRow:!0,property:"height",target:null};if($itemsWithoutImage.length>0&&$itemsWithoutImage.length!==$items.length){const $oldToEqualize=this.$oldToEqualize||$(),$toEqualize=$items.find(".js-media"),isDifferent=$toEqualize.not($oldToEqualize).length>0;$toEqualize.length>0&&isDifferent&&($oldToEqualize.length>0&&$oldToEqualize.removeMatchHeight(),$toEqualize.registerMatchHeight(matchHeightOptions),$items.addClass("has-equal-height"),$toEqualize.matchHeightElementOrParents(),this.$oldToEqualize=$toEqualize)}(this.$oldToEqualize||[]).length>0&&this.$oldToEqualize.matchHeightElementOrParents();[".shop-title",".js-usp-dealer",".js-product-availability"].forEach(element=>{const $titles=this.$ctx.find(element),$oldTitles=this.$oldTitles||$(),isDifferent=$titles.not($oldTitles).length>0;$titles.length>0&&isDifferent&&($titles.registerMatchHeight(matchHeightOptions),this.$oldTitles=$titles),(this.$oldTitles||[]).length>0&&this.$oldTitles.matchHeightElementOrParents()})},onDealerTeaserAdded(){this.equalizeHeights()},onImageLoaded(){this.equalizeHeights()},onViewportChange(viewport){this._parent.onViewportChange(viewport)}})}(jQuery),function($){T.Module.List.Pagination=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$form=this.$ctx.find("form"),this.formAjaxId=this.$form.data("ajax-id"),this.initialSearchTerm=this.$form.data("initial-search-term"),this.initialAjaxRequest=this.$ctx.data("initial-ajax-request"),this.listLayout=this.$ctx.find(".js-list-layout"),this.listPlpPopover=this.$ctx.find(".js-list-popovers"),this.popoverReplaceContainerId=this.listPlpPopover.data("replace-container"),this.listReplaceContainerId=this.listLayout.data("replace-container"),this.footnotes
7InfoContainerId=this.$ctx.find("[data-replace-container$=footnotes-info-container]").data("replace-container"),this.buttonReplaceContainerIdentifier="request-param_dealer-integration-buttons",this.initialLoad=!0,this.isRebrushPLP=this.$ctx.parents(".o-productlist-rebrush").length>0,this.currentPage={},this.maxPageNumber=1,this.previousViewport=T.Utils.getViewport(),this.loadTemplates(),this.registerListeners(),this.initialAjaxRequest&&T.Utils.startAjaxRequest(this.formAjaxId,null,{pageNumber:"1",searchTerm:this.initialSearchTerm})},registerListeners(){this._events.on("viewportChanged",viewport=>this.paginationOnViewportChanged(viewport)),T.Utils.registerAjaxCallbackAfterSync(this.formAjaxId,result=>this.paginationOnAjaxCallFinished(result),"pagination")},loadTemplates(){this.paginationTemplate=doT.template(this.$(".pagination-template").html()),this.loadmoreTemplate=doT.template(this.$(".loadmore-button").html()),this.loadlessTemplate=doT.template(this.$(".loadless-button").html())},paginationOnViewportChanged(viewport){"mobile"!=v
7iewport&&"mobile"!=this.previousViewport||this.loadPage(this.currentPage.current,"replace"),this.previousViewport=viewport},paginationOnAjaxCallFinished(result){this.checkForSetToChangeViewMode(result.response.items),this.updateCurrentPageNumber(parseInt(result.response.pageNumber)),this.maxPageNumber=parseInt(result.response.maxPageNumber),this.updatePaginationElements(),this.scrollToListTop()},scrollToListTop(){if(this.initialLoad)this.initialLoad=!1;else if("replace"==this.loadMode){let scrollPos=this.$ctx.offset().top;const headerMenuHeight=$(".js-header-rebrush").find(".menu").outerHeight();headerMenuHeight&&(scrollPos-=headerMenuHeight),$("html,body").scrollTop(scrollPos)}},updateCurrentPageNumber(pageNumber){"mobile"==T.Utils.getViewport()||this.isRebrushPLP?(null!=this.currentPage.top&&"prepend"!=this.loadMode||(this.currentPage.top=pageNumber,this.currentPage.current=pageNumber),null!=this.currentPage.bottom&&"append"!=this.loadMode||(this.currentPage.bottom=pageNumber,this.currentPage.current=pageNumber)):(this.currentPage.current=pageNumber,this.currentPage.top=this.currentPage.current,this.currentPage.bottom=this.currentPage.current)},updatePaginationElements(){"mobile"!=T.Utils.getViewport()&&(this.isDefaultPagination(this.$before)||this.isDefaultPagination(this.$after))?(this.$before&&this.updatePagination(this.getModule(this.$before)),this.$after&&this.updatePagination(this.getModule(this.$after)),this.setElementsEnabled(!0)):(this.removeOldElements(),this.createElements())},removeOldElements(){null!=this.$after&&(this.$after.remove(),this.$after=null),null!=this.$before&&(this.$before.remove(),this.$before=null)},createElements(){"mobile"==T.Utils.getViewport()||this.isRebrushPLP?this.createLoadMoreElements():this.createPaginationElements()},createLoadMoreElements(){this._events.emit("loadMoreRebrushPLP"),this.currentPage.top>1&&(this.$before=$(this.loadlessTemplate()),this.$before.addClass("pagination-loadmore before"),this.$before.click(()=>{this.loadPage(this.currentPage.top-1,"prepend")}),this.$before.insertBefore(this.listLayout)),this.currentPage.bottom<this.maxPageNumber&&(this.$after=$(this.loadmoreTemplate()),this.$after.addClass("pagination-loadmore after"),this.$after.click(()=>{this.loadPage(this.currentPage.bottom+1,"append")}),this.$after.insertAfter(this.listLayout))},createPaginationElements(){this.$before=null;var after=$(this.paginationTemplate());after.addClass("pagination-default after"),after.insertAfter(this.listLayout),this.$after=this.$ctx.find(".pagination-default.after"),this.initializePagination(this.$after),this.loadMode="replace"},initializePagination(element){T.Utils.initializeModules(element,()=>{var module=this.getModule(element);this.updatePagination(module),this.registerPaginationListener(module)})},updatePagination(pagination){pagination.setMaxPages(this.maxPageNumber),pagination.setCurrentPage(this.currentPage.current),pagination.update()},registerPaginationListener(pagination){pagination.listenToSelectPage(page=>this.loadPage(page,"replace"))},setElementsEnabled(enabled){this.$before&&this.setElementEnabled(this.$before,enabled),this.$after&&this.setElementEnabled(this.$after,enabled)},setElementEnabled(element,enabled){this.isDefaultPagination(element)?this.getModule(element).setEnabled(enabled).update():this.isLoadMorePagination(element)&&(enabled?element.removeAttr("disabled"):element.attr("disabled","disabled"))},isDefaultPagination:element=>null!=element&&element.is(".pagination-default"),isLoadMorePagination:element=>null!=element&&element.is(".pagination-loadmore"),loadPage(page,mode){this.loadMode=mode,this.$ctx.find(".js-product-list-teaser-skeleton")&&this.$ctx.find(".js-list-layout").append(this.$ctx.find(".js-product-list-teaser-skeleton").html()),this.setElementsEnabled(!1),this.$form.find("input[name='pageNumber']").val(page);const placeholder=this.$ctx.find(".js-list-layout").find(".product-tile-container-placeholder"),request=T.Utils.startAjaxRequest(this.formAjaxId,{render:[{id:this.listReplaceContainerId,method:this.loadMode},{id:this.buttonReplaceContainerIdentifier,method:"replace"},{id:this.popoverReplaceContainerId,method:"replace"}
7,...this.footnotesInfoContainerId?[{id:this.footnotesInfoContainerId,method:"replace"}]:[]]},!1,!1,()=>{$(document).trigger("footnotes:initreplacement"),$(document).trigger("list:loadpage")});request&&request[0]&&request[0].done(response=>{placeholder.remove()})},getModule:element=>T.Utils.application.getModuleById(element.data("t-id"))})}(jQuery),function($){T.Module.List.Search=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.$form=this.$ctx.find("form"),this.formAjaxId=this.$form.data("ajax-id"),this.initialUrl=this.$form.data("current-state-ajax-uri"),this._events.on("t.sync",()=>this.sync())},sync(){this.isSynced||(this.isSynced=!0,this.renderInitialData(this.formAjaxId,this.initialUrl))}})}(jQuery),function($){T.Module.List.Sparepart=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$list=$(this._ctx);return this.$itemToOpen=!1,this.sparePartItemList=[],this._events.on("sparePartDataChange",$.proxy(this.onSparePartDataChange,this)),this._events.on("filterBarSortingChange",$.proxy(this.onSortingChange,this)),this._events.on("findsparepart",$.proxy(this.onFindItem,this)),this._events.on("recalc",$.proxy(this.onRecalc,this)),this._events.on("searchByKeys",$.proxy(this.onSearchByKeys,this))},getItems:$list=>$list.find(".item"),findAndScroll(searchQuery){return this._events.emit("triggerSearch",{query:searchQuery,$ctx:this.$ctx})},scrollToItem($item){const mod=this;return T.Utils.scrollToTop($item,function(){return mod._events.emit("openToggleBoxItem",{$toggle:$item}),mod.$itemToOpen=!1})},sortItems(sortKey){const $items=this.getItems(this.$list);sortKey=`.${sortKey}`;let sortedItemHtml="";return $items.sort(function(a,b){return $(b).find(sortKey).text()<$(a).find(sortKey).text()?1:-1}).each(function(){return sortedItemHtml=sortedItemHtml+'<div class="item">'+$(this).html()+"</div>"}),$items.parent().html(sortedItemHtml)},fillList(result){const request={obj:this.$list},$template=$("<div/>").html(T.Utils.renderTemplateMarkup(request,result,!1)),key=this.$list.find("[data-replace-container]").data("replace-container");return T.Utils.syncContent($template,key,"replace"),this.updateListHeading(result),this.checkViewport()},renderSparePartList(xhrData,dataPK){if(null!=xhrData&&null!=xhrData.response){const data=xhrData.response[0];return this.sparePartItemList[dataPK]=data.items,this.fillList({items:data.items})}return!1},updateListHeading(result){if(result.items){const itemsLength=result.items.length;return this.$list.find(".js-filterbar-title .js-counter").text(itemsLength+" ")}},resetSearch(bash){const $input=this.$(".js-searchfield-input");return this.$(".js-searchinput").find(".a-errormessage.error-custom").hide(),bash?$input.val(bash):$input.val("")},onViewportChange(viewport){return this._parent.onViewportChange(viewport),this.checkViewport()},checkViewport(){if("mobile"===T.Utils.getViewport()&&this.$list.find(".sparepartlist-dot").addClass("grid-view"),"tablet"===T.Utils.getViewport()&&this.$list.find(".sparepartlist-dot").removeClass("grid-view").addClass("list-view"),"desktop"===T.Utils.getViewport())return this.$list.find(".sparepartlist-dot").removeClass("grid-view").addClass("list-view")},onSortingChange(data){if(data.sortKey)return this.sortItems(data.sortKey)},onSearchByKeys(searchKeys,id,searchQuery,searchAjaxId){let toggledelay=0;if(!this.findInSamePage(searchKeys,id,searchQuery,toggledelay)){const mod=this,config={dontSendFormContent:!0},urlParams={partIdOrName:searchQuery},request=T.Utils.startAjaxRequest(searchAjaxId,config,urlParams);if(!request)return!1;request[0].done(xhrData=>{if(null!=xhrData){if(!xhrData.response.length)return mod._events.emit("showInputError",{$ctx:mod.$ctx});mod._events.emit("changeImgOnSearch",xhrData.response[0].dataPK),this.resetSortDropdown(),this.fillList({items:xhrData.response[0].items}),toggledelay=1e3,this.findInSamePage(searchKeys,id,searchQuery,toggledelay)}}).fail(xhr=>console.info(xhr))}},findInSamePage(searchKeys,id,searchQuery,toggledelay){const mod=this,resultSet=[],listId=mod.$ctx.data("t-id");if(mod.$ctx.find(`[data-t-id="${id}"]`).length>0)for(let key of Array.from(searchKeys)){const results=mod.$ctx.find(`.${key}`);for(let result of Array.from(results)){const $result=$(result);if($result.text().toLowerCase()===searchQuery.toLowerCase()){const skuId=$result.closest(".
7js-togglebox-toggle").data("result-key");resultSet.indexOf(skuId)<0&&resultSet.push(skuId)}}}return resultSet.length>0&&(mod.$itemToOpen=mod.$ctx.find(`[data-result-key="${resultSet[0]}"]`),mod._events.emit("hideInputError",{$ctx:mod.$ctx}),mod._events.emit("closeAllToggleBoxItems",!0,mod.$itemToOpen,listId),setTimeout(function(){mod._events.emit("openToggleBoxItem",{$toggle:mod.$itemToOpen,instant:!0}),T.Utils.scrollToTop(mod.$itemToOpen)},toggledelay),!0)},onSearchSubmit(ev){return ev.preventDefault(),this.findAndScroll(this.$(".js-searchfield-input").val())},onSparePartDataChange(data){if(this.resetSearch(),this.resetSortDropdown(),data.sparePartList&&data.sparePartList.length>0){const dataArray={items:data.sparePartList};return this.fillList(dataArray)}{if(this.sparePartItemList[data.dataPK]){const dataArray={items:this.sparePartItemList[data.dataPK]};return this.fillList(dataArray)}const ajax_id=this.$ctx.data("ajax-id"),urlParams={page:data.dataPK},config={dontSendFormContent:!0},request=T.Utils.startAjaxRequest(ajax_id,config,urlParams);return!!request&&request[0].done(xhrData=>this.renderSparePartList(xhrData,data.dataPK)).fail(xhr=>console.info(xhr))}},onFindItem(data){return this.resetSearch(data.sparepartnumber),this.findAndScroll(data.sparepartnumber)},onRecalc(data){const mod=this;if(mod.$ctx.find(`[data-t-id="${data.$ctx.data("t-id")}"]`).length>0&&mod.$itemToOpen)return mod.scrollToItem(mod.$itemToOpen)},resetSortDropdown(){$(".m-filterbar .js-filterbar-sorting select").val("").trigger("change.select2")}})}(jQuery),function($){T.Module.List.UgcTagcloud=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.isSynced=!1,this.tagCloudId=this.$ctx.data("tagcloud-id"),this.formEl=this._ctx.querySelector("form"),this.formAjaxId=this.formEl.getAttribute("data-ajax-id"),this.hiddenInputs=[],this._events.on("t.sync",this.sync)},sync(){this.isSynced||(this.isSynced=!0,this.registrationOnModule(),T.Utils.registerAjaxCallbackAfterSync(this.formAjaxId,response=>{if(null!=response.response.availableFilters){let tagCloud=this.getTagCloud();tagCloud.clear();for(let filter of response.response.availableFilters)for(let filterEntry of filter.entries)tagCloud.add(filterEntry.displayValue,filterEntry.value,{filterType:"standardFilters",operator:"OR",valueType:"MULTI",attribute:filter.attribute,values:[filterEntry.value]});for(let filter of response.response.selectedFilters)for(let filterEntry of filter.entries)tagCloud.select(filterEntry.value,!0);tagCloud.handlePreSelectedTags()}this.updateLegacyLoadMore(response)}))},updateLegacyLoadMore(response){const current=response.response.pageNumber,max=response.response.maxPageNumber;this.handleLoadMoreState({allElementsVisible:current>=max})},startAjaxRequest(){T.Utils.startAjaxRequest(this.formAjaxId)},getTagCloud(){return document.getElementById(this.tagCloudId).module},registrationOnModule(){const module=this.getTagCloud();if("function"==typeof module.listenToTagCloudChange){const callback=selectedItems=>{this.showContent(selectedItems)};module.listenToTagCloudChange(callback)}},showContent(selectedTagList){this.reset(),this.createHiddenInputs(selectedTagList),this.startAjaxRequest()},createHiddenInputs(selectedTagList){$.each(selectedTagList,(index,selectedItem)=>{const filterType=selectedItem.data.filterType||"standardFilters";$.each(selectedItem.data,(name,value)=>{"filterType"!==name&&this.createHiddenInput(filterType,name,value)}),this.filterCount++})},createHiddenInput(filterType,inputName,inputValues){const doCreateHiddenInput=(name,value)=>{const hiddenInput=document.createElement("input");hiddenInput.setAttribute("type","hidden"),hiddenInput.setAttribute("name",name),hiddenInput.setAttribute("value",value),this.formEl.appendChild(hiddenInput),this.hiddenInputs.push(hiddenInput)};inputName=filterType+"["+this.filterCount+"]."+inputName,Array.isArray(inputValues)?$.each(inputValues,(index,value)=>{doCreateHiddenInput(inputName+"["+index+"]",value)}):doCreateHiddenInput(inputName,inputValues)}
7,removeHiddenInputs(){this.hiddenInputs&&0===this.hiddenInputs.length||($.each(this.hiddenInputs,(index,element)=>{$(element).remove()}),this.hiddenInputs=[])},reset(){this.removeHiddenInputs(),this.filterCount=0,this.formEl.querySelector('input[name="pageNumber"]').value=1}})}(jQuery),jQuery,T.Module.ReviewDisplay.Tracking=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject)},trackingReviews(data,reviewCount){if("reviewSearch"===data.component){const searchReviewTracking={review_filter_result_count:reviewCount,review_query_string:data.value};T.Utils.getLayout().trackValues("review search",searchReviewTracking)}else if("filter"===data.component||"toggleFilter"===data.component||"ratingRowFilter"===data.component){let currentFilterObj={},filterInteraction="toggleFilter"===data.component?"true"===data.value?"enable":"disable":"enable",reviewFilterValue=this.reviewFilterArray.filter(item=>item.review_filter_value===data.value),reviewToggleFilterValue=this.reviewFilterArray.filter(item=>item.review_filter_category===data.name);const foundValue="filter"===data.component?reviewFilterValue.length:reviewToggleFilterValue.length;if(1===foundValue&&"filter"===data.component){let currentFilterNameData=reviewFilterValue.map(val=>val.review_filter_category)[0];this.reviewFilterArray=this.reviewFilterArray.filter(item=>item.review_filter_value!==data.value),currentFilterObj=this.currentReviewFiltersObj(currentFilterNameData,data.value),filterInteraction="disable"}else 1===foundValue&&"toggleFilter"===data.component?(this.reviewFilterArray=this.reviewFilterArray.filter(item=>item.review_filter_category!==data.name),currentFilterObj=this.currentReviewFiltersObj(data.name,data.value)):1===foundValue&&"ratingRowFilter"===data.component?(this.reviewFilterArray=[],currentFilterObj=this.currentReviewFiltersObj(data.name,data.value),"enable"===filterInteraction&&this.reviewFilterArray.push(currentFilterObj)):(currentFilterObj=this.currentReviewFiltersObj(data.name,data.value),"ratingRowFilter"===data.component?(this.reviewFilterArray=[],this.reviewFilterArray.push(currentFilterObj)):this.reviewFilterArray.push(currentFilterObj));T.Utils.getLayout().trackValues("review filter interaction",this.filterReviewTrackingObj(filterInteraction,reviewCount,this.reviewFilterArray,currentFilterObj))}else if("reviewSort"!==data.component){this.reviewFilterArray=[];const resetFilterObj={review_filter_interaction:"reset",review_filter_result_count:reviewCount,review_filters:[]};T.Utils.getLayout().trackValues("review filter interaction",resetFilterObj)}},currentReviewFiltersObj:(name,value)=>({review_filter_category:name,review_filter_value:value}),filterReviewTrackingObj(filterInteraction,reviewCount,reviewFilterArray,currentFilterObj){let filterReviewTrackingObj={review_filter_interaction:filterInteraction,review_filter_result_count:reviewCount,review_filters:reviewFilterArray};return{...filterReviewTrackingObj,...currentFilterObj}}}),function($){T.Module.AddressAutocomplete.FillAddresses=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.fields={},this.responseFields={},this.dependingFields=[]},initialize(update){if(this._parent.initialize(update),!this.checkFeatureIsApplicable(this.config))return;this.collectNecessaryFields(this.config),this.filterDependingFields(this.config,this.fields),this.prepareResponseFields(this.fields),update||this.registerFieldListener(this.dependingFields),this.whichObjHasProperty(this.fields,"preselectedValue")&&setTimeout(()=>{this.handleSelection(this.getTriggerElement(),!0)},100)},getData(request,params,cbData){return cbData.successCallback=((result,cbData)=>this.setData(result,cbData)),cbData.errorCallback=((result,cbData)=>this.resetData()),this._parent.getData(this.config.ajax,params,cbData)},collectNecessaryFields(data){this.fields=this._parent.collectNecessaryFields(data)},filterDependingFields(config,fields){this.dependingFields=this._parent.filterDependingFields(config,fields)},prepareResponseFields(fields){this.responseFields=this._parent.prepareResponseFields(fields)},onKeyupOrChangeInput(ev){const $elm=$(ev.currentTarget);$elm.is("[readonly]")||this.handleSelection($elm,!1)||this.resetData()},setData(result,cbData){null!=result&&(result.valid?(this.storeData(result),this.dispatchAutocompleteResponse(result)):(this.resetData(),result.error&&cbData.$elm&&cbData.$elm.trigger("setInputError",result.error,!1)))},resetData(){const $el=this.whichObjHasProperty(this.fields,"responseName").$elm;if(this.configHasPropertiesForDynamicLoading()){const $suggestLayer=this.getSuggestLayerReplaceContainer();this.$ctx.trigger("addressautocomplete:resetData",[this.config.groupName]),$el.toggleClass("hidden",!1),$el.prop("disabled",!1),$suggestLayer.empty()}else this.updateOptions($el,[]),$el.val(""),$el.trigger("change"),$el.trigger("disableSelectField"),$el.trigger("setCustomError",!1),this.updateHiddenReplacementField($el,"")},handleSelection($triggerElement,bytimer){let self=this;if(this.checkFieldsToTriggerAutocomplete(this.config,this.dependingFields,this.fields)){if(bytimer){if($triggerElement.data("preselectionIsDone"))return!0}else $triggerElement.data("preselectionIsDone",!0);return this.triggerAutocompleteRequest(this.config,this.config.fields,$triggerElement).done(function(d){setTimeout(self.setPreselection(),10)}),!0}return!1},setPreselection(){const field=this.whichObjHasProperty(this.fields,"preselectedValue");if(field){let $fieldForPreselection=field.$elm;const dataForPreselection=field.preselectedValue;this.configHasPropertiesForDynamicLoading()&&($fieldForPreselection=this.$ctx.find("#"+field.replaceItemId)),dataForPreselection&&!field.preselectionIsDone?(field.preselectionIsDone=!0,this.isPreselectedValueAvailable($fieldForPreselection,dataForPreselection)?(this.updateHiddenReplacementField($fieldForPreselection,dataForPreselection),$fieldForPreselection.trigger("enableSelectField"),$fieldForPreselection.val(dataForPreselection),$fieldForPreselection.trigger("change")):(this.log(this.config.name,`the preselected value ${dataForPreselection} for ${field.name} was not found in options`),this.updateHiddenReplacementField($fieldForPreselection,""),$fieldForPreselection.trigger("disableSelectField"))):(this.updateHiddenReplacementField($fieldForPreselection,""),$fieldForPreselection.val(""),$fieldForPreselection.trigger("change"),$fieldForPreselection.trigger("setCustomError",!1))}},updateOptions($el,data){if(this.configHasPropertiesForDynamicLoading()){const field=this.whichObjHasProperty(this.fields,"responseName"),addresses={addresses:data},suggestTemplateSelector=`.${this.config.suggestTemplate}`,$suggestLayer=this.getSuggestLayerReplaceContainer(),$suggestMarkup=this.renderTemplate(suggestTemplateSelector,addresses,!1);T.Utils.replaceContent($suggestMarkup,"replace",!1,!1),$suggestLayer.toggleClass("hidden",!1),this.$ctx.trigger("addressautocomplete:registerFields",[field.replaceItemId]);const $newReplacedElem=$("#"+field.replaceItemId);$newReplacedElem.find('option[value!=""]').remove().end();for(let i of data)$newReplacedElem.append(new Option(i.itemName,i.itemId));$el.toggleClass("hidden",!0),$el.prop("disabled",!0)}else{data.length>0&&$el.trigger("enableSelectField"),$el.find('option[value!=""]').remove().end();for(let i of data)$el.append(new Option(i.itemName,i.itemId))}},updateHiddenReplacementField($el,value){$el.closest(".m-forminput-dropdown").find("input[type=hidden]").val(value)},getSuggestLayerReplaceContainer(){const suggestTemplateSection=`${this.config.suggestSection}`,$suggestLayer=this.$ctx.find(`[data-replace-container="${suggestTemplateSection}"]`);return 0===$suggestLayer.length?this.log(this.config.name,"no suggest layer found"):$suggestLayer.length>1&&this.log(this.config.name,"multiple suggest layers found"),$suggestLayer},configHasPropertiesForDynamicLoading(){const fieldWithReplaceId=this.whichObjHasProperty(this.fields,"replaceItemId");return!!(this.config.suggestTemplate&&this.config.suggestSection&&fieldWithReplaceId)},isPreselectedValueAvailable($el,preselectedValue){let available=!1;return $el.find("option").each(function(){if($(this).val()===preselectedValue)return available=!0,!1}),available},getTriggerElement(){return this.dependingFields[0].$elm},dispatchAutocompleteResponse(responseData){for(let key of Object.keys(responseData)){const value=responseData[key],entry=this.getInputEntryForResponse(this.responseFields,key,value);entry&&entry.value&&$.isArray(entry.value)&&this.updateOptions(entry.$elm,entry.value)}},getInputEntryForResponse(fields,key,value){const field=fields[key];if(field){if(!field.valueName)return{$elm:field.$elm,value:value};if($.isArray(value)){let arr=this.mapData(value,{itemId:field.valueName,itemName:field.valueName});return{$elm:field.$elm,value:arr}}this.log(this.config.name,`the field ${key} is an object but not the received value`)}return null},mapData(data,obj){let result=[];for(let i of data)i[obj.itemId]&&i[obj.itemName]&&result.push({itemId:i[obj.itemId],itemName:i[obj.itemName]});return result},storeData(data){const storeDataField=this.whichObjHasProperty(this.fields,"storeData");if(storeDataField){const dataProperty=storeDataField.storeData;storeDataField.$elm.removeAttr(this.dataAttributes.storeData),storeDataField.$elm.attr(this.dataAttributes.storeData,JSON.stringify({[dataProperty]:data[dataProperty]}))}}})}(jQuery),function($){T.Module.AddressAutocomplete.FillAddressesLazyload=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.targetFieldname="",this.dataAttributes=$.extend(this.dataAttributes,{lazyload:"data-lazyload-scrolling"}),this.triggerEvents={activateLazyload:"activateLazyloadScrolling"},this.fields={},this.dependingFields=[]},initialize(update){if(this._parent.initialize(update),!this.checkFeatureIsApplicable(this.config))return;
7this.collectNecessaryFields(this.config),this.filterDependingFields(this.config,this.fields),update||this.registerFieldListener(this.dependingFields);let targetField=this.whichObjHasProperty(this.fields,"responseName");targetField&&(this.targetFieldname=targetField.name),this.activateLazyload(this.config)},collectNecessaryFields(data){this.fields=this._parent.collectNecessaryFields(data)},filterDependingFields(config,fields){this.dependingFields=this._parent.filterDependingFields(config,fields),1!=this.dependingFields.length&&this.log(this.config.name,"no or more than one depending field is configured")},onKeyupOrChangeInput(ev){$(ev.currentTarget).is("[readonly]")||(this.resetTargetSelection(),this.getTriggerValue()?this.enableTargetSelection():this.disableTargetSelection())},activateLazyload(data){const field=this.fields[this.targetFieldname];field?(field.$elm.attr(this.dataAttributes.lazyload,this.getLazyloadConfiguration(field,data)),field.$elm.trigger(this.triggerEvents.activateLazyload),field.preselectedValue?this.updateHiddenReplacementField(field.$elm,field.preselectedValue):this.resetTargetSelection(),this.getTriggerValue()||this.disableTargetSelection()):this.log(this.config.name,`the field ${this.targetFieldname} to activate lazyload is not available`)},getLazyloadConfiguration(field,data){let responseResultName,responseItemName,responseItemId,preselectedName,preselectedId,storeData,storeDataAttribute,pageLimit=50,minLength=0;if(responseResultName=responseItemName=responseItemId=preselectedName=preselectedId=storeData=storeDataAttribute="","object"==typeof field.responseName){responseResultName=Object.keys(field.responseName)[0];let responseItem=Object.values(field.responseName)[0];if("object"==typeof responseItem){let itemField=Object.values(field.responseName)[0];responseItemId=itemField.id,responseItemName=itemField.name}else responseItemId=responseItem,responseItemName=responseItem}if(field.preselectedValue){let preselectedItem=field.preselectedValue;"object"==typeof preselectedItem?(preselectedId=preselectedItem.id,preselectedName=preselectedItem.name):(preselectedId=preselectedItem,preselectedName=preselectedItem)}return field.storeData&&(storeDataAttribute=this.dataAttributes.storeData,storeData=field.storeData),void 0!==field.pageLimit&&(pageLimit=field.pageLimit),void 0!==field.minLength&&(minLength=field.minLength),JSON.stringify({ajaxUrl:data.ajax.url,method:data.ajax.method,dataType:data.ajax.dataType,delay:data.delay,requestName:{trigger:this.getTriggerRequestName(),searchTerm:"searchTerm",pageLimit:"pageLimit",pageNumber:"page"},responseName:{resultItems:responseResultName,itemId:responseItemId,itemName:responseItemName,moreFlage:"more"},showSearchbar:!0,showPlaceholder:minLength>0,searchTermMinLength:minLength,pageLimit:pageLimit,getTriggerValueBySelector:this.getTriggerSelector(),preselectedItemId:preselectedId,preselectedItemName:preselectedName,storeDataAttribute:storeDataAttribute,storeData:storeData})},getTriggerRequestName(){return this.dependingFields[0].requestName},getTriggerSelector(){return"#"+this.dependingFields[0].$elm.attr("id")},getTriggerValue(){return this.dependingFields[0].$elm.val()},resetTargetSelection(){const field=this.fields[this.targetFieldname];field&&field.$elm.val("").trigger("change")},disableTargetSelection(){const field=this.fields[this.targetFieldname];field&&(field.$elm.trigger("disableSelectField"),field.$elm.trigger("setCustomError",!1),this.updateHiddenReplacementField(field.$elm,""))},enableTargetSelection(){const field=this.fields[this.targetFieldname];field&&field.$elm.trigger("enableSelectField")},updateHiddenReplacementField($el,value){$el.closest(".m-forminput-dropdown").find("input[type=hidden]").val(value)}})}(jQuery),function($){T.Module.AddressAutocomplete.FillAddressFromData=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.stateclass={error:".has-error, .is-invalid, .has-ajax-error"},this.fields={},this.responseFields={},this.dependingFields=[],this.$ctx.on("addressautocomplete:registerFields",(ev,replaceItemId)=>{this.registerNewDynamicLoadedField(replaceItemId)}),this.$ctx.on("addressautocomplete:resetData",(ev,srcConfigGroupName)=>{this.resetData(srcConfigGroupName)})},resetData(srcConfigGroupName){if(this.config.groupName===srcConfigGroupName&&this.config.targetFields){this.config.targetFields.forEach(name=>{const field=this.getObjByName(this.config.fields,name);this.setFieldReadOnly(this.$ctx.find("#"+field.id),!1)})}},setFieldReadOnly($elm,status){status?T.Utils.createHiddenElementForReadonly($elm,".select-wrap"):$elm.trigger("edit",{invert:!1})},initialize(update){this._parent.initialize(update),this.checkFeatureIsApplicable(this.config)&&(this.collectNecessaryFields(this.config),this.filterDepen
7dingFields(this.config,this.fields),this.prepareResponseFields(this.fields),update||this.registerFieldListener(this.dependingFields))},getData(request,params,cbData){this.setData(this.readData())},collectNecessaryFields(data){this.fields=this._parent.collectNecessaryFields(data)},filterDependingFields(config,fields){this.dependingFields=this._parent.filterDependingFields(config,fields),1!=this.dependingFields.length&&this.log(this.config.name,"no or more than one depending field (town) is configured")},prepareResponseFields(fields){this.responseFields=this._parent.prepareResponseFields(fields)},checkFieldsToTriggerAutocomplete:(config,dependingFields,fields)=>!0,onKeyupOrChangeInput(ev){const $elm=$(ev.target);if(!$elm.is("[readonly]"))return(!this.whichObjHasProperty(this.fields,"replaceItemId")||$elm.is("select"))&&this.checkFieldsToTriggerAutocomplete(this.config,this.dependingFields,this.fields)?this.triggerAutocompleteRequest(this.config,this.config.fields,$elm):void 0},setData(result,cbData){null!=result&&this.dispatchAutocompleteResponse(result)},dispatchAutocompleteResponse(responseData){for(let key of Object.keys(responseData)){const value=responseData[key],entry=this.getInputEntryForResponse(this.responseFields,key,value);entry&&(entry.value?entry.$elm.is("select")?T.Utils.isObject(entry.value)?(entry.$elm.val(entry.value.uniqueIdentifier).trigger("change"),this.setFieldReadOnly(entry.$elm,!0)):entry.$elm.val(entry.value).trigger("change"):(entry.$elm.val(entry.value),entry.$elm.is(this.stateclass.error)&&entry.$elm.trigger("setCustomError",!1)):(this.setFieldReadOnly(entry.$elm,!1),entry.$elm.val("").trigger("change")))}},registerNewDynamicLoadedField(replaceItemId){const oldfield=this.whichObjHasProperty(this.fields,"replaceItemId");if(oldfield&&oldfield.replaceItemId===replaceItemId){const fields=[Object.assign({},oldfield,{$elm:this.$ctx.find("#"+oldfield.replaceItemId),id:oldfield.replaceItemId})];this.dependingFields=fields,this.registerFieldListener(fields)}},getInputEntryForResponse(fields,key,value){const field=fields[key];if(field){if(!field.valueName)return{$elm:field.$elm,value:value};if($.isArray(value)){let val=this.findValueBySelectedEntry(value,key,field.valueName);return{$elm:field.$elm,value:val}}this.log(this.config.name,`the field ${key} is an object but not the received value`)}return null},findValueBySelectedEntry(addresses,key,valueName){let field=this.dependingFields[0];if(field){let selectedEntry=field.$elm.val();if(selectedEntry){let refResponseName=key,refValueName="";if("object"==typeof field.responseReference?(refResponseName=Object.keys(field.responseReference)[0],refValueName=Object.values(field.responseReference)[0]):refValueName=field.responseReference,key==refResponseName)for(let i of addresses)if(i[refValueName]===selectedEntry)return i[valueName]}}return null},readData(){const readDataField=this.whichObjHasProperty(this.fields,"readData");
7if(readDataField){const data=readDataField.$elm.attr(this.dataAttributes.storeData);if(data)return JSON.parse(data)}else this.log(this.config.name,"no stored data found to fulfill autocomplete feature");return null}})}(jQuery),function($){T.Module.AddressAutocomplete.SuggestAddress=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.layerContainsModuls=!1,this.stateclass={error:".has-error, .is-invalid, .has-ajax-error"},this.resultAddressData=[],this.fields={},this.responseFields={},this.dependingFields=[],this.selector=$.extend(this.selector,{suggestLayers:".js-suggest-layer",replaceContainer:"data-replace-container",replaceId:"data-replace-id"}),$(document).on("mousedown.autocomplete",this.selector.suggestLayers,ev=>this.onClickSuggestlayer(ev))},initialize(update){this._parent.initialize(update),this.checkFeatureIsApplicable(this.config)&&(this.collectNecessaryFields(this.config),this.filterDependingFields(this.config,this.fields),this.prepareResponseFields(this.fields),update||this.registerFieldListener(this.dependingFields))},getData(request,params,cbData){cbData.successCallback=((result,cbData)=>this.setData(result,cbData)),this._parent.getData(this.config.ajax,params,cbData)},collectNecessaryFields(data){this.fields=this._parent.collectNecessaryFields(data)},filterDependingFields(config,fields){this.dependingFields=this._parent.filterDependingFields(config,fields)},prepareResponseFields(fields){this.responseFields=this._parent.prepareResponseFields(fields)},onKeyupOrChangeInput(ev){const $elm=$(ev.currentTarget);$elm.is("[readonly]")||this.checkFieldsToTriggerAutocomplete(this.config,this.dependingFields,this.fields)&&this.triggerAutocompleteRequest(this.config,this.config.fields,$elm)},onClickSuggestlayer(ev){this.resultAddressData.length>0&&this.dispatchAutocompleteResponse(this.resultAddressData[0])},setData(result,cbData){result&&(result.valid?(this.resultAddressData=result.addresses,this.renderSuggestLayer(result,cbData.$elm)):this.$ctx.find(this.selector.suggestLayers).toggleClass("hidden",!0))},renderSuggestLayer(result,$targetElement){const targetId=$targetElement.data(this.dataAttributes.fieldIdentifier),suggestTemplateSelector=`.${this.config.suggestTemplate}`,$suggestMarkup=$("<div/>").html(this.renderTemplate(suggestTemplateSelector,result,!1));let suggestResult;this.layerContainsModuls?(T.Utils.syncContent($suggestMarkup,this.config.suggestSection,null,!1),suggestResult=this.$ctx.find(`[${this.selector.replaceContainer}="${this.config.suggestSection}"]`).html()):suggestResult=$suggestMarkup.find(`[${this.selector.replaceId}="${this.config.suggestSection}"]`).html();const $suggestLayer=this.$ctx.find(`[${this.config.suggestLayer}="${targetId}"]`);0===$suggestLayer.length?this.log(this.config.name,`no ${this.config.suggestLayer}=${targetId} layer found`):$suggestLayer.length>1&&this.log(this.config.name,`the ${this.config.suggestLayer}=${targetId} layer exists multiple`),$suggestLayer.html(suggestResult),this.$ctx.find(this.selector.suggestLayers).toggleClass("hidden",!0),$suggestLayer.toggleClass("hidden",!1)},dispatchAutocompleteResponse(responseData){for(let key of Object.keys(responseData)){const value=responseData[key],entry=this.getInputEntryForResponse(this.responseFields,key,value);entry&&entry.value.length>0&&(entry.$elm.is("select")?entry.$elm.val(entry.value).trigger("change"):(entry.$elm.val(entry.value),entry.$elm.is(this.stateclass.error)&&entry.$elm.trigger("setCustomError",!1)))}},getInputEntryForResponse(fields,key,value){const field=fields[key];if(field){if(!field.valueName)return{$elm:field.$elm,value:value};if("object"==typeof value){if(value[field.valueName])return{$elm:field.$elm,value:value[field.valueName]}}else this.log(this.config.name,`the field ${key} is an object but not the received value`)}return null}})}(jQuery),jQuery,T.Module.EventDelayController.HideMessageOnDelay=T.createDecorator({start(resolve){return this._parent.start(resolve),this.sel={releaseVoucher:".js-release-voucher"},this.el={$releaseVoucher:this.$ctx.find(this.sel.releaseVoucher)},this.el.$releaseVoucher.on("click",()=>this.onClick()),resolve()},executeAfterDelay(){this.$ctx.hide()},onClick(){clearTimeout(this.timer)}}
7),jQuery,T.Module.EventActionController.CreateConsumerEvent=T.createDecorator({start(resolve){return this._parent.start(resolve),resolve()},action(){this.el.$target.toggleClass("animated-hidden",!this.el.$trigger.is(":checked")),this.toggleDisabledState(!this.el.$trigger.is(":checked"))},toggleDisabledState(state){this.el.$target.find(".root > .consent-optin-group > .form-layout-col :input").prop("disabled",state)}}),jQuery,T.Module.EventActionController.DisplayEmailAgentEvent=T.createDecorator({start(resolve){return this._parent.start(resolve),resolve()},action(){this.el.$target.toggleClass("animated-hidden",!this.el.$trigger.is(":checked"))}}),jQuery,T.Module.EventActionController.EmailSelectedAgentEvent=T.createDecorator({start(resolve){return this._parent.start(resolve),resolve()},action(ev){const agentEmail=ev.target.options[ev.target.selectedIndex].dataset.email;this.el.$target.html(agentEmail)}}),function($){T.Module.LoadDataController.LoadAjax=T.createDecorator({_start(resolve,reject){return this._parent.start(resolve,reject)},_config(config){this._parent._config(config),this.url=config.url,this.method=config.method||"GET",this.dataType=config.dataType;let defaultContentType="application/x-www-form-urlencoded; charset=utf-8";return"json"===(null!=config.dataType?config.dataType.toLowerCase():void 0)&&(defaultContentType="application/json; charset=utf-8"),this.contentType=config.contentType||defaultContentType},_load(params,successCb,errorCb){return $.ajax({url:this.url,cache:!1,type:this.method,dataType:this.dataType,contentType:"get"!==this.method.toLowerCase()&&this.contentType,data:params,success:(result,textStatus,jqXHR)=>(successCb(result),!0),error:(jqXHR,textStatus,errorThrown)=>(errorCb(textStatus),!1)})}})}(jQuery),jQuery,T.Module.LoadDataController.LoadMethod=T.createDecorator({_config(config){if(this._parent._config(config),this.controllerName=config.name,this.controllerDecorator=config.decorator,this.controllerMethod=config.method,this.controllerParamNames=config.paramNames,this.controllerMethodAsync=config.async||!1,this.controller=T.Utils.createController(this.$ctx,this.controllerName,this.controllerDecorator),null!=config.init&&(this.controllerInitMethod=config.init.method,this.controllerInitParameters=config.init.parameters,this.controllerInitMethod))return this.controller[this.controllerInitMethod](this.controllerInitParameters)},_load(params,successCb,errorCb){if("function"!=typeof this.controller[this.controllerMethod])return void errorCb(`no method ${this.controllerMethod} found in controller ${this.controllerName} with decorator ${this.controllerDecorator}`);if(null!=this.controllerParamNames){const newParams=[];for(let paramName of Array.from(this.controllerParamNames))newParams.push(params[paramName]);params=newParams}const controllerParams=(null!=params?params.slice(0):void 0)||[];this.controllerMethodAsync&&controllerParams.push(successCb);const data=this.controller[this.controllerMethod].apply(this.controller,controllerParams);return this.controllerMethodAsync?void 0:this.successCb(data)}}),function($,doT){T.Module.LoadDataController.RenderDot=T.createDecorator({_start(resolve,reject){return this._parent.start(resolve,reject)},_config(config){this._parent._config(config),this.contentType="application/json; charset=utf-8";let $templateSelector=this.$ctx;if(null!=config.templateSelectorParents&&($templateSelector=$templateSelector.parents(config.templateSelectorParents)),this.$template=$templateSelector.find(config.templateSelector),this.$template.length>0){const templateContent=this.$template.html();return this.template=doT.template(templateContent)}return this.handleError(`no template found for template selector ${config.templateSelector} and it's parent ${config.templateSelectorParents}`)},_render(data,successCb,errorCb){if(data||(data={}),"string"==typeof data)try{data=JSON.parse(data)}catch(e){errorCb(`returned data is not parseable JSON: ${data}`)}successCb("function"==typeof this.template?this.template(data):void 0)}})}(jQuery,window.doT),jQuery,T.Module.LoadDataController.RenderJson=T.createDecorator({_start(resolve,reject){return this._parent.start(resolve,reject)},_config(config){return this._parent._config(config),this.contentType="application/json; charset=utf-8"},_render(data,successCb,errorCb){if(data||(data={}),"string"==typeof data)try{data=JSON.parse(data)}catch(e){errorCb(`returned data is not parseable JSON: ${data}`)}successCb(data)}}),function($){T.Module.TypeaheadController.DealerSelectionZipCode=T.createDecorator({_initField($field){const selector=`.${$field.data("state-unique-css-class")||"js-state-container"}`,stateContainerEl=$field.closest("form").find(selector)[0]||null;if(null===stateContainerEl)return void console.error(`No state container found with selector ${selector}!`,this);this.$stateContainer=$(stateContainerEl),this.$stateContainer.on("click",'input[type="radio"]',evt=>{const $dealerDiv=$(evt.currentTarget).parents("[data-dealer-id]");return this.$stateContainer.find(".js-lat-input").val($dealerDiv.data("location-lat")),this.$stateContainer.find(".js-lng-input").val($dealerDiv.data("location-lng"))}),this.stateRequest=this.$stateContainer.data("state-ajax"),this.stateLoader=T.Utils.createController(this.$ctx,"LoadDataController",this.stateRequest.decorators||"LoadAjax,RenderDot"),this.stateLoader.init(this.stateRequest),this.alwaysUpdateErrorState=!0,this.submitButton=this.$ctx.find("button.a-button-primary"),this.submitButton.hide(),this.webMappingInitialized=!1,this.webMappingValueNeedTrigger=!1,this.webMappingController=T.Utils.createController(this.$ctx,"WebMappingAutocomplete","Google",{"google-client":this.config.googleClient,"google-channel":this.config.googleChannel,"google-key":this.config.googleKey}),this.webMappingController.addInitializedListener(()=>{if(this.webMappingInitialized=!0,this.webMappingValueNeedTrigger)return this.triggerAutocompleteRequest()}),this.webMappingController.initialize({countryCode:this.config.countryCode});const fieldValue=$field.val();return this.pattern=$field.attr("pattern"),null!=fieldValue&&fieldValue.length>0?this.webMappingValueNeedTrigger=!0:void 0},checkPattern(inputValue){if(null==this.pattern||void 0==this.pattern)return!0;return new RegExp(this.pattern).test(inputValue)},_isNoMatchAvailable(response,suggestionOptions,inputValue){return!!this.checkPattern(inputValue)&&0===suggestionOptions.length},_getSuggestionOptions(response){const result=[];for(let place of Array.from(response))result.push({name:place.address,value:place.address,location:place.location});return result},_isValidResponse:response=>null!=response&&Array.isArray(response),_isSingleMatch(response,suggestionOptions,inputValue){return!!this.checkPattern(inputValue)&&(1===suggestionOptions.length&&-1!==(null!=suggestionOptions[0].value?suggestionOptions[0].value.toLowerCase().replace(/ /g,"").indexOf(null!=inputValue?inputValue.toLowerCase().replace(/ /g,""):void 0):void 0))},_getData(params,cb){const paramKeys=Object.keys(params);if(0===paramKeys.length)return this.log("no parameter found in data request"),void cb();if(!this.webMappingInitialized)return this.webMappingValueNeedTrigger=!0,void cb([]);const zipCode=params[paramKeys[0]];return this.webMappingController.getLatLngByZipCode(zipCode,(error,location,address,userCountryCode)=>{if(null===address||void 0===address||-1===address.toLowerCase().replace(/ /g,"").indexOf(zipCode.toLowerCase().replace(/ /g,"")))return this.currentLocation=null,this.currentUserCountryCode=null,void cb(null);const array=[{location:location,address:address,userCountryCode:userCountryCode}];return this.currentLocation=location,this.currentUserCountryCode=userCountryCode,cb(array)})},_updateErrorState(fieldValue,validInput){return(null!=fieldValue?fieldValue.length:void 0)>0&&null!=this.currentLocation&&validInput?this.executeAjaxStateUpdate(fieldValue):(this.submitButton.hide(),T.Utils.destroyModules(this.$stateContainer),this.$stateContainer.empty(),this.lastLoadedLocation=null)},_shouldShowValidation:()=>!0,_shouldDisplaySuggestions:()=>!1,_onBlurField(){return this.executeAjaxStateUpdate(this.$field.val())},_onFocusField(){return this.updateErrorState()},executeAjaxStateUpdate(fieldValue){if(this.currentLocation&&((null!=this.lastLoadedLocation?this.lastLoadedLocation.lat:void 0)!==this.currentLocation.lat||(null!=this.lastLoadedLocation?this.lastLoadedLocation.lng:void 0)!==this.currentLocation.lng))return this.submitButton.hide(),this.stateLoader.execute({params:{lat:this.currentLocation.lat,lng:this.currentLocation.lng,userCountryCode:this.currentUserCountryCode,postalCode:fieldValue},success:content=>(this.$stateContainer.html(content),T.Utils.initializeModules(this.$stateContainer),this.$stateContainer.find("input[type='radio']").change(()=>this.submitButton.show()),this.lastLoadedLocation=this.currentLocation)})}})}(jQuery),function($){T.Module.TypeaheadController.ENumber=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.$enrFieldInput=this.$ctx.find(`#${this.config.fields[0].id}`),this.$enrFieldInput.addClass("upercase"),this.$enrFieldInput.on("focusout",ev=>{this.onFocusOutEnrField(ev)})},_getSuggestionOptions(response){const result=[];for(let element of Array.from(response))result.push({value:element.value,name:element.value});return result},_isValidResponse:response=>null!=response&&Array.isArray(response),_shouldShowValidation(){return(null!=this.$field.val()?this.$field.val().length:void 0)>0},_isSingleMatch:(response,suggestionOptions,inputValue)=>suggestionOptions.length>0&&(null!=suggestionOptions[0].value?suggestionOptions[0].value.toLowerCase():void 0)===(null!=inputValue?inputValue.toLowerCase():void 0),onFocusOutEnrField(ev){const $currentTarget=$(ev.currentTarget);$currentTarget.val()&&$currentTarget.val($currentTarget.val().toUpperCase())}})}(jQuery),function($){T.Module.TypeaheadController.ENumberOCR=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject),this.hasEnrOcrErrorClass="has-enrocr-error",this.strLoaderClose="loader:close",this.strLoaderOpen="loader:open",this.$uploadTemplate=this.$ctx.find(`#${this.config.enrOcr.uploadTemplateId}`),this.$cameraIconTemplate=this.$ctx.find(`#${this.config.enrOcr.cameraIconTemplateId}`),this.$errorMessageTemplate=this.$ctx.find(`#${this.config.enrOcr.errorMessageTemplateId}`),this.$enrFieldInput=this.$ctx.find(`#${this.config.fields[0].id}`),this.$enrLayerArea=this.$enrFieldInput.closest("fieldset"),this.$errorContainer=this.$enrFieldInput.siblings(".form-error-wrapper").find(".error-container"),this.prepareMarkup(),this.$previewPicture=this.$ctx.find(".js-preview-picture"),this.$fileInput=this.$ctx.find(".js-file-input"),this.$cameraButton=this.$ctx.find(".js-enrocr-icon-camera"),this.fileReaderObj=new FileReader,this.unsetError(),this.uploadControllerData={$form:this.$uploadForm,uploadTimeout:this.config.enrOcr.uploadTimeout||3e4,uploadRequired:!1,uploadUrl:this.config.enrOcr.uploadUrl,notifyIsU
7ploading:()=>this.pictureUploading(),notifyUploadSucceeded:result=>this.pictureUploadDone(result),notifyUploadError:errorMsg=>this.pictureUploadError(errorMsg),$uploadController:this.$uploadController},this.$cameraButton.on("click",ev=>{this.onClickCameraButton(ev)}),this.$enrFieldInput.on("click input change",ev=>{this.onInputEnrField(ev)}),this.$uploadFileInput.on("change",ev=>{this.onInputPicture(ev)}),this.fileReaderObj.addEventListener("load",()=>{this.onLoadFileReader()}),this.config.enrOcr.fddateFieldId&&(this.$ocrFieldFd=$("#"+this.config.enrOcr.fddateFieldId),this.$fddateLayerArea=this.$ocrFieldFd.closest("fieldset")),this.config.enrOcr.znrFieldId&&(this.$ocrFieldZnr=$("#"+this.config.enrOcr.znrFieldId),this.$znrLayerArea=this.$ocrFieldZnr.closest("fieldset")),this.$ocrFieldFd&&(this.$moreContentLink=this.$ocrFieldFd.closest('[data-t-name="MoreContentToggleLink"]')),this.checkCanToggleOptionalFields()&&setTimeout(()=>{this.$moreContentLink.trigger("morecontenttogglelink:openMoreLessLink")},500)},checkCanToggleOptionalFields(){return!!(this.$moreContentLink&&this.$moreContentLink.length>0&&(this.$ocrFieldFd&&this.$ocrFieldFd.val()||this.$ocrFieldZnr&&this.$ocrFieldZnr.val()))},addCameraIcon(){const cameraIconTemplate=this.$cameraIconTemplate.html();this.$enrFieldInput.parent().prepend(cameraIconTemplate)},addErrorMessage(errorType,errorMessage){let errorMessageMarkup=this.$errorMessageTemplate.html().replace("{errorType}",errorType);errorMessageMarkup=errorMessageMarkup.replace("{errorMessage}",errorMessage),this.$errorContainer.append(errorMessageMarkup)},addUploadForm(){$("body").append(this.$uploadTemplate.html()),this.$uploadController=$(`#${this.config.enrOcr.uploadControllerId}`),T.Utils.initializeModules(this.$uploadController),this.$uploadForm=$(`#${this.config.enrOcr.uploadFormId}`),this.$uploadFileInput=$(`#${this.config.enrOcr.uploadFileInputId}`)},prepareMarkup(){this.addCameraIcon(),this.addErrorMessage("fileformat",this.config.enrOcr.fileFormatErrorText||""),this.addErrorMessage("filesize",this.config.enrOcr.fileSizeErrorText||""),this.addErrorMessage("server",this.config.enrOcr.serverErrorText||""),this.addErrorMessage("success",this.config.enrOcr.successText||""),this.addErrorMessage("json",""),this.addUploadForm(),this.$errorMessageFileFormat=this.$errorContainer.find(".js-custom-error-message-fileformat"),this.$errorMessageFileSize=this.$errorContainer.find(".js-custom-error-message-filesize"),this.$errorMessageServer=this.$errorContainer.find(".js-custom-error-message-server"),this.$messageSuccess=this.$errorContainer.find(".js-custom-error-message-success"),this.$errorMessageJson=this.$errorContainer.find(".js-custom-error-message-json")},readFile(file){this.fileReaderObj.readAsDataURL(file)},isPermittedFileSize(file){return file.size<=this.config.enrOcr.maxFileSize},setError($error,success){success||(this.$enrFieldInput.val(""),this.$enrFieldInput.addClass(this.hasEnrOcrErrorClass)),setTimeout(()=>{this.updateErrorState(),$error.show()},1e3)},unsetError(){this.$enrFieldInput.removeClass("has-error"),this.$enrFieldInput.removeClass("has-confirm-error"),this.$enrFieldInput.removeClass("is-empty"),this.$enrFieldInput.removeClass("is-invalid"),this.$enrFieldInput.removeClass(this.hasEnrOcrErrorClass),this.$enrFieldInput.removeClass("has-min-length-error"),this.$errorMessageFileFormat.hide(),this.$errorMessageFileSize.hide(),this.$errorMessageServer.hide(),this.$messageSuccess.hide(),this.$errorMessageJson.hide()},setJsonError(result){this.unsetError(),this.$previewPicture.show(),this.$enrFieldInput.addClass(this.hasEnrOcrErrorClass),this.$errorMessageJson.text(result.errorMsg),this.setError(this.$errorMessageJson)},setSuccess(){this.unsetError(),this.setError(this.$messageSuccess,!0)},onInputEnrField(){this.unsetError()},onLoadFileReader(){this._events.emit("uploadcontroller:start",this.uploadControllerData),this.$uploadForm[0].reset()},onClickCameraButton(ev){ev.stopPropagation(),this.closeLayer(),this.unsetError(),T.Utils.getLayout().trackValues("photo enumber upload click",{}),this.$uploadFileInput.trigger("click")}
7,onInputPicture(ev){let file=$(ev.currentTarget)[0].files[0];file?this.isPermittedFileSize(file)&&file.type.indexOf("image/")>-1?(this.unsetError(),this.readFile(file)):this.isPermittedFileSize(file)?(this.unsetError(),this.setError(this.$errorMessageFileFormat),this.$previewPicture.attr("src",this.config.enrOcr.nopictureSrc),this.$previewPicture.show()):(this.unsetError(),this.setError(this.$errorMessageFileSize),this.$previewPicture.attr("src",this.config.enrOcr.nopictureSrc),this.$previewPicture.show()):(this.unsetError(),this.setError(this.$errorMessageFileFormat),this.$previewPicture.attr("src",this.config.enrOcr.nopictureSrc),this.$previewPicture.show())},pictureUploading(){this._events.emit(this.strLoaderOpen,{loaderType:"area",loaderArea:this.$enrLayerArea,$trigger:this.$enrFieldInput}),this.$ocrFieldFd&&this.$ocrFieldFd.length>0&&this._events.emit(this.strLoaderOpen,{loaderType:"area",loaderArea:this.$fddateLayerArea,$trigger:this.$ocrFieldFd}),this.$ocrFieldZnr&&this.$ocrFieldZnr.length>0&&this._events.emit(this.strLoaderOpen,{loaderType:"area",loaderArea:this.$znrLayerArea,$trigger:this.$ocrFieldZnr})},pictureUploadDone(result){switch(this.$ocrFieldFd&&this.$ocrFieldFd.length>0&&(this.$ocrFieldFd.val("").trigger("change"),this._events.emit(this.strLoaderClose,{$trigger:this.$ocrFieldFd})),this.$ocrFieldZnr&&this.$ocrFieldZnr.length>0&&(this.$ocrFieldZnr.val("").trigger("change"),this._events.emit(this.strLoaderClose,{$trigger:this.$ocrFieldZnr})),this._events.emit(this.strLoaderClose,{$trigger:this.$enrFieldInput}),result.responseCode){case"error_could_not_be_handled":T.Utils.getLayout().trackValues("photo enumber generic error",{}),this.$previewPicture.attr("src",this.config.enrOcr.nopictureSrc),this.setJsonError(result);break;case"error_enr_not_retrieved":T.Utils.getLayout().trackValues("photo enumber not retrieved error",{}),this.$previewPicture.attr("src",this.fileReaderObj.result),this.setJsonError(result);break;case"success_enr_retrieved":T.Utils.getLayout().trackValues("photo enumber success",{service_product_id:result.enr}),this.unsetError(),this.$previewPicture.attr("src",this.fileReaderObj.result),this.$previewPicture.show(),this.$enrFieldInput.val(result.enr),this.$enrFieldInput.trigger("keyup"),setTimeout(()=>{this.updateErrorState()},1500),this.$ocrFieldFd&&this.$ocrFieldFd.length>0&&this.$ocrFieldFd.val(result.fddate).trigger("change"),this.$ocrFieldZnr&&this.$ocrFieldZnr.length>0&&this.$ocrFieldZnr.val(result.znr).trigger("change"),this.checkCanToggleOptionalFields()&&this.$moreContentLink.trigger("morecontenttogglelink:openMoreLessLink")}},pictureUploadError(errorMsg){this._events.emit(this.strLoaderClose,{$trigger:this.$enrFieldInput}),this.$ocrFieldFd&&this.$ocrFieldFd.length>0&&this._events.emit(this.strLoaderClose,{$trigger:this.$ocrFieldFd}),this.$ocrFieldZnr&&this.$ocrFieldZnr.length>0&&this._events.emit(this.strLoaderClose,{$trigger:this.$ocrFieldZnr}),this.unsetError(),this.setError(this.$errorMessageServer),this.$previewPicture.attr("src",this.config.enrOcr.nopictureSrc),this.$previewPicture.show()}})}(jQuery),function($){T.Module.TypeaheadController.StateContainer=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject)},_getSuggestionOptions(response){const result=[];for(let element of response)result.push({value:element.value,name:element.value});return result},_isValidResponse:response=>null!=response&&Array.isArray(response),_initField($field){!1!==this.determineStateContainer($field)?(this.stateRequest=this.$stateContainer.data("state-ajax"),this.alwaysUpdateErrorState=!0):console.error("State container not found so component stops work!",this)},determineStateContainer($field){this.$stateContainer=null;const selector=`.${$field.data("state-unique-css-class")||"js-state-container"}`,closest_state_container=$field.closest("form").find(selector)[0]||null;return null===closest_state_container?(console.warn(`No state container found with selector ${selector}!`,this),!1):(this.$stateContainer=$(closest_state_container),!0)},hasStateContainer(){return void 0!==this.$stateContainer&&null!==this.$stateContainer},_updateErrorState(field_value){"string"==typeof field_value&&field_value.length>0?this.executeAjaxStateUpdate(field_value):this.$stateContainer.empty()},_shouldShowValidation:()=>!1,_onFocusField(){this.updateErrorState()},_isSingleMatch(response,suggestion_options,input_value){if(!1===(suggestion_options||[]).length>0)return!1;const first_option=this.validateValueToString(suggestion_options[0].value);return input_value=this.validateValueToString(input_value),first_option.toLowerCase()===input_value.toLowerCase()},validateValueToString(value){switch(typeof value){case"string":return value;case"number":return value.toString();default:return""}},executeAjaxStateUpdate(field_value){let contentType="application/x-www-form-urlencoded; charset=utf-8";"json"===this.stateRequest.dataType.toLowerCase()&&(contentType="application/json; charset=utf-8"),$.ajax({url:this.stateRequest.url,cache:!1,type:this.stateRequest.method,dataType:this.stateRequest.dataType,contentType:"get"!==this.stateRequest.method.toLowerCase()&&contentType,data:{term:field_value},success:(result,textStatus,jqXHR)=>(this.$stateContainer.html(result),T.Utils.initializeModules(this.$stateContainer),null!=this.config.eventTracking&&this.lastTrackedValue!=field_value&&(this._events.emit("tracking:generic",{trackType:this.config.eventTracking.trackType,trackData:$.extend({field_value:field_value},this.config.eventTracking.trackData)}),this.lastTrackedValue=field_value),!0),error:(jqXHR,textStatus,errorThrown)=>!1})}})}
7(jQuery),function($){T.Utils&&T.Utils.registerSlideMarkupCloned(function(data){const $videoComponents=data.$component.find('[data-t-name="Video"][data-t-decorator="ClipLister"]');$videoComponents.length>0&&$videoComponents.each(function(index,videoComponent){const $videoComponent=$(videoComponent),clonedVideoId=`${$videoComponent.data("video-id")}_${data.slideClonedId}`;$videoComponent.attr("data-video-id",clonedVideoId),$videoComponent.data("video-id",clonedVideoId),data.$component.find(".video-content").attr("id",clonedVideoId)})}),T.Module.VideoController.ClipLister=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject)},_setupVideo(){this._parent._setupVideo();const viewport=T.Utils.getViewport();this.posterDefined=null!=this.$videoComponent.data("poster-image"),this.requestKey=this.$videoComponent.data("requestkey"),this.videoId=this.$videoComponent.data("video-id"),this.slot=this.$videoComponent.data("slot"),this.keytype=this.$videoComponent.data("keytype"),this.size=this.$videoComponent.data("size"),this.lang=this.$videoComponent.data("lang"),this.customerNumber=this.$videoComponent.data("customer-no"),this.keepMuted=this.$videoComponent.data("keep-muted");const requestKeyVp1=this.$videoComponent.data("requestkeyVp1"),requestKeyVp2=this.$videoComponent.data("requestkeyVp2"),requestKeyVp3=this.$videoComponent.data("requestkeyVp3");"desktop"===viewport&&requestKeyVp3?this.requestKey=requestKeyVp3:"tablet"===viewport&&requestKeyVp2?this.requestKey=requestKeyVp2:"mobile"===viewport&&requestKeyVp1&&(this.requestKey=requestKeyVp1),this.inLooping=!1,this.$videoWrapper=this.$videoComponent.find(".video-wrapper"),T.Commons.ScriptLoader.loadOnceCliplisterLibrary(()=>{this.initializeCliplister()})},_play(){this._parent._play(),this.player.play()},_pause(){this._parent._pause(),this.player.pause()},_stop(){this._parent._stop(),this.player.stop()},_showControls(){this._parent._showControls()},_hideControls(){this._parent._hideControls()},_isSeeking(){return this._parent._isSeeking(),!1},_preloadStream(){this._parent._preloadStream()},_mute(){this._parent._mute(),this.player.mute()},_unmute(){this._parent._unmute(),this.player.unmute()},_getCurrentTime(){return this._parent._getCurrentTime(),this.player.getTimePlayed()},_getDuration(){return this._parent._getDuration(),this.player.getDuration()},_setProgressPlayed(time){this._parent._setProgressPlayed(time),this.player.setTimePlayed(time)},getPlayerType:()=>"cliplister",getVideoId(){return this.requestKey},initializeCliplister(){if(this.playerConfig)return;this.playerConfig={parentId:this.videoId,assetKeys:[this.requestKey],customer:this.customerNumber,keyType:this.keytype,loop:this.looping};let playButtonImage,videoControls,cliplisterUrl="https://mycliplister.com/static/viewer/assets/skins";if(null!=this.slot&&this.slot.length>0&&(this.playerConfig.slot=this.slot),null!=this.lang&&this.lang.length>0&&(this.playerConfig.languages=[this.lang]),this.playerConfig.stage={width:"100%",aspectRatio:"asset"},this.playerConfig.plugins={ClickableVideo:{layer:1}},this.playerConfig.plugins.Tracking={active:!0,interval:1,separator:";",events:["seek"],timestampFormat:"Y-MM-DD_hh:mm:ss:fff_",timezone:0},void 0!==T.Utils.video.cliplister&&void 0!==T.Utils.video.cliplister.skinId){let skinId=T.Utils.video.cliplister.skinId+"/";videoControls=cliplisterUrl+"/bsh/"+skinId+"controls.html",playButtonImage=cliplisterUrl+"/bsh/"+skinId+"img/playButton.png",this.playerConfig.backgroundColor="#ffffff",this.playerConfig.plugins.PlayButton={id:"playButton",layer:5,image:playButtonImage,width:100,height:100}}else videoControls=cliplisterUrl+"/default/controls.html";this.neverShowControls?(this.playerConfig.backgroundvideo="always",this.playerConfig.autoplay=!1):(this.playerConfig.plugins.InnerControls={layer:2,id:"controls",blacklist:["share","quality","playback-speed"],template:{type:"external",source:videoControls}},this.hideFullscreenControl&&this.playerConfig.plugins.InnerControls.blacklist.push("fullscreen-enter")),"undefined"!=typeof Cliplister?(this.player=new Cliplister.Viewer(this.playerConfig),this.player.onReady(()=>this.notifyStreamInitialized()),this.player.onPlay(()=>this.onVideoPlay()),this.player.onPause(()=>this.onVideoPause()),this.player.onStop(()=>this.onVideoStop()),this.player.onFinish(()=>this.onVideoFinish()),this.player.onTrack(tracking=>this.onVideoTrackedEvent(tracking)),this.notifyPlayerInitialized()):console.error("Cliplister is not defined, it's blocked or not available")},onVideoPlay(){this.isCliplisterLoopingEvent()?this.isInLooping=!1:(this.notifyPlaying(),this.keepMuted&&this.player.mute())},onVideoPause(){this.notifyPaused(),this.player.mute()},onVideoStop(){this.isCliplisterLoopingEvent()||(this.notifyStopped(),this.player.mute())},onVideoFinish(){this.looping?this.isInLooping=!0:(this.notifyStopped(),this.player.mute())},onVideoTrackedEvent(tracking){tracking.includes("seek")&&this.notifySeeking()},isCliplisterLoopingEvent(){return this.isInLooping&&0===this._getCurrentTime()}})}(jQuery),function($){T.Module.VideoController.Html5=T.createDecorator({start(resolve,reject){this.isInLooping=!1,this._parent.start(resolve,reject)},_setupVideo(){this._parent._setupVideo(),this.$video=this.$videoComponent.find("video"),this.$source=this.$video.find("source").last(),this.videoElement=this.$video.get(0),this.buildSrc(),this.$video.on("play seeked pause ended",e=>{"play"!==e.type?"pause"!==e.type?"ended"!==e.type?"seeked"===e.type&&this.onSeeked():this.onEnded():this.onPause():this.onPlay()}),this.$video.on("canplay",()=>{this.notifyStreamInitialized()}),(T.Utils.isIE()||"edge"===T.Utils.browserName)&&this.notifyStreamInitialized(),this.$video.on("canplaythrough",()=>{this.notifyStreamInitialized()}),this.$source.on("error",()=>{this.error("error while fetching stream")}),this.notifyPlayerInitialized(),this.neverShowControls&&this.$videoComponent.click(()=>{this.isStatePlaying()?this.pause(!0):this.play()})},buildSrc(){if(this.$source.length)return;const viewport=T.Utils.getViewport(),src=this.$videoComponent.data("src"),srcVp1=this.$videoComponent.data("srcVp1"),srcVp2=this.$videoComponent.data("srcVp2"),srcVp3=this.$videoComponent.data("srcVp3"),source=document.createElement("source");source.type=this.$videoComponent.data("videoType"),source.src="desktop"===viewport&&srcVp3?srcVp3:"tablet"===viewport&&srcVp2?srcVp2:"mobile"===viewport&&srcVp1?srcVp1:src,this.$video.append(source),this.$source=$(source)},onPlay(){this.isInLooping?this.isInLooping=!1:this.notifyPlaying()},onSeeked(){this.wasSeeking=!0,this.notifySeeking(),this.resetWasSeekingFlagOnNoFutherInteraction()},onPause(){this.looping&&this._getCurrentTime()===this._getDuration()||this.notifyPaused()},onEnded(){if(this.looping)return this.isInLooping=!0,void this.videoElement.play();this.notifyStopped()},resetWasSeekingFlagOnNoFutherInteraction(){clearTimeout(this.seekResetTimeout),this.seekResetTimeout=setTimeout(()=>{this.wasSeeking=!1},1e3)},_play(){this._parent._play(),this.videoElement.play()},_pause(){this._parent._pause(),this.videoElement.pause()},_stop(){this._parent._stop(),this.videoElement.pause()},_showControls(){this._parent._showControls(),this.$video.prop("controls")||this.$video.prop("controls",!0)},_hideControls(){this._parent._hideControls(),this.$video.prop("controls")&&this.$video.prop("controls",!1)},_isSeeking(){return this._parent._isSeeking(),this.$video.prop("seeking")},_preloadStream(){this._parent._preloadStream(),"none"===this.$video.prop("preload")&&this.$video.prop("preload","metadata"),this.$video.length>0&&this.videoElement.load()},_mute(){this._parent._mute(),this.$video.prop("muted",!0)},_unmute(){this._parent._unmute(),!0===this.$video.prop("muted")&&this.$video.prop("muted",!1)},_getCurrentTime(){return this._parent._getCurrentTime(),this.$video.prop("currentTime")},_getDuration(){return this._parent._getDuration(),this.$video.prop("duration")},getPlayerType:()=>"html5",getVideoId(){return this.$videoComponent.data("src")},_setProgressPlayed(time){this._parent._setProgressPlayed(time),this.$video.prop("currentTime",time)}})}
7(jQuery),function($){T.Utils&&T.Utils.registerSlideMarkupCloned(function(data){const $videoComponents=data.$component.find('[data-t-name="Video"][data-t-decorator="Vimeo"]');$videoComponents.length>0&&$videoComponents.each(function(index,videoComponent){const $videoComponent=$(videoComponent),clonedVideoId=`${$videoComponent.data("video-id")}_${data.slideClonedId}`;$videoComponent.attr("data-video-id",clonedVideoId),$videoComponent.data("video-id",clonedVideoId),data.$component.find(".video-content").attr("id",clonedVideoId)})}),T.Module.VideoController.Vimeo=T.createDecorator({determinedDuration:-1,determinedCurrentTime:0,determinedEnded:!1,volumeMuted:0,volumeUnMuted:1,start(resolve,reject){this._parent.start(resolve,reject)},_setupVideo(){this._parent._setupVideo(),this.posterDefined=null!=this.$videoComponent.data("poster-image"),this.videoId=this.$videoComponent.data("video-id"),this.determinedEnded=!1,this.$videoWrapper=this.$videoComponent.find(".video-wrapper");T.Commons.ScriptLoader.loadOnceVimeoLibrary(()=>this.initializeVimeo())},_play(){this._parent._play(),this.player.play().catch(error=>console.error("Could not play vimeo video",error))},_pause(){this._parent._pause(),this.player.pause().catch(error=>console.error("Could not pause vimeo video",error))},_stop(){this._parent._stop(),this.player.pause().catch(error=>console.error("Could not stop vimeo video",error))},_showControls(){this._parent._showControls()},_hideControls(){this._parent._hideControls()},_isSeeking(){return this._parent._isSeeking(),!1},_preloadStream(){this._parent._preloadStream()},_mute(){this._parent._mute(),this.player.setVolume(this.volumeMuted)},_unmute(){this._parent._unmute(),this.player.setVolume(this.volumeUnMuted)},_getCurrentTime(){return this._parent._getCurrentTime(),this.determinedCurrentTime},_getDuration(){return this._parent._getDuration(),this.determinedDuration},_isVideoEnded(){return this._parent._isVideoEnded(),this.determinedEnded},getPlayerType:()=>"Vimeo",getVideoId(){return this.videoId},initializeVimeo(){this.buildSrc();const iframe=this.$videoComponent.find(".video-content iframe")[0];this.player=new Vimeo.Player(iframe),this.player.setAutopause(!1),this.player.on("loaded",()=>{this.player.getDuration().then(duration=>{this.determinedDuration=duration,this.notifyStreamInitialized()})}),this.player.on("timeupdate",data=>this.onTimeUpdate(data)),this.player.on("play",()=>this.notifyPlaying()),this.player.on("pause",()=>this.updateEndedState(()=>{this.notifyPaused()})),this.player.on("ended",()=>this.updateEndedState(()=>{this.notifyStopped()})),this.player.on("seeked",()=>{this.notifySeeking()}),this.player.setLoop(this.looping),this.notifyPlayerInitialized()},buildSrc(){const $iframe=$(this.$videoComponent.find(".video-content iframe"));if($iframe.attr("src"))return;const viewport=T.Utils.getViewport(),src=this.$videoComponent.data("src"),srcVp1=this.$videoComponent.data("srcVp1"),srcVp2=this.$videoComponent.data("srcVp2"),srcVp3=this.$videoComponent.data("srcVp3");"desktop"===viewport&&srcVp3?$iframe.attr("src",srcVp3):"tablet"===viewport&&srcVp2?$iframe.attr("src",srcVp2):"mobile"===viewport&&srcVp1?$iframe.attr("src",srcVp1):$iframe.attr("src",src)},onTimeUpdate(data){this.determinedCurrentTime=data.seconds,this.updateEndedState()},updateEndedState(cb){this.player.getEnded().then(ended=>{this.determinedEnded=ended,null!==cb&&void 0!==cb&&cb()})}})}(jQuery),function($){T.Utils&&T.Utils.registerSlideMarkupCloned(function(data){data.$component.find('[data-t-name="Video"] iframe').each((index,frame)=>$(frame).attr("id",data.slideClonedId))}),T.Module.VideoController.Iframe=T.createDecorator({start(resolve,reject){this._parent.start(resolve,reject)},_setupVideo(){this.alreadyInitialized||(this.alreadyInitialized=!0,this._parent._setupVideo(),this.$wrapper=this.$videoComponent.find(".js-video-wrapper"),this.$iframe=this.$videoComponent.find(".js-video-iframe"),this.$iframe.attr("id",`iframe-youtube-${this.$ctx.data("t-id")}`),this.$consentPopover=$(".js-youtubeconsentpopover"),this.consentFeatureEnabled()?(this.consentGiven=!1,window.consentAPI.youtubeConsentCallbacks=window.consentAPI.youtubeConsentCallbacks||[],window.consentAPI.isYoutubeConsentGiven=window.consentAPI.isYoutubeConsentGiven||(callback=>{window.consentAPI.youtubeConsentCallbacks.push(callback)}),this.openLoader(),window.consentAPI.isYoutubeConsentGiven(consentGiven=>{this.playerIsInitialized||(this.consentGiven=consentGiven,consentGiven?(this.openLoader(),T.Commons.ScriptLoader.loadOnceYouTubeLibrary(()=>this.initializeYoutube())):(this.shouldBePlaying=!1,this.videoComponent.setViewportAutoplay(!1),this.closeLoader()))})):(this.consentGiven=!0,T.Commons.ScriptLoader.loadOnceYouTubeLibrary(()=>this.initializeYoutube())))},initializeYoutube(){this.buildSrc(),this.notifyPlayerInitialized()},_play(){this._parent._play(),this.youtubePlayer.playVideo()},canPlay(){return this.consentGiven||!this.consentFeatureEnabled()},requestPlay($playButton=null){this.consentGiven?T.Commons.ScriptLoader.loadOnceYouTubeLibrary(()=>this.initializeYoutube()):this.$consentPopover.trigger("show-popover",[this.videoComponent,$playButton])},_pause(){this._parent._pause(),this.youtubePlayer.pauseVideo()},_stop(){this._parent._stop(),this.youtubePlayer.stopVideo()},_showControls(){this._parent._showControls()},_hideControls(){this._parent._hideControls()},_isSeeking(){return this._parent._isSeeking(),!1},_preloadStream(){this._parent._preloadStream(),this.youtubePlayer=new YT.Player(this.$iframe.attr("id"),{events:{onReady:()=>{this.closeLoader(),this.notifyStreamInitialized()},onStateChange:ev=>this.onStateChangeYoutubePlayer(ev)}
7})},_mute(){this._parent._mute(),"function"==typeof this.youtubePlayer.mute&&this.youtubePlayer.mute()},_unmute(){this._parent._unmute(),"function"==typeof this.youtubePlayer.mute&&this.youtubePlayer.unMute()},_getCurrentTime(){return this._parent._getCurrentTime(),this.youtubePlayer.getCurrentTime()},_getDuration(){return this._parent._getDuration(),this.youtubePlayer.getDuration()},_setProgressPlayed(time){this._parent._setProgressPlayed(time),this.youtubePlayer.seekTo(parseInt(time),!0)},getPlayerType:()=>"youtube",getVideoId(){return this.$videoComponent.data("src")},getPosterUrl($videoComponent){const path=new URL($videoComponent.data("src"),window.location.toString()).pathname.split("/");return`https://img.youtube.com/vi/${path[path.length-1]}/maxresdefault.jpg`},buildSrc(){const viewport=T.Utils.getViewport();let src=this.$videoComponent.data("src");const srcVp1=this.$videoComponent.data("srcVp1"),srcVp2=this.$videoComponent.data("srcVp2"),srcVp3=this.$videoComponent.data("srcVp3");"desktop"===viewport&&srcVp3?src=srcVp3:"tablet"===viewport&&srcVp2?src=srcVp2:"mobile"===viewport&&srcVp1&&(src=srcVp1);const srcAttrs=[],reg=/^https?:/;src.match(reg)&&(src=src.replace(reg,"")),src=location.protocol+src,(src+=src.match(/\?/)?"&":"?").match(/youtube/)&&(srcAttrs.push(`origin=${location.origin}`),srcAttrs.push(`color=${T.Utils.video.youtube.color}`),srcAttrs.push("rel=0")),this.neverShowControls&&srcAttrs.push("controls=0"),this.hideFullscreenControl&&srcAttrs.push("fs=0"),this.$wrapper.addClass("video-wrapper-active");const srcUrl=src+srcAttrs.join("&");this.$iframe.attr("src",srcUrl),this.sourceUrl=srcUrl},isSeek(newState){return newState===YT.PlayerState.UNSTARTED?(this.prevStateForSeekDetect=YT.PlayerState.UNSTARTED,!1):this.prevStateForSeekDetect===YT.PlayerState.UNSTARTED&&newState===YT.PlayerState.BUFFERING?(this.prevStateForSeekDetect=null,!1):this.prevStateForSeekDetect===YT.PlayerState.BUFFERING&&newState===YT.PlayerState.PLAYING||this.prevStateForSeekDetect===YT.PlayerState.BUFFERING&&newState===YT.PlayerState.ENDED||this.prevStateForSeekDetect===YT.PlayerState.PAUSED&&newState===YT.PlayerState.ENDED?(this.prevStateForSeekDetect=null,!0):newState===YT.PlayerState.PAUSED||newState===YT.PlayerState.BUFFERING||this.prevStateForSeekDetect===YT.PlayerState.PAUSED&&newState===YT.PlayerState.BUFFERING?(this.prevStateForSeekDetect=newState,!1):void(this.prevStateForSeekDetect=null)},isSeekBetweenPauseAndPlay(newState){if(newState===YT.PlayerState.PAUSED)return this.timeAtPause=this.youtubePlayer.getCurrentTime(),!1;if(newState===YT.PlayerState.PLAYING&&this.timeAtPause){const timeAtPlay=this.youtubePlayer.getCurrentTime();if(Math.abs(this.timeAtPause-timeAtPlay)>.5)return!0}this.timeAtPause=null},openLoader(){this._events.emit("loader:open",{loaderType:"inline-area",loaderArea:this.$videoComponent,$trigger:this.$videoComponent})},closeLoader(){this._events.emit("loader:close",{$trigger:this.$videoComponent})},consentFeatureEnabled:()=>window.consentAPI&&window.consentAPI.youtubeConsent,onStateChangeYoutubePlayer(e){(this.isSeek(e.data)||this.isSeekBetweenPauseAndPlay(e.data))&&this.notifySeeking(),e.data!==YT.PlayerState.PAUSED?e.data!==YT.PlayerState.PLAYING?e.data===YT.PlayerState.ENDED&&(this.looping?(this.notifySeeking(),this.youtubePlayer.playVideo()):this.notifyStopped()):this.notifyPlaying():this.notifyPaused()}})}(jQuery),function($,doT){T.Module.WebMappingAutocomplete.Baidu=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.jsonConfig=window.storeLocator,this.apKey=this.$ctx.data("baidu-key"),this._events.on("baiduMaps:loaded",data=>this.baiduMapsInitialized(data)),T.Commons.ScriptLoader.loadOnceBaiduMapsApi(this.apKey),resolve()},baiduMapsInitialized(data){return this.geoCoder=new BMap.Geocoder,this._parent.initialized(data)},registerInputField(domElement,cb){return this.autocomplete=new BMap.Autocomplete({types:[],input:domElement,onSearchComplete:e=>{const numberPos=e.getNumPois();if(numberPos>0){const results=[];for(let i=0,end=numberPos,asc=0<=end;asc?i<end:i>end;asc?i++:i--)results.push(this.createAddressString(e.getPoi(i)));return"function"==typeof cb?cb(null,results):void 0}}})},getAutoCompleteSuggestions(searchTerm,$element,cb){},getLatLngByAddress(address,cb){return this.geoCoder.getPoint(address,location=>"function"==typeof cb?cb(null,location,address):void 0)},getLatLngByZipCode(zipCode,cb){throw new Error("currently not implemented")},getAddressByLatLng(latLng,cb){const point=new BMap.Point(latLng.lng,latLng.lat);return this.geoCoder.getLocation(point,geocoderResult=>"function"==typeof cb?cb(null,geocoderResult.point,this.createAddressString(geocoderResult.addressComponents)):void 0)},createAddressString(addressComponents){let result="";return addressComponents.street.length>0&&(result+=addressComponents.street,addressComponents.streetNumber.length>0&&(result+=` ${addressComponents.streetNumber}`)),addressComponents.city.length>0&&(result+=result.length>0?", ":"",result+=addressComponents.city),addressComponents.district.length>0&&(result+=result.length>0?", ":"",result+=addressComponents.district),addressComponents.province.length>0&&(result+=result.length>0?", ":"",result+=addressComponents.province),addressComponents.business.length>0&&(result+=result.length>0?", ":"",result+=addressComponents.business),result}})}(jQuery),function($,doT){T.Module.WebMappingAutocomplete.Google=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.$ctx=$(this._ctx),this.googleGeocodeApiUrl="https://maps.googleapis.com/ma
7ps/api/geocode/json",this.jsonConfig=window.storeLocator,T.Commons.ScriptLoader.registerGoogleMapsApiModules("places"),this._events.on("googleMaps:loaded",data=>this.googleMapsInitialized(data)),this._events.on("t.sync",()=>this.sync()),resolve()},sync(){this.isSynced||(this.isSynced=!0,T.Commons.ScriptLoader.loadOnceGoogleMapsApi({channel:this.$ctx.data("google-channel"),client:this.$ctx.data("google-client"),key:this.$ctx.data("google-key")}))},googleMapsInitialized(data){return this.googleMaps=data.googleMaps,this.googleMapsLoaded=!0,this._parent.initialized(this.jsonConfig)},getAutoCompleteSuggestions(searchTerm,$element,cb){const options={input:searchTerm,types:["geocode"]};return null!=this.jsonConfig.countryCode&&(options.componentRestrictions={country:this.jsonConfig.countryCode}),(new this.googleMaps.places.AutocompleteService).getPlacePredictions(options,(suggestions,status)=>{if(status===this.googleMaps.places.PlacesServiceStatus.OK){if(suggestions.length>0){const results=[];for(let i=0,end=suggestions.length,asc=0<=end;asc?i<end:i>end;asc?i++:i--)results.push(suggestions[i].description);return cb(null,results)}return cb(new Error("No suggestions found"))}return status===this.googleMaps.places.PlacesServiceStatus.ZERO_RESULTS?cb(new Error("no results")):cb(new Error("Error while fetching suggestions"))})},getLatLngByAddress(address,cb){const options={address:address};return null!=this.jsonConfig.countryCode&&(options.componentRestrictions={country:this.jsonConfig.countryCode}),this.callGeocoderInternal(options,cb)},getLatLngByZipCode(zipCode,cb){return this.getLatLngByAddress(zipCode,cb)},callGeocoderInternal(options,cb){return this.geoCoder||(this.geoCoder=new this.googleMaps.Geocoder),this.geoCoder.geocode(options,(results,status)=>{if(status===this.googleMaps.GeocoderStatus.OK){if(results[0]){const address=results[0].formatted_address,location={lat:results[0].geometry.location.lat(),lng:results[0].geometry.location.lng()};results[0].address_components;let userCountryCode="";return $.each(results[0].address_components,function(index,addressComponent){if("country"===addressComponent.types[0])return userCountryCode=addressComponent.short_name}),cb(null,location,address,userCountryCode)}return cb(new Error("No location for address found"))}return cb(new Error("Error while fetching geocode"))})},getAddressByLatLng(latLng,cb){const options={location:latLng};return this.callGeocoderInternal(options,cb)}})}(jQuery,window.doT),function($){T.Module.WebMappingImagery.Baidu=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),this.apKey=this.$ctx.data("baidu-key"),this._events.on("baiduMaps:loaded",data=>this.baiduMapsInitialized(data)),T.Commons.ScriptLoader.loadOnceBaiduMapsApi(this.apKey),resolve()},sync(){this.isSynced||(this._parent.sync(),this.isSynced=!0)},baiduMapsInitialized(data){return this._parent.initialized(window.storeLocator)},createMap(domElement,centerCoordinate,zoomLevel){if(null==this.map)return this.map=new BMap.Map(domElement),this.map.centerAndZoom(centerCoordinate,zoomLevel),this.mapType1=new BMap.MapTypeControl({mapTypes:[BMAP_NORMAL_MAP,BMAP_HYBRID_MAP]}),this.mapType2=new BMap.MapTypeControl({anchor:BMAP_ANCHOR_TOP_LEFT}),this.overView=new BMap.OverviewMapControl,this.overViewOpen=new BMap.OverviewMapControl({isOpen:!0,anchor:BMAP_ANCHOR_BOTTOM_RIGHT})},createCoordinate:coords=>new BMap.Point(coords.lng,coords.lat),setMapCenter(centerCoordinate){return null!=this.map?this.map.setCenter(centerCoordinate):void 0},setZoomLevel(zoomLevel){return null!=this.map?this.map.setZoom(zoomLevel):void 0},hasMap(){return null!=this.map},createMapBounds:()=>({mapBounds:new BMap.Bounds,extend(position){return this.mapBounds.extend(position)},destroy(){},getCenter(){return this.mapBounds.getCenter()}}
7),fitToBounds(bounds){bounds.mapBounds.getSouthWest(),bounds.mapBounds.getNorthEast();return this.map.setViewport([bounds.mapBounds.getNorthEast(),bounds.mapBounds.getSouthWest()])},setEnableControls(flag){if(null!=this.map)return flag?(this.map.enableDoubleClickZoom(),this.map.enableScrollWheelZoom(),this.map.addControl(this.mapType1),this.map.addControl(this.mapType2),this.map.addControl(this.overView),this.map.addControl(this.overViewOpen),this.map.enableDragging()):(this.map.disableDoubleClickZoom(),this.map.disableDragging(),this.map.disableScrollWheelZoom(),this.map.removeControl(this.mapType1),this.map.removeControl(this.mapType2),this.map.removeControl(this.overView),this.map.removeControl(this.overViewOpen))},getLayerElement(){return null!=this.map?this.map.getContainer():void 0},createMarker(markerLocation,contentElement,markerWidth,markerHeight){const targetWidth=-markerWidth/2,targetHeight=-markerHeight;$(contentElement).addClass("baidu");const marker=new BMapLib.RichMarker(contentElement,markerLocation,{enableDragging:!1,anchor:new BMap.Size(targetWidth,targetHeight)});return this.map.addOverlay(marker),$(marker.getContent()).parent().css("background-color","rgba(255,255,255,0)"),{marker:marker,setVisible(flag){return flag?$(this.marker.getContent()).removeClass("hidden"):$(this.marker.getContent()).addClass("hidden")},getPosition(){return this.marker.getPosition()},getContent(){return $(this.marker.getContent())},addMouseOverListener(cb){return this.marker.addEventListener("onmouseover",cb)},addMouseOutListener(cb){return this.marker.addEventListener("onmouseout",cb)},addClickListener(cb){return this.marker.addEventListener("onclick",cb)}}},destroyMarker(marker){return null!=this.map?this.map.removeOverlay(marker.marker):void 0},triggerMapResize(){if(null!=this.map)return BMapLib.EventWrapper.trigger(this.map,"resize")},addResizeListener(cb){return BMapLib.EventWrapper.addDomListener(this.map,"resize",cb)},getRouteUrl:(currentLocation,dealerCoords)=>`https://api.map.baidu.com/marker?location=${dealerCoords.lat},${dealerCoords.lng}&output=html`})}(jQuery),function($){T.Module.WebMappingImagery.Google=T.createDecorator({start(resolve,reject){return this._parent.start(resolve,reject),T.Commons.ScriptLoader.registerGoogleMapsApiModules("richmarker",!0),this._events.on("googleMaps:richmarker:loaded",()=>this.richMarkerInitialized()),this._events.on("googleMaps:loaded",data=>this.googleMapsInitialized(data)),resolve()},sync(){this.isSynced||(this._parent.sync(),this.isSynced=!0,T.Commons.ScriptLoader.loadOnceGoogleMapsApi({channel:this.$ctx.data("google-channel"),client:this.$ctx.data("google-client"),key:this.$ctx.data("google-key")},!0))},googleMapsInitialized(data){return this.jsonConfig=data.jsonConfig,this.googleMaps=data.googleMaps,this.googleMapsLoaded=!0,this.checkInitStatus()},richMarkerInitialized(){return this.richMarkerLoaded=!0,this.checkInitStatus()},checkInitStatus(){if(this.richMarkerLoaded&&this.googleMapsLoaded)return this._parent.initialized(this.jsonConfig)},createMap(domElement,centerCoordinate,zoomLevel){if(null==this.map)return this.map=new this.googleMaps.Map(domElement,{center:centerCoordinate,zoom:zoomLevel})},createCoordinate(coords){return new this.googleMaps.LatLng(coords.lat,coords.lng)},setMapCenter(centerCoordinate){return null!=this.map?this.map.panTo(centerCoordinate):void 0},setZoomLevel(zoomLevel){return null!=this.map?this.map.setZoom(zoomLevel):void 0},hasMap(){return null!=this.map},destroyMarker(marker){return this.googleMaps.event.clearInstanceListeners(marker),marker.marker.setMap(null)},createMapBounds(){return{mapBounds:new this.googleMaps.LatLngBounds,extend(position){return this.mapBounds.extend(position)},destroy(){},getCenter(){return this.mapBounds.getCenter()}}},fitToBounds(bounds){return null!=this.map?this.map.fitBounds(bounds.mapBounds):void 0},setEnableControls(flag){return null!=this.map?this.map.setOptions({disableDoubleClickZoom:!flag,draggable:flag,scrollwheel:flag,panControl:flag,disableDefaultUI:!flag}):void 0},getLayerElement(){return null!=this.map?this.map.getDiv():void 0},triggerMapResize(){if(null!=this.map)return this.googleMaps.event.trigger(this.map,"resize")},addResizeListener(cb){return this.googleMaps.event.addDomListener(window,"resize",cb)},createMarker(markerLocation,contentElement){return $(contentElement).addClass("google"),{marker:new RichMarker({map:this.map,position:markerLocation,draggable:!1,flat:!0,anchor:RichMarkerPosition.BOTTOM,content:contentElement}),setVisible(flag){return this.marker.setVisible(flag)},getPosition(){return this.marker.getPosition()},getContent(){return $(this.marker.content)},addMouseOverListener(cb){return this.marker.addListener("mouseover",cb)},addMouseOutListener(cb){return this.marker.addListener("mouseout",cb)},addClickListener(cb){return this.marker.addListener("click",cb)}}},getRouteUrl:(currentLocation,dealerCoords)=>
7`https://maps.google.com/maps?saddr=${currentLocation.lat},${currentLocation.lng}&daddr=${dealerCoords.lat},${dealerCoords.lng}`})}(jQuery);
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.