/******/ (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 = 3);
/******/ })
/************************************************************************/
/******/ ({

/***/ "./modules/Produktkategorie/produktkategorie.js":
/*!******************************************************!*\
 !*** ./modules/Produktkategorie/produktkategorie.js ***!
 \******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("/**\n * Created by doriwall on 30.08.2017.\n */\nvar xmlHttpFilters;\nvar xmlHttpCategories;\n\n$(document).ready(function () {\n\n $('.film-selection').slick({\n slidesToShow: 4,\n slidesToScroll: 1,\n autoplay: false,\n infinite: false,\n swipe: true,\n responsive: [{\n breakpoint: 1024,\n settings: {\n slidesToShow: 4,\n slidesToScroll: 1,\n speed: 100\n }\n }, {\n breakpoint: 992,\n settings: {\n slidesToShow: 4,\n slidesToScroll: 1,\n speed: 100\n }\n }, {\n breakpoint: 480,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 1,\n speed: 100\n }\n }]\n });\n\n $('.category-banner, .category-banner-mobile').on('init', function (event, slick, direction) {\n // check to see if there are one or less slides\n if (!($('.category-banner .slick-slide').length > 1)) {\n // remove dots\n $('.slick-dots').hide();\n }\n });\n\n if ($('.category-banner')) $('.category-banner').slick({\n slidesToShow: 1,\n slidesToScroll: 1,\n autoplay: true,\n autoplaySpeed: 10000,\n speed: 1000,\n infinite: true,\n dots: true,\n arrows: true,\n swipe: true,\n responsive: [{\n breakpoint: 1024,\n settings: {\n speed: 100\n }\n }]\n });\n\n if ($('.category-banner-mobile')) $('.category-banner-mobile').slick({\n slidesToShow: 1,\n slidesToScroll: 1,\n autoplay: true,\n autoplaySpeed: 10000,\n speed: 1000,\n infinite: true,\n dots: true,\n arrows: false,\n swipe: true,\n responsive: [{\n breakpoint: 1024,\n settings: {\n speed: 100\n }\n }]\n });\n\n if ($('.children-categories')) $('.children-categories').slick({\n speed: 2000,\n autoplay: false,\n infinite: true,\n draggable: true,\n arrows: true,\n swipe: true,\n centerMode: true,\n waitForAnimate: false,\n slidesToShow: 3,\n slidesToScroll: 3,\n swipeToSlide: true,\n initialSlide: 1,\n responsive: [{\n breakpoint: 1200,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 2,\n speed: 100\n }\n }, {\n breakpoint: 480,\n settings: {\n slidesToShow: 1,\n slidesToScroll: 1,\n initialSlide: 0,\n speed: 100\n }\n }]\n });\n\n /*\n if ($('.children-categories')) $('.children-categories').slick({\n slidesToShow: 3,\n slidesToScroll: 3,\n speed: 2000,\n infinite: true,\n arrows: true,\n swipe: true,\n centerMode: false,\n responsive: [\n {\n breakpoint: 1200,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 2,\n centerMode: false\n }\n },\n {\n breakpoint: 992,\n settings: {\n centerMode: false,\n slidesToShow: 2,\n slidesToScroll: 2\n\n }\n },\n {\n breakpoint: 768,\n settings: {\n centerMode: false,\n slidesToShow: 1,\n slidesToScroll: 1\n }\n },\n {\n breakpoint: 480,\n settings: {\n centerMode: false,\n slidesToShow: 1,\n slidesToScroll: 1\n }\n }\n\n ]\n });\n */\n\n if ($('.topseller-product-category .carousel')) {\n $('.topseller-product-category .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: 1200,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 2,\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\n $('.film-selection .box-holder').on('click', function (event) {\n var type = $(event.target).find(\">:first-child\").attr('data-filter');\n if (typeof type == 'undefined')\n type = $(event.target).parent().attr('data-filter');\n if (typeof type == 'undefined')\n type = $(event.target).attr('data-filter');\n if (type == 'all') {\n $('.film-carousel').slickUnfilter();\n } else {\n $('.film-carousel').slick('slickGoTo', 0);\n $('.film-carousel').slickFilter(':has(>div[data-filter*=\"' + type + '\"])');\n }\n });\n\n $('.film-carousel').slick({\n slidesToShow: 3,\n slidesToScroll: 1,\n autoplay: false,\n infinite: false,\n swipe: true,\n responsive: [{\n breakpoint: 1024,\n settings: {\n slidesToShow: 6,\n slidesToScroll: 3,\n speed: 100\n }\n }, {\n breakpoint: 992,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 2,\n speed: 100\n }\n }, {\n breakpoint: 480,\n settings: {\n slidesToShow: 1,\n slidesToScroll: 1,\n speed: 100\n }\n }]\n });\n\n\n // $('#brand-filter').selectbox();\n // $('[id^=productFeatureValue-][id$=-filter]').selectbox();\n\n\n function px2cm(px) {\n var d = $(\"<div/>\").css({\n position: 'absolute',\n top: '-1000cm',\n left: '-1000cm',\n height: '1000cm',\n width: '1000cm'\n }).appendTo('body');\n var px_per_cm = d.height() / 1000;\n d.remove();\n return px / px_per_cm;\n }\n\n function mm2px(mm) {\n var d = $(\"<div/>\").css({\n position: 'absolute',\n top: '100%',\n left: '100%',\n height: '100mm',\n width: '100mm'\n }).appendTo('body');\n var px_per_100mm = d.width();\n d.remove();\n return mm * px_per_100mm / 100;\n }\n\n function pixelsPerMM() {\n $(\"body\").append(\"<div id='onebyone' style='width:1mm;height:1mm;display:none;'></div>\");\n var pixels = $(\"#onebyone\").width();\n $(\"#onebyone\").remove();\n return pixels;\n }\n\n var previewHTML = $('.custom-film-generator .preview').innerHTML;\n\n function changePreview() {\n $('.custom-film-generator .preview').html(previewHTML);\n var widthMM = $('.custom-film-generator form').find('input[name=\"breite\"]').val();\n var width = mm2px(widthMM);\n var heightMM = $('.custom-film-generator form').find('input[name=\"hoehe\"]').val();\n var height = mm2px(heightMM);\n var cornerMM = $('.custom-film-generator form').find('input[name=\"ecken\"]').val();\n var corner = mm2px(cornerMM);\n\n var MAX_WIDTH = $('.preview-box').width();\n var MAX_HEIGHT = MAX_WIDTH * 0.8;\n\n if (width > MAX_WIDTH) {\n height = height * MAX_WIDTH / width;\n corner = corner * MAX_WIDTH / width;\n width = MAX_WIDTH;\n }\n if (height > MAX_HEIGHT) {\n width = width * MAX_HEIGHT / height;\n corner = corner * MAX_HEIGHT / height;\n height = MAX_HEIGHT;\n }\n if (corner > (height / 2)) corner = height / 2;\n if (corner > (width / 2)) corner = width / 2;\n\n // Box preview\n $('.custom-film-generator .preview').css({\n 'width': width,\n 'height': height,\n 'border-radius': corner + 'px',\n 'margin-left': (-1 * width / 2) + 'px',\n });\n\n var cornerTop = corner - 16;\n if (cornerTop < 0) cornerTop = 0;\n\n $('.custom-film-generator .preview .info-ecken').css({\n 'top': cornerTop + 'px',\n });\n\n\n // Text\n $('.custom-film-generator .preview .film-size').css({\n 'width': width,\n 'height': height,\n 'padding-top': (height - 34) / 2 + 'px'\n });\n\n $('.custom-film-generator .preview .film-size .size-text').html(\n heightMM + 'mm x ' + widthMM + 'mm');\n\n previewHTML = $('.custom-film-generator .preview').html();\n\n if (widthMM < 45 || heightMM < 24) {\n $('.custom-film-generator .preview').html('');\n //console.log('leeren');\n } else {\n // console.log(previewHTML);\n }\n }\n\n $('.custom-film-generator form input').on(\n 'keyup change', function () {\n $('.custom-buy-box').css({\n 'display': 'none'\n });\n changePreview();\n });\n\n $('.custom-film-generator .edit-quantity').click(\n function () {\n $('.custom-buy-box').css({\n 'display': 'none'\n });\n changePreview();\n $(\"input[name='anzahl']\").focus();\n });\n\n\n $('.deviceModelSelector-chosen').find('.sbToggle').click(function () {\n //console.log(\"Clicked X\");\n //console.log(deviceBrandURL);\n window.location.replace(deviceBrandURL);\n\n var $filter = $('#deviceModel');\n $filter.parent().removeClass('deviceModelSelector-chosen');\n $filter.selectbox('detach');\n $filter.children().removeAttr('selected');\n $filter.val('');\n $filter.selectbox();\n });\n\n $('.deviceBrandSelector-chosen').find('.sbToggle').click(function () {\n //console.log(\"Clicked X\");\n\n window.location.replace(deviceTypeURL);\n\n var $filter = $('#deviceModel');\n $filter.parent().removeClass('deviceModelSelector-chosen');\n $filter.selectbox('detach');\n $filter.children().removeAttr('selected');\n $filter.val('');\n $filter.selectbox();\n\n var $filter = $('#deviceBrand');\n $filter.parent().removeClass('deviceBrandSelector-chosen');\n $filter.selectbox('detach');\n $filter.children().removeAttr('selected');\n $filter.val('');\n $filter.selectbox();\n });\n\n $('.deviceTypeSelector-chosen').find('.sbToggle').click(function () {\n //console.log(\"Clicked X empty url\");\n\n window.location.replace(emptyURL);\n\n\n let $filterModel = $('#deviceModel');\n $filterModel.parent().removeClass('deviceModelSelector-chosen');\n $filterModel.selectbox('detach');\n $filterModel.children().removeAttr('selected');\n $filterModel.val('');\n $filterModel.selectbox();\n\n let $filterBrand = $('#deviceBrand');\n $filterBrand.parent().removeClass('deviceBrandSelector-chosen');\n $filterBrand.selectbox('detach');\n $filterBrand.children().removeAttr('selected');\n $filterBrand.val('');\n $filterBrand.selectbox();\n\n let $filterType = $('#deviceType');\n $filterType.parent().removeClass('deviceTypeSelector-chosen');\n $filterType.selectbox('detach');\n $filterType.children().removeAttr('selected');\n $filterType.val('');\n $filterType.selectbox();\n\n\n });\n\n\n changePreview();\n\n\n if (typeof page !== 'undefined') {\n loadProducts(page, false, true, productsProPage, sorting);\n }\n\n $('#mobile-filters-popover').on(\n 'shown.bs.popover', function () {\n checkSelectedFeatureValues();\n });\n\n});\n\n\n/**\n * call productsOverview.php which sends request to elastic search\n * and show result to the products placeholder\n *\n * @param page\n * @param scrollToProducts\n * @param loadFilters\n * @param productsProPage\n * @param sorting\n */\nwindow.loadProducts = function (page, scrollToProducts, loadFilters, productsProPage, sorting) {\n\n //console.log(\"Loading products. productsProPage is \" + productsProPage);\n let callback;\n scrollToProducts = (typeof scrollToProducts === 'undefined') ? true : scrollToProducts;\n loadFilters = loadFilters || false;\n let countProPageFilter = (typeof productsProPage === 'undefined') ? '' : \"&count-pro-page=\" + productsProPage;\n let sortingFilter = (typeof sorting === 'undefined') ? '' : \"&product-overview-sort=\" + sorting;\n if (typeof page === 'undefined') {\n page = getCurrentPage();\n // if page * count-per-page > totalResult, set page to 1\n }\n\n let query = getQueryString();\n\n if (query !== '') {\n xmlHttp = getXMLRequester();\n\n let call = \"/modules/Produktkategorie/templates/productsOverview.php?\" + query +\n \"&page=\" + page\n + countProPageFilter\n + sortingFilter;\n callback = \"productsOverviewResponse();\";\n\n if (loadFilters) {\n callback += \"loadFilterValues();loadCategories();\";\n }\n xmlHttp.onreadystatechange = new Function(\"\", callback);\n xmlHttp.open(\"GET\", call, true);\n xmlHttp.send(null);\n\n if (scrollToProducts) {\n let productsOverviewElement = $('#productsOverview');\n\n $('html,body').stop().animate({scrollTop: productsOverviewElement.offset().top}, 'slow');\n }\n }\n}\n\nwindow.loadFilterValues = function () {\n\n if (xmlHttp.readyState === 4 || xmlHttp.readyState === \"complete\") {\n\n xmlHttpFilters = getXMLRequester();\n let call2 = \"/modules/Produktkategorie/templates/loadFilterValues.php?queryWithFilters=\"\n + encodeURIComponent(queryWithFilters) +\n \"&deviceNumberFeature_id=\" + deviceNumberFeature_id;\n let callback2 = 'showFilterScript(); loadFilters(); loadBrandFilter();';\n\n xmlHttpFilters.onreadystatechange = new Function(\"\", callback2);\n xmlHttpFilters.open(\"GET\", call2, true);\n xmlHttpFilters.send(null);\n }\n}\n\nwindow.loadCategories = function () {\n\n\n if ((xmlHttp.readyState === 4 || xmlHttp.readyState === \"complete\")\n && categoryQuery !== '\"\"' && categoryQuery !== '' && !isNaN(categoryQuery)\n ) {\n\n xmlHttpCategories = getXMLRequester();\n let call2 = \"/modules/Produktkategorie/templates/loadCategories.php?categoryQuery=\"\n + encodeURIComponent(categoryQuery);\n let callback2 = 'showCategories(); ';\n\n xmlHttpCategories.onreadystatechange = new Function(\"\", callback2);\n xmlHttpCategories.open(\"GET\", call2, true);\n xmlHttpCategories.send(null);\n } else {\n resetCategories();\n }\n}\n\nwindow.showFilterScript = function () {\n if (xmlHttpFilters.readyState === 4 || xmlHttpFilters.readyState === \"complete\") {\n $(\"#filters-script\").html(xmlHttpFilters.responseText);\n }\n}\n\nvar categoryFiltersActive = 1;\n\nwindow.showCategories = function () {\n if (xmlHttpCategories.readyState === 4 || xmlHttpCategories.readyState === \"complete\") {\n $(\"#filters-script\").html(xmlHttpCategories.responseText);\n\n let categoriesObj = JSON.parse(categoriesJson);\n\n categoryFiltersActive = 1;\n resetCategories();\n\n\n for (let key in categoriesObj) {\n // search for the link\n\n if (typeof key !== 'undefined' &&\n typeof categoriesObj[key] !== 'undefined' &&\n categoriesObj[key].hasOwnProperty('id')) {\n\n let categoryLink = $('[data-id=\"' + categoriesObj[key].id + '\"]');\n categoryLink.attr('data-productcount', categoriesObj[key].product_count);\n\n let productCount = (categoriesObj[key].product_count > 500) ? '500+' : categoriesObj[key].product_count;\n\n categoryLink.find(\"div.product-count\").html(\" (\" + productCount + \")\");\n }\n }\n\n $('.mobile-filters-body, .catSelector').find('[data-productcount=\"0\"]').each(function () {\n\n let url = $(this);\n url.addClass('category-deactivated');\n url.removeClass('category-active');\n url.removeAttr(\"href\");\n\n // mobile\n if (url.parents('.mobile-menu').length) {\n url.attr('data-toggle', '');\n url.find(\"span\").hide();\n }\n });\n\n if (categoriesObj.length <= 1) {\n // hide category-filter\n $('.mobile-filters-category').hide();\n categoryFiltersActive = 0;\n }\n }\n}\n\nvar brandFiltersActive = 0;\nvar filtersActive = 0;\nvar productFeatureFilterSelected = 0;\n\nwindow.resetCategories = function () {\n // reset all categories\n $('[data-productcount]').each(function () {\n\n let url = $(this);\n\n url.attr('data-productcount', '0');\n url.find(\"div.product-count\").html(\"\");\n url.addClass('category-active');\n url.removeClass('category-deactivated');\n url.attr('href', $(this).attr('data-href'));\n\n // mobile\n if (url.parents('.mobile-menu').length && url.is('div')) {\n url.attr('data-toggle', 'collapse');\n url.find(\"span\").show();\n }\n\n });\n}\n\n/**\n * Function for loading product feature value filters\n */\nwindow.loadFilters = function () {\n\n // get distinct values for filters\n if (xmlHttpFilters.readyState === 4 || xmlHttpFilters.readyState === \"complete\") {\n\n\n let filtersObj = JSON.parse(filtersJson);\n //console.log(\"Loading product feature value filters: \" + filtersJson);\n\n filtersActive = 0;\n for (let filter_type in filtersObj) {\n // suche richtige filter\n let filter = $('#productFeatureValue-' + filter_type + '-filter');\n let optgroup = filter.find('optgroup');\n let filterMobile = $('.content-box #mobile-productFeatureValue-' + filter_type + '-filter');\n\n let selected = 0;\n\n // ersetze options\n // if filter already chosen - do nothing\n if (typeof filterMobile.val() === 'string' && filterMobile.val() !== '') {\n selected = 1;\n productFeatureFilterSelected = 1;\n }\n\n optgroup.find('option').remove();\n filterMobile.find('option.removable:not(:selected)').remove();\n\n let filterMobilePopover = $('.popover-content #mobile-productFeatureValue-' + filter_type + '-filter');\n filterMobilePopover.find('option.removable:not(:selected)').remove();\n\n let keys_length = filtersObj[filter_type]['keys'].length;\n if (keys_length > 1 || selected == 1) {\n\n // replace only if keys_length > 1\n\n\n for (let key in filtersObj[filter_type]['keys']) {\n //console.log(\"Key: \" + filtersObj[filter_type]['keys'][key] +\n // \" Option: \" + filtersObj[filter_type]['options'][filtersObj[filter_type]['keys'][key]]);\n $(\"<option class='removable'>\")\n .val(filtersObj[filter_type]['keys'][key])\n .text(filtersObj[filter_type]['options'][filtersObj[filter_type]['keys'][key]])\n .appendTo(optgroup);\n\n $(\"<option class='removable'>\")\n .val(filtersObj[filter_type]['keys'][key])\n .text(filtersObj[filter_type]['options'][filtersObj[filter_type]['keys'][key]])\n .appendTo(filterMobile);\n\n $(\"<option class='removable'>\")\n .val(filtersObj[filter_type]['keys'][key])\n .text(filtersObj[filter_type]['options'][filtersObj[filter_type]['keys'][key]])\n .appendTo(filterMobilePopover);\n }\n\n\n // refresh selectbox\n filter.parent().parent().show();\n if (selected == 1) {\n filter.parent().addClass('productFeatureValue-selector-chosen');\n }\n filter.parent().show();\n filterMobile.parent().parent().show();\n $('.popover #mobile-productFeatureValue-' + filter_type + '-filter').parent().parent().show();\n\n filter.selectbox(\"close\");\n filter.selectbox(\"detach\");\n filter.selectbox(\"attach\");\n\n if (selected == 1) {\n filter.parent().find('.sbToggle').unbind(\"click\");\n filter.parent().find('.sbToggle').click(function () {\n //console.log(\"Clicked X\");\n let filter = $('#productFeatureValue-' + filter_type + '-filter');\n filter.parent().removeClass('productFeatureValue-selector-chosen');\n filter.selectbox('detach');\n filter.children().removeAttr('selected');\n filter.val('');\n filter.selectbox();\n\n let filterMobile = $('.content-box #mobile-productFeatureValue-' + filter_type + '-filter');\n filterMobile.val('');\n\n loadProducts(1, false, true);\n });\n checkSelectedFeatureValues();\n }\n\n filtersActive = filtersActive + 1;\n\n\n //console.log(\"After loading filter values, filter mobile:\");\n //console.log(filterMobile);\n\n\n } else {\n // hide filter\n // console.log('hiding filter: \"' + '#productFeatureValue-' + filter_type + '-filter' + '\"');\n filter.parent().parent().hide();\n filterMobile.parent().parent().hide();\n $('.popover #mobile-productFeatureValue-' + filter_type + '-filter').parent().parent().hide();\n }\n }\n\n checkForMobileFiltersAvailable();\n checkForDesktopFiltersAvailable();\n }\n}\n\n/**\n * load values into brand filter dropdown\n */\nwindow.loadBrandFilter = function () {\n\n if ((xmlHttpFilters.readyState === 4 || xmlHttpFilters.readyState === \"complete\")) {\n // console.log(\"Loading brand filter; \" + brandFilterJson);\n\n let brandFilterObj = JSON.parse(brandFilterJson);\n let keys_length = Object.keys(brandFilterObj).length;\n let filter = $('#brand-filter');\n let optgroup = filter.find('optgroup');\n let filterMobile = $('.content-box #brand-filter-mobile');\n let filterMobilePopover = $('.popover #brand-filter-mobile');\n // if filter already chosen - show it and attach click event\n if (typeof filter.val() === 'string' && filter.val() !== '' && filter.parent().parent().is(\":visible\")) {\n //console.log('filter already chosen - do nothing'); // debug\n\n filter.parent().show();\n filter.parent().parent().show();\n filterMobile.parent().show();\n brandFiltersActive = 1;\n checkForMobileFiltersAvailable();\n\n\n $(filter).parent().find('.sbToggle').unbind(\"click\");\n $(filter).parent().find('.sbToggle').click(function () {\n // console.log(\"Clicked X\");\n let filter = $('#brand-filter');\n filter.parent().removeClass('productFeatureValue-selector-chosen');\n filter.selectbox('detach');\n filter.children().removeAttr('selected');\n filter.val('');\n filter.selectbox();\n\n let mobileFilter = $('#brand-filter-mobile');\n mobileFilter.val('');\n\n loadProducts(1, false, true);\n });\n\n checkSelectedFeatureValues();\n\n return;\n } else if (typeof filter.val() === 'string' && filter.val() !== '') {\n checkSelectedFeatureValues();\n }\n // replace options\n // console.log('keys_length: ' + keys_length);\n if (keys_length >= 1) {\n optgroup.find('option').remove();\n // console.log(\"removing options for brand filter\");\n for (let key in brandFilterObj) {\n $(\"<option class='removable'>\")\n .val(key)\n .text(brandFilterObj[key])\n .appendTo(optgroup);\n }\n // refresh selectbox\n filter.selectbox(\"close\");\n filter.selectbox(\"detach\");\n filter.selectbox();\n }\n\n\n // if filter already chosen - do nothing\n if (typeof filterMobile.val() === 'string' &&\n filterMobile.val() !== '' &&\n (filter.is(\":visible\") || filterMobile.is(\":visible\"))) {\n //console.log('filter mobile already chosen - do nothing');\n\n return;\n }\n\n if (keys_length >= 1) {\n // replace mobile options\n filterMobile.find('option.removable:not(:selected)').remove();\n filterMobilePopover.find('option.removable:not(:selected)').remove();\n for (let key in brandFilterObj) {\n $(\"<option class='removable'>\")\n .val(key)\n .text(brandFilterObj[key])\n .appendTo(filterMobile);\n $(\"<option class='removable'>\")\n .val(key)\n .text(brandFilterObj[key])\n .appendTo(filterMobilePopover);\n // console.log(\"Inserting \" + brandFilterObj[key] + \" to \");\n // console.log(filterMobile);\n }\n\n }\n\n\n // hide brand filter if only 1 value and no other values chosen\n // console.log(\"Filters obj\");\n // console.log(brandFilterObj);\n // console.log(\"length: \" + keys_length);\n // console.log(\"Filter val: \" + filter.val());\n // console.log(\"Filter val mobile: \" + filterMobile.val());\n // console.log(\"filtersJson: \" + filtersJson);\n // console.log(\"productFeatureFilterSelected: \" + productFeatureFilterSelected);\n\n if (keys_length < 2 && filter.val() == null && filterMobile.val() === '' && productFeatureFilterSelected === 0) {\n\n //console.log(\"Brand filter keys_length is \" + keys_length + \"; hiding it\");\n filter.parent().parent().hide();\n filterMobile.parent().parent().hide();\n brandFiltersActive = 0;\n } else {\n\n //console.log(\"Brand filter keys_length is \" + keys_length + \"; showing it\");\n\n filter.parent().show();\n filter.parent().parent().show();\n filter.parent().parent().parent().show();\n filter.parent().parent().parent().parent().show();\n // console.log(\"Showing following elements:\");\n // console.log(filter.parent());\n // console.log(filter.parent().parent());\n filterMobile.parent().show();\n brandFiltersActive = 1;\n\n }\n\n checkForMobileFiltersAvailable();\n }\n}\n\nwindow.checkForMobileFiltersAvailable = function () {\n if (brandFiltersActive > 0 || filtersActive > 0) {\n $('#mobile-filters-popover').show();\n } else {\n $('#mobile-filters-popover').hide();\n }\n\n //console.log(\"Brand: \" + brandFiltersActive);\n //console.log(\"Filter: \" + filtersActive);\n //console.log(\"Category: \" + categoryFiltersActive);\n\n if (((brandFiltersActive > 0 || filtersActive > 0) && categoryFiltersActive === 0) ||\n ((brandFiltersActive === 0 && filtersActive === 0) && categoryFiltersActive === 1)\n ) {\n // make col-xs-12\n $('.mobile-filters-part').removeClass('col-xs-6');\n $('.mobile-filters-part').addClass('col-xs-12');\n } else {\n $('.mobile-filters-part').addClass('col-xs-6');\n $('.mobile-filters-part').removeClass('col-xs-12');\n }\n}\n\nwindow.checkForDesktopFiltersAvailable = function () {\n if (brandFiltersActive > 0 || filtersActive > 0) {\n $('#productFeatureValue-filters .desktop-filters').show();\n } else {\n $('#productFeatureValue-filters .desktop-filters').hide();\n }\n\n\n}\n\n/**\n * remove class \"btn-type-2\" and add class \"btn-type-1\"\n */\nwindow.changeApplyButtonClass = function () {\n let applyButton = $(\"#mobile-filters-apply-button\");\n applyButton.removeClass('btn-type-2');\n applyButton.addClass('btn-type-1');\n}\n\n/**\n * function will be triggered when product feature value brand is changed\n *\n * @param selectBox\n * @param viewType\n */\nwindow.changeProductFeatureValueBrand = function (selectBox, viewType) {\n\n if (selectBox.selectedIndex === -1) {\n //console.log(\"Changing product feature value brand after X mobile, and then load products\");\n\n let filter = $('#brand-filter');\n filter.parent().removeClass('productFeatureValue-selector-chosen');\n filter.selectbox('detach');\n filter.children().removeAttr('selected');\n filter.val('');\n filter.selectbox();\n let mobileFilter = $('#brand-filter-mobile');\n mobileFilter.parent().removeClass('productFeatureValue-selector-chosen');\n mobileFilter.val('');\n loadProducts(1, false, true);\n return;\n }\n\n let brand = selectBox.options[selectBox.selectedIndex].value;\n let textValue = selectBox.options[selectBox.selectedIndex].text;\n\n let mobileFilter = $('#brand-filter-mobile');\n mobileFilter.val('');\n\n // set class\n $(selectBox).parent().addClass('productFeatureValue-selector-chosen');\n\n // find content-box\n $('.content-box #brand-filter-mobile option').each(function () {\n $(this).attr('selected', false);\n });\n\n $('.content-box #brand-filter-mobile option[value=\"' + brand + '\"]').attr('selected', true);\n\n loadProducts(1, false, true);\n\n $(selectBox).parent().find('.sbToggle').unbind(\"click\");\n $(selectBox).parent().find('.sbToggle').click(function () {\n // console.log(\"Clicked X\");\n let filter = $('#brand-filter');\n filter.parent().removeClass('productFeatureValue-selector-chosen');\n filter.selectbox('detach');\n filter.children().removeAttr('selected');\n filter.val('');\n filter.selectbox();\n\n let mobileFilter = $('#brand-filter-mobile');\n mobileFilter.val('');\n loadProducts(1, false, true);\n\n });\n\n if (brand > 0) {\n hideSelectBoxId = $(selectBox).attr('id') + '-selectedElement';\n hideSelectBoxId2 = $(selectBox).attr('id') + '-selectedElement2';\n $(selectBox).hide();\n\n $('#' + hideSelectBoxId + ' .textBox').html(textValue);\n $('#' + hideSelectBoxId).show(0);\n $('#' + hideSelectBoxId2 + ' .textBox').html(textValue);\n $('#' + hideSelectBoxId2).show(0);\n\n //console.log(\"changeProductFeatureValueBrand(): inserting \" + textValue + \" into #\" + hideSelectBoxId);\n }\n}\n\n/**\n * function will be triggered when product feature value filters are changed\n *\n * @param selectBox\n * @param viewType\n * @param productFeature_id\n */\nwindow.changeProductFeatureValue = function (selectBox, viewType, productFeature_id) {\n\n if (selectBox.selectedIndex === -1) {\n //console.log(\"Changing product feature value after X mobile, and then load products\");\n\n let filter = $('#productFeatureValue-' + productFeature_id + '-filter');\n filter.parent().removeClass('productFeatureValue-selector-chosen');\n filter.selectbox('detach');\n filter.children().removeAttr('selected');\n filter.val('');\n filter.selectbox();\n let mobileFilter = $('#mobile-productFeatureValue-' + productFeature_id + '-filter');\n mobileFilter.parent().removeClass('productFeatureValue-selector-chosen');\n mobileFilter.val('');\n loadProducts(1, false, true);\n return;\n }\n\n let value = selectBox.options[selectBox.selectedIndex].value;\n let textValue = selectBox.options[selectBox.selectedIndex].text;\n\n if (typeof value === 'string' && value !== '') {\n //console.log(\"Chosen value \" + value + \"(\" + textValue + \", viewtype: \" + viewType + \") for productFeature_id \" + productFeature_id);\n\n// set class\n $(selectBox).parent().addClass('productFeatureValue-selector-chosen');\n }\n\n// find content-box\n $('.content-box #mobile-productFeatureValue-' + productFeature_id + '-filter option').each(function () {\n $(this).attr('selected', false);\n });\n\n $('.content-box #mobile-productFeatureValue-' + productFeature_id +\n '-filter option[value=\"' + value + '\"]').attr('selected', true);\n\n loadProducts(1, false, true);\n\n $(selectBox).parent().find('.sbToggle').unbind('click');\n $(selectBox).parent().find('.sbToggle').click(function () {\n // console.log(\"Clicked X\");\n let filter = $('#productFeatureValue-' + productFeature_id + '-filter');\n filter.parent().removeClass('productFeatureValue-selector-chosen');\n filter.selectbox('detach');\n filter.children().removeAttr('selected');\n filter.val('');\n filter.selectbox();\n\n let mobileFilter = $('#mobile-productFeatureValue-' + productFeature_id + '-filter');\n mobileFilter.val('');\n loadProducts(1, false, true);\n\n });\n\n if (value > 0) {\n hideSelectBoxId = $(selectBox).attr('id') + '-selectedElement';\n hideSelectBoxId2 = $(selectBox).attr('id') + '-selectedElement2';\n $(selectBox).hide();\n\n $('#' + hideSelectBoxId + ' .textBox').html(textValue);\n $('#' + hideSelectBoxId).show(0);\n $('#' + hideSelectBoxId2 + ' .textBox').html(textValue);\n $('#' + hideSelectBoxId2).show(0);\n\n //console.log(\"changeProductFeatureValue(): inserting \" + textValue + \" into #\" + hideSelectBoxId);\n }\n}\n\nwindow.removeSelectedProductFeatureValue = function (selectBoxId, feature_id) {\n //console.log('remove filter ' + selectBoxId + ' feature id: ' + feature_id);\n\n let hideSelectBoxId = selectBoxId + '-selectedElement';\n let hideSelectBoxId2 = selectBoxId + '-selectedElement2';\n\n $(\"[name=\" + hideSelectBoxId + \"] .textBox\").html('');\n $(\"[name=\" + hideSelectBoxId + \"]\").hide();\n\n $('#' + hideSelectBoxId2 + ' .textBox').html('');\n $('#' + hideSelectBoxId2).hide();\n\n $(\"[name=\" + selectBoxId + \"]\").val('');\n $(\"[name=\" + selectBoxId + \"]\").show(0);\n\n\n // hide same filters for popover\n $(\".popover #\" + hideSelectBoxId + ' .textBox').html('');\n $(\".popover #\" + hideSelectBoxId).hide();\n\n let selectBoxes = document.getElementsByName(selectBoxId);\n //console.log(selectBoxes);\n for (let i = 0; i < selectBoxes.length; i++) {\n let selectBox = selectBoxes[i];\n selectBox.selectedIndex = -1;\n //console.log(\"Setting to -1 selected index of \");\n //console.log(selectBox);\n }\n\n if (selectBoxId === 'brand-filter-mobile') {\n changeProductFeatureValueBrand(document.getElementById(selectBoxId), 2);\n } else {\n changeProductFeatureValue(document.getElementById(selectBoxId), 2, feature_id);\n }\n}\n\nwindow.checkSelectedFeatureValues = function () {\n let filters = document.getElementById('productFeatureValue-filters');\n let selectBoxes = filters.getElementsByTagName('select');\n for (let i = 0; i < selectBoxes.length; i++) {\n let selectBox = selectBoxes[i];\n\n if (selectBox.selectedIndex >= 0) {\n let value = selectBox.options[selectBox.selectedIndex].value;\n let textValue = selectBox.options[selectBox.selectedIndex].text;\n if (value > 0) {\n let hideSelectBoxId = $(selectBox).attr('id') + '-selectedElement';\n let hideSelectBoxId2 = $(selectBox).attr('id') + '-selectedElement2';\n $(selectBox).hide();\n $('#' + hideSelectBoxId + ' .textBox').html(textValue);\n $('#' + hideSelectBoxId).show(0);\n $('#' + hideSelectBoxId2 + ' .textBox').html(textValue);\n $('#' + hideSelectBoxId2).show(0);\n }\n }\n }\n}\n\nwindow.changeCountPerPage = function (selectBox) {\n let value = selectBox.options[selectBox.selectedIndex].value;\n\n // console.log(\"Showing \" + value + \" products per page\");\n loadProducts(1);\n\n}\n\nwindow.changeSort = function (selectBox) {\n let value = selectBox.options[selectBox.selectedIndex].value;\n // console.log(\"Changing sort to \" + value);\n loadProducts(1);\n}\n\n/**\n * Show products in product placeholder\n */\nwindow.productsOverviewResponse = function () {\n\n // console.log(xmlHttp.readyState);\n if (xmlHttp.readyState === 4 || xmlHttp.readyState === \"complete\") {\n // console.log(\"Products loaded. Showing them in #productsOverview\");\n $(\"#productsOverview\").html(xmlHttp.responseText);\n\n // for google analytics\n var skus = [];\n $('.products-overview-body meta[itemprop=\"sku\"]').each(function () {\n skus.push($(this).attr(\"content\"));\n });\n var prices = 0;\n $('.products-overview-body meta[itemprop=\"price\"]').each(function () {\n prices += parseFloat($(this).attr(\"content\"))\n });\n\n if (typeof dataLayer !== 'undefined') {\n dataLayer.push({\n 'ecomm_prodid': skus.join(','),\n 'ecomm_pagetype': 'category',\n 'ecomm_totalvalue': prices\n });\n }\n\n if (hideFilters === 'true') {\n // console.log(\"Hide filters: \" + hideFilters);\n hideProductFilters();\n }\n\n if (movePhraseOverDeviceSelector === 'true') {\n movePhrase();\n }\n\n //console.log('defaultFilterState: ' + defaultFilterState);\n if (defaultFilterState === 'false') {\n //console.log('checking noindex for ' + productsOverviewURL);\n\n // check if noindex element is already set\n var x = document.getElementsByName(\"robots\");\n let addNoindex = false;\n if (x.length === 0) {\n addNoindex = true;\n } else {\n for (let i = 0; i < x.length; i++) {\n if (x[i].getAttribute('content') === 'noindex,follow') {\n // console.log('noindex element already exist');\n } else {\n // console.log(\"Changing meta robots to noindex,follow\");\n x[i].setAttribute('content', 'noindex,follow');\n }\n }\n }\n if (addNoindex) {\n // add noindex\n // console.log('adding noindex,follow because of url ' + productsOverviewURL);\n let m = document.createElement('meta');\n m.name = 'robots';\n m.content = 'noindex,follow';\n document.head.appendChild(m);\n }\n } else {\n // remove noindex\n var x = document.getElementsByName(\"robots\");\n for (let i = 0; i < x.length; i++) {\n if (x[i].getAttribute('content').indexOf('noindex') !== -1 &&\n x[i].getAttribute('content') !== 'index,follow') {\n // console.log('page should be indexed; setting meta robots to index,follow');\n x[i].setAttribute('content', 'index,follow');\n }\n }\n }\n\n if (productsOverviewURL !== \"\") {\n let urlParms = window.location.search;\n let indexOf = productsOverviewURL.indexOf('?');\n if (indexOf > 0) {\n let q2 = productsOverviewURL.substring(indexOf);\n productsOverviewURL = productsOverviewURL.substring(0, indexOf);\n let qNew = new URLSearchParams(q2);\n let qOld = new URLSearchParams(urlParms);\n qOld.forEach(function (value, key) {\n if (!qNew.has(key)) {\n qNew.append(key, value);\n }\n });\n urlParms = '?' + qNew.toString();\n }\n console.log(\"productsOverviewURL is \", productsOverviewURL, urlParms);\n history.pushState({}, null, productsOverviewURL + urlParms);\n\n\n }\n }\n}\n\n\nwindow.movePhrase = function () {\n // move phrase over device selector\n $('#search-no-result').prependTo('#search-no-result-move');\n}\n\nwindow.hideProductFilters = function () {\n $('#productFeatureValue-filters').hide();\n}\n\nwindow.previousPage = function () {\n\n\n let currentPage = getCurrentPage();\n let prevPage = +currentPage - 1;\n // console.log(\"current page: \" + currentPage + \" prev page: \" + prevPage);\n if (prevPage > 0) {\n loadProducts(prevPage);\n\n }\n\n}\n\nwindow.nextPage = function () {\n let currentPage = getCurrentPage();\n let nextPage = +currentPage + 1;\n\n // console.log(\"current page: \" + currentPage + \" next page: \" + nextPage);\n\n if (pageCount >= nextPage) {\n loadProducts(nextPage);\n\n }\n\n}\n\nwindow.getCurrentPage = function () {\n let currentPage;\n\n if (document.getElementById('page') != null) {\n currentPage = document.getElementById('page').value;\n\n } else {\n currentPage = 1;\n }\n\n return currentPage;\n}\n\n\n/**\n * get query string from produktkategorie page for productOverview page\n * @returns {string | *}\n */\nwindow.getQueryString = function () {\n let queryPairs = [];\n let queryString;\n\n let form_ids = [\n 'productOverview-filters-form',\n 'products-count-pro-page-form',\n 'products-overview-header-form'\n ];\n\n form_ids.forEach(function (formName) {\n\n // console.log(\"Getting form: \" + formName);\n let form = document.getElementById(formName);\n if (form !== null) {\n\n // console.log(form);\n // console.log(typeof form);\n for (let i = 0; i < form.elements.length; i++) {\n let e = form.elements[i];\n if (encodeURIComponent(e.value).length > 0 &&\n encodeURIComponent(e.name) !== 'shopping_artikel' &&\n encodeURIComponent(e.name) !== 'shopping_menge' &&\n encodeURIComponent(e.name) !== 'shopping_submit'\n\n ) {\n // console.log(e);\n queryPairs.push(encodeURIComponent(e.name) + \"=\" + encodeURIComponent(e.value));\n }\n }\n }\n });\n\n queryString = queryPairs.join(\"&\");\n // console.log(\"Query string: \" + queryString);\n return queryString;\n}\n\n//# sourceURL=webpack:///./modules/Produktkategorie/produktkategorie.js?");

/***/ }),

/***/ 3:
/*!************************************************************!*\
 !*** multi ./modules/Produktkategorie/produktkategorie.js ***!
 \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

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

/***/ })

/******/ });