(function () { var productAmount = undefined; var onProductEvent = function(event) { var product = event.detail.product.toJS(); var cart = event.detail.cart.toJS(); if (!product.price) { return; } var pageViewType = "product"; var amount = product.price.amount; this.productAmount = amount; if (cart.grandTotal) { amount += cart.grandTotal.amount; } var bannerContainerId = getBannerContainerId(pageViewType); setBannerContainerInfo(bannerContainerId, pageViewType, amount); showRatenkaufBanner(bannerContainerId, pageViewType, amount); }; var onCartAddEvent = function(event) { var cart = event.detail.cart; if (!cart.grandTotal) { return; } var pageViewType = "product"; var amount = cart.grandTotal.amount + this.productAmount; var bannerContainerId = getBannerContainerId(pageViewType); updateBannerContainerAmount(bannerContainerId, amount); }; var onCheckoutEvent = function(event) { var cart = event.detail.cart; var pageViewType = "cart"; if (!cart.grandTotal || cart.grandTotal.amount <= 0) { return; } var amount = cart.grandTotal.amount; var bannerContainerId = getBannerContainerId(pageViewType); setBannerContainerInfo(bannerContainerId, pageViewType, amount); showRatenkaufBanner(bannerContainerId, amount, pageViewType); }; var showRatenkaufBanner = function(bannerContainerId, amount) { var RatenkaufBannerLibrary = undefined; #LOOP(#Shop.PaymentMethods) #IF(#PaymentType.Alias EQ "PayPalPlus" AND #UsableAtStorefront) RatenkaufBannerLibrary = "https://www.paypal.com/sdk/js?client-id=#MerchantClientId&merchant-id=#MerchantId&components=messages¤cy=#Shop.CurrencyID"; #ENDIF #ENDLOOP if (RatenkaufBannerLibrary === undefined) { return; } if (window.paypalRatenkaufLibrary !== undefined) { window.paypalRatenkaufLibrary.Messages({ countryCode: getShopperLocale(), }); return; } var paypalRatenkaufScriptElement = document.createElement('script'); paypalRatenkaufScriptElement.setAttribute("data-namespace", "paypalRatenkaufLibrary"); paypalRatenkaufScriptElement.src = RatenkaufBannerLibrary; document.body.appendChild(paypalRatenkaufScriptElement); paypalRatenkaufScriptElement.addEventListener( 'load', function() { window.paypalRatenkaufLibrary = paypalRatenkaufLibrary; window.paypalRatenkaufLibrary.Messages({ countryCode: getShopperLocale(), }); }, { once: true }); }; var getShopperLocale = function() { var countryCode = "DE"; if (document.documentElement && document.documentElement.lang) { countryCode = document.documentElement.lang.toUpperCase(); } return countryCode; }; var getBannerContainerId = function(pageViewType) { var bannerContainerId = "ep-app-area-product-view-price"; if (pageViewType === "cart") { bannerContainerId = "ep-app-area-cart-view-cart-totals"; } return bannerContainerId; }; var setBannerContainerInfo = function(bannerContainerId, pageViewType, amount) { var bannerContainer = document.getElementById(bannerContainerId); bannerContainer.setAttribute("data-pp-message", ""); bannerContainer.setAttribute("data-pp-placement", pageViewType); bannerContainer.setAttribute("data-pp-amount", amount); return bannerContainerId; }; var updateBannerContainerAmount = function(bannerContainerId, amount) { var bannerContainer = document.getElementById(bannerContainerId); bannerContainer.setAttribute("data-pp-amount", amount); return amount; }; return function() { if (window.eComEventTarget) { window.eComEventTarget.addEventListener('product', onProductEvent); window.eComEventTarget.addEventListener('cart:add', onCartAddEvent); window.eComEventTarget.addEventListener('cart', onCheckoutEvent); } }(); }());