1<!DOCTYPE html> 2<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> 3<head> 4 <link rel="canonical" href="https:///book/product/gift-voucher/559" /> 5 6 <!-- Google Tag Manager --> 7
7<script>
vendor: 341 bytes, lines 7-12
7 8 (function(w,d,s,l,i){ w[l]=w[l]||[];w[l].push({ 'gtm.start': 9 new Date().getTime(),event:'gtm.js' });var f=d.getElementsByTagName(s)[0], 10 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 11 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 12 })(window,document,'script','dataLayer','
12GTM-NC7DX9L
vendor: 5 bytes, lines 12-13
12'); 13
13</script>
13 14 <!-- End Google Tag Manager --> <!-- Facebook Pixel Code --> 15
15<script>
vendor: 421 bytes, lines 15-24
15 16 !function(f,b,e,v,n,t,s) 17 { if(f.fbq)return;n=f.fbq=function(){ n.callMethod? 18 n.callMethod.apply(n,arguments):n.queue.push(arguments) }; 19 if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 20 n.queue=[];t=b.createElement(e);t.async=!0; 21 t.src=v;s=b.getElementsByTagName(e)[0]; 22 s.parentNode.insertBefore(t,s) }(window, document,'script', 23 'https://connect.facebook.net/en_US/fbevents.js'); 24 fbq('init', '
24812489879998827
vendor: 33 bytes, lines 24-26
24'); 25 fbq('track', 'PageView'); 26
26</script>
26 27 <noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=812489879998827&ev=PageView&noscript=1"/></noscript> 28 <!-- End Facebook Pixel Code --> <!-- MS Clarity --> 29
29<script type="text/javascript"> 30 (function(c,l,a,r,i,t,y){ 31 c[a]=c[a]||function(){ (c[a].q=c[a].q||[]).push(arguments) }; 32 t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; 33 y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); 34 })(window, document, "clarity", "script", "vjs9pqjznd"); 35 waitForClarity(function() { 36 window.clarity('consentv2',{ 37 ad_storage: "granted", 38 analytics_storage: "granted" 39 }); 40 }); 41 function waitForClarity(callback){ 42 if(typeof clarity !== 'undefined'){ 43 callback() 44 } else { 45 setTimeout(function () { 46 waitForClarity(callback) 47 }, 100) 48 } 49 }; 50 </script>
50 51 <!-- End MS Clarity --> <title>Gift Voucher</title> 52 <meta charset="utf-8"> 53 <meta name="description" content=""> 54 <meta name="keywords" content=""> 55 <meta property="og:locale" content="en_GB" /> 56 <meta property="og:type" content="website" /> 57 <meta property="og:title" content="Gift Voucher" /> 58 <meta property="og:description" content="" /> 59 <meta property="og:url" content="https:///book/product/gift-voucher/559" /> 60 <meta property="og:site_name" content="" /> <meta property="og:image" content="" /> 61 <meta name="twitter:card" content="summary" /> 62 <meta name="twitter:description" content="" /> 63 <meta name="twitter:title" content="Gift Voucher" /> 64 <meta name="twitter:site" content="" /> <meta name="twitter:creator" content="" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5"> 65 <link rel="canonical" href="https:///book/product/gift-voucher/559" /> 66 <!-- Favicon --> 67 <link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-touch-icon.png"> 68 <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon/favicon-32x32.png"> 69 <link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon/favicon-16x16.png"> 70 <link rel="manifest" href="/assets/favicon/site.webmanifest"> 71 <link rel="mask-icon" href="/assets/favicon/safari-pinned-tab.svg" color="#5bbad5"> 72 <link rel="shortcut icon" href="/assets/favicon/favicon.ico"> 73 <meta name="msapplication-TileColor" content="#ffd422"> 74 <meta name="msapplication-config" content="/assets/favicon/browserconfig.xml"> 75 <meta name="theme-color" content="#ffffff"> 76 <link href="/common/assets/bootstrap-4.6.2/css/bootstrap.min.css" rel="stylesheet" ><link href="/common/assets/fonts/fontawesome-pro-6.5.2-web/css/all.min.css" rel="stylesheet" media="none" onload="if(media!='all')media='all'"> 77 <link href="/assets/css/style.css?cc=1722873678" rel="stylesheet" type="text/css" media="none" onload="if(media!='all')media='all'"/> 78 <noscript> 79 <link href="/assets/css/style.css?cc=1722873678" rel="stylesheet" type="text/css"/> 80 <link href="/common/assets/fonts/fontawesome-pro-6.5.2-web/css/all.min.css" rel="stylesheet" type="text/css"/> 81 </noscript> 82 <!-- JS --> 83
83<script src="/common/assets/js/jquery-3.7.1.min.js"></script>
83 84 <!-- popper --> 85
85<script src="/common/assets/bootstrap-4.6.2/js/popper.min.js"></script>
85 86 <!-- Bootstrap--> 87
87<script src="/common/assets/bootstrap-4.6.2/js/bootstrap.min.js"></script>
87 88
88<script type="application/ld+json"> 89 { "@context":"http://schema.org", 90 "@type":"Organization", 91 "legalName":"", 92 "url":"", 93 "logo":"", 94 "contactPoint":[{ 95 "@type":"ContactPoint", 96 "telephone":"", 97 "contactType":"customer service" 98 }] 99 } 100</script>
100 <link type="text/css" rel="stylesheet" href="/shop/includes/css_include.css?v=136" /> 101 102
102<script nonce="OeCjAV4mDlBIq5bEdm2iD5irzyBDtE/Bdtl7KNXATjA="> 103var WS_USER = "cantref"; 104var BASE_CURRENCY = "GBP"; 105var CURRENCY_STRING = "£"; 106var language = ""; 107//console.log("Including /common/assets/js/common.tpl"); 108</script>
108 109 110
111<script src="/common/assets/js/common.js?v=1783678918" nonce="OeCjAV4mDlBIq5bEdm2iD5irzyBDtE/Bdtl7KNXATjA=" ></script>
vendor: 1 bytes, line 111
111
112<script nonce="OeCjAV4mDlBIq5bEdm2iD5irzyBDtE/Bdtl7KNXATjA="> 113var WS_USER = "cantref"; 114var devmode = 0; 115var currency = "£"; 116var USE_V2_JOURNEY = 0; 117var userId = ""; 118var FB_event_id = "6abb24b91d1ca3.97995989"; 119var ismobile = ""; 120var displaySessionAlreadyStartedWarning = 0; 121var showActivityPricingBreakdown = 0; 122var todaysDate = '2026-09-29'; 123var usePricingTypeColors = 0; 124var showSpacesFree = 0; // Display spaces available on timeslots 125var showPricingTypes = 0; // Display pricing types under timeslots 126var displayVerifyMembershipDetails = 0; 127var accessCardNoPlusOneError = "Your access card is not eligible for an essential companion ticket. Please contact Nimbus Disability to reassess your requirements, or to check eligibility."; 128var isVouchersOnlyCategory = 0; 129</script>
129 130
131<script src="/shop/includes/js_include.js?v=1789729035" nonce="OeCjAV4mDlBIq5bEdm2iD5irzyBDtE/Bdtl7KNXATjA=" ></script>
131</head> 132<body id="productWrap"> 133 <!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 133-134
133 134<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
134GTM-NC7DX9L
vendor: 83 bytes, line 134
134" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
135<!-- End Google Tag Manager (noscript) --><a href="#content" class="sr-only">Skip to content</a> 136<!-- wrapper --> 137<div id="wrapper" class="h-100 d-flex flex-column"> 138 <div id="header"> 139 140 <div id="headerWrapper"> 141 <div id="topBar"> 142 <ul class="nav w-100 justify-content-end"> 143 <li class="nav-item d-none d-md-block mr-5"> 144 <a class="nav-link pr-2" href="/booking/select-voucher-type">Redeem vouchers</a> 145 </li> 146 <li class="nav-item "> 147 <a class="nav-link px-2" href="/shop/basket"><i class="fa-regular fa-basket-shopping"></i></a> 148 </li> 149 <li class="nav-item "> 150 <a class="nav-link pl-3 pr-2 pr-md-3 pl-md-2" href="/user/my_account"><i class="fa-regular fa-circle-user"></i></a> 151 </li> 152 153 </ul> 154 </div> 155 <nav class="navbar navbar-expand-lg"> 156 <a href="https://www.cantref.com" class="btn btn-primary"><span class="d-none d-md-inline-block">Return to</span> homepage</a> 157 158 <a href="/booking/select-voucher-type" class="btn btn-primary d-md-none">Redeem</a> 159 </nav> 160 161 </div> 162 <a id="headerLogo" class="" href="https://www.cantref.com"> 163 <img src="/assets/images/logo.webp" height="58px" width="auto" alt="FuseMetrix Group Logo"> 164 </a> 165 </div> <!-- Dev/templates/shop/product.tpl --> 166 167 <div id="content" class="container py-5" style="position: relative;" > 168 <div class="row"> 169 <div class="col-12 col-md-5 col-lg-5 border-right border-light"> 170 171 <div id="carouselExampleIndicators" > 172 <div class="carousel-inner"> 173 <div class="carousel-item active"> 174 <img src="https://cantref.fusemetrix.com/common/inc_imageget.php?icc=0&sp=true&id=559&code=3a0772&crop=408x408&defaulturl=https://cantref.fusemetrix.com/bespoke/no_image.jpg" class="d-block w-100" alt="Gift Voucher"> 175 </div> 176 </div> 177 </div> 178 179 </div> 180 <div class="col-12 col-md-7 col-lg-7"> 181 <h1 class="pt-2">Gift Voucher</h1> 182 183 <form action="/booking/activity.php" id="form_559" method="get"> 184 185 <input type="hidden" name="locationId" id="locationId_559" value="1" /> 186 187 <!--<input type="hidden" name="fullProductName" value="Gift Voucher">--> 188 189 <input type="hidden" name="productId" value="559" /> 190 <input type="hidden" name="hx" value="4c45807616125d8f9e513490f35d92e8" /> 191 <input type="hidden" name="locationId" value="1" /> 192 193 <!--<input type="hidden" name="pricingtype" id="pricingtype_559" value="0" />--> 194 <input type="hidden" name="addGiftvoucher" value="1" /> 195 196 197 198 <input type="hidden" name="addGiftvoucher" value="1" /> 199 <input type="hidden" name="giftVoucherProductId" value="559" /> 200 <div class="form-group row mb-3 justify-content-between align-items-center"> 201 <div class="col-form-label col-6 col-sm-5">Value</div> 202 <div class="col-6 col-sm-7"> 203 <select class="form-control my-1" id="giftVoucherSelector" name="value"> 204 <option value="10.00">£10.00</option> 205 <option value="25.00">£25.00</option> 206 <option value="50.00">£50.00</option> 207 <option value="100.00">£100.00</option> 208 <option value="Custom">Custom</option> 209 </select> 210 <div id="giftVoucherCustomWrapper" class="d-none" > 211 <div class="input-group mb-3 w-100"> 212 <div class="input-group-prepend">
213 <span class="input-group-text">£</span> 214 </div> 215 <input type="text" class="form-control" name="customvalue" id="giftVoucherCustomField" placeholder="0" min="0"> 216 </div> 217 </div> 218 </div> 219 </div> 220 221 <input type="hidden" name="voucherPostageSelector" value="0" /> 222 <input type="hidden" name="voucherPostage" value="-1.00"/> 223 <button type="submit" class="btn btn-primary w-100">Buy voucher</button> 224 </form> 225 </div> 226 </div> 227 <button class="btn btn-secondary btn-back mt-3" onclick="history.back()">Back</button> 228 </div> 229 230 231 <div id="footer" class="mt-auto"> 232 <div class="footerLogo text-center"><img src="/assets/images/logo.webp" height="58px" width="auto" alt="Cantref Adventure Farm Logo"></div> 233 <div id="footerWrapper" class="pb-3"> 234 <div class="container py-4"> 235 <div class="row"> 236 237 </div> 238 <div class="border-top border-bottom py-4 my-4 text-center"> 239 <a href="https://www.fusemetrix.com" target="_blank" class="">Powered by <img class="fmxlogo" src="/common/fmx-logos/logo-fmx-group-white.svg" height="30px" width="auto" alt="FuseMetrix Group logo"></a> 240 </div> 241 <div class="row align-items-end"> 242 <div class="col-12 col-lg-8 footerCopy text-center text-lg-left order-2 order-lg-1"> 243 © Copyright 2026 Cantref Adventure Farm | Upper Cantref Farm, Cantref, Brecon, Powys LD3 8LR 244 </div> 245 <div class="col-12 col-lg-4 order-1 order-lg-2"> 246 <div id="socialIcons" class="d-flex align-items-center justify-content-center justify-content-lg-end mb-4 mb-lg-0"> 247 <a href="https://www.facebook.com/Cantref/" class="ml-2 ml-lg-0"><i class="fa-brands fa-facebook-f"></i></a> 248 <a href="https://www.youtube.com/user/CantrefFarmcant" class="ml-2"><i class="fa-brands fa-youtube"></i></a> 249 <a href="https://www.tiktok.com/place/Cantref-Adventure-Farm-21568295483131158" class="ml-2"><i class="fa-brands fa-tiktok"></i></a> 250 <a href="https://www.instagram.com/cantref_adventure_farm/" class="ml-2"><i class="fa-brands fa-instagram"></i></a> 251 <a href="https://x.com/cantref" class="ml-2"><i class="fa-brands fa-twitter"></i></a> 252 </div> 253 </div> 254 </div> 255 </div> 256 </div> 257</div> 258 259 <!-- footer includes file dev/common/footer-includes.php --> 260 261 262
262<script nonce="OeCjAV4mDlBIq5bEdm2iD5irzyBDtE/Bdtl7KNXATjA="> 263 let popups = [] 264 265 function Popup(id, members, page) { 266 this.id = id 267 this.members = members 268 this.page = page 269 } 270 //grab vars from template for checks 271 var scriptName = '/shop/product.php' 272 var isMember = '' 273 274 275 const validPopup = (members, page) => { 276 let allow = true 277 278 switch(page) { 279 case 'home': 280 (scriptName == '/index.php' || scriptName == '/shop/category.php') ? null : allow = false 281 break; 282 case 'my-account': 283 scriptName == '/user/my_account.php' ? null : allow = false 284 break; 285 } 286 287 if(parseInt(members)){ 288 parseInt(isMember) ? null : allow = false 289 } 290 return allow; 291 } 292 </script>
292 293 294
294<script nonce="OeCjAV4mDlBIq5bEdm2iD5irzyBDtE/Bdtl7KNXATjA="> 295 console.log(popups) 296 297 $('document').ready(() => { 298 //loop through the popups arr and try to fire them 299 for(let i = 0; i < popups.length; i++) { 300 let popupCookie = getCookie("popuploaded"+popups[i].id); 301 if(popupCookie == ''){ 302 //check page and member conditions 303 if(validPopup(popups[i].members, popups[i].page)) { 304 $('#sitePopup'+popups[i].id).modal('show') 305 } 306 } 307 } 308 }) 309 function setCookie(cname, cvalue, exdays) { 310 var d = new Date(); 311 d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); 312 var expires = "expires="+d.toUTCString(); 313 document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 314 } 315 316 function getCookie(cname) { 317 var name = cname + "="; 318 var ca = document.cookie.split(';'); 319 for(var i = 0; i < ca.length; i++) { 320 var c = ca[i]; 321 while (c.charAt(0) == ' ') { 322 c = c.substring(1); 323 } 324 if (c.indexOf(name) == 0) { 325 return c.substring(name.length, c.length); 326 } 327 } 328 return ""; 329 } 330 </script>
330 331 332
332<script nonce="OeCjAV4mDlBIq5bEdm2iD5irzyBDtE/Bdtl7KNXATjA="> 333 function genAlertMsg(title, msg, e = {}){ 334 e.target ? e.preventDefault() : null; 335 336 $('#genAlertModalTitle').html(title); 337 $('#genAlertModalBody').html(msg); 338 $('#genAlertModal').modal('show') 339 } 340</script>
340 341 342<div style='z-index: 1000000' id='genAlertModal' class="modal" tabindex="-1"> 343 <div class="modal-dialog"> 344 <div class="modal-content"> 345 <div class="modal-header"> 346 <h5 id='genAlertModalTitle' class="modal-title">Error</h5> 347 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 348 <span aria-hidden="true">×</span> 349 </button> 350 </div> 351 <div class="modal-body"> 352 <p id='genAlertModalBody'></p> 353 </div> 354 <div class="modal-footer"> 355 <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> 356 </div> 357 </div> 358 </div> 359</div> 360 <style> 361 #basketUpdateAlert { 362 position: fixed; 363 top: 0; 364 z-index: 99999; 365 right: 0; 366 top: 65px; 367 min-width: 350px; 368 background-color: #fff; 369 display: none; 370 } 371 #basketUpdateAlert p { 372 padding-bottom: 4px; 373 margin-bottom: 0px; 374 } 375</style> 376 377<section id='basketUpdateAlert' class='shadow p-3'> 378 <div class='d-flex align-items-center justify-content-between mb-2'> 379 <strong class='pl-3'>Added to Cart</strong> 380 <div data-action="basketUpdateAlertToggle" class="text-right font-weight-bold">×</div> 381 </div> 382 <div class='mx-auto d-flex'> 383 <div style='max-width: 100px'> 384 <img id='basketUpdateProductImage' src="" alt="placeholder image"> 385 </div> 386 <div class='pl-3'> 387 <p id='basketUpdateProductName'></p> 388 <p id='basketUpdateProductPrice'></p> 389 <p>Qty: <span id='basketUpdateProductQty'></span></p> 390 </div> 391 </div> 392 <div class='mt-2'> 393 <a href="/shop/basket" class='btn basketAlert-btn btn-primary w-100'>Checkout</a> 394 </div> 395</section> 396
397<script nonce="OeCjAV4mDlBIq5bEdm2iD5irzyBDtE/Bdtl7KNXATjA="> 398 $(document).on('click', '[data-action="basketUpdateAlertToggle"]', function (e) { 399 e.preventDefault(); 400 $('#basketUpdateAlert').fadeOut() 401 }); 402 403</script>
403 404 405 406 407 408<!-- DEV/shop/includes/footer.php --> 409<div class="modal fade" id="voucherRedeemModalCenter" tabindex="-1" role="dialog" aria-labelledby="voucherRedeemModalTitle" aria-hidden="true"> 410 <div class="modal-dialog modal-dialog-centered" role="document"> 411 <div class="modal-content"> 412 <div class="modal-header"> 413 <h3 class="modal-title" id="voucherRedeemModalTitle">Voucher accepted</h3> 414 <button type="button" class="close" data-dismiss="modal" data-bs-dismiss="modal" aria-label="Close"> 415 <span aria-hidden="true">×</span> 416 </button> 417 </div> 418 <div class="modal-body"> 419 Simply book one of our activities and the cost will be deducted in your basket 420 </div> 421 <div class="modal-footer"> 422 <button type="button" class="btn btn-secondary" data-dismiss="modal" data-bs-dismiss="modal">Let's go</button> 423 </div> 424 </div> 425 </div> 426</div> 427 428<style> 429#divCustomerPhotoContainer { 430 width: 200px; 431 height: 200px; 432 border: 1px solid #a4a4a485; 433 border-radius:200px; 434 overflow: hidden; 435 display: flex; 436 justify-content: center; 437 align-items: center; 438 background: #efefef; 439} 440 441.modal-user-profile-picture[src="/common/assets/images/user-profile.png"] { 442 object-fit: contain; 443 width: 62%; 444 height: 62%; 445 filter: brightness(100); 446} 447 448</style> 449 450<div class="modal fade" id="modalCustomerPhoto" tabindex="-1" role="dialog" aria-hidden="true"> 451 <div class="modal-dialog modal-dialog-centered" role="document"> 452 <div class="modal-content"> 453 <div class="modal-header"> 454 <h5 class="modal-title">Customer Photo</h5> 455 <button type="button" class="close btn-close" data-dismiss="modal" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true" class="visually-hidden">×</span></button> 456 </div> 457 <div class="modal-body"> 458 <p>You can retake your photo as many times as you like, when you're happy with you photo press save. <span class="text-danger">Once your photo has been saved, if you need to change this please contact us.</span></p> 459 <div class="d-flex justify-content-center mb-3"> 460 <div id="divCustomerPhotoContainer"> 461 <img class="modal-user-profile-picture" src="/common/assets/images/user-profile.png" alt="User Photo"/> 462 </div> 463 <div id="divMyCamera"></div> 464 <input type="hidden" id="photoUserId"> 465 <input type="hidden" id="photoUserKey"> 466 <input type="hidden" id="photoOrderId"> 467 </div> 468 469 <div class="mx-3 mx-sm-5" id="divPhotoOptions"> 470 <button type="button" class="btn btn-primary w-100" id="btnOpenCamera" data-action="openCamera">Take Photo</button> 471 <p class="text-center my-1">Or</p> 472 <button type="button" class="btn btn-primary w-100" id="btnUploadPhoto" data-action="uploadPhoto">Upload photo</button> 473 </div> 474 <div class="mx-3 mx-sm-5" id="divPhotoButtons"> 475 <button type="button" class="btn btn-primary w-100 mb-2" id="btnTakePhoto" data-action="takePhoto">Capture</button> 476 <button type="button" class="btn btn-primary w-100 mb-2" id="btnRetakePhoto" data-action="resetPhoto">Retake</button> 477 <button type="button" class="btn btn-success w-100" id="btnSavePhoto" data-action="savePhoto">Save</button> 478 </div> 479 480 <div class="alert alert-danger mb-2" role="alert" id="divUploadPhotoError"></div> 481 <div class="mx-2" id="divUploadPhoto"> 482 <div class="input-group"> 483 <div class="custom-file"> 484 <input type="file" class="custom-file-input form-control" id="uploadCustomerPhoto" accept="image/*"> 485 <label class="custom-file-label input-group-text visually-hidden" for="uploadCustomerPhoto" aria-describedby="btnUploadCustomerPhoto">Choose file</label> 486 </div> 487 <div class="input-group-append ml-auto ms-auto"> 488 <button type="button" class="btn btn-primary ml-3 ms-3" id="bt
488nUploadCustomerPhoto" data-action="savePhotoUploaded">Save</span> 489 </div> 490 </div> 491 <small>Maximum upload file size: 2 MB</small> 492 </div> 493 </div> 494 <div class="modal-footer"> 495 <button type="button" class="btn btn-secondary mr-auto me-auto" data-dismiss="modal" data-bs-dismiss="modal">Close</button> 496 </div> 497 </div> 498 </div> 499</div> 500 501<div class="modal fade" id="modalUserPhoto" tabindex="-1" role="dialog" aria-hidden="true"> 502 <div class="modal-dialog modal-dialog-centered" role="document"> 503 <div class="modal-content"> 504 <div class="modal-header"> 505 <h5 class="modal-title">Customer photo</h5> 506 <button type="button" class="close btn-close" data-dismiss="modal" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> 507 </div> 508 <div class="modal-body"> 509 <p class="">You can retake your photo as many times as you like, when you're happy with you photo press save. <span class="text-danger">Once your photo has been saved, if you need to change this please contact us.</span></p> 510 <div class="d-flex justify-content-center position-relative"> 511 <div id="divUserPhoto" class="position-absolute" style="width: 100%; height: 100%;top: 0;left: 0;display: flex;flex-direction: column;justify-content: center;align-items: center;"> 512 <img id="userPhotoPlaceholder" src="/common/assets/images/user-profile.png" style="object-fit: contain; width: 200px;height: 200px;" alt="User profile placeholder image"> 513 514 </div> 515 <div id="divUserCamera"></div> 516 517 <input type="hidden" id="photoUserKey"> 518 </div> 519 <div class="text-center"> 520 <label for="upload" id="btnSelectUserPhoto" style="display:none" class="uploadButton btn btn-secondary mt-3">Select photo</label> 521 <input type="file" name="upload" id="upload" class="d-none" onchange="loadUserPhoto(event)"> 522 </div> 523 </div> 524 <div class="modal-footer justify-content-between"> 525 <button type="button" class="btn btn-secondary" data-dismiss="modal" data-bs-dismiss="modal">Close</button> 526 <button type="button" class="btn btn-primary" id="btnTakeUserPhoto" data-action="takeUserPhoto">Take photo</button> 527 <button type="button" class="btn btn-primary" id="btnUploadUserPhoto" data-action="uploadUserPhoto" style="display:none" >Upload photo</button> 528 <button type="button" class="btn btn-primary" id="btnResetUserPhoto" onclick="resetUserPhoto();">Retake</button> 529 <button type="button" class="btn btn-success" id="btnSaveUserPhoto" onclick="saveUserPhoto();">Save</button> 530 </div> 531 </div> 532 </div> 533</div> 534 535<div class="modal fade" id="modalImage" tabindex="-1" role="dialog" aria-hidden="true"> 536 <div class="modal-dialog modal-dialog-centered"> 537 <div class="modal-content"> 538 <div class="modal-body" id="divModalImage"></div> 539 </div> 540 </div> 541</div> 542 543<div class="modal fade" id="modalMemberBookNow" tabindex="-1" role="dialog" aria-hidden="true"> 544 <div class="modal-dialog modal-lg modal-dialog-centered" role="document"> 545 <div class="modal-content"> 546 <form id="frmMemberBookNow" action="/booking/buildSessionGroup.php" method="post"> 547 <input type="hidden" name="makeBooking" value="1"> 548 <input type="hidden" name="userId" id="userId" value=""> 549 <input type="hidden" name="categoryId" id="categoryId" value="0"> 550 <input type="hidden" name="locationId" id="locationId" value="1"> 551 <div class="modal-header"> 552 <h5 class="modal-title">Book Now</h5> 553 <button type="button" class="close btn-close" data-dismiss="modal" data-bs-dismiss="modal" aria-label="Close"><span class="visually-hidden" aria-hidden="true">×</span></button> 554 </div> 555 <div class="modal-body" id="divSingleProducts"> 556 <h3>Members</h3> 557 <p id="extraDescription"></p> 558 <p>Please select which member will be attending</p> 559 <div id="divMemberProducts" class="mb-3"></div> 560 <div id="divAdditionalProducts"></div> 561 </div> 562 <div class="modal-footer"> 563 <button type="submit" class="btn btn-primary" id="btnBookNow">Book now</button> 564 </div> 565 </form> 566 </div> 567 </div> 568</div> 569 570<div class="modal fade" id="modalAddFriendsMembership" tabindex="-1" role="dialog" aria-hidden="true"> 571 <div class="modal-dialog modal-dialog-centered" role="document"> 572 <div class="modal-content"> 573 <form id="frmAddFriendsMembership" method="post"> 574 <input type="submit" style="display:none;" value="submit"/> 575 <input type="hidden" name="linkMembership" value="1">
576 <input type="hidden" name="categoryId" value="0"> 577 <input type="hidden" name="mainMembershipId" value=""> 578 <input type="hidden" name="linkMembershipId" id="linkMembershipId"> 579 <input type="hidden" name="addFriendSurname" id="linkMembershipSurname"> 580 581 <div class="modal-header"> 582 <h5 class="modal-title" id="modalAddFriendsMembershipTitle">Add a friend's membership</h5> 583 <button type="button" class="close btn-close" data-dismiss="modal" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> 584 </div> 585 <div class="modal-body"> 586 <div class="form-row"> 587 <div class="form-group col-md-6"> 588 <label for="addFriendCardNumber">Your friend's card number</label> 589 <input type="text" class="form-control" id="addFriendCardNumber" required> 590 </div> 591 <div class="form-group col-md-6"> 592 <label for="addFriendSurname">Your friend's surname</label> 593 <input type="text" class="form-control" id="addFriendSurname" required> 594 </div> 595 </div> 596 <div id="divAddFriendsMembership"></div> 597 </div> 598 <div class="modal-footer"> 599 <button type="button" class="btn btn-primary" onclick="searchFriendMemberships();">Search</button> 600 <button type="submit" class="btn btn-success" style="display:none;" id="btnAddFriendsMembership">Add</button> 601 </div> 602 </form> 603 </div> 604 </div> 605</div> 606 607<div class="modal fade" id="modalBuyVoucher" tabindex="-1" role="dialog" aria-hidden="true"> 608 <div class="modal-dialog modal-dialog-centered" role="document"> 609 <input type="hidden" id="buyVoucherLocationId"> 610 <input type="hidden" id="buyVoucherProductId"> 611 <div class="modal-content"> 612 <div class="modal-header"> 613 <h5 class="modal-title mb-0">Buy voucher <span class="modalProductName"></span></h5> 614 </div> 615 <div class="modal-body p-0" id="divBuyVoucher"> 616 <div class="p-3"> 617 <!-- productPrice is dynamic, it is in \Dev\shop\includes\js_include.php --> 618 <div id="buyVoucherQtyWrap" class="form-group row mb-0"> 619 <label for="buyVoucherQty" class="col-sm-6 col-form-label font-weight-bold"><div class="d-table h-100"><div class="d-table-cell h-100 align-middle"><span id="productPrice"><span class="sr-only">product price</span></span></div></div></label> 620 <div class="col-sm-6"> 621 <div class="input-group"> 622 <div class="input-group-prepend"> 623 <button type="button" class="btn btn-primary qtyIncrement" data-add="-1">-</button> 624 </div> 625 <input type="text" class="form-control text-center border" id="buyVoucherQty" placeholder="0" value="0"> 626 <div class="input-group-append"> 627 <button type="button" class="btn btn-primary qtyIncrement" data-add="1">+</button> 628 </div> 629 </div> 630 </div> 631 </div> 632 <div class="form-group row mt-3" id="voucherTypeWrap"> 633 <label for="voucherType" class="col-sm-2 col-form-label font-weight-bold">Type</label> 634 <div class="col-sm-10" id="divVoucherPricingTypes"></div> 635 </div> 636 </div> 637 <div id="buyVoucherOptions" style="display:none;" class="border-top"> 638 <div class="row no-gutters"> 639 <div class="col-6 text-center border-right p-3"> 640 <input onclick="$('#buyVoucherPostedOptions').hide();" type="radio" name="type" value="digital" id="vouchertypeDigital" checked><label for="vouchertypeDigital" class="pl-1 cursor-pointer m-0">Digital (Free)</label> 641 </div> 642 <div class="col-6 text-center p-3"> 643 <input onclick="$('#buyVoucherPostedOptions').show();" type="radio" name="type" value="posted" id="vouchertypePosted"><label for="vouchertypePosted" class="pl-1 cursor-pointer m-0">Posted</label> 644 </div> 645 <div id="buyVoucherPostedOptionsContainer" class="col-12"> 646 <div id="buyVoucherPostedOptions" class="col-12 border-top" style="display:none;"> 647 <input type="hidden" id="voucherExtraId" name="voucherExtraId" value="
6470"> 648 <div style="width:100%; max-width:100%; overflow-x:auto;" class="p-3"> 649 <div id="buyVoucherPostedProducts"></div> 650 </div> 651 </div> 652 </div> 653 </div> 654 </div> 655 </div> 656 <div class="modal-footer justify-content-between"> 657 <button type="button" class="btn btn-secondary btn-noarrow" data-dismiss="modal" data-bs-dismiss="modal">Close</button> 658 <button type="button" class="btn btn-primary" style="display:none;" id="btnAddVoucher" onclick="addVoucher();">Add to basket</button> 659 </div> 660 </div> 661 </div> 662</div> 663 664<div class="modal fade" id="modalBuyMembershipVoucher" tabindex="-1" role="dialog" aria-hidden="true"> 665 <div class="modal-dialog modal-dialog-centered" role="document"> 666 <div class="modal-content"> 667 <form class="m-0" id="frmBuyMembershipVoucher" method="post"> 668 <input type="hidden" name="buyMembershipVoucher" value="1"> 669 <input type="hidden" name="locationId" id="buyMembershipVoucherLocationId"> 670 <input type="hidden" name="productId" id="buyMembershipVoucherProductId"> 671 <input type="hidden" id="buyMembershipVoucherMaximumUsers"> 672 <input type="hidden" id="buyMembershipVoucherOption"> 673 <div class="modal-header"> 674 <h5 class="modal-title">Buy membership voucher</h5> 675 <button type="button" class="close btn-close" data-dismiss="modal" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true"class="visually-hidden">×</span></button> 676 </div> 677 <div class="modal-body" id="divBuyMembershipVoucher"> 678 <div class="alert alert-danger text-center" role="alert" id="divBuyMembershipVoucherError" style="display:none;"></div> 679 <p class="card-text">We just need a few details about how many people it's for.</p> 680 <div class="row mb-1 align-items-center" id="divBuyMembershipVoucherAdults"> 681 <label for="buyMembershipVoucherAdults" class="col-sm-4 font-weight-bold" style="line-height:1em;" id="lblBuyMembershipVoucherAdults"><span class="sr-only">membership voucher adults</span></label> 682 <div class="col-sm-8"> 683 <div class="input-group"> 684 <div class="input-group-prepend"> 685 <button type="button" class="btn btn-primary qtyIncrement" data-type="adults" data-add="-1">-</button> 686 </div> 687 <input type="text" class="form-control text-center border" name="adults" id="buyMembershipVoucherAdults" placeholder="0" value=""> 688 <div class="input-group-append"> 689 <button type="button" class="btn btn-primary qtyIncrement" data-type="adults" data-add="1">+</button> 690 </div> 691 </div> 692 </div> 693 </div> 694 <div class="row mb-1 align-items-center" id="divBuyMembershipVoucherChildren"> 695 <label for="buyMembershipVoucherChildren" class="col-sm-4 font-weight-bold" style="line-height:1em;" id="lblBuyMembershipVoucherChildren"><span class="sr-only">membership voucher children</span></label> 696 <div class="col-sm-8"> 697 <div class="input-group"> 698 <div class="input-group-prepend"> 699 <button type="button" class="btn btn-primary qtyIncrement" data-type="children" data-add="-1">-</button> 700 </div> 701 <input type="text" class="form-control text-center border" name="children" id="buyMembershipVoucherChildren" placeholder="0" value=""> 702 <div class="input-group-append"> 703 <button type="button" class="btn btn-primary qtyIncrement" data-type="children" data-add="1">+</button> 704 </div> 705 </div> 706 </div> 707 </div> 708 <div class="row mb-1 align-items-center" id="divBuyMembershipVoucherSeniors" style="display:none;"> 709 <label for="buyMembershipVoucherSeniors" class="col-sm-4 font-weight-bold" style="line-height:1em;" id="lblBuyMembershipVoucherSeniors"><span class="sr-only">membership voucher seniors</span></label> 710 <div class="col-sm-8"> 711 <div class="input-group"> 712 <div class="input-group-prepend"> 713 <button type="button" class="btn btn-primary qtyIncrement" data-type="seniors" data-add="-1">-</button> 714 </div> 715 <input type="text" class="form-control text-center border" name="seniors" id="buyMembershipVoucherSeniors" placeholder="0" value=""> 716 <div class="input-group-append"> 717 <button type="button" class="btn btn-primary qtyIncrement" data-type="seniors" data-add="1">+</button> 718 </div> 719 </div> 720 </div> 721 </div> 722 <div class="row mb-1 align-items-center" id="divBuyMembershipVoucherStudents" style="display:none;"> 723 <label for="buyMembershipVoucherStudents" class="col-sm-4 font-weight-bold" style="line-height:1em;" id="lblBuyMembershipVoucherStudents"><span class="sr-only">membership voucher students</span></label> 724 <div class="col-sm-8"> 725 <div class="input-group"> 726 <div class="input-group-prepend"> 727 <button type="button" class="btn btn-primary qtyIncrement" data-type="students" data-add="-1">-</button> 728 </div> 729 <input type="text" class="form-control text-center border" name="students" id="buyMembershipVoucherStudents" placeholder="0" value=""> 730 <div class="input-group-append"> 731 <button type="button" class="btn btn-primary qtyIncrement" data-type="students" data-add="1">+</button> 732 </div> 733 </div> 734 </div> 735 </div> 736 <div class="row mb-1 align-items-center" id="divBuyMembershipVoucherDisabled" style="display:none;"> 737 <label for="buyMembershipVoucherDisabled" class="col-sm-4 font-weight-bold" style="line-height:1em;" id="lblBuyMembershipVoucherDisabled"><span class="sr-only">membership voucher disabled</span></label> 738 <div class="col-sm-8"> 739 <div class="input-group"> 740 <div class="input-group-prepend"> 741 <button type="button" class="btn btn-primary qtyIncrement" data-type="disabled" data-add="-1">-</button> 742 </div> 743 <input type="text" class="form-control text-center border" name="disabled" id="buyMembershipVoucherDisabled" placeholder="0" value=""> 744 <div class="input-group-append"> 745 <button type="button" class="btn btn-primary qtyIncrement" data-type="disabled" data-add="1">+</button> 746 </div> 747 </div> 748 </div> 749 </div> 750 <div class="row mb-1 align-items-center" id="divBuyMembershipVoucherCarers" style="display:none;"> 751 <label for="buyMembershipVoucherCarers" class="col-sm-4 font-weight-bold" style="line-height:1em;" id="lblBuyMembershipVoucherCarers"><span class="sr-only">membership voucher carers</span></label> 752 <div class="col-sm-8"> 753 <div class="input-group"> 754 <div class="input-group-prepend"> 755 <button type="button" class="btn btn-primary qtyIncrement" data-type="carers" data-add="-1">-</button> 756 </div> 757 <input type="text" class="form-control text-center border" name="carers" id="buyMembershipVoucherCarers" placeholder="0" value=""> 758 <div class="input-group-append"> 759 <button type="button" class="btn btn-primary qtyIncrement" data-type="carers" data-add="1">+</button> 760 </div> 761 </div> 762 </div> 763 </div> 764 <div class="row mb-1 align-items-center" id="divBuyMembershipVoucherChildminders" style="display:none;"> 765 <label for="buyMembershipVoucherChildminders" class="col-sm-4 font-weight-bold" style="line-height:1em;" id="lblBuyMembershipVoucherChildminders"><span class="sr-only">membership voucher childminders</span></label> 766 <div class="col-sm-8"> 767 <div class="input-group"> 768 <div class="input-group-prepend"> 769 <button type="button" class="btn btn-primary qtyIncrement" data-type="childminders" data-add="-1">-</button> 770 </div> 771 <input type="text" class="form-control text-center border" name="childminders" id="buyMembershipVoucherChildminders" placeholder="0" value=""> 772 <div class="input-group-append"> 773 <button type="button" class="btn btn-primary qtyIncrement" data-type="childminders" data-add="1">+</button> 774 </div> 775 </div> 776 </div> 777 </div> 778 779 </div> 780 <div class="modal-footer justify-content-between"> 781 <button type="button" class="btn btn-secondary" data-dismiss="modal" data-bs-dismiss="modal">Cancel</button> 782 <button type="button" class="btn btn-primary" style="display:none;
782" id="btnAddMembershipVoucher" onclick="addMembershipVoucher();">Add to basket</button> 783 </div> 784 </form> 785 </div> 786 </div> 787</div> 788 789<div class="modal fade" id="modalBuyVoucherSuccess" tabindex="-1" role="dialog" aria-hidden="true"> 790 <div class="modal-dialog modal-dialog-centered" role="document"> 791 <div class="modal-content"> 792 <div class="modal-header"> 793 <h5 class="modal-title mx-auto">Success</h5> 794 </div> 795 <div class="modal-body text-center py-4"> 796 Voucher added to your basket 797 </div> 798 <div class="modal-footer justify-content-between"> 799 <button type="button" class="btn btn-secondary btn-noarrow" data-dismiss="modal" data-bs-dismiss="modal">Continue shopping</button> 800 <a href="/shop/basket" class="btn btn-primary" id="modalSuccessCTAButton">Checkout</a> 801 </div> 802 </div> 803 </div> 804</div> 805 806<div class="modal fade" id="modalAvailableProductsSummary" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true"> 807 <div class="modal-dialog modal-dialog-centered" role="document"> 808 <div class="modal-content"> 809 <form id="frmModalAvailableProducts" action="/booking/activityGrouped.php" method="get"> 810 <input type="hidden" name="addAllToBasket" value="1"> 811 <div class="modal-header"> 812 <h3 class="modal-title" id="exampleModalLongTitle">Booking summary</h3> 813 <button type="button" class="close btn-close" data-dismiss="modal" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> 814 </div> 815 <div class="modal-body"> 816 <div class="row"> 817 <div class="col-12"> 818 <p class="text-center" id="timeRem">You have <span id="minsRem">05</span>:<span id="secsRem">00</span> to complete your booking</p> 819 </div> 820 </div> 821 <div class="row"> 822 <div class="col-12"> 823 <strong>Activities:</strong><br> 824 <div id="availSummaryActivities"></div> 825 </div> 826 </div> 827 <div class="row mt-2"> 828 <div class="col-6"> 829 <div class="row"> 830 <div class="col-12 col-md-6 font-weight-bold">Date:</div> 831 <div class="col-12 col-md-6 text-md-right" id="availSummaryDate"></div> 832 </div> 833 </div> 834 <div class="col-6"> 835 <div class="row"> 836 <div class="col-12 col-md-6 font-weight-bold">Time:</div> 837 <div class="col-12 col-md-6 text-md-right" id="availSummaryTime"></div> 838 </div> 839 </div> 840 </div> 841 <hr /> 842 <div class="row justify-content-md-end mt-2"> 843 <div class="col-6"> 844 <div class="row"> 845 <div class="col-12 col-md-6 font-weight-bold">Total:</div> 846 <div class="col-12 col-md-6 text-md-right"> 847 <span id="availSummaryTotalPrice"></span> 848 </div> 849 </div> 850 </div> 851 </div> 852 </div> 853 <div class="modal-footer justify-content-between"> 854 <a class="btn btn-secondary text-white" data-dismiss="modal" data-bs-dismiss="modal">Change Date/Time</a> 855 <a href="#" onclick="$('#frmModalAvailableProducts').submit(); return false;" class="btn btn-primary allow-navigation">Book now</a> 856 </div> 857 </form> 858 </div> 859 </div> 860</div> 861 862<!-- Modal --> 863<div class="modal fade" id="addtobasketmodal" tabindex="-1" role="dialog" aria-labelledby="AddToBasketModalTitle" aria-hidden="true" data-keyboard="false" data-backdrop="static"> 864 <div class="modal-dialog modal-dialog-centered" role="document"> 865 <div class="modal-content"> 866 <div class="modal-header"> 867 <h3 class="modal-title" id="AddToBasketModalTitle">Your basket has been updated.</h3> 868 </div> 869 <div class="modal-body"> 870 <div class="row"> 871 <div class="col-4"> 872 <img src="" alt="" id="addToBasketImage" /> 873 </div> 874 <div class="col-8">
875 <span id="addToBasketName">Product</span> has been added to your basket. 876 </div> 877 </div> 878 </div> 879 <div class="modal-footer justify-content-between"> 880 <button type="button" class="btn btn-secondary" data-dismiss="modal" data-bs-dismiss="modal">Continue shopping</button> 881 <a class="btn btn-primary" href="/shop/basket">Checkout</a> 882 </div> 883 </div> 884 </div> 885</div> 886 887 888<div class="modal fade" id="buyCashGiftVoucherModal" tabindex="-1" role="dialog" aria-labelledby="buyCGVoucherModalTitle" aria-hidden="true"> 889 <div class="modal-dialog modal-dialog-centered" role="document"> 890 <div class="modal-content"> 891 <div class="modal-header"> 892 <h4 class="modal-title" id="buyCGVoucherModalTitle">Let's customise your voucher!</h4> 893 <button type="button" class="close" data-dismiss="modal" data-bs-dismiss="modal" aria-label="Close"> 894 <span aria-hidden="true">×</span> 895 </button> 896 </div> 897 <div class="modal-body"> 898 <input type="hidden" class="form-control" id="modal-voucher-product-id"> 899 <div id="modalGiftVoucherToWrapper" class="form-group"> 900 <label for="modal-voucher-to" class="col-form-label">To: <span class="text-danger">*</span></label> 901 <input type="text" class="form-control required" id="modal-voucher-to"> 902 <small class="invalid-feedback">This field is mandatory.</small> 903 </div> 904 <div id="modalGiftVoucherFromWrapper" class="form-group"> 905 <label for="modal-voucher-from" class="col-form-label">From: <span class="text-danger">*</span></label> 906 <textarea class="form-control" id="modal-voucher-from"></textarea> 907 <small class="invalid-feedback">This field is mandatory.</small> 908 </div> 909 <div id="modalGiftVoucherMessageWrapper" class="form-group"> 910 <label for="modal-voucher-message" class="col-form-label">Message: <span class="text-danger">*</span></label> 911 <textarea class="form-control" id="modal-voucher-message"></textarea> 912 </div> 913 </div> 914 <div class="modal-footer justify-content-between"> 915 <button type="button" class="btn btn-secondary" data-dismiss="modal" data-bs-dimiss="modal">Close</button> 916 <button type="button" class="btn btn-primary" onclick="buyGiftVoucher()" id="buyCashGiftVoucherButton">Buy voucher</button> 917 </div> 918 </div> 919 </div> 920</div> 921 922<div class="modal fade" id="modalEssentialCompanionTicket" tabindex="-1" role="dialog" aria-hidden="true"> 923 <div class="modal-dialog modal-dialog-centered" role="document"> 924 <div class="modal-content"> 925 <div class="modal-header"> 926 <h5 class="modal-title">Essential Companion Ticket</h5> 927 </div> 928 <div class="modal-body"> 929 930 <p class="card-text">We're proud to join the Access Card scheme and continue our mission of creating unforgettable days out for everyone. From standing and queuing assistance to urgent toilet access, the Access Card allows us to make reasonable adjustments to meet your needs.<p> 931 <p class="card-text">If you have any questions or would like more details about the Access Card or our free registration option, please have a look at the Accessibility page on our website.</p> 932 <a href="/shop/essential-companion" target="_blank" class="btn btn-primary mb-3">Accessibility</a> 933 <p class="card-text">Please enter your Access Card details below in order for us to grant you an Essential Companion ticket for Access Cards with a +1 or +2 symbol.</p> 934 935 <form class="m-0" id="frmModalAccessCard"> 936 <input type="submit" style="display:none;" value="submit"/> 937 <input type="hidden" id="essentialCompanionCategoryId"> 938 <div class="alert alert-danger text-center" style="display:none;" id="divModalAccessCardError" role="alert"></div> 939 <div class="alert alert-warning text-center" style="display:none;" id="divModalAccessCardWarning" role="alert"></div> 940 <div class="alert alert-success text-center" style="display:none;" id="divModalAccessCardSuccess" role="alert">
941 Thank you, your Access Card has been accepted and you are entitled to an Essential Companion ticket for Access Cards with a +1 or +2 symbol. 942 </div> 943 <div class="form-group"> 944 <label class="mb-1" for="modalAccessCardFirstName">First Name</label> 945 <input type="text" class="form-control" name="modalAccessCardFirstName" id="modalAccessCardFirstName" required> 946 </div> 947 <div class="form-group"> 948 <label class="mb-1" for="modalAccessCardLastName">Last Name</label> 949 <input type="text" class="form-control" name="modalAccessCardLastName" id="modalAccessCardLastName" required> 950 </div> 951 <div class="form-group"> 952 <label class="mb-1" for="modalAccessCardID">Access Card ID</label> 953 <input type="number" class="form-control" name="modalAccessCardID" id="modalAccessCardID" required> 954 </div> 955 </form> 956 </div> 957 <div class="modal-footer justify-content-between"> 958 <button type="button" class="btn btn-secondary" data-dismiss="modal" data-bs-dismiss="modal">Close</button> 959 <button type="button" class="btn btn-primary" id="btnCheckModalAccessCard" data-action="checkModalAccessCard">Submit</button> 960 <button type="button" class="btn btn-primary" id="btnAddAnotherAccessCard" data-action="addAccessCard" data-addinganother="true" data-categoryid="">Add Another Card</button> 961 </div> 962 </div> 963 </div> 964</div> 965 966<div class="modal fade" id="modalMembershipUpgrades" tabindex="-1" role="dialog" aria-hidden="true"> 967 <div class="modal-dialog modal-lg modal-dialog-centered" role="document"> 968 <div class="modal-content"> 969 <div class="modal-header"> 970 <h5 class="modal-title">Available Membership Upgrades</h5> 971 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> 972 </div> 973 <div class="modal-body"> 974 <div class="row justify-content-start justify-content-md-center"> 975 </div> 976 </div> 977 <div class="modal-footer"> 978 <button type="button" class="btn btn-secondary" data-dismiss="modal" data-bs-dismiss="modal">Close</button> 979 </div> 980 </div> 981 </div> 982</div> 983 984<div class="modal fade" id="modalVerifyMembershipDetails" tabindex="-1" role="dialog" aria-hidden="true"> 985 <div class="modal-dialog modal-dialog-centered" role="document"> 986 <div class="modal-content"> 987 <div class="modal-header"> 988 <h5 class="modal-title">Verify Membership Details</h5> 989 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> 990 </div> 991 <div class="modal-body" id="divVerifyMembershipDetails"> 992 <p class="card-text">Please verify your membership information below for membership <b></b>.</p> 993 <form class="m-0" id="frmModalVerifyMembershipDetails"> 994 <input type="submit" style="display:none;" value="submit"/> 995 <input type="hidden" id="verifyMembershipCardNumber" value=""> 996 <div class="alert alert-danger text-center" style="display:none;" id="divModalVerifyMembershipError" role="alert"></div> 997 <div class="form-group"> 998 <label class="mb-0" for="verifyMembershipFirstName">First Name</label> 999 <input type="text" class="form-control" id="verifyMembershipFirstName" required> 1000 </div> 1001 <div class="form-group"> 1002 <label class="mb-0" for="verifyMembershipLastName">Last Name</label> 1003 <input type="text" class="form-control" id="verifyMembershipLastName" required> 1004 </div> 1005 <div class="form-group"> 1006 <label class="mb-0" for="verifyMembershipEmailAddress">Email Address</label> 1007 <input type="email" class="form-control" id="verifyMembershipEmailAddress" required> 1008 </div> 1009 </form> 1010 </div> 1011 <div class="modal-footer justify-content-between"> 1012 <button type="button" class="btn btn-secondary" data-dismiss="modal" data-bs-dismiss="modal">Close</button> 1013 <button type="button" class="btn btn-primary" id="btnVerifyMembershipDetails" onclick="verifyMembershipDetails(); return false;">Submit</button> 1014 <button type="button" class="btn btn-primary" id="btnUpdateBasketUsingMembership" onclick="updateBasketUsingMembership(); return false;">Submit</button> 1015 </div> 1016 </div> 1017 </div> 1018</div> 1019 1020<div class="modal fade" id="modalCharityDonation" tabindex="-1" role="dialog" aria-hidden="true"> 1021 <div class="modal-dialog modal-dialog-centered" role="document"> 1022 <div class="modal-content"> 1023 <div class="modal-header"> 1024 <h5 class="modal-title"><span class="sr-only">charity product</span></h5> 1025 </div> 1026 <div class="modal-body"> 1027 1028 1029 1030 </div> 1031 <div class="modal-footer justify-content-between"> 1032 <button type="button" class="btn btn-secondary" data-dismiss="modal" data-bs-dismiss="modal">Close</button> 1033 </div> 1034 </div> 1035 </div> 1036</div> 1037
1038<script nonce="OeCjAV4mDlBIq5bEdm2iD5irzyBDtE/Bdtl7KNXATjA="> 1039 window.dataLayer = window.dataLayer || []; 1040</script>
1040 1041 1042
1042<script nonce="OeCjAV4mDlBIq5bEdm2iD5irzyBDtE/Bdtl7KNXATjA="> 1043 dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. 1044 dataLayer.push({ 1045 event: "view_item", 1046 ecommerce: { 1047 currency: "GBP", 1048 value: 0, 1049 items: [ 1050 { 1051 item_id: "gift_voucher", 1052 item_name: "Gift Voucher", 1053 affiliation: "Cantref", 1054 coupon: "", 1055 discount: 0, 1056 index: 1, 1057 item_brand: "Product", 1058 item_category: "", 1059 item_category2: "", 1060 item_category3: "", 1061 item_category4: "", 1062 item_category5: "", 1063 item_list_id: "", 1064 item_list_name: "Products", 1065 item_variant: "", 1066 item_location: "Cantref", 1067 location_id: "", 1068 price: 0, 1069 quantity: 1, 1070 }, 1071 ] 1072 } 1073 }); 1074 </script>
1074 1075 1076 <!-- Notify modal --> 1077 <div class="modal fade" id="notifyModal" tabindex="-1" aria-labelledby="notifyModalLabel" aria-hidden="true"> 1078 <div class="modal-dialog modal-dialog-centered"> 1079 <div class="modal-content"> 1080 <div class="modal-header"> 1081 <h5 class="modal-title" id="notifyModalLabel">...</h5> 1082 </div> 1083 <div class="modal-body"> 1084 ... 1085 </div> 1086 <div class="modal-footer d-flex justify-content-between"> 1087 <button type="button" class="btn btn-secondary" data-dismiss="modal" data-bs-dismiss="modal">Continue Shopping</button> 1088 <a href="/shop/basket" class="btn btn-primary">Checkout</a> 1089 </div> 1090 </div> 1091 </div> 1092 </div> 1093
1093<script nonce="OeCjAV4mDlBIq5bEdm2iD5irzyBDtE/Bdtl7KNXATjA="> 1094 $(document).ready(function() { 1095 $('#voucherValueSelector').on('change', function() { 1096 console.log($(this).val()); 1097 1098 if ($(this).val() == "Custom") { 1099 $('#voucherValueField').fadeIn(); 1100 $('#voucherValueFieldWrapper').fadeIn(); 1101 $('#voucherValueField').val(""); 1102 $('#voucherValueField').focus(); 1103 } else { 1104 $('#voucherValueField').fadeOut(); 1105 $('#voucherValueFieldWrapper').fadeOut(); 1106 $('#voucherValueField').val($(this).val()); 1107 } 1108 }); 1109 }); 1110 </script>
1110 1111
1111<script nonce="OeCjAV4mDlBIq5bEdm2iD5irzyBDtE/Bdtl7KNXATjA="> 1112 $(document).ready(function() { 1113 $('.optionsSelector').change(function() { 1114 // bea assigning the selected suboption's id to the hidden field. 1115 id = $(this).val(); 1116 item = $(this).find(':selected'); 1117 1118 $('#productId').val(id); 1119 1120 minQty = 1; 1121 maxQty = 10; 1122 1123 if (parseInt($(this).find(':selected').attr('data-minqty')) > 0){ 1124 minQty = parseInt($(this).find(':selected').attr('data-minqty')); 1125 } 1126 if (parseInt($(this).find(':selected').attr('data-maxqty')) > 0){ 1127 maxQty = parseInt($(this).find(':selected').attr('data-maxqty')); 1128 } 1129 1130 html = ""; 1131 for(var i = minQty; i <= maxQty; i++){ 1132 html += "<option value="+i+">"+i+"</option>"; 1133 } 1134 1135 $("#qty_559").html(html); 1136 }); 1137 1138 1139 }); 1140 function addProductToBasket(productid, qty, prodname) { 1141 var subOptionProductId = $('#productId').val(); 1142 if(subOptionProductId && subOptionProductId > 0) { 1143 productid = subOptionProductId 1144 } 1145 $('#submitSelection').html("Loading..."); 1146 1147 if (!qty) qty = 1; 1148 $.ajax({ 1149 url: '/shop/ajax.php', 1150 type: 'POST', 1151 async: false, 1152 dataType: 'json', 1153 data: { 1154 'addProductToBasketNew': 1, 1155 'productid': productid, 1156 'qty': qty, 1157 'ajax': 1 1158 }, 1159 complete: function(data) {}, 1160 success: function(newBasket, status) { 1161 if (status == 'success') { 1162 $('#headerBasketCount').html(newBasket.count); 1163 $('#submitSelection').html('Add to basket'); 1164 let confirmHTML = '<div class="row">'; 1165 confirmHTML += '<div class="col">'; 1166 confirmHTML += qty + 'x ' + prodname + ' have been added to your basket</div>'; 1167 confirmHTML += '</div>'; 1168 confirmHTML += '</div>'; 1169 1170 $('#notifyModal .modal-title').html('Success!'); 1171 $('#notifyModal .modal-body').html(confirmHTML); 1172 $('#notifyModal').modal('show'); 1173 } else { 1174 $('#submitSelection').html('Add to basket'); 1175 $('#notifyModal .modal-title').html('Error!'); 1176 $('#notifyModal .modal-body').html('Error adding product to the basket.'); 1177 $('#notifyModal').modal('show'); 1178 } 1179 }, 1180 error: function(jqXHR, textStatus, errorThrown) { 1181 $('#submitSelection').html('Add to basket'); 1182 $('#notifyModal .modal-title').html('Error!'); 1183 $('#notifyModal .modal-body').html('Error adding product to the basket.'); 1184 $('#notifyModal').modal('show'); 1185 }, 1186 }); 1187 } 1188 function updateLocation(productId) { 1189 locationId = $("#location_" + productId + " :selected").val(); 1190 locationName = $("#location_" + productId + " :selected").text(); 1191 minQty = $("#location_" + productId + " :selected").data("minqty"); 1192 maxQty = $("#location_" + productId + " :selected").data("maxqty"); 1193 minPrice = $("#location_" + productId + " :selected").data("minprice"); 1194 maxPrice = $("#location_" + productId + " :selected").data("maxprice"); 1195 1196 $("#productData_" + productId).attr("data-locationid", locationId).attr("data-locationname", locationName).attr("data-minqty", minQty).attr("data-maxqty", maxQty).attr("data-minprice", minPrice).attr( 1197 "data-maxprice", maxPrice); 1198 1199 $(".locationId_" + productId).text(locationId); 1200 $(".locationName_" + productId).text(locationName); 1201 $(".minQty_" + productId).text(minQty); 1202 $(".maxQty_" + productId).text(maxQty); 1203 $(".minPrice_" + productId).html(showprice(minPrice)); 1204 $(".maxPrice_" + productId).html(showprice(maxPrice)); 1205 $(".price_" + productId).html(showprice(minPrice)); 1206
1207 recalcPrice(productId); 1208 } 1209 1210 function recalcPrice(productId) { 1211 qty = $("#qty_" + productId + " :selected").val(); 1212 1213 price = parseFloat(''); 1214 totalPrice = qty * price; 1215 1216 //$(".qty_" + productId).text(qty); 1217 $("#totalPrice_" + productId).html(showprice(totalPrice)); 1218 1219 1220 $("#productTotal").html(showprice(totalPrice)); 1221 } 1222 1223 function buyCashGiftVoucher () { 1224 const productid = $("#modal-voucher-product-id").val(); 1225 const to = $("#modal-voucher-to").val(); 1226 const from = $("#modal-voucher-from").val(); 1227 $('#buyCashGiftVoucherModal .modal-body .form-control.required').each(function() { 1228 if ($(this).val() == "") { 1229 $(this).addClass("is-invalid"); 1230 } else { 1231 $(this).removeClass("is-invalid"); 1232 } 1233 }); 1234 const toFieldEmpty = to == ""; 1235 const fromFieldEmpty = from == ""; 1236 if (toFieldEmpty) { 1237 return false; 1238 } 1239 const message = $("#modal-voucher-message").val(); 1240 console.log(productid) 1241 $("#voucherTo_"+productid).val(to); 1242 $("#voucherFrom_"+productid).val(from); 1243 $("#voucherMessage_"+productid).val(message); 1244 $("#form_"+productid).submit(); 1245 } 1246 //Update modal form and button id once modal is opened 1247 $('#buyCashGiftVoucherModal').on('show.bs.modal', function (event) { 1248 const button = $(event.relatedTarget) 1249 $("#modal-voucher-product-id").val(button.data('productid')); 1250 }) 1251 </script>
1251 1252</body> 1253</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.