PageSourceSearch

https://gutscheine.cafe-wien.at/wert-abfragen

html cafe-wien.at collected 2026-10-02 07:19:03 UTC 88,620 bytes, 2,057 lines download raw bytes

1<!DOCTYPE html>
2<html dir="ltr" lang="de">
3<head>
4
5    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6    <meta name="viewport" content="width=device-width, initial-scale=1" />
7
8        <meta name="robots" content="index,follow" />
9    <meta name="language" content="de" />
10            <meta name="author" content="Querfeld's Wiener Kaffeehaus GesmbH" />
11                <meta name="publisher" content="Querfeld's Wiener Kaffeehaus GesmbH" />
12                <meta name="company" content="Querfeld's Wiener Kaffeehaus GesmbH" />
13                <meta name="page-topic" content="Gutscheine Querfeld's Wiener Kaffeehaus" />
14        <meta name="reply-to" content="" />
15    <meta name="distribution" content="global" />
16    <meta name="revisit-after" content="5" />
17<link rel="apple-touch-icon" sizes="57x57" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/apple-icon-57x57.png">
18<link rel="apple-touch-icon" sizes="60x60" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/apple-icon-60x60.png">
19<link rel="apple-touch-icon" sizes="72x72" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/apple-icon-72x72.png">
20<link rel="apple-touch-icon" sizes="76x76" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/apple-icon-76x76.png">
21<link rel="apple-touch-icon" sizes="114x114" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/apple-icon-114x114.png">
22<link rel="apple-touch-icon" sizes="120x120" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/apple-icon-120x120.png">
23<link rel="apple-touch-icon" sizes="144x144" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/apple-icon-144x144.png">
24<link rel="apple-touch-icon" sizes="152x152" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/apple-icon-152x152.png">
25<link rel="apple-touch-icon" sizes="180x180" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/apple-icon-180x180.png">
26<link rel="icon" type="image/png" sizes="16x16" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/favicon-16x16.png">
27<link rel="icon" type="image/png" sizes="32x32" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/favicon-32x32.png">
28<link rel="icon" type="image/png" sizes="96x96" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/favicon-96x96.png">
29<link rel="icon" type="image/png" sizes="192x192" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/android-icon-192x192.png">
30<meta name="msapplication-TitleImage" content="https://gutscheine.cafe-wien.at/templates/qwk/favicon/ms-icon-144x144.png">
31<link rel="alternate" hreflang="de" href="https://gutscheine.cafe-wien.at/wert-abfragen" />
32<link rel="alternate" hreflang="en" href="https://gutscheine.cafe-wien.at/en/value-check" />
33<link rel="alternate" hreflang="x-default" href="https://gutscheine.cafe-wien.at/en/value-check" />
34        <meta name="description" content="Schenken Sie Ihren Liebsten unvergessliche Genussmomente mit unseren exklusiven Gutscheinen. Ob für einen gemütlichen Brunch oder einen schnellen Kaffee zum Mitnehmen – bei uns finden Sie das perfekte Geschenk für jeden Anlass. Bestellen Sie jetzt online und lassen Sie sich von unserem schnellen und zuverlässigen Service begeistern. Besuchen Sie uns noch heute und erleben Sie die Magie des Kaffeegenusses in unseren Kaffeehäusern!" />
35        <meta name="keywords" content="Gutscheine Gutscheinpakete Gutscheine Schenken Freude Urlaub Kaffee Geschenk Wien" />
36        <title>Gutscheine Querfeld's Wiener Kaffeehaus</title>
37                    <link rel="canonical" href="https://gutscheine.cafe-wien.at/wert-abfragen" />
38            
39<!-- icon template -->
40<script type="text/html" id="manage-consent-template">
41    <svg width="40" height="40" version="1.1" viewBox="0 0 23.138 27.429" xmlns="http://www.w3.org/2000/svg">
42     <g transform="translate(.24982 .72053)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8521">
43      <path d="m11.479 17.811c0.69344 3.9193 3.6964 7.0479 6.5726 7.2872"/>
44      <path d="m12.771 25.774c-10.207-8.2456 0.09164-17.214 1.9773-8.0642 1.5655 7.8623 8.9959 1.0835 6.208-4.4861-7.0193-13.782-25.331-3.8717-16.481 12.134"/>
45      <path d="m8.0864 25.566c-8.8039-10.91 5.8265-23.049 10.189-8.5278"/>
46      <path d="m21.953 8.9673c-7.2914-8.3059-16.657-6.975-21.271 1.964"/>
47      <path d="m20.404 3.6563c-7.5124-5.3367-13.285-4.0659-19.069 0.95229"/>
48     </g>
49    </svg>
50</script>
vendor: 1 bytes, line 50
50
51<script type="text/css" id="klaro-css-override">
52/*
53 * Custom CSS override for Klaro ConsentManager
54 */
55
56/* overlay transparent background */
57.klaro .cookie-modal .cm-bg {
58    background-color: rgba(0,0,0,0.5);
59}
60
61/* modal */
62.klaro .cookie-modal .cm-modal.cm-klaro, .klaro .cookie-notice:not(.cookie-modal-notice) {
63    background-color: rgb(255, 255, 255);
64}
65
66/* keywords */
67.klaro .cookie-notice strong {
68    color: rgb(153, 123, 46);
69}
70
71/* heading */
72.klaro .cookie-modal h1 {
73    color: rgb(153, 123, 46);
74}
75
76/* text color */
77.klaro .cookie-modal p, .klaro .cookie-modal strong, .klaro .cookie-modal h1, .klaro .cookie-modal h2, .klaro .cookie-modal ul, .klaro .cookie-modal li, .klaro .cookie-notice p, .klaro .cookie-notice strong, .klaro .cookie-notice h1, .klaro .cookie-notice h2, .klaro .cookie-notice ul, .klaro .cookie-notice li {
78    color: rgb(56, 56, 56);
79}
80
81/* text color dark */
82.klaro .cookie-modal .cm-list-description, .klaro .cookie-notice .cm-list-description {
83    color: rgb(56, 56, 56);
84}
85
86/* header (general description) */
87.klaro .cookie-modal .cm-modal .cm-header {
88    border-bottom: 1px solid rgb(56, 56, 56);
89}
90
91/* footer (save-buttons) */
92.klaro .cookie-modal .cm-modal .cm-footer {
93    border-top: 1px solid rgb(56, 56, 56);
94}
95
96/* link color */
97.klaro .cookie-modal a, .klaro .cookie-notice a {
98    color: rgb(80, 80, 80);
99}
100
101/* toggle input */
102.klaro .cookie-modal .cm-list-label .slider, .klaro .cookie-notice .cm-list-label .slider {
103    background-color: rgb(56, 56, 56);
104}
105
106/* input checked */
107.klaro .cookie-modal .cm-list-input:checked+.cm-list-label .slider, .klaro .cookie-notice .cm-list-input:checked+.cm-list-label .slider {
108    background-color: rgb(153, 123, 46);
109}
110
111/* input locked */
112.klaro .cookie-modal .cm-list-input.required:checked+.cm-list-label .slider, .klaro .cookie-notice .cm-list-input.required:checked+.cm-list-label .slider {
113    background-color: rgb(153, 123, 46);
114}
115
116/* input half locked */
117  .klaro .cookie-modal .cm-list-input.only-required+.cm-list-label .slider, .klaro .cookie-notice .cm-list-input.only-required+.cm-list-label .slider
118, .klaro .cookie-modal .cm-list-input.half-checked:checked+.cm-list-label .slider, .klaro .cookie-notice .cm-list-input.half-checked:checked+.cm-list-label .slider {
119    background-color: rgb(153, 123, 46);
120}
121
122/*close button*/
123.klaro .cookie-modal .cm-modal .hide svg {
124 stroke: rgb(153, 123, 46);
125}
126
127/* button */
128.klaro .cookie-modal .cm-btn, .klaro .cookie-notice .cm-btn {
129    background-color: rgb(56, 56, 56);
130    color: #ffffff;
131}
132
133/* button success */
134.klaro .cookie-modal .cm-btn.cm-btn-info, .klaro .cookie-notice .cm-btn.cm-btn-info
135, .klaro .cookie-modal .cm-btn.cm-btn-success, .klaro .cookie-notice .cm-btn.cm-btn-success
136{
137    background-color: rgb(153, 123, 46);
138    color: #ffffff;
139}
140
141/* fingerprint icon */
142#klaro-edit-btn {
143    stroke: #2B3435;
144    stroke: rgb(80, 80, 80);
145}
146
147/* position fix for purpose item list */
148#klaro label, #klaro div.label {
149    position: unset !important;
150}
151
152.klaro .cookie-modal .cm-btn, .klaro .cookie-notice .cm-btn {
153    padding: 0.6em;
154}
155
156.klaro #id-cookie-title {
157    font-size: 20px;
158}
159
160</script>
vendor: 1 bytes, line 160
160
161<script type="text/javascript">
162
163!function (w, d) {
164
165    let configWithCallback = {"acceptAll":true,"mustConsent":null,"showNoticeTitle":true,"services":[{"name":"Session","default":null,"purposes":["functional"],"cookies":[["\/^XTCsid\\d*$\/"],["\/^XTCsid\\d*$\/","\/",".cafe-wien.at"],["\/^XTCsid\\d*$\/","\/","cafe-wien.at"],["\/^XTCsid\\d*$\/","\/","gutscheine.cafe-wien.at"]],"required":true},{"name":"Warenkorb","default":null,"purposes":["functional"],"cookies":[["cart_id"],["cart_id","\/",".cafe-wien.at"],["cart_id","\/","cafe-wien.at"],["cart_id","\/","gutscheine.cafe-wien.at"]],"required":true},{"name":"Land","default":null,"purposes":["functional"],"cookies":[["inc_visitor_country_iso2"],["inc_visitor_country_iso2","\/",".cafe-wien.at"],["inc_visitor_country_iso2","\/","cafe-wien.at"],["inc_visitor_country_iso2","\/","gutscheine.cafe-wien.at"]],"required":true},{"name":"Referenz URL","default":null,"purposes":["functional"],"cookies":[["referrer_url"],["referrer_url","\/",".cafe-wien.at"],["referrer_url","\/","cafe-wien.at"],["referrer_url","\/","gutscheine.cafe-wien.at"]],"required":true},{"name":"Safari Drittanbieter Cookie Check","default":null,"purposes":["functional"],"cookies":[["safari_third_cookie"],["safari_third_cookie","\/",".cafe-wien.at"],["safari_third_cookie","\/","cafe-wien.at"],["safari_third_cookie","\/","gutscheine.cafe-wien.at"]],"required":true},{"name":"FacebookPixel","default":null,"purposes":["marketing"],"cookies":[["^_fbp"],["^_fbp","\/",".cafe-wien.at"],["^_fbp","\/","cafe-wien.at"],["^_fbp","\/","gutscheine.cafe-wien.at"]],"required":false}],"translations":{"de":{"Session":{"title":"Session","description":""},"Warenkorb":{"title":"Warenkorb","description":""},"Land":{"title":"Land","description":""},"Referenz URL":{"title":"Referenz URL","description":""},"Safari Drittanbieter Cookie Check":{"title":"Safari Drittanbieter Cookie Check","description":""},"FacebookPixel":{"title":"FacebookPixel","description":""},"purposes":{"advertisement":{"title":"Anzeigen","description":"Diese Dienste verarbeiten pers\u00f6nliche Daten, um Ihnen personalisierte oder interessenbezogene Werbung zu zeigen."},"functional":{"title":"Essenziell","description":"Essenzielle Cookies erm\u00f6glichen grundlegende Funktionen und sind f\u00fcr die einwandfreie Funktion der Website erforderlich."},"marketing":{"title":"Marketing","description":"Marketing Cookies werden von Drittanbietern oder Publishern verwendet, um personalisierte Werbung anzuzeigen. Sie tun dies, indem sie Besucher \u00fcber Websites hinweg verfolgen."},"performance":{"title":"Optimierung der Leistung","description":"Diese Dienste verarbeiten personenbezogene Daten, um den von dieser Website angebotenen Service zu optimieren."}},"consentModal":{"title":"Wir sch\u00e4tzen Ihre Privatsph\u00e4re","description":"Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell, w\u00e4hrend andere uns helfen, diese Website und Ihre Erfahrung zu verbessern.\r\nHier k\u00f6nnen Sie verschiedene auf dieser Website verwendete Tags \/ Tracker \/ Analyse-Tools ausw\u00e4hlen und deaktivieren."},"consentNotice":{"description":"Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell, w\u00e4hrend andere uns helfen, diese Website und Ihre Erfahrung zu verbessern.","learnMore":"Erweiterte Einstellungen "}},"en":{"Session":{"title":"Session","description":""},"Warenkorb":{"title":"Shopping Cart","description":""},"Land":{"title":"Country","description":""},"Referenz URL":{"title":"referrer url","description":""},"Safari Drittanbieter Cookie Check":{"title":"safari third party check","description":""},"FacebookPixel":{"title":"FacebookPixel","description":""},"purposes":{"advertisement":{"title":"Advertisements","description":"These services process personal information to sho"},"functional":{"title":"Essential","description":"Essential cookies enable fundamental functionaliti"},"marketing":{"title":"Marketing","description":"Marketing cookies are used by third parties or pub"},"performance":{"title":"Performance Optimization","description":"The
165se services process personal information to opt"}},"consentModal":{"title":"We value your privacy","description":"We use cookies on our website. Some of them are essential, while others help us to improve this website and your experience.\r\nHere you can choose or deactivate different tags \/ tracker \/ analytic-tools used on this website."},"consentNotice":{"description":"We use cookies on our website. Some of them are essential, while others help us to improve this website and your experience.","learnMore":"advanced settings "}},"it":{"Session":{"title":"Session","description":""},"Warenkorb":{"title":"carrello della spesa","description":""},"Land":{"title":"nazione","description":""},"Referenz URL":{"title":"URL di riferimento","description":""},"Safari Drittanbieter Cookie Check":{"title":"cookie di terze parti safari","description":""},"consentNotice":{"learnMore":"impostazioni avanzate "}},"fr":{"Session":{"title":"Session","description":""},"Warenkorb":{"title":"Panier","description":""},"Land":{"title":"Pays","description":""},"Referenz URL":{"title":"URL de r\u00e9f\u00e9rence","description":""}
165,"Safari Drittanbieter Cookie Check":{"title":"cookie tiers safari","description":""},"consentNotice":{"learnMore":"r\u00e9glages avanc\u00e9s "}},"sl":{"Warenkorb":{"title":"Ko\u0161arica","description":""},"Land":{"title":"Dr\u017eava","description":""},"Referenz URL":{"title":"Napotitveni URL","description":""},"Safari Drittanbieter Cookie Check":{"title":"Safari preverjanje tretje osebe","description":""},"consentModal":{"privacyPolicy":{"text":" "}},"app":{"required":{"title":"obvezno"},"purpose":"Namen"},"purposeItem":{"app":"Namen","apps":"Nameni"},"decline":"Zavrni","ok":"V redu","acceptSelected":"Sprejmi izbrano","acceptAll":"Sprejmi vse","poweredBy":"Klaro!"},"hr":{"Warenkorb":{"title":"Ko\u0161arica","description":""},"Land":{"title":"Dr\u017eava","description":""},"Referenz URL":{"title":"Referentni URL","description":""},"Safari Drittanbieter Cookie Check":{"title":"Safari provjera tre\u0107e strane","description":""},"consentNotice":{"learnMore":"Saznajte vi\u0161e "},"purposeItem":{"app":"Svrha","apps":"Svrhe"},"acceptSelected":"Prihvati odabrano","acceptAll":"Prihvati sve"}}};
166    for (let a of configWithCallback.services) {
167        a.callback = function (s, o) {
168            //callback for specific service
169        }
170    }
171
172    configWithCallback.callback = function (s, o) {
173        //callback for every service
174        if (0) {
175            window.dataLayer = window.dataLayer || []
176            dataLayer.push({event: "consentManagerChange", service_name: o.name, service_value: s});
177        }
178    }
179
180    var
181        // script element
182          klaroScript = d.createElement("SCRIPT")
183
184        // Klaro source - current version: 0.7.22
185        , klaroSrc = "https://gutscheine.cafe-wien.at/includes/javascript/klaro/klaro.js"
186
187        // load indicator
188        , klaroLoaded = false
189
190        , klaroCssOverride = d.querySelector("#klaro-css-override")
191
192        // main function
193        , callback = function () {
194            var consentConfig = (configWithCallback);
195            var i, x, cookies, rgx, editBtn, style;
196
197            window.consentConfig = consentConfig;
198
199            // turn cookie regex strings to actual regex
200            for(i = 0; i < consentConfig.services.length; i++) {
201                cookies = consentConfig.services[i].cookies;
202                for(x = 0; x < cookies.length; x++) {
203
204                    if(cookies[x][0].match(/^\/?\^|\$$/)) {
205                        rgx = new RegExp(cookies[x][0].replace(/^\/|\/$/g, ""));
206                        consentConfig.services[i].cookies[x][0] = rgx;
207                    }
208                }
209            }
210
211            // append klaroManager to global scope
212            window.klaroManager = klaro.getManager(consentConfig);
213
214            // dynamically append style element after Klaro was loaded
215            // to make sure styles are overridden
216            style = d.createElement("STYLE");
217            style.innerHTML = klaroCssOverride.innerHTML;
218            d.head.appendChild(style);
219
220            // note: after confirmation, Kalro can't be displayed as notice
221            if(!klaroManager.confirmed) {
222                klaro.show(consentConfig);
223            }
224
225            // add edit button (fingerprint icon)
226            editBtn = d.createElement("a");
227            editBtn.href = "#";
228            editBtn.title = "Cookies bearbeiten ";
229            editBtn.innerHTML = d.querySelector("#manage-consent-template").innerHTML;
230            editBtn.id = "klaro-edit-btn";
231            editBtn.style = "position:fixed; bottom:20px; right:20px; font-size:10px;";
232            editBtn.addEventListener("click", function(event) {
233                event.preventDefault();
234                klaro.show(consentConfig);
235                return false;
236            });
237            d.body.appendChild(editBtn);
238        }
239
240
241        // load trigger for main function
242        , loadCallback = function() {
243            // check if Klaro was loaded and document is ready
244            if(klaroLoaded === false || ["interactive", "complete"].indexOf(d.readyState) === -1) {
245                return;
246            }
247
248            callback();
249
250            d.removeEventListener("readystatechange", loadCallback);
251            klaroScript.removeEventListener("load", loadCallback);
252        }
253
254        ;
255
256
257    d.addEventListener("readystatechange", loadCallback);
258
259    // append script element to load Klaro.js
260    klaroScript.src = klaroSrc;
261    klaroScript.addEventListener("load", function() {
262        klaroLoaded = true;
263        loadCallback();
264    });
265    d.head.appendChild(klaroScript);
266
267    loadCallback();
268} (window, document);
269
270</script>
270
271<!-- Google Tag Manager -->
272<script>
vendor: 341 bytes, lines 272-276
272
273    (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});
274    var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';
275    j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })
276    (window,document,'script','dataLayer','
276GTM-KRB2DS3
vendor: 4 bytes, line 276
276');
277</script>
vendor: 68 bytes, lines 277-278
277
278<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
278GTM-KRB2DS3
vendor: 83 bytes, line 278
278" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
279<!-- End Google Tag Manager -->
280<script>
281    function waitForGTM(callback) {
282        const timeout = 5000;
283        const start = Date.now();
284        (function isLoaded() {
285            if (checkGTMs()) {
286                callback();
287            } else if (Date.now() - start < timeout) {
288                setTimeout(isLoaded, 50);
289            } else {
290                console.log('GTM not loaded in time');
291            }
292        })();
293
294        function checkGTMs() {
295            
296            
297
298            if (!window.google_tag_manager) {
299                return false;
300            }
301            
302                        
303            if (!window.google_tag_manager['GTM-KRB2DS3']) {
304                return false;
305            }
306            
307                        
308            return true;
309        }
310    }
311</script>
311
312
313
314<script data-type="text/javascript" data-name="FacebookPixel" type="text/plain">
vendor: 439 bytes, lines 314-320
314
315    !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
316        n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
317        n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
318        t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
319        document,'script','https://connect.facebook.net/en_US/fbevents.js');
320        fbq('init', '
320586203133161955
vendor: 39 bytes, lines 320-322
320');
321    
322    fbq('track', 'PageView');
323</script>
323
324
325<!-- Copyright (c) 2000-2020 etracker GmbH. All rights reserved. -->
326<!-- This material may not be reproduced, displayed, modified or distributed -->
327<!-- without the express prior written permission of the copyright holder. -->
328<!-- etracker tracklet 5.0 -->
329<script>
330    
331    var et_seg1 = "qwk";
332    var et_seg2 = "ecom";
333</script>
vendor: 1 bytes, line 333
333
334<script id="_etLoader" data-block-cookies="true" data-respect-dnt="true" data-secure-code="OXELj9" src="//code.etracker.com/code/e.js" async></script>
334
335<!-- etracker tracklet 5.0 end -->
336
337    <base href="https://gutscheine.cafe-wien.at/" />
338
339    <link rel="stylesheet" type="text/css" href="templates/qwk/t1/stylesheet.css?v=2157"/>
340    
341    
341<script>
342                
343// init CookieHandler in global namespace
344var CookieHandler;
345
346
347!function (w, d) {
348
349    "use strict";
350
351
352        /** {Object} */
353    var COOKIE_SUPPORT = {"device":null,"version":"","isSafari":false,"isMobile":false,"browser":null,"sameSiteSupport":true,"isFbAppBrowser":false},
354
355
356        /**
357        *
358        * @param v
359        * @returns {boolean}
360        * @private
361        */
362        _bool = function (v) {
363            if(typeof v === "string" && v.toUpperCase() === "FALSE") {
364                return false;
365            }
366            return !!v;
367        }
368        /**
369        *
370        * @param v
371        * @returns {boolean}
372        * @private
373        */
374        , _defined = function (v) {
375            return typeof v !== "undefined";
376        }
377        ;
378
379    /**
380    *
381    * @type {{get: CookieHandler.get, set: CookieHandler.set, remove: CookieHandler.remove}}
382    */
383    CookieHandler = {
384        /**
385        * get all cookies or cookie value by name
386        * @param name {string}
387        * @returns {*}
388        */
389        get    : function (name) {
390            var   cookies = document.cookie.split(/\s*;\s*/) // array with cookie strings (name=value)
391                , i         // iterator number
392                , t         // temporary array containing name and value ([name, value])
393                , r = {}    // result object
394                ;
395            for(i = 0; i < cookies.length; i++) {
396                t = cookies[i].split("=");
397                t[0] = decodeURIComponent(t[0]);
398                t[1] = decodeURIComponent(t[1]);
399                r[t[0]] = t[1];
400                if(name && t[0] === name) {
401                    return t[1];
402                }
403            }
404            return r;
405        },
406        /**
407        * sets cookie and adds default flags if not given
408        * @param name {string}
409        * @param value {string}
410        * @param s {object}
411        *   object containing the settings i.e.
412        *   {
413        *       path    : "/",
414        *       domain  : "example.com",
415        *       expires : 86400, // seconds till expiration date (will be converted to date string)
416        *       SameSite: "none",
417        *       secure  : true
418        *   }
419        * @returns {string|boolean}
420        */
421        set    : function (name, value, s) {
422            var parts,
423                i,
424                cookieStr,
425                remove = false;
426
427            // prepare value and name
428            // .get() will always return a string
429            value   = value.toString();
430            name    = name.toString();
431            s = s || {};
432
433            parts = [encodeURIComponent(name) + "=" + encodeURIComponent(value)];
434
435            if(!_defined(s.SameSite) && document.location.protocol === 'https:') {
436                // Safari turns any SameSite flag into strict => solution: do not add it
437                if(COOKIE_SUPPORT.sameSiteSupport === true) {
438                    s.SameSite = "none";
439                }
440                if(!_defined(s.secure)) {
441                    s.secure = true;
442                }
443            }
444
445            for(i in s) {
446                switch(i) {
447                    case "expires":
448                        if(s[i] < 0) {
449                            remove = true;
450                        }
451                        s[i] = (new Date(Date.now()+(s[i] * 1000))).toGMTString();
452                        break;
453                    case "secure":
454                        if(_bool(s[i])) {
455                            s[i] = "";
456                        } else {
457                            delete s[i];
458                        }
459                        break;
460                    case "path":
461                    case "domain":
462                    case "SameSite":
463                    default:
464                        break;
465                }
466                if(_defined(s[i])) {
467                    parts.push(i + (s[i] ? "=" + s[i] : ""));
468                }
469            }
470            cookieStr = parts.join("; ");
471            document.cookie = cookieStr;
472
473            if(remove === false && this.get(name) !== value) {
474                console.error("Cookiehandler.set() failed to set cookie with string \"" + cookieStr + "\"");
475                return false;
476            }
477
478            console.info("CookieHandler.set() set cookie with string %c\"" + cookieStr + "\"", "color: #50B000; text-decoration: underline;");
479            return cookieStr;
480        },
481        /**
482        * remove cookie by name (sets expiration date 1 minute in the past)
483        * @param name
484        * @returns {*}
485        */
486        remove : function (name) {
487            return this.set(name, "", {expires : -60});
488        },
489
490        /**
491        * prints help to console
492        */
493        help : function () {
494            var nl = "\n",
495                tb = "\t",
496                lines = [
497                  "CookieHandler.get([name]) {...}"
498                , tb + "Returns cookie value by name."
499                , tb + "Returns object with key => values if no name given."
500                , ""
501                , "CookieHandler.set(name, value[, s]) {...}"
502                , tb + "Sets the cookie with name and value."
503                , tb + "The third parameter s(ettings) is optional."
504                , tb + "Returns false on error."
505                , tb + "Some settings may be applied by default (SameSite=none; secure)"
506                , tb + "example:"
507                , tb + "{"
508                , tb + "    path    : \"/\","
509                , tb + "    domain  : \"example.com\","
510                , tb + "    expires : 86400, // seconds till expiration date (will be converted to date string)"
511                , tb + "    SameSite: \"none\","
512                , tb + "    secure  : true"
513                , tb + "}"
514                , ""
515                , "CookieHandler.remove(name) {...}"
516                , tb + "Removes cookie by setting its expiration date 1 minute into the past."
517                , ""
518                , "CookieHandler.help() {...}"
519                , tb + "Prints help to console."
520            ];
521
522            console.info("%c" + lines.join(nl), "color: #888888;");
523        }
524    };
525
526
527} (window, document);
528            </script>
528
529
530    
530<script>
531        var selected;
532        var submitter = null;
533
534        function submitFunction() {
535            submitter = 1;
536        }
537        function popupWindow(url) {
538            window.open(url,'popupWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=100,height=100,screenX=150,screenY=150,top=150,left=150')
539        }
540
541        function selectRowEffect(object, buttonSelect) {
542            if (!selected) {
543                if (document.getElementById) {
544                    selected = document.getElementById('defaultSelected');
545                } else {
546                    selected = document.all['defaultSelected'];
547                }
548            }
549
550            if (selected) selected.className = 'moduleRow';
551            object.className = 'moduleRowSelected';
552            selected = object;
553        }
554
555        function rowOverEffect(object) {
556            if (object.className == 'moduleRow') object.className = 'moduleRowOver';
557        }
558
559        function rowOutEffect(object) {
560            if (object.className == 'moduleRowOver') object.className = 'moduleRow';
561        }
562
563
564        // Für Checkout Prozess
565
566        function selectRowEffectCheckoutP(object, buttonSelect) {
567
568            if (selected) selected.className = 'moduleRowCheckout';
569            object.className = 'moduleRowSelectedCheckout';
570            selected = object;
571
572        }
573
574        function selectRowEffectCheckout(object, buttonSelect) {
575
576            if (!selected) {
577                if (document.getElementById) {
578                    selected = document.getElementById('defaultSelected');
579                } else {
580                    selected = document.all['defaultSelected'];
581                }
582            }
583
584            if (selected) {
585                selected.className = 'moduleRowCheckout';
586                var oldPayment = $(selected).find(":radio").attr("value");
587                if(selected !== object) {
588                    $("#subDiv_"+oldPayment).slideUp(function() {
589                        crossDomainIframeResize(false);
590                    });
591                }
592            }
593            object.className = 'moduleRowSelectedCheckout';
594            selected = object;
595
596                        $(object).find(":radio").attr("checked", "checked");
597            var payment = $(object).find(":radio").attr("value");
598            $("#subDiv_"+payment).slideDown(function() {
599                crossDomainIframeResize(false);
600            });
601
602            //remove subselection
603            if (typeof subSelected !== "undefined" && subSelected) {
604                subSelected.className = 'moduleSubRowCheckout';
605            }
606        }
607
608        function rowOverEffectCheckout(object) {
609            if (object.className == 'moduleRowCheckout') object.className = 'moduleRowOverCheckout';
610        }
611
612        function rowOutEffectCheckout(object) {
613            if (object.className == 'moduleRowOverCheckout') object.className = 'moduleRowCheckout';
614        }
615
616        // ENDE
617
618        // Für Checkout Prozess im Administrationsbereich (ROX)
619
620        function selectRowEffectCheckoutROX(object, buttonSelect) {
621            if (!selected) {
622                if (document.getElementById) {
623                    selected = document.getElementById('defaultSelected');
624                } else {
625                    selected = document.all['defaultSelected'];
626                }
627            }
628
629            if (selected)
630                selected.className = 'moduleRowCheckout_rox';
631            object.className = 'moduleRowSelectedCheckout_rox';
632            selected = object;
633
634        }
635
636        function rowOverEffectCheckoutROX(object) {
637            if (object.className == 'moduleRowCheckout_rox') object.className = 'moduleRowOverCheckout_rox';
638        }
639
640        function rowOutEffectCheckoutROX(object) {
641            if (object.className == 'moduleRowOverCheckout_rox') object.className = 'moduleRowCheckout_rox';
642        }
643
644        // ENDE
645
646                function optimizeSizeSelectbox()
647        {
648            var inputSize = $(":text").eq(-1).outerWidth();
649            var webbrowser = jQuery.browser;
650            var sizeEdit = 0;
651            chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
652
653            if(inputSize > 20)
654            {
655                $("select").css("width", inputSize + sizeEdit);
656            }
657        }
658        // ENDE
659
660        function popupImageWindow(url) {
661            window.open(url,'popupImageWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width=100,height=100,screenX=150,screenY=150,top=150,left=150')
662        }
663    </script>
663
664     
664<script>
665            if (top === self && "" != ''){
666                function iCheckWebsiteRedirect()
667                {
668                    window.location = "";
669                }
670
671                if(typeof jQuery == "undefined" || false === false)
672                {
673                    iCheckWebsiteRedirect();
674                }
675                else
676                {
677                    jQuery.ajax({
678                        url: "logoff.php?action=ajax",
679                        success: function() {
680                            iCheckWebsiteRedirect();
681                        },
682                        error: function() {
683                            iCheckWebsiteRedirect();
684                        },
685                        async: false
686                    });
687                }
688            }
689        </script>
689
690        
691<script type="text/javascript" src="./templates/qwk/t1/javascript/libs/jquery/jquery.js"></script>
vendor: 1 bytes, line 691
691
692<script type="text/javascript" src="./templates/qwk/t1/javascript/libs/jquery-ui/jquery-ui.js"></script>
692
693
694<script type="text/javascript" >
695
696	function strpos (haystack, needle, offset) {
697		// Finds position of first occurrence of a string within another
698		var i = (haystack+'').indexOf(needle, (offset ? offset : 0));
699		return i === -1 ? false : i;
700	}
701
702	var prevHeight = 0, alreadyJumped = false;
703	function crossDomainIframeResize(jumpToNavtrailAnchor, jumpOffset) {
704		
705		var iframe = document.getElementById( 'inneriframe' );
706
707		if (typeof jumpOffset == "undefined") jumpOffset = 0;
708
709		// webkit browsers (safari,chrome) provide wrong scrollHeight so get only offsetHeight ### 10_215 ###
710
711        var height = $("#navtrail_anchor").height();
712		//var height = document.body.offsetHeight;
713		if (height != prevHeight || jumpToNavtrailAnchor) {
714			prevHeight = height;
715
716			if(height == 0) {
717				height = 1800;
718			}
719
720			if (window.parent != window) {
721				try {
722					if(window.parent.updateIFrame)
723					window.parent.updateIFrame(height,'');
724
725                } catch (e) {
726                    //console.warn("not embedded in start.php");
727                }
728
729                try {
730
731					var navtrailJumpOffset
732                        = parseInt(window.getComputedStyle(document.getElementById("navtrail_anchor")).marginTop)
733                        + jumpOffset;
734
735											if (typeof console !== "undefined") {
736							console.warn("ResizeIframe url is not configured. Fallback to postMessge-API.");
737                            if (!alreadyJumped || jumpToNavtrailAnchor) {
738                                window.top.postMessage(["Inc.updateIFrame", height, true, navtrailJumpOffset], "*");
739                                alreadyJumped = true;
740                            } else {
741                                window.top.postMessage(["Inc.updateIFrame", height], "*");
742                            }
743						}
744									} catch (e) {
745                    console.error(e);
746				}
747			} else {
748				$("body").addClass("standalone");
749			}
750		}
751	}
752
753	$().ready(function() {
754        crossDomainIframeResize(true);
755    });
756
757	$(window).on("load", function() {
758    setTimeout(function() {crossDomainIframeResize(true) }, 300);
759    crossDomainIframeResize(true);
760        $(window).resize(function() {
761            if (crossDomainResizeHandler) clearTimeout(crossDomainResizeHandler);
762            crossDomainResizeHandler = setTimeout(function() {crossDomainIframeResize(false) }, 300);
763        });
764	});
765
766</script>
766
767<!-- xtc_get_shop_analytics_code -->    
767<script>
768        // Input Replacement
769        function textReplacement(input){
770            var originalvalue = input.val();
771            input.focus( function(){
772                if( $.trim(input.val()) == originalvalue ){ input.val(''); }
773            });
774            input.blur( function(){
775                if( $.trim(input.val()) == '' ){ input.val(originalvalue); }
776            });
777        }
778
779                // FIX SAFARI THIRD PARTY COOKIE PROBLEM
780        if (window.top != window) {     // wenn in iframe
781            if (navigator.userAgent.indexOf("Safari") >= 0 && navigator.userAgent.indexOf("Chrome") == -1) { // und der Browser ist safari
782
783                var safariCookieFirstPartySaved = false;
784
785                var safariPopupFunc = function (event) {
786                    var target;
787                    if (document.cookie.indexOf("safari_third_cookie=1") == -1 && (!localStorage || (localStorage && localStorage.getItem("safari_third_cookie") !== "1"))) {   // only ONCE
788
789                        // find target of click event
790                        target = event.target || event.srcElement;
791                        if(target.nodeType === 3) {
792                            target = target.parentNode;
793                        }
794
795                        CookieHandler.set("safari_third_cookie", "1");
796                        try {
797                            localStorage.setItem("safari_third_cookie", "1");
798                        } catch(e) {
799                            console.log("localStorage could not be written");
800                        }
801
802                        if (!safariCookieFirstPartySaved) {
803                            var safariCookieUrl =  "https://gutscheine.cafe-wien.at/safari_third_party.php";
804                            var safariPopup = window.open(safariCookieUrl);
805                            if (safariPopup) {
806                                safariPopup.blur();
807                                window.focus();
808                            } else {
809                                if (console) console.log("Safari Third Party Fix probably blocked by popup blocker.");
810                            }
811                            safariCookieFirstPartySaved = true;
812                        }
813
814                        // check for file input and
815                        // use preventDefault to stop file dialog in Safari
816                        if(target && target.nodeName === 'INPUT' && target.type === 'file') {
817                            event.preventDefault();
818                            return false;
819                        }
820                    }
821                    window.removeEventListener('click', safariPopupFunc);
822                };
823
824                window.addEventListener('click', safariPopupFunc);
825                // $(window).one('click', safariPopupFunc);
826
827            }
828        }
829                </script>
829
830    
831<script>
832    document.addEventListener("DOMContentLoaded", function() {
833        var html =  '<div class="cookie-msg">' +
834            'Diese Internetseite verwendet Cookies, um die Nutzererfahrung zu verbessern und den Benutzern bestimmte Dienste und Funktionen bereitzustellen. ' +
835            '<a href="https://gutscheine.cafe-wien.at/datenschutz" target="_blank" rel="noopener" class="cookie-details">Details anzeigen</a> ' +
836            '<div class="button">' +
837            '<a id="cookie-btn" class="buttonLink">OK</a>' +
838            '</div>' +
839            '</div>';
840        var div = document.createElement("div");
841        div.innerHTML = html;
842        div.id = "cookie-bar";
843        div.style.display = 'none';
844
845        if (localStorage && localStorage.getItem("cookiesallowed") !== "1") {
846            div.style.display = 'block';
847        }
848        document.body.appendChild(div);
849        document.getElementById("cookie-btn").addEventListener("click", function() {
850            if (localStorage) {
851                localStorage.setItem("cookiesallowed", "1");
852                div.style.display = 'none';
853            }
854        });
855    });
856</script>
856
857<style>
858    #cookie-bar {
859        z-index: 1000;
860        position: fixed;
861        bottom: 0;
862        left: 0;
863        right: 0;
864        background:white;
865    }
866    .cookie-msg {
867        padding:1em;
868        text-align: center;
869    }
870    .cookie-msg .button, .cookie-msg .button .buttonLink {
871        display: inline-block;
872        vertical-align: middle;
873    }
874</style>
875
876    
877<script type="text/javascript">
878    !function(w, d) {
879
880        "use strict";
881
882        /**
883         * @type Array
884         */
885        var localStorageWhitelist = [];
886
887        /**
888         *
889         * @param name
890         * @param whitelist
891         * @param getResult
892         * @returns {boolean}
893         */
894        var whitelistCheck = function (name, whitelist, getResult) {
895            if(whitelist.indexOf(name) === -1) {
896                if(getResult) {
897                    return false;
898                }
899                throw "\"" + name + "\" not whitelisted! whitelist: " + whitelist.join(", ");
900            }
901            return true;
902        };
903
904        /**
905         *
906         * @type {}
907         * object containing functions that can be called from outside
908         */
909        var Inc = {
910
911            setLocalStorage : function (name, value) {
912                whitelistCheck(name, localStorageWhitelist);
913                localStorage.setItem(name, value);
914            }
915            , removeLocalStorage : function (name) {
916                whitelistCheck(name, localStorageWhitelist);
917                localStorage.removeItem(name);
918            }
919
920
921            , consentManager : {
922                /**
923                 * accept/reject single service and it's cookies
924                 * @param name
925                 * @param value
926                 */
927                set : function (name, value) {
928                    if(typeof klaroManager === "undefined") return console.error("klaroManager undefined!");
929                    klaroManager.updateConsent(name, !!value);
930                    klaroManager.saveAndApplyConsents();
931                }
932
933                /**
934                 * reset service to default
935                 * @param name
936                 */
937                , reset : function (name) {
938                    if(typeof klaroManager === "undefined") return console.error("klaroManager undefined!");
939                    if(name) {
940                        this.set(klaroManager.getDefaultConsent(name));
941                        return;
942                    }
943                    klaroManager.resetConsents();
944                    klaroManager.saveAndApplyConsents();
945                }
946
947                /**
948                 * accept/reject all services and their cookies that match given purpose
949                 * @param purpose
950                 * @param value
951                 */
952                , setByPurpose : function (purpose, value) {
953                    if(typeof klaroManager === "undefined") return console.error("klaroManager undefined!");
954                    var services = klaroManager.config.services, i;
955                    for(i = 0; i < services.length; i++) {
956                        if(services[i].purposes.indexOf(purpose) !== -1) {
957                            this.set(services[i].name, value);
958                        }
959                    }
960                    klaroManager.saveAndApplyConsents();
961                }
962
963                /**
964                 * accept/reject all services and their cookies that are optional
965                 * @param value
966                 */
967                , setByOptional : function ( value ) {
968                    if(typeof klaroManager === "undefined") return console.error("klaroManager undefined!");
969                    var services = klaroManager.config.services, i;
970                    for(i = 0; i < services.length; i++) {
971                        if(services[i].required === false) {
972                            this.set(services[i].name, value);
973                        }
974                    }
975                    klaroManager.saveAndApplyConsents();
976
977                }
978
979                /**
980                 * alias for this.setByOptional()
981                 * @param value
982                 * @returns {void | undefined}
983                 */
984                , setAll : function ( value ) {
985                    return this.setByOptional ( value );
986                }
987            }
988
989        };
990
991        w.incTest = Inc;
992
993        // listen for postMessage event
994        w.addEventListener("message", function (event) {
995
996            var funcName, args, rawName, returnValue, funcArr, tempFunc, i;
997
998            // check data-type
999            switch(({}).toString.call(event.data).replace(/^\[\w+ |\]$/g,"").toUpperCase()) {
1000                // array
1001                case "ARRAY":
1002                    args = event.data;
1003                    rawName = args.shift();
1004                    funcName = rawName.replace(/^inc(ert)?\./i, "");
1005                    funcArr = funcName.split(".");
1006
1007                    // check if function name is prefixed with Inc. or Incert.
1008                    if(funcName === rawName) {
1009                        return;
1010                    }
1011
1012                    tempFunc = Inc;
1013
1014                    // search in IncertClass instance
1015                    for( i = 0; i < funcArr.length; i++) {
1016                        if(!tempFunc[funcArr[i]]) {
1017                            break;
1018                        }
1019                        if(i === (funcArr.length -1)) {
1020                            // apply args to function with appropriate context
1021                            returnValue = tempFunc[funcArr[i]].apply(tempFunc, args);
1022                            console.info("\"" + rawName + "\" called successfully!; arguments:", args, "; returnValue:", returnValue);
1023                            return;
1024                        }
1025                        tempFunc = tempFunc[funcArr[i]];
1026                    }
1027
1028                    throw "\"" + rawName + "\" is not defined";
1029
1030                    break;
1031                default:
1032                    break;
1033            }
1034        });
1035    } (window, document);
1036</script>
1036
1037
1038</head>
1039<body class="body" onload="crossDomainIframeResize();">
1040
1041
1042
1043      
1044
1045
1046
1047
1048
1049
1050    
1051
1052
1053
1054
1055
1056
1057
1058                
1059
1060
1061<script>
1062    var oneColumnWindowWidth = parseInt("600") || 400,
1063        twoColumnWindowWidth = parseInt("1200") || 640,
1064        respDropSidebarWindowWidth = parseInt("800") || 800,
1065        voucherSliderItemMargin = ((parseInt("20") || 20) / 2),
1066        listingSpecialCountdownFormat = "" | "%DT %Hh %Mm %Ss";
1067
1068    //Thumbs Voucher Slider Settings (see slick-init.js)
1069    var voucherSliderShowArrows = ("" == "1") || false,
1070        voucherSliderShowDots = ("1" == "1") || false,
1071        voucherSliderCenterMode = ("" == "1") || false,
1072        vSliderMinItems = parseInt("1") || 1,
1073        vSliderMaxItems = parseInt("2") || 3,
1074        cSliderMinItems = parseInt("1") || 1,
1075        cSliderMaxItems = parseInt("3") || 1,
1076        voucherSliderItemsToShowMobile = parseInt("3") || 1,
1077        voucherSliderItemsToShowTablet = parseInt("5") || 3,
1078        voucherSliderItemsToShowDesktop = parseInt("5") || 5;
1079
1080    var currentCurrencySymbol = "\u20ac";
1081</script>
1081
1082
1083
1084<script>
1085  const subShopId = -1;
1086</script>
1086
1087
1088<script type="text/javascript"
1089        src="./templates/qwk/t1/javascript/live.min.js?v=2157"></script>
1089
1090
1091<div class="body-inc " id="navtrail_anchor">
1092            <!--Header -->
1093            <header class="inc-header sticky">
1094                <a href="#inc-body" class="sr-only">Zum Hauptinhalt</a>
1095                <div class="inc-header-inner">
1096                    
1097                    <div class="inc-navigation-container ">
1098                                                    
1099
1100
1101
1102<ul class="inc-page-navigation" role="navigation" id="inc-page-navigation-container">
1103    <li>
1104        <a href="https://www.cafe-wien.at/de/die-cafes/standorte.html">
1105           Unsere Cafes & Restaurants
1106        </a>
1107    </li>
1108                <li class="language-switch-burger hidden-navi-sm-md-lg">
1109            
1110        </li>
1111    </ul>
1112
1113<script>
1114    let id = 0;
1115    let currentId = 0;
1116</script>
1116
1117                                                                                                                
1118
1119
1120    <ul class="inc-shop-navi">
1121                                                                                                <li class="inc-nav-item">
1122                    <a class="inc-nav-link inc-nav-value-check-page" href="https://gutscheine.cafe-wien.at/wert-abfragen" title="Wertabfrage" aria-label="Wertabfrage">
1123                        <i class="im icon-card" aria-hidden="true"></i>
1124                        <span class="inc-nav-link-caption">Wertabfrage</span>
1125                    </a>
1126                </li>
1127                                    
1128        <!--
1129        <li class="inc-nav-item">
1130            <a class="inc-nav-link inc-nav-account" href="https://gutscheine.cafe-wien.at/wert-abfragen" title="Konto" aria-label="Konto">
1131                <i class="im icon-card" aria-hidden="true"></i>
1132                <span class="inc-nav-link-caption">Wertabfrage</span>
1133            </a>
1134        </li>
1135        -->
1136
1137        <li class="inc-nav-item ">
1138            <a class="inc-nav-link inc-nav-cart inc-modal-control"
1139               href="https://gutscheine.cafe-wien.at/warenkorb" data-toggle="modal-cart">
1140                <div class="inc-nav-cart-inner">
1141                    <i class="im icon-shopping-cart" aria-hidden="true"></i>
1142                    <span class="inc-nav-link-caption"> Warenkorb</span>
1143                    <span id="inc-cartItemCount"
1144                          class="empty">0</span>
1145                </div>
1146            </a>
1147                                        <div class="inc-modal-menu inc-nav-cart " id="modal-cart">
1148                                        <div class="inc-modal-menu-inner">
1149                        
1150                                            </div>
1151                </div>
1152                    </li>
1153
1154                                <div class="hidden-navi-xs">
1155            
1156        </div>
1157                    </ul>                                                    
1158                            
1159
1160<button type="button" id="navigation-toggle-responsive" aria-expanded="false" aria-controls="inc-page-navigation-container">
1161    <span class="sr-only">
1162        <span class="navigation-toggle-responsive-open">Navigation öffnen</span>
1163        <span class="navigation-toggle-responsive-close" style="display: none">Navigation schließen</span>
1164    </span>
1165   <div class="navigation-toggle-responsive-burger" aria-hidden="true">
1166       <span></span>
1167       <span></span>
1168       <span></span>
1169   </div>
1170</button>
1171<script src="./templates/qwk/t1/javascript/header-mobile.js"></script>
1171                    </div>
1172                </div>
1173            </header>
1174
1175            <noscript>
1176                <div class="inc-error-box center" role="alert">
1177                    Bitte <b>aktivieren Sie JavaScript</b> in Ihrem Browser! Andernfalls kann es zu Problemen bei der Anzeige der Produkte, bzw. bei der Durchführung Ihrer Bestellung kommen.
1178                </div>
1179            </noscript>
1180
1181            <!--Sidebar -->
1182            
1183            <!--Content -->
1184            <div class="content-inc " id="inc-body" role="main">
1185                <!-- Breadcrumbs / Navtrail and Wizard -->
1186                                                                                                                                                                                                        <div class="navtrail">
1187                                <div class="inc-content-container cc-reset-padding-top-bottom">
1188                                                                            <a href="https://gutscheine.cafe-wien.at/" class="headerNavigation">Shop</a>
1189                                                                    </div>
1190                            </div>
1191                                                                                
1192                
1193                <!-- DISPLAY_CATEGORIES_WITH_PRODUCTS -->
1194                                    
1195
1196
1197
1198
1199
1200<!-- cross selling data -->
1201
1202
1203
1204
1205<script type="text/html" id="inc-lightbox-overlay-quickbuy">
1206  <div class="inc-ticket-quickbuy-overlay">
1207    <div class="inc-ticket-overlay-inner">
1208      <div class="inc-ticket-overlay-left inc-ticket-quickbuy-img"></div>
1209      <div class="inc-ticket-overlay-right inc-ticket-quickbuy-content">
1210        <h2></h2>
1211        <div class="inc-ticket-quickbuy-data">
1212          <div class="inc-form-group">
1213            <label class="inc-nofloat" for="inc-ticket-quickbuy-variant">Wählen Sie Ihr Package</label>
1214            <select type="text" name="productVariant" id="inc-ticket-quickbuy-variant" onchange="fetchEventDates(this.value, true)"></select>
1215          </div>
1216          <div class="inc-ticket-quickbuy-eventdate inc-form-group-row">
1217            <div class="inc-form-group inc-ticket-quickbuy-eventdate-date">
1218              <label for="inc-ticket-quickbuy-date">Datum</label>
1219              <input type="text" name="date" id="inc-ticket-quickbuy-date" onchange="updateEventDates(false, true, this.value)">
1220            </div>
1221            <div class="inc-form-group inc-form-group-time">
1222              <label class="inc-nofloat" for="inc-ticket-quickbuy-time">Zeit</label>
1223              <select type="text" name="time" id="inc-ticket-quickbuy-time" onchange="checkTime(this.value, true)"></select>
1224            </div>
1225            <div class="inc-form-group inc-form-group-no-grow">
1226              <label class="inc-nofloat" for="inc-ticket-quickbuy-qty">Anzahl</label>
1227              <div class="inc-quantity-toggle">
1228    <button type="button" class="inc-quantity-button-dec inc-quantity-button">&minus;</button>
1229    <input type="number" class="inc-quantity-input" maxlength="2" size="2" min="1" max="99" name="quickbuy-qty-overlay" value="1"/>
1230    <button type="button" class="inc-quantity-button-inc inc-quantity-button">&plus;</button>
1231</div>            </div>
1232          </div>
1233        </div>
1234        <div class="inc-ticket-quickbuy-control">
1235          <div class="inc-ticket-quickbuy-price">
1236            <span class="inc-ticket-quickbuy-price-val"></span>
1237            <span class="inc-ticket-quickbuy-price-info"></span>
1238            <span class="inc-ticket-quickbuy-price-vat">inkl. 20% Mwst.</span>
1239          </div>
1240          <div class="button-row">
1241            <button data-href="#" class="call-to-action" id="inc-ticket-quickbuy-button-buy" onclick="buyTicket(this, true)">jetzt buchen</button>
1242            <a href="#" class="default-button" id="inc-ticket-quickbuy-button-detail">mehr Info</a>
1243          </div>
1244        </div>
1245      </div>
1246    </div>
1247  </div>
1248</script>
1248<script>
1249    const shoppingCart = "https://gutscheine.cafe-wien.at/warenkorb";
1250
1251    const calendar_legend_available = "";
1252    const calendar_legend_narrow = "";
1253    const calendar_legend_full = "";
1254    const calendar_legend_presale = "";
1255    const calendar_legend_nosale = "";
1256    const calendar_legend_waitinglist = "";
1257    const calendar_legend_cancelled = "";
1258    const calendar_legend_elapsed = "";
1259    const calendar_legend_soldout = "";
1260
1261    const currency_left = "€";
1262    const currency_right = "";
1263
1264</script>
vendor: 1 bytes, line 1264
1264
1265<script type="text/javascript" src="./templates/qwk/t1/javascript/ticketsystem/ticket-getdata.js"></script>
vendor: 1 bytes, line 1265
1265
1266<script type="text/javascript" src="./templates/qwk/t1/javascript/ticketsystem/ticket-quickbuy.js"></script>
1266
1267
1268<!-- Implement Slick Slider -->
1269<script type="text/javascript" src="./templates/qwk/t1/javascript/libs/slick/slick.js"></script>
1269
1270<link rel="stylesheet" href="./templates/qwk/t1/javascript/libs/slick/slick.css" />
1270<script type="text/javascript" src="./templates/qwk/t1/javascript/content-render/product-list-item.js"></script>
vendor: 1 bytes, line 1270
1270
1271<script type="text/javascript" src="./templates/qwk/t1/javascript/content-render/cross-selling.js"></script>
vendor: 1 bytes, line 1271
1271
1272<script>
1273    let cross_selling_data = null;
1274    const products_badge_new = "neu";
1275    const products_badge_bestseller = "Bestseller";
1276    const products_badge_special_offer = "Aktion";
1277    const manufacturer = "Betrieb: ";
1278    const pli_min_price_label = "";
1279    const products_out_of_stock = "ausverkauft";
1280    const products_stock_available = "verfügbar";
1281    const sold_out = "Ausverkauft";
1282    const more_info = "";
1283
1284    const listingQuantityInfoLimit = parseInt("10", 10);
1285
1286    const quickbuy_sr_label = "Produkt direkt kaufen";
1287    const current_template = "qwk/t1";
1288    const style_product_buy_button = "";
1289    const show_product_buy_button = "1";
1290    const showPrices = "1";
1291
1292    const button_directbuy_details = "Details";
1293    const button_in_cart = "bestellen";
1294    const button_buy_product = "zum Produkt";
1295    const button_buy_item = "zum Artikel";
1296    const button_buy_ticket = "zum Ticket";
1297    const button_buy_now = "zum Gutschein";
1298
1299    const tpl_path = "templates/qwk/t1/";
1300
1301    const plDirectbuy = false;
1302    let productsId = '';
1303</script>
1303
1304
1305<!-- end cross selling data -->
1306
1307
1308<div class="inc-value-check-page">
1309  <div class="inc-content-container">
1310    <h1>
1311                      Wertabfrage & Digitale Ablage
1312                  </h1>
1313  </div>
1314
1315      
1316
1317<script src="./templates/qwk/t1/javascript/libs/vue/vue.js"></script>
vendor: 1 bytes, line 1317
1317
1318<script src="./templates/qwk/t1/javascript/libs/qrcodejs/qrcodejs.js"></script>
vendor: 1 bytes, line 1318
1318
1319<script type="text/javascript" src="./templates/qwk/t1/javascript/getCaptcha.js"></script>
1319
1320
1321<script>
1322    const currentRequestCount = 0;
1323        const maxRequestCount = 3;
1324</script>
1324
1325        <div id="inc-value-check">
1326            <div class="inc-voucher-lookup-container">
1327                <div class="inc-value-check-form">
1328                  <div class="inc-content-container">
1329                                                <p>
1330                                                                Barcode / QR-Code eingeben, Wert abfragen und im Wallet am Smartphone speichern.
1331                                                        </p>
1332                                              <message
1333                                v-bind:status="status"
1334                        ></message>
1335                        <check-form
1336                                v-on:set-status="setStatus"
1337                                v-on:set-success-message="setSuccessMessage"
1338                        ></check-form>
1339                    </div>
1340                </div>
1341                <div class="inc-value-check-result " v-if="success.show">
1342                  <div class="inc-content-container">
1343                                        <booking
1344                            v-bind:status="status"
1345                            v-bind:success="success">
1346                    </booking>
1347                                        <div class="inc-value-check-result-inner ">
1348                                            <status
1349                              v-bind:status="status"
1350                              v-bind:success="success"
1351                      ></status>
1352                                                                                        <qrcode
1353                              v-bind:status="status"
1354                              v-bind:success="success"
1355                      ></qrcode>
1356                                          </div>
1357                  </div>
1358                </div>
1359            </div>
1360        </div>
1361
1362
1363<script type="text/x-template" id="message">
1364    <div v-if="!status.state && status.msg" class="inc-error-box">{{ status.msg }}</div>
1365</script>
vendor: 1 bytes, line 1365
1365
1366<script type="text/x-template" id="status">
1367    <div id="inc-value-check-response-details" class="inc-value-check-result-item" v-if="success.show">
1368            <h3>{{response.name}}</h3>
1369            <span class="voucher-price">
1370                <span class="currency-left">€</span>
1371                {{ response.currentValue }}
1372                <span class="currency-left"></span>
1373            </span>
1374            
1375                <p>{{response.shortDescription}}</p>
1376            
1377            <p class="voucher-redeem-date-info">
1378                <span><b>Ausstellungsdatum:</b> <span>{{response.issueDate}}</span></span><br/>
1379                <span><b>Gültig bis:</b> <span>{{response.validUntil}}</span></span>
1380            </p>
1381
1382        
1383    </div>
1384</script>
1384
1385
1386<script type="text/x-template" id="qrcode">
1387    <div id="inc-value-check-qr-code" class="inc-value-check-result-item" v-if="success.show">
1388            <h3>Download und im Wallet speichern</h3>
1389            <p></p>
1390            <div id="qr-code-outlet"></div>
1391            <a href="" id="qr-code-link" class="inc-download-link default-button"><span class="icon-download"></span>Download</a>
1392    </div>
1393</script>
1393
1394
1395<script type="text/x-template" id="booking">
1396    <div id="inc-value-check-info-booking" v-if="success.show" class="inc-value-check-result-item">
1397            {{response.code}}
1398            Code ist gültig. 
1399            <template v-if="response.master">
1400                Sie können den Artikel einlösen:  
1401                <a v-bind:href="response.variantTicketMaster.link">{{ response.variantTicketMaster.name }}</a>
1402                <button class="call-to-action" onclick="fetchProductVariants(openQuickbuy, response.master, true, '', true)"> Jetzt buchen </button>
1403            </template>
1404            <template v-else>
1405                Sie können den Artikel nun einlösen. 
1406            </template>
1407            <form id="applyVoucherForm" class="hidden" action="https://gutscheine.cafe-wien.at/warenkorb?action=check_gift" method="post">
1408                <input type="text" name="gv_redeem_code" v-bind:value="response.code"/>
1409            </form>
1410    </div>
1411</script>
1411
1412
1413<script type="text/x-template" id="recharge-value-card">
1414  <div id="inc-value-check-recharge" class="inc-value-check-result-item" v-if="success.show && success.chargeLimits">
1415    <div class="inc-value-recharge-form" >
1416      <h3>Wertkarte beladen</h3>
1417      
1418        <p>Bitte tragen Sie den Wert ein, den Sie auf die Karte laden möchten. Sie werden dann in den Warenkorb weitergeleitet.</p>
1419      
1420      <form v-on:submit="validate" class="inc-form-inner ">
1421        <div class="inc-value-recharge-form-inner">
1422          <div class="form-field">
1423            <span class="currency-left">€</span>
1424            <input type="text" v-model="updateValue.value" :class="(updateValue.value ? 'not-empty' : '') + (updateValue.hasError ? ' invalid' : '')"
1425                   placeholder="Wert eingeben" required/>
1426            <span class="currency-right"></span>
1427          </div>
1428          <button class="button call-to-action" type="submit">Beladen</button>
1429        </div>
1430        <span class="error" v-if="updateValue.hasMinError">
1431          Der Mindestbetrag beträgt €{{success.chargeLimits.min}} 
1432        </span>
1433        <span class="error" v-if="updateValue.hasMaxError">
1434          Der Maximalbetrag beträgt €{{success.chargeLimits.min}} 
1435        </span>
1436      </form>
1437    </div>
1438  </div>
1439  
1440</script>
1440
1441
1442<script type="text/x-template" id="check-form">
1443    <form v-on:submit="validate" class="inc-form-inner inc-value-check-form">
1444        <div class="inc-value-check-form-inner">
1445            <div class="form-field">
1446                <input type="text" v-model="voucher.value" :class="(voucher.value ? 'not-empty' : '') + (voucher.hasError ? ' invalid' : '')"
1447                       placeholder="Code eingeben" required/>
1448            </div>
1449            <button class="button call-to-action" type="submit">Code überprüfen</button>
1450        </div>
1451        <div ref="captcha"></div>
1452    </form>
1453</script>
1453
1454
1455<script>
1456    window.addEventListener('DOMContentLoaded', function() {
1457
1458        Vue.component("status",
1459            {
1460                template: "#status",
1461                props: ["status", "success"],
1462                methods: {
1463                    applyVoucher: function(){
1464                        $('#applyVoucherForm').submit();
1465                    }
1466                }
1467            });
1468        Vue.component("booking",
1469            {
1470                template: "#booking",
1471                props: ["status", "success"]
1472            });
1473
1474        Vue.component("qrcode",
1475            {
1476                template: "#qrcode",
1477                props: ["status", "success"]
1478            });
1479
1480        Vue.component("message",
1481            {
1482                template: "#message",
1483                props: ["status", "success"]
1484            });
1485
1486        Vue.component("recharge-value-card",
1487            {
1488                template: "#recharge-value-card",
1489                props: ["status", "success"],
1490                data: function () {
1491                    let getParams = new URLSearchParams(location.search);
1492                    let rechargeValue = '';
1493                    if(getParams.has('code')){
1494                        rechargeValue = getParams.get('code');
1495                    }
1496                    return {
1497                        updateValue:
1498                            {
1499                                value: rechargeValue,
1500                                hasError: false,
1501                                hasMinError: false,
1502                                hasMaxError: false
1503                            }
1504                    }
1505                },
1506                methods:
1507                    {
1508                        validate: function (e) {
1509                            if(e) e.preventDefault();
1510                            this._data.updateValue.hasError = false;
1511                            let value = parseFloat(this._data.updateValue.value);
1512                            if (!this._data.updateValue.value || this._data.updateValue.value.trim() == "") {
1513                                this._data.updateValue.hasError = true;
1514                                return;
1515                            }
1516                            else {
1517                                if(value < voucherValueCheck.success.chargeLimits.min) {
1518                                    this._data.updateValue.hasMinError = true;
1519                                    this._data.updateValue.hasError = true;
1520                                    return;
1521                                }
1522                                else if(value > voucherValueCheck.success.chargeLimits.max) {
1523                                    this._data.updateValue.hasMaxError = true;
1524                                    this._data.updateValue.hasError = true;
1525                                    return;
1526                                }
1527                                var _this = this;
1528                                    _this.submitRequest(null);
1529                            }
1530                        },
1531                        submitRequest() {
1532                            var _this = this;
1533                            fetch("/api/frontend/shoppingCart/addCardRecharge", {
1534                                  method: "POST",
1535                                  body: JSON.stringify({
1536                                      cardCode: voucherValueCheck.success.code,
1537                                      rechargeAmount: parseFloat(this.updateValue.value)
1538                                  })
1539                                })
1540                                .then(async response => {
1541                                    const data = await response.json();
1542                                  if(response.status == 200) {
1543                                      location.href= data; //link to shoppingcart
1544                                  }
1545                                })
1546                                .catch((err) => {
1547                                    console.error(err);
1548                                });
1549                        }
1550                    }
1551            });
1552        Vue.component("check-form",
1553            {
1554                template: "#check-form",
1555                props: [],
1556                data: function () {
1557                    let getParams = new URLSearchParams(location.search);
1558                    let code = '';
1559                    if(getParams.has('code')){
1560                        code = getParams.get('code');
1561                    }
1562                    return {
1563                      attempt: {
1564                            current: currentRequestCount,
1565                            tracked: 0,
1566                            max: maxRequestCount
1567                        },
1568                        voucher:
1569                            {
1570                                value: code,
1571                                hasError: false
1572                            },
1573                        success: false,
1574                        captcha: {
1575                          instance: null
1576                        }
1577                    }
1578                },
1579                mounted: function(){
1580                    if(this.voucher.value != '')
1581                        this.validate(null, true);
1582                },
1583                methods:
1584                    {
1585                        renderQRCode: function (token) {
1586                            setTimeout(function () {
1587                                let url = window.location.origin + "/download_passbook.php?token=" + token;
1588
1589                                // QRCode can't handle strings in the length range of 192 - 220
1590                                // https://stackoverflow.com/questions/30796584/qrcode-js-error-code-length-overflow-17161056/73544657#comment123108831_34890253
1591                                if (url.length >= 192) {
1592                                    url = url.padEnd(220);
1593                                }
1594
1595                                $('#qr-code-outlet').html('');
1596                                new QRCode(
1597                                    document.getElementById("qr-code-outlet"),
1598                                    url);
1599                                document.getElementById("qr-code-link").setAttribute("href", url);
1600                            }, 200)
1601                        },
1602                        setStatus: function (msg, state) {
1603                            this.$emit(
1604                                'set-status',
1605                                {
1606                                    msg: msg,
1607                                    status: state
1608                                }
1609                            );
1610                        },
1611                        setSuccessMessage: function (response) {
1612                            if (typeof response !== "undefined") {
1613                                this.$emit(
1614                                    'set-success-message',
1615                                    {
1616                                        initialValue: response.initialValue,
1617                                        currentValue: response.currentValue,
1618                                        orderId: response.orderId,
1619                                        code: response.code,
1620                                        chargeLimits: response.chargeLimits,
1621                                        show: true
1622                                    }
1623                                );
1624                            } else {
1625                                this.$emit(
1626                                    'set-success-message',
1627                                    false
1628                                );
1629                            }
1630                        },
1631                        requiresCaptcha: function ()
1632                        {
1633                            return this._data.captcha.instance || (this._data.attempt.tracked + this._data.attempt.current >= this._data.attempt.max);
1634                        },
1635                        validate: function (e) {
1636                            if(e) e.preventDefault();
1637                            this._data.voucher.hasError = false;
1638                            this.setStatus("", false);
1639                            this.setSuccessMessage();
1640                            if (!this._data.voucher.value || this._data.voucher.value.trim() == "") {
1641                                this._data.voucher.hasError = true;
1642                                this.setStatus("Bitte geben Sie einen Code ein.", false);
1643                              }
1644                              else if(this.requiresCaptcha() && !this._data.captcha.instance.validate())
1645                              {
1646                                this.setStatus("", false);
1647                              }
1648                              else {
1649                                var _this = this;
1650                                  if (this.requiresCaptcha()) {
1651                                    this._data.captcha.instance.submit().then(function (captchaData) {
1652                                      _this.submitRequest(captchaData);
1653                                    });
1654                                }
1655                                else {
1656                                  _this.submitRequest(null);
1657                                }
1658                            }
1659                        },
1660                        submitRequest(captchaData) {
1661                            var _this = this;
1662                            const captchaParams = captchaData ? '?' + new URLSearchParams(captchaData).toString() : '';
1663
1664                            let voucherValue = _this._data.voucher.value.replaceAll("=", "%3D").replaceAll("&", "%26").replaceAll("?", "%3F").replaceAll("/", "%E2");
1665                            fetch("api/redeemapp/voucher/valueCheck/" + voucherValue + captchaParams)
1666                            .then(function (res) { return res.json(); })
1667                            .then(function (res) {
1668                                response = res;
1669                                try {
1670                                    if (parseInt(response.status) === -1) {
1671                                            _this.setStatus("Bitte überprüfen Sie die Captcha Eingabe.", false);
1672                                            // _this.increaseAttempt();
1673                                            _this.renderCaptcha();
1674                                    }
1675                                    else if (!response.status) {
1676                                        _this._data.voucher.hasError = true;
1677                                        _this.setStatus("Ungültiger Code.", false);
1678                                        _this.increaseAttempt();
1679                                    } else {
1680                                        if(response.variantTicketMaster) {
1681                                            response.master = {
1682                                                VARIANT_PRODUCT_IDS: response.variantTicketMaster.variants,
1683                                                PRODUCTS_IMAGE_POPUP: response.variantTicketMaster.image,
1684                                                PRODUCTS_LINK: response.variantTicketMaster.link,
1685                                                PRODUCTS_ID: response.variantTicketMaster.id,
1686                                                PRODUCTS_NAME: response.variantTicketMaster.name,
1687                                                PRODUCTS_IMAGE_ALT_TEXT: response.variantTicketMaster.imageAltText
1688                                            };
1689                                            presetVariant = response.assignedVariantTicketId;
1690                                        }
1691                                        _this.setSuccessMessage(response);
1692                                        if(response.pkpassToken) _this.renderQRCode(response.pkpassToken);
1693                                        $('#applyVoucherForm input[name=gv_redeem_code]').val(response.code);
1694                                        productsId = response.variantTicketMaster ? response.variantTicketMaster.id : '';
1695
1696                                        
1697
1698                                    }
1699                                    if (typeof crossDomainIframeResize === "function") setTimeout(function(){crossDomainIframeResize(false);}, 0);
1700                                } catch (exception) {
1701                                    if (exception instanceof SyntaxError) {
1702                                        _this.setStatus("Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut.", false);
1703                                         _this.increaseAttempt();
1704                                    }
1705                                    else {
1706                                        console.error(exception);
1707                                    }
1708                                }
1709                            }).catch(function (err) {
1710                                 if (err.response && err.response.data.code == "ERR_VOUCHER_CANCELED")
1711                                  {
1712                                      _this.setStatus("Dieser Artikel wurde storniert und kann nicht mehr eingelöst werden.", false);
1713                                  }
1714                                  else
1715                                  {
1716                                _this.increaseAttempt();
1717                                  }
1718                            });
1719                      },
1720                      increaseAttempt: function () {
1721                        this._data.attempt.tracked++;
1722
1723                        if (this._data.captcha.instance) {
1724                          this._data.captcha.instance.refresh();
1725                        }
1726                        else if (this.requiresCaptcha()) {
1727                          this.renderCaptcha();
1728                        }
1729                      },
1730                      renderCaptcha: function () {
1731                        var _this = this;
1732                        getCaptcha().then(function () {
1733                          _this._data.captcha.instance = IncCaptcha.render(_this.$refs.captcha);
1734                          _this.$refs.captcha.classList.add('captcha-container');
1735                        });
1736                      }
1737                    },
1738                    mounted: function () {
1739                      if (this.requiresCaptcha()) {
1740                        this.renderCaptcha();
1741                        }
1742                    }
1743            });
1744
1745        Vue.config.ignoredElements = ['d'];
1746
1747        var voucherValueCheck = new Vue(
1748            {
1749                el: "#inc-value-check",
1750                data:
1751                    {
1752                        status:
1753                            {
1754                                state: "",
1755                                msg: ""
1756                            },
1757                        success:
1758                            {
1759                                initialValue: "",
1760                                currentValue: "",
1761                                orderId: "",
1762                                show: false,
1763                                code: "",
1764                                chargeLimits: {
1765                                    min: null,
1766                                    max: null
1767                                },
1768                            },
1769                        downloadUrl: ""
1770                    },
1771                methods:
1772                    {
1773                        setStatus: function (status) {
1774                            this.status.state = status.state;
1775                            this.status.msg = status.msg;
1776                        },
1777                        setSuccessMessage: function (response) {
1778                            if (response) {
1779                                this.success.show = true;
1780                                this.success.initialValue = response.initialValue;
1781                                this.success.currentValue = response.currentValue;
1782                                this.success.orderId = response.orderId;
1783                                this.success.code = response.code;
1784                                this.success.chargeLimits = response.chargeLimits;
1785                            } else {
1786                                this.success.show = false;
1787                            }
1788                        }
1789                    }
1790            }
1791        );
1792    });
1793</script>
1793
1794
1795
1796  
1797  <div class="inc-content-container">
1798    <div class="button-row">
1799      <div></div>
1800      <div>
1801        <a class="default-button" href="/">Schritt zurück</a>
1802      </div>
1803    </div>
1804
1805
1806    
1807    <div class="inc-cross-selling">
1808      <div class="inc-content-container">
1809        <h2>Weitere Empfehlungen</h2>
1810      </div>
1811      <div class="inc-cross-selling-inner"></div>
1812    </div>
1813
1814    <div class="inc-content-text-container inc-content-container-reset-background">
1815      <div class="inc-content-container">
1816        
1817<div class="infobox-voucher-check-content nbg">
1818  <h2></h2>
1819  <div class="infobox-voucher-check-content-inner">
1820    
1821  </div>
1822</div>
1823      </div>
1824    </div>
1825
1826    <div class="inc-content-container">
1827      
1828<div id="inc-faq-container">
1829    <div class="inc-content-container">
1830        <h2 class="contentsTopicsStartpage">FAQ</h2>
1831        <div id="inc-faq-accordion" class="accordion faq"></div>
1832    </div>
1833</div>
1834
1835<script>
1836    let filterSection = "voucher_lookup";
1837    let filterProduct = "";
1838    let filterCategory = "";
1839
1840    let filterParentProduct = "";
1841</script>
1841
1842
1843<script>
1844    let faqUrl= "api/frontend/faq";
1845
1846    if(filterSection !== '') faqUrl += "/" + filterSection;
1847    
1848    if(filterParentProduct !== '') faqUrl += "?product=" + filterParentProduct;
1849    else if(filterProduct !== '') faqUrl += "?product=" + filterProduct;
1850    
1851    if(filterCategory !== '' && filterProduct == '') faqUrl += "?category=" + filterCategory;
1852    else if(filterCategory !== '') faqUrl += "&category=" + filterCategory;
1853
1854    $().ready(function() {
1855        getFaqData();
1856    });
1857    async function getFaqData() {
1858        await $.ajax({
1859            url: appendSubShopId(faqUrl),
1860            async: true,
1861            success: (data) => {
1862                if(data.length > 0) {
1863                    //FAQ SCHEMA (SEO)
1864                    const script = document.createElement('script');
1865                    script.setAttribute('type', 'application/ld+json');
1866                    var schemaData = {
1867                        "@context":"https://schema.org",
1868                        "@type":"FAQPage",
1869                        "mainEntity":[]
1870                    };
1871
1872                    //All Questions and answers
1873                    for (let i = 0; i < data.length; i++) {
1874                      let accordionRowButton = `<button type="button" aria-expanded="false" class="accordion-button"
1875                            aria-controls="sect${i}" id="accordion-sect-${i}">${data[i].question}</button>`;
1876
1877                      let accordionRowInner = `<div id="sect${i}" role="region" aria-labelledby="accordion-sect-${i}"
1878                            class="accordion-content" style="height:0;"><div class="accordion-content-inner">${data[i].answer}</div></div>`;
1879                      $('#inc-faq-accordion').append($('<div class="accordion-section"></div>').append(accordionRowButton).append(accordionRowInner));
1880
1881
1882                        //FAQ schema (SEO)s
1883                        schemaData.mainEntity.push({
1884                                "@type":"Question",
1885                                "name":data[i].question,
1886                                "acceptedAnswer": {
1887                                    "@type": "Answer",
1888                                    "text":data[i].answer
1889                    }
1890                        });
1891                    }
1892
1893                    //FAQ schema (SEO)
1894                    script.textContent = JSON.stringify(schemaData);
1895                    document.head.appendChild(script);
1896                } else {
1897                    $('#inc-faq-container').hide();
1898                }
1899            },
1900            error: () => {
1901                console.log('error getting faq');
1902
1903                $('#inc-faq-container').hide();
1904            }
1905        });
1906    }
1907</script>
1907
1908    </div>
1909  </div>
1910
1911  
1912  
1912<script>
1913      window.addEventListener('DOMContentLoaded', function() {
1914          $('.inc-cross-selling-inner').empty();
1915          $('.inc-cross-selling-inner').append('<div id="dynamic-cross-selling"></div>');
1916          let d = new Date();
1917          d = (d.getDate() < 10 ? '0' : '') + d.getDate() + '.' + ((d.getMonth() + 1) < 10 ? '0' : '') + (d.getMonth() + 1) + '.' + d.getFullYear();
1918          if (Array.isArray(cross_selling_data)) {
1919              for (let i of cross_selling_data) {
1920                  eval('object' + i.PRODUCTS_ID + '=undefined;');
1921                  eval('delete(object' + i.PRODUCTS_ID + ');');
1922                  renderProductListItem($('#dynamic-cross-selling'), i, true, d);
1923              }
1924          }
1925          if (!$('#dynamic-cross-selling') || $('#dynamic-cross-selling').is(':empty')) {
1926              $('.inc-cross-selling').hide();
1927          } else {
1928              $('.inc-cross-selling').show();
1929              $('#dynamic-cross-selling').slick({
1930                  infinite: false,
1931                  slidesToShow: 4,
1932                  slidesToScroll: 1,
1933                  rows: 1,
1934                  dots: false,
1935                  responsive: [
1936                      {
1937                          breakpoint: twoColumnWindowWidth,
1938                          settings: {
1939                              slidesToShow: 2,
1940                              slidesToScroll: 2
1941                          }
1942                      },
1943                      {
1944                          breakpoint: oneColumnWindowWidth,
1945                          settings: {
1946                              slidesToShow: 1,
1947                              slidesToScroll: 1
1948                          }
1949                      }
1950                  ]
1951              });
1952          }
1953      });
1954  </script>
1954
1955
1956
1957  
1958                                
1959
1960                                                    
1961                                                        <section class="inc-section-value-check">
1962                        
1963                    </section>
1964                                                </div>
1965
1966            <!--Footer -->
1967                            <footer>
1968                                                <div class="footer-main-bar">
1969                                    <div class="inner-footer-main-bar inc-content-container cc-clear-padding-top-bottom">
1970                                                                                                                                                                                                            <div class="footer-content-links footer-column">
1971                                                
1972                                            </div>
1973                                                                                <div class="footer-column footer-column-incert-logo">
1974                                            <!-- Incert Logo -->
1975                                            <div class="incert-logo" role="contentinfo" aria-label="author of the website">
1976    <span class="incert-logo-info ">eCommerce-System by</span>
1977        <a target="_blank" href="https://www.incert.at" class="incert-logo-link">
1978        <img class="regular-incert-logo" src="./images/incert-logo.png" alt="INCERT eTourismus GmbH" />
1979        <img class="hover-incert-logo" src="./images/incert-logo-green.png" alt="INCERT eTourismus GmbH hover" aria-hidden="true" />
1980    </a>
1981    </div>                                        </div>
1982                                    </div>
1983                                </div>
1984
1985                </footer>
1986                    </div>
1987
1988<script type="text/javascript" src="./templates/qwk/t1/javascript/localization/datepicker-de.js"></script>
vendor: 1 bytes, line 1988
1988
1989<script>
1990  let lightboxImages = [];
1991  let lightboxContent = [];
1992</script>
1992
1993<div id="inc-lightbox" class="inc-lightbox-overlay inc-lightbox-close">
1994
1995    <div class="inc-lightbox-inner">
1996        <button class="inc-lightbox-switch inc-prev" disabled></button>
1997        <button class="inc-lightbox-close"></button>
1998        <h3 class="inc-lightbox-header"></h3>
1999        <div class="inc-lightbox-content"></div>
2000
2001        <div class="inc-cart-info">
2002            <p class="inc-lightbox-message"></p>
2003            <div class="inc-lightbox-buttons">
2004                <button class="inc-lightbox-close">weitere Artikel</button>
2005                <div><a role="button" href="https://gutscheine.cafe-wien.at/warenkorb">zur Kasse</a></div>
2006            </div>
2007        </div>
2008
2009        <button class="inc-lightbox-switch inc-next" disabled></button>
2010    </div>
2011</div>
2012
2013<script type="text/html" id="inc-lightbox-reference">
2014    <div class="inc-lightbox-overlay inc-lightbox-close"></div>
2015    <div class="inc-lightbox-inner">
2016        <button class="inc-lightbox-close"></button>
2017        <div class="inc-cart-info">
2018            <p class="inc-lightbox-message">Message</p>
2019            <div class="inc-lightbox-buttons">
2020                <button class="inc-lightbox-close">weitere Artikel</button>
2021                <div><a role="button" href="https://gutscheine.cafe-wien.at/warenkorb">zur Kasse</a></div>
2022            </div>
2023        </div>
2024    </div>
2025</script>
2025
2026
2027    
2027<script>var CURRENT_TEMPLATE = "qwk/t1";</script>
2027
2028    
2028<script>
2029        var $meta = $("<meta>").attr("name", "viewport").attr("content", "width=device-width");
2030        $("head").append($meta);
2031    </script>
2031
2032    
2033    
2033<script>
2034        //Systeme die in FB integriert sind und wenn man dort im Warenkorb auf "Bestellen" klickt,
2035        //dass man weitergeleitet wird in ein neues Fenster und nicht in FB
2036        if (window.parent.testFacebook && window.parent.testFacebook() == "true") {
2037            $().ready(function () {
2038                $("body").addClass("facebook");
2039                $(".total_sum_buttons div.button a.buttonLink").click(function () {
2040
2041                    window.open("?gotocat=checkout", "_blank");
2042                    window.location.href = "index.php";
2043
2044                    return false;
2045                });
2046            });
2047        }
2048    </script>
2048
2049     
2049<script>
2050    (function()
2051    {
2052        var div = document.createElement('DIV');
2053            div.setAttribute('style', 'display:none;');
2054            div.innerHTML = '<iframe id="inneriframe" width="1" height="1"></iframe>';
2055            document.body.appendChild(div);
2056    })();
2057     </script>
2057 </body> </html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.