
/******/ (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 = "./src/app.js");
/******/ })
/************************************************************************/
/******/ ({

/***/ "./node_modules/load-google-maps-api/index.js":
/*!****************************************************!*\
  !*** ./node_modules/load-google-maps-api/index.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

const API_URL = 'https://maps.googleapis.com/maps/api/js'
const CALLBACK_NAME = '__googleMapsApiOnLoadCallback'

const optionsKeys = ['channel', 'client', 'key', 'language', 'region', 'v']

let promise = null

module.exports = function (options = {}) {
  promise =
    promise ||
    new Promise(function (resolve, reject) {
      // Reject the promise after a timeout
      const timeoutId = setTimeout(function () {
        window[CALLBACK_NAME] = function () {} // Set the on load callback to a no-op
        reject(new Error('Could not load the Google Maps API'))
      }, options.timeout || 10000)

      // Hook up the on load callback
      window[CALLBACK_NAME] = function () {
        if (timeoutId !== null) {
          clearTimeout(timeoutId)
        }
        resolve(window.google.maps)
        delete window[CALLBACK_NAME]
      }

      // Prepare the `script` tag to be inserted into the page
      const scriptElement = document.createElement('script')
      const params = [`callback=${CALLBACK_NAME}`]
      optionsKeys.forEach(function (key) {
        if (options[key]) {
          params.push(`${key}=${options[key]}`)
        }
      })
      if (options.libraries && options.libraries.length) {
        params.push(`libraries=${options.libraries.join(',')}`)
      }
      scriptElement.src = `${options.apiUrl || API_URL}?${params.join('&')}`

      // Insert the `script` tag
      document.body.appendChild(scriptElement)
    })
  return promise
}


/***/ }),

/***/ "./src/app.js":
/*!********************!*\
  !*** ./src/app.js ***!
  \********************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _scss_main_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./scss/_main.scss */ "./src/scss/_main.scss");
/* harmony import */ var _scss_main_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_scss_main_scss__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _components_calendarTool_main_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/calendarTool/main.js */ "./src/components/calendarTool/main.js");




/***/ }),

/***/ "./src/components/calendarTool/googleMap.js":
/*!**************************************************!*\
  !*** ./src/components/calendarTool/googleMap.js ***!
  \**************************************************/
/*! exports provided: initMap */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initMap", function() { return initMap; });
const loadGoogleMapsApi = __webpack_require__(/*! load-google-maps-api */ "./node_modules/load-google-maps-api/index.js"),
    googleApiKey = 'AIzaSyCd-eys715eNW-CRpV1Zn88EeL0h5SvJYQ',
    mapSelector = '#calendarToolMap',
    addressSelector = '#calendarToolAddress',
    defaultPosition = {lat: 53.5586941, lng: 9.7877407},
    defaultZoom = 12;

function initMap() {
    let map, geoCoder;

    if (mapSelectorExist()) {

        loadGoogleMapsApi({key: googleApiKey}).then(function (googleMaps) {
            geoCoder = new googleMaps.Geocoder();
            map = new googleMaps.Map(document.querySelector(mapSelector), {
                center: defaultPosition,
                zoom: defaultZoom
            });

            setAddress(geoCoder, map);
        }).catch(function (error) {
            console.error(error)
        })
    }
}

function setAddress(geoCoder = {}, map = {}) {
    let address = getAddress();

    geoCoder.geocode({'address': address}, function (results, status) {
        if (status === 'OK') {
            map.setCenter(results[0].geometry.location);
            let marker = new google.maps.Marker({
                map: map,
                position: results[0].geometry.location
            });
        } else {
            console.log('Geocode was not successful for the following reason: ' + status);
        }
    });
}

function getAddress() {
    let address = $(addressSelector).text(),
        splitResult=[];

    splitResult = address.split(':');

    return splitResult[1];
}

function mapSelectorExist() {
    return !!$(mapSelector).length;
}




