/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ({

/***/ "./inc/custom.js":
/*!***********************!*\
 !*** ./inc/custom.js ***!
 \***********************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("var contactBoxRight;\nvar do_scroll_up = true;\nvar dimensions = new Array();\n\n$(document).ready(function () {\n\n if ($('.product-image-nav').children().length > 7) {\n showArrows = true;\n } else {\n showArrows = false;\n }\n $('.product-image-nav').slick({\n slidesToShow: 7,\n slidesToScroll: 1,\n centerMode: false,\n arrows: showArrows,\n responsive: [\n {\n breakpoint: 1200,\n settings: {\n slidesToShow: 4,\n slidesToScroll: 1,\n centerMode: false,\n arrows: false,\n speed: 100\n }\n }\n\n ]\n });\n\n\n $('.product-image-main').slick({\n slidesToShow: 1,\n slidesToScroll: 1,\n fade: true,\n arrows: false,\n responsive: [\n {\n breakpoint: 1200,\n settings: {\n arrows: false,\n centerMode: true,\n speed: 100\n }\n },\n {\n breakpoint: 767,\n settings: {\n arrows: true,\n centerMode: true,\n speed: 100\n }\n },\n {\n breakpoint: 480,\n settings: {\n arrows: true,\n centerMode: true,\n speed: 100\n }\n }\n ]\n });\n\n\n $('.recommendation-carousel').slick({\n centerMode: false,\n slidesToShow: 4,\n infinite: false,\n arrows: true,\n variableWidth: true,\n responsive: [\n {\n breakpoint: 1200,\n settings: {\n arrows: false,\n centerMode: false,\n infinite: false,\n centerPadding: '40px',\n slidesToShow: 3,\n speed: 100\n }\n },\n {\n breakpoint: 992,\n settings: {\n arrows: false,\n centerMode: false,\n infinite: false,\n centerPadding: '40px',\n slidesToShow: 2,\n speed: 100\n }\n },\n {\n breakpoint: 768,\n settings: {\n arrows: false,\n centerMode: false,\n infinite: false,\n centerPadding: '40px',\n slidesToShow: 1,\n speed: 100\n }\n },\n {\n breakpoint: 480,\n settings: {\n arrows: false,\n centerMode: false,\n infinite: false,\n centerPadding: '40px',\n slidesToShow: 1,\n speed: 100\n }\n }\n ]\n });\n\n /*\n if ('serviceWorker' in navigator) {\n window.addEventListener('load', function () {\n navigator.serviceWorker.register('/sw.js').then(function (registration) {\n // Registration was successful\n console.log('ServiceWorker registration successful with scope: ', registration.scope);\n }, function (err) {\n // registration failed :(\n console.log('ServiceWorker registration failed: ', err);\n });\n });\n }\n */\n\n $('button.quantity-decrement').on('click', function (event) {\n var quantity = $(this).siblings('input.product-quantity').val();\n if (quantity > 0) {\n quantity--;\n $(this).siblings('input.product-quantity').val(quantity);\n }\n });\n $('button.quantity-increment').on('click', function (event) {\n var quantity = $(this).siblings('input.product-quantity').val();\n quantity++;\n $(this).siblings('input.product-quantity').val(quantity);\n });\n\n\n if ($.fn.cssOriginal != undefined)\n $.fn.css = $.fn.cssOriginal;\n\n if ($('#deviceBrand').find('option').length > 1)\n do_scroll_up = false;\n\n if ($('.new-item-in-cart') && $('.new-item-in-cart').length > 0) {\n $('.opened-cart').fadeToggle(500);\n setTimeout(function () {\n $('.new-item-in-cart').fadeOut();\n $('.opened-cart').fadeOut();\n }, 4000);\n }\n\n $('.search-box .second').click(function () {\n if ($('#deviceType').val() > 0)\n do_scroll_up = false;\n if (do_scroll_up) {\n $('html, body').animate({\n scrollTop: $(\".search-box\").offset().top\n }, 1000);\n setTimeout(function () {\n $('#deviceType').selectbox(\"close\");\n $('#deviceType').selectbox(\"open\");\n }, 1000);\n do_scroll_up = false;\n }\n });\n\n $('.search-box .second-mobile').click(function () {\n if ($('#deviceType').val() > 0)\n do_scroll_up = false;\n if (do_scroll_up) {\n $('html, body').animate({\n scrollTop: $(\".search-box\").offset().top\n }, 1000);\n setTimeout(function () {\n $('#deviceType').selectbox(\"close\");\n $('#deviceType').selectbox(\"open\");\n }, 1000);\n do_scroll_up = false;\n }\n });\n\n $('.additionalHeader .remove').click(function () {\n $('.additionalHeader').fadeOut();\n xmlHttp = getXMLRequester();\n if (xmlHttp) {\n var aufruf = \"/schutzfolien24.php?hideAdditionalHeader=1\";\n xmlHttp.open(\"GET\", aufruf, true);\n xmlHttp.send(null);\n }\n });\n\n\n $('.header1 .remove').click(function () {\n $('.header1').fadeOut();\n });\n\n\n $('.mobile-menu .action-btn').click(function () {\n $('.mobile-menu .action-btn').fadeOut();\n $('html, body').animate({\n scrollTop: $(\".search-box\").offset().top\n }, 1000);\n });\n\n $(window).scroll(function () {\n if ($(\".search-box\").length > 0) {\n var scroll = $(window).scrollTop();\n var searchPos = 100 + $(\".search-box\").offset().top - $(window).height();\n if (scroll > searchPos) {\n $('.mobile-menu .action-btn').fadeOut();\n }\n if (scroll < searchPos) {\n $('.mobile-menu .action-btn').fadeIn();\n }\n }\n });\n\n if ($('.topseller .carousel')) {\n $('.topseller .carousel').slick({\n slidesToShow: 4,\n slidesToScroll: 4,\n autoplay: false,\n autoplaySpeed: 2000,\n infinite: true,\n draggable: true,\n swipe: true,\n dots: false,\n responsive: [{\n breakpoint: 1024,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 3,\n infinite: true,\n speed: 100\n }\n }, {\n breakpoint: 992,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 3,\n speed: 100\n }\n }, {\n breakpoint: 480,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 2,\n speed: 100\n }\n }]\n });\n }\n\n if ($('.newDevices .carousel')) {\n $('.newDevices .carousel').slick({\n slidesToShow: 5,\n slidesToScroll: 5,\n autoplay: false,\n autoplaySpeed: 2000,\n infinite: true,\n draggable: true,\n swipe: true,\n dots: false,\n responsive: [{\n breakpoint: 1024,\n settings: {\n slidesToShow: 5,\n slidesToScroll: 5,\n speed: 100\n }\n }, {\n breakpoint: 992,\n settings: {\n slidesToShow: 4,\n slidesToScroll: 4,\n speed: 100\n }\n }, {\n breakpoint: 767,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 3,\n dots: false,\n speed: 100\n }\n }, {\n breakpoint: 480,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 2,\n dots: false,\n speed: 100\n }\n }]\n });\n }\n\n if ($('.productCategory .carousel')) {\n $('.productCategory .carousel').slick({\n slidesToShow: 5,\n slidesToScroll: 5,\n autoplay: false,\n autoplaySpeed: 2000,\n infinite: true,\n draggable: true,\n swipe: true,\n dots: false,\n responsive: [{\n breakpoint: 1024,\n settings: {\n slidesToShow: 4,\n slidesToScroll: 4,\n speed: 100\n }\n }, {\n breakpoint: 992,\n settings: {\n slidesToShow: 4,\n slidesToScroll: 4,\n speed: 100\n }\n }, {\n breakpoint: 767,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 3,\n dots: false,\n speed: 100\n }\n }, {\n breakpoint: 480,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 2,\n dots: false,\n speed: 100\n }\n }]\n });\n }\n $('.contact-box .contact-title').on('click', function (event) {\n if (typeof (chatIsOnline) !== 'undefined' && chatIsOnline == 1)\n $('.contact-types .chat-icon').trigger('click');\n else\n $('.contact-types .email-icon').trigger('click');\n });\n\n $('.contact-types li').on('click', function (event) {\n var target = $(event.target).attr('contact-type');\n var rightMargin = $('.contact-box').css('right');\n $('.contact-box').data('data-right', rightMargin);\n $('.contact-icon-active').removeClass('contact-icon-active');\n $(event.target).addClass('contact-icon-active');\n if ($('.contact-data > div.' + target).css('display') === 'none') {\n $('.contact-data > div').fadeOut(400);\n $('.contact-data > div.' + target).delay(400).fadeIn();\n }\n if (rightMargin !== \"0px\") {\n contactBoxRight = $('.contact-box').css('right');\n $('.contact-box').delay(200).animate({\n right: \"0\"\n }, 800);\n }\n });\n\n $(\"body .header2 [rel='popover']\").popover({\n html: true,\n trigger: \"manual\",\n animation: false,\n content: function () {\n return $($(this).siblings('.content-box')).html();\n }\n }).on('mouseenter', function () {\n var _this = this;\n $(this).popover('show');\n $('.popover').on('mouseleave', function (e) {\n if ($(e.target).is('select')) {\n return;\n }\n $(_this).popover('hide');\n });\n }).on('mouseleave', function () {\n var _this = this;\n\n\n setTimeout(function (e) {\n if (!$('.popover:hover').length) {\n $(_this).popover('hide');\n }\n }, 100);\n }).on('click', function () {\n var _this = this;\n $(this).popover('show');\n });\n\n $(\"body .mobile-filters [data-rel='popover']\").popover({\n html: true,\n content: function () {\n return $($(this).siblings('.content-box')).html();\n }\n });\n\n $(\"body .mobile-social [rel='popover']\").popover({\n html: true,\n content: function () {\n return $($(this).siblings('.content-box')).html();\n }\n });\n\n if (showCartPreview === '1') {\n $(\"body .cart-preview [rel='popover'] \").popover('toggle');\n }\n\n $(\"body [data-rel='nav-item-popover']\").popover({\n html: true,\n trigger: \"manual\",\n animation: false,\n container: 'body',\n template: '<div class=\"popover nav-item-popover\">' +\n '<div class=\"arrow\"></div>' +\n '<div class=\"container\">' +\n '<div class=\"row\"><div class=\"col-md-12\">' +\n '<div class=\"popover-content\">' +\n '</div></div></div></div></div>',\n content: function () {\n return $($(this).siblings('.content-box')).html();\n }\n }).on(\"mouseenter\", function () {\n var _this = this;\n $(this).popover(\"show\");\n $(\".popover\").on(\"mouseleave\", function () {\n $(_this).popover('hide');\n });\n }).on(\"mouseleave\", function () {\n var _this = this;\n setTimeout(function () {\n if (!$(\".popover:hover\").length) {\n $(_this).popover(\"hide\");\n }\n }, 10);\n });\n\n $('#deviceType').selectbox();\n $('.deviceTypeSelector .sbOptions').prepend(\"<li><button type='button' class='close' aria-label='Close' \" +\n \"onclick='closeSelector(\\\"#deviceType\\\")'><span aria-hidden='true'>&times;</span></button>\" +\n \"<input type='text' name='deviceType_search' class='deviceData_search' \" +\n \"onkeyup='filterElements(this)' placeholder='\" + placeHolderSuche + \"' /></li>\");\n $('#deviceBrand').selectbox();\n if ($('.deviceBrandSelector').find('.selectpicker option').size() > 0) {\n $('.deviceBrandSelector .sbOptions').prepend(\"<li><button type='button' class='close' \" +\n \"aria-label='Close' onclick='closeSelector(\\\"#deviceBrand\\\")'>\" +\n \"<span aria-hidden='true'>&times;</span></button><input type='text' \" +\n \"name='deviceBrand_search' class='deviceData_search' \" +\n \"onkeyup='filterElements(this)' placeholder='\" + placeHolderSuche + \"' /></li>\");\n } else {\n $('.deviceBrandSelector .sbToggle').remove();\n }\n $('#deviceModel').selectbox();\n if ($('.deviceModelSelector').find('.selectpicker option').size() > 0) {\n $('.deviceModelSelector .sbOptions').prepend(\"<li><button type='button' \" +\n \"class='close' aria-label='Close' onclick='closeSelector(\\\"#deviceModel\\\")'>\" +\n \"<span aria-hidden='true'>&times;</span></button><input type='text' \" +\n \"name='deviceModel_search' class='deviceData_search' \" +\n \"onkeyup='filterElements(this)' placeholder='\" + placeHolderSuche + \"' /></li>\");\n } else {\n $('.deviceModelSelector .sbToggle').remove();\n }\n\n $('#brand-filter').selectbox();\n $('select[id^=\"productFeatureValue-\"]').selectbox();\n\n if (typeof navigator.vendor != 'undefined' && navigator.vendor.toLowerCase().indexOf('apple') != -1) {\n console.log(navigator.vendor);\n } else {\n\n if ($(window).width() > 1024) {\n $('#geraeteklasse').selectbox();\n $('#marke').selectbox();\n $('#modell').selectbox();\n }\n }\n\n if ($('#contact-timeout') && $('#contact-timeout').val() > 0) {\n setTimeout(function () {\n $('.phone-icon').click();\n }, $('#contact-timeout').val());\n }\n\n // Staffelpreise im Produktkonfigurator\n $('.search-results .product-price').on('mouseover', function (event) {\n $(this).find('.quantity-box').css('display', 'block');\n });\n $('.search-results .product-price').on('mouseout', function (event) {\n $(this).find('.quantity-box').css('display', 'none');\n });\n\n $('.header1 .remove').on('click', function (event) {\n xmlHttp = getXMLRequester();\n if (xmlHttp) {\n var aufruf = \"/schutzfolien24.php?hideHeader=1\";\n xmlHttp.open(\"GET\", aufruf, true);\n xmlHttp.send(null);\n }\n });\n $('#searchfield').on('focus', function (event) {\n // $(this).css('width', '370px');\n $('#suggest_ausgabe').css('display', 'block');\n });\n\n $('#searchfield').on('blur', function (event) {\n\n var element = event.relatedTarget;\n if (element === null) {\n element = document.activeElement;\n }\n\n if (element && ($(element).hasClass('auto-suggest-dropdown-link') ||\n $(element).hasClass('auto-suggest-dropdown-div'))) {\n $(element).trigger(\"click\");\n } else {\n // $(this).css('width', '200px');\n setTimeout(function () {\n $('#suggest_ausgabe').css('display', 'none');\n }, 200);\n\n }\n });\n\n $('#mobile-search-button').on('click', function (event) {\n //$(this).css('display', 'none');\n if ($('#mobile-search').css('display') == 'none') {\n $('#mobile-search').css('display', 'block');\n $('#mobile-searchfield').focus();\n $('#mobile-suggest_ausgabe').css('display', 'block');\n } else {\n $('#mobile-search').css('display', 'none');\n $('#mobile-suggest_ausgabe').css('display', 'none');\n }\n });\n\n $('#mobile-search .close').on('click', function (event) {\n $('#mobile-searchfield').val(\"\");\n suggest(\"\", 2);\n $('#mobile-searchfield').focus();\n });\n\n $('.mobile-menu-level1 .openClose').on('click', function (event) {\n $(this).find('.close').toggleClass('flip');\n $(this).toggleClass('bold');\n });\n\n $('#adresstyp').on('change', function (event) {\n var adresstyp = $('#adresstyp').val();\n console.log(adresstyp);\n if (adresstyp == 1) {\n $('.only-adresstyp-1').removeClass('hideElement');\n $('.only-adresstyp-2').addClass('hideElement');\n } else if (adresstyp == 2) {\n $('.only-adresstyp-2').removeClass('hideElement');\n $('.only-adresstyp-1').addClass('hideElement');\n } else {\n $('.only-adresstyp-1').addClass('hideElement');\n $('.only-adresstyp-2').addClass('hideElement');\n }\n });\n\n jQuery('body').bind('click', function (e) {\n if (jQuery(e.target).closest('.navbar').length == 0) {\n // click happened outside of .navbar, so hide\n var opened = jQuery('.navbar-collapse').hasClass('collapse in');\n if (opened === true) {\n jQuery('.navbar-collapse').collapse('hide');\n }\n }\n });\n\n $('.relaunch_umfrage .close').on('click', function (event) {\n $(\".relaunch_umfrage\").hide();\n });\n //$('.sbSelector').boxfit({multiline: true});\n\n\n $('#search-autocomplete, #mobile-search-autocomplete').submit(function () {\n if (typeof chosenKeyword !== 'undefined' && chosenKeyword.length > 0) {\n creative = 'mit Autosuggest';\n } else {\n creative = 'ohne Autosuggest';\n }\n trackPromoClick('PROMO_MENU', 'Suche', creative, '');\n });\n\n $('.delayedAnker').on(\"click\", function (evt) {\n var _this = this;\n evt.preventDefault();\n setTimeout(function () {\n document.location.href = $(_this).attr('href');\n }, 300)\n });\n\n $('.delayedForm').on(\"submit\", function (evt) {\n var _this = this;\n evt.preventDefault();\n setTimeout(function () {\n $(_this).unbind('submit').submit();\n }, 300)\n });\n\n $('.has-success').after('<i style=\"float: right;margin-top: -25px;margin-right: 5px;\" class=\"fa fa-check green form-validation-successful\"></i>');\n\n $('.lazyLoad').each(function () {\n $(this).attr(\"src\", $(this).attr('data-src'));\n });\n\n (function () {\n var originalAddClassMethod = jQuery.fn.addClass;\n var originalRemoveClassMethod = jQuery.fn.removeClass;\n jQuery.fn.addClass = function () {\n var result = originalAddClassMethod.apply(this, arguments);\n jQuery(this).trigger('classChanged');\n return result;\n }\n jQuery.fn.removeClass = function () {\n var result = originalRemoveClassMethod.apply(this, arguments);\n jQuery(this).trigger('classChanged');\n return result;\n }\n })();\n\n $(\"#mobile-menu\").on('classChanged', function () {\n if ($(\"#mobile-menu\").hasClass('in')) {\n $('#wrapper').children(\".container\").addClass(\"hidden-xs\");\n $('#wrapper').children(\".footer-padding\").addClass(\"hidden-xs\");\n $('#wrapper').children(\".footer-wrapper\").addClass(\"hidden-xs\");\n } else {\n $('#wrapper').children(\".container\").removeClass(\"hidden-xs\");\n $('#wrapper').children(\".footer-padding\").removeClass(\"hidden-xs\");\n $('#wrapper').children(\".footer-wrapper\").removeClass(\"hidden-xs\");\n }\n });\n\n\n});\n$(document).on('DOMNodeInserted', function (e) {\n if ($(e.target).attr('id') === 'usercentrics-button') {\n if (!$('.grey-out-page').length) {\n $('#uc-banner-centered').before('<div class=\"grey-out-page\"> </div>');\n }\n }\n if ($('.grey-out-page').length > 0 && $('.uc-consents-info-modal-wrapper').length) {\n $('.grey-out-page').remove();\n }\n});\n\n$(document).mouseup(function (e) {\n var container = $('.contact-box');\n if (!container.is(e.target) && container.has(e.target).length === 0) {\n $('.contact-icon-active').removeClass('contact-icon-active');\n container.animate({\n right: contactBoxRight\n }, 800);\n }\n var container = $('.popover');\n if (!container.is(e.target) && container.has(e.target).length === 0) {\n container.popover('hide');\n }\n var container = $('.opened-cart');\n if (!container.is(e.target) &&\n $(e.target).closest('.opened-cart').length == 0 &&\n ($(e.target).closest('.cart').length == 0 || $(e.target).hasClass('cart')) &&\n container.has(e.target).css('display') != 'none') {\n container.fadeOut();\n }\n});\n\n/**\n * empty content of load button and add loading class with loading gif as background\n * @param element\n */\nwindow.loadButton = function (element, color) {\n $(element).empty();\n $(element).addClass('loading-button-' + color);\n}\n\nwindow.returnToNormalButton = function (html) {\n setTimeout(function () {\n\n var $buyButtonMain = $('#buy-button-main');\n\n // change class of button to btn-type-1\n $buyButtonMain.removeClass('btn-type-2');\n $buyButtonMain.addClass('btn-type-1');\n // change text to\n $buyButtonMain.html(html);\n\n\n // remove transitions\n setTimeout(function () {\n $('#buy-button-main').css({\n transition: 'none'\n });\n }, 500);\n\n }, 2000);\n}\n\nvar login_active = 0;\n\nwindow.getXMLRequester = function () {\n var xmlHttp = false;\n try {\n // Internet Explorer\n if (window.ActiveXObject) {\n for (var i = 5; i; i--) {\n try {\n if (i === 2)\n xmlHttp = new ActiveXObject(\"Microsoft.XMLHTTP\");\n else\n xmlHttp = new ActiveXObject(\"Msxml2.XMLHTTP.\" + i\n + \".0\");\n break;\n } catch (excNotLoadable) {\n xmlHttp = false;\n }\n }\n }\n // Mozilla, Opera und Safari\n else if (window.XMLHttpRequest)\n xmlHttp = new XMLHttpRequest();\n } catch (excNotLoadable) {\n xmlHttp = false;\n }\n return xmlHttp;\n}\n\nvar xmlHttp;\nvar anzahl_suggest = 0;\nvar suggest_select = 0;\nvar suchlaenge = 0;\nvar chosenKeyword;\nvar suggest_ausgabe;\nvar filterCategory;\nvar ranking_faktor;\nvar categoryids;\nvar searchkeyword;\nvar nosuggest = 0;\nvar lastsuccessful;\nvar anzahl_suggest_before;\nvar suggest_ausgabe_before;\nvar searchkeyword_before;\nvar filterCategory_before;\nvar ranking_faktor_before;\nvar categoryids_before;\nvar suchlaenge_before;\nvar new_url_before;\n\nvar searchWordsBefore;\n\nwindow.suggest = function (suchdaten, ausgabe_nr) {\n let ausgabe_feld;\n if (ausgabe_nr === 2)\n ausgabe_feld = document.getElementById('suggest_ausgabe2');\n else if (ausgabe_nr === 3)\n ausgabe_feld = document.getElementById('suggest_ausgabe3');\n else\n ausgabe_feld = document.getElementById('suggest_ausgabe');\n if (suggest_ausgabe !== ausgabe_feld)\n ausgabe_feld.innerHTML = \"\";\n suggest_ausgabe = ausgabe_feld;\n\n\n if (suchdaten === '') {\n nosuggest = '';\n ranking_faktor = undefined;\n searchkeyword = undefined;\n chosenKeyword = undefined;\n categoryids = undefined;\n\n $(\"#search-autocomplete\").attr('action', new_url_before);\n //console.log(\"22222 Setting url to \" + new_url_before);\n }\n\n // check if string itself is equal\n if (suchdaten !== '' && suchdaten === searchkeyword && nosuggest === 0) {\n return;\n }\n\n // set nosuggest to 0 if user deleted his request\n if (suchdaten.length < 2 || suchdaten === lastsuccessful || suchdaten === lastsuccessful + ' ') {\n nosuggest = 0;\n\n }\n\n if (nosuggest === 1) {\n console.log(\"return because nosuggest == 1;\");\n return;\n }\n\n xmlHttp = getXMLRequester();\n suchlaenge = suchdaten.length;\n\n if (xmlHttp && suchlaenge > 0) {\n var filterCategoryCondition;\n if (typeof filterCategory !== 'undefined' &&\n filterCategory.length > 0 &&\n suchdaten.indexOf(filterCategory) !== -1\n ) {\n filterCategory = filterCategory.replace('&', '%26');\n\n filterCategoryCondition = \"&filterCategory=\" + filterCategory;\n } else {\n filterCategoryCondition = \"\";\n }\n\n var rankingCondition;\n if (typeof ranking_faktor !== 'undefined') {\n rankingCondition = \"&ranking_faktor=\" + ranking_faktor;\n } else {\n rankingCondition = \"\";\n }\n\n var featureCategoryIdFilter;\n if (typeof categoryids !== 'undefined') {\n featureCategoryIdFilter = \"&categoryids=\" + categoryids;\n } else {\n featureCategoryIdFilter = \"\";\n }\n\n var chosenKeywordFilter;\n if (typeof chosenKeyword !== 'undefined') {\n chosenKeyword = chosenKeyword.replace('&', '%26');\n chosenKeywordFilter = \"&chosenKeyword=\" + chosenKeyword;\n } else {\n chosenKeywordFilter = \"\";\n }\n\n // always trim suchdaten\n var suchdatenES = encodeURIComponent(suchdaten.trim());\n\n /*\n console.log(\n \"suggest(): Suchdaten ES: \" + suchdatenES +\n \" searchKeyword: \" + searchkeyword +\n \" last successful:\" + lastsuccessful +\n \" filterCondition: \" + filterCategoryCondition +\n \" rankingCondition: \" + rankingCondition +\n \" featureCategoryIdFilter: \" + featureCategoryIdFilter +\n \" chosenKeywordFilter: \" + chosenKeywordFilter\n );\n */\n\n suchdatenES = suchdatenES.replace('&', '%26');\n var aufruf = \"/suggest.php\" + \"?suggest=\" + suchdatenES + \"&random=\"\n + Math.random()\n + filterCategoryCondition\n + rankingCondition\n + featureCategoryIdFilter\n + chosenKeywordFilter;\n\n\n // noinspection JSPrimitiveTypeWrapperUsage\n xmlHttp.onreadystatechange = suggestResponse(suchdaten);\n xmlHttp.open(\"GET\", aufruf, true);\n xmlHttp.send(null);\n\n } else {\n suggest_ausgabe.innerHTML = \"\";\n anzahl_suggest = 0;\n suggest_select = 0;\n }\n\n\n}\n\n/**\n * Process response from auto suggest (show it, etc.)\n *\n * @param searchString - searchstring\n * @returns {Function}\n */\nwindow.suggestResponse = function (searchString) {\n\n return function () {\n if (xmlHttp.readyState === 4 || xmlHttp.readyState === \"complete\") {\n\n suggest_ausgabe.innerHTML = xmlHttp.responseText;\n\n if (anzahl_suggest > 0) {\n anzahl_suggest_before = anzahl_suggest;\n // console.log(\"Anzahl suggest before: \" + anzahl_suggest_before);\n\n // find childnote where suchdaten == value and set all values like filter category?\n if (suggest_ausgabe.childNodes.length > 0) {\n\n // compiled with babel for ie compatibility\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n }\n\n function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) ||\n Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n }\n }\n\n var childNotesArray = _toConsumableArray(suggest_ausgabe.childNodes);\n searchWordsBefore = new Array();\n\n childNotesArray.forEach(function (/*HTMLElement*/ item) {\n // console.log(item);\n // console.log(typeof item);\n if (typeof item.dataset !== 'undefined') {\n searchWordsBefore.push(item);\n if (searchString.toLowerCase() === item.dataset.searchkeyword.toLowerCase() &&\n item.dataset.url !== '/c/ALL/ALL/') {\n\n $(\"#search-autocomplete\").attr('action', item.dataset.url);\n\n console.log(\"window.suggestResponse: Setting url to \" + item.dataset.url);\n }\n }\n });\n\n var dropdownElement = document.getElementById(\"suggest_1\");\n searchkeyword_before = decodeURIComponent(dropdownElement.dataset.searchkeyword);\n filterCategory_before = dropdownElement.dataset.filter_category;\n ranking_faktor_before = dropdownElement.dataset.ranking_faktor;\n categoryids_before = dropdownElement.dataset.categoryids;\n suchlaenge_before = searchkeyword_before.length;\n new_url_before = dropdownElement.dataset.url;\n // if (searchString.toLowerCase() === searchkeyword_before.toLowerCase() &&\n // new_url_before !== '/c/ALL/ALL/') {\n // $(\"#search-autocomplete\").attr('action', new_url_before);\n // console.log(\"Setting url to \" + new_url_before);\n // }\n }\n }\n\n anzahl_suggest = suggest_ausgabe.childNodes.length;\n suggest_select = 0;\n\n /*\n console.log(\"suggestResponse(): searchString: \" + searchString +\n \"; anzahl suggest: \" + anzahl_suggest +\n \"; anzahl suggest before: \" + anzahl_suggest_before +\n \"; searchkeyword_before: \" + searchkeyword_before);\n */\n\n if (searchString.slice(-1) !== ' ' &&\n anzahl_suggest === 0 &&\n searchString.length > 1\n ) {\n console.log(\"setting nosuggest = 1, because did not get any result from auto suggest\");\n nosuggest = 1;\n } else if (searchString.slice(-1) === ' ' && anzahl_suggest_before > 0) {\n\n /**\n * if user tips thing like \"Apple iphone 6 Dis...\" and then something else - iphone 6 should be chosen\n * save not only one \"search keyword before\", but an array with all search keywords that appeared before\n */\n searchWordsBefore.forEach(function (item) {\n\n var searchKeyword_beforeToCheck = item.dataset.searchkeyword.toLowerCase();\n var searchStringToCheck = searchString.slice(0, -1).toLowerCase();\n\n console.log(\"checking if '\" + searchStringToCheck +\n \"' is the same as '\" + searchKeyword_beforeToCheck + \"'\");\n\n if (searchStringToCheck === searchKeyword_beforeToCheck) {\n searchkeyword = decodeURIComponent(item.dataset.searchkeyword);\n filterCategory = item.dataset.filter_category;\n ranking_faktor = item.dataset.ranking_faktor;\n categoryids = item.dataset.categoryids;\n suchlaenge = item.dataset.searchkeyword.length;\n chosenKeyword = decodeURIComponent(searchkeyword) + ' ';\n console.log(\"Setting \" + searchkeyword + \" to #searchfield\");\n console.log(\"chosenKeyword: \" + chosenKeyword);\n $(\"#searchfield\").val(chosenKeyword);\n\n if (searchkeyword !== item.dataset.searchkeyword) {\n suggest(chosenKeyword, 1);\n }\n\n }\n // else {\n // // following line make suggests like \"schutzfolie apple ...\" wrong\n // // console.log(\"Setting searchString \" + searchString + \" to #searchfield\");\n // // chosenKeyword = searchString;\n // // $(\"#searchfield\").val(searchString);\n // }\n });\n\n\n }\n\n if (anzahl_suggest > 0) {\n lastsuccessful = searchString;\n }\n }\n };\n}\n\n/**\n *\n * @param nummer\n */\nwindow.suggestSelect = function (nummer) {\n if (suggest_select > 0) {\n document.getElementById(\"suggest_\" + suggest_select).style.color = \"#333333\";\n }\n suggest_select = nummer;\n document.getElementById(\"suggest_\" + suggest_select).style.color = \"#e98739\";\n}\n\n/**\n *\n * @param dropdownNumber\n * @param submit\n */\nwindow.insertSelect = function (dropdownNumber, submit) {\n\n submit = submit || false;\n suggest_select = dropdownNumber;\n\n var dropdownElement = document.getElementById(\"suggest_\" + suggest_select);\n searchkeyword = dropdownElement.dataset.searchkeyword;\n filterCategory = dropdownElement.dataset.filter_category;\n\n // TODO if chosen keyword was not empty, add it to array\n chosenKeyword = searchkeyword;\n\n\n // TODO reset ranking factor if user deletes something?\n ranking_faktor = dropdownElement.dataset.ranking_faktor;\n categoryids = dropdownElement.dataset.categoryids;\n var new_url = dropdownElement.dataset.url;\n\n\n console.log(\"new url: \" + new_url +\n \" new url before \" + new_url_before +\n \" ranking_faktor_before \" + ranking_faktor_before +\n \" ranking faktor \" + ranking_faktor);\n\n\n suchlaenge = searchkeyword.length;\n\n\n $(\"#searchfield\").val(searchkeyword);\n $(\"#mobile-searchfield\").val(searchkeyword);\n\n\n // set last successful search to chosen(clicked) one\n lastsuccessful = searchkeyword;\n\n if (new_url !== '/c/ALL/ALL/') {\n $(\"#search-autocomplete\").attr('action', new_url);\n $(\"#mobile-search-autocomplete\").attr('action', new_url);\n }\n\n\n if (submit) {\n $(\"#mobile-search-autocomplete\").submit();\n }\n\n}\n\n\ndocument.onkeydown = function (event) {\n\n var select;\n\n if (anzahl_suggest > 0 && event.key === \"ArrowUp\") { // up arrow\n\n // console.log(\"anzahl suggest: \" + anzahl_suggest + \" suggest select: \" + suggest_select);\n\n if (suggest_select < 2)\n select = anzahl_suggest;\n else\n select = parseInt(suggest_select) - parseInt(1);\n suggestSelect(select);\n insertSelect(select);\n\n\n setTimeout(function () {\n var element = $(\"#searchfield\")[0];\n moveCursorToEnd(element);\n console.log(\"moving cursor to end\");\n }, 1);\n\n\n } else if (anzahl_suggest > 0 && event.key === \"ArrowDown\") { // down arrow\n\n // console.log(\"anzahl suggest: \" + anzahl_suggest + \" suggest select: \" + suggest_select);\n\n if (suggest_select === 0 || suggest_select === anzahl_suggest)\n select = 1;\n else\n select = parseInt(suggest_select) + parseInt(1);\n suggestSelect(select);\n insertSelect(select);\n\n\n } else if (suggest_select > 0 && event.key === \"Enter\") {\n\n select = parseInt(suggest_select);\n suggestSelect(select);\n insertSelect(select);\n }\n\n\n};\n\nfunction moveCursorToEnd(el) {\n el.focus();\n if (el.setSelectionRange) {\n var len = el.value.length * 2;\n el.setSelectionRange(len, len);\n } else el.value = el.value;\n el.scrollTop = 999999;\n}\n\n\nvar xmlHttpBrand;\nvar xmlHttpModel;\nvar gkid;\nvar deviceGroup_id;\nvar marke;\n\n\n/**\n * function triggered when device type in device selector is changed\n *\n * @param selectBox\n * @param viewType\n * @param produktkategorie_id\n */\nwindow.changeDeviceType = function (selectBox, viewType, produktkategorie_id) {\n $(\"#deviceBrand\").html(\"\");\n $('.content').css('cursor', 'wait');\n // gkid = selectBox.options[selectBox.selectedIndex].value;\n deviceGroup_id = selectBox.options[selectBox.selectedIndex].value;\n xmlHttpBrand = getXMLRequester();\n if (xmlHttpBrand && deviceGroup_id > 0) {\n // var aufruf = \"/konfigurator.php\" + \"?gkid=\" + gkid +\n // \"&produktkategorie_id=\" + produktkategorie_id +\n // \"&viewtype=\" + viewType + \"&random=\"\n // + Math.random();\n\n var aufruf = \"/konfigurator.php\" + \"?deviceGroup_id=\" + deviceGroup_id +\n \"&produktkategorie_id=\" + produktkategorie_id +\n \"&viewtype=\" + viewType + \"&random=\"\n + Math.random();\n xmlHttpBrand.onreadystatechange = new Function(\"\", \"deviceTypeResponse()\");\n xmlHttpBrand.open(\"GET\", aufruf, true);\n xmlHttpBrand.send(null);\n }\n}\n\n/**\n * function triggered when device brand in device selector is changed\n *\n * @param selectBox\n * @param viewType\n * @param produktkategorie_id\n */\nwindow.changeDeviceBrand = function (selectBox, viewType, produktkategorie_id) {\n $(\"#deviceModel\").html(\"\");\n $('.content').css('cursor', 'wait');\n // if ($('#deviceType').val() > 0) {\n // gkid = $('#deviceType').val();\n // }\n\n if ($('#deviceType').val() > 0) {\n deviceGroup_id = $('#deviceType').val();\n }\n if ($('#deviceBrand').val() > 0) {\n marke = $('#deviceBrand').val();\n }\n xmlHttpModel = getXMLRequester();\n if (xmlHttpModel && marke > 0) {\n var aufruf = \"/konfigurator.php\" + \"?deviceGroup_id=\" + deviceGroup_id +\n \"&produktkategorie_id=\" + produktkategorie_id +\n \"&marke=\" + marke +\n \"&viewtype=\" + viewType +\n \"&searchfield=\" + searchfield +\n \"&brandFilter=\" + brandFilter +\n \"&random=\" + Math.random();\n xmlHttpModel.onreadystatechange = new Function(\"\", \"deviceBrandResponse()\");\n xmlHttpModel.open(\"GET\", aufruf, true);\n xmlHttpModel.send(null);\n }\n}\n\n/**\n * function triggered when device model in device selector is changed\n *\n * @param selectBox\n * @param viewType\n */\nwindow.changeDeviceModel = function (selectBox, viewType) {\n\n var deviceModel = $('#deviceModel'),\n deviceModel_xs = $('#deviceModel_xs');\n\n if (deviceModel.val() !== '') {\n console.log(\"Redirecting to \" + deviceModel.val());\n window.location = deviceModel.val();\n } else if (deviceModel_xs.val() !== '') {\n console.log(\"Redirecting to \" + deviceModel_xs.val());\n window.location = deviceModel_xs.val();\n\n }\n}\n\nwindow.deviceBrandResponse = function () {\n if (xmlHttpModel.readyState === 4 || xmlHttpModel.readyState === \"complete\") {\n console.log('deviceBrandResponse');\n $(\"#deviceModel\").html(xmlHttpModel.responseText);\n $('.deviceModelSelector').removeClass('hidden-xs');\n $('#deviceBrand').selectbox(\"close\");\n $('#deviceModel').selectbox(\"detach\");\n $('#deviceModel').selectbox(\"attach\");\n $('.deviceModelSelector .sbOptions').prepend(\"\" +\n \"<li>\" +\n \"<button type='button' class='close' aria-label='Close' onclick='closeSelector(\\\"#deviceModel\\\")'>\" +\n \"<span aria-hidden='true'>&times;</span></button>\" +\n \"<input type='text' name='deviceModel_search' class='deviceData_search' onkeyup='filterElements(this)' />\" +\n \"</li>\");\n\n $('#deviceModel').selectbox().change(function () {\n let val = $(this).val();\n let option = $('#deviceModel option[value=\"' + val + '\"]').first();\n $(option).trigger(\"click\");\n });\n\n $('#deviceBrand').blur();\n $('#deviceModel').focus();\n $('#deviceModel').selectbox(\"open\");\n $('.content').css('cursor', 'auto');\n $('.deviceModelSelector').removeClass('deviceSelector-background-unchosen');\n\n }\n}\n\nwindow.deviceTypeResponse = function () {\n if (xmlHttpBrand.readyState === 4 || xmlHttpBrand.readyState === \"complete\") {\n console.log('deviceTypeResponse');\n $(\"#deviceBrand\").html(xmlHttpBrand.responseText);\n $('.deviceBrandSelector').removeClass('hidden-xs');\n $('#deviceType').selectbox(\"close\");\n $('#deviceBrand').selectbox(\"detach\");\n $('#deviceBrand').selectbox(\"attach\");\n $('.deviceBrandSelector .sbOptions').prepend(\n \"<li><button type='button' class='close' aria-label='Close' onclick='closeSelector(\\\"#deviceBrand\\\")'>\" +\n \"<span aria-hidden='true'>&times;</span>\" +\n \"</button>\" +\n \"<input type='text' name='deviceBrand_search' class='deviceData_search' onkeyup='filterElements(this)' />\" +\n \"</li>\");\n $('#deviceType').blur();\n $('#deviceBrand').focus();\n $('#deviceBrand').selectbox(\"open\");\n $('.content').css('cursor', 'auto');\n\n $('.deviceBrandSelector').removeClass('deviceSelector-background-unchosen');\n }\n}\n\nwindow.closeSelector = function (item) {\n console.log('close ' + item);\n $(item).selectbox(\"close\");\n $(document.body).removeClass('noscroll');\n}\n\nwindow.filterElements = function (searchElement) {\n searchValue = searchElement.value.toLowerCase();\n console.log(searchValue);\n parent = searchElement.parentElement;\n element = parent.nextSibling;\n while (element) {\n console.log(element.firstChild.nodeName);\n if (element.firstChild.nodeName.toLowerCase() === 'a') {\n checkValue = element.firstChild.innerHTML.toLowerCase();\n console.log(checkValue);\n if (checkValue.indexOf(searchValue) > -1) {\n element.style.display = 'block';\n } else {\n element.style.display = 'none';\n }\n }\n element = element.nextSibling;\n }\n}\n\nwindow.changeCurrency = function (selectElement) {\n url = selectElement.options[selectElement.selectedIndex].value;\n location.href = url;\n}\n\nwindow.gtmOptOut = function (disableStr, succesText) {\n document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/';\n window[disableStr] = true;\n showNotificationBar(succesText);\n}\n\n/**\n * https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce#product-click\n *\n */\nwindow.onProductClick = function (id, title, category, brand, position, list, callbackLocation) {\n\n console.log(\"GA: Clicked on product with following data: \" + JSON.stringify(arguments));\n brand = formatBrand(brand);\n\n ga('create', 'UA-12093026-1');\n ga('require', 'ec');\n\n ga('ec:addProduct', {\n 'id': id,\n 'name': title,\n 'category': category,\n 'brand': brand,\n 'position': position\n });\n ga('ec:setAction', 'click', {list: list});\n\n let customParams = new Array();\n customParams.push(dimensions);\n customParams.push({\n hitCallback: function () {\n document.location = callbackLocation;\n }\n });\n\n // Send click with an event, then send user to product page.\n ga('send', 'event', 'UX', 'click', 'Results', customParams);\n console.log(dimensions);\n}\n\n\n/**\n *\n * After clicking on the product listing, a user views the product details page.\n * https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce#product-detail-view\n */\nwindow.onProductDetailView = function (id, title, category, brand) {\n\n console.log(\"GA: Showing product detail view with following data: \" +\n JSON.stringify(arguments));\n\n ga('create', 'UA-12093026-1');\n ga('require', 'ec');\n\n addProduct(id, title, category, brand);\n\n ga('ec:setAction', 'detail');\n\n sendPageview();\n\n}\n\n/**\n * https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce#add-remove-cart\n * @param id\n * @param name\n * @param category\n * @param brand\n * @param price\n * @param currency\n * @param qty\n */\nwindow.addProductToCart = function (id, name, category, brand, price, currency, qty) {\n\n\n if (window.ga) {\n // console.log(\"GA: Added to cart product with following data: \" +\n // JSON.stringify(arguments));\n\n ga('create', 'UA-12093026-1');\n ga('require', 'ec');\n\n addProduct(id, name, category, brand, price, qty);\n ga('ec:setAction', 'add');\n ga('set', 'currencyCode', currency);\n\n ga('send', 'event', 'UX', 'click', 'add to cart', dimensions);\n\n// console.log(dimensions);\n } else {\n setTimeout(addProductToCart.bind(null, id, name, category, brand, price, currency, qty), 500);\n }\n}\n\n/**\n * https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce#add-remove-cart\n * @param id\n * @param name\n * @param category\n * @param brand\n * @param price\n * @param currency\n * @param qty\n * @param deviceName\n */\nwindow.removeProductFromCart = function (id, name, category, brand, price, currency, qty) {\n if (window.ga) {\n // console.log(\"GA: Removed from cart product with following data: \" + JSON.stringify(arguments));\n\n ga('create', 'UA-12093026-1');\n ga('require', 'ec');\n\n addProduct(id, name, category, brand, price, qty);\n ga('ec:setAction', 'remove');\n ga('set', 'currencyCode', currency);\n\n ga('send', 'event', 'UX', 'click', 'remove from cart');\n\n\n } else {\n setTimeout(removeProductFromCart.bind(null, id, name, category, brand, price, currency, qty), 500);\n }\n}\n\n/**\n *\n * @param step\n * @param option\n * @param products\n */\nwindow.sendCheckoutStep = function (step, option, products) {\n\n if (typeof products !== 'undefined' && products.length > 0) {\n if (window.ga) {\n // console.log(\"GA: Setting checkout step: \" + JSON.stringify(arguments));\n\n ga('create', 'UA-12093026-1');\n ga('require', 'ec');\n\n\n products.forEach(function (product) {\n addProduct(\n product.id,\n product.name,\n product.category,\n product.brand,\n product.price,\n product.qty,\n product.deviceName\n );\n });\n\n let params = new Array();\n params['step'] = step;\n\n if (typeof option !== 'undefined') {\n params['option'] = option;\n }\n\n ga('ec:setAction', 'checkout', params);\n sendPageview();\n } else {\n setTimeout(sendCheckoutStep.bind(null, step, option, products), 500);\n }\n }\n\n}\n\n/**\n *\n * @param products\n * @param order_id\n * @param affiliation\n * @param revenue\n * @param tax\n * @param shipping\n * @param coupon\n * @param currency\n */\nwindow.trackTransaction = function (order_id, affiliation, revenue, tax, shipping, coupon, currency, products) {\n\n if (window.ga) {\n // console.log(\"GA: Tracking transaction: \" + JSON.stringify(arguments));\n\n ga('create', 'UA-12093026-1');\n ga('require', 'ec');\n\n ga('set', 'currencyCode', currency);\n\n products.forEach(function (product) {\n addProduct(\n product.id,\n product.name,\n product.category,\n product.brand,\n product.price,\n product.qty,\n product.deviceName\n );\n });\n\n setTransaction(order_id, affiliation, revenue, tax, shipping, coupon);\n\n sendPageview();\n\n } else {\n setTimeout(trackTransaction.bind(null,\n order_id, affiliation, revenue, tax, shipping, coupon, currency,\n products), 500);\n }\n}\n\nwindow.formatBrand = function (brand) {\n return brand.replace(/[^a-zA-Z0-9 ]/g, \"\");\n}\n\n/**\n *\n * @param id\n * @param name\n * @param category\n * @param brand\n * @param price\n * @param qty\n * @param deviceName\n */\nwindow.addProduct = function (id, name, category, brand, price, qty, deviceName) {\n\n\n brand = formatBrand(brand);\n\n let params = new Array();\n params['id'] = id;\n params['name'] = name;\n params['category'] = category;\n params['brand'] = brand;\n params['price'] = price;\n params['quantity'] = qty;\n\n if (typeof deviceName !== 'undefined') {\n params['dimension1'] = deviceName;\n }\n\n ga('ec:addProduct', params);\n\n // for debugging\n // console.log(\"GA: add product. Raw data: \" + JSON.stringify(arguments) + \" Converted params: \");\n // console.log(params);\n}\n\n/**\n * https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce#measuring-transactions\n * @param order_id\n * @param affiliation\n * @param revenue\n * @param tax\n * @param shipping\n * @param coupon\n */\nwindow.setTransaction = function (order_id, affiliation, revenue, tax, shipping, coupon) {\n\n ga('ec:setAction', 'purchase', { // Transaction details are provided in an actionFieldObject.\n 'id': order_id, // (Required) Transaction id (string).\n 'affiliation': affiliation, // Affiliation (string).\n 'revenue': revenue, // Revenue (currency).\n 'tax': tax, // Tax (currency).\n 'shipping': shipping, // Shipping (currency).\n 'coupon': coupon // Transaction coupon (string).\n });\n}\n\nwindow.trackProductImpressions = function (products) {\n // console.log(\"GA: product impressions: \" + JSON.stringify(arguments));\n\n if (window.ga) {\n\n ga('create', 'UA-12093026-1');\n ga('require', 'ec');\n\n products.forEach(function (product) {\n addImpression(product);\n });\n\n sendPageview();\n\n } else {\n setTimeout(trackProductImpressions.bind(null, products), 500);\n }\n}\n\nwindow.sendPageview = function () {\n // console.log(\"GA: Sending pageview with following dimensions: \");\n // console.log(dimensions);\n\n ga('send', 'pageview', dimensions);\n\n}\n\n/**\n *\n * @param categoryLvl [XX,E1,E2,E3] //Kategorie Ebene -> XX wenn nicht ausgewählt ->\n * für die Produkt Kategorie Seite einmal auf der Seite den CategeoryLevel ausrechnen (nicht pro Produkt)\n * @param categoryChosen [ALL/Displayschutzfolien/Antibakteriell] //Ausgewählte Kategorie -> immer auf Deutsch\n * @param deviceChosen [j/n] //Gerät ausgewählt\n * @param chosenDeviceName [GERÄT] //Ausgewähltes Gerät -> Gerätename Deutsch\n * @param searchfieldChosen [j/n] //Suchbegriff ausgewählt\n * @param filterChosen [j/n] //Filter ausgewählt\n * @param filterList [OHNE bzw. FILTER1,FILTER2] //Auflistung ausgewählte Filter\n * @param sorting [\"Default\" oder SORTIERKRITERIUM] //Sortierung -> Default wenn keine Änderung durch User\n * @returns {dimensions[]}\n */\nwindow.setDimension = function (categoryLvl,\n categoryChosen,\n deviceChosen,\n chosenDeviceName,\n searchfieldChosen,\n filterChosen,\n filterList,\n sorting) {\n\n // console.log(\"GA: set dimension to: \" + JSON.stringify(arguments));\n\n dimensions['dimension4'] = categoryLvl;\n dimensions['dimension5'] = categoryChosen;\n dimensions['dimension6'] = deviceChosen;\n dimensions['dimension7'] = chosenDeviceName;\n dimensions['dimension8'] = searchfieldChosen;\n dimensions['dimension9'] = filterChosen;\n dimensions['dimension10'] = filterList;\n dimensions['dimension11'] = sorting;\n\n return dimensions;\n}\n\nwindow.addImpression = function (product) {\n ga('ec:addImpression', {\n 'id': product.id, // Product details are provided in an impressionFieldObject.\n 'name': product.name,\n 'category': product.category,\n 'brand': product.brand,\n 'list': product.list,\n 'position': product.position // 'position' indicates the product position in the list.\n });\n}\n\n/**\n *\n * @param id\n * @param name\n * @param creative\n * @param position\n */\nwindow.trackPromoClick = function (id, name, creative, position) {\n\n\n if (window.ga) {\n\n ga('create', 'UA-12093026-1');\n ga('require', 'ec');\n\n // Identify the promotion that was clicked.\n\n ga('ec:addPromo', { // Promo details provided in a promoFieldObject.\n 'id': id, // Promotion ID. Required (string).\n 'name': name, // Promotion name (string).\n 'creative': creative, // Creative (string).\n 'position': position // Position (string).\n });\n\n // Send the promo_click action with an event.\n ga('ec:setAction', 'promo_click');\n ga('send', 'event', 'Internal Promotions', 'click', name);\n } else {\n setTimeout(trackProductImpressions.bind(null, id, name, creative, position), 500);\n }\n\n //console.log(\"GA: promo click: \" + JSON.stringify(arguments));\n}\n\n\n\n//# sourceURL=webpack:///./inc/custom.js?");

/***/ }),

/***/ 0:
/*!*****************************!*\
 !*** multi ./inc/custom.js ***!
 \*****************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__(/*! ./inc/custom.js */\"./inc/custom.js\");\n\n\n//# sourceURL=webpack:///multi_./inc/custom.js?");

/***/ })

/******/ });