CINXE.COM
H Rewards Voucher - H Rewards Gutscheine – Jetzt online kaufen
<!DOCTYPE html> <html dir="ltr" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="robots" content="index,follow" /> <meta name="language" content="en" /> <meta name="author" content="Steigenberger Hotels AG" /> <meta name="publisher" content="Steigenberger Hotels AG" /> <meta name="company" content="H Rewards" /> <meta name="page-topic" content="H Rewards Gutscheine – Jetzt online kaufen" /> <meta name="reply-to" content="" /> <meta name="distribution" content="global" /> <meta name="revisit-after" content="5" /> <link rel="apple-touch-icon" sizes="57x57" href="https://shop.hrewards.com/templates/sth/favicon/apple-icon-57x57.png"> <link rel="apple-touch-icon" sizes="60x60" href="https://shop.hrewards.com/templates/sth/favicon/apple-icon-60x60.png"> <link rel="apple-touch-icon" sizes="72x72" href="https://shop.hrewards.com/templates/sth/favicon/apple-icon-72x72.png"> <link rel="apple-touch-icon" sizes="76x76" href="https://shop.hrewards.com/templates/sth/favicon/apple-icon-76x76.png"> <link rel="apple-touch-icon" sizes="114x114" href="https://shop.hrewards.com/templates/sth/favicon/apple-icon-114x114.png"> <link rel="apple-touch-icon" sizes="120x120" href="https://shop.hrewards.com/templates/sth/favicon/apple-icon-120x120.png"> <link rel="apple-touch-icon" sizes="144x144" href="https://shop.hrewards.com/templates/sth/favicon/apple-icon-144x144.png"> <link rel="apple-touch-icon" sizes="152x152" href="https://shop.hrewards.com/templates/sth/favicon/apple-icon-152x152.png"> <link rel="apple-touch-icon" sizes="180x180" href="https://shop.hrewards.com/templates/sth/favicon/apple-icon-180x180.png"> <link rel="icon" type="image/png" sizes="16x16" href="https://shop.hrewards.com/templates/sth/favicon/favicon-16x16.png"> <link rel="icon" type="image/png" sizes="32x32" href="https://shop.hrewards.com/templates/sth/favicon/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="96x96" href="https://shop.hrewards.com/templates/sth/favicon/favicon-96x96.png"> <link rel="icon" type="image/png" sizes="192x192" href="https://shop.hrewards.com/templates/sth/favicon/android-icon-192x192.png"> <meta name="msapplication-TitleImage" content="https://shop.hrewards.com/templates/sth/favicon/ms-icon-144x144.png"> <link rel="alternate" hreflang="de" href="https://shop.hrewards.com/wertgutscheine" /> <link rel="alternate" hreflang="en" href="https://shop.hrewards.com/en/value-vouchers" /> <link rel="alternate" hreflang="x-default" href="https://shop.hrewards.com/en/value-vouchers" /> <meta property="product:price:currency" content="EUR" /> <meta property="og:title" content="H Rewards Voucher" /> <meta property="og:description" content="Give away unique moments with the H Rewards voucher." /> <meta property="og:image" content="https://shop.hrewards.com/templates/sth/images/product_images/info_images/122_ai_en_0.jpg" /> <meta property="og:image:url" content="https://shop.hrewards.com/templates/sth/images/product_images/info_images/122_ai_en_0.jpg" /> <meta property="og:image:secure_url" content="https://shop.hrewards.com/templates/sth/images/product_images/info_images/122_ai_en_0.jpg" /><meta property="og:image" content="https://shop.hrewards.com/templates/sth/images/product_images/info_images/122_ai_en_0.jpg" /> <meta name="description" content="Give away unique moments with the H Rewards voucher." /> <meta name="keywords" content="" /> <title>H Rewards Voucher - H Rewards Gutscheine – Jetzt online kaufen</title> <link rel="canonical" href="https://shop.hrewards.com/en/value-vouchers"/> <meta name="google-site-verification" content="rm2dK4fowjLC3gznXCRbKfdRZ5nb8uNyV7vTlfn5N3Q" /> <!-- Copyright (c) 2000-2020 etracker GmbH. All rights reserved. --> <!-- This material may not be reproduced, displayed, modified or distributed --> <!-- without the express prior written permission of the copyright holder. --> <!-- etracker tracklet 5.0 --> <script> var et_seg1 = "sth"; var et_seg2 = "ecom"; </script> <script id="_etLoader" data-block-cookies="true" data-respect-dnt="true" data-secure-code="OXELj9" src="//code.etracker.com/code/e.js" async></script> <!-- etracker tracklet 5.0 end --> <script> // Definition des Produkt-Objekts var product = { id : 122, name : "Voucher", category : [], price : "0.0000", currency : "EUR", variants : {} }; function _etrackerOnReady() { // direkter Aufruf etCommerce.sendEvent('viewProduct', product, 'Warenkorb 1') ; console.log('[INCERT] eTracker: "viewProduct" fired', product); } </script> <base href="https://shop.hrewards.com/" /> <link rel="stylesheet" type="text/css" href="templates/sth/t1/stylesheet.css?v=164"/> <link rel="stylesheet" type="text/css" href="templates/sth/t1/overlay.css"/> <script> // init CookieHandler in global namespace var CookieHandler; !function (w, d) { "use strict"; /** {Object} */ var COOKIE_SUPPORT = {"device":null,"version":"","isSafari":false,"isMobile":false,"browser":null,"sameSiteSupport":true,"isFbAppBrowser":false}, /** * * @param v * @returns {boolean} * @private */ _bool = function (v) { if(typeof v === "string" && v.toUpperCase() === "FALSE") { return false; } return !!v; } /** * * @param v * @returns {boolean} * @private */ , _defined = function (v) { return typeof v !== "undefined"; } ; /** * * @type {{get: CookieHandler.get, set: CookieHandler.set, remove: CookieHandler.remove}} */ CookieHandler = { TEST_COOKIE_NAME : "__COOKIE_HANDLER_TEST_COOKIE__", TEST_COOKIE_VALUE : "TRUE", cookieSuccess : null, /** * get all cookies or cookie value by name * @param name {string} * @returns {*} */ get : function (name) { var cookies = document.cookie.split(/\s*;\s*/) // array with cookie strings (name=value) , i // iterator number , t // temporary array containing name and value ([name, value]) , r = {} // result object ; for(i = 0; i < cookies.length; i++) { t = cookies[i].split("="); t[0] = decodeURIComponent(t[0]); t[1] = decodeURIComponent(t[1]); r[t[0]] = t[1]; if(name && t[0] === name) { return t[1]; } } return r; }, /** * sets cookie and adds default flags if not given * @param name {string} * @param value {string} * @param s {object} * object containing the settings i.e. * { * path : "/", * domain : "example.com", * expires : 86400, // seconds till expiration date (will be converted to date string) * SameSite: "none", * secure : true * } * @returns {string|boolean} */ set : function (name, value, s) { var parts, i, cookieStr, remove = false; // prepare value and name // .get() will always return a string value = value.toString(); name = name.toString(); s = s || {}; parts = [encodeURIComponent(name) + "=" + encodeURIComponent(value)]; if(!_defined(s.SameSite) && document.location.protocol === 'https:') { // Safari turns any SameSite flag into strict => solution: do not add it if(COOKIE_SUPPORT.sameSiteSupport === true) { s.SameSite = "none"; } if(!_defined(s.secure)) { s.secure = true; } } for(i in s) { switch(i) { case "expires": if(s[i] < 0) { remove = true; } s[i] = (new Date(Date.now()+(s[i] * 1000))).toGMTString(); break; case "secure": if(_bool(s[i])) { s[i] = ""; } else { delete s[i]; } break; case "path": case "domain": case "SameSite": default: break; } if(_defined(s[i])) { parts.push(i + (s[i] ? "=" + s[i] : "")); } } cookieStr = parts.join("; "); document.cookie = cookieStr; if(remove === false && this.get(name) !== value) { console.error("Cookiehandler.set() failed to set cookie with string \"" + cookieStr + "\""); this.cookieSuccess = false; return false; } console.info("CookieHandler.set() set cookie with string %c\"" + cookieStr + "\"", "color: #50B000; text-decoration: underline;"); this.cookieSuccess = true; return cookieStr; }, /** * remove cookie by name (sets expiration date 1 minute in the past) * @param name * @returns {*} */ remove : function (name) { return this.set(name, "", {expires : -60}); }, /** * * @returns {null|boolean} */ test : function () { // check if cookie was already set successfully if(this.cookieSuccess !== null) { return this.cookieSuccess; } // set test cookie if(this.set(this.TEST_COOKIE_NAME, this.TEST_COOKIE_VALUE)) { // remove test cookie this.remove(this.TEST_COOKIE_NAME); return true; } return false; }, /** * prints help to console */ help : function () { var nl = "\n", tb = "\t", lines = [ "CookieHandler.get([name]) {...}" , tb + "Returns cookie value by name." , tb + "Returns object with key => values if no name given." , "" , "CookieHandler.set(name, value[, s]) {...}" , tb + "Sets the cookie with name and value." , tb + "The third parameter s(ettings) is optional." , tb + "Returns false on error." , tb + "Some settings may be applied by default (SameSite=none; secure)" , tb + "example:" , tb + "{" , tb + " path : \"/\"," , tb + " domain : \"example.com\"," , tb + " expires : 86400, // seconds till expiration date (will be converted to date string)" , tb + " SameSite: \"none\"," , tb + " secure : true" , tb + "}" , "" , "CookieHandler.remove(name) {...}" , tb + "Removes cookie by setting its expiration date 1 minute into the past." , "" , "CookieHandler.test() {...}" , tb + "Sets (and removes) a test cookie and returns true on success and false on error." , "" , "CookieHandler.help() {...}" , tb + "Prints help to console." ]; console.info("%c" + lines.join(nl), "color: #888888;"); } }; } (window, document); </script> <script> var selected; var submitter = null; function submitFunction() { submitter = 1; } function popupWindow(url) { 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') } function selectRowEffect(object, buttonSelect) { if (!selected) { if (document.getElementById) { selected = document.getElementById('defaultSelected'); } else { selected = document.all['defaultSelected']; } } if (selected) selected.className = 'moduleRow'; object.className = 'moduleRowSelected'; selected = object; } function rowOverEffect(object) { if (object.className == 'moduleRow') object.className = 'moduleRowOver'; } function rowOutEffect(object) { if (object.className == 'moduleRowOver') object.className = 'moduleRow'; } // Für Checkout Prozess function selectRowEffectCheckoutP(object, buttonSelect) { if (selected) selected.className = 'moduleRowCheckout'; object.className = 'moduleRowSelectedCheckout'; selected = object; } function selectRowEffectCheckout(object, buttonSelect) { if (!selected) { if (document.getElementById) { selected = document.getElementById('defaultSelected'); } else { selected = document.all['defaultSelected']; } } if (selected) { selected.className = 'moduleRowCheckout'; var oldPayment = $(selected).find(":radio").attr("value"); if(selected !== object) { $("#subDiv_"+oldPayment).slideUp(function() { crossDomainIframeResize(false); }); } } object.className = 'moduleRowSelectedCheckout'; selected = object; $(object).find(":radio").attr("checked", "checked"); var payment = $(object).find(":radio").attr("value"); $("#subDiv_"+payment).slideDown(function() { crossDomainIframeResize(false); }); //remove subselection if (typeof subSelected !== "undefined" && subSelected) { subSelected.className = 'moduleSubRowCheckout'; } } function rowOverEffectCheckout(object) { if (object.className == 'moduleRowCheckout') object.className = 'moduleRowOverCheckout'; } function rowOutEffectCheckout(object) { if (object.className == 'moduleRowOverCheckout') object.className = 'moduleRowCheckout'; } // ENDE // Für Checkout Prozess im Administrationsbereich (ROX) function selectRowEffectCheckoutROX(object, buttonSelect) { if (!selected) { if (document.getElementById) { selected = document.getElementById('defaultSelected'); } else { selected = document.all['defaultSelected']; } } if (selected) selected.className = 'moduleRowCheckout_rox'; object.className = 'moduleRowSelectedCheckout_rox'; selected = object; } function rowOverEffectCheckoutROX(object) { if (object.className == 'moduleRowCheckout_rox') object.className = 'moduleRowOverCheckout_rox'; } function rowOutEffectCheckoutROX(object) { if (object.className == 'moduleRowOverCheckout_rox') object.className = 'moduleRowCheckout_rox'; } // ENDE function optimizeSizeSelectbox() { var inputSize = $(":text").eq(-1).outerWidth(); var webbrowser = jQuery.browser; var sizeEdit = 0; chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; if(inputSize > 20) { $("select").css("width", inputSize + sizeEdit); } } // ENDE function popupImageWindow(url) { 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') } </script> <script> if (top === self && "" != ''){ function iCheckWebsiteRedirect() { window.location = ""; } if(typeof jQuery == "undefined" || false === false) { iCheckWebsiteRedirect(); } else { jQuery.ajax({ url: "logoff.php?action=ajax", success: function() { iCheckWebsiteRedirect(); }, error: function() { iCheckWebsiteRedirect(); }, async: false }); } } </script> <script type="text/javascript" src="./templates/sth/t1/javascript/libs/jquery/jquery.js"></script> <script type="text/javascript" src="./templates/sth/t1/javascript/libs/jquery-ui/jquery-ui.js"></script> <script type="text/javascript" > function strpos (haystack, needle, offset) { // Finds position of first occurrence of a string within another var i = (haystack+'').indexOf(needle, (offset ? offset : 0)); return i === -1 ? false : i; } var prevHeight = 0, alreadyJumped = false; function crossDomainIframeResize(jumpToNavtrailAnchor, jumpOffset) { var iframe = document.getElementById( 'inneriframe' ); if (typeof jumpOffset == "undefined") jumpOffset = 0; // webkit browsers (safari,chrome) provide wrong scrollHeight so get only offsetHeight ### 10_215 ### var height = $("#navtrail_anchor").height(); //var height = document.body.offsetHeight; if (height != prevHeight || jumpToNavtrailAnchor) { prevHeight = height; if(height == 0) { height = 1800; } if (window.parent != window) { try { if(window.parent.updateIFrame) window.parent.updateIFrame(height,''); } catch (e) { //console.warn("not embedded in start.php"); } try { var navtrailJumpOffset = parseInt(window.getComputedStyle(document.getElementById("navtrail_anchor")).marginTop) + jumpOffset; //if (typeof console !== "undefined") { // console.warn("ResizeIframe url is not configured. Fallback to postMessge-API."); //} if (!alreadyJumped || jumpToNavtrailAnchor) { window.top.postMessage(["Inc.updateIFrame", height, true, navtrailJumpOffset], "*"); alreadyJumped = true; } else { window.top.postMessage(["Inc.updateIFrame", height], "*"); } } catch (e) { console.error(e); } } else { $("body").addClass("standalone"); } } } $().ready(function() { crossDomainIframeResize(true); }); $(window).on("load", function() { setTimeout(function() {crossDomainIframeResize(true) }, 300); crossDomainIframeResize(true); $(window).resize(function() { if (crossDomainResizeHandler) clearTimeout(crossDomainResizeHandler); crossDomainResizeHandler = setTimeout(function() {crossDomainIframeResize(false) }, 300); }); }); </script> <script> let currentLanguageCode = 'en'; let url = new URL(window.location.toString()); let hostname = url.host.replaceAll('.', '_'); let pathname = url.pathname.replace('/en/', '/').replaceAll('/', '.').slice(1); let contentId = hostname + '.' + pathname; if(url.pathname === '/') { contentId = hostname + '.home'; } else { switch(pathname) { case 'warenkorb': case 'shoppingcart': contentId = hostname + '.warenkorb'; break; case 'checkout-daten': case 'checkout-shop': contentId = hostname + '.booking.1-checkout'; break; case 'checkout-confirmation': case 'checkout-ueberpruefung': contentId = hostname + '.booking.2-ueberpruefen'; break; case 'checkout-success': case 'checkout-bestaetigung': contentId = hostname + '.booking.3-confirmation'; break; default: contentId = hostname + '.wertgutscheine.wertgutschein'; break; } } let trackingGermanProductName = "Wertgutschein".toLowerCase().replaceAll(' ', '_').replaceAll(/ß/g, 'ss').replaceAll(/[^a-zA-Z0-9_]/g,''); contentGroupArray = contentId.split('.'); window._ti = window._ti || {}; window._ti['contentId'] = contentId; window._ti['contentGroup'] = { 1: contentGroupArray[0], 2: contentGroupArray[1] ?? '', 3: contentGroupArray[2] ?? '', 4: '', 5: '', 6: '', 7: '', 8: '', 20: contentGroupArray[contentGroupArray.length - 1] }; window._ti['customParameter'] = { 2: currentLanguageCode, }; window._tiConfig = window._tiConfig || { tiDomain: 'responder.wt-safetag.com', tiId: '799063125692038', option: {} }; (function(a,d,c,f){a.wts=a.wts||[];var g=function(b){var a="";b.customDomain&&b.customPath?a=b.customDomain+"/"+b.customPath:b.tiDomain&&b.tiId&&(a=b.tiDomain+"/resp/api/get/"+b.tiId+"?url="+encodeURIComponent("https://"+d.location.host+"/")+"&v=5");if(b.option)for(var c in b.option)a+="&"+c+"="+encodeURIComponent(b.option[c]);return a};if(-1===d.cookie.indexOf("wt_r=1")){var e=d.getElementsByTagName(c)[0];c=d.createElement(c);c.async=!0;c.onload=function(){if("undefined"!==typeof a.wt_r&&!isNaN(a.wt_r)){var b= new Date,c=b.getTime()+1E3*parseInt(a.wt_r);b.setTime(c);d.cookie="wt_r=1;path=/;expires="+b.toUTCString()}};c.onerror=function(){"undefined"!==typeof a.wt_mcp_hide&&"function"===typeof a.wt_mcp_hide.show&&(a.wt_mcp_hide.show(),a.wt_mcp_hide.show=function(){})};c.src="//"+g(f);e.parentNode.insertBefore(c,e)}})(window,document,"script",_tiConfig); </script> <!-- xtc_get_shop_analytics_code --> <script> // Input Replacement function textReplacement(input){ var originalvalue = input.val(); input.focus( function(){ if( $.trim(input.val()) == originalvalue ){ input.val(''); } }); input.blur( function(){ if( $.trim(input.val()) == '' ){ input.val(originalvalue); } }); } // FIX SAFARI THIRD PARTY COOKIE PROBLEM if (window.top != window) { // wenn in iframe if (navigator.userAgent.indexOf("Safari") >= 0 && navigator.userAgent.indexOf("Chrome") == -1) { // und der Browser ist safari var safariCookieFirstPartySaved = false; var safariPopupFunc = function (event) { var target; if (document.cookie.indexOf("safari_third_cookie=1") == -1 && (!localStorage || (localStorage && localStorage.getItem("safari_third_cookie") !== "1"))) { // only ONCE // find target of click event target = event.target || event.srcElement; if(target.nodeType === 3) { target = target.parentNode; } CookieHandler.set("safari_third_cookie", "1"); try { localStorage.setItem("safari_third_cookie", "1"); } catch(e) { console.log("localStorage could not be written"); } if (!safariCookieFirstPartySaved) { var safariCookieUrl = "https://shop.hrewards.com/safari_third_party.php"; var safariPopup = window.open(safariCookieUrl); if (safariPopup) { safariPopup.blur(); window.focus(); } else { if (console) console.log("Safari Third Party Fix probably blocked by popup blocker."); } safariCookieFirstPartySaved = true; } // check for file input and // use preventDefault to stop file dialog in Safari if(target && target.nodeName === 'INPUT' && target.type === 'file') { event.preventDefault(); return false; } } window.removeEventListener('click', safariPopupFunc); }; window.addEventListener('click', safariPopupFunc); // $(window).one('click', safariPopupFunc); } } </script> <script type="text/javascript"> !function(w, d) { "use strict"; /** * @type Array */ var localStorageWhitelist = []; /** * * @param name * @param whitelist * @param getResult * @returns {boolean} */ var whitelistCheck = function (name, whitelist, getResult) { if(whitelist.indexOf(name) === -1) { if(getResult) { return false; } throw "\"" + name + "\" not whitelisted! whitelist: " + whitelist.join(", "); } return true; }; /** * * @type {} * object containing functions that can be called from outside */ var Inc = { setLocalStorage : function (name, value) { whitelistCheck(name, localStorageWhitelist); localStorage.setItem(name, value); } , removeLocalStorage : function (name) { whitelistCheck(name, localStorageWhitelist); localStorage.removeItem(name); } , consentManager : { /** * accept/reject single service and it's cookies * @param name * @param value */ set : function (name, value) { if(typeof klaroManager === "undefined") return console.error("klaroManager undefined!"); klaroManager.updateConsent(name, !!value); klaroManager.saveAndApplyConsents(); } /** * reset service to default * @param name */ , reset : function (name) { if(typeof klaroManager === "undefined") return console.error("klaroManager undefined!"); if(name) { this.set(klaroManager.getDefaultConsent(name)); return; } klaroManager.resetConsents(); klaroManager.saveAndApplyConsents(); } /** * accept/reject all services and their cookies that match given purpose * @param purpose * @param value */ , setByPurpose : function (purpose, value) { if(typeof klaroManager === "undefined") return console.error("klaroManager undefined!"); var services = klaroManager.config.services, i; for(i = 0; i < services.length; i++) { if(services[i].purposes.indexOf(purpose) !== -1) { this.set(services[i].name, value); } } klaroManager.saveAndApplyConsents(); } /** * accept/reject all services and their cookies that are optional * @param value */ , setByOptional : function ( value ) { if(typeof klaroManager === "undefined") return console.error("klaroManager undefined!"); var services = klaroManager.config.services, i; for(i = 0; i < services.length; i++) { if(services[i].required === false) { this.set(services[i].name, value); } } klaroManager.saveAndApplyConsents(); } /** * alias for this.setByOptional() * @param value * @returns {void | undefined} */ , setAll : function ( value ) { return this.setByOptional ( value ); } } }; w.incTest = Inc; // listen for postMessage event w.addEventListener("message", function (event) { var funcName, args, rawName, returnValue, funcArr, tempFunc, i; // check data-type switch(({}).toString.call(event.data).replace(/^\[\w+ |\]$/g,"").toUpperCase()) { // array case "ARRAY": args = event.data; rawName = args.shift(); funcName = rawName.replace(/^inc(ert)?\./i, ""); funcArr = funcName.split("."); // check if function name is prefixed with Inc. or Incert. if(funcName === rawName) { return; } tempFunc = Inc; // search in IncertClass instance for( i = 0; i < funcArr.length; i++) { if(!tempFunc[funcArr[i]]) { break; } if(i === (funcArr.length -1)) { // apply args to function with appropriate context returnValue = tempFunc[funcArr[i]].apply(tempFunc, args); console.info("\"" + rawName + "\" called successfully!; arguments:", args, "; returnValue:", returnValue); return; } tempFunc = tempFunc[funcArr[i]]; } throw "\"" + rawName + "\" is not defined"; break; default: break; } }); } (window, document); </script> </head> <body class="body" onload="crossDomainIframeResize();"> <script> var oneColumnWindowWidth = parseInt("600") || 400, twoColumnWindowWidth = parseInt("767") || 640, respDropSidebarWindowWidth = parseInt("800") || 800, voucherSliderItemMargin = ((parseInt("20") || 20) / 2), listingSpecialCountdownFormat = "" | "%DT %Hh %Mm %Ss"; //Thumbs Voucher Slider Settings (see slick-init.js) var voucherSliderShowArrows = ("1" == "1") || false, voucherSliderShowDots = ("" == "1") || false, voucherSliderCenterMode = ("" == "1") || false, voucherSliderItemsToShowMobile = parseInt("") || 1, voucherSliderItemsToShowTablet = parseInt("") || 3, voucherSliderItemsToShowDesktop = parseInt("") || 5; var currentCurrencySymbol = "\u20ac"; </script> <script type="text/javascript" src="./templates/sth/t1/javascript/live.min.js?v=164"></script> <div class="body-inc " id="navtrail_anchor"> <!--Header --> <header class="inc-header sticky" id="inc-header"> <div class="inc-header-inner"> <div class="box-header"> <a href="https://shop.hrewards.com/en" class="header-logo" > <img src="templates/sth/images/exp_logo.jpg" alt="home" /> </a> <a class="customer-website" href="" target="_blank"> <span class="icon-sphere" aria-hidden="true"></span> <span class="website-url hidden-xs" >to the website</span> </a> </div> <div class="inc-navigation-container show-page-navigation "> <ul class="inc-shop-navi"> <div class="language-switch"> <div class="dropdown"> <button class="active-dropdown-element" aria-label="Choosen Language" onclick="toggleClass()">English</button> <ul class="dropdown-options"> <li> <a href="https://shop.hrewards.com/wertgutscheine" aria-label="Deutsch"> Deutsch </a> </li> </ul> </div> </div> <script> function toggleClass(){ $(".inc-shop-navi .language-switch .dropdown").toggleClass('opened'); $(".language-switch-mobile .dropdown").toggleClass('opened'); } </script> <li class="inc-nav-item"> <a class="inc-nav-link inc-nav-cart inc-modal-control" href="https://shop.hrewards.com/en/shoppingcart" data-toggle="modal-cart"> <div class="inc-nav-cart-inner"> <i class="im icon-shopping-cart" aria-hidden="true"></i> <span class="inc-nav-link-caption"> Voucher Basket</span> <span id="inc-cartItemCount" class="empty">0</span> </div> </a> <div class="inc-modal-menu inc-nav-cart" id="modal-cart"> <!-- cart has no content --> <div class="infobox infobox-cart"> <h3>Shopping Cart</h3> <div class="infobox-cart-content empty"> You do not have any products in your shopping cart yet. </div> </div> </div> </li> </ul> </div> </div> <div class="inc-header-inner-sub" id="inc-subnavi"> <a href="https://hrewards.com/en" target="_blank"class="header-sub-logo"> <img src="./templates/sth/t1/img/header/header-logo.svg"> </a> <div class="inc-navigation-container show-page-navigation "> <ul class="inc-page-navigation" role="navigation"> <li> <a href="https://hrewards.com/en/find-a-hotel" target="_blank" class="header-nav-item">Hotel search</a> </li> <li> <a href="https://hrewards.com/en/hotel-deals" target="_blank" class="header-nav-item">Offers</a> </li> <li> <a href="https://hrewards.com/en/meeting-event" target="_blank" class="header-nav-item">Meeting & Event</a> </li> <li> <a href="https://hrewards.com/en/loyalty" target="_blank" class="header-nav-item">About H Rewards</a> </li> <li class="only-mobile"> <a class="header-nav-item" href="https://shop.hrewards.com/en/value-vouchers">Value Voucher</a> </li> <li class="only-mobile"> <a class="header-nav-item" href="https://shop.hrewards.com/en/hotelspecific-vouchers">Hotel individual vouchers</a> </li> <li class="border-top"> <div class="language-switch-mobile"> <div class="language-switch"> <div class="dropdown"> <button class="active-dropdown-element" aria-label="Choosen Language" onclick="toggleClass()">English</button> <ul class="dropdown-options"> <li> <a href="https://shop.hrewards.com/wertgutscheine" aria-label="Deutsch"> Deutsch </a> </li> </ul> </div> </div> <script> function toggleClass(){ $(".inc-shop-navi .language-switch .dropdown").toggleClass('opened'); $(".language-switch-mobile .dropdown").toggleClass('opened'); } </script> </div> </li> </ul> <button type="button" id="navigation-toggle-responsive"> <span></span> <span></span> <span></span> </button> <script src="./templates/sth/t1/javascript/header-mobile.js"></script> </div> </div> <div class="inc-header-inner-categories"> <div class="inc-navigation-container"> <ul class="inc-page-navigation"> <li class="only-mobile"> <a class="header-nav-item" href="https://shop.hrewards.com/en/value-vouchers">Value Voucher</a> </li> <li class="only-mobile"> <a class="header-nav-item" href="https://shop.hrewards.com/en/hotelspecific-vouchers">Hotel individual vouchers</a> </li> </ul> </div> </div> </header> <noscript> <div class="inc-error-box center" role="alert"> JavaScript must be enabled in order for you to use this shop in standard view. However, it seems JavaScript is either disabled or not supported by your browser. To use standard view, enable JavaScript by changing your browser options. </div> </noscript> <!--Sidebar --> <!--Content --> <div class="content-inc " role="main"> <!-- Breadcrumbs / Navtrail and Wizard --> <div class="navtrail"> <div class="inc-content-container cc-reset-padding-top-bottom"> <a href="https://shop.hrewards.com/en" class="headerNavigation">Startpage</a> » <a href="https://shop.hrewards.com/en/value-vouchers" class="headerNavigation">Voucher</a> </div> </div> <!-- DISPLAY_CATEGORIES_WITH_PRODUCTS --> <script type="text/javascript" src="./templates/sth/t1/javascript/libs/jquery-validation/jquery-validation.js"></script> <script type="text/javascript" src="./templates/sth/t1/javascript/localization/messages_en.js"></script> <script type="text/javascript" src="./templates/sth/t1/javascript/value-card.js"></script> <script type="text/javascript" src="./templates/sth/t1/javascript/libs/jquerytools/overlay.js"></script> <script type="text/javascript" src="./templates/sth/t1/javascript/charCounter.js"></script> <script> var voucher_paper_size = {"format_name":"a4","x":0,"y":0,"w":210,"h":297}; var current_template_path = "./templates/sth/t1"; var overlayWidth = parseInt("600") || 600; </script> <script> var voucher_print_positions = {}; </script> <script> var voucher_print_positions = {"text":[{"x":11.851318103599484,"y":67.01289998324678,"w":75.8484358630367,"h":13.402579996649354,"correctedX":0.11904673721993596,"correctedY":0.6734004844555318,"correctedW":0.7618991182075902,"correctedH":0.13468009689110635,"area_name":"text_1","default_videos":[]}]};</script> <div class="overlay_vv" id="overlay"> <div id="container"> <div id="img_container"> <img src="" alt=""> </div> </div> <div id="ajax_loading"></div> </div> <script src="./templates/sth/t1/javascript/advanced-personalization.js"></script> <input type="hidden" name="products_theme" value="" /> <form id="cart_quantity" action="https://shop.hrewards.com/en/value-vouchers?action=add_product" method="post" onsubmit="return checkTotal();"> <div class="product-info value-voucher"> <div class="inc-product-info-headline-text inc-content-container "> <div class="inc-product-info-headline" > <h1 class="">Voucher</h1> </div> <div class="product-info-desc "> <p>One voucher - many possibilities: Whether as a gift for a birthday, wedding anniversary or just for fun - personalize your gift according to the category, value or desired motive.<br /> With our large selection of voucher ideas, you will always find the right gift. You will receive the voucher conveniently by e-mail for printing.</p> <div id="blockColorblindContent"><svg id="colorBlindSVG" version="1.1"> <filter id="protanopia"> <fecolormatrix in="SourceGraphic" type="matrix" values="0.567, 0.433, 0, 0, 0, 0.558, 0.442, 0, 0, 0, 0, 0.242, 0.758, 0, 0, 0, 0, 0, 1, 0"></fecolormatrix> </filter> <filter id="protanomaly"> <fecolormatrix in="SourceGraphic" type="matrix" values="0.817,0.183,0,0,0 0.333,0.667,0,0,0 0,0.125,0.875,0,0 0,0,0,1,0"></fecolormatrix> </filter> <filter id="deuteranopia"> <fecolormatrix in="SourceGraphic" type="matrix" values="0.625,0.375,0,0,0 0.7,0.3,0,0,0 0,0.3,0.7,0,0 0,0,0,1,0"></fecolormatrix> </filter> <filter id="deuteranomaly"> <fecolormatrix in="SourceGraphic" type="matrix" values="0.8,0.2,0,0,0 0.258,0.742,0,0,0 0,0.142,0.858,0,0 0,0,0,1,0"></fecolormatrix> </filter> <filter id="tritanopia"> <fecolormatrix in="SourceGraphic" type="matrix" values="0.95,0.05,0,0,0 0,0.433,0.567,0,0 0,0.475,0.525,0,0 0,0,0,1,0"></fecolormatrix> </filter> <filter id="tritanomaly"> <fecolormatrix in="SourceGraphic" type="matrix" values="0.967,0.033,0,0,0 0,0.733,0.267,0,0 0,0.183,0.817,0,0 0,0,0,1,0"></fecolormatrix> </filter> <filter id="achromatopsia"> <fecolormatrix in="SourceGraphic" type="matrix" values="0.299,0.587,0.114,0,0 0.299,0.587,0.114,0,0 0.299,0.587,0.114,0,0 0,0,0,1,0"></fecolormatrix> </filter> <filter id="achromatomaly"> <fecolormatrix in="SourceGraphic" type="matrix" values="0.618,0.320,0.062,0,0 0.163,0.775,0.062,0,0 0.163,0.320,0.516,0,0 0,0,0,1,0"></fecolormatrix> </filter> </svg></div> </div> <input type="hidden" name="product_id" value="122" /> </div> <div class="inc-product-template-selection-container"> <div class="inc-product-template-selection inc-content-container"> <script> var voucherSliderPaperFormat = "portrait" || "portrait"; var voucherSliderInitMinItems = parseInt("") || 2; var voucherSliderItemWidth = parseInt("") || 0; var voucherSliderItemMargin = parseInt("20") || 20; var voucherSliderMinItems = parseInt("") || 2; var voucherSliderMaxItems = parseInt("") || 6; var overlayWidth = parseInt("600") || 800; </script> <!-- Implement Slick Slider --> <script type="text/javascript" src="./templates/sth/t1/javascript/libs/slick/slick.js"></script> <link rel="stylesheet" href="./templates/sth/t1/javascript/libs/slick/slick.css" /><script type="text/javascript" src="./templates/sth/t1/javascript/slick-config/slick-init.min.js"></script> <div class="inc-product-info-slider"> <h2>Select theme</h2> <div class="inc-product-info-slider-container"> <div class="slides inc-product-theme-slider"> <a href="javascript:void(0)" class="single-item" tabindex="0" data-theme-id="5" data-alt-img="1,0"> <div> <img src="templates/sth/images/themes/5_motive_en.jpg" alt=""> <div class="row"> <span class="c9 theme-name">HOTEL</span> <div class="c3"> <span class="cat_select"></span> </div> </div> </div> </a> <a href="javascript:void(0)" class="single-item" tabindex="0" data-theme-id="4" data-alt-img="6"> <div> <img src="templates/sth/images/themes/4_motive_en.jpg" alt=""> <div class="row"> <span class="c9 theme-name">FOR ALL SENSES</span> <div class="c3"> <span class="cat_select"></span> </div> </div> </div> </a> <a href="javascript:void(0)" class="single-item" tabindex="0" data-theme-id="2" data-alt-img="3,2"> <div> <img src="templates/sth/images/themes/2_motive_en.jpg" alt=""> <div class="row"> <span class="c9 theme-name">CULINARY DELIGHTS</span> <div class="c3"> <span class="cat_select"></span> </div> </div> </div> </a> <a href="javascript:void(0)" class="single-item" tabindex="0" data-theme-id="8" data-alt-img="4,5"> <div> <img src="templates/sth/images/themes/8_motive_en.jpg" alt=""> <div class="row"> <span class="c9 theme-name">PRESENT</span> <div class="c3"> <span class="cat_select"></span> </div> </div> </div> </a> <a href="javascript:void(0)" class="single-item" tabindex="0" data-theme-id="6" data-alt-img="8,7"> <div> <img src="templates/sth/images/themes/6_motive_en.jpg" alt=""> <div class="row"> <span class="c9 theme-name">SEASONAL</span> <div class="c3"> <span class="cat_select"></span> </div> </div> </div> </a> </div> </div> </div> <input type="hidden" name="alt_img" value="default"/> <input type="hidden" name="cur_slider_page" id="cur_slider_page" value=""/> <div class="inc-product-info-slider"> <h2>Select voucher template</h2> <div class="inc-product-info-slider-container"> <div class="inc-product-template-slider"> <div class="scrollable"> <div id="thumbs"> <a class="single-item" href="javascript:void(0)" data-alt-img-value="default"> <img src="templates/sth/images/product_images/thumbnail_images/122_en.jpg" alt=""/> </a> <a class="single-item" href="javascript:void(0)" data-alt-img-value="1"> <img src="templates/sth/images/product_images/thumbnail_images/122_en_1.jpg" alt=""/> </a> <a class="single-item" href="javascript:void(0)" data-alt-img-value="2"> <img src="templates/sth/images/product_images/thumbnail_images/122_en_2.jpg" alt=""/> </a> <a class="single-item" href="javascript:void(0)" data-alt-img-value="3"> <img src="templates/sth/images/product_images/thumbnail_images/122_en_3.jpg" alt=""/> </a> <a class="single-item" href="javascript:void(0)" data-alt-img-value="4"> <img src="templates/sth/images/product_images/thumbnail_images/122_en_4.jpg" alt=""/> </a> <a class="single-item" href="javascript:void(0)" data-alt-img-value="5"> <img src="templates/sth/images/product_images/thumbnail_images/122_en_5.jpg" alt=""/> </a> <a class="single-item" href="javascript:void(0)" data-alt-img-value="6"> <img src="templates/sth/images/product_images/thumbnail_images/122_en_6.jpg" alt=""/> </a> <a class="single-item" href="javascript:void(0)" data-alt-img-value="7"> <img src="templates/sth/images/product_images/thumbnail_images/122_en_7.jpg" alt=""/> </a> <a class="single-item" href="javascript:void(0)" data-alt-img-value="8"> <img src="templates/sth/images/product_images/thumbnail_images/122_en_8.jpg" alt=""/> </a> </div> </div> </div> </div> </div> <input type="hidden" id="alt_img_no" name="alt_img_no" value=""> <script type="text/javascript"> $().ready(function() { "use strict"; var texts = [], $vouchertext = $("#vouchertext"), initial = document.querySelector("#vouchertext").value, bManuallyEdited = false, bCKHandlerInitialized = false; var updateVoucherText = function(text) { var editor = null; if (typeof CKEDITOR !== "undefined" && CKEDITOR.instances && CKEDITOR.instances.vouchertext) { editor = CKEDITOR.instances.vouchertext; if (!bCKHandlerInitialized) { editor.on("change", function () { console.log("set MANUALLYEDITED to true"); bManuallyEdited = true; }); bCKHandlerInitialized = true; } } if (editor) { // if empty if(text.replace(/\s+|( )+/g, "") == "") { return; } var defaultStyleElement = document.querySelector('[name=pi_editor_default_style]'); if (defaultStyleElement !== null) { var style = defaultStyleElement.value; // add default style to editor if it wasn't already if (CKEDITOR.config.contentsCss.indexOf(style) < 0) { CKEDITOR.config.contentsCss += ' body{' + defaultStyleElement.value + '}'; } } editor.setData(text, function() { bManuallyEdited = false; console.log("set MANUALLYEDITED to false"); }); } else { $vouchertext.val(text); } initial = text; }; // append existing data texts.push(""); texts.push(""); texts.push(""); texts.push(""); texts.push(""); $('[data-theme-id="5"]').trigger("click"); }); </script> </div> </div> <div class="inc-product-voucher-personalize inc-content-container"> <h2>Personalize individually</h2> <div class="inc-product-voucher-personalize-area"> <div class="cell-package customer-area personalize "> <div class="inc-product-voucher-image personalize" data-loading-text="Loading …" id="giftvoucher"> <div class="product-info-voucher-preview"> <div class="customer-area-image-wrapper"> <div class="customer-area-image2 voucher-area-target"> <a id='zoom1' class="preview_image inc-lightbox" data-type="image" href="templates/sth/images/product_images/info_images/122_ai_en_0.jpg" rel="#overlay"> <img id="preview-image-img" class="preview_image inc-lightbox" src="templates/sth/images/product_images/info_images/122_ai_en_0.jpg" alt="Voucher" title="Preview" /> </a> <input type="hidden" id="preview_thumb_id" name="preview_thumb_id" value=""> <input type="hidden" name="fe_preview" value="1"> </div> </div> <div class="inc-voucher-preview-buttons"> <a class="inc-voucher-preview-button default-button inc-voucher-preview-button-hide-fields" data-hide-text="Hide areas" data-show-text="Show areas" role="button">Hide areas</a> <a class="inc-voucher-preview-button default-button inc-voucher-preview-button-open-overlay " role="button">preview</a> <div class="clearfix"></div> </div> </div> </div> </div> <div class="inc-product-info-personalize-content"> <div class="inc-product-info-personalize-content-inner"> <div class="inc-voucher-services-selection-container"> <div class="inc-voucher-services-selection inc-content-container valuevoucher"> <div class="inputWrapper center"> <div class="inc-error-box" style="display:none"></div> <h3> Set amount</h3> <script src="./templates/sth/t1/javascript/value-select.js"></script> <div class="fieldset voucher-amounts"> <div class="voucher-amount-item"><a class="voucher-amount-button input" href="javascript:void(0);" data-value="50"> 50 EUR</a></div> <div class="voucher-amount-item"><a class="voucher-amount-button input" href="javascript:void(0);" data-value="100"> 100 EUR</a></div> <div class="voucher-amount-item"><a class="voucher-amount-button input" href="javascript:void(0);" data-value="150"> 150 EUR</a></div> <div class="voucher-amount-item"><a class="voucher-amount-button input" href="javascript:void(0);" data-value="250"> 250 EUR</a></div> <div> <span class="voucheramount-input-container"> <span class="currency-left"></span> <input id="voucheramount" class="voucheramount-other" type="number" name="voucheramount-other" placeholder="other amount" value="" min="10" max="10000" aria-label="other amount" /> <span class="currency-right">EUR</span> <label id="voucheramount-error" class="error" style="display: none;"></label> </span> </div> <input type="hidden" name="vv_amount" /> <input type="hidden" name="voucheramount" /> </div> </div> </div> </div> <div class="product-info-personalize"> <button type="button" class="tab-button-mobile text active" aria-controls="section-personalization-text" id="personalization-text" aria-expanded="true"> <b>Message</b><em>Create custom message</em> </button> <div class="tab-content open" id="section-personalization-text" data-tab="personalize_text" role="region" aria-labelledby="personalization-text"> <div class="inputWrapper"> <h3 class="center"><label for="vouchertext" class="full">Message</label></h3> <input type="hidden" name="pi_editor_default_style" value="font-family: ;color: #000000;font-size: 12pt;line-height: 1.2;text-align: center;"/> <textarea id="vouchertext" name="voucher_inclusives" onchange="CKupdate();" onkeyup="CKupdate();" rows="10" cols="10">Take care of yourself… <br>Great pleasure and a relaxing stay!</textarea> <span id="charCount"></span> </div> </div> </div> <div class="inc-error-box" style="display:none"></div> </div> </div> </div> <script type="text/javascript"> var cnt = 0; var optionsArray = new Array(); $().ready(function() { $(".single-product-option").on("mouseover", function () { $(this).find('.tooltip').addClass('show-tooltip'); }).on("mouseout", function () { $(this).find('.tooltip').removeClass('show-tooltip'); }); }); var ajaxHandle; function selectSeason(select,url){ var products_id = document.getElementById("products_id").value; //var url = url +"?products_id="+products_id+"&season="+select.value ; $("#product-options-ajax").addClass("loading"); if (ajaxHandle) ajaxHandle.abort(); ajaxHandle = $.ajax({ url:url, dataType:'text', success:function(data) { //globalData = data; var optionsHtml = data.match(/<\!\-\-OptionsStart\-\->([\s\S]*?)<\!\-\-OptionsEnd\-\->/); var $poa = $("#product-options-ajax"); if (optionsHtml !== null) { var html = optionsHtml[1]; $poa.html(html); $poa.find("input[type=checkbox],input[type=radio]").ezMark(); calculateTotal(); if (typeof crossDomainIframeResize !== "undefined") { crossDomainIframeResize(false); } } $poa.removeClass("loading") } }); } // +++ start error_message functions var error_container_name = "po_form_error"; function poPrintErrorMessage(error_message) { if (typeof showError === "function") { showError(error_message); } else { var error_msg_display_before_elem = $("div#product-options-ajax"); if(error_msg_display_before_elem.length > 0) { check_form_error = $("#"+error_container_name); if(check_form_error.length == 0) { check_form_error = $("<div id='"+error_container_name+"' class='inc-error-box' style='visibility: hidden;'>"+error_message.replace(/\n/g, "<br />")+"</div>").insertAfter(error_msg_display_before_elem); crossDomainIframeResize(false); check_form_error.css({"display": "none", "visibility" : "visible", "clear" : "both", "margin-top" : "5px", "margin-bottom" : "5px"}).slideDown("slow"); } else { check_form_error.html(error_message.replace(/\n/g, "<br />")); crossDomainIframeResize(false); check_form_error.animate({opacity : 0.30}, 250, function() { $(this).animate({opacity : 1}, 700); }); } } else { alert(error_message); } } } function poRemoveErrorMessage() { if (typeof hideError === "function") { hideError(); } else { var error_message_container = $("#" + error_container_name); if (error_message_container.length > 0) { $("#" + error_container_name).slideUp(700, function () { $(this).remove(); }); crossDomainIframeResize(false); } } } // --- end error_message functions /** * * @returns {boolean} */ function checkOptionQuantities () { "use strict"; var containers = document.querySelectorAll("#options_div .product-options-container") , container , inputs , buttons , min , max , name , i , x , total ; for(i = 0; i < containers.length; i++) { container = containers[i]; inputs = container.querySelectorAll("input[type='number'][name^='id']"); buttons = container.querySelectorAll("BUTTON"); min = parseInt(container.getAttribute("data-min")); max = parseInt(container.getAttribute("data-max")); name = container.getAttribute("data-option-name"); total = 0; for(x = 0; x < inputs.length; x++) { total += parseInt(inputs[x].value); } if((min !== 0 && (total < min || isNaN(total))) || (max !== 0 && total > max)) { setTimeout(function(){ var values = [name, min, max, total]; poPrintErrorMessage("For %s, choose between %d and %s options. (%d selected)".replace(/%(s|d)/g, function(m){return (values.shift()||m).toString()})); },0); return false; } } return true; } function checkTotal(){ var total = calculateTotal(); if(total <= 0){ poPrintErrorMessage("The voucher cannot be added to your shopping basket because you have not yet selected any services. \n\n Please select at least one service for your voucher."); return false; } else { return checkOptionQuantities(); } } function isset() { var a=arguments, l=a.length, i=0; if (l===0) { throw new Error('Empty isset'); } while (i!==l) { if (typeof(a[i])=='undefined' || a[i]===null) { return false; } else { i++; } } return true; } function calculateTotal(event){ // ### 11_011 ### if (typeof event !== "undefined") { var keyCode = event.which; if (keyCode == undefined) { keyCode = event.keyCode; } } var priceTotal = 0; var multiPrice = 1; var priceTotal = parseFloat(document.getElementById("productsPrice").value) || 0; for (var i = 0; i < optionsArray.length; ++i){ var counter = 1; while (counter <= optionsArray[i]["count"]){ var optqty = 0; if(optionsArray[i]["typ"] == "text"){ var pov_id = document.getElementById("id["+optionsArray[i]["id"]+"]["+counter+"][val]").value; var searchId = "id["+optionsArray[i]["id"]+"]["+counter+"][anz]"; optqty = parseFloat(document.getElementById(searchId).value); } else{ if(optionsArray[i]["typ"] == "radio"){ var pov_id = document.getElementById("id["+optionsArray[i]["id"]+"]["+counter+"]").value; if(document.getElementById("id["+optionsArray[i]["id"]+"]["+counter+"]").checked == true){ optqty = 1; } else { optqty = 0; } } if(optionsArray[i]["typ"] == "checkbox"){ var pov_id = document.getElementById("id["+optionsArray[i]["id"]+"]["+counter+"][val]").value; if(document.getElementById("id["+optionsArray[i]["id"]+"]["+counter+"][val]").checked == true) { optqty = 1; } else { optqty = 0; } } if (optionsArray[i]["typ"] == "packaging") { var pov_id = document.getElementById("id[" + optionsArray[i]["id"] + "][" + counter + "]").value; if (document.getElementById("id[" + optionsArray[i]["id"] + "][" + counter + "]").checked == true) { optqty = 1; } else { optqty = 0; } } } var price = 0; price = parseFloat(document.getElementById("id["+optionsArray[i]["id"]+"]["+counter+"][price]").value) || 0; if(document.getElementById("id["+optionsArray[i]["id"]+"]["+counter+"][prefix]").value == '*') { if(optqty <= 0) { // ### 11_011 ### if(keyCode != 13) { poPrintErrorMessage('The entered amount must be greater than 0!'); } } else { if(optqty > 0) { multiPrice = multiPrice * parseInt( optqty ); } } } else { if(optqty >= 0) { if(document.getElementById("id["+optionsArray[i]["id"]+"]["+counter+"][prefix]").value == '-') { priceTotal -= price * optqty; } else { priceTotal += price * optqty; } } } counter++; } } var $voucheramount = $("[name=voucheramount]") var value = parseFloat($voucheramount.val()); if(parseInt( multiPrice ) != 0) { priceTotal = parseFloat( priceTotal ) * parseInt( multiPrice ); } if ($voucheramount.length && value) { priceTotal = priceTotal + value; } if (priceTotal > 0) { poRemoveErrorMessage(); } priceTotal = priceTotal || 0; $('#inc-tracking-hidden-total-price').val(priceTotal); document.getElementById("price_total").innerHTML = " " + kaufm(priceTotal) + " EUR"; return priceTotal; } var bFirst = true; function kaufm(x) { var k = (Math.round(x * 100) / 100).toString(); k += (k.indexOf('.') == -1)? '.00' : '00'; var p = k.indexOf('.'); return k.substring(0, p) + ',' + k.substring(p+1, p+3); } </script> <input type="hidden" aria-hidden="true" id="inc-tracking-hidden-total-price" value="0"/> <div class="inc-content-container"> </div> <script type="text/javascript" src="./templates/sth/t1/javascript/quantity-toggle.js"></script> <div class="inc-content-container"> <div id="product-options-ajax" class="product-options"> <!--OptionsStart--> <script> optionsArray = [];cnt=0;</script> <input type="hidden" id="productsPrice" value="0" /> <input type="hidden" id="products_id" value="122" /> <div class="product-options-container"> </div> <div id="options_div"> </div> <div class="product-options-sum"> <div class="sum-label">Total:</div> <div id="price_total">0</div> </div> <script type="text/javascript"> // Use radio inputs for options of multiple products like options for one single product // IMPORTANT elements get selected by attribute selectType="packaging" function changeRadInput(event, inputs){ var target = event.currentTarget || event.srcElement; for(var i=0;i<inputs.length;i++){ if(inputs[i] != target){ inputs[i].checked = false; inputs[i].parentNode.className = 'ez-radio'; } } updateShippingSelect(); } var radInputs = document.querySelectorAll("[selectType=packaging]"); for(var i=0;i<radInputs.length;i++){ radInputs[i].onchange = function(event){changeRadInput(event, radInputs);}; } calculateTotal(); $().ready(function() { $(".packaging-image>.inc-lightbox").click(function (e) { window.showImageLightbox($(this).attr("href")); return false; }); }); </script> <!--OptionsEnd--> </div> </div> <div class="inc-voucher-button-full-container" aria-hidden="true"> <div class="product-info-buttons button-row"> <div class="product-info-qtn-container"> <div class="product-info-qtn "> <label>Amount: </label> <input type="number" name="products_qty" value="1" size="1" maxlength="2" id="products_qty" /> <input type="hidden" name="products_id" value="122"/> <select class="product-info-qty-dropdown"></select> <script> $(document).ready(()=>{ for(let i = 1; i < 100; i++) $(".product-info-qtn > .product-info-qty-dropdown").append(`<option value="${i}">${i}</option>`) $(".product-info-qtn > .product-info-qty-dropdown").on("change", ()=>{ $("input[name=products_qty]").val($(".product-info-qtn > .product-info-qty-dropdown").val()); }); }); </script> </div> <div class="product-info-qtn-button"> <div class="buttonSpan"><input type="submit" value="Into cart" class="button call-to-action page-navigation " title="Into cart " /></div> </div> </div> <div class="button-back"> <div class="button"><a class="buttonLink" href="https://shop.hrewards.com/en"><span>home</span></a></div> </div></div> </div> </div> </div> </form> <!--Javascript for personalisation --> <script type="text/javascript" src="./templates/sth/t1/javascript/youtubeAPI/personalisierung_InsertShowHideElements.min.js"></script> <script src="media/ckeditor/ckeditor.js"></script> <script src="media/ckeditor/config.js"></script> <!-- Add tracking --> <script type="text/javascript" src="./templates/sth/t1/tracking/add-cart-tracking.js"></script> <script type="text/javascript" > var activeOverlay = "1"; var max_width = parseInt($('#navtrail_anchor').css("maxWidth")); var voucher_min_amount = parseFloat("10"); var voucher_max_amount = parseFloat("10000") || 0; var voucher_min_text = "* The amount has to be at least EUR 10."; var voucher_max_text = "* The amount must be less than 10000 €"; var voucher_max_textlength = parseInt("350") || 0; var voucher_max_headerlength = parseInt("350") || 0; var VOUCHER_MAX_TEXTHEIGHT = "The entered text is too high."; var COUNTER_TEXT_TOO_LONG = "The entered text is too long."; var COUNTER_TEXT_CHARS_LEFT = "characters left"; var TEXTAREA_MAX_HEIGHT = parseInt("40") || 400; var TEXTAREA_MAX_WIDTH = parseInt("160") || 220; var TEXTAREA_FONT_SIZE = parseInt("12") || 11; var VOUCHER_CUSTOMIZE_ANGLE = 0; var disableUpdatePreviewImg = false ; window.languageCode = "en"; var inputTimeoutHandler = setTimeout(function() { updatePreviewImage(); }, 0); var HeightWarningError = false; $().ready(function() { if (!$("#preview-image-img").prop("complete")) { $("#preview-image-img").bind("load error", function() { $(".inc-product-voucher-image").removeClass("load"); }); } $('.inc-voucher-preview-button.inc-voucher-preview-button-open-overlay').click(function() { $("a.preview_image").trigger("click"); return false; }); $(".inc-product-voucher-personalize-tab").click(function() { var $this = $(this); var $li = $this.parent(); var $tab = $(".tab-content").filter("[data-tab='"+$this.data("tab")+"']"); if ($tab.length) { $li.siblings().removeClass("active"); $li.addClass("active"); $tab.siblings(".tab-content").removeClass("open"); $tab.siblings(".tab-button-mobile").removeClass("active").attr("aria-expanded", "false"); $tab.addClass("open"); $tab.prev(".tab-button-mobile").addClass("active").attr("aria-expanded", "true"); } if (crossDomainResizeHandler) clearTimeout(crossDomainResizeHandler); crossDomainResizeHandler = setTimeout(function() { crossDomainIframeResize(false); },500); }); if (typeof init_ckeditor_with_fonts !== "undefined") { // Additional CSS for CKEditor can be added here via JS var default_style = document.getElementsByName('pi_editor_default_style')[0]; if(typeof(default_style) != 'undefined'){ //default_style.value = default_style.value+"line-height:120%;font-size: " + TEXTAREA_FONT_SIZE + "px;"; //CKEDITOR.config.contentsCss += ' body{line-height:120%;font-size: ' + TEXTAREA_FONT_SIZE + 'px;} '; } // replace textarea with editor and load fonts var prevVouchertext = ""; if($('#vouchertext').length) { prevVouchertext = $('#vouchertext').value; } init_ckeditor_with_fonts('vouchertext', function() { // reload preview image onchange if (CKEDITOR.instances.vouchertext) { CKEDITOR.instances.vouchertext.on("change", function (e) { if (inputTimeoutHandler) clearTimeout(inputTimeoutHandler); if (typeof CKupdate == "function") CKupdate(); inputTimeoutHandler = setTimeout(function () { var vouchertext = CKEDITOR.instances.vouchertext.getData(); if (vouchertext !== prevVouchertext) { prevVouchertext = vouchertext; updatePreviewImage(); } }, 2337); }); } else { console.error("vouchertext is not in CKEDITOR.instances:"); console.log(CKEDITOR.instances); } $("#vouchertext").css("display","none"); // HEIGHT CHECK (function(_w, _d) { "use strict"; var displayTestBox = false, dpi = 100, // zoom font in editor without increasing font size fontZoomFactor = 1, ckContainer = _d.querySelector("#cke_1_contents"), frame = ckContainer.querySelector("iframe"), docFrame = frame.contentDocument, ckBody = docFrame.body, inputDefaultStyle = _d.querySelector("input[name=pi_editor_default_style]"), testBox = _d.createElement("DIV"), heightWarning = _d.createElement("DIV"), charCountField = _d.getElementById("charCount"), dpiTest = _d.createElement("DIV"), stripTags = function (html) { return html.replace(/<\/?([a-z][a-z0-9]*)\b[^>]*>/gi, ""); }, ucFirst = function (str) { return str.charAt(0).toUpperCase() + str.slice(1); }, xBrowserStyle = function (o, a, v) { var m = ["webkit", "moz", "o", "ms", ""], i; for(i = 0; i < m.length; i++) { o[m[i] + (i === m.length -1 ? a : ucFirst(a))] = v; } }, checkEditorHeight, rect; // make fonts appear bigger without changing html if(fontZoomFactor !== 1) { xBrowserStyle(ckBody.style, "transformOrigin", "0 0"); rect = ckBody.getBoundingClientRect(); ckBody.style.width = (~~ (rect.width / fontZoomFactor)) + "px"; xBrowserStyle(ckBody.style, "transform", "scale(" + fontZoomFactor + ")"); } // additional ckBody styling ckBody.style.wordWrap = "break-word"; charCountField.style.display = "none"; // try to get dpi of screen dpiTest.setAttribute("style", "height: 1in; left: -100%; position: fixed; top: -100%; width: 1in;"); _d.body.appendChild(dpiTest); dpi = dpiTest.offsetWidth || dpi; _d.body.removeChild(dpiTest); // set max-width and height with DPI TEXTAREA_MAX_WIDTH = ~~((TEXTAREA_MAX_WIDTH * dpi) / 25.4); TEXTAREA_MAX_HEIGHT = ~~((TEXTAREA_MAX_HEIGHT * dpi) / 25.4); // append height warning heightWarning.id = "heightWarning"; heightWarning.innerHTML = "<span>" + VOUCHER_MAX_TEXTHEIGHT + "</span>"; heightWarning.style.display = "none"; // apply before charCountField if count field is given if(typeof charCountField !== "undefined") { ckContainer.parentNode.parentNode.parentNode.insertBefore(heightWarning, charCountField); } else { ckContainer.parentNode.parentNode.parentNode.appendChild(heightWarning); } // append testBox testBox.setAttribute("class", "print-area-size-testBox"); testBox.setAttribute("style", ""); _d.body.appendChild(testBox); // timeout for other styles to take action before calculations setTimeout(function() { testBox.style = inputDefaultStyle.value; var css = _d.defaultView.getComputedStyle(ckBody, null); testBox.style.fontSize = css.fontSize; testBox.style.fontFamily = css.fontFamily; testBox.style.letterSpacing = css.letterSpacing; testBox.style.color = css.color; testBox.style.wordWrap = css.wordWrap; testBox.style.wordBreak = css.wordBreak; testBox.style.textAlign = css.textAlign; testBox.style.top = "100%"; testBox.style.left = "100%"; testBox.style.position = "fixed"; testBox.style.opacity = "0"; testBox.style.width = TEXTAREA_MAX_WIDTH + "px"; testBox.style.height = "auto"; // For testing if(displayTestBox) { testBox.style.top = "0"; testBox.style.left = "0"; testBox.style.opacity = "1"; } }, 0); checkEditorHeight = function(event) { setTimeout(function() { var tooManyChars = false, charsLeft; if(typeof charCountField !== "undefined") { charsLeft = voucher_max_textlength - stripTags(ckBody.innerHTML).length; // make sure no negative numbers are shown if(charsLeft < 0) charsLeft = 0; // replace number in text with number of chars left charCountField.innerHTML = charCountField.innerHTML.replace(/[0-9]+/, charsLeft); } // add innerHTML to testBox testBox.innerHTML = ckBody.innerHTML; // check if the actual height of the ckBody is bigger than defined in the settings if(testBox.offsetHeight > (TEXTAREA_MAX_HEIGHT) || tooManyChars === true) { heightWarning.style.display = "block"; HeightWarningError = true; } else { heightWarning.style.display = "none"; HeightWarningError = false; } }, 0); }; checkEditorHeight(); $("#cke_1_top").click(checkEditorHeight); $(ckBody).keydown(checkEditorHeight); }) (window, document); }); } updateOverlayImage(); $("a.preview_image.inc-lightbox").click(function(e) { if(activeOverlay) window.showImageLightbox($("#zoom1").attr("href")); return false; }); if ($(".value-card-back").length > 0) { $(".preview_image").addClass("hasBack"); } $(".cell-package.customer-area.value-card").mousedown(function(e) { if (e.which == 1) { if ($(".value-card-back").length > 0) { var $this = $(this); $this.find(".preview_image").toggleClass("flipped"); } } return false; }).click(function() { return false; }); $("input[disabled]").removeAttr("disabled"); $(".inc-product-voucher-image").addClass("load"); $(document).on("change input", "#cart_quantity input:not([type=file]), #cart_quantity textarea", function() { if (inputTimeoutHandler) clearTimeout(inputTimeoutHandler); inputTimeoutHandler = setTimeout(function () { updatePreviewImage(); }, 2337); }); $('#cart_quantity').submit(function() { triedFormSubmit=true; }); $('#cart_quantity').validate({ ignore:".optional", submitHandler:function(form) { if (validateVoucheramount() && checkTotal()) { let currentThemeObject = $(".inc-product-theme-slider").find(".single-item.slick-current").find(".theme-name")[0]; let currentThemeName = ''; if(currentThemeObject) { currentThemeName = currentThemeObject.innerText.toLowerCase().replaceAll(/ß/g, 'ss').replaceAll(/[^a-zA-Z0-9_]/g,''); } else { currentThemeName = ''; } if(isInstanceArrayFilled()){ $(".product-info-cart-button").addClass("loading") .find("input[type=submit]").attr("disabled", "disabled"); uploadImages(function () { $(".product-info-cart-button").removeClass("loading") .find("input[type=submit]").removeAttr("disabled"); if(typeof clickAddCartProductInfo === 'function') { clickAddCartProductInfo(trackingGermanProductName,'', currentThemeName); } form.submit(); }); } else { if(typeof clickAddCartProductInfo === 'function') { clickAddCartProductInfo(trackingGermanProductName,'', currentThemeName); } form.submit(); } } else { return false; } } }); $("[name=voucheramount]").bind("input",function() { if (typeof checkTotal !== "undefined") { checkTotal(); } if (triedFormSubmit) { validateVoucheramount(); } }).bind("blur", function() { if (this.value != "" || triedFormSubmit) { triedFormSubmit = true; //not really tried submission, but validation state is the same validateVoucheramount(); } }); if (typeof charCounter !== "undefined") { $("#vouchertext").bind("propertychange input keyup", function() { charCounter('vouchertext',voucher_max_textlength, 'charCount'); }); charCounter('vouchertext',voucher_max_textlength, 'charCount'); } var customVideoLinkTimeoutHandler; function resetVideoSettings() { //Reset all Video Settings var cnv = $(".video-qrcode canvas")[0]; var ctx = cnv.getContext("2d"); ctx.clearRect(0,0,cnv.width, cnv.height); $(".video-preview").slideUp(); $('.default-videos').slideUp().find('.ez-radio.ez-selected').removeClass('ez-selected'); $('.dropzone.video').removeClass("has-video").html(""); } $('.reset-video-settings').bind("click", function() { resetVideoSettings(); }); $("[name^=custom_video_link],[name^=default_video]").bind("input click", function() { var that = this; var $that = $(that); var area_name = this.name.match(/\[([^\[\]]+)\]$/)[1]; var $dropzone = $(".dropzone.video[data-area-name='" + area_name + "']"); if (customVideoLinkTimeoutHandler) clearTimeout(customVideoLinkTimeoutHandler); $that.parent().addClass('ez-selected'); customVideoLinkTimeoutHandler = setTimeout(function() { if (that.value !== "") { var url = that.value; if ($that.is("[name^=default_video]") && (url.indexOf("http") !== 0 && url.indexOf("//") !== 0 ) ) { url = "https://www.youtube.com/v/" + url; } var $videoPreview = $(".video-preview[for='"+area_name+"']"); var $qrcode = $videoPreview.find(".video-qrcode"); $qrcode.attr("href", url); var $canvas = $qrcode.find("canvas"); var ctx = $canvas[0].getContext("2d"); ctx.beginPath(); ctx.rect(0, 0, 400, 400); ctx.fillStyle = "white"; ctx.fill(); $canvas.qrcode({ text:url, ecLevel:'M', background:"#ffffff", size:360, left:20, top:20, }); var smallCanvas = cloneCanvas($canvas[0]); $dropzone.addClass("has-video").html(smallCanvas); var videoId = youtube_parser(url); addYoutubeThumbnailImages(videoId, area_name); //getVideoDetails(url); $(".video-preview[for='"+area_name+"']").slideDown(); $(".video-preview[for='"+area_name+"']").find(".youtube-preview-header").slideUp(); } else { var $canvas = $(".video-qrcode[for='"+area_name+"'] canvas"); var cnv = $canvas[0]; var ctx = cnv.getContext("2d"); ctx.clearRect(0,0,cnv.width, cnv.height); $dropzone.removeClass("has-video").html(""); $(".video-preview[for='"+area_name+"']").slideUp(); } }, 500); }); }); function generateUUID(){ var d = new Date().getTime(); if(w.performance && typeof w.performance.now === "function"){ d += performance.now(); //use high-precision timer if available } var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = (d + Math.random()*16)%16 | 0; d = Math.floor(d/16); return (c=='x' ? r : (r&0x3|0x8)).toString(16); }); return uuid; } function cloneCanvas(oldCanvas) { //create a new canvas var newCanvas = document.createElement('canvas'); var context = newCanvas.getContext('2d'); //set dimensions newCanvas.width = oldCanvas.width; newCanvas.height = oldCanvas.height; //apply the old canvas to the new one context.drawImage(oldCanvas, 0, 0); //return the new canvas return newCanvas; } var triedFormSubmit=false; var ajaxHandler; var ajaxRunning = false; var repeatRequestTimeout; var imageWidth= 0,imageHeight=0; function updatePreviewImage(openOverlay){ if (!disableUpdatePreviewImg || disableUpdatePreviewImg == false) { if (!ajaxRunning) { var $imgContainer = $(".inc-product-voucher-image"); var t_height = $imgContainer.height(); var t_width = $imgContainer.width(); $imgContainer.addClass("load"); var previewAction = ""; var $form=$("#cart_quantity"); var additionalData = ""; var voucheramount = 0; var $voucheramount = $("[name=voucheramount]"); if ($voucheramount.length) { voucheramount = parseFloat($("[name=voucheramount]").val().replace(",",".")) || 0; if (voucheramount > 0) { additionalData += "&vv_amount=" + voucheramount; } } var products_id = $("#products_id").val(); var postData = $form.serialize() + additionalData; var img_quality = "&w=640&d=200&q=100&mode=fe";; var rand = parseInt( Math.random()*393939); var sub_shop_parameter = ""; ajaxRunning = true; ajaxHandler = $.post("voucher_preview.php?product_id="+products_id+"&render=no&preview="+rand+img_quality + sub_shop_parameter, postData, function(data,status,xhr){ ajaxRunning=false; if (xhr.status == 200) { var url = "voucher_preview.php?mode=fe&cache_img=true&gen=no&product_id="+products_id+"&oID=prev"+img_quality+"&d=200&preserve_img_height=1&preview="+rand; $("#preview-image-img").on("load",function() { $imgContainer.height("").width(""); $imgContainer.removeClass("load"); $("#zoom1").attr("href", url).attr("original-href", url); if (activeOverlay == "1") { $(".preview_image.inc-lightbox").attr("href", url); $("#overlay img").attr("src", url); } if (typeof updateOverlayImage !== "undefined") updateOverlayImage(); $(window).trigger("resize"); }).attr("src", url); } else { if (repeatRequestTimeout) clearTimeout(repeatRequestTimeout); repeatRequestTimeout = setTimeout(function() { updatePreviewImage() }, 2337); // try again after ...seconds } }); } else { if (repeatRequestTimeout) clearTimeout(repeatRequestTimeout); repeatRequestTimeout = setTimeout(function() { updatePreviewImage() }, 2337); // try again after ...seconds if (ajaxHandler) ajaxHandler.abort(); ajaxRunning = false; } } } var prevThumbId = ""; function updateOverlayImage() { var callback_triggered = false; getCustomVoucherImageBase64(function(canvas) { var base64_src = canvas.toDataURL("image/jpeg"); if (canvas && canvas.width > 0 && canvas.height > 0 && typeof resampleCanvas !== "undefined") { var thumbCanvas = resampleCanvas(canvas, 1/(canvas.width/100)); var thumb_image =thumbCanvas.toDataURL("image/jpeg"); if(typeof localStorage !== "undefined") { try { if (prevThumbId) { localStorage.removeItem("thumb_" + prevThumbId); } var thumbId = generateUUID(); localStorage.setItem("thumb_" + thumbId, thumb_image); prevThumbId = thumbId; $("#preview_thumb_id").val(thumbId); } catch(e) { console.error(e); } } } // preload image for immediate first draw var img = document.createElement("img"); img.src = base64_src; $("#zoom1").attr("href", base64_src); }); } function getCustomImages() { if (typeof window.pictureDropzoneObjects !== "object") { // Skip if picture dropzones aren't initialized return []; } var $custom_images = $(".dropzone.picture"); var custom_images = []; $custom_images.each(function(index) { var pictureDropzoneObject = window.pictureDropzoneObjects[index]; if (!pictureDropzoneObject.isCropped()) { // Skip image if it isn't cropped return; } var my_print_positions = voucher_print_positions.picture[index]; var left = parseFloat(my_print_positions.correctedX) * 100; var top = parseFloat(my_print_positions.correctedY) * 100; var width = my_print_positions.correctedW * 100; var height = my_print_positions.correctedH * 100; var data = pictureDropzoneObject.toDataURL(); if (data) { var img = document.createElement("img"); img.src = data; custom_images.push({ top: top, left: left, width: width, height: height, src: data, img: img }); } }); return custom_images; } function getCustomVideos() { var $customVideos = $(".video-qrcode"); var custom_videos = []; $customVideos.each(function(index) { var $this = $(this); var $canvas = $this.find("canvas"); var base64_src = $canvas[0].toDataURL("image/png"); var img_elem = document.createElement("img"); img_elem.src = base64_src; var my_print_positions = voucher_print_positions.video[index]; var left = parseFloat(my_print_positions.x); var top = parseFloat(my_print_positions.y); var width = my_print_positions.w; var height = my_print_positions.h; var cust_vid = { top:top, left:left, width:width, height:height, src:base64_src, img:img_elem} custom_videos.push(cust_vid); }); return custom_videos; } var dropzone_scale = 5; function getCustomVoucherImageBase64(callback) { var img = new Image(); var $zoom = $("#zoom1"); var original_href = $zoom.attr("original-href") || $zoom.attr("href"); if (original_href && original_href != "#") img.src = original_href; if (img.complete) { var canvas = document.createElement("canvas"); canvas.width = img.width; canvas.height = img.height; var ctx = canvas.getContext("2d"); ctx.drawImage(img, 0, 0); var custom_images = getCustomImages(); var custom_images_to_load = custom_images.length; var custom_videos = getCustomVideos(); var custom_videos_to_load = custom_videos.length; if (custom_images.length) { for (var x = 0; x < custom_images.length; x++) { var cust_img = custom_images[x]; var left = img.width * cust_img.left / 100; var top = img.height * cust_img.top / 100; var wRatio = cust_img.width / 100; var hRatio = cust_img.height / 100; var width = img.width * wRatio; var height = img.height * hRatio; if (cust_img.complete) { ctx.drawImage(cust_img.img, left, top, width, height); custom_images_to_load -= 1; if (custom_images_to_load == 0 && custom_videos_to_load == 0) { if (callback) callback(canvas); } } else { (function (cust_img, left, top, width, height) { var myCustImg = cust_img; $(cust_img.img).one("load", function () { custom_images_to_load -= 1; var img_canvas = document.createElement("canvas"); img_canvas.width = width * dropzone_scale; // myCustImg.width * wRatio; img_canvas.height = height * dropzone_scale; // myCustImg.height * hRatio; var img_ctx = img_canvas.getContext("2d"); img_ctx.drawImage(myCustImg.img, 0, 0, width * dropzone_scale, height * dropzone_scale); if (myCustImg.height > 0) { var resizedCanvas = resampleCanvas(img_canvas, 1 / dropzone_scale); ctx.drawImage(resizedCanvas, left, top, width, height); } if (custom_images_to_load == 0 && custom_videos_to_load == 0) { if (callback) callback(canvas); } }); })(cust_img, left, top, width, height); } } } else { if (custom_videos_to_load == 0) { if (callback) callback(canvas); } } if (custom_videos.length) { for (var x = 0; x < custom_videos.length; x++) { var cust_img = custom_videos[x]; var left = img.width * cust_img.left / 100; var top = img.height * cust_img.top / 100; var width = img.width * cust_img.width / 100; var height = img.height * cust_img.height / 100; if (cust_img.complete) { ctx.drawImage(cust_img.img, left, top, width, height); custom_videos_to_load -= 1; if (custom_images_to_load == 0 && custom_videos_to_load == 0) { if (callback) callback(canvas); } } else { (function (cust_img, left, top, width, height) { var myCustImg = cust_img; $(cust_img.img).one("load", function () { custom_videos_to_load -= 1; var img_canvas = document.createElement("canvas"); img_canvas.width = myCustImg.width * dropzone_scale; img_canvas.height = myCustImg.height * dropzone_scale; var img_ctx = img_canvas.getContext("2d"); img_ctx.drawImage(myCustImg.img, 0, 0, myCustImg.width * dropzone_scale, myCustImg.height * dropzone_scale); if (myCustImg.height > 0) { var resizedCanvas = resampleCanvas(img_canvas, width / (myCustImg.width * dropzone_scale)); ctx.drawImage(resizedCanvas, left, top, width, height); } if (custom_images_to_load == 0 && custom_videos_to_load == 0) { if (callback) callback(canvas); } }); })(cust_img, left, top, width, height); } } } else { if (custom_images_to_load == 0) { if (callback) callback(canvas); } } } } function validateVoucheramount() { var $voucheramount = $("[name=voucheramount]"); if ($voucheramount.length) { var voucheramount = parseFloat($voucheramount.val().replace(",",".")); if (voucheramount >= voucher_min_amount) { if (voucher_max_amount == 0 || voucheramount <= voucher_max_amount) { $voucheramount.removeClass("error"); hideError(); return true; } else { $voucheramount.addClass("error"); showError(voucher_max_text); return false; } } else { $voucheramount.addClass("error"); showError(voucher_min_text); return false; } } else { return true; // field not there ... no invalid amount possible } } function showError(msg) { var $errorBox = $(".inc-error-box"); if ($errorBox.length == 0) { $errorBox = $("<div>").addClass("inc-error-box").insertBefore($(".product-info-buttons.button-row, .inc-voucher-services-selection")).hide(0); } $errorBox = $(".inc-error-box"); $errorBox.html(msg).slideDown(); if (typeof scrollToElement == "function") { scrollToElement($errorBox.first()); } } function hideError() { var $errorBox = $(".inc-error-box"); $errorBox.slideUp(function() { $(this).remove(); }) } </script> <script> var dropzone_add_text = 'Enter message'; var dropzone_add_picture = 'upload image'; var dropzone_add_picture_img = 'upload image '; var dropzone_add_picture_upload = ''; var dropzone_add_video = 'Video'; </script> <script> var triedFormSubmit=false; var $form = $('#cart_quantity'); $form .change(function() { if (typeof calculateTotal == "function") calculateTotal(); }); </script> <script> $().ready(function() { let arguments; arguments = { product: 'wertgutschein', productStatus: 'view', customEcommerceParameter: { 4: '122' }, productCategory: { 1: 'wertgutschein', 3: '', 4: 'wertgutschein' } }; let viewEvent = new CustomEvent("wts_event", { bubbles: !0, detail: ["send", "page", arguments] }); document.dispatchEvent(viewEvent); console.log('[Converlytics-Mapp-Intelligence] view', arguments); }); </script> </div> <!--Footer --> <footer> <div class="inc-footer-wrapper"> <div class="footer-top-bar"> <div class="inner-footer-top-bar inc-content-container cc-reset-padding-top-bottom"> <div class="flex-item"> <span class="icon-advantage-secure-payment"></span> <div class="flex-item-text"> Secure<br>Payment </div> </div> <div class="flex-item mobile-hidden"> <span class="icon-advantage-present"></span> <div class="flex-item-text"> High quality<br>gift ideas </div> </div> <div class="flex-item mobile-hidden"> <span class="icon-advantage-personalize"></span> <div class="flex-item-text"> Personalization<br>with text, image </div> </div> <div class="flex-item"> <span class="icon-advantage-digital"></span> <div class="flex-item-text"> Digital Shipping<br>or Storage </div> </div> </div> </div> <div class="footer-top-logo-wrapper"> <a href="https://hrewards.com/en" target="_blank"class="footer-logo"> <img src="./templates/sth/t1/img/footer/footer-logo.svg"> </a> </div> <div class="footer-main-bar"> <div class="inner-footer-main-bar inc-content-container cc-clear-padding-top-bottom"> <div class="footer-contact"> <div class="infobox"> <strong>Steigenberger Hotels GmbH</strong><br /> Lyoner Straße 25<br /> 60528 Frankfurt am Main<br /> Deutschland </div> </div> <div class="footer-payment"> <div class="infobox infobox-payment nbg"> <div class="infobox-payment-content"> <strong>Pay at shop.hrewards.com using:</strong><br /> <p><img alt="" src="/images/payment_icons/payicon_s_mastercard.png" style="font-size:12px; height:33px; width:80px" /><img alt="" src="/images/payment_icons/payicon_s_visa.png" style="font-size:12px; height:33px; width:80px" /> <img alt="" src="/images/payment_icons/payicon_s_paypal.png" style="font-size:12px; height:33px; width:80px" /></p> </div> </div> </div> <div class="footer-content-links"> <div class="incert-logo" role="contentinfo" aria-label="author of the website"> <span class="incert-logo-info white">eCommerce-System by</span> <a target="_blank" href="http://www.incert.at" class="incert-logo-link"> <img class="regular-incert-logo" src="./images/incert-logo-white.png" alt="INCERT eTourismus GmbH" /> <img class="hover-incert-logo" src="./images/incert-logo-green.png" alt="INCERT eTourismus GmbH hover" aria-hidden="true" /> </a> </div> <div class="infobox infobox-more"> <h3>More about...</h3> <div class="infobox-content-left"> <ul class="content-links"><li><a class="content_link" href="https://shop.hrewards.com/en/redemption"> Redemption</a></li><li><a class="content_link" href="https://shop.hrewards.com/en/revocation-clause"> Revocation clause</a></li><li><a class="content_link" href="https://shop.hrewards.com/en/general-terms-and-conditions"> General terms and conditions</a></li><li><a class="content_link" href="https://hrewards.com/en/legal/data-protection" target="_blank">Data protection</a></li><li><a class="content_link" href="https://hrewards.com/en/legal/imprint" target="_blank">Imprint</a></li><li><a class="content_link" href="https://shop.hrewards.com/en/contact"> Contact</a></li></ul> </div> </div> </div> </div> </div> <div class="footer-bottom-bar text-center"> <!-- Incert Logo --> </div> </div> </footer> </div> <script type="text/javascript" src="./templates/sth/t1/javascript/localization/datepicker-en.js"></script> <div id="inc-lightbox" class="inc-lightbox-overlay inc-lightbox-close"> <div class="inc-lightbox-inner"> <button class="inc-lightbox-switch inc-prev" disabled></button> <button class="inc-lightbox-close"></button> <h3 class="inc-lightbox-header"></h3> <div class="inc-lightbox-content"></div> <div class="inc-cart-info"> <p class="inc-lightbox-message"></p> <div class="inc-lightbox-buttons"> <button class="inc-lightbox-close">more vouchers</button> <div><a role="button" href="https://shop.hrewards.com/en/shoppingcart">checkout</a></div> </div> </div> <button class="inc-lightbox-switch inc-next" disabled></button> </div> </div> <script type="text/html" id="inc-lightbox-reference"> <div class="inc-lightbox-overlay inc-lightbox-close"></div> <div class="inc-lightbox-inner"> <button class="inc-lightbox-close"></button> <div class="inc-cart-info"> <p class="inc-lightbox-message">Message</p> <div class="inc-lightbox-buttons"> <button class="inc-lightbox-close">more vouchers</button> <div><a role="button" href="https://shop.hrewards.com/en/shoppingcart">checkout</a></div> </div> </div> </div> </script> <script>var CURRENT_TEMPLATE = "sth/t1";</script> <script> var $meta = $("<meta>").attr("name", "viewport").attr("content", "width=device-width"); $("head").append($meta); </script> <script> //Systeme die in FB integriert sind und wenn man dort im Warenkorb auf "Bestellen" klickt, //dass man weitergeleitet wird in ein neues Fenster und nicht in FB if (window.parent.testFacebook && window.parent.testFacebook() == "true") { $().ready(function () { $("body").addClass("facebook"); $(".total_sum_buttons div.button a.buttonLink").click(function () { window.open("?gotocat=checkout", "_blank"); window.location.href = "index.php"; return false; }); }); } </script> <script> // When the user scrolls the page, execute myFunction window.onscroll = function() {stickyFunction()}; var subnavi = document.getElementById("inc-subnavi"); var header = document.getElementById("inc-header"); // Get the offset position of the sidebar var stickySubnavi = subnavi.offsetTop; function stickyFunction() { if (window.pageYOffset > stickySubnavi) { header.classList.add("scroll"); /*$( ".inc-header-inner" ).slideUp( "slow", function() { });*/ } else { header.classList.remove("scroll"); /*$( ".inc-header-inner" ).slideDown( "slow", function() { });*/ } } </script> <script> (function() { var div = document.createElement('DIV'); div.setAttribute('style', 'display:none;'); div.innerHTML = '<iframe id="inneriframe" width="1" height="1"></iframe>'; document.body.appendChild(div); })(); </script> </body> </html>