{"version":3,"sources":["JScript/Shims/querystring-shim.js","bower_components/komplett-pubsub/src/pubsub.js","bower_components/ksc-ubo/dist/js/main.js","bower_components/ksc-breakpoint-notifier/dist/js/main.js","JScript/Shims/knockout-shim.js","bower_components/ksc-alert/dist/js/main.js","JScript/Shims/datalayer-shim.js","bower_components/ksc-ubo/dist/js/custombindings.js","bower_components/ksc-alert/dist/js/custombindings.js","PageDependentComponents/RichRelevance/promoService.js","PageDependentComponents/RichRelevance/events.js","JScript/Common/TextDecoder.js","JScript/Common/AtobUtf8.js","JScript/Common/cookieReader.js","JScript/Common/requestContext.js","JScript/Common/helper.js","PageDependentComponents/RichRelevance/RichRelevance.js","PageDependentComponents/BreakpointNotifier/BreakpointNotifierViewModel.js","PageDependentComponents/BreadCrumbs/BreadCrumbsViewModel.js","bower_components/ksc-numeric-string-format/dist/bundle.js","Layout/events.js","Layout/LayoutViewModel.js","JScript/EmptyViewModel.js","JScript/Common/whenContext.js","JScript/Common/fastRequire.js","JScript/Common/viewModelLoader.js","JScript/Common/pushStateNavigationService.js","JScript/Common/colorChanger.js","Components/CheckSession/CheckSessionViewModel.js"],"names":["define","querystring","publish","name","subscribers","data","forEach","subscriber","apply","subscribeTo","Error","index","indexOf","push","unsubscribeFrom","splice","addDispose","target","dispose","__disposeList__","originalDispose","call","this","extendEvent","event","subscribeSubscribers","unsubscribeSubscribers","extendedEvent","arguments","length","autoDispose","dont","onlyOnce","onceOnlySubscriber","isSubscribedTo","isUnsubscribedFrom","toString","extend","events","i","create","arg1","arg2","pubsub","uboOpened","uboClosed","isXs","isSm","isMd","isLg","screenSizeChanged","size","fullResponsive","screenSize","screenXs","screenSm","screenMd","screenLg","window","matchMedia","matches","ko","ScreenSize","initObject","self","states","currentScreenSize","state","observable","publishObservable","lg","md","sm","xs","subscribe","value","trigger","publishEvents","currentState","notify","addEventListener","BreakpointNotifier","init","options","undefined","kscBreakpointNotifier","uboService","contentModel","id","getNewId","contentViewModel","actionElement","topLeft","header","isOkCancelDialog","htmlOutput","rendered","contentRendered","componentId","zIndex","getLatestZIndex","open","screenIsXs","hasActionElement","neverOpenUpwards","uboClasses","computed","uboClass","close","closeSpecific","closeOnBackgroundClick","closeLatest","components","register","viewModel","bindingHandlers","uboKeyTrap","renderedHandler","err","template","UboViewModel","Object","assign","acceptCallback","cancelCallback","acceptButtonString","cancelButtonString","cancel","accept","UboOkCancelViewModel","counter","lastDeletedVm","ubos","observableArray","defaultLoaderIndicator","aSyncCall","url","successCallback","delayHandler","setTimeout","fetch","then","response","text","html","clearTimeout","publishUboOpened","createUbo","uboViewModel","openAsync","aSyncContentModel","loader","openSync","syncContentModel","content","openOKCancelSync","okCancelContentModel","openOKCancelAsync","removedUboViewModel","closeAllUbos","remove","unregister","focus","backgroundOverlay","maxWidth","maxHeight","UboContentModel","UboSyncContentModel","uboAsyncContentModel","uboContentModel","uboOkCancelContentModel","uboOkCancelViewModel","uboSyncContentModel","alertAdded","message","alertLevel","receiver","defaultMessageWhenNotResolved","alertArrayAdded","alertArray","removeAlerts","removeAlert","toggleWrapperCss","cssClass","toggle","kscAlertSticky","element","valueAccessor","unwrap","isOutOfView","elementInitPos","offsetTop","isObservable","scrollY","pageYOffset","scrollVal","stickyCss","alerts","css","wrapperCss","isAnyAlertVisible","resolveMessageCode","code","messages","hasOwnProperty","utils","arrayFilter","alert","isVisible","addAlert","level","toggleSticky","alreadyExistingAlert","returningItem","arrayFirst","item","str1","str2","localeCompare","alertWithAlreadyExistingMessage","hasFocus","closeAlert","alertsChanged","alertLevelClass","iconClass","hasAlerts","toggleAlert","modelChanged","toLowerCase","removeAll","isMessageToNoSpecifiedReceiverAndCurrentReceiverIsGlobal","isMessageToCurrentReceiver","isTheRightReceiver","ViewModel","someOption","dataLayer","positionCalculator","update","object","topLeftObservable","callback","doResizing","resize","removeEventListener","isScreenXs","elementPosition","elementViewportPosition","isIE11","MSInputMethodContext","windowWidth","innerWidth","windowHeight","innerHeight","style","top","getBoundingClientRect","left","pageXOffset","offsetWidth","right","offsetHeight","bottom","elementHeight","Math","max","uboMove","_keyTrapWrapper","beforeSpan","document","createElement","tabIndex","beforeFocus","afterSpan","afterFocus","keyTrap","selectedObj","scope","querySelector","insertAdjacentElement","uboOnKeyUp","unwrapObservable","handler","keyCode","key","when","uboContentRendered","uboNonEmptyText","innerText","setTargetAndReportUrls","rrPromos","promo","link","queryData","targetUrl","destination_URL","split","parse","ct","reportClickUrl","parameterToRemove","re","RegExp","replace","removeLinkParameterContent","updatedPageData","pageData","reset","addToCart","sku","recsLoaded","recs","promosLoaded","promos","navLoaded","navs","TextDecoderLite","decodeUtf8Char","str","decodeURIComponent","String","fromCharCode","prototype","decode","bytes","buf","start","end","res","tmp","min","Infinity","utf8Slice","lookup","revLookup","Arr","Uint8Array","Array","len","charCodeAt","encodeChunk","uint8","num","output","join","fromByteArray","extraBytes","parts","len2","toByteArray","b64","lens","validLen","getLens","placeHoldersLen","arr","_byteLength","curByte","base64js","decoder","TextDecoder","getCookieValue","a","b","cookie","match","pop","b64DecodeUnicode","getJsonCookieValue","cookieName","JSON","readCookieValueAsObject","parameter","results","exec","getParameterFromCookieByName","getBase64CookieAsObject","setBase64CookieFromObject","expirationDate","stringify","btoa","encodeURIComponent","p1","toGMTString","getJwtTokenAsObject","base64","rightPad","cookieReader","customerGroup","cookieData","anonymousId","exp","displayName","cn","customerName","customerNumber","aid","isAnonymous","ann","isProfileAuthenticated","ia","isBusinessCustomer","cmg","profileId","pid","isInLoyaltyClub","kc","isCrm","cid","visitGuid","vg","komplettId","kid","sessionId","komidsid","triggerCustomEvent","eventName","CustomEvent","detail","createEvent","initCustomEvent","dispatchEvent","promoService","helper","requestContext","isEnabled","requestData","initialized","previousResult","applyNewPageData","publishRecs","publishPromos","publishNavs","anonymous","showAsNetPrices","accountId","populateRequestData","Promise","resolve","promoPlacementIds","recsPlacementIds","location","pathname","pageType","mutateInitObject","pageDataUpdated","cfrad","URLSearchParams","search","get","method","headers","Accept","Content-Type","body","credentials","ok","json","getPlacementsFromService","result","placements","script","rrAnnotations","rr_annotations_array","rr_experience_browser","src","async","getElementsByTagName","appendChild","runRichRelevanceExperianceBrowser","e","cartModel","productsInCart","productsIds","placementIds","do","notifier","crumbs","model","links","hereText","here","isCurrentLocationVisible","showCurrentLocationOnSmallScreens","r","exports","module","amd","NumericStringFormat","n","t","o","l","m","c","d","defineProperty","configurable","enumerable","__esModule","default","p","s","toCurrencyString","parseFloat","isNaN","u","toFixed","toUpperCase","disableScrolling","megaMobileNavOpen","layoutEvents","kscUbo","breakpointNotifier","lockScrollOnBodySm","lockScrollOnBodyXs","lockScrollOnBody","pureComputed","setPosition","lastPosition","scrollTo","scrollTop","func","unsubscribe","reaction","bind","eventSubscribers","doAndDont","obj","whenSomething","destroyed","childContext","createContext","childContexts","destroyContext","listener","bubble","removeListener","eventListeners","addTimeout","ms","timeout","timeouts","removeTimeout","addInterval","interval","setInterval","intervals","removeInterval","clearInterval","thisIsDestroyed","onDestroyListeners","destroyChildContexts","context","map","delay","cb","wrapper","now","Date","requestAnimationFrame","wrap","rethrow","onerror","error","reject","dep","onload","require","fastRequire","whenContext","lazyLoadWhenVisible","observed","Map","observer","IntersectionObserver","entries","entry","isIntersecting","intersectionRatio","unobserve","delete","threshold","rootMargin","set","observe","domNodeDisposal","addDisposeCallback","makeObserver","loadViewModel","toArray","querySelectorAll","concat","viewModelName","getAttribute","parentNode","hasAttribute","hasParentViewModelElement","lazyLoadAndApplyViewModel","domData","clear","applyBindings","loadNestedViewModel","parentContext","createChildContext","bindingContext","loadAndApplyViewModel","initObjectName","elem","paramsAttribute","params","bindingProvider","instance","nativeBindingProviderInstance","parseBindingsString","valueAccessors","bindingParams","rawParamComputedValues","paramName","disposeWhenNodeIsRemoved","paramValueComputed","paramValue","peek","isActive","read","write","isWriteableObservable","getComponentParamsFromCustomElement","console","getModel","tryApply","requireModules","arrayLike","slice","fallback","supported","history","pathnameWhenEmptyQueryString","pushState","replaceState","color","amount","usePound","parseInt","g","newColor","substitutedUtlWithSessionId","checkSessionUrl","isValid","href"],"mappings":"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","file":"viewModels-bundle.js","sourceRoot":"/","sourcesContent":["/* global querystring */\r\ndefine(\"querystring\", [], function (\r\n) {\r\n return querystring;\r\n});","define([], function () {\r\n\r\n function publish(name, subscribers, data) {\r\n subscribers.forEach(function (subscriber) {\r\n subscriber.apply(subscriber, data);\r\n });\r\n }\r\n\r\n function subscribeTo(name, subscribers, subscriber) {\r\n if (!subscriber) {\r\n throw new Error('Subscriber to event ' + name + ' must be a function, but was ' + subscriber);\r\n }\r\n\r\n var index = subscribers.indexOf(subscriber);\r\n if (index < 0)\r\n subscribers.push(subscriber);\r\n return index < 0;\r\n }\r\n\r\n function unsubscribeFrom(name, subscribers, subscriber) {\r\n var index = subscribers.indexOf(subscriber);\r\n if (index >= 0)\r\n subscribers.splice(index, 1);\r\n return index >= 0;\r\n }\r\n\r\n function addDispose(target, dispose) {\r\n if (!target.__disposeList__) {\r\n target.__disposeList__ = [];\r\n\r\n if (!target.dispose) {\r\n target.dispose = function() {\r\n target.__disposeList__.forEach(function(call) {\r\n call();\r\n });\r\n }\r\n } else {\r\n var originalDispose = target.dispose;\r\n target.dispose = function () {\r\n originalDispose.call(this);\r\n target.__disposeList__.forEach(function (call) {\r\n call();\r\n });\r\n }\r\n }\r\n }\r\n\r\n target.__disposeList__.push(dispose);\r\n }\r\n\r\n function extendEvent(name, event) {\r\n event.subscribers = [];\r\n event.subscribeSubscribers = [];\r\n event.unsubscribeSubscribers = [];\r\n\r\n var extendedEvent = function () {\r\n if (arguments.length == 1 && typeof arguments[0] === \"function\") {\r\n extendedEvent.subscribeTo(arguments[0]);\r\n } else {\r\n extendedEvent.publish.apply(null, arguments);\r\n }\r\n }\r\n\r\n extendedEvent.subscribeTo = function (subscriber) {\r\n var wasNew = subscribeTo(name, event.subscribers, subscriber);\r\n if (wasNew) {\r\n publish(name + \".isSubscribedTo\", event.subscribeSubscribers, [function () { subscriber.apply(subscriber, arguments); }]);\r\n }\r\n\r\n return {\r\n autoDispose: function(target) {\r\n addDispose(target, function() { extendedEvent.dont(subscriber) });\r\n }\r\n }\r\n };\r\n\r\n extendedEvent.subscribeTo.onlyOnce = function(subscriber) {\r\n extendedEvent.subscribeTo(function onceOnlySubscriber() {\r\n subscriber.apply(this, arguments);\r\n extendedEvent.unsubscribeFrom(onceOnlySubscriber);\r\n });\r\n };\r\n\r\n extendedEvent.publish = function () {\r\n publish(name, event.subscribers, arguments);\r\n };\r\n\r\n extendedEvent.dont = function (subscriber) {\r\n if (unsubscribeFrom(name, event.subscribers, subscriber)) {\r\n publish(name + \".isUnsubscribedFrom\", event.unsubscribeSubscribers);\r\n }\r\n };\r\n\r\n extendedEvent.unsubscribeFrom = extendedEvent.dont;\r\n\r\n extendedEvent.isSubscribedTo = function (subscriber) {\r\n subscribeTo(name + \".isSubscribedTo\", event.subscribeSubscribers, subscriber);\r\n\r\n return {\r\n autoDispose: function (target) {\r\n addDispose(target, function () { extendedEvent.isSubscribedTo.dont(subscriber) });\r\n }\r\n }\r\n };\r\n\r\n extendedEvent.isSubscribedTo.dont = function (subscriber) {\r\n unsubscribeFrom(name + \".isSubscribedTo\", event.subscribeSubscribers, subscriber);\r\n };\r\n\r\n extendedEvent.isUnsubscribedFrom = function (subscriber) {\r\n subscribeTo(name + \".isUnsubscribedFrom\", event.unsubscribeSubscribers, subscriber);\r\n\r\n return {\r\n autoDispose: function (target) {\r\n addDispose(target, function () { extendedEvent.isUnsubscribedFrom.dont(subscriber) });\r\n }\r\n }\r\n };\r\n\r\n extendedEvent.isUnsubscribedFrom.dont = function (subscriber) {\r\n unsubscribeFrom(name + \".isUnsubscribedFrom\", event.unsubscribeSubscribers, subscriber);\r\n };\r\n\r\n extendedEvent.toString = function () {\r\n return \"[Event \" + name + \"]\";\r\n }\r\n\r\n return extendedEvent;\r\n }\r\n\r\n function extend(events) {\r\n for (var i in events) {\r\n events[i] = extendEvent(i, events[i]);\r\n }\r\n return events;\r\n }\r\n\r\n function create(arg1, arg2) {\r\n if (arg2) {\r\n return extendEvent(arg1, arg2);\r\n } else {\r\n return extendEvent(\"anonymous event\", arg1);\r\n }\r\n }\r\n\r\n return {\r\n extend: extend,\r\n create: create\r\n };\r\n\r\n});","define(\"ksc-ubo/events\",[\"komplett-pubsub\"], function(pubsub) {\r\n var events = {\r\n uboOpened: function () {},\r\n uboClosed: function () {}\r\n };\r\n\r\n return pubsub.extend(events);\r\n});\n\n\ndefine('ksc-ubo/UboViewModel', [\"knockout\", \"ksc-ubo/events\", \"ksc-breakpoint-notifier\"], function (ko, events, kscBreakpointNotifier) {\r\n\r\n function UboViewModel(uboService,contentModel) {\r\n var self = this;\r\n\r\n this.id = uboService.getNewId();\r\n this.contentViewModel = contentModel.contentViewModel;\r\n this.actionElement = contentModel.actionElement;\r\n this.topLeft = ko.observable();\r\n this.header = contentModel.header || \"\";\r\n this.isOkCancelDialog = contentModel.isOkCancelDialog || false;\r\n this.htmlOutput = ko.observable();\r\n this.rendered = ko.observable(false);\r\n this.contentRendered = ko.observable(false);\r\n this.componentId = 'ubo-content-' + self.id;\r\n this.uboService = uboService, \r\n this.zIndex = uboService.getLatestZIndex();\r\n this.open = ko.observable(true);\r\n this.screenIsXs = ko.observable(false);\r\n this.hasActionElement = ko.observable(true);\r\n this.neverOpenUpwards = contentModel.neverOpenUpwards;\r\n\r\n this.uboClasses = ko.computed(function () {\r\n var uboClasses = contentModel.uboClass;\r\n if (!self.hasActionElement()) {\r\n if (uboClasses) {\r\n uboClasses += \" centerUbo\";\r\n } else {\r\n uboClasses = \"centerUbo\";\r\n }\r\n }\r\n return uboClasses;\r\n }, this);\r\n\r\n this.close = function() {\r\n self.open(false);\r\n uboService.closeSpecific(self);\r\n };\r\n\r\n this.closeOnBackgroundClick = function() {\r\n if (!self.isOkCancelDialog) {\r\n self.close();\r\n }\r\n };\r\n\r\n this.closeLatest = function() {\r\n uboService.closeLatest();\r\n };\r\n\r\n this.htmlOutput.subscribe(function (value) {\r\n if (value) {\r\n ko.components.register(self.componentId, {\r\n viewModel: function() {\r\n if(!self.screenIsXs()) {\r\n ko.bindingHandlers.uboKeyTrap.renderedHandler(); \r\n }\r\n \r\n try {\r\n return new self.contentViewModel();\r\n } catch (err) {\r\n return self.contentViewModel;\r\n }\r\n },\r\n template: value\r\n });\r\n }\r\n });\r\n\r\n kscBreakpointNotifier.events.isXs.subscribeTo(function (isXs) {\r\n self.screenIsXs(isXs);\r\n });\r\n }\r\n\r\n return UboViewModel;\r\n});\n\n\ndefine(\"ksc-ubo/UboContentModel\", function () {\r\n\r\n function UboContentModel() {\r\n this.header = null;\r\n this.contentViewModel = null;\r\n this.uboClass = null;\r\n this.actionElement = null;\r\n this.backgroundOverlay = true;\r\n this.maxWidth = null;\r\n this.maxHeight = null;\r\n this.neverOpenUpwards = false;\r\n }\r\n\r\n return UboContentModel;\r\n});\n\n\ndefine(\"ksc-ubo/UboSyncContentModel\", [\r\n \"ksc-ubo/UboContentModel\"\r\n ], function (UboContentModel) {\r\n\r\n function UboSyncContentModel() {\r\n Object.assign(this, new UboContentModel());\r\n this.content = null;\r\n }\r\n\r\n return UboSyncContentModel;\r\n});\n\n\ndefine(\"ksc-ubo/UboOkCancelViewModel\", [\r\n 'ksc-ubo/UboViewModel'\r\n ], function (UboViewModel) {\r\n\r\n function UboOkCancelViewModel(uboService, contentModel) {\r\n var self = this;\r\n Object.assign(this, new UboViewModel(uboService, contentModel));\r\n\r\n this.acceptCallback = contentModel.acceptCallback,\r\n this.cancelCallback = contentModel.cancelCallback,\r\n this.acceptButtonString = contentModel.acceptButtonString,\r\n this.cancelButtonString = contentModel.cancelButtonString,\r\n\r\n this.cancel = function () {\r\n if (self.cancelCallback) {\r\n self.cancelCallback();\r\n };\r\n\r\n uboService.closeSpecific(self);\r\n }\r\n\r\n this.accept = function () {\r\n self.acceptCallback();\r\n uboService.closeSpecific(self);\r\n }\r\n }\r\n\r\n return UboOkCancelViewModel;\r\n});\n\n\ndefine(\"ksc-ubo/uboService\", [\r\n \"knockout\",\r\n \"ksc-ubo/UboViewModel\",\r\n \"ksc-ubo/UboOkCancelViewModel\",\r\n \"ksc-ubo/events\"\r\n ], function (ko, UboViewModel, UboOkCancelViewModel, events) {\r\n\r\n function UboService() {\r\n var self = this,\r\n counter = 0;\r\n\r\n this.lastDeletedVm = null;\r\n this.ubos = ko.observableArray([]);\r\n this.uboClass = ko.observable(\"ubo\");\r\n\r\n var defaultLoaderIndicator = '
';\r\n\r\n var aSyncCall = function (url, successCallback) {\r\n var delayHandler = setTimeout(function () {}, 500);\r\n\r\n fetch(url).then(function (response) {\r\n return response.text()\r\n })\r\n .then(function(html) {\r\n clearTimeout(delayHandler);\r\n successCallback(html);\r\n });\r\n };\r\n\r\n var publishUboOpened = function() {\r\n if (self.ubos().length == 0) {\r\n events.uboOpened.publish();\r\n }\r\n }\r\n\r\n this.createUbo = function (html, contentModel) {\r\n var uboViewModel = new UboViewModel(self, contentModel);\r\n publishUboOpened();\r\n uboViewModel.htmlOutput(html);\r\n if (contentModel.actionElement == null) {\r\n uboViewModel.hasActionElement(false);\r\n }\r\n self.ubos.push(uboViewModel);\r\n if (contentModel.uboClass) {\r\n self.uboClass(contentModel.uboClass + \" ubo\");\r\n } else {\r\n self.uboClass(\"ubo\");\r\n }\r\n uboViewModel.rendered(true);\r\n };\r\n\r\n this.getNewId = function () {\r\n return counter++;\r\n };\r\n\r\n this.getLatestZIndex = function () {\r\n return 27640 + counter;\r\n }\r\n\r\n this.openAsync = function (aSyncContentModel) {\r\n // create stub UBO with loader inside\r\n self.createUbo(aSyncContentModel.loader || defaultLoaderIndicator, {\r\n actionElement: aSyncContentModel.actionElement,\r\n uboClass: aSyncContentModel.uboClass,\r\n });\r\n\r\n var callback = function (html) {\r\n self.closeLatest(); // close stub UBO\r\n self.createUbo(html, aSyncContentModel);\r\n }\r\n aSyncCall(aSyncContentModel.url, callback);\r\n };\r\n\r\n this.openSync = function (syncContentModel) {\r\n self.createUbo(syncContentModel.content, syncContentModel);\r\n };\r\n\r\n this.openOKCancelSync = function (okCancelContentModel) {\r\n var uboViewModel = new UboOkCancelViewModel(self, okCancelContentModel);\r\n publishUboOpened();\r\n uboViewModel.htmlOutput(okCancelContentModel.content);\r\n self.ubos.push(uboViewModel);\r\n };\r\n\r\n this.openOKCancelAsync = function (okCancelContentModel) {\r\n // create stub UBO with loader inside\r\n self.createUbo(okCancelContentModel.loader || defaultLoaderIndicator, {\r\n actionElement: okCancelContentModel.actionElement,\r\n uboClass: okCancelContentModel.uboClass,\r\n });\r\n\r\n var callback = function (html) {\r\n self.closeLatest(); // close stub UBO\r\n okCancelContentModel.content = html;\r\n self.openOKCancelSync(okCancelContentModel);\r\n }\r\n aSyncCall(okCancelContentModel.url, callback);\r\n };\r\n\r\n this.closeLatest = function () {\r\n var removedUboViewModel = self.ubos()[self.ubos().length - 1];\r\n self.closeSpecific(removedUboViewModel);\r\n };\r\n\r\n this.closeAllUbos = function () {\r\n var length = self.ubos().length;\r\n for (var i = length; i > 0; i--) {\r\n var removedUboViewModel = self.ubos()[self.ubos().length - 1];\r\n self.closeSpecific(removedUboViewModel);\r\n }\r\n };\r\n\r\n this.closeSpecific = function (viewModel) {\r\n\r\n if (self.ubos().length==1) {\r\n events.uboClosed.publish();\r\n }\r\n if (viewModel) {\r\n self.lastDeletedVm = viewModel;\r\n self.ubos.remove(viewModel);\r\n ko.components.unregister(viewModel.componentId);\r\n if (viewModel.actionElement) viewModel.actionElement.focus();\r\n }\r\n }\r\n }\r\n\r\n return new UboService();\r\n});\n\n\ndefine(\"ksc-ubo/UboOKCancelContentModel\", [\r\n 'ksc-ubo/UboSyncContentModel'\r\n ], function (UboSyncContentModel) {\r\n\r\n function uboOKCancelContentModel() {\r\n Object.assign(this, new UboSyncContentModel());\r\n\r\n this.isOkCancelDialog = true;\r\n\r\n this.acceptCallback = null;\r\n this.cancelCallback = null;\r\n this.acceptButtonString = null;\r\n this.cancelButtonString = null;\r\n }\r\n\r\n return uboOKCancelContentModel;\r\n});\n\n\ndefine(\"ksc-ubo/UboAsyncContentModel\", [\r\n \"ksc-ubo/UboContentModel\"\r\n ], function (UboContentModel) {\r\n\r\n function UboAsyncContentModel() {\r\n Object.assign(this, new UboContentModel());\r\n this.url = null;\r\n }\r\n\r\n return UboAsyncContentModel;\r\n});\n\n\ndefine(\"ksc-ubo\", [\r\n \"ksc-ubo/events\",\r\n \"ksc-ubo/UboAsyncContentModel\",\r\n \"ksc-ubo/UboContentModel\",\r\n \"ksc-ubo/UboOKCancelContentModel\",\r\n \"ksc-ubo/UboOkCancelViewModel\",\r\n \"ksc-ubo/uboService\",\r\n \"ksc-ubo/UboSyncContentModel\",\r\n \"ksc-ubo/UboViewModel\"], \r\n function (\r\n events, \r\n uboAsyncContentModel,\r\n uboContentModel,\r\n uboOkCancelContentModel,\r\n uboOkCancelViewModel,\r\n uboService,\r\n uboSyncContentModel,\r\n uboViewModel) {\r\n\r\n return {\r\n events: events,\r\n uboAsyncContentModel: uboAsyncContentModel,\r\n uboContentModel: uboContentModel,\r\n uboOkCancelContentModel: uboOkCancelContentModel,\r\n uboOkCancelViewModel: uboOkCancelViewModel,\r\n uboService: uboService,\r\n uboSyncContentModel: uboSyncContentModel,\r\n uboViewModel: uboViewModel\r\n };\r\n \r\n});\n\n","define(\"ksc-breakpoint-notifier/ScreenSize\", function () {\r\n\r\n function ScreenSize(fullResponsive) {\r\n\r\n var screenSizes = function () {\r\n if (fullResponsive) {\r\n return {\r\n screenXs: 480,\r\n screenSm: 600,\r\n screenMd: 992,\r\n screenLg: 1300\r\n }\r\n } else {\r\n return {\r\n screenXs: 1,\r\n screenSm: 2,\r\n screenMd: 3,\r\n screenLg: 10000\r\n }\r\n }\r\n };\r\n\r\n\r\n var screenSize = screenSizes();\r\n\r\n\r\n this.isXs = function () {\r\n return window.matchMedia ? window.matchMedia(\"screen and (max-width: \" + (screenSize.screenSm - 1) + \"px)\").matches : false;\r\n };\r\n\r\n this.isSm = function () {\r\n return window.matchMedia ? window.matchMedia(\"screen and (min-width: \" + screenSize.screenSm + \"px) and (max-width: \" + (screenSize.screenMd - 1) + \"px)\").matches : false;\r\n };\r\n\r\n this.isMd = function () {\r\n return window.matchMedia ? window.matchMedia(\"screen and (min-width: \" + screenSize.screenMd + \"px) and (max-width: \" + (screenSize.screenLg - 1) + \"px)\").matches : true;\r\n };\r\n\r\n this.isLg = function () {\r\n return window.matchMedia ? window.matchMedia(\"screen and (min-width: \" + screenSize.screenLg + \"px)\").matches : false;\r\n };\r\n }\r\n\r\n return ScreenSize;\r\n});\r\n\r\n\r\ndefine('ksc-breakpoint-notifier/events',[\"komplett-pubsub\"], function (pubsub) {\r\n\r\n var events = {\r\n isXs: function (isXs){},\r\n isSm: function (isSm){},\r\n isMd: function (isMd){},\r\n isLg: function (isLg) { },\r\n screenSizeChanged: function(size) {}\r\n };\r\n\r\n return pubsub.extend(events);\r\n\r\n});\r\n\r\n\r\ndefine(\"ksc-breakpoint-notifier/ViewModel\", [\"knockout\", \"ksc-breakpoint-notifier/events\", \"ksc-breakpoint-notifier/ScreenSize\"], function (ko, events, ScreenSize) {\r\n\r\n function ViewModel(initObject) {\r\n\r\n var self = this;\r\n\r\n var states = {xs: \"xs\",sm: \"sm\",md: \"md\",lg: \"lg\"},\r\n screenSize = new ScreenSize(initObject.fullResponsive);\r\n\r\n var currentScreenSize = function () {\r\n if (screenSize.isLg()) {\r\n return states.lg;\r\n } else if (screenSize.isMd()) {\r\n return states.md;\r\n } else if (screenSize.isSm()) {\r\n return states.sm;\r\n } else {\r\n return states.xs;\r\n }\r\n };\r\n\r\n this.state = ko.observable(currentScreenSize());\r\n\r\n var publishObservable = {\r\n lg: ko.observable(),\r\n md: ko.observable(),\r\n sm: ko.observable(),\r\n xs: ko.observable()\r\n };\r\n\r\n publishObservable.lg.subscribe(function(value) {\r\n events.isLg.publish(value);\r\n });\r\n publishObservable.md.subscribe(function (value) {\r\n events.isMd.publish(value);\r\n });\r\n publishObservable.sm.subscribe(function (value) {\r\n events.isSm.publish(value);\r\n });\r\n publishObservable.xs.subscribe(function (value) {\r\n events.isXs.publish(value);\r\n });\r\n events.screenSizeChanged.isSubscribedTo(function (trigger) {\r\n trigger(self.state(), false);\r\n });\r\n self.state.subscribe(function(value) {\r\n events.screenSizeChanged.publish(value);\r\n });\r\n\r\n var publishEvents = function(currentState) {\r\n if (currentState == states.lg) {\r\n publishObservable.lg(true);\r\n publishObservable.md(false);\r\n publishObservable.sm(false);\r\n publishObservable.xs(false);\r\n } else if (currentState == states.md) {\r\n publishObservable.lg(false);\r\n publishObservable.md(true);\r\n publishObservable.sm(false);\r\n publishObservable.xs(false);\r\n } else if (currentState == states.sm) {\r\n publishObservable.lg(false);\r\n publishObservable.md(false);\r\n publishObservable.sm(true);\r\n publishObservable.xs(false);\r\n } else {\r\n publishObservable.lg(false);\r\n publishObservable.md(false);\r\n publishObservable.sm(false);\r\n publishObservable.xs(true);\r\n }\r\n };\r\n\r\n self.state.subscribe(publishEvents);\r\n\r\n (function init() {\r\n\r\n publishEvents(self.state());\r\n\r\n events.isLg.isSubscribedTo(function (notify) {\r\n if (self.state() == states.lg) {\r\n notify(true);\r\n } else {\r\n notify(false);\r\n }\r\n \r\n });\r\n\r\n events.isMd.isSubscribedTo(function (notify) {\r\n if (self.state() == states.md) {\r\n notify(true);\r\n } else {\r\n notify(false);\r\n }\r\n });\r\n\r\n events.isSm.isSubscribedTo(function (notify) {\r\n if (self.state() == states.sm) {\r\n notify(true);\r\n } else {\r\n notify(false);\r\n }\r\n });\r\n\r\n events.isXs.isSubscribedTo(function (notify) {\r\n if (self.state() == states.xs) {\r\n notify(true);\r\n } else {\r\n notify(false);\r\n }\r\n });\r\n\r\n window.addEventListener(\"resize\", function() {\r\n self.state(currentScreenSize());\r\n });\r\n\r\n })();\r\n }\r\n\r\n return ViewModel;\r\n});\r\n\r\n\r\ndefine('ksc-breakpoint-notifier',[\"ksc-breakpoint-notifier/ViewModel\",\"ksc-breakpoint-notifier/events\"], function (BreakpointNotifier, events) {\r\n \r\n function init(options){\r\n \r\n var options = {\r\n fullResponsive : options.fullResponsive === undefined ? false : options.fullResponsive\r\n };\r\n \r\n new BreakpointNotifier(options);\r\n }\r\n\r\n return {\r\n init: init,\r\n events: events\r\n }\r\n \r\n});\r\n\r\n","define(\"knockout\", [], function (\r\n) {\r\n return ko;\r\n});","define(\"ksc-alert/events\", [\"komplett-pubsub\"], function (pubsub) {\r\n var events = {\r\n alertAdded: function(message, alertLevel, receiver, defaultMessageWhenNotResolved) {},\r\n alertArrayAdded: function(alertArray) {},\r\n removeAlerts: function() {},\r\n removeAlert: function(receiver) {},\r\n toggleWrapperCss: function(cssClass, toggle) { }\r\n };\r\n\r\n return pubsub.extend(events);\r\n});\r\n\r\n\r\ndefine('ksc-alert/ViewModel', ['knockout', 'ksc-alert/events'], function (ko, events) {\r\n\r\n function ViewModel(initObject) {\r\n\r\n var self = this;\r\n var stickyCss = 'ksc-alert-sticky';\r\n\r\n this.alerts = ko.observableArray(); \r\n\r\n this.isOutOfView = ko.observable(false);\r\n this.isOutOfView.subscribe(function(value) {\r\n var css = self.wrapperCss();\r\n css[stickyCss] = isAnyAlertVisible() ? value : false;\r\n self.wrapperCss(css);\r\n });\r\n this.wrapperCss = ko.observable({});\r\n\r\n this.receiver = 'global';\r\n\r\n var areStringsEquivalentEvenWithSpecialChars = function(str1, str2) {\r\n return (str1.toString().localeCompare(str2.toString()) == 0);\r\n };\r\n\r\n var isTheRightReceiver = function(receiver) {\r\n var isMessageToNoSpecifiedReceiverAndCurrentReceiverIsGlobal = (!receiver && self.receiver.toLowerCase() === 'global');\r\n var isMessageToCurrentReceiver = (receiver && receiver.toLowerCase() === self.receiver.toLowerCase());\r\n\r\n return (isMessageToNoSpecifiedReceiverAndCurrentReceiverIsGlobal || isMessageToCurrentReceiver);\r\n };\r\n\r\n var alertWithAlreadyExistingMessage = function (message, level) {\r\n var returningItem = null;\r\n\r\n ko.utils.arrayFirst(self.alerts(), function (item) {\r\n if (areStringsEquivalentEvenWithSpecialChars(item.message, message) && item.level == level) {\r\n returningItem = item;\r\n };\r\n });\r\n \r\n return returningItem;\r\n };\r\n \r\n var resolveMessageCode = function (code, defaultMessageWhenNotResolved) {\r\n if (initObject && initObject.messages && initObject.messages.hasOwnProperty(code)) {\r\n return initObject.messages[code];\r\n }\r\n \r\n if (defaultMessageWhenNotResolved) {\r\n return resolveMessageCode(defaultMessageWhenNotResolved);\r\n }\r\n\r\n return code;\r\n };\r\n\r\n var isAnyAlertVisible = function() {\r\n var visibleAlerts = ko.utils.arrayFilter(self.alerts(), function(alert) {\r\n return alert.isVisible();\r\n });\r\n\r\n return visibleAlerts.length > 0;\r\n }\r\n\r\n this.addAlert = function (message, level, receiver) {\r\n var toggleSticky = function() {\r\n if (!isAnyAlertVisible() && self.isOutOfView()) {\r\n var css = self.wrapperCss();\r\n css[stickyCss] = true;\r\n self.wrapperCss(css); \r\n } \r\n }\r\n toggleSticky();\r\n\r\n var alreadyExistingAlert = alertWithAlreadyExistingMessage(message, level);\r\n\r\n if (alreadyExistingAlert != null) {\r\n alreadyExistingAlert.isVisible(true);\r\n alreadyExistingAlert.hasFocus(true);\r\n return;\r\n }\r\n\r\n self.alerts.push(\r\n {\r\n message: message, \r\n level: level, \r\n isVisible: ko.observable(true),\r\n hasFocus: ko.observable(true),\r\n closeAlert: function () {\r\n this.isVisible(false);\r\n self.alertsChanged();\r\n }, \r\n alertLevelClass: \"ksc-alert-\" + level, \r\n iconClass: \"ksc-alert-\" + level + \"-icon\",\r\n receiver: receiver\r\n }\r\n );\r\n self.alertsChanged();\r\n };\r\n\r\n this.hasAlerts = ko.computed(function () {\r\n return self.alerts.length > 0;\r\n });\r\n\r\n this.toggleAlert = function (observable) {\r\n observable(!observable());\r\n };\r\n\r\n this.modelChanged = function (alertArray) {\r\n if (alertArray) {\r\n alertArray.forEach(function (alert) {\r\n self.addAlert(alert.message, alert.level.toLowerCase(), alert.receiver);\r\n });\r\n }\r\n };\r\n\r\n this.removeAlerts = function () {\r\n self.alerts.removeAll();\r\n };\r\n \r\n this.removeAlert = function (receiver) {\r\n self.alerts.remove(function (alert) {\r\n return alert.receiver == receiver;\r\n }); \r\n };\r\n\r\n this.alertsChanged = function() {\r\n if(!isAnyAlertVisible()) {\r\n var css = self.wrapperCss();\r\n css[stickyCss] = false;\r\n self.wrapperCss(css); \r\n }\r\n }\r\n \r\n\r\n events.alertAdded.subscribeTo(function (message, alertLevel, receiver, defaultMessageWhenNotResolved) {\r\n if (isTheRightReceiver(receiver)) {\r\n message = resolveMessageCode(message, defaultMessageWhenNotResolved);\r\n \r\n if (message && message.length > 0) {\r\n self.addAlert(message, alertLevel, receiver);\r\n }\r\n }\r\n });\r\n\r\n events.alertArrayAdded.subscribeTo(function (alertArray) {\r\n self.modelChanged(alertArray);\r\n });\r\n\r\n events.removeAlerts.subscribeTo(function () {\r\n self.removeAlerts();\r\n });\r\n \r\n events.removeAlert.subscribeTo(function (receiver) {\r\n self.removeAlert(receiver);\r\n });\r\n\r\n events.toggleWrapperCss.subscribeTo(function(cssClass, toggle) {\r\n var css = self.wrapperCss();\r\n css[cssClass] = toggle;\r\n self.wrapperCss(css); \r\n });\r\n\r\n init: {\r\n if (initObject) {\r\n if (initObject.alertArray) {\r\n this.modelChanged(initObject.alertArray);\r\n }\r\n\r\n if (initObject.receiver) {\r\n this.receiver = initObject.receiver;\r\n }\r\n\r\n if (initObject && initObject.stickyCss) {\r\n stickyCss = initObject.stickyCss;\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n return ViewModel;\r\n\r\n});\r\n\r\n\r\ndefine('ksc-alert',[\"ksc-alert/ViewModel\",'ksc-alert/events'], function (ViewModel, events) {\r\n \r\n function init(options){\r\n \r\n var options = {\r\n someOption : options.someOption === undefined ? 'some value' : options.someOption\r\n };\r\n \r\n // Do som initialization or remove this dead init method and the access from the interface below.\r\n }\r\n\r\n return {\r\n init: init,\r\n ViewModel: ViewModel,\r\n events: events\r\n };\r\n \r\n});\r\n\r\n\r\ndefine(\"ksc-alert/custombindings\", [\"knockout\"], function (ko) {\r\n ko.bindingHandlers.kscAlertSticky = {\r\n init: function(element, valueAccessor) {\r\n var unwrapAccessor = ko.unwrap(valueAccessor());\r\n var observable = unwrapAccessor.isOutOfView;\r\n\r\n var elementInitPos = element.offsetTop;\r\n\r\n if (ko.isObservable(observable)) {\r\n window.addEventListener(\"scroll\", function () {\r\n setTimeout(function() {\r\n var scrollY = window.pageYOffset;\r\n var scrollVal = observable();\r\n\r\n if (scrollY >= elementInitPos) {\r\n if (!scrollVal) {\r\n observable(true);\r\n }\r\n } else {\r\n if (scrollVal) {\r\n observable(false);\r\n }\r\n }\r\n }, 20);\r\n });\r\n }\r\n }\r\n }\r\n});\r\n\r\n","/* global dataLayer */\r\ndefine(\"dataLayer\", [], function (\r\n) {\r\n return dataLayer;\r\n});","define([\"knockout\"], function (ko) {\r\n ko.bindingHandlers.positionCalculator = {\r\n update: function (element, valueAccessor) {\r\n var object = valueAccessor();\r\n var actionElement = object.actionElement,\r\n topLeftObservable = object.topLeft,\r\n open = object.open,\r\n screenIsXs = object.screenIsXs,\r\n callback = object.callback;\r\n contentRendered = object.contentRendered;\r\n neverOpenUpwards = object.neverOpenUpwards;\r\n\r\n var doResizing = function () {\r\n ko.bindingHandlers.positionCalculator.resize(\r\n actionElement,\r\n topLeftObservable,\r\n element,\r\n screenIsXs,\r\n neverOpenUpwards,\r\n callback\r\n );\r\n };\r\n\r\n window.removeEventListener(\"resize\", doResizing);\r\n\r\n if (contentRendered && contentRendered()) {\r\n doResizing();\r\n }\r\n\r\n if (open()) {\r\n doResizing();\r\n window.addEventListener(\"resize\", doResizing);\r\n }\r\n },\r\n resize: function (\r\n actionElement,\r\n topLeftObservable,\r\n element,\r\n isScreenXs,\r\n neverOpenUpwards,\r\n callback\r\n ) {\r\n var isIE11 = !!window.MSInputMethodContext;\r\n\r\n var elementPosition,\r\n elementViewportPosition,\r\n windowWidth = window.innerWidth,\r\n windowHeight = isIE11 ? window.innerHeight + 130 : window.innerHeight,\r\n topLeft = {},\r\n factor = 0.92,\r\n zIndex = element.style.zIndex,\r\n screenIsXs = isScreenXs();\r\n\r\n element.style = \"\";\r\n element.style.zIndex = zIndex;\r\n\r\n if (screenIsXs) {\r\n element.style.maxHeight = windowHeight * factor;\r\n }\r\n\r\n element.style.maxWidth = windowWidth * factor;\r\n\r\n if (actionElement) {\r\n elementViewportPosition = actionElement.getBoundingClientRect();\r\n elementPosition = {\r\n top: elementViewportPosition.top + window.pageYOffset,\r\n left: elementViewportPosition.left + window.pageXOffset,\r\n };\r\n\r\n if (!screenIsXs) {\r\n //Its more space on the left side\r\n if (\r\n elementViewportPosition.left >\r\n windowWidth - elementViewportPosition.left\r\n ) {\r\n topLeft.left = elementPosition.left + actionElement.offsetWidth;\r\n element.style.right = 0;\r\n } else {\r\n topLeft.left = elementPosition.left;\r\n element.style.left = 0;\r\n }\r\n //Its more space on the top\r\n if (\r\n elementViewportPosition.top >\r\n windowHeight - elementViewportPosition.top &&\r\n element.offsetHeight < elementViewportPosition.bottom &&\r\n !neverOpenUpwards\r\n ) {\r\n topLeft.top = elementPosition.top + actionElement.offsetHeight;\r\n element.style.bottom = 0;\r\n } else {\r\n topLeft.top = elementPosition.top;\r\n element.style.top = 0;\r\n }\r\n topLeftObservable(topLeft);\r\n }\r\n } else {\r\n var elementHeight =\r\n element.offsetHeight < 73 ? 350 : element.offsetHeight;\r\n elementPosition = {\r\n top: Math.max(\r\n 0,\r\n window.pageYOffset + (windowHeight - elementHeight) / 2\r\n ),\r\n left: Math.max(0, (windowWidth - element.offsetWidth) / 2),\r\n };\r\n if (!screenIsXs) {\r\n topLeft.left = elementPosition.left;\r\n element.style.left = 0;\r\n topLeft.top = elementPosition.top;\r\n element.style.top = 0;\r\n\r\n topLeftObservable(topLeft);\r\n }\r\n }\r\n\r\n if (typeof callback === \"function\") {\r\n callback();\r\n }\r\n },\r\n };\r\n\r\n ko.bindingHandlers.uboMove = {\r\n update: function (element, valueAccessor) {\r\n var object = valueAccessor();\r\n var topLeft = object && object.topLeft ? object.topLeft() : undefined;\r\n if (topLeft) {\r\n element.style.top = topLeft.top + \"px\";\r\n element.style.left = topLeft.left + \"px\";\r\n }\r\n },\r\n };\r\n\r\n var _keyTrapWrapper = {};\r\n\r\n ko.bindingHandlers.uboKeyTrap = {\r\n init: function () {\r\n // Those spans are used to trap tabbing inside modal\r\n // Can be improved in future\r\n _keyTrapWrapper.beforeSpan = document.createElement(\"SPAN\");\r\n _keyTrapWrapper.beforeSpan.tabIndex = \"0\";\r\n _keyTrapWrapper.beforeFocus = document.createElement(\"SPAN\");\r\n _keyTrapWrapper.beforeFocus.tabIndex = \"0\";\r\n _keyTrapWrapper.afterSpan = document.createElement(\"SPAN\");\r\n _keyTrapWrapper.afterSpan.tabIndex = \"0\";\r\n _keyTrapWrapper.afterFocus = document.createElement(\"SPAN\");\r\n _keyTrapWrapper.afterFocus.tabIndex = \"0\";\r\n },\r\n update: function (element, valueAccessor) {\r\n var value =\r\n typeof valueAccessor === \"function\"\r\n ? valueAccessor()\r\n : valueAccessor().keyTrap();\r\n\r\n if (ko.unwrap(value)) {\r\n var selectedObj =\r\n typeof valueAccessor().scope === \"undefined\"\r\n ? element\r\n : document.querySelector(valueAccessor().scope);\r\n selectedObj.insertAdjacentElement(\r\n \"beforebegin\",\r\n _keyTrapWrapper.beforeSpan\r\n );\r\n selectedObj.insertAdjacentElement(\r\n \"beforebegin\",\r\n _keyTrapWrapper.beforeFocus\r\n );\r\n\r\n selectedObj.insertAdjacentElement(\r\n \"afterend\",\r\n _keyTrapWrapper.afterSpan\r\n );\r\n selectedObj.insertAdjacentElement(\r\n \"afterend\",\r\n _keyTrapWrapper.afterFocus\r\n );\r\n _keyTrapWrapper.afterSpan.addEventListener(\"focus\", function () {\r\n _keyTrapWrapper.beforeFocus.focus();\r\n });\r\n _keyTrapWrapper.beforeSpan.addEventListener(\"focus\", function () {\r\n _keyTrapWrapper.afterFocus.focus();\r\n });\r\n\r\n if (typeof valueAccessor().scope === \"undefined\") {\r\n _keyTrapWrapper.beforeFocus.focus();\r\n }\r\n }\r\n },\r\n renderedHandler: function () {\r\n _keyTrapWrapper.beforeFocus.focus();\r\n },\r\n };\r\n\r\n ko.bindingHandlers.uboOnKeyUp = {\r\n update: function (element, valueAccessor) {\r\n var object = ko.utils.unwrapObservable(valueAccessor());\r\n var handler = function (event) {\r\n if (event.keyCode == object.key) {\r\n object[\"do\"](event);\r\n }\r\n document.removeEventListener(\"keyup\", handler);\r\n };\r\n if (ko.utils.unwrapObservable(object.when)) {\r\n document.addEventListener(\"keyup\", handler);\r\n }\r\n },\r\n };\r\n\r\n ko.bindingHandlers.uboContentRendered = {\r\n update: function (element, valueAccessor) {\r\n setTimeout(function () {\r\n valueAccessor()(true);\r\n }, 1);\r\n },\r\n };\r\n\r\n ko.bindingHandlers.uboNonEmptyText = {\r\n update: function (element, valueAccessor) {\r\n var text = ko.utils.unwrapObservable(valueAccessor());\r\n if (text) {\r\n element.innerText = text;\r\n }\r\n },\r\n };\r\n});\r\n","define([\"knockout\"], function (ko) {\r\n ko.bindingHandlers.kscAlertSticky = {\r\n init: function(element, valueAccessor) {\r\n var unwrapAccessor = ko.unwrap(valueAccessor());\r\n var observable = unwrapAccessor.isOutOfView;\r\n\r\n var elementInitPos = element.offsetTop;\r\n\r\n if (ko.isObservable(observable)) {\r\n window.addEventListener(\"scroll\", function () {\r\n setTimeout(function() {\r\n var scrollY = window.pageYOffset;\r\n var scrollVal = observable();\r\n\r\n if (scrollY >= elementInitPos) {\r\n if (!scrollVal) {\r\n observable(true);\r\n }\r\n } else {\r\n if (scrollVal) {\r\n observable(false);\r\n }\r\n }\r\n }, 20);\r\n });\r\n }\r\n }\r\n }\r\n});","define([\"querystring\"], function (querystring) {\r\n\r\n function extractClickThroughLink (link) {\r\n var queryData = link.split(\"?\")[1];\r\n return querystring.parse(queryData).ct;\r\n };\r\n\r\n function removeLinkParameterContent (link, parameterToRemove) {\r\n var re = RegExp(parameterToRemove + \"=.*&?\");\r\n return link.replace(re, parameterToRemove);\r\n };\r\n\r\n function setTargetAndReportUrls (rrPromos) {\r\n rrPromos.forEach(function (promo) {\r\n promo.targetUrl = extractClickThroughLink(promo.destination_URL);\r\n promo.reportClickUrl = removeLinkParameterContent(promo.destination_URL, \"ct\");\r\n });\r\n };\r\n\r\n return {\r\n setTargetAndReportUrls: setTargetAndReportUrls\r\n };\r\n});","define([\"komplett-pubsub\"], function (pubsub) {\r\n /* eslint-disable no-unused-vars */\r\n var events = {\r\n updatedPageData: function (pageData) { },\r\n reset: function () { },\r\n addToCart: function (sku) { },\r\n recsLoaded: function (recs) {},\r\n promosLoaded: function (promos) { },\r\n navLoaded: function (navs) {}\r\n };\r\n /* eslint-enable no-unused-vars */\r\n return pubsub.extend(events);\r\n});","define([], function () {\r\n function TextDecoderLite() {\r\n }\r\n\r\n TextDecoderLite.prototype.decode = function (bytes) {\r\n return utf8Slice(bytes, 0, bytes.length);\r\n };\r\n\r\n function utf8Slice(buf, start, end) {\r\n var res = \"\";\r\n var tmp = \"\";\r\n end = Math.min(buf.length, end || Infinity);\r\n start = start || 0;\r\n\r\n for (var i = start; i < end; i++) {\r\n if (buf[i] <= 0x7F) {\r\n res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i]);\r\n tmp = \"\";\r\n } else {\r\n tmp += \"%\" + buf[i].toString(16);\r\n }\r\n }\r\n\r\n return res + decodeUtf8Char(tmp);\r\n }\r\n\r\n function decodeUtf8Char(str) {\r\n try {\r\n return decodeURIComponent(str);\r\n } catch (err) {\r\n return String.fromCharCode(0xFFFD); // UTF 8 invalid char\r\n }\r\n }\r\n\r\n return TextDecoderLite;\r\n});\r\n","define([], function () {\r\n var lookup = [];\r\n var revLookup = [];\r\n var Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\r\n\r\n var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n for (var i = 0, len = code.length; i < len; ++i) {\r\n lookup[i] = code[i]\r\n revLookup[code.charCodeAt(i)] = i;\r\n }\r\n\r\n// Support decoding URL-safe base64 strings, as Node.js does.\r\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\r\n revLookup[\"-\".charCodeAt(0)] = 62;\r\n revLookup[\"_\".charCodeAt(0)] = 63;\r\n\r\n function getLens(b64) {\r\n var len = b64.length;\r\n\r\n if (len % 4 > 0) {\r\n throw new Error(\"Invalid string. Length must be a multiple of 4\");\r\n }\r\n\r\n // Trim off extra bytes after placeholder bytes are found\r\n // See: https://github.com/beatgammit/base64-js/issues/42\r\n var validLen = b64.indexOf(\"=\");\r\n if (validLen === -1) {\r\n validLen = len;\r\n }\r\n\r\n var placeHoldersLen = validLen === len\r\n ? 0\r\n : 4 - (validLen % 4);\r\n\r\n return [validLen, placeHoldersLen];\r\n }\r\n\r\n function _byteLength(b64, validLen, placeHoldersLen) {\r\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen;\r\n }\r\n\r\n function toByteArray(b64) {\r\n var tmp;\r\n var lens = getLens(b64);\r\n var validLen = lens[0];\r\n var placeHoldersLen = lens[1];\r\n\r\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\r\n\r\n var curByte = 0;\r\n\r\n // if there are placeholders, only get up to the last complete 4 chars\r\n var len = placeHoldersLen > 0\r\n ? validLen - 4\r\n : validLen;\r\n\r\n for (var i = 0; i < len; i += 4) {\r\n tmp =\r\n (revLookup[b64.charCodeAt(i)] << 18) |\r\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\r\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\r\n revLookup[b64.charCodeAt(i + 3)];\r\n arr[curByte++] = (tmp >> 16) & 0xFF;\r\n arr[curByte++] = (tmp >> 8) & 0xFF;\r\n arr[curByte++] = tmp & 0xFF;\r\n }\r\n\r\n if (placeHoldersLen === 2) {\r\n tmp =\r\n (revLookup[b64.charCodeAt(i)] << 2) |\r\n (revLookup[b64.charCodeAt(i + 1)] >> 4);\r\n arr[curByte++] = tmp & 0xFF;\r\n }\r\n\r\n if (placeHoldersLen === 1) {\r\n tmp =\r\n (revLookup[b64.charCodeAt(i)] << 10) |\r\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\r\n (revLookup[b64.charCodeAt(i + 2)] >> 2);\r\n arr[curByte++] = (tmp >> 8) & 0xFF;\r\n arr[curByte++] = tmp & 0xFF;\r\n }\r\n\r\n return arr;\r\n }\r\n\r\n function tripletToBase64(num) {\r\n return lookup[num >> 18 & 0x3F] +\r\n lookup[num >> 12 & 0x3F] +\r\n lookup[num >> 6 & 0x3F] +\r\n lookup[num & 0x3F];\r\n }\r\n\r\n function encodeChunk(uint8, start, end) {\r\n var tmp;\r\n var output = [];\r\n for (var i = start; i < end; i += 3) {\r\n tmp =\r\n ((uint8[i] << 16) & 0xFF0000) +\r\n ((uint8[i + 1] << 8) & 0xFF00) +\r\n (uint8[i + 2] & 0xFF)\r\n output.push(tripletToBase64(tmp));\r\n }\r\n return output.join(\"\");\r\n }\r\n\r\n function fromByteArray(uint8) {\r\n var tmp;\r\n var len = uint8.length;\r\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\r\n var parts = []\r\n var maxChunkLength = 16383; // must be multiple of 3\r\n\r\n // go through the array every three bytes, we'll deal with trailing stuff later\r\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\r\n parts.push(encodeChunk(\r\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\r\n ));\r\n }\r\n\r\n // pad the end with zeros, but make sure to not forget the extra bytes\r\n if (extraBytes === 1) {\r\n tmp = uint8[len - 1];\r\n parts.push(\r\n lookup[tmp >> 2] +\r\n lookup[(tmp << 4) & 0x3F] +\r\n \"==\"\r\n );\r\n } else if (extraBytes === 2) {\r\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\r\n parts.push(\r\n lookup[tmp >> 10] +\r\n lookup[(tmp >> 4) & 0x3F] +\r\n lookup[(tmp << 2) & 0x3F] +\r\n \"=\"\r\n );\r\n }\r\n\r\n return parts.join(\"\");\r\n }\r\n\r\n return {\r\n fromByteArray: fromByteArray,\r\n toByteArray: toByteArray\r\n };\r\n});","define([\"JScript/Common/AtobUtf8\", \"JScript/Common/TextDecoder\"], function (base64js, TextDecoderLite) {\r\n\r\n var decoder = new (window.TextDecoder || TextDecoderLite)(\"utf-8\");\r\n\r\n function getCookieValue(a) {\r\n var b = document.cookie.match(\"(^|;)\\\\s*\" + a + \"\\\\s*=\\\\s*([^;]+)\");\r\n return b ? b.pop() : \"\";\r\n };\r\n\r\n function getParameterFromCookieByName(parameter, cookieName) {\r\n var name = parameter.replace(/[\\[\\]]/g, \"\\\\$&\");\r\n var regex = new RegExp(\"[?&]*\" + name + \"(=([^&#]*)|&|#|$)\");\r\n var results = regex.exec(getCookieValue(cookieName));\r\n if (!results) {\r\n return null;\r\n }\r\n if (!results[2]) {\r\n return \"\";\r\n }\r\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\r\n };\r\n\r\n function b64EncodeUnicode(str) {\r\n // first we use encodeURIComponent to get percent-encoded UTF-8,\r\n // then we convert the percent encodings into raw bytes which\r\n // can be fed into btoa.\r\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,\r\n function toSolidBytes(match, p1) {\r\n return String.fromCharCode(\"0x\" + p1);\r\n }));\r\n }\r\n\r\n function b64DecodeUnicode(str) {\r\n var bytes = base64js.toByteArray(str);\r\n return decoder.decode(bytes);\r\n }\r\n\r\n //Putting rightPad here in case it is removed from the internet (it has happened before!)\r\n function rightPad(str) {\r\n switch (str.length % 4) {\r\n case 1:\r\n return str + \"===\";\r\n case 2:\r\n return str + \"==\";\r\n case 3:\r\n return str + \"=\";\r\n default:\r\n return str;\r\n }\r\n }\r\n\r\n return {\r\n getJsonCookieValue: function (cookieName) {\r\n var cookie = getCookieValue(cookieName);\r\n return cookie ? JSON.parse(cookie) : null;\r\n },\r\n readCookieValueAsObject: function (parameter, cookieName) {\r\n return JSON.parse(getParameterFromCookieByName(parameter, cookieName));\r\n },\r\n getBase64CookieAsObject: function (cookieName) {\r\n var cookie = getCookieValue(cookieName);\r\n if (cookie === \"\") {\r\n return {};\r\n }\r\n return JSON.parse(b64DecodeUnicode(cookie));\r\n },\r\n setBase64CookieFromObject: function (cookieName, data, expirationDate) {\r\n var cookie = cookieName + \"=\" + b64EncodeUnicode(JSON.stringify(data)) + \"; Path=/\";\r\n if (expirationDate) {\r\n cookie += \"; Expires=\" + expirationDate.toGMTString();\r\n }\r\n document.cookie = cookie;\r\n },\r\n getJwtTokenAsObject: function (cookieName) {\r\n var cookie = getCookieValue(cookieName);\r\n if (cookie === \"\") {\r\n return {};\r\n }\r\n\r\n try {\r\n var base64Url = cookie.split(\".\")[1];\r\n var base64 = base64Url.replace(\"-\", \"+\").replace(\"_\", \"/\");\r\n return JSON.parse(b64DecodeUnicode(rightPad(base64)));\r\n } catch (err) {\r\n return {};\r\n }\r\n },\r\n getCookieValue: function (cookieName) { return getCookieValue(cookieName) }\r\n };\r\n});","define([\"JScript/Common/cookieReader\"], function (cookieReader) {\r\n var customerGroupPrivate = 40;\r\n var customerGroupEmployee = 50;\r\n\r\n var cookieData = cookieReader.getJwtTokenAsObject(\"Komplett.Caas.Session\");\r\n var anonymousId = cookieReader.getCookieValue('Komplett.AnonymousId');\r\n\r\n if (!cookieData || !cookieData.exp) {\r\n return {\r\n displayName: \"\",\r\n isAnonymous: true,\r\n isProfileAuthenticated: false,\r\n isBusinessCustomer: false,\r\n isCrm: false,\r\n anonymousId: anonymousId\r\n };\r\n }\r\n\r\n var displayName = cookieData.cn ? cookieData.cn.split(\" \")[0] : \"\";\r\n\r\n return {\r\n displayName: displayName,\r\n customerName: cookieData.cn,\r\n customerNumber: cookieData.aid,\r\n isAnonymous: cookieData.ann ? true : false,\r\n isProfileAuthenticated: cookieData.ia ? true : false,\r\n isBusinessCustomer: isBusinessCustomer(cookieData.cmg),\r\n profileId: cookieData.pid,\r\n isInLoyaltyClub: cookieData.kc ? true : false,\r\n isCrm: cookieData.cid ? true : false,\r\n visitGuid: cookieData.vg,\r\n komplettId: cookieData.kid,\r\n sessionId: cookieData.komidsid === undefined ? '' : cookieData.komidsid,\r\n anonymousId: anonymousId\r\n };\r\n\r\n function isBusinessCustomer(customerGroup) {\r\n return customerGroup !== undefined\r\n && customerGroup != customerGroupPrivate\r\n && customerGroup != customerGroupEmployee;\r\n }\r\n});","define(function () {\r\n function Helper() {\r\n this.triggerCustomEvent = triggerCustomEvent;\r\n\r\n function triggerCustomEvent(eventName, data) {\r\n var event;\r\n\r\n if (typeof CustomEvent === \"function\") {\r\n event = new CustomEvent(eventName, {detail: data});\r\n } else {\r\n event = document.createEvent(\"CustomEvent\");\r\n event.initCustomEvent(eventName, true, true, data);\r\n }\r\n\r\n document.dispatchEvent(event);\r\n };\r\n }\r\n\r\n return new Helper();\r\n});","define([\r\n \"PageDependentComponents/RichRelevance/promoService\",\r\n \"PageDependentComponents/RichRelevance/events\",\r\n \"JScript/Common/helper\",\r\n \"JScript/Common/requestContext\"\r\n], function (\r\n promoService,\r\n events,\r\n helper,\r\n requestContext\r\n) {\r\n function RichRelevanceIntegration(initObject, when) {\r\n var isEnabled = initObject.isEnabled;\r\n var requestData = initObject.pageData.requestContext;\r\n\r\n var initialized = false;\r\n var previousResult = null;\r\n\r\n var applyNewPageData = function (pageData) {\r\n when(events.recsLoaded).isSubscribedTo.dont(publishRecs);\r\n when(events.promosLoaded).isSubscribedTo.dont(publishPromos);\r\n when(events.navLoaded).isSubscribedTo.dont(publishNavs);\r\n\r\n populateRequestData(pageData);\r\n\r\n getPlacementsFromService(pageData)\r\n .then(function (result) {\r\n if (!result) {\r\n result = {\r\n promos: [],\r\n placements: []\r\n };\r\n }\r\n\r\n runRichRelevanceExperianceBrowser(result);\r\n\r\n promoService.setTargetAndReportUrls(result.promos || []);\r\n previousResult = result;\r\n\r\n publishRecs(events.recsLoaded.publish);\r\n publishPromos(events.promosLoaded.publish);\r\n publishNavs(events.navLoaded.publish);\r\n\r\n when(events.recsLoaded).isSubscribedTo(publishRecs);\r\n when(events.promosLoaded).isSubscribedTo(publishPromos);\r\n when(events.navLoaded).isSubscribedTo(publishNavs);\r\n });\r\n };\r\n\r\n function publishRecs(publish) {\r\n return publish(previousResult.placements || []);\r\n }\r\n\r\n function publishPromos(publish) {\r\n return publish(previousResult.promos || []);\r\n }\r\n\r\n function publishNavs(publish) {\r\n return publish(previousResult.promos || []);\r\n }\r\n\r\n function pageDataUpdated (value) {\r\n initObject = value;\r\n events.reset.publish();\r\n applyNewPageData(value.pageData);\r\n };\r\n\r\n function addedToCart(sku) {\r\n if (isEnabled) {\r\n fetch(\"/rr/addtocart\",\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Accept\": \"application/json\",\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify({\r\n sku: sku,\r\n requestContext: requestData\r\n }),\r\n credentials: \"same-origin\"\r\n });\r\n }\r\n };\r\n\r\n function getPlacementsFromService(pageData) {\r\n if (!isEnabled) {\r\n return Promise.resolve(null);\r\n }\r\n\r\n // we should skip RR call when promos and recs are empty except cart page or\r\n // recs are empty and promos has only one item (only history is added from backend) (we don't set this rule for category and search)\r\n if ((pageData.promoPlacementIds.length === 0 && pageData.recsPlacementIds.length === 0 && window.location.pathname !== \"/cart\") ||\r\n (pageData.promoPlacementIds.length === 0 && pageData.recsPlacementIds.length === 1 && pageData.recsPlacementIds[0] === \"history\"\r\n && pageData.pageType !== \"Category\" && pageData.pageType !== \"Search\")) {\r\n return Promise.resolve(null);\r\n }\r\n\r\n if (!initialized) {\r\n initialized = true;\r\n helper.triggerCustomEvent(\"richRelevanceInitialized\", { initObject: initObject, mutateInitObject: pageDataUpdated });\r\n }\r\n\r\n var cfrad = new URLSearchParams(window.location.search).get(\"cfrad\");\r\n\r\n if (cfrad) pageData.cfrad = cfrad;\r\n\r\n return fetch(\"/rr/GetPlacementsAndPromos\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Accept\": \"application/json\",\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify(pageData),\r\n credentials: \"same-origin\"\r\n }).then(function (response) {\r\n return response.ok ? response.json() : null;\r\n });\r\n }\r\n\r\n function populateRequestData(pageData) {\r\n pageData.requestContext.isCrm = requestContext.isCrm;\r\n pageData.requestContext.isBusinessCustomer = requestContext.isBusinessCustomer;\r\n pageData.requestContext.anonymous = requestContext.isAnonymous;\r\n pageData.requestContext.showAsNetPrices = requestContext.isBusinessCustomer;\r\n pageData.requestContext.komplettId = requestContext.komplettId;\r\n pageData.requestContext.accountId = requestContext.customerNumber;\r\n pageData.requestContext.anonymousId = requestContext.anonymousId;\r\n pageData.requestContext.visitGuid = requestContext.visitGuid;\r\n }\r\n\r\n function runRichRelevanceExperianceBrowser(result) {\r\n var script;\r\n\r\n if (result.rrAnnotations) {\r\n if (window.rr_annotations_array) {\r\n window.rr_annotations_array.push(result.rrAnnotations);\r\n }\r\n else {\r\n window.rr_annotations_array = [result.rrAnnotations];\r\n }\r\n\r\n if (window.rr_experience_browser) {\r\n window.rr_experience_browser.start();\r\n }\r\n else {\r\n script = document.createElement(\"script\");\r\n script.src = \"//cdn.richrelevance.com/dashboard/applications/cfrad/dist/index.min.js\";\r\n script.async = true;\r\n document.getElementsByTagName(\"head\")[0].appendChild(script);\r\n }\r\n }\r\n }\r\n\r\n when.addEventListener(document, \"cartInitialized\", function (e) {\r\n if (e && e.detail) {\r\n initObject.pageData.cartModel = {\r\n productsInCart: e.detail.productsIds\r\n };\r\n\r\n initObject.pageData.pageType = \"Cart\";\r\n initObject.pageData.recsPlacementIds = e.detail.placementIds;\r\n\r\n applyNewPageData(initObject.pageData);\r\n }\r\n });\r\n\r\n when.addEventListener(document, \"cartItemsChanged\", function (e) {\r\n if (e && e.detail) {\r\n initObject.pageData.cartModel = {\r\n productsInCart: e.detail\r\n };\r\n\r\n applyNewPageData(initObject.pageData);\r\n }\r\n });\r\n\r\n init: {\r\n applyNewPageData(initObject.pageData);\r\n when(events.updatedPageData).do(pageDataUpdated);\r\n when(events.addToCart).do(addedToCart);\r\n }\r\n }\r\n\r\n return RichRelevanceIntegration;\r\n});","define([\"ksc-breakpoint-notifier\"], function (notifier) {\r\n function BreakpointNotifierViewModel(initObject) {\r\n notifier.init({\r\n fullResponsive: initObject.fullResponsive\r\n });\r\n }\r\n\r\n return BreakpointNotifierViewModel;\r\n});","define([], function () {\r\n function BreadCrumbsViewModel(initObject, when) {\r\n var self = this;\r\n this.crumbs = ko.observableArray(initObject.model.links);\r\n this.hereText = ko.observable(initObject.model.here);\r\n this.isCurrentLocationVisible = ko.observable(initObject.model.showCurrentLocationOnSmallScreens);\r\n }\r\n\r\n return BreadCrumbsViewModel;\r\n});","!function(e,r){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define(\"NumericStringFormat\",[],r):\"object\"==typeof exports?exports.NumericStringFormat=r():e.NumericStringFormat=r()}(this,function(){return function(e){function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}var t={};return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p=\"\",r(r.s=0)}([function(e,r,t){\"use strict\";function n(e,r,t){var n;if(\"string\"==typeof e){if(n=e,n=parseFloat(n.replace(/ /g,\"\").replace(\",\",\".\")),isNaN(n))return e}else n=e;var o=function(e,r,t){var n=e.split(\".\");return n[0]=n[0].replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g,\"$1\"+t),e=n.join(r)},u=function(e,r,n,u,i,c,a){t=void 0===r?n:r;var f=e.toFixed(t);return o(f,u,i)+(0===t?c:a)};switch(r.toUpperCase()){case\"DK\":return u(n,t,0,\",\",\".\",\",-\",\"\");case\"FI\":return u(n,t,2,\",\",\" \",\" €\",\" €\");case\"NO\":return u(n,t,0,\",\",\" \",\",-\",\"\");case\"SE\":return u(n,t,0,\",\",\".\",\":-\",\"\")}return String(n)}Object.defineProperty(r,\"__esModule\",{value:!0}),r.toCurrencyString=n}])});","define([\"komplett-pubsub\"], function (pubsub) {\r\n /* eslint-disable no-unused-vars */\r\n var events = {\r\n disableScrolling: function (disableScrolling) { },\r\n megaMobileNavOpen: function (value) { }\r\n };\r\n /* eslint-enable no-unused-vars */\r\n\r\n return pubsub.extend(events);\r\n});","define([\r\n \"Layout/events\",\r\n \"ksc-ubo\",\r\n \"ksc-breakpoint-notifier\",\r\n], function (layoutEvents,\r\n kscUbo,\r\n breakpointNotifier) {\r\n function LayoutViewModel(initObject, when) {\r\n var self = this;\r\n\r\n this.lockScrollOnBodySm = ko.observable(false);\r\n this.lockScrollOnBodyXs = ko.observable(false);\r\n this.lockScrollOnBody = ko.observable(false);\r\n this.megaMobileNavOpen = ko.observable(false);\r\n\r\n var isXs = ko.observable(false);\r\n var isSm = ko.observable(false);\r\n\r\n self.disableScrolling = ko.pureComputed(function () {\r\n return (isXs() && self.lockScrollOnBodyXs())\r\n || (isSm() && self.lockScrollOnBodySm())\r\n || self.lockScrollOnBody();\r\n });\r\n\r\n self.setPosition = ko.computed(function () {\r\n if (!self.disableScrolling() && self.lastPosition) {\r\n window.scrollTo(0, self.lastPosition);\r\n self.lastPosition = false;\r\n }\r\n })\r\n\r\n when(layoutEvents.disableScrolling).do(function (disableScrolling) {\r\n self.lockScrollOnBody(disableScrolling);\r\n });\r\n\r\n when(layoutEvents.megaMobileNavOpen).do(function (open) {\r\n if (open) {\r\n var scrollTop = document.body.scrollTop;\r\n }\r\n self.megaMobileNavOpen(open);\r\n\r\n if (!open) {\r\n document.body.scrollTo(scrollTop);\r\n }\r\n });\r\n\r\n when(kscUbo.events.uboOpened).do(function () {\r\n self.lastPosition = window.scrollY;\r\n self.lockScrollOnBodyXs(true);\r\n });\r\n\r\n when(kscUbo.events.uboClosed).do(function () {\r\n self.lockScrollOnBodyXs(false);\r\n });\r\n \r\n when(breakpointNotifier.events.isXs).do(function (value) {\r\n isXs(value);\r\n });\r\n\r\n when(breakpointNotifier.events.isSm).do(function (value) {\r\n isSm(value);\r\n });\r\n }\r\n\r\n return LayoutViewModel;\r\n});","define(function () {\r\n return function EmptyViewModel() {\r\n // this is an empty view model, don't add stuff here\r\n };\r\n});","define([], function() {\r\n function call(func) {\r\n func();\r\n }\r\n\r\n function unsubscribe(event, reaction) {\r\n event.dont(reaction);\r\n }\r\n\r\n function subscribe(event, reaction) {\r\n event(reaction);\r\n var unsubscribe = event.dont.bind(null, reaction);\r\n this.eventSubscribers.push(unsubscribe);\r\n return unsubscribe;\r\n }\r\n\r\n function doAndDont(self, event) {\r\n var obj = subscribe.bind(self, event);\r\n obj.do = obj;\r\n obj.dont = unsubscribe.bind(null, event);\r\n return obj;\r\n }\r\n\r\n function whenSomething() {\r\n if (this.destroyed) throw new Error(\"This context has been destroyed!\");\r\n\r\n if (arguments.length === 0) {\r\n var childContext = createContext();\r\n this.childContexts.push(childContext.destroyContext);\r\n return childContext.when;\r\n } else if (arguments.length === 1 && typeof arguments[0] === \"function\") {\r\n var result = doAndDont(this, arguments[0]);\r\n result.isSubscribedTo = doAndDont(this, arguments[0].isSubscribedTo);\r\n return result;\r\n } else if (arguments.length === 2 && typeof arguments[1] === \"function\") {\r\n return subscribe.call(this, arguments[0], arguments[1]);\r\n } else if (arguments.length === 3 && typeof arguments[2] === \"function\") {\r\n return addEventListener().call(this, arguments[0], arguments[1], arguments[2]);\r\n } else if (arguments.length === 4 && typeof arguments[2] === \"function\") {\r\n return addEventListener().call(this, arguments[0], arguments[1], arguments[2], arguments[3]);\r\n } else {\r\n throw new Error(\"unknown arguments\", arguments);\r\n }\r\n }\r\n\r\n function removeEventListener(target, event, listener) {\r\n target.removeEventListener(event, listener);\r\n }\r\n\r\n function addEventListener(target, event, listener, bubble) {\r\n target.addEventListener(event, listener, bubble);\r\n var removeListener = removeEventListener.bind(null, target, event, listener);\r\n this.eventListeners.push(removeListener);\r\n return removeListener;\r\n }\r\n\r\n function addTimeout(func, ms) {\r\n var timeout = window.setTimeout(func, ms);\r\n this.timeouts.push(removeTimeout.bind(null, timeout));\r\n return timeout;\r\n }\r\n\r\n function removeTimeout(timeout) {\r\n window.clearTimeout(timeout);\r\n }\r\n\r\n function addInterval(func, ms) {\r\n var interval = window.setInterval(func, ms);\r\n this.intervals.push(removeInterval.bind(null, interval));\r\n return interval;\r\n }\r\n\r\n function removeInterval(interval) {\r\n window.clearInterval(interval);\r\n }\r\n\r\n function thisIsDestroyed(reaction) {\r\n this.onDestroyListeners.push(reaction);\r\n }\r\n\r\n function destroyChildContexts() {\r\n this.childContexts.forEach(call);\r\n this.childContexts = [];\r\n }\r\n\r\n function destroyContext() {\r\n if (this.destroyed) return;\r\n this.eventSubscribers.forEach(call);\r\n this.onDestroyListeners.forEach(call);\r\n this.childContexts.forEach(call);\r\n this.eventListeners.forEach(call);\r\n this.timeouts.forEach(call);\r\n this.intervals.forEach(call);\r\n this.eventSubscribers = null;\r\n this.onDestroyListeners = null;\r\n this.childContexts = null;\r\n this.eventListeners = null;\r\n this.timeouts = null;\r\n this.intervals = null;\r\n this.destroyed = true;\r\n }\r\n\r\n function createContext() {\r\n var context = {\r\n destroyed: false,\r\n onDestroyListeners: [],\r\n childContexts: [],\r\n eventSubscribers: [],\r\n eventListeners: [],\r\n timeouts: [],\r\n intervals: []\r\n };\r\n\r\n var when = whenSomething.bind(context);\r\n\r\n when.thisIsDestroyed = thisIsDestroyed.bind(context);\r\n\r\n when.destroyChildContexts = destroyChildContexts.bind(context);\r\n\r\n when.addEventListener = addEventListener.bind(context);\r\n when.removeEventListener = removeEventListener;\r\n\r\n when.setTimeout = addTimeout.bind(context);\r\n when.clearTimeout = removeTimeout;\r\n\r\n when.setInterval = addInterval.bind(context);\r\n when.clearInterval = removeInterval;\r\n\r\n return {\r\n when: when,\r\n destroyContext: destroyContext.bind(context)\r\n };\r\n }\r\n\r\n return createContext().when;\r\n});","define([], function () {\r\n var map = Object.create(null);\r\n\r\n function fastRequire(dep, onload, onerror) {\r\n if (dep in map) {\r\n map[dep] = map[dep].then(delay(onload), rethrow(onerror));\r\n } else {\r\n map[dep] = new Promise(function (resolve, reject) {\r\n require([dep], resolve, reject);\r\n }).then(wrap).then(delay(onload), rethrow(onerror));\r\n }\r\n }\r\n\r\n function delay(cb) {\r\n if (!cb) {\r\n return function noCb(wrapper) {\r\n return wrapper;\r\n };\r\n }\r\n\r\n return function delayed(wrapper) {\r\n cb(wrapper.value);\r\n var now = Date.now();\r\n if (now - wrapper.start > 150) {\r\n wrapper.start = now;\r\n return new Promise(function onRaf(resolve) {\r\n window.requestAnimationFrame(resolve);\r\n }).then(function onRafThen() {\r\n return wrapper;\r\n });\r\n }\r\n return wrapper;\r\n };\r\n }\r\n\r\n function wrap(value) {\r\n return {\r\n value: value,\r\n start: Date.now()\r\n };\r\n }\r\n\r\n function rethrow(onerror) {\r\n if (!onerror) {\r\n return function onOnError(error) {\r\n return Promise.reject(error);\r\n };\r\n }\r\n\r\n return function onOnError(error) {\r\n onerror(error);\r\n return Promise.reject(error);\r\n };\r\n }\r\n\r\n return fastRequire;\r\n});","define([\"JScript/Common/fastRequire\", \"JScript/Common/whenContext\"], function (fastRequire, whenContext) {\r\n var lazyLoadWhenVisible = makeObserver();\r\n\r\n return {\r\n loadViewModel: function () {\r\n toArray(document.querySelectorAll(\"[data-viewmodel]\"))\r\n .concat(toArray(document.querySelectorAll(\"[data-lazy-viewmodel]\")))\r\n .forEach(function (target) {\r\n var viewModelName = target.getAttribute(\"data-viewmodel\") || target.getAttribute(\"data-lazy-viewmodel\");\r\n\r\n if (hasParentViewModelElement(target)) {\r\n // preload the viewmodel because we know that we will need it soon\r\n fastRequire(viewModelName);\r\n return;\r\n }\r\n\r\n lazyLoadAndApplyViewModel(target, viewModelName, null, function apply(viewModel, when) {\r\n target[\"@ViewModelName\"] = viewModelName;\r\n ko.utils.domData.clear(target);\r\n ko.applyBindings(viewModel, target);\r\n ko.utils.domNodeDisposal.addDisposeCallback(target, when.destroyChildContexts);\r\n });\r\n });\r\n },\r\n loadNestedViewModel: function (target, viewModelName, parentContext) {\r\n lazyLoadAndApplyViewModel(target, viewModelName, parentContext, function applyNested(viewModel, when) {\r\n target[\"@ViewModelName\"] = viewModelName;\r\n var childContext = parentContext.createChildContext(viewModel);\r\n // forget about the binding on this element so we can apply a new binding to it\r\n ko.utils.domData.clear(target);\r\n ko.applyBindings(childContext, target);\r\n ko.utils.domNodeDisposal.addDisposeCallback(target, when.destroyChildContexts);\r\n });\r\n }\r\n };\r\n\r\n function lazyLoadAndApplyViewModel(target, viewModelName, bindingContext, apply) {\r\n if (target.hasAttribute(\"data-lazy-viewmodel\")) {\r\n lazyLoadWhenVisible(target, function intersectionHandler() {\r\n loadAndApplyViewModel(target, viewModelName, bindingContext, apply);\r\n });\r\n } else {\r\n loadAndApplyViewModel(target, viewModelName, bindingContext, apply);\r\n }\r\n }\r\n\r\n function loadAndApplyViewModel(target, viewModelName, bindingContext, apply) {\r\n fastRequire(viewModelName, function fastRequireThen(ViewModel) {\r\n if (ViewModel === void 0 || ViewModel === null) {\r\n console.error(\"ViewModel is undefined for data-viewmodel=\\\"\" + viewModelName + \"\\\" on element\",\r\n target);\r\n return;\r\n }\r\n\r\n var model = getModel(target, bindingContext);\r\n var when = whenContext();\r\n var viewModel = typeof ViewModel === \"object\" ? ViewModel : new ViewModel(model, when());\r\n tryApply(apply, viewModel, when);\r\n }, function (e) {\r\n console.error(\"failed to load viewmodel(s) while loading viewModel \" + viewModelName, e.requireModules);\r\n console.error(e);\r\n });\r\n }\r\n\r\n function getModel(target, bindingContext) {\r\n var initObjectName = target.getAttribute(\"data-initobject\");\r\n if (initObjectName) {\r\n try {\r\n return JSON.parse(initObjectName);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n } else {\r\n return getComponentParamsFromCustomElement(target, bindingContext);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n // this is stolen from the knockout sourcecode, and I had to copy it since it's not exposed as a public api\r\n function getComponentParamsFromCustomElement(elem, bindingContext) {\r\n var paramsAttribute = elem.getAttribute(\"data-params\");\r\n\r\n if (!paramsAttribute) {\r\n return;\r\n }\r\n\r\n var params = ko.bindingProvider.instance.nativeBindingProviderInstance.parseBindingsString(paramsAttribute, bindingContext, elem, { \"valueAccessors\": true, \"bindingParams\": true });\r\n var rawParamComputedValues = Object.create(null);\r\n for (var paramName in params) { // eslint-disable-line guard-for-in\r\n rawParamComputedValues[paramName] = ko.computed(params[paramName], null, { disposeWhenNodeIsRemoved: elem });\r\n }\r\n var result = Object.create(null);\r\n for (paramName in rawParamComputedValues) { // eslint-disable-line guard-for-in\r\n var paramValueComputed = rawParamComputedValues[paramName];\r\n var paramValue = paramValueComputed.peek();\r\n // Does the evaluation of the parameter value unwrap any observables?\r\n if (!paramValueComputed.isActive()) {\r\n // No it doesn't, so there's no need for any computed wrapper. Just pass through the supplied value directly.\r\n // Example: \"someVal: firstName, age: 123\" (whether or not firstName is an observable/computed)\r\n result[paramName] = paramValue;\r\n } else {\r\n // Yes it does. Supply a computed property that unwraps both the outer (binding expression)\r\n // level of observability, and any inner (resulting model value) level of observability.\r\n // This means the component doesn't have to worry about multiple unwrapping. If the value is a\r\n // writable observable, the computed will also be writable and pass the value on to the observable.\r\n result[paramName] = ko.computed({\r\n \"read\": function () { // eslint-disable-line no-loop-func\r\n return ko.unwrap(paramValueComputed());\r\n },\r\n \"write\": ko.isWriteableObservable(paramValue) && function (value) { // eslint-disable-line no-loop-func\r\n paramValueComputed()(value);\r\n },\r\n disposeWhenNodeIsRemoved: elem\r\n });\r\n }\r\n }\r\n return result; // eslint-disable-line consistent-return\r\n }\r\n\r\n function makeObserver() {\r\n if ('IntersectionObserver' in window) {\r\n var observed = new Map();\r\n var observer = new IntersectionObserver(function (entries) {\r\n entries.forEach(function (entry) {\r\n // Old browsers don't have isIntersection, so we use intersectionRatio instead\r\n // intersectionRatio isn't perfect, but it's good enough for us\r\n if (entry.isIntersecting === undefined ? entry.intersectionRatio > 0 : entry.intersectionRatio) {\r\n var callback = observed.get(entry.target);\r\n if (callback) {\r\n observer.unobserve(entry.target);\r\n observed.delete(entry.target);\r\n callback();\r\n }\r\n }\r\n });\r\n }, {\r\n threshold: 0.1,\r\n rootMargin: \"200px 0px\"\r\n });\r\n\r\n return function lazyLoadWhenVisible(element, callback) {\r\n observed.set(element, callback);\r\n observer.observe(element);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n observer.unobserve(element);\r\n observed.delete(element);\r\n });\r\n };\r\n } else {\r\n // IntersectionObserver not supported,\r\n // just load it straight away\r\n return function (element, callback) {\r\n callback();\r\n };\r\n }\r\n }\r\n\r\n function hasParentViewModelElement(element) {\r\n while ((element = element.parentNode) && typeof (element.hasAttribute) === \"function\") { // eslint-disable-line no-param-reassign, no-cond-assign\r\n if (element.hasAttribute(\"data-viewmodel\") || element.hasAttribute(\"data-lazy-viewmodel\")) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function toArray(arrayLike) {\r\n return Array.prototype.slice.call(arrayLike, 0);\r\n }\r\n\r\n function tryApply(apply, viewModel, when) {\r\n try {\r\n apply(viewModel, when);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n});","define([], function () {\r\n /* eslint-disable no-param-reassign */\r\n function pushState(url, state) {\r\n url = pathnameWhenEmptyQueryString(url);\r\n history.pushState(state, \"\", url);\r\n }\r\n\r\n function replaceState(url, state) {\r\n url = pathnameWhenEmptyQueryString(url);\r\n history.replaceState(state, \"\", url);\r\n }\r\n /* eslint-enable no-param-reassign */\r\n\r\n function fallback() {\r\n // pushState is not supported by the current browser.\r\n // Instead of using hash navigation we do nothing\r\n // The only browser supported by us that doesn't\r\n // support push state is Internet Explorer 9\r\n // Only a tiny percentage of users is on IE9\r\n }\r\n\r\n var supported = \"pushState\" in history;\r\n\r\n function pathnameWhenEmptyQueryString(url) {\r\n if (url === \"?\") {\r\n return location.pathname;\r\n }\r\n return url;\r\n };\r\n\r\n return {\r\n pushState: supported ? pushState : fallback,\r\n replaceState: supported ? replaceState : fallback\r\n };\r\n});","define([], function () {\r\n function lightenDarkenColor(color, amount) {\r\n var usePound = false;\r\n\r\n if (color[0] === \"#\") {\r\n color = color.slice(1);\r\n usePound = true;\r\n }\r\n\r\n var num = parseInt(color, 16);\r\n\r\n var r = (num >> 16) + amount;\r\n\r\n if (r > 255) r = 255;\r\n else if (r < 0) r = 0;\r\n\r\n var b = ((num >> 8) & 0x00FF) + amount;\r\n\r\n if (b > 255) b = 255;\r\n else if (b < 0) b = 0;\r\n\r\n var g = (num & 0x0000FF) + amount;\r\n\r\n if (g > 255) g = 255;\r\n else if (g < 0) g = 0;\r\n var newColor = (usePound ? \"#\" : \"\") + (g | (b << 8) | (r << 16)).toString(16);\r\n var returnVal = newColor.length === 7 ? newColor : (usePound ? \"#\" : \"\") + color;\r\n return returnVal;\r\n };\r\n\r\n return lightenDarkenColor;\r\n})","define([\"JScript/Common/requestContext\"], function (requestContext) {\r\n return function CheckSessionViewModel(initObject) {\r\n if (!requestContext.isAnonymous && requestContext.sessionId.length !== 0) {\r\n var substitutedUtlWithSessionId = initObject.checkSessionUrl.replace('xxx', requestContext.sessionId);\r\n fetch(substitutedUtlWithSessionId, {\r\n credentials: \"include\",\r\n })\r\n .then(function (response) {\r\n return response.json();\r\n })\r\n .then(function (isValid) {\r\n if (!isValid) {\r\n fetch(\"/login/semilogout\", {\r\n method: \"POST\",\r\n })\r\n .then(function () {\r\n window.location.href = \"/\";\r\n });\r\n }\r\n });\r\n }\r\n };\r\n});\r\n"]}