{"id":4842,"date":"2025-07-02T09:21:27","date_gmt":"2025-07-02T09:21:27","guid":{"rendered":"https:\/\/bhutanspiritsanctuary.com\/staging\/?page_id=4842"},"modified":"2025-07-28T20:21:15","modified_gmt":"2025-07-28T20:21:15","slug":"sanctuarys-summer-promotion","status":"publish","type":"page","link":"https:\/\/bhutanspiritsanctuary.com\/de_lang\/promotions\/sanctuarys-summer-promotion\/","title":{"rendered":"Sanctuary&#8217;s Summer Promotion"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"4842\" class=\"elementor elementor-4842\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fa3558c e-con-full e-flex e-con e-parent\" data-id=\"fa3558c\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1ec2e6a e-flex e-con-boxed e-con e-parent\" data-id=\"1ec2e6a\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2bc300b elementor-widget__width-initial elementor-widget-mobile__width-initial elementor-widget elementor-widget-html\" data-id=\"2bc300b\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<section class=\"journey-intro\" style=\"width: 100%; padding: 2rem 2.3rem; background-color: #FDFBF5;\">\r\n<h1 style=\"line-height: 1\">\r\n  Sanctuary's Summer Promotion\r\n<\/h1>\r\n\r\n  <p style=\"font-size: 1.1rem; color: #444;\">\r\n    Make a reservation now.<br>\r\n    We will get in touch and help you finalize the booking.\r\n  <\/p>\r\n<\/section>\r\n<form id=\"multiStepForm\" class=\"bg-cream form-validate\" action=\"https:\/\/formspree.io\/f\/xeogpbrr\" method=\"POST\" novalidate>\r\n<input type=\"hidden\" name=\"_subject\" id=\"_subject\">\r\n    <div class=\"form-step form-step-active pt-5\">\r\n        <div class=\"form-horizontal\">\r\n            <div class=\"form-group\">\r\n                <label for=\"name\">Name:<\/label>\r\n                <input type=\"text\" id=\"name\" name=\"name\" required>\r\n                <span class=\"error-message\"><\/span>\r\n            <\/div>\r\n            <div class=\"form-group\">\r\n                <label for=\"email\">Email:<\/label>\r\n                <input type=\"email\" id=\"email\" name=\"email\" required>\r\n                <span class=\"error-message\"><\/span>\r\n            <\/div>\r\n        <\/div>\r\n        <label for=\"phone\">Your Phone Number:<\/label>\r\n        <input type=\"tel\" id=\"phone\" name=\"phone\">\r\n        <span class=\"error-message\"><\/span>\r\n        <label for=\"guests\">Number of Guests:<\/label>\r\n        <input type=\"number\" id=\"guests\" name=\"number_of_guest\" required>\r\n        <span class=\"error-message\"><\/span>\r\n\r\n        <p class=\"pt-4 mb-0\">For check-out, please select a date later than your arrival date.<\/p>\r\n        <div class=\"form-horizontal\">\r\n            <div class=\"form-group\">\r\n                <label for=\"checkin\">Check-in Date:<\/label>\r\n                <input type=\"date\" id=\"checkin\" name=\"checkin\" required>\r\n                <span class=\"error-message\"><\/span>\r\n            <\/div>\r\n            <div class=\"form-group\">\r\n                <label for=\"checkout\">Check-out Date:<\/label>\r\n                <input type=\"date\" id=\"checkout\" name=\"checkout\" required>\r\n                <span class=\"error-message\"><\/span>\r\n            <\/div>\r\n        <\/div>\r\n        <label for=\"remarks\">Remarks<\/label>\r\n        <textarea id=\"remarks\" name=\"remarks\" style=\"height: 100px;\"><\/textarea>\r\n        <span class=\"error-message\"><\/span>\r\n        <div class=\"clearfix pt-50\">\r\n            <button type=\"button\" class=\"btn-next\">Next<\/button>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"form-step pt-5\">\r\n        <h2>Confirm Details<\/h2>\r\n        <p>Please review your details before submitting:<\/p>\r\n        <div class=\"review-section\">\r\n            <p><strong>Name:<\/strong> <span id=\"review-name\"><\/span><\/p>\r\n            <p><strong>Email:<\/strong> <span id=\"review-email\"><\/span><\/p>\r\n            <p><strong>Phone:<\/strong> <span id=\"review-phone\"><\/span><\/p>\r\n            <p><strong>Number of Guests:<\/strong> <span id=\"review-guests\"><\/span><\/p>\r\n            <p><strong>Check-in Date:<\/strong> <span id=\"review-checkin\"><\/span><\/p>\r\n            <p><strong>Check-out Date:<\/strong> <span id=\"review-checkout\"><\/span><\/p>\r\n            <p><strong>Remarks:<\/strong> <span id=\"review-remarks\"><\/span><\/p>\r\n        <\/div>\r\n        <div class=\"clearfix pt-50\">\r\n            <button type=\"button\" class=\"btn-prev\">Previous<\/button>\r\n            <button type=\"submit\" class=\"btn-type\">Submit<\/button>\r\n        <\/div>\r\n    <\/div>\r\n<input type=\"hidden\" name=\"subject\" value=\"New enquiry from {{ name }}\">  \r\n<\/form>\r\n<script>\r\n  \/\/ ========================\r\n  \/\/ \u2705 SUMMER PROMOTION FORM \u2014 MULTISTEP + FULL DATE VALIDATION\r\n  \/\/ ========================\r\n  document.addEventListener(\"DOMContentLoaded\", function () {\r\n    const nextBtn = document.querySelector(\".btn-next\");\r\n    const prevBtn = document.querySelector(\".btn-prev\");\r\n    const submitBtn = document.querySelector(\".btn-type\");\r\n    const formSteps = document.querySelectorAll(\".form-step\");\r\n    let currentStep = 0;\r\n\r\n    const checkinInput = document.getElementById(\"checkin\");\r\n    const checkoutInput = document.getElementById(\"checkout\");\r\n\r\n    \/\/ ========================\r\n    \/\/ \u2705 VALIDATE FIELDS + DATES\r\n    \/\/ ========================\r\n    function validateFields(step) {\r\n      let isValid = true;\r\n      const inputs = formSteps[step].querySelectorAll(\"input[required], textarea[required]\");\r\n\r\n      inputs.forEach(input => {\r\n        const errorSpan = input.nextElementSibling;\r\n        if (!input.value.trim()) {\r\n          input.classList.add(\"error\");\r\n          if (errorSpan) errorSpan.textContent = \"This field is required.\";\r\n          isValid = false;\r\n        } else {\r\n          input.classList.remove(\"error\");\r\n          if (errorSpan) errorSpan.textContent = \"\";\r\n        }\r\n      });\r\n\r\n      \/\/ \u2705 Date must not be in the past\r\n      if (step === 0 && checkinInput.value) {\r\n        const checkinDate = new Date(checkinInput.value);\r\n        const today = new Date(); today.setHours(0, 0, 0, 0);\r\n        const error = checkinInput.nextElementSibling;\r\n\r\n        if (checkinDate < today) {\r\n          checkinInput.classList.add(\"error\");\r\n          error.textContent = \"Check-in cannot be in the past.\";\r\n          isValid = false;\r\n        } else {\r\n          checkinInput.classList.remove(\"error\");\r\n          error.textContent = \"\";\r\n        }\r\n      }\r\n\r\n      \/\/ \u2705 Check-out must be after check-in\r\n      if (step === 0 && checkinInput.value && checkoutInput.value) {\r\n        const inDate = new Date(checkinInput.value);\r\n        const outDate = new Date(checkoutInput.value);\r\n        const error = checkoutInput.nextElementSibling;\r\n\r\n        if (outDate <= inDate) {\r\n          checkoutInput.classList.add(\"error\");\r\n          error.textContent = \"Check-out must be after check-in.\";\r\n          isValid = false;\r\n        } else {\r\n          checkoutInput.classList.remove(\"error\");\r\n          error.textContent = \"\";\r\n        }\r\n      }\r\n\r\n      return isValid;\r\n    }\r\n\r\n    \/\/ ========================\r\n    \/\/ \u2705 SYNC FORM DATA TO REVIEW STEP\r\n    \/\/ ========================\r\n    function updateReview() {\r\n      document.getElementById(\"review-name\").textContent = document.getElementById(\"name\").value;\r\n      document.getElementById(\"review-email\").textContent = document.getElementById(\"email\").value;\r\n      document.getElementById(\"review-phone\").textContent = document.getElementById(\"phone\").value;\r\n      document.getElementById(\"review-guests\").textContent = document.getElementById(\"guests\").value;\r\n      document.getElementById(\"review-checkin\").textContent = checkinInput.value;\r\n      document.getElementById(\"review-checkout\").textContent = checkoutInput.value;\r\n      document.getElementById(\"review-remarks\").textContent = document.getElementById(\"remarks\").value;\r\n    }\r\n\r\n    \/\/ ========================\r\n    \/\/ \u2705 STEP CONTROLS\r\n    \/\/ ========================\r\n    nextBtn.addEventListener(\"click\", function () {\r\n      if (!validateFields(currentStep)) return;\r\n      updateReview();\r\n      formSteps[currentStep].classList.remove(\"form-step-active\");\r\n      currentStep++;\r\n      formSteps[currentStep].classList.add(\"form-step-active\");\r\n    });\r\n\r\n    prevBtn?.addEventListener(\"click\", function () {\r\n      formSteps[currentStep].classList.remove(\"form-step-active\");\r\n      currentStep--;\r\n      formSteps[currentStep].classList.add(\"form-step-active\");\r\n    });\r\n\r\n    submitBtn.addEventListener(\"click\", function (e) {\r\n      if (!validateFields(currentStep)) e.preventDefault();\r\n    });\r\n\r\n    \/\/ ========================\r\n    \/\/ \u2705 DATE RESTRICTIONS\r\n    \/\/ ========================\r\n    const todayStr = new Date().toISOString().split(\"T\")[0];\r\n    checkinInput.setAttribute(\"min\", todayStr);\r\n    checkoutInput.setAttribute(\"min\", todayStr);\r\n\r\n    checkinInput.addEventListener(\"change\", function () {\r\n      checkoutInput.setAttribute(\"min\", checkinInput.value);\r\n    });\r\n\r\n    \/\/ ========================\r\n    \/\/ \u2705 PREVENT KEYBOARD DATE ENTRY\r\n    \/\/ ========================\r\n    [checkinInput, checkoutInput].forEach(input => {\r\n      input.addEventListener(\"keydown\", e => e.preventDefault());\r\n      input.addEventListener(\"input\", e => e.preventDefault());\r\n    });\r\n\r\n    \/\/ ========================\r\n    \/\/ \u2705 REAL-TIME DATE VALIDATION ON FOCUSOUT\r\n    \/\/ ========================\r\n    function validatePastDate(input, label) {\r\n      const date = new Date(input.value);\r\n      const today = new Date(); today.setHours(0, 0, 0, 0);\r\n      const error = input.nextElementSibling;\r\n\r\n      if (input.value && date < today) {\r\n        input.classList.add(\"error\");\r\n        error.textContent = `${label} cannot be in the past.`;\r\n      } else {\r\n        input.classList.remove(\"error\");\r\n        error.textContent = \"\";\r\n      }\r\n    }\r\n\r\n    function validateDateOrder() {\r\n      if (checkinInput.value && checkoutInput.value) {\r\n        const inDate = new Date(checkinInput.value);\r\n        const outDate = new Date(checkoutInput.value);\r\n        const error = checkoutInput.nextElementSibling;\r\n\r\n        if (outDate <= inDate) {\r\n          checkoutInput.classList.add(\"error\");\r\n          error.textContent = \"Check-out must be after check-in.\";\r\n        } else {\r\n          checkoutInput.classList.remove(\"error\");\r\n          error.textContent = \"\";\r\n        }\r\n      }\r\n    }\r\n\r\n    checkinInput.addEventListener(\"focusout\", () => {\r\n      validatePastDate(checkinInput, \"Check-in\");\r\n      validateDateOrder();\r\n    });\r\n\r\n    checkoutInput.addEventListener(\"focusout\", () => {\r\n      validatePastDate(checkoutInput, \"Check-out\");\r\n      validateDateOrder();\r\n    });\r\n  });\r\n\r\n  \/\/ ========================\r\n  \/\/ \u2705 SET EMAIL SUBJECT DYNAMICALLY\r\n  \/\/ ========================\r\n  document.querySelector('form').addEventListener('submit', function () {\r\n    const name = document.getElementById('name').value || 'Unknown';\r\n    document.querySelector('input[name=\"_subject\"]').value = `New enquiry from ${name}`;\r\n  });\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-044795d e-con-full elementor-hidden-tablet elementor-hidden-mobile e-flex e-con e-child\" data-id=\"044795d\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Sanctuary&#8217;s Summer Promotion Make a reservation now. We will get in touch and help you finalize the booking. Name: Email: Your Phone Number: Number of Guests: For check-out, please select a date later than your arrival date. Check-in Date: Check-out Date: Remarks Next Confirm Details Please review your details before submitting: Name: Email: Phone: Number [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":4093,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"unboxed","site-sidebar-style":"unboxed","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-4842","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/bhutanspiritsanctuary.com\/de_lang\/wp-json\/wp\/v2\/pages\/4842","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bhutanspiritsanctuary.com\/de_lang\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bhutanspiritsanctuary.com\/de_lang\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bhutanspiritsanctuary.com\/de_lang\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bhutanspiritsanctuary.com\/de_lang\/wp-json\/wp\/v2\/comments?post=4842"}],"version-history":[{"count":6,"href":"https:\/\/bhutanspiritsanctuary.com\/de_lang\/wp-json\/wp\/v2\/pages\/4842\/revisions"}],"predecessor-version":[{"id":6169,"href":"https:\/\/bhutanspiritsanctuary.com\/de_lang\/wp-json\/wp\/v2\/pages\/4842\/revisions\/6169"}],"up":[{"embeddable":true,"href":"https:\/\/bhutanspiritsanctuary.com\/de_lang\/wp-json\/wp\/v2\/pages\/4093"}],"wp:attachment":[{"href":"https:\/\/bhutanspiritsanctuary.com\/de_lang\/wp-json\/wp\/v2\/media?parent=4842"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}