{"version":3,"sources":["session.js","consentsManager.js"],"names":["Vendd","Scripts","load","scrollTo","whereToScroll","topOffset","$productRerviewControl","$","length","tabIndex","closest","data","find","trigger","offset","top","$openFormLink","setTimeout","animate","scrollTop","window","scroll","clearTimeout","each","i","wrapper","$box","$container","visible","this","hasClass","removeAttr","remove","queryString","document","location","search","indexOf","initTabPanel","$page","$map","MessageBus","subscribe","Plugins","Messages","GoogleMapsLoaded","opts","lat","parseFloat","lng","html","get","create"],"mappings":"AAAAA,MAAAC,QAAAC,KAAA,WA6CA,SAAAC,SAAAC,eACA,IAAAC,UACAC,uBAAAC,EAAA,qDAEA,GAAA,GAAAD,uBAAAE,OACA,KAAA,2CAEA,IAAAC,SAAAH,uBAAAI,QAAA,gBAAAC,KAAA,qBCnDA,GDoDAL,uBAAAI,QAAA,0BAAAE,KAAA,8BAAAH,SAAA,MAEAI,QAAA,SAEAR,UAAAC,uBAAAQ,SAAAC,IAAA,GCxDA,QAAAX,cAAA,CAEA,IAAAY,cAAAV,uBAAAM,KAAA,4CACAI,cAAAR,OAAA,EACAQ,cAAAH,QAAA,SAEAP,uBAAAM,KAAA,sCAAAC,QAAA,SAIA,IAAAV,SAAAc,WAAA,WAAAV,EAAA,cAAAW,QAAA,CAAAC,UAAAd,WAAA,MAAA,KAEAE,EAAAa,QAAAC,OAAA,WACAC,aAAAnB,YDZAI,EAAA,2BAAAgB,KAAA,SAAAC,EAAAC,SAEA,IAsBAC,KACAC,WACAC,QAxBArB,EAAAkB,SAsBAC,KAAAnB,EAAA,kBACAoB,WAAApB,EAAA,4BACAqB,SAAA,GAEAF,KAAAlB,OAAA,GAAAmB,WAAAnB,OAAA,KACAD,EAAA,6BAAAmB,MAAAH,KAAA,WACAhB,EAAAsB,MAAAC,SAAA,0BAAAvB,EAAAsB,MAAAC,SAAA,0BAAAvB,EAAAsB,MAAAC,SAAA,+BACAF,SAAA,KAIArB,EAAA,6BAAAmB,MAAAlB,OAAA,GAAAoB,SACAD,WAAAI,WAAA,SACAxB,EAAA,gFAAAwB,WAAA,UAEAJ,WAAAJ,KAAA,WAAAhB,EAAAsB,MAAAG,YAlCA,IAAAC,YAAAC,SAAAC,SAAAC,OACAH,YAAAI,QAAA,mBAAA,GACAlC,SAAA,SAEA8B,YAAAI,QAAA,qBAAA,GAAAJ,YAAAI,QAAA,YAAA,GAAAJ,YAAAI,QAAA,SAAA,IACAlC,SAAA,aAGAI,EAAA,2BAAAC,OAAA,GACA8B,eCGA,IAAAC,MAAAhC,EAAA,2BAEA,KAAAgC,MAAA/B,OAAA,GAAA,CAGA,IAAAgC,KAAAjC,EAAA,gBAAAgC,OAEAhC,EAAA,gBAAAgC,OAAA/B,OAAA,GAAAgC,KAAA7B,KAAA,aAAA6B,KAAA7B,KAAA,cACAX,MAAAyC,WAAAC,UAAA1C,MAAA2C,QAAAC,SAAAC,iBAAA,QAGA,WACA,IAAAC,KAAA,CACAC,IAAAC,WAAAR,KAAA7B,KAAA,aACAsC,IAAAD,WAAAR,KAAA7B,KAAA,cACAuC,KAAA3C,EAAA,2BAAAgC,OAAAW,QAEAV,KAAAW,IAAA,GAAAC,OAAA,CAAAN","file":"ProductDetails_A.js","sourcesContent":["Vendd.Scripts.load(function () {\n 'use strict';\n\n Vendd.MessageBus.publishAsync(Vendd.User, new Vendd.User.Messages.GetSessionState());\n\n if (LhApp.Context.Item.Template.indexOf('productDetails') >= 0) {\n Vendd.MessageBus.subscribe(Vendd.Product.Messages.SetSelected, 'session.js', function (envelope) {\n trackStats();\n trackAffiliates();\n });\n }\n else {\n Vendd.MessageBus.subscribe(Vendd.User.Messages.GetSessionStateSuccess, 'session.js', function (envelope) {\n trackStats();\n trackAffiliates();\n });\n }\n\n var trackStatsCompleted;\n function trackStats() {\n //just tracking. allow some delay.\n window.setTimeout(function () {\n if (trackStatsCompleted)\n return;\n trackStatsCompleted = true;\n\n Vendd.HandleItemStatistics();\n Vendd.HandleProductStatistics();\n }, 1000);\n }\n\n var trackAffiliatesCompleted;\n function trackAffiliates() {\n //page trackiing disbaled\n if (!LhApp.Context.IsAffiliateTrackingEnabled)\n return;\n\n //just tracking. allow some delay.\n window.setTimeout(function () {\n if (trackAffiliatesCompleted)\n return;\n\n if (LhApp.Context.IsConsentsEnabled) {\n if (window.ConsentsManager.cookiesStatus.marketingCookies) {\n trackAffiliatesCompleted = true;\n LhApp.Function.PageTrackingRequest();\n }\n } else {\n trackAffiliatesCompleted = true;\n LhApp.Function.PageTrackingRequest();\n }\n }, 1000);\n }\n\n Vendd.MessageBus.subscribe(Vendd.Consents.Messages.InsertAllCookiesSuccess, 'session.js.InsertAllCookiesSuccess', function () {\n trackAffiliates();\n });\n});","Vendd.Scripts.load(function () {\n\n window.ConsentsManager = new ConsentsManager();\n\n function ConsentsManager() {\n var self = this;\n\n this.cookie = 'ConsentChecked';\n this.cookieChecked;\n this.cookiesStatus = {};\n\n this.cookiesWidgetWrapper = $('.x-cookie-acceptance');\n\n this.cookiesModalWrapper = $('.cookies-modal-container');\n\n this.cookieTypeCodes = [\n \"FunctionalityCookies\",\n \"StatisticsCookies\",\n \"MarketingCookies\"\n ];\n this.endpoints = {\n \"insertConsents\": \"api/Consents/InsertConsents\",\n \"getCookiesConsentsModel\": \"api/Consents/GetCookiesConsentsModel\",\n \"insertAllCookies\": \"api/Consents/InsertAllCookies\",\n \"updateAllUserConsents\": \"api/Consents/UpdateAllUserConsents\",\n \"getCookiesWidgetModel\": \"api/Consents/GetCookiesWidgetModel\"\n };\n\n\n //------------------------------------------------------------------------------\n this.showCookiesWidget = function () {\n if (LhApp.Context.CookiesDisplay === \"Modal\") {\n self.initCookiesModal();\n } else if (LhApp.Context.CookiesDisplay === \"Layer\" && $('.manage-cookies-container').length <= 0) {\n this.cookiesWidgetWrapper.addClass('visible');\n }\n };\n\n //------------------------------------------------------------------------------\n this.hideCookiesWidget = function () {\n this.cookiesWidgetWrapper.removeClass('visible');\n };\n\n //------------------------------------------------------------------------------\n this.createOrUpdateCookie = function () {\n var date = new Date();\n date.setTime(date.getTime() + (60 * 60 * 1000));\n Cookies.set(self.cookie, self.cookiesStatus, { expires: date, samesite: 'Lax' });\n\n /*--DEPRICATED-- Expose Cookie Consents to Data Layer*/\n var consentsCookie = Cookies.getJSON('ConsentChecked');\n if (consentsCookie) {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({ 'functionalityCookiesEnabled': consentsCookie.functionalityCookies, 'marketingCookiesEnabled': consentsCookie.marketingCookies, 'statisticCookiesEnabled': consentsCookie.statisticCookies });\n }\n };\n\n //------------------------------------------------------------------------------\n this.getCookieStatus = function () {\n self.cookiesStatus = !self.cookieChecked ? {\n userHasSetCookies: false,\n functionalityCookies: LhApp.Context.CookiesDefaultActive,\n statisticCookies: LhApp.Context.CookiesDefaultActive,\n marketingCookies: LhApp.Context.CookiesDefaultActive\n } : Cookies.getJSON(self.cookie);\n };\n\n //------------------------------------------------------------------------------\n this.onGetCookieModelSuccess = function (res) {\n\n self.cookiesStatus.userHasSetCookies = res.UserHasSetCookies;\n if (self.cookiesStatus.userHasSetCookies) {\n self.cookiesStatus.functionalityCookies = res.ApprovedFunctionalityCookies;\n self.cookiesStatus.marketingCookies = res.ApprovedMarketingCookies;\n self.cookiesStatus.statisticCookies = res.ApprovedStatisticsCookies;\n }\n\n self.createOrUpdateCookie();\n self.activateCookies();\n\n if (!res.UserHasSetCookies) {\n self.showCookiesWidget();\n } else {\n self.hideCookiesWidget();\n }\n };\n\n //------------------------------------------------------------------------------\n this.insertConsents = function (data) {\n var type = data.type;\n\n function onSuccess(response) {\n\n if (jQuery.inArray(type, self.cookieTypeCodes) > -1) {\n self.getCookieConsentsModel();\n }\n\n Vendd.MessageBus.publishAsync(Vendd.Consents, new Vendd.Consents.Messages.InsertConsents);\n }\n\n function onFailure(response) {\n return response;\n }\n\n var options = {\n method: 'POST',\n url: self.endpoints.insertConsents,\n data: data,\n onSuccess: onSuccess,\n onFailure: onFailure\n };\n\n Vendd.Service.call(options);\n };\n\n var dontLoadOnLoginSuccess;\n Vendd.MessageBus.subscribe(Vendd.User.Messages.Login, self, function (envelope) {\n dontLoadOnLoginSuccess = envelope.message.data.options && envelope.message.data.options.isLoginForm;\n\n if (dontLoadOnLoginSuccess)\n Cookies.remove(self.cookie, { path: '/' });\n });\n\n //------------------------------------------------------------------------------\n this.getCookieConsentsModel = function (afterInsertAllCookiesSuccess) {\n if (dontLoadOnLoginSuccess)\n return;\n\n function onSuccess(response) {\n self.onGetCookieModelSuccess(response.data);\n\n if (afterInsertAllCookiesSuccess || (!self.cookieChecked && !afterInsertAllCookiesSuccess && response.data.UserHasSetCookies))\n Vendd.MessageBus.publishAsync(Vendd.Consents, new Vendd.Consents.Messages.InsertAllCookiesSuccess);\n }\n\n function onFailure(response) {\n return response;\n }\n\n var options = {\n method: 'GET',\n url: self.endpoints.getCookiesConsentsModel + \"?v=\" + Math.random(),\n onSuccess: onSuccess,\n onFailure: onFailure\n };\n\n Vendd.Service.call(options);\n };\n\n //------------------------------------------------------------------------------\n this.insertAllCookies = function (data) {\n\n function onSuccess(response) {\n self.getCookieConsentsModel(true);\n }\n\n function onFailure(response) {\n return response;\n }\n\n var options = {\n method: 'POST',\n url: self.endpoints.insertAllCookies,\n data: data,\n onSuccess: onSuccess,\n onFailure: onFailure\n };\n\n Vendd.Service.call(options);\n };\n\n //------------------------------------------------------------------------------\n this.updateAllUserConsents = function () {\n\n function onSuccess(response) {\n self.getCookieConsentsModel();\n }\n\n function onFailure(response) {\n return response;\n }\n\n var options = {\n method: 'GET',\n url: self.endpoints.updateAllUserConsents,\n onSuccess: onSuccess,\n onFailure: onFailure\n };\n\n Vendd.Service.call(options);\n };\n\n //------------------------------------------------------------------------------\n this.getCookiesWidgetModel = function () {\n\n function onSuccess(response) {\n var initModalHtml = self.cookiesModalWrapper.html();\n\n response.data = $.extend(response.data, { cookiesModal: true });\n\n /*update model with cookie values*/\n var consentsCookie = Cookies.getJSON(self.cookie);\n if (consentsCookie) {\n $.map(response.data.Cookies, function (e) { return e.IsActive = (e.ConsentTypeCode == \"FunctionalityCookies\") ? consentsCookie.functionalityCookies : (e.ConsentTypeCode == \"StatisticsCookies\") ? consentsCookie.statisticCookies : (e.ConsentTypeCode == \"MarketingCookies\") ? consentsCookie.marketingCookies : e.IsActive });\n }\n var html = Vendd.Handlebars.parse(\"cookiesManager_A\", response.data);\n\n self.cookiesModalWrapper.html(html);\n //$.fancybox.update();\n\n var tabsCont = $('.tabs-container', self.cookiesModalWrapper);\n var scrollContConfig = $('.js-scrollbar', self.cookiesModalWrapper);\n\n if (!isTouch() && scrollContConfig) {\n scrollContConfig.mCustomScrollbar({\n scrollbarPosition: \"outside\",\n scrollInertia: 400,\n timeout: 1000,\n theme: \"dark-2\",\n mouseWheel: { preventDefault: false },\n });\n }\n\n $('.tab-title', tabsCont).click(function () {\n var thisTab = $(this);\n thisTab.addClass('active').siblings().removeClass('active');\n\n $('.tab-content:eq(' + thisTab.index() + ')', tabsCont).addClass('active').siblings().removeClass('active');\n });\n\n $('.js-save-cookies-btn', self.cookiesModalWrapper).click(function () {\n var data = { fCookies: true, sCookies: true, mCookies: true, source: 'Cookie Consent Page' }, type;\n\n $('.switch-checkbox', self.cookiesModalWrapper).each(function () {\n type = $(this).closest('div[data-type]').data('type');\n\n if (type === \"FunctionalityCookies\") {\n data.fCookies = $(this).is(\":checked\");\n } else if (type === \"StatisticsCookies\") {\n data.sCookies = $(this).is(\":checked\");\n } else if (type === \"MarketingCookies\") {\n data.mCookies = $(this).is(\":checked\");\n }\n\n });\n\n self.insertAllCookies(data);\n $.fancybox.close();\n });\n\n $('.js-back-to-modal', self.cookiesModalWrapper).click(function () {\n self.cookiesModalWrapper.html(initModalHtml);\n });\n }\n\n function onFailure(response) {\n return response;\n }\n\n var options = {\n method: 'GET',\n url: self.endpoints.getCookiesWidgetModel,\n onSuccess: onSuccess,\n onFailure: onFailure\n };\n\n Vendd.Service.call(options);\n }\n\n //------------------------------------------------------------------------------\n this.registerEvents = function () {\n\n Vendd.MessageBus.subscribe(Vendd.Consents.Messages.InsertAllCookiesSuccess, self, function () {\n //update tagmanager consents if enabled\n var trackingModel = LhApp.Function.Tracking.getTrackingModel();\n if (trackingModel && trackingModel.EnableGoogleTagManagerConsents) {\n LhApp.Function.Tracking.gtag('consent', 'update', {\n 'ad_storage': window.ConsentsManager.cookiesStatus.marketingCookies ? 'granted' : 'denied',\n 'analytics_storage': window.ConsentsManager.cookiesStatus.statisticCookies ? 'granted' : 'denied',\n 'functionality_storage': window.ConsentsManager.cookiesStatus.functionalityCookies ? 'granted' : 'denied',\n 'ad_personalization': window.ConsentsManager.cookiesStatus.marketingCookies ? 'granted' : 'denied',\n 'ad_user_data': window.ConsentsManager.cookiesStatus.marketingCookies ? 'granted' : 'denied',\n 'personalization_storage': window.ConsentsManager.cookiesStatus.functionalityCookies ? 'granted' : 'denied',\n 'security_storage': 'granted'\n });\n }\n if (dataLayer.filter(function (l) { return l['event'] && l['event'] == 'vendd_consents_ready' }) == 0) {\n dataLayer.push({ 'event': 'vendd_consents_ready' });\n }\n });\n\n Vendd.MessageBus.subscribe(Vendd.User.Messages.LoginSuccess, self, function (envelope) {\n //for some reason Login Success is fired even when login fails so the success must be checked....\n if (envelope.message.data.success) {\n self.updateAllUserConsents();\n }\n });\n\n //after successful register always follows login -> unnecessary function in success message\n //Vendd.MessageBus.subscribe(Vendd.User.Messages.RegisterSuccess, self, self.updateAllUserConsents);\n\n //cookies widget\n if (self.cookiesWidgetWrapper.length > 0) {\n self.cookiesWidgetWrapper.on('click', '.js-accept', function (e) {\n e.preventDefault();\n\n var data = { fCookies: true, sCookies: true, mCookies: true, source: 'Cookies Widget' };\n self.insertAllCookies(data);\n });\n }\n\n //cookies modal\n if (self.cookiesModalWrapper.length > 0) {\n self.cookiesModalWrapper.on('click', '.js-accept', function (e) {\n e.preventDefault();\n\n var data = { fCookies: true, sCookies: true, mCookies: true, source: 'Cookies Widget' };\n self.insertAllCookies(data);\n $.fancybox.close();\n });\n }\n\n if (self.cookiesModalWrapper.length > 0) {\n self.cookiesModalWrapper.on('click', '.js-decline', function (e) {\n e.preventDefault();\n\n var data = { fCookies: false, sCookies: false, mCookies: false, source: 'Cookies Widget' };\n self.insertAllCookies(data);\n $.fancybox.close();\n });\n }\n //cookies modal\n if (self.cookiesModalWrapper.length > 0) {\n self.cookiesModalWrapper.on('click', '.terms-link', function (e) {\n e.preventDefault();\n\n self.getCookiesWidgetModel();\n });\n }\n }\n\n //------------------------------------------------------------------------------\n this.initCookiesModal = function () {\n $(\".open-cookies-modal\").fancybox({\n modal: true\n });\n $(\".open-cookies-modal\").trigger(\"click\");\n }\n\n //------------------------------------------------------------------------------\n this.activateCookies = function () {\n window.ScriptsActivator.loadAllScripts(\n self.cookiesStatus.functionalityCookies,\n self.cookiesStatus.marketingCookies,\n self.cookiesStatus.statisticCookies\n );\n };\n\n\n //------------------------------------------------------------------------------\n this.init = function () {\n //behave like consents are activated and we have consent of user for all cookies\n if (!LhApp.Context.IsConsentsEnabled) {\n\n self.cookieChecked = true;\n self.cookiesStatus.userHasSetCookies = true;\n self.cookiesStatus.functionalityCookies = true;\n self.cookiesStatus.marketingCookies = true;\n self.cookiesStatus.statisticCookies = true;\n\n self.activateCookies();\n\n return;//do not run anything else from consents manager\n }\n\n self.cookieChecked = document.cookie.indexOf(self.cookie) !== -1;\n self.getCookieStatus();\n self.activateCookies();\n self.registerEvents();\n\n if (!self.cookieChecked) {\n self.getCookieConsentsModel();\n } else if (!self.cookiesStatus.userHasSetCookies) {\n self.showCookiesWidget();\n }\n };\n\n self.init();\n\n return self;\n };\n});\n"]}