/***/ }),

/***/ "./src/components/calendarTool/main.js":
/*!*********************************************!*\
  !*** ./src/components/calendarTool/main.js ***!
  \*********************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _teaser_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./teaser.js */ "./src/components/calendarTool/teaser.js");
/* harmony import */ var _googleMap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./googleMap.js */ "./src/components/calendarTool/googleMap.js");


moment.locale('de');

const defaults = {
    filterTypes : ['sport', 'category', 'type'],
    detailsUrl: getDefaultUrl(),
    buttons: {
        filters: '#calendarToolFilterContainer .apply-filter',
        headerFilter: '.calendar__wrapper .content__header--left .apply-filter',
        mobileFilter: '.calendar__wrapper .filter__controller .apply-filter',
        clearFilter: '.calendar__wrapper .content__header--right .clear-filter',
        showFilterOverlay: '.calendar__wrapper .content__header--left .show-filter-overlay',
        closeOverlay: '.calendar__wrapper .filter__controller .hide-filter-overlay',
        showMore: '.calendar__wrapper .content__body--right--bottom .show-more-teaser',
    },
    filters: {
        content : '#calendarToolFilterContainer',
    },
    teaser: {
        content: '#calendarToolTeaserContent',
        result: {
            infoText: {
                noEvents: 'Es liegen keine Ergebnisse vor',
                error: 'Es gibt ein Problem! Bitte versuche es später noch mal.',
            }
        }
    },
    header: {
        starDate:{
            content : '#calendarToolTeaserStartDate',
        },
        selectedFilter :{
            content : '#calendarToolSelectedFilter',
            infoText: {
                results: 'Ergebnisse für: ',
                allEvents: 'Alle Events',
            },
        },

    }
};

init();

function init() {
    if($('.tx-bra-calendar-hsv').length){
        registerListeners();
        Object(_googleMap_js__WEBPACK_IMPORTED_MODULE_1__["initMap"])();
        setGridItemWidth();
    }
}

function getDefaultUrl() {
    let element = $('#defaultEvUrl');

    if (element.length) {
        if (element.val() === "lokal") {
            console.log("is lokal");
            return 'local';
        }
        return element.val();
    }
    console.log('Error: hidden input with url can not be found.');
    return '';
}

function registerListeners() {
    let body = $('body'),
        container = $(defaults.filters.content);

    body.on('click', defaults.buttons.headerFilter, function () {
        filter('filterEvents');
    });

    body.on('click', defaults.buttons.filters, function () {
        filter('filterEvents');
        if(isMobile()){
            container.hide();
        }
    });

    body.on('click', defaults.buttons.mobileFilter, function () {
        filter('filterEvents')
        //container.hide();
    });

    body.on('click', defaults.buttons.clearFilter, function () {
        resetFilters();
    });

    body.on('click', defaults.buttons.showFilterOverlay, function () {
        container.show();
    });

    body.on('click', defaults.buttons.closeOverlay, function () {
        container.hide();
    });

    body.on('click', defaults.buttons.showMore, function () {
        filter('extendEvents');
    });
}
function setGridItemWidth(){
    $('.grid-item').width('100%');
}

function isMobile(){
    return $(window).width() < 768;
}

function displayResultInfo(text = '') {
    let teaser = $(defaults.teaser.content);

    teaser.empty();
    teaser.append(`<span class="filter-result-info">${text}</span>`);
}

function filter(type = '') {
    let requestData = getRequestData(type),
        result = fetchEventData(requestData);

    result.then(function (data) {
        if (data.results.length >= 1) {
            displaySelectedTeaser(data.results, type);
        } else if (type === 'filterEvents') {
            displayResultInfo(defaults.teaser.result.infoText.noEvents);
        }
        displaySelectedFilters(data.filter);
    }).catch(function (error) {
        console.log(error);
        displayResultInfo(defaults.teaser.result.infoText.error);
    });
}

