{"id":2732,"date":"2026-07-27T00:32:46","date_gmt":"2026-07-26T22:32:46","guid":{"rendered":"https:\/\/www.accademiablu.net\/?page_id=2732"},"modified":"2026-07-27T10:38:45","modified_gmt":"2026-07-27T08:38:45","slug":"richiedi-prenotazione-test","status":"publish","type":"page","link":"https:\/\/www.accademiablu.net\/?page_id=2732","title":{"rendered":"Richiedi prenotazione test"},"content":{"rendered":"    <div class=\"abb-public-request\" data-lang=\"it\">\n      <div class=\"abb-public-request-card\">\n        <h2>Richiedi prenotazione<\/h2>\n        <p class=\"abb-public-intro\">Inviaci la tua richiesta. Non \u00e8 una prenotazione automatica: il nostro staff verificher\u00e0 la disponibilit\u00e0 e ti dar\u00e0 conferma.<\/p>\n\n        <form id=\"abb-public-request-form\">\n          <input type=\"hidden\" name=\"action\" value=\"abb_submit_booking_request\">\n          <input type=\"hidden\" name=\"nonce\" value=\"d657f56356\">\n          <input type=\"hidden\" name=\"message_lang\" value=\"it\">\n          <input type=\"hidden\" name=\"form_started\" value=\"1789047342\">\n\n          <div class=\"abb-public-grid2\">\n            <label>Data richiesta              <input required type=\"date\" name=\"requested_date\" min=\"2026-09-10\">\n            <\/label>\n\n            <fieldset class=\"abb-dive-choice\">\n              <legend>Quante immersioni?<\/legend>\n\n              <input class=\"abb-choice-radio\" type=\"radio\" name=\"dives_count\" id=\"abb-dive-one\" value=\"1\" checked>\n              <label class=\"abb-choice-card\" for=\"abb-dive-one\">1 immersione<\/label>\n\n              <input class=\"abb-choice-radio\" type=\"radio\" name=\"dives_count\" id=\"abb-dive-two\" value=\"2\">\n              <label class=\"abb-choice-card\" for=\"abb-dive-two\">2 immersioni<\/label>\n\n              <div class=\"abb-one-dive-panel\">\n                <label>Uscita \/ formula preferita                  <select name=\"outing_preference\">\n                    <option value=\"0900\">09:00 \u2013 Partenza barca<\/option>\n                    <option value=\"1230\">12:30 \u2013 Partenza barca<\/option>\n                    <option value=\"1700\">17:00 \u2013 Partenza barca (periodo estivo)<\/option>\n                    <option value=\"night\">Immersione notturna<\/option>\n                  <\/select>\n                <\/label>\n              <\/div>\n\n              <div class=\"abb-two-dive-panel\">\n                <div class=\"abb-two-mode-choice\">\n                  <input class=\"abb-mode-radio\" type=\"radio\" name=\"outing_mode\" id=\"abb-mode-separate\" value=\"separate\" checked>\n                  <label class=\"abb-mode-card\" for=\"abb-mode-separate\">2 uscite separate<\/label>\n\n                  <input class=\"abb-mode-radio\" type=\"radio\" name=\"outing_mode\" id=\"abb-mode-fullday\" value=\"full_day\">\n                  <label class=\"abb-mode-card\" for=\"abb-mode-fullday\">Full Day \u2013 2 immersioni restando in barca<\/label>\n\n                  <div class=\"abb-two-separate-panel\">\n                    <div class=\"abb-public-grid2\">\n                      <label>Prima immersione                        <select name=\"outing_preference_first\">\n                          <option value=\"0900\">09:00 \u2013 Partenza barca<\/option>\n                          <option value=\"1230\">12:30 \u2013 Partenza barca<\/option>\n                          <option value=\"1700\">17:00 \u2013 Partenza barca (periodo estivo)<\/option>\n                          <option value=\"night\">Immersione notturna<\/option>\n                        <\/select>\n                      <\/label>\n\n                      <label>Seconda immersione                        <select name=\"outing_preference_second\">\n                          <option value=\"1230\">12:30 \u2013 Partenza barca<\/option>\n                          <option value=\"1700\">17:00 \u2013 Partenza barca (periodo estivo)<\/option>\n                          <option value=\"night\">Immersione notturna<\/option>\n                          <option value=\"0900\">09:00 \u2013 Partenza barca<\/option>\n                        <\/select>\n                      <\/label>\n                    <\/div>\n                  <\/div>\n\n                  <div class=\"abb-full-day-panel\">\n                    <div class=\"abb-full-day-info\">\n                      Full Day \u2013 2 immersioni, restando in barca                    <\/div>\n                  <\/div>\n                <\/div>\n              <\/div>\n\n              <small class=\"abb-public-field-note\">Gli orari indicano la partenza prevista della barca. Il ritrovo al diving \u00e8 almeno 60 minuti prima.<\/small>\n            <\/fieldset>\n\n            <label>Numero partecipanti              <input required type=\"number\" name=\"pax\" min=\"1\" max=\"20\" value=\"1\">\n            <\/label>\n\n            <div class=\"abb-public-empty\"><\/div>\n\n            <label>Nome              <input required type=\"text\" name=\"first_name\" autocomplete=\"given-name\">\n            <\/label>\n\n            <label>Cognome              <input required type=\"text\" name=\"last_name\" autocomplete=\"family-name\">\n            <\/label>\n\n            <label>Telefono \/ WhatsApp              <input required type=\"tel\" name=\"phone\" autocomplete=\"tel\">\n            <\/label>\n\n            <label>Email              <input required type=\"email\" name=\"email\" autocomplete=\"email\">\n            <\/label>\n\n            <label>Brevetto \/ livello              <select name=\"level_info\" required><option value=\"OWD\">OWD \u00b7 massimo 18 metri<\/option><option value=\"ADV\">ADV \u00b7 immersione Advanced<\/option><option value=\"DEEP\">DEEP \u00b7 fino a 40 metri<\/option><\/select>\n            <\/label>\n\n            <label>Didattica              <input type=\"text\" name=\"certification_agency\" placeholder=\"SSI, SNSI, PADI, CMAS\u2026\">\n            <\/label>\n\n            <label>Hai bisogno della guida?              <select name=\"guide_need\">\n                <option value=\"unknown\">Da valutare<\/option>\n                <option value=\"yes\">S\u00ec<\/option>\n                <option value=\"no\">No \/ gruppo autonomo<\/option>\n              <\/select>\n            <\/label>\n\n            <label>Noleggio attrezzatura              <select name=\"rental\">\n                <option value=\"unknown\">Da valutare<\/option>\n                <option value=\"yes\">S\u00ec<\/option>\n                <option value=\"no\">No<\/option>\n              <\/select>\n            <\/label>\n\n            <label>Nitrox              <select name=\"nitrox\">\n                <option value=\"none\">No<\/option>\n                <option value=\"32\">Nitrox 32%<\/option>\n                <option value=\"36\">Nitrox 36%<\/option>\n              <\/select>\n              <small class=\"abb-public-field-note\">Altre percentuali vanno richieste telefonicamente e autorizzate da Accademia Blu prima della conferma.<\/small>\n            <\/label>\n          <\/div>\n\n          <label>Note            <textarea name=\"notes\" rows=\"3\" placeholder=\"Qualsiasi informazione utile\"><\/textarea>\n          <\/label>\n\n          <p class=\"abb-public-note\">La richiesta dovr\u00e0 essere confermata da Accademia Blu prima di diventare una prenotazione.<\/p>\n\n          <button type=\"submit\" class=\"abb-public-submit\">Invia richiesta di prenotazione<\/button>\n          <div class=\"abb-public-result\" aria-live=\"polite\"><\/div>\n        <\/form>\n      <\/div>\n    <\/div>\n    <script>\n    (function(){\n      const script=document.currentScript;\n      const root=script.previousElementSibling;\n      const form=root&&root.querySelector('#abb-public-request-form');\n      if(!form)return;\n      const result=form.querySelector('.abb-public-result');\n      const button=form.querySelector('.abb-public-submit');\n      const lang=root.dataset.lang==='en'?'en':'it';\n      form.addEventListener('submit',async function(event){\n        event.preventDefault();\n        if(button.disabled)return;\n        const originalLabel=button.textContent;\n        const controller=new AbortController();\n        const timeout=setTimeout(()=>controller.abort(),20000);\n        button.disabled=true;\n        button.textContent=lang==='en'?'Sending\u2026':'Invio in corso\u2026';\n        result.classList.remove('success','error','is-success','is-error');\n        result.textContent=lang==='en'?'Sending request\u2026':'Invio della richiesta\u2026';\n        try{\n          const response=await fetch(\"https:\\\/\\\/www.accademiablu.net\\\/wp\\\/wp-admin\\\/admin-ajax.php\",{\n            method:'POST',\n            credentials:'same-origin',\n            body:new FormData(form),\n            signal:controller.signal\n          });\n          const raw=await response.text();\n          let payload=null;\n          try{payload=JSON.parse(raw)}catch(_error){throw new Error(lang==='en'?'Invalid server response. Please try again.':'Risposta non valida del server. Riprova.');}\n          if(!payload||!payload.success){\n            const message=payload&&payload.data&&payload.data.message?payload.data.message:(lang==='en'?'The request could not be sent.':'Non \u00e8 stato possibile inviare la richiesta.');\n            throw new Error(message);\n          }\n          const data=payload.data||{};\n          result.classList.add('success','is-success');\n          if(data.duplicate){\n            const duplicateMessage=data.message||(lang==='en'?'A request with the same email or phone number already exists for this date and departure time.':'Esiste gi\u00e0 una richiesta con la stessa email o lo stesso numero di telefono per questa data e questo orario.');\n            result.textContent=duplicateMessage;\n            result.scrollIntoView({behavior:'smooth',block:'center'});\n            window.alert(duplicateMessage);\n          }else{\n            result.textContent=(lang==='en'\n              ?'Request received successfully. Request number: #'\n              :'Richiesta ricevuta correttamente. Numero richiesta: #')+data.id+'. '+(lang==='en'\n              ?'This is not a booking confirmation.'\n              :'Questa non \u00e8 ancora una conferma di prenotazione.');\n            form.reset();\n          }\n        }catch(error){\n          result.classList.add('error','is-error');\n          result.textContent=error&&error.name==='AbortError'\n            ?(lang==='en'?'The server is taking too long to respond. We could not verify the result: please check with us before sending it again.':'Il server sta impiegando troppo tempo. Non \u00e8 stato possibile verificare l\u2019esito: controlla prima di inviarla di nuovo.')\n            :(error&&error.message?error.message:(lang==='en'?'The request could not be sent.':'Non \u00e8 stato possibile inviare la richiesta.'));\n          result.scrollIntoView({behavior:'smooth',block:'center'});\n        }finally{\n          clearTimeout(timeout);\n          button.disabled=false;\n          button.textContent=originalLabel;\n        }\n      });\n    })();\n    <\/script>\n    <div id=\"abb-csen-test-modal\" aria-hidden=\"true\" hidden style=\"display:none!important\">\n      <div id=\"abb-csen-test-card\">\n        <div class=\"t-head\"><h3 id=\"abb-csen-test-title\">Test CSEN<\/h3><button type=\"button\" class=\"t-close\" id=\"abb-csen-test-close\">\u00d7<\/button><\/div>\n        <div class=\"t-body\" id=\"abb-csen-test-body\"><\/div>\n      <\/div>\n    <\/div>\n    <script>\n    (function(){\n      const box=document.getElementById('abb-csen-php-test'),toggle=document.getElementById('abb-csen-php-test-toggle'),\n            panel=document.getElementById('abb-csen-php-test-panel'),modal=document.getElementById('abb-csen-test-modal'),\n            body=document.getElementById('abb-csen-test-body'),title=document.getElementById('abb-csen-test-title'),\n            close=document.getElementById('abb-csen-test-close');\n      if(!box||!toggle||!panel||!modal||!body||!title||!close)return;\n\n      const openModal=(mode)=>{\n        if(mode==='expired'){\n          title.textContent='Simulazione \u00b7 Tessera CSEN scaduta';\n          body.innerHTML=`<div class=\"t-status expired\">CSEN \u21bb \u00b7 tessera TEST2059288 \u00b7 scadenza 31\/12\/2025<\/div>\n          <p>Questo \u00e8 il flusso che vedresti per un cliente con tessera scaduta.<\/p>\n          <div class=\"t-actions\"><button type=\"button\" data-close-test>Annulla<\/button><button type=\"button\" class=\"t-warning\" id=\"abb-test-renew\">Rinnova tessera CSEN \u00b7 TEST<\/button><\/div>`;\n          body.querySelector('#abb-test-renew').onclick=()=>{if(confirm('TEST: confermeresti il rinnovo reale?'))alert('TEST RIUSCITO: nel flusso reale partirebbe ora il rinnovo e l\u2019eventuale addebito. Qui non \u00e8 stato inviato nulla.')};\n        }else if(mode==='missing'){\n          title.textContent='Simulazione \u00b7 Nuova tessera CSEN';\n          body.innerHTML=`<div class=\"t-status missing\">CSEN \u2715 \u00b7 nessuna tessera trovata<\/div>\n          <p>I dati disponibili arrivano dallo scarico. Questo \u00e8 il form che vedresti prima della creazione reale.<\/p>\n          <div class=\"t-grid\"><div><label>Nome<\/label><input value=\"Mario\"><\/div><div><label>Cognome<\/label><input value=\"Rossi\"><\/div><\/div>\n          <label>Codice fiscale<\/label><input value=\"RSSMRA80A01H501U\">\n          <div class=\"t-grid\"><div><label>Sesso<\/label><select><option>M<\/option><option>F<\/option><\/select><\/div><div><label>Data di nascita<\/label><input value=\"01\/01\/1980\"><\/div><\/div>\n          <label>Luogo di nascita<\/label><input value=\"Roma\">\n          <div class=\"t-grid\"><div><label>Provincia nascita<\/label><input value=\"RM\"><\/div><div><label>Codice catastale<\/label><input value=\"H501\"><\/div><\/div>\n          <label>Email<\/label><input value=\"cliente@example.it\"><label>Telefono<\/label><input value=\"+39 333 0000000\">\n          <p style=\"font-size:12px;color:#687781\">Silver Base \u00b7 Atleta Praticante \u00b7 Attivit\u00e0 Subacquee (AG010).<\/p>\n          <div class=\"t-actions\"><button type=\"button\" data-close-test>Annulla<\/button><button type=\"button\" class=\"t-primary\" id=\"abb-test-create\">Conferma e crea tessera CSEN \u00b7 TEST<\/button><\/div>`;\n          body.querySelector('#abb-test-create').onclick=()=>{if(confirm('TEST: confermeresti la creazione reale della tessera?'))alert('TEST RIUSCITO: nel flusso reale verrebbe creata la tessera e registrato l\u2019eventuale addebito. Qui non \u00e8 stato inviato nulla.')};\n        }else{\n          title.textContent='Simulazione \u00b7 Tessera valida';\n          body.innerHTML=`<div class=\"t-status\" style=\"background:#e6f6eb;color:#17713b\">CSEN \u2713 \u00b7 tessera TEST2600001 \u00b7 scadenza 31\/12\/2026<\/div><p>Nessuna azione richiesta.<\/p><div class=\"t-actions\"><button type=\"button\" data-close-test>Chiudi<\/button><\/div>`;\n        }\n        modal.classList.add('open');modal.setAttribute('aria-hidden','false');\n        body.querySelectorAll('[data-close-test]').forEach(b=>b.onclick=()=>close.click());\n      };\n      toggle.onclick=()=>box.classList.toggle('open');\n      panel.querySelectorAll('[data-state]').forEach(btn=>btn.onclick=()=>{box.classList.remove('open');openModal(btn.dataset.state==='missing'?'missing':btn.dataset.state==='expired'?'expired':'valid')});\n      close.onclick=()=>{modal.classList.remove('open');modal.setAttribute('aria-hidden','true')};\n      modal.addEventListener('click',e=>{if(e.target===modal)close.click()});\n    })();\n    <\/script>\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":{"footnotes":""},"class_list":["post-2732","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.accademiablu.net\/index.php?rest_route=\/wp\/v2\/pages\/2732","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.accademiablu.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.accademiablu.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.accademiablu.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.accademiablu.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2732"}],"version-history":[{"count":1,"href":"https:\/\/www.accademiablu.net\/index.php?rest_route=\/wp\/v2\/pages\/2732\/revisions"}],"predecessor-version":[{"id":2733,"href":"https:\/\/www.accademiablu.net\/index.php?rest_route=\/wp\/v2\/pages\/2732\/revisions\/2733"}],"wp:attachment":[{"href":"https:\/\/www.accademiablu.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2732"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}