{"id":12065,"date":"2025-12-15T18:23:17","date_gmt":"2025-12-15T10:23:17","guid":{"rendered":"https:\/\/balioceansurf.com\/?page_id=12065"},"modified":"2025-12-15T18:23:22","modified_gmt":"2025-12-15T10:23:22","slug":"test-xendit","status":"publish","type":"page","link":"https:\/\/balioceansurf.com\/en\/test-xendit\/","title":{"rendered":"Test Xendit"},"content":{"rendered":"\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f12064-o1\" lang=\"en-US\" dir=\"ltr\" data-wpcf7-id=\"12064\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/en\/wp-json\/wp\/v2\/pages\/12065#wpcf7-f12064-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"12064\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.5\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f12064-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<\/fieldset>\n<style>\n    \/* One item by row *\/\n    .one-item-row-display {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: 20px;\n    margin-bottom: 20px;\n    }\n\n    \/* Two items by row *\/\n    .two-items-row-display {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 20px;\n    margin-bottom: 20px;\n    }\n\n    \/* Three items by row *\/\n    .three-items-row-display {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 20px;\n    margin-bottom: 20px;\n    }\n\n    @media only screen and (max-width: 600px) {\n            .two-items-row-display,\n            .three-items-row-display {\n                grid-template-columns: 1fr; \/* One item per row for screens smaller than 600px *\/\n        }\n    }\n<\/style>\n\n<div class=\"two-items-row-display\">\n    <label> Lastname:\n        <span class=\"wpcf7-form-control-wrap\" data-name=\"your-lastname\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" aria-invalid=\"false\" placeholder=\"Lastname\" value=\"\" type=\"text\" name=\"your-lastname\" \/><\/span>\n    <\/label>\n\n    <label> Firstname:\n        <span class=\"wpcf7-form-control-wrap\" data-name=\"your-firstname\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" aria-invalid=\"false\" placeholder=\"Firstname\" value=\"\" type=\"text\" name=\"your-firstname\" \/><\/span>\n    <\/label>\n\n    <label>E-mail :\n        <span class=\"wpcf7-form-control-wrap\" data-name=\"your-email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"E-mail*\" value=\"\" type=\"email\" name=\"your-email\" \/><\/span>\n    <\/label>\n\n    <label>Phone number:\n        <span class=\"wpcf7-form-control-wrap\" data-name=\"phone_number\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-tel wpcf7-text wpcf7-validates-as-tel\" aria-invalid=\"false\" placeholder=\"Phone number, WhatsApp if possible*\" value=\"\" type=\"tel\" name=\"phone_number\" \/><\/span>\n    <\/label>\n\n    <label>Program type:\n        <span class=\"wpcf7-form-control-wrap\" data-name=\"stage_type\"><select class=\"wpcf7-form-control wpcf7-select\" id=\"select-surf-program-en\" aria-invalid=\"false\" name=\"stage_type\"><option value=\"\">&#8212;Please choose an option&#8212;<\/option><option value=\"INITIATION \u2013 1 session\">INITIATION \u2013 1 session<\/option><option value=\"SMALL WAVES \u2013 3 sessions\">SMALL WAVES \u2013 3 sessions<\/option><option value=\"SENSATION \u2013 5 sessions\">SENSATION \u2013 5 sessions<\/option><option value=\"PASSION \u2013 8 sessions\">PASSION \u2013 8 sessions<\/option><option value=\"WAVES GARDEN \u2013 1 session\">WAVES GARDEN \u2013 1 session<\/option><option value=\"COACHING \u2013 Half a day\">COACHING \u2013 Half a day<\/option><option value=\"SURF CLUB \u2013 6 months\">SURF CLUB \u2013 6 months<\/option><option value=\"SURF CLUB \u2013 12 months\">SURF CLUB \u2013 12 months<\/option><\/select><\/span>\n    <\/label>\n\n    <label> Starting date:\n        <span class=\"wpcf7-form-control-wrap\" data-name=\"date\"><input class=\"wpcf7-form-control wpcf7-date wpcf7-validates-as-date\" id=\"input-date-beginning-en\" min=\"2026-04-14\" aria-invalid=\"false\" placeholder=\"First session date*\" value=\"\" type=\"date\" name=\"date\" \/><\/span>\n    <\/label>\n<\/div>\n\n<div class=\"three-items-row-display\">\n    <label>Adults :\n        <span class=\"wpcf7-form-control-wrap\" data-name=\"adult_number\"><input class=\"wpcf7-form-control wpcf7-number wpcf7-validates-as-number\" id=\"input-adult-number-en\" min=\"0\" aria-invalid=\"false\" placeholder=\"Number*\" value=\"\" type=\"number\" name=\"adult_number\" \/><\/span>\n    <\/label>\n\n    <label>Children (under 12) :\n        <span class=\"wpcf7-form-control-wrap\" data-name=\"child12_number\"><input class=\"wpcf7-form-control wpcf7-number wpcf7-validates-as-number\" id=\"input-child12-number-en\" min=\"0\" aria-invalid=\"false\" placeholder=\"Number*\" value=\"\" type=\"number\" name=\"child12_number\" \/><\/span>\n    <\/label>\n\n    <label>Children (under 9) :\n        <span class=\"wpcf7-form-control-wrap\" data-name=\"child9_number\"><input class=\"wpcf7-form-control wpcf7-number wpcf7-validates-as-number\" id=\"input-child9-number-en\" min=\"0\" aria-invalid=\"false\" placeholder=\"Number*\" value=\"\" type=\"number\" name=\"child9_number\" \/><\/span>\n    <\/label>\n<\/div>\n\n<div class=\"two-items-row-display\">\n    <label>Preferred time slot:\n        <span class=\"wpcf7-form-control-wrap\" data-name=\"preference\"><select class=\"wpcf7-form-control wpcf7-select\" id=\"pref-period-en\" aria-invalid=\"false\" name=\"preference\"><option value=\"No preference\">No preference<\/option><option value=\"Morning\">Morning<\/option><option value=\"Afternoon\">Afternoon<\/option><\/select><\/span>\n    <\/label>\n\n    <label>Surf level:\n        <span class=\"wpcf7-form-control-wrap\" data-name=\"level\"><select class=\"wpcf7-form-control wpcf7-select\" aria-invalid=\"false\" name=\"level\"><option value=\"Beginner\">Beginner<\/option><option value=\"Intermediate\">Intermediate<\/option><option value=\"Advanced\">Advanced<\/option><option value=\"Never surfed\">Never surfed<\/option><\/select><\/span>\n    <\/label>\n<\/div>\n\n<div class=\"one-item-row-display\">\n    <label>Accommodation in Bali:\n        <span class=\"wpcf7-form-control-wrap\" data-name=\"address\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" aria-invalid=\"false\" placeholder=\"Name and address of your accommodation in Bali\" value=\"\" type=\"text\" name=\"address\" \/><\/span>\n    <\/label>\n\n    <label>Comment:\n        <span class=\"wpcf7-form-control-wrap\" data-name=\"comment\"><textarea cols=\"40\" rows=\"10\" maxlength=\"200\" class=\"wpcf7-form-control wpcf7-textarea\" aria-invalid=\"false\" placeholder=\"Details of your booking request...\" name=\"comment\"><\/textarea><\/span>\n    <\/label>\n\n    <label>Need help?\n        <span class=\"wpcf7-form-control-wrap\" data-name=\"help_checkbox\"><span class=\"wpcf7-form-control wpcf7-checkbox\"><span class=\"wpcf7-list-item first last\"><label><input type=\"checkbox\" name=\"help_checkbox[]\" value=\"Yes, I&#039;d like to be called via WhatsApp\" \/><span class=\"wpcf7-list-item-label\">Yes, I&#039;d like to be called via WhatsApp<\/span><\/label><\/span><\/span><\/span>\n    <\/label>\n    <input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"payment_type\" \/>\n<\/div>\n<div id=\"form-spinner\">\n  <svg class=\"spinner\" style=\"display:none\" width=\"30\" height=\"30\" viewBox=\"0 0 50 50\">\n    <circle class=\"path\" cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" stroke-width=\"4\" \/>\n  <\/svg>\n<\/div>\n<div class=\"two-items-row-display\">\n    <button type=\"button\" id=\"pay-now-btn\">Book Now<\/button>\n    <button type=\"button\" id=\"quote-only-btn\">Ask Quote<\/button>\n<\/div>\n\n<div class=\"one-item-row-display\" style=\"margin-top:30px;\">\n    <p style=\"font-weight:600;color:#284259;text-align:center;\" id=\"text-price-en\"><\/p>\n\n    <p style=\"font-weight:600;color:#284259;font-size:12px;display:none;\" id=\"text-condition-en\">* The displayed price is indicative and includes offers and discounts. A personalized quote will be sent to you for confirmation.<\/p>\n<\/div>\n\n<div id=\"submit-container\" style=\"display:none;\">\n  <input class=\"wpcf7-form-control wpcf7-submit has-spinner\" type=\"submit\" value=\"Submit\" \/>\n<\/div>\n\n<!-- Hidden fields for calculation and Email sending, unhide for debug ;)-->\n<div id=\"hiddenContent\" hidden>\n    <span class=\"wpcf7-form-control-wrap\" data-name=\"debug\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"debug-en\" aria-invalid=\"false\" placeholder=\"debug field\" value=\"\" type=\"text\" name=\"debug\" \/><\/span>\n\n    <span class=\"wpcf7-form-control-wrap\" data-name=\"child_number\"><input class=\"wpcf7-form-control wpcf7-number wpcf7-validates-as-number\" id=\"child-number-en\" aria-invalid=\"false\" value=\"\" type=\"number\" name=\"child_number\" \/><\/span>\n    <span class=\"wpcf7-form-control-wrap\" data-name=\"price\"><input class=\"wpcf7-form-control wpcf7-number wpcf7-validates-as-number\" id=\"input-price-en\" aria-invalid=\"false\" value=\"\" type=\"number\" name=\"price\" \/><\/span>\n    <span class=\"wpcf7-form-control-wrap\" data-name=\"price_EUR\"><input class=\"wpcf7-form-control wpcf7-number wpcf7-validates-as-number\" id=\"price-eur-en\" aria-invalid=\"false\" value=\"\" type=\"number\" name=\"price_EUR\" \/><\/span>\n    <span class=\"wpcf7-form-control-wrap\" data-name=\"price_adult\"><input class=\"wpcf7-form-control wpcf7-number wpcf7-validates-as-number\" id=\"price-adult-en\" aria-invalid=\"false\" value=\"\" type=\"number\" name=\"price_adult\" \/><\/span>\n    <span class=\"wpcf7-form-control-wrap\" data-name=\"price_child\"><input class=\"wpcf7-form-control wpcf7-number wpcf7-validates-as-number\" id=\"price-child-en\" aria-invalid=\"false\" value=\"\" type=\"number\" name=\"price_child\" \/><\/span>\n    <span class=\"wpcf7-form-control-wrap\" data-name=\"acompte_IDR\"><input class=\"wpcf7-form-control wpcf7-number wpcf7-validates-as-number\" id=\"ack-IDR-en\" aria-invalid=\"false\" value=\"\" type=\"number\" name=\"acompte_IDR\" \/><\/span>\n    <span class=\"wpcf7-form-control-wrap\" data-name=\"acompte_EUR\"><input class=\"wpcf7-form-control wpcf7-number wpcf7-validates-as-number\" id=\"ack-EUR-en\" aria-invalid=\"false\" value=\"\" type=\"number\" name=\"acompte_EUR\" \/><\/span>\n    <span class=\"wpcf7-form-control-wrap\" data-name=\"date_pretty_format\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"date-pretty-format-en\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"date_pretty_format\" \/><\/span>\n    <span class=\"wpcf7-form-control-wrap\" data-name=\"stage_title\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"stage-title-en\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"stage_title\" \/><\/span>\n    <span class=\"wpcf7-form-control-wrap\" data-name=\"period_pref_ack\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"period-pref-ack-en\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"period_pref_ack\" \/><\/span>\n    <span class=\"wpcf7-form-control-wrap\" data-name=\"discount_msg\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"discount-msg-en\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"discount_msg\" \/><\/span>\n<\/div>\n\n<script>\n    \/\/ Infos des prix et des r\u00e9ductions pour chaque programme en fonction du nombre de participants\n    const surfPrograms = {\n        \"INITIATION \u2013 1 session\": { adult_price: 990000, child_price: 820000, discount: [1, 1, 1, 0.9, 0.9, 0.85, 0.85, 0.8] },\n        \"SMALL WAVES \u2013 3 sessions\": { adult_price: 2790000, child_price: 2290000, discount: [1, 1, 0.95, 0.9, 0.9, 0.85, 0.85, 0.8] },\n        \"SENSATION \u2013 5 sessions\": { adult_price: 4490000, child_price: 3650000, discount: [1, 1, 0.95, 0.85, 0.85, 0.8, 0.8, 0.75] },\n        \"PASSION \u2013 8 sessions\": { adult_price: 5990000, child_price: 5390000, discount: [1, 1, 0.95, 0.85, 0.85, 0.8, 0.8, 0.75] },\n    };\n\n    const customCourses = {\n        \"WAVES GARDEN \u2013 1 session\": { price: 820000 },\n        \"COACHING \u2013 Half a day\": { price: 1490000 },\n        \"SURF CLUB \u2013 6 months\": { price: 5990000 },\n        \"SURF CLUB \u2013 12 months\": { price: 9490000 },\n    };\n\n    let selectSurfProgram = document.querySelector(\"#select-surf-program-en\");\n    let inputDateBeginning = document.querySelector(\"#input-date-beginning-en\");\n    let inputAdultNumber = document.querySelector(\"#input-adult-number-en\");\n    let inputChild9Number = document.querySelector(\"#input-child9-number-en\");\n    let inputChild12Number = document.querySelector(\"#input-child12-number-en\");\n    let textPrice = document.querySelector(\"#text-price-en\");\n    let prefPeriod = document.querySelector(\"#pref-period-en\");\n\n    \/\/ Variables permettant d'afficher au moment choisi les informations et\/ou de r\u00e9cup\u00e9rer les infos des champs masqu\u00e9s \u00e0 mettre dans les mails\n    let debug = document.querySelector(\"#debug-en\");\n    let childNumber = document.querySelector(\"#child-number-en\");\n    let inputPriceValue = document.querySelector(\"#input-price-en\");\n    let textCondition = document.querySelector(\"#text-condition-en\");\n    let prettyDate = document.querySelector(\"#date-pretty-format-en\");\n    let stageTitle = document.querySelector(\"#stage-title-en\");\n    let periodPrefAck = document.querySelector(\"#period-pref-ack-en\");\n    let priceEUR = document.querySelector(\"#price-eur-en\");\n    let priceAdult = document.querySelector(\"#price-adult-en\");\n    let priceChild = document.querySelector(\"#price-child-en\");\n    let ackEUR = document.querySelector(\"#ack-EUR-en\");\n    let ackIDR = document.querySelector(\"#ack-IDR-en\");\n    let discountMsg = document.querySelector(\"#discount-msg-en\");\n\n    \/\/ Listeners pour update en temps r\u00e9el les champs de saisie d'\u00e2ge et le calcul de la tarification en fonction du stage, de date et du nombre de participants\n    selectSurfProgram.addEventListener(\"change\", calculatePrice);\n    inputDateBeginning.addEventListener(\"change\", calculatePrice);\n    inputAdultNumber.addEventListener(\"change\", calculatePrice);\n    inputChild9Number.addEventListener(\"change\", calculatePrice);\n    inputChild12Number.addEventListener(\"change\", calculatePrice);\n\n    \/\/ Autres listeners pour l'update des champs calcul\u00e9s et envoy\u00e9s dans le mail de r\u00e9cap\n    inputDateBeginning.addEventListener(\"change\", updatePrettyDate);\n    selectSurfProgram.addEventListener(\"change\", updateStageTitle);\n    selectSurfProgram.addEventListener(\"change\", updatePrices);\n    prefPeriod.addEventListener(\"change\", updateAckText);\n\n    \/\/ Redirection \u00e0 l'envoi du formulaire & GAnalytics\n    document.addEventListener('wpcf7mailsent', function (event) {\n    setTimeout(() => {\n        fetch('\/wp-json\/bosurf\/redirect')\n            .then(r => r.json())\n            .then(d => {\n                if (d.url) {\n                    window.location.href = d.url;\n                }\n            });\n    }, 800);\n        if (typeof gtag === 'function') {\n            gtag('event', 'conversion_event_submit_lead_form', {\n            'event_category': 'Form',\n            'event_label': 'Lead Form Submission',\n            'value': 1\n            });\n        }\n    });\n\n    \/\/ Fonction allant r\u00e9cup\u00e9rer en live le taux de change pour faire la conversion IDR->currency\n    const API_URL = 'https:\/\/open.er-api.com\/v6\/latest\/IDR'\n    async function exchangeRateFromIDR(currency) {\n        let response = await fetch(API_URL);\n        let rates = await response.json();\n        let rate = rates.rates[currency];\n        let adjustedRate = rate * 0.97;\n        return adjustedRate;\n    }\n\n    \/\/ Fonction op\u00e9rant la translation 'yyyy-mm-dd' to 'dd Month yyyy'\n    function updatePrettyDate() {\n        \/\/ Cr\u00e9ation du nouvel objet Date \u00e0 partir de la saisie\n        const date = new Date(inputDateBeginning.value);\n\n        \/\/ D\u00e9finition des options pour toLocaleDateString et formattage\n        const options = { day: '2-digit', month: 'long', year: 'numeric' };\n        prettyDate.value = date.toLocaleDateString('en-GB', options);\n    }\n\n    \/\/ R\u00e9cup\u00e9ration du titre du stage uniquement\n    function updateStageTitle() {\n        stageTitle.value = selectSurfProgram.value.split(\" \u2013 \")[0]\n    }\n\n    function updatePrices() {\n        if (selectSurfProgram.value && surfPrograms[selectSurfProgram.value]) {\n            const data = surfPrograms[selectSurfProgram.value];\n            priceAdult.value = data.adult_price;\n            priceChild.value = data.child_price;\n        } else {\n            priceAdult.value = \"\";\n            priceChild.value = \"\";\n        }\n    }\n\n    function updateAckText() {\n        \/\/ R\u00e9cup\u00e9ration du champs s\u00e9lectionn\u00e9\n        if (prefPeriod.value == \"Morning\") {\n            periodPrefAck.value = \"morning\";\n        } else if (prefPeriod.value == \"Afternoon\") {\n            periodPrefAck.value = \"afternoon\";\n        } else {\n            periodPrefAck.value = \"morning\/afternoon\";\n        }\n    }\n\n    \/\/ Calcul du nombre de jours entre la date actuelle et la date de d\u00e9but du stage (pour potentielle promotion)\n    function verifPromoTempo() {\n        const currentDate = new Date();\n        const todayYear = currentDate.getFullYear();\n        const todayMonth = currentDate.getMonth() + 1;\n        const todayDate = currentDate.getDate();\n\n        const oneDay = 24 * 60 * 60 * 1000;\n        const formattedToday = `${todayYear}-${todayMonth < 10 ? '0' : ''}${todayMonth}-${todayDate < 10 ? '0' : ''}${todayDate}`; \/\/ yyyy-mm-dd\n        const timeDiff = Math.abs(new Date(inputDateBeginning.value) - new Date(formattedToday));\n        const daysDiff = Math.floor(timeDiff \/ oneDay);\n\n        return daysDiff;\n    }\n\n    \/\/ Fonction de calcul du prix en fonction du stage, des participants et de la date de d\u00e9but\n    function calculatePrice() {\n        \/\/ Test sur le type de stage s\u00e9lectionn\u00e9, le nombre de participants et le nombre d'\u00e2ges saisis\n        if (surfPrograms[selectSurfProgram.value] && (inputAdultNumber.value > 0 || inputChild12Number.value > 0 || inputChild9Number.value > 0)) {\n            let program = surfPrograms[selectSurfProgram.value]\n            \/\/ Calcul du prix par participant en fonction de l'\u00e2ge\n            childNumber.value = Number(inputChild12Number.value) + Number(inputChild9Number.value);\n            let totalParticipantNumber = Number(childNumber.value) + Number(inputAdultNumber.value);\n            let totalPrice = program.adult_price*Number(inputAdultNumber.value) + program.child_price*Number(childNumber.value);\n\n            \/\/ Application de la r\u00e9duction sur la nombre de participants\n            let reducePrice = totalPrice;\n            if (totalParticipantNumber <= program.discount.length) {\n                reducePrice = Math.round(totalPrice * program.discount[totalParticipantNumber - 1]);\n            } else {\n                \/\/ Si le nombre de participants d\u00e9passe la taille du tableau, application du dernier taux de r\u00e9duction du tableau\n                reducePrice = Math.round(totalPrice * program.discount[program.discount.length - 1]);\n            }\n\n            \/\/ Application de la r\u00e9duction Tempo de 5% (booking 60 jours avant)\n            if (verifPromoTempo() > 60) {\n                reducePrice = Math.round(reducePrice * 0.95);\n            }\n\n            \/\/ Acompte \u00e0 25% du prix en dessous de 1000\u20ac, et 50% au del\u00e0\n            let ackRate = reducePrice < 10000000 ? 0.25 : 0.5;\n\n            \/\/ Conversion asynchrone IDR->EUR\n            exchangeRateFromIDR(\"EUR\")\n            .then(exchangeRate => {\n                priceEUR.value = Math.round(reducePrice * exchangeRate)\n                \/\/ Calcul des acomptes\n                ackEUR.value = Math.round(priceEUR.value * ackRate)\n            });\n            reducePrice.value = Math.round(reducePrice.value); \/\/ On arrondi finalement le prix avant de calculer l'acompte\n            ackIDR.value = Math.round(reducePrice * ackRate)\n\n            inputPriceValue.value = reducePrice;\n            textPrice.innerHTML =  \"The amount of your reservation is \" + reducePrice.toLocaleString('id-ID') + \"* IDR\";\n            if (reducePrice < totalPrice) {\n                textPrice.innerHTML += `<span style=\"font-style: italic; color:#284259;\"> after discount, instead of <s>${totalPrice} IDR<\/s><\/span>`;\n                discountMsg.value = \"after discount, instead of \" + totalPrice + \" IDR\";\n            } else {\n                discountMsg.value = \"\"\n            }\n\n            \/\/ Affichage du texte avec conditions\n            textCondition.style.display = 'block';\n\n        } else if (customCourses[selectSurfProgram.value]) {\n            textPrice.textContent = \"We will contact you upon receiving the form to offer you personalized rates.\";\n            textCondition.style.display = 'none';\n        } else {\n            \/\/ Reset si aucun programme ne correspond\n            textPrice.textContent = \"\";\n            textCondition.style.display = 'none';\n        }\n    }\n\ndocument.addEventListener('DOMContentLoaded', function () {\n  const form = document.querySelector('.wpcf7 form');\n  const payBtn = document.getElementById('pay-now-btn');\n  const quoteBtn = document.getElementById('quote-only-btn');\n  const paymentField = document.querySelector('input[name=\"payment_type\"]');\n  const submitBtn = document.querySelector('.wpcf7-submit');\n\n  \/\/ BOOK NOW \u2192 payment\n  payBtn.addEventListener('click', function () {\n    paymentField.value = 'pay';\n    submitBtn.click();\n  });\n\n  \/\/ ASK QUOTE \u2192 normal CF7\n  quoteBtn.addEventListener('click', function () {\n    paymentField.value = 'quote';\n    submitBtn.click();\n  });\n});\n\n    document.addEventListener('DOMContentLoaded', calculatePrice);\n\ndocument.addEventListener('wpcf7mailsent', function () {\n  const paymentField = document.querySelector('input[name=\"payment_type\"]');\n  if (paymentField.value !== 'pay') return;\n\n  setTimeout(() => {\n    fetch('\/wp-json\/bosurf\/payment')\n      .then(r => r.json())\n      .then(d => {\n        if (d.url) window.location.href = d.url;\n      });\n  }, 800);\n});\n<\/script><input type=\"hidden\" id=\"ct_checkjs_cf7_cfecdb276f634854f3ef915e2e980c31\" name=\"ct_checkjs_cf7\" value=\"0\" \/><script >setTimeout(function(){var ct_input_name = \"ct_checkjs_cf7_cfecdb276f634854f3ef915e2e980c31\";if (document.getElementById(ct_input_name) !== null) {var ct_input_value = document.getElementById(ct_input_name).value;document.getElementById(ct_input_name).value = document.getElementById(ct_input_name).value.replace(ct_input_value, 'bc3badcd75080b8dc815e35086886060b3d44edf948b17c7399be5c60c2b5dba');}}, 1000);<\/script><input\n                    class=\"apbct_special_field apbct_email_id__wp_contact_form_7\"\n                    name=\"apbct__email_id__wp_contact_form_7\"\n                    aria-label=\"apbct__label_id__wp_contact_form_7\"\n                    type=\"text\" size=\"30\" maxlength=\"200\" autocomplete=\"off\"\n                    value=\"\"\n                \/><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-12065","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Test Xendit - Bali Ocean Surf<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/balioceansurf.com\/en\/test-xendit\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Test Xendit - Bali Ocean Surf\" \/>\n<meta property=\"og:url\" content=\"https:\/\/balioceansurf.com\/en\/test-xendit\/\" \/>\n<meta property=\"og:site_name\" content=\"Bali Ocean Surf\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/web.facebook.com\/coursdesurfabali\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-15T10:23:22+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/balioceansurf.com\/test-xendit\/\",\"url\":\"https:\/\/balioceansurf.com\/test-xendit\/\",\"name\":\"Test Xendit - Bali Ocean Surf\",\"isPartOf\":{\"@id\":\"https:\/\/balioceansurf.com\/en\/#website\"},\"datePublished\":\"2025-12-15T10:23:17+00:00\",\"dateModified\":\"2025-12-15T10:23:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/balioceansurf.com\/test-xendit\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/balioceansurf.com\/test-xendit\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/balioceansurf.com\/test-xendit\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/balioceansurf.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Test Xendit\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/balioceansurf.com\/en\/#website\",\"url\":\"https:\/\/balioceansurf.com\/en\/\",\"name\":\"Bali Ocean Surf\",\"description\":\"\u00c9cole de Surf Fran\u00e7aise\",\"publisher\":{\"@id\":\"https:\/\/balioceansurf.com\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/balioceansurf.com\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/balioceansurf.com\/en\/#organization\",\"name\":\"Bali Ocean Surf\",\"url\":\"https:\/\/balioceansurf.com\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/balioceansurf.com\/en\/#\/schema\/logo\/image\/\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Bali Ocean Surf\"},\"image\":{\"@id\":\"https:\/\/balioceansurf.com\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/web.facebook.com\/coursdesurfabali\",\"https:\/\/www.instagram.com\/balioceansurf\/\",\"https:\/\/www.tripadvisor.fr\/Attraction_Review-g297697-d4858501-Reviews-Bali_Ocean_Surf-Kuta_Kuta_District_Bali.html\",\"https:\/\/www.youtube.com\/channel\/UCfuC4yTURISNuUexgbhfN8w\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Test Xendit - Bali Ocean Surf","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/balioceansurf.com\/en\/test-xendit\/","og_locale":"en_US","og_type":"article","og_title":"Test Xendit - Bali Ocean Surf","og_url":"https:\/\/balioceansurf.com\/en\/test-xendit\/","og_site_name":"Bali Ocean Surf","article_publisher":"https:\/\/web.facebook.com\/coursdesurfabali","article_modified_time":"2025-12-15T10:23:22+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/balioceansurf.com\/test-xendit\/","url":"https:\/\/balioceansurf.com\/test-xendit\/","name":"Test Xendit - Bali Ocean Surf","isPartOf":{"@id":"https:\/\/balioceansurf.com\/en\/#website"},"datePublished":"2025-12-15T10:23:17+00:00","dateModified":"2025-12-15T10:23:22+00:00","breadcrumb":{"@id":"https:\/\/balioceansurf.com\/test-xendit\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/balioceansurf.com\/test-xendit\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/balioceansurf.com\/test-xendit\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/balioceansurf.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Test Xendit"}]},{"@type":"WebSite","@id":"https:\/\/balioceansurf.com\/en\/#website","url":"https:\/\/balioceansurf.com\/en\/","name":"Bali Ocean Surf","description":"Certified Surf School","publisher":{"@id":"https:\/\/balioceansurf.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/balioceansurf.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/balioceansurf.com\/en\/#organization","name":"Bali Ocean Surf","url":"https:\/\/balioceansurf.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/balioceansurf.com\/en\/#\/schema\/logo\/image\/","url":"","contentUrl":"","caption":"Bali Ocean Surf"},"image":{"@id":"https:\/\/balioceansurf.com\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/web.facebook.com\/coursdesurfabali","https:\/\/www.instagram.com\/balioceansurf\/","https:\/\/www.tripadvisor.fr\/Attraction_Review-g297697-d4858501-Reviews-Bali_Ocean_Surf-Kuta_Kuta_District_Bali.html","https:\/\/www.youtube.com\/channel\/UCfuC4yTURISNuUexgbhfN8w"]}]}},"_links":{"self":[{"href":"https:\/\/balioceansurf.com\/en\/wp-json\/wp\/v2\/pages\/12065","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/balioceansurf.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/balioceansurf.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/balioceansurf.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/balioceansurf.com\/en\/wp-json\/wp\/v2\/comments?post=12065"}],"version-history":[{"count":1,"href":"https:\/\/balioceansurf.com\/en\/wp-json\/wp\/v2\/pages\/12065\/revisions"}],"predecessor-version":[{"id":12066,"href":"https:\/\/balioceansurf.com\/en\/wp-json\/wp\/v2\/pages\/12065\/revisions\/12066"}],"wp:attachment":[{"href":"https:\/\/balioceansurf.com\/en\/wp-json\/wp\/v2\/media?parent=12065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/balioceansurf.com\/en\/wp-json\/wp\/v2\/categories?post=12065"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/balioceansurf.com\/en\/wp-json\/wp\/v2\/tags?post=12065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}