async function fetchEventData(requestData = new FormData) {
    if (defaults.detailsUrl === "local") {
        return {"filter":{"date":"2020-07-24","offset":0,"sport":{},"category":null,"type":null,"query":null},"results":[{"uid":15,"title":"Laufnacht der Sparkassen Gala","begin":1595660400,"end":1595700000,"description":"Laufnacht der Sparkassen Gala","locationCity":"Regensburg","locationCountry":"","locationName":"St\u00e4dt. Sportanlage am Weinweg","locationStreet":"Weinweg 32","locationZip":0,"category":{"title":"Junior-Top-Team","uid":2},"sport":{"title":"Leichtathletik","uid":12},"type":{"title":"Versammlungen","uid":2},"url":"https:\/\/stage.hsv.de\/ev\/1\/kalender\/termin?tx_bracalendarhsv_events%5Baction%5D=show&tx_bracalendarhsv_events%5Bevent%5D=15&cHash=add2f8887da6e2b6a952932949c9b0a4","ics":"https:\/\/stage.hsv.de\/ev\/1\/kalender\/termin?tx_bracalendarhsv_events%5Baction%5D=ics&tx_bracalendarhsv_events%5Bevent%5D=15&type=671823&cHash=3fe10b280756a6bcdd4ca71ac9b24b1a"},{"uid":16,"title":"Sportfest auf der Jahnkampfbahn","begin":1596265200,"end":1596304800,"description":"Sportfest auf der Jahnkampfbahn","locationCity":"Hamburg","locationCountry":"","locationName":"Jahnkampfbahn","locationStreet":"Linnering 3","locationZip":22299,"category":{"title":"Amateursport","uid":4},"sport":{"title":"Leichtathletik","uid":12},"type":{"title":"Versammlungen","uid":2},"url":"https:\/\/stage.hsv.de\/ev\/1\/kalender\/termin?tx_bracalendarhsv_events%5Baction%5D=show&tx_bracalendarhsv_events%5Bevent%5D=16&cHash=88ed3de828c89e0781f5ba2486ea0ad5","ics":"https:\/\/stage.hsv.de\/ev\/1\/kalender\/termin?tx_bracalendarhsv_events%5Baction%5D=ics&tx_bracalendarhsv_events%5Bevent%5D=16&type=671823&cHash=831c77780ee7aa3e766d43993ebc7890"},{"uid":9,"title":"Deutsche Meisterschaften Leichtathletik","begin":1596873600,"end":1596985200,"description":"Deutsche Meisterschaften M\u00e4nner \/ Frauen","locationCity":"Braunschweig","locationCountry":"","locationName":"","locationStreet":"","locationZip":38112,"category":{"title":"Top-Team","uid":1},"sport":{"title":"Leichtathletik","uid":12},"type":{"title":"Sample Turnier","uid":3},"url":"https:\/\/stage.hsv.de\/ev\/1\/kalender\/termin?tx_bracalendarhsv_events%5Baction%5D=show&tx_bracalendarhsv_events%5Bevent%5D=9&cHash=b93df54b99488d98743f0cd7ff30819d","ics":"https:\/\/stage.hsv.de\/ev\/1\/kalender\/termin?tx_bracalendarhsv_events%5Baction%5D=ics&tx_bracalendarhsv_events%5Bevent%5D=9&type=671823&cHash=f78d2cae22f1a137308dfef4d97a13c0"},{"uid":17,"title":"Sportfest auf der Jahnkampfbahn","begin":1596956400,"end":1596996000,"description":"Sportfest auf der Jahnkampfbahn","locationCity":"Hamburg","locationCountry":"","locationName":"Jahnkampfbahn","locationStreet":"Linnering 3","locationZip":22299,"category":{"title":"Amateursport","uid":4},"sport":{"title":"Leichtathletik","uid":12},"type":{"title":"Versammlungen","uid":2},"url":"https:\/\/stage.hsv.de\/ev\/1\/kalender\/termin?tx_bracalendarhsv_events%5Baction%5D=show&tx_bracalendarhsv_events%5Bevent%5D=17&cHash=69b300e38fe879fd24f4c0adbce5b2d2","ics":"https:\/\/stage.hsv.de\/ev\/1\/kalender\/termin?tx_bracalendarhsv_events%5Baction%5D=ics&tx_bracalendarhsv_events%5Bevent%5D=17&type=671823&cHash=e7010154b40d74948ee34b8d76f22678"},{"uid":10,"title":"Deutsche Meisterschaften Mehrkampf","begin":1597996800,"end":1598194800,"description":"Deutsche Meisterschaften Mehrkampf","locationCity":"Vaterstetten","locationCountry":"","locationName":"Sportzentrum Vaterstetten","locationStreet":"Baldhamer Str. 100","locationZip":85591,"category":{"title":"Top-Team","uid":1},"sport":{"title":"Leichtathletik","uid":12},"type":{"title":"Deutsche Meisterschaften","uid":5},"url":"https:\/\/stage.hsv.de\/ev\/1\/kalender\/termin?tx_bracalendarhsv_events%5Baction%5D=show&tx_bracalendarhsv_events%5Bevent%5D=10&cHash=76fbb74460fa60012e812e4361fc11d5","ics":"https:\/\/stage.hsv.de\/ev\/1\/kalender\/termin?tx_bracalendarhsv_events%5Baction%5D=ics&tx_bracalendarhsv_events%5Bevent%5D=10&type=671823&cHash=8e4a4bbb8ce7d03fdfb2d62e8a6ad277"},{"uid":11,"title":"Deutsche Jugendmeisterschaften","begin":1599206400,"end":1599404400,"description":"Deutsche Jugendmeisterschaften","locationCity":"Heilbronn","locationCountry":"","locationName":"Frankenstadion","locationStreet":"Badstra\u00dfe 100","locationZip":74072,"category":{"title":"Junior-Top-Team","uid":2},"sport":{"title":"Leichtathletik","uid":12},"type":{"title":"Deutsche Meisterschaften","uid":5},"url":"https:\/\/stage.hsv.de\/ev\/1\/kalender\/termin?tx_bracalendarhsv_events%5Baction%5D=show&tx_bracalendarhsv_events%5Bevent%5D=11&cHash=9ae1f0ca7ba7ba47586d008884294c73","ics":"https:\/\/stage.hsv.de\/ev\/1\/kalender\/termin?tx_bracalendarhsv_events%5Baction%5D=ics&tx_bracalendarhsv_events%5Bevent%5D=11&type=671823&cHash=8a6c35e59a3cd6eada7d770f21469b72"}]};
    }
    let response = await fetch(defaults.detailsUrl, {method: 'POST', body: requestData});

    if (response.status === 200) {
        return response.json();
    }

    throw new Error();
}

