document.addEventListener("DOMContentLoaded", function () { var ImCookieMessage = function () { //Get content from API this.getContent = function () { if ('XDomainRequest' in window && window.XDomainRequest !== null) { var xdr = new XDomainRequest(); var diplayCookie = new ImCookieMessage().displayCookieMessage; xdr.open('GET', 'https://cookies.berlin-chemie.com/cookie/get-cookie-content', true); xdr.onload = function () { var res = JSON.parse(xdr.responseText); if (res.success) { diplayCookie(res); } else { console.error(res.message); } }; // All of this below have to be present xdr.onprogress = function () { }; xdr.ontimeout = function () { }; xdr.onerror = function () { console.log('response was empty or site was not added'); }; xdr.send(); } else { var xhttp; if (window.XDomainRequest) { xhttp = new XDomainRequest(); } else if (window.XMLHttpRequest) { xhttp = new XMLHttpRequest(); } else { xhttp = new ActiveXObject('Microsoft.XMLHTTP'); } xhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { // Typical action to be performed when the document is ready: var diplayCookie = new ImCookieMessage().displayCookieMessage; // console.log(typeof(JSON.parse(xhttp.response))); if (xhttp.response && xhttp.response.length > 1) { var res = JSON.parse(xhttp.response); if (res.success) { diplayCookie(res); } else { console.error(res.message); } } else { console.log('response was empty or site was not added'); } } }; let lang = document.documentElement.lang; xhttp.open('GET', 'https://cookies.berlin-chemie.com/cookie/get-cookie-content?language=' + lang, true); xhttp.send(); } }; this.toggleGoogleAnalytics = function (toggle, cookie) { var gaProperty = cookie.gaCode; var disableStr = 'ga-disable-' + gaProperty; if (toggle) { if (cookie.cookieType === 1 && !cookieMessage.readCookie('ImAcceptedCookiePolicy')) { document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/'; window[disableStr] = toggle; } } else if (cookie.cookieType === 1) { document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/'; window[disableStr] = toggle; } }; //Add cookie message element in DOM // cookieType 0 = basic //cookieType 1 = opt-in this.displayCookieMessage = function (cookie) { var beforeCreateEvent = new Event('beforeCookieCreate'); var afterCreateEvent = new Event('afterCookieCreate'); var buttonClick = new Event('cookieButtonClick'); document.dispatchEvent(beforeCreateEvent); new ImCookieMessage().toggleGoogleAnalytics(true, cookie); var div = document.createElement('div'); var style = document.createElement('style'); var script = document.createElement('script'); div.setAttribute('id', 'im-outer-cookie-message'); style.innerHTML = cookie.cookieContentCss; if (cookie.cookieContentJs) { script.innerHTML = cookie.cookieContentJs; document.head.appendChild(script); } document.head.appendChild(style); div.innerHTML = cookie.cookieContentTemplate.replace('{{button_content}}', cookie.cookieButtonText).replace('{{content}}', cookie.cookieContent); document.body.appendChild(div); var imCookieMessageOuter = document.getElementById('im-outer-cookie-message'); var oldBodyPaddingBottom = document.body.style.paddingBottom; var oldBodyPaddingTop = document.body.style.paddingTop; var bodyPaddingTop = oldBodyPaddingTop; var bodyPaddingBottom = oldBodyPaddingBottom; if (oldBodyPaddingBottom) { oldBodyPaddingBottom = oldBodyPaddingBottom.split('px')[0]; } else { oldBodyPaddingBottom = 0; } if (oldBodyPaddingTop) { oldBodyPaddingTop = oldBodyPaddingTop.split('px')[0]; } else { oldBodyPaddingTop = 0; } if (parseInt(cookie.cookiePosition) === 0) { if (!bodyPaddingBottom) { bodyPaddingBottom = 0; } else { var bodyPaddingBottomArray = bodyPaddingBottom.split('px'); bodyPaddingBottom = bodyPaddingBottomArray[0]; } document.body.style.paddingBottom = imCookieMessageOuter.offsetHeight + Number(bodyPaddingBottom) + 'px'; imCookieMessageOuter.setAttribute('style', 'position: fixed; overflow: hidden; bottom: 0; left: 0; right: 0; z-index: 9999;'); } else { if (!bodyPaddingTop) { bodyPaddingTop = 0; } else { var bodyPaddingTopArray = bodyPaddingTop.split('px'); bodyPaddingTop = bodyPaddingTopArray[0]; } document.body.style.paddingTop = imCookieMessageOuter.offsetHeight + Number(bodyPaddingTop) + 'px'; imCookieMessageOuter.setAttribute('style', 'position: fixed; overflow: hidden; top: 0; left: 0; right: 0; z-index: 9999;'); } document.dispatchEvent(afterCreateEvent); var agreeButton = imCookieMessageOuter.getElementsByTagName('button'); if (!agreeButton.length) { agreeButton = imCookieMessageOuter.getElementsByTagName('a'); } agreeButton[0].onclick = function () { new ImCookieMessage().toggleGoogleAnalytics(false, cookie); var gaProperty = cookie.gaCode; var disableStr = 'ga-disable-' + gaProperty; window[disableStr] = false; var ImSetCookie = new ImCookieMessage().createCookie; ImSetCookie(cookie.cookieName, cookie.cookieValue, cookie.cookieDuration); div.style.display = 'none'; if (parseInt(cookie.cookiePosition) === 0 && oldBodyPaddingBottom > 0) { document.body.style.paddingBottom = Number(oldBodyPaddingBottom) + 'px'; } else { document.body.style.paddingBottom = ''; } if (parseInt(cookie.cookiePosition) === 0 && oldBodyPaddingTop > 0) { document.body.style.paddingTop = Number(oldBodyPaddingTop) + 'px'; } else { document.body.style.paddingTop = ''; } document.dispatchEvent(buttonClick); }; }; //Set cookie this.createCookie = function (name, value, days) { var expires; if (days) { var d = new Date(); d.setTime(d.getTime() + (days * 24 * 60 * 60 * 1000)); var cookieName = name + '=' + value + ';'; var cookieExpire = ' expires=' + d.toUTCString() + ';'; var cookiePath = ' path=/'; var cookieContent = cookieName + cookieExpire + cookiePath; document.cookie = cookieContent; } else { expires = ''; } }; //Check if cookie is already set this.readCookie = function (name) { var nameEQ = name + '='; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) === ' ') { c = c.substring(1, c.length); } if (c.indexOf(nameEQ) === 0) { return c.substring(nameEQ.length, c.length); } } return null; }; }; var cookieMessage = new ImCookieMessage(); if (!cookieMessage.readCookie('ImAcceptedCookiePolicy')) { cookieMessage.getContent(); } });