function getRequestData(eventType = '') {
	
    let filters = $(defaults.filters.content + ' input:checked'),
        teaser = $(defaults.teaser.content),
        filterTypes = defaults.filterTypes,
        requestData = new FormData(),
        longId = '',
        type = '',
        offset;


    if (eventType === 'extendEvents') {
        offset = teaser.children().length + 1;
        requestData.append(`tx_bracalendarhsv_events[offset]`, offset);
    }

    for (let key in filterTypes) {
        let parameters = '';
        filters.each(function () {

            longId = $(this).attr('id');
            type = $(this).attr('data-type');

            if (filterTypes[key] === type) {
                parameters += getShortId(longId) + ',';
            }
        });

        if (parameters !== '') {
            parameters = parameters.slice(0, -1);
            requestData.append(`tx_bracalendarhsv_events[${filterTypes[key]}]`, parameters);
        }
    }

    return requestData;
}

function getShortId( id = ''){
    return id.split('--')[1];
}

function displaySelectedTeaser(results, eventType = '') {
    let teaser = $(defaults.teaser.content),
        append = '',
        newTeaser;

    if (eventType === 'filterEvents') {
        teaser.empty();
    }

    $(defaults.header.starDate.content).text(moment.unix(results[0].begin).locale('de').format('DD MMMM YYYY')); 

    for (let i = 0; i < results.length; i++) {
        newTeaser = Object(_teaser_js__WEBPACK_IMPORTED_MODULE_0__["createTeaserCalendarTool"])(results[i]);
        append += teaser.append(newTeaser);

    }
    setGridHeight();
    return append;
}

function setGridHeight(){
    let grid = $('.container .grid').first(),
        gridItem  = $('.grid-item');

    grid.height(gridItem.height());
}

function displaySelectedFilters(response) {
let formattedDescription = getFormattedDescription(response),
    element = $(defaults.header.selectedFilter.content);

    element.empty();

    element.append(formattedDescription);
}

function getFormattedDescription(response) {
    let formatted = getFormattedFilters(response),
        description = `<span class="filter_description">${defaults.header.selectedFilter.infoText.results}</span>`;

    if (formatted === '') {
        description += defaults.header.selectedFilter.infoText.allEvents;
    } else {
        description += formatted;
    }

    return description;
}

function getFormattedFilters(response) {

	let filterTypes = defaults.filterTypes,
		activeFilters = [],
		formatted = '';

	for (let type in filterTypes) {

		if (response[filterTypes[type]]) {
			
			for (let i = 0; i < response[filterTypes[type]].length; i++) {

				let filter = response[filterTypes[type]][i];

				if (typeof filter == 'object' && 'title' in filter) {
					activeFilters.push(filter.title);
				}
            }
        }
    }

    //Remove last ','
	formatted = activeFilters.join(', ');

    return formatted;
}

function resetFilters() {
    let filterInputs = $(defaults.filters.content + ' input');

    filterInputs.each(function () {
        $(this).prop('checked',false);
    });

    filter('filterEvents');
}


/***/ }),

/***/ "./src/components/calendarTool/teaser.js":
/*!***********************************************!*\
  !*** ./src/components/calendarTool/teaser.js ***!
  \***********************************************/
/*! exports provided: createTeaserCalendarTool */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createTeaserCalendarTool", function() { return createTeaserCalendarTool; });

  function createTeaserCalendarTool(event) {
    moment.locale('de');

    // check available data;
    let uid = '';
    if (event.uid) {
      uid = event.uid;
    } else {
      console.log('event.uid ist missing!');
    }

    let dayNumber = '';
    let dayString = '';
    let dayTime = '';
    if (event.begin) {
      dayNumber = moment(new Date(event.begin * 1000)).format('DD');
      dayString = moment(new Date(event.begin * 1000)).format('dddd');
      dayTime = moment(new Date(event.begin * 1000)).format('H:mm');
    } else {
      console.log(`uid: ${uid} - event.begin ist missing!`);
    }

    let description = '';
    if (event.description) {
      description = event.description;
    } else {
      console.log(`uid: ${uid} - event.description ist missing!`);
    }

    let sport = '';
    if (event.sport.title) {
      sport = event.sport.title;
    } else {
      console.log(`uid: ${uid} - event.sport ist missing!`);
    }

    let category = '';
    if (event.category.title) {
      category = event.category.title;
    } else {
      console.log(`uid: ${uid} - event.category ist missing!`);
    }

    let title = '';
    if (event.title) {
      title = event.title;
    } else {
      console.log(`uid: ${uid} - event.title ist missing!`);
    }

    let type = '';
    if (event.type.title) {
      type = event.type.title;
    } else {
      console.log(`uid: ${uid} - event.type ist missing!`);
    }

    let locationName = '';
    if (event.locationName) {
      locationName = event.locationName;
    } else {
      console.log(`uid: ${uid} - event.locationName ist missing!`);
    }

    let locationStreet = '';
    if (event.locationStreet) {
      locationStreet = event.locationStreet;
    } else {
      console.log(`uid: ${uid} - event.locationStreet ist missing!`);
    }

    let locationCity = '';
    if (event.locationCity) {
      locationCity = event.locationCity;
    } else {
      console.log(`uid: ${uid} - event.locationCity ist missing!`);
    }

    let locationZip = '';
    if (event.locationZip) {
      locationZip = event.locationZip;
    } else {
      console.log(`uid: ${uid} - event.locationZip ist missing!`);
    }

    let locationCountry = '';
    if (event.locationCountry) {
      locationCountry = event.locationCountry;
    } else {
      console.log(`uid: ${uid} - event.locationCountry ist missing!`);
    }

    let detailsUrl = '';
    if(event.url){
      detailsUrl = event.url;
    }else{
      console.log(`detailsUrl: ${detailsUrl} - event.url ist missing!`);
    }

    let icsUrl = '';
    if(event.ics){
      icsUrl = event.ics;
    }else{
      console.log(`icsUrl: ${icsUrl} - event.ics ist missing!`);
    }

    // create teaser
    let teaser = '';
    teaser += `<div class="teaser">`;
      teaser += `<div class="teaser__date">`;
        teaser += `<div class="teaser__date--number">${dayNumber}</div>`;
        teaser += `<div class="teaser__date--string">${dayString}</div>`;
      teaser += `</div>`;
      teaser += `<div class="teaser__content">`;
        teaser += `<div class="teaser__content--top">`;
          teaser += `<div class="teaser__content--top--left">`;
            teaser += `<span class="teaser__tag">${sport}</span>`;
            teaser += `<span class="teaser__tag">${category}</span>`;
            teaser += `<span class="teaser__tag">${type}</span>`;
            teaser += `<h3 class="teaser__headline">${title}</h3>`;
            teaser += `<div class="teaser__text">${event.locationStreet} in ${event.locationZip} ${event.locationCity}</div>`;
          teaser += `</div>`;
          teaser += `<div class="teaser__content--top--right">`;
            teaser += `<span>Ort: ${locationName}</span><span>Beginn: <strong>${dayTime}</strong></span>`;
          teaser += `</div>`;
        teaser += `</div>`;
        teaser += `<div class="teaser__content--bottom">`;
          teaser += `<button type="button" class="content__button light" onclick="location.href='${detailsUrl}'">details</button>`;
          teaser += `<a download="HSV_Event_${uid}.ics" class="content__button dark" href="${icsUrl}">Termin importieren</a>`;
        teaser += `</div>`;
      teaser += `</div>`;
    teaser += `</div>`;

    return teaser;
  }

/***/ }),

/***/ "./src/scss/_main.scss":
/*!*****************************!*\
  !*** ./src/scss/_main.scss ***!
  \*****************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

// extracted by mini-css-extract-plugin

/***/ })

/******/ });
//# sourceMappingURL=bundle.js.map

document.addEventListener('DOMContentLoaded', function () {

  if (!document.cookie.split(';').filter(function(item) {
    return item.trim().indexOf('overlayHidden=') === 0
      }).length) {
        openOverlay();
  }

  setTimeout(function () {
    setCookie();
    closeOverlay();
   }, 7000);

  document.querySelector('.button-close').addEventListener('click', function(){
    setCookie();
    closeOverlay();
    });

  function closeOverlay() {
    document.querySelector('.js-overlay').classList.add('hidden');
  }

  function openOverlay() {
    document.querySelector('.js-overlay').classList.remove('hidden');
  }

  function setCookie() {
      var days=1;
      var myDate = new Date();
      myDate.setTime(myDate.getTime()+(days*24*60*60*1000));
      document.cookie = 'overlayHidden=true; expires=' + myDate.toGMTString();
      console.log(document.cookie);
  }
});