{"id":5003,"date":"2021-09-23T17:54:45","date_gmt":"2021-09-23T20:54:45","guid":{"rendered":"https:\/\/home.dbosco.com.br\/?page_id=5003"},"modified":"2026-10-23T10:16:55","modified_gmt":"2026-10-23T13:16:55","slug":"agendamento-visita","status":"publish","type":"page","link":"https:\/\/home.dbosco.com.br\/index.php\/agendamento-visita\/","title":{"rendered":"Agendamento de Visita"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5003\" class=\"elementor elementor-5003\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-95c8d7f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"95c8d7f\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;video&quot;,&quot;background_video_link&quot;:&quot;https:\\\/\\\/home.dbosco.com.br\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/video-background.mp4&quot;,&quot;background_play_on_mobile&quot;:&quot;yes&quot;}\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-background-video-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<video class=\"elementor-background-video-hosted\" role=\"presentation\" autoplay muted playsinline loop><\/video>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-829728f ot-flex-column-vertical\" data-id=\"829728f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-05214fa elementor-widget elementor-widget-spacer\" data-id=\"05214fa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0532bd7 elementor-widget elementor-widget-iheading\" data-id=\"0532bd7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"iheading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"ot-heading left-align text-light wrap__text_stroke\">\r\n\t\t\t\r\n\t\t\t\t\t\t\t<div class=\"heading__text_stroke\">agende<\/div>\r\n\t\t\t\t\r\n\r\n\t         \r\n\r\n\t        \t        \t<h2 class=\"main-heading\">Agende sua visita<\/h2>\r\n\t        \t    <\/div>\r\n\t    \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6ebba54 elementor-widget elementor-widget-spacer\" data-id=\"6ebba54\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9bf39dd elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9bf39dd\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-602f2b3 ot-flex-column-vertical\" data-id=\"602f2b3\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-713e98c elementor-widget elementor-widget-html\" data-id=\"713e98c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\r\n  .form-card { max-width: 680px; margin: 0 auto; background: #ffffff; padding: 30px; border-radius: 12px; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); font-family: inherit; }\r\n  .level-title { font-size: 1.5rem; font-weight: 700; color: #1a1a1a; margin-bottom: 24px; border-bottom: 2px solid #f0f0f0; padding-bottom: 12px; }\r\n  .form-student { background: #fdfdfd; border: 1px solid #e2e8f0; border-radius: 8px; padding: 20px; margin-bottom: 24px; }\r\n  .form-row { display: flex; gap: 16px; margin-bottom: 16px; }\r\n  .form-row.full { display: block; }\r\n  .form-group { flex: 1; display: flex; flex-direction: column; }\r\n  .form-group label { font-size: 1.05rem !important; font-weight: 600 !important; color: #2d3748 !important; margin-bottom: 8px !important; display: inline-block; }\r\n  .form-group .req { color: #e53e3e; margin-left: 4px; font-size: 1.05rem !important; }\r\n  .form-group input, .form-group select { width: 100%; height: 48px; padding: 10px 14px; border: 1px solid #cbd5e0; border-radius: 6px; font-size: 1rem !important; outline: none; transition: border-color 0.2s; background-color: #ffffff; box-sizing: border-box; }\r\n  .form-group input:focus, .form-group select:focus { border-color: #6b3fa0; }\r\n  .form-group input:disabled, .form-group select:disabled { background-color: #f7fafc; color: #718096; cursor: not-allowed; }\r\n  .meetings-iframe-container { margin: 20px 0; min-height: 500px; }\r\n  .meetings-iframe-container iframe { width: 100% !important; border: none !important; min-height: 650px; }\r\n  .btn-submit { display: block; width: 100%; padding: 14px; background-color: #f5c518; color: #52307c; font-weight: 800; font-size: 1rem; border: none; border-radius: 8px; cursor: pointer; transition: background-color 0.2s, transform 0.2s; margin-top: 20px; }\r\n  .btn-submit:hover:not(:disabled) { background-color: #e0af00; transform: translateY(-2px); }\r\n  .btn-submit:disabled { background-color: #cbd5e0; color: #718096; cursor: not-allowed; transform: none; }\r\n  .success-msg { text-align: center; font-size: 1.25rem; font-weight: 600; color: #2f855a; padding: 40px 20px; }\r\n  @media (max-width: 600px) { .form-row { flex-direction: column; gap: 12px; } }\r\n<\/style>\r\n\r\n<div class=\"form-card\"><\/div>\r\n\r\n<script charset=\"utf-8\" type=\"text\/javascript\" src=\"\/\/js.hsforms.net\/forms\/embed\/v2.js\"><\/script>\r\n<script>\r\n  const API_URL = 'https:\/\/home.dbosco.com.br\/api\/hubspot-agendamento-de-visitas.php';\r\n  const API_HEADERS = { 'Content-Type': 'application\/json' };\r\n  const API_GET_HEADERS = {};\r\n\r\n  let qtyChildrens = 0;\r\n  const yearClass = [];\r\n  const segmentoByIndex = {}; \r\n  let responsavel = { nome: '', sobrenome: '', email: '', telefone: '' };\r\n  let serieOpcoes = []; \r\n  const alunosList = []; \r\n  const agendamentos = {}; \r\n  const agendamentoDuracoes = {}; \r\n  const agendamentoUrls = {}; \r\n  let currentLevelPage = 0; \r\n  const _reagendamentoDealIds = {}; \r\n\r\n  window.addEventListener('message', function (e) {\r\n    if (!e.data || !e.data.meetingBookSucceeded) return;\r\n    const payload = e.data.meetingsPayload || e.data.meetingPayload || {};\r\n    const booking = payload.bookingResponse || {};\r\n    const eventData = booking.event || {};\r\n    const ts = eventData.dateTime || null;\r\n\r\n    const iframes = document.querySelectorAll('.meetings-iframe-container iframe');\r\n    let pageIdx = null;\r\n    for (let i = 0; i < iframes.length; i++) {\r\n      if (iframes[i].contentWindow === e.source) {\r\n        const container = iframes[i].closest('.level-page');\r\n        if (container) {\r\n          pageIdx = parseInt(container.getAttribute('data-page'));\r\n        }\r\n        break;\r\n      }\r\n    }\r\n    if (pageIdx === null || isNaN(pageIdx)) pageIdx = currentLevelPage;\r\n\r\n    agendamentos[pageIdx] = ts ? new Date(ts).toISOString() : null;\r\n    agendamentoDuracoes[pageIdx] = eventData.duration || 0;\r\n    atualizarBotaoPagina(pageIdx);\r\n  });\r\n\r\n  function atualizarBotaoPagina(pageIdx) {\r\n    const pageEl = document.querySelector(`.level-page[data-page=\"${pageIdx}\"]`);\r\n    if (!pageEl) return;\r\n    const meetingOk = !!agendamentos[pageIdx];\r\n    let fieldsOk = true;\r\n    pageEl.querySelectorAll('.form-student').forEach(function (studentEl) {\r\n      const nomeEl = studentEl.querySelector('[id^=\"f-aluno-nome-\"]');\r\n      if (!nomeEl) return;\r\n      const idx = nomeEl.id.replace('f-aluno-nome-', '');\r\n      ['f-aluno-nome-', 'f-aluno-sobrenome-', 'f-aluno-nasc-', 'f-aluno-escola-', 'f-aluno-turno-'].forEach(function (prefix) {\r\n        const el = document.getElementById(prefix + idx);\r\n        if (el && !el.disabled && !(el.value || '').trim()) fieldsOk = false;\r\n      });\r\n    });\r\n    const btn = pageEl.querySelector('.btn-submit');\r\n    if (btn) btn.disabled = !(meetingOk && fieldsOk);\r\n  }\r\n\r\n  const hb = document.getElementById('hamburger');\r\n  const nm = document.getElementById('navMenu');\r\n  if (hb && nm) {\r\n    hb.addEventListener('click', () => {\r\n      nm.classList.toggle('open');\r\n      const [a, b, c] = hb.querySelectorAll('span');\r\n      if (nm.classList.contains('open')) {\r\n        a.style.transform = 'rotate(45deg) translate(5px,6px)';\r\n        b.style.opacity = '0';\r\n        c.style.transform = 'rotate(-45deg) translate(5px,-6px)';\r\n      } else {\r\n        [a, b, c].forEach((s) => {\r\n          s.style.transform = '';\r\n          s.style.opacity = '';\r\n        });\r\n      }\r\n    });\r\n  }\r\n\r\n  let _pendingPages = null;\r\n\r\n  function escapeHtml(str) {\r\n    return String(str)\r\n      .replace(\/&\/g, '&amp;')\r\n      .replace(\/\"\/g, '&quot;')\r\n      .replace(\/<\/g, '&lt;')\r\n      .replace(\/>\/g, '&gt;');\r\n  }\r\n\r\n  (function initReagendamento() {\r\n    const params = new URLSearchParams(window.location.search);\r\n    if (params.get('reagendar') !== '1') return;\r\n    const grupoKey = params.get('grupo') || '';\r\n    if (!grupoKey) return;\r\n    const formCard = document.querySelector('.form-card');\r\n    if (formCard) {\r\n      formCard.innerHTML = '<p style=\"text-align:center;padding:40px;color:#6B3FA0;\">Carregando dados do agendamento...<\/p>';\r\n    }\r\n    fetch(API_URL + '?action=grupo&id=' + encodeURIComponent(grupoKey), {\r\n      headers: API_GET_HEADERS,\r\n    })\r\n      .then(function (r) {\r\n        if (!r.ok) throw new Error('HTTP ' + r.status);\r\n        return r.json();\r\n      })\r\n      .then(function (data) {\r\n        if (!data.deals || !data.deals.length) {\r\n          if (formCard)\r\n            formCard.innerHTML = '<p style=\"text-align:center;color:red;\">N\u00e3o foi poss\u00edvel carregar os dados.<\/p>';\r\n          return;\r\n        }\r\n        const resp = data.responsavel || {};\r\n        responsavel.nome = resp.nome || '';\r\n        responsavel.sobrenome = resp.sobrenome || '';\r\n        responsavel.email = resp.email || '';\r\n        responsavel.telefone = resp.telefone || '';\r\n\r\n        const segmentoToLevel = {\r\n          Infantil: 'infantil',\r\n          'Fundamental I': 'iniciais',\r\n          'Fundamental II': 'finais',\r\n          'Ensino M\u00e9dio': 'medio',\r\n        };\r\n        const levelConfig = {\r\n          infantil: {\r\n            label: 'Educa\u00e7\u00e3o Infantil',\r\n            url: 'https:\/\/meetings.hubspot.com\/infantil-atendimento\/agendamento-de-visitas-educacao-infantil',\r\n          },\r\n          iniciais: {\r\n            label: 'Fundamental Anos Iniciais',\r\n            url: 'https:\/\/meetings.hubspot.com\/atendimento-fundamental-1\/agendamento-de-visitas-fundamental-anos-iniciais',\r\n          },\r\n          finais: {\r\n            label: 'Fundamental Anos Finais',\r\n            url: 'https:\/\/meetings.hubspot.com\/atendimento-fundamenta-2\/agendamento-de-visitas-fundamental-anos-finais-',\r\n          },\r\n          medio: {\r\n            label: 'Ensino M\u00e9dio',\r\n            url: 'https:\/\/meetings.hubspot.com\/atendimento-medio\/agendamento-de-visita-ensino-medio-clone',\r\n          },\r\n        };\r\n        const levelOrder = ['infantil', 'iniciais', 'finais', 'medio'];\r\n        const groups = {};\r\n        data.deals.forEach(function (deal, flatIdx) {\r\n          const level = segmentoToLevel[deal.segmento] || 'infantil';\r\n          if (!groups[level]) groups[level] = [];\r\n          groups[level].push({ index: flatIdx, deal: deal });\r\n          yearClass[flatIdx] = deal.ano_serie || '';\r\n          segmentoByIndex[flatIdx] = deal.segmento || '';\r\n          _reagendamentoDealIds[flatIdx] = deal.id || null;\r\n        });\r\n        _pendingPages = levelOrder\r\n          .filter(function (l) { return !!groups[l]; })\r\n          .map(function (l) { return { level: l, students: groups[l], config: levelConfig[l] }; });\r\n\r\n        let buildForm = '';\r\n        _pendingPages.forEach(function (page, pageIdx) {\r\n          const isLast = pageIdx === _pendingPages.length - 1;\r\n          const hidden = pageIdx === 0 ? '' : 'display:none';\r\n          buildForm += '<div class=\"level-page\" data-page=\"' + pageIdx + '\" style=\"' + hidden + '\">';\r\n          buildForm += '<h3 class=\"level-title\">' + page.config.label + '<\/h3>';\r\n\r\n          page.students.forEach(function (item) {\r\n            const index = item.index;\r\n            const d = item.deal;\r\n            const nomeVal = escapeHtml(d.nome || '');\r\n            const sobreVal = escapeHtml(d.sobrenome || '');\r\n            const nascVal = escapeHtml(d.nasc || '');\r\n            const escolaVal = escapeHtml(d.escola || '');\r\n            const turnoMat = d.turno === 'Matutino' ? ' selected' : '';\r\n            const turnoVes = d.turno === 'Vespertino' ? ' selected' : '';\r\n            const turnoADef = d.turno === 'A definir' ? ' selected' : '';\r\n            buildForm += `\r\n              <div class=\"form-student\">\r\n                  <div class=\"form-row\">\r\n                      <div class=\"form-group\">\r\n                          <label>Nome do Aluno ${index + 1}<span class=\"req\">*<\/span><\/label>\r\n                          <input type=\"text\" id=\"f-aluno-nome-${index}\" autocomplete=\"given-name\" placeholder=\"\" value=\"${nomeVal}\" disabled\/>\r\n                      <\/div>\r\n                      <div class=\"form-group\">\r\n                          <label>Sobrenome do Aluno ${index + 1}<span class=\"req\">*<\/span><\/label>\r\n                          <input type=\"text\" id=\"f-aluno-sobrenome-${index}\" autocomplete=\"family-name\" placeholder=\"\" value=\"${sobreVal}\" disabled\/>\r\n                      <\/div>\r\n                  <\/div>\r\n                  <div class=\"form-row full\">\r\n                      <div class=\"form-group\">\r\n                          <label>Data de Nascimento do Aluno ${index + 1}<span class=\"req\">*<\/span><\/label>\r\n                          <input type=\"date\" id=\"f-aluno-nasc-${index}\" max=\"\" value=\"${nascVal}\" disabled\/>\r\n                      <\/div>\r\n                  <\/div>\r\n                  <div class=\"form-row\">\r\n                      <div class=\"form-group\">\r\n                          <label>Escola de Origem do Aluno ${index + 1}<span class=\"req\">*<\/span><\/label>\r\n                          <input type=\"text\" id=\"f-aluno-escola-${index}\" placeholder=\"Nome da escola atual\" value=\"${escolaVal}\" disabled\/>\r\n                      <\/div>\r\n                      <div class=\"form-group\">\r\n                          <label>Turno de Interesse do Aluno ${index + 1}<span class=\"req\">*<\/span><\/label>\r\n                          <select id=\"f-aluno-turno-${index}\" disabled>\r\n                              <option value=\"\">Selecione...<\/option>\r\n                              <option value=\"Matutino\"${turnoMat}>Matutino<\/option>\r\n                              <option value=\"Vespertino\"${turnoVes}>Vespertino<\/option>\r\n                              <option value=\"A definir\"${turnoADef}>A definir<\/option>\r\n                          <\/select>\r\n                      <\/div>\r\n                  <\/div>\r\n              <\/div>`;\r\n          });\r\n\r\n          if (page.config.url) {\r\n            const embedParams = new URLSearchParams({\r\n              embed: 'true',\r\n              firstName: responsavel.nome,\r\n              lastName: responsavel.sobrenome,\r\n              email: responsavel.email,\r\n            });\r\n            agendamentoUrls[pageIdx] = page.config.url;\r\n            buildForm += '<div class=\"meetings-iframe-container\" data-src=\"' + page.config.url + '?' + embedParams + '\"><\/div>';\r\n          }\r\n\r\n          if (isLast) {\r\n            buildForm += '<button class=\"btn-submit\" disabled onclick=\"submitAluno()\">Clique aqui para confirmar<\/button>';\r\n          } else {\r\n            buildForm += '<button class=\"btn-submit\" disabled onclick=\"nextLevelPage(' + pageIdx + ')\">Avan\u00e7ar<\/button>';\r\n          }\r\n          buildForm += '<\/div>';\r\n        });\r\n\r\n        if (formCard) formCard.innerHTML = buildForm;\r\n        window.scrollTo({ top: 0, behavior: 'smooth' });\r\n\r\n        const existingEmbed = document.querySelector('script[src*=\"MeetingsEmbedCode\"]');\r\n        if (existingEmbed) existingEmbed.remove();\r\n        const embedScript = document.createElement('script');\r\n        embedScript.type = 'text\/javascript';\r\n        embedScript.src = 'https:\/\/static.hsappstatic.net\/MeetingsEmbed\/ex\/MeetingsEmbedCode.js';\r\n        document.body.appendChild(embedScript);\r\n      })\r\n      .catch(function (err) {\r\n        console.error('Erro ao carregar dados de reagendamento:', err);\r\n        if (formCard)\r\n          formCard.innerHTML = '<p style=\"text-align:center;color:red;\">Erro ao carregar dados. Tente novamente.<\/p>';\r\n      });\r\n  })();\r\n\r\n  if (!new URLSearchParams(window.location.search).get('reagendar')) {\r\n    hbspt.forms.create({\r\n      portalId: '2961792',\r\n      formId: '8cf2a626-7114-4edb-a13e-c6562f705e24',\r\n      region: 'na1',\r\n      target: '.form-card',\r\n\r\n      onFormReady: function ($form) {\r\n        $form = typeof($form.querySelector) === 'function' ? $form : $form[0];\r\n        if (!$form) return;\r\n\r\n        const SUFFIX = '-8cf2a626-7114-4edb-a13e-c6562f705e24';\r\n\r\n        const section = document.createElement('div');\r\n        section.id = 'year-series-section';\r\n        const submitBtn = $form.querySelector('.hs-submit');\r\n        if (submitBtn) {\r\n          $form.insertBefore(section, submitBtn);\r\n        } else {\r\n          $form.appendChild(section);\r\n        }\r\n\r\n        function renderDropdowns() {\r\n          const nFilhosEl = $form.querySelector(`#n_mero_de_filhos${SUFFIX}`);\r\n          const qty = nFilhosEl ? Number(nFilhosEl.value) : 0;\r\n          if (qty < 1 || !serieOpcoes.length) {\r\n            section.innerHTML = '';\r\n            return;\r\n          }\r\n\r\n          const prev = [];\r\n          const existing = section.querySelectorAll('select');\r\n          for (let i = 0; i < qty; i++) {\r\n            prev[i] = existing[i] ? existing[i].value : yearClass[i] || '';\r\n          }\r\n\r\n          let html = '';\r\n          for (let i = 0; i < qty; i++) {\r\n            html += `\r\n                <div class=\"hs-form-field\" style=\"margin-bottom:14px\">\r\n                    <label class=\"hs-label\">\r\n                        Ano\/S\u00e9rie do Filho ${i + 1}<span class=\"hs-form-required\"> *<\/span>\r\n                    <\/label>\r\n                    <div class=\"input\">\r\n                        <select id=\"ys-${i}\" class=\"hs-input\" style=\"width:100%\">\r\n                            <option value=\"\">Selecione...<\/option>\r\n                            ${serieOpcoes.map((o) => `<option value=\"${o.value}\"${o.value === prev[i] ? ' selected' : ''}>${o.label}<\/option>`).join('')}\r\n                        <\/select>\r\n                    <\/div>\r\n                <\/div>`;\r\n          }\r\n          section.innerHTML = html;\r\n\r\n          const newSelects = section.querySelectorAll('select');\r\n          for (let i = 0; i < qty; i++) {\r\n            yearClass[i] = prev[i];\r\n            const sel = newSelects[i];\r\n            if (sel) {\r\n              const idx = i;\r\n              sel.addEventListener('change', function () {\r\n                yearClass[idx] = this.value;\r\n              });\r\n            }\r\n          }\r\n        }\r\n\r\n        fetch(API_URL + '?action=opcoes', { headers: API_GET_HEADERS })\r\n          .then((r) => r.json())\r\n          .then((opcoes) => {\r\n            serieOpcoes = opcoes;\r\n            renderDropdowns();\r\n          })\r\n          .catch(() => console.error('Erro ao buscar op\u00e7\u00f5es de ano\/s\u00e9rie'));\r\n\r\n        let lastQty = -1;\r\n        setInterval(function () {\r\n          const nFilhosEl = $form.querySelector(`#n_mero_de_filhos${SUFFIX}`);\r\n          if (nFilhosEl) {\r\n            const atualQty = Number(nFilhosEl.value) || 0;\r\n            if (atualQty !== lastQty) {\r\n              lastQty = atualQty;\r\n              renderDropdowns();\r\n            }\r\n          }\r\n        }, 500);\r\n\r\n        const phoneEl = $form.querySelector(`#mobilephone${SUFFIX}`);\r\n        if (phoneEl) {\r\n          phoneEl.setAttribute('maxlength', '15');\r\n          phoneEl.setAttribute('inputmode', 'numeric');\r\n          phoneEl.addEventListener('input', function () {\r\n            let v = this.value.replace(\/\\D\/g, '').slice(0, 11);\r\n            if (v.length > 10) {\r\n              v = '(' + v.slice(0, 2) + ') ' + v.slice(2, 7) + '-' + v.slice(7);\r\n            } else if (v.length > 6) {\r\n              v = '(' + v.slice(0, 2) + ') ' + v.slice(2, 6) + '-' + v.slice(6);\r\n            } else if (v.length > 2) {\r\n              v = '(' + v.slice(0, 2) + ') ' + v.slice(2);\r\n            } else if (v.length > 0) {\r\n              v = '(' + v;\r\n            }\r\n            this.value = v;\r\n          });\r\n          phoneEl.addEventListener('keydown', function (e) {\r\n            if ([8, 9, 46, 37, 38, 39, 40].indexOf(e.keyCode) !== -1) return;\r\n            if ((e.ctrlKey || e.metaKey) && [65, 67, 86, 88].indexOf(e.keyCode) !== -1) return;\r\n            if (e.key && !\/\\d\/.test(e.key)) e.preventDefault();\r\n          });\r\n        }\r\n      },\r\n      onBeforeFormSubmit: function ($form) {\r\n        $form = typeof($form.querySelector) === 'function' ? $form : $form[0];\r\n        if (!$form) return;\r\n\r\n        const areaField = Array.from(\r\n          $form.querySelectorAll('#n_mero_de_filhos-8cf2a626-7114-4edb-a13e-c6562f705e24'),\r\n        );\r\n        qtyChildrens = areaField[0] ? areaField[0].value : 0;\r\n\r\n        const SUFFIX = '-8cf2a626-7114-4edb-a13e-c6562f705e24';\r\n\r\n        responsavel.nome = ($form.querySelector(`#firstname${SUFFIX}`) || {}).value || '';\r\n        responsavel.sobrenome = ($form.querySelector(`#lastname${SUFFIX}`) || {}).value || '';\r\n        responsavel.email = ($form.querySelector(`#email${SUFFIX}`) || {}).value || '';\r\n        responsavel.telefone = ($form.querySelector(`#mobilephone${SUFFIX}`) || {}).value || '';\r\n\r\n        const qty = Number(qtyChildrens);\r\n\r\n        function classifyLevel(yearValue) {\r\n          const opt = serieOpcoes.find((o) => o.value === yearValue);\r\n          const raw = opt ? opt.label : yearValue;\r\n          const v = (raw || '').toLowerCase().normalize('NFD').replace(\/[\u0300-\u036f]\/g, '');\r\n          if (v.includes('serie') || v.includes('medio')) return 'medio';\r\n          if (v.includes('maternal') || v.includes('mini')) return 'infantil';\r\n          const match = v.match(\/(\\d+)\/);\r\n          if (!match) return 'infantil';\r\n          const num = parseInt(match[1]);\r\n          \r\n          \/\/ Regra do 1\u00ba ano direcionada para a Educa\u00e7\u00e3o Infantil\r\n          if (num === 1) return 'infantil';\r\n          if (num >= 6 && num <= 9) return 'finais';\r\n          if (num >= 2 && num <= 5) return 'iniciais';\r\n          return 'infantil';\r\n        }\r\n\r\n        const levelConfig = {\r\n          infantil: {\r\n            label: 'Educa\u00e7\u00e3o Infantil',\r\n            url: 'https:\/\/meetings.hubspot.com\/infantil-atendimento\/agendamento-de-visitas-educacao-infantil',\r\n          },\r\n          iniciais: {\r\n            label: 'Fundamental Anos Iniciais',\r\n            url: 'https:\/\/meetings.hubspot.com\/atendimento-fundamental-1\/agendamento-de-visitas-fundamental-anos-iniciais',\r\n          },\r\n          finais: {\r\n            label: 'Fundamental Anos Finais',\r\n            url: 'https:\/\/meetings.hubspot.com\/atendimento-fundamenta-2\/agendamento-de-visitas-fundamental-anos-finais-',\r\n          },\r\n          medio: {\r\n            label: 'Ensino M\u00e9dio',\r\n            url: 'https:\/\/meetings.hubspot.com\/atendimento-medio\/agendamento-de-visita-ensino-medio-clone',\r\n          },\r\n        };\r\n\r\n        const levelOrder = ['infantil', 'iniciais', 'finais', 'medio'];\r\n        const groups = {};\r\n        const segmentoValues = {\r\n          infantil: 'Infantil',\r\n          iniciais: 'Fundamental I',\r\n          finais: 'Fundamental II',\r\n          medio: 'Ensino M\u00e9dio',\r\n        };\r\n        for (let i = 0; i < qty; i++) {\r\n          const level = classifyLevel(yearClass[i]);\r\n          if (!groups[level]) groups[level] = [];\r\n          groups[level].push({ index: i, yearValue: yearClass[i] });\r\n          segmentoByIndex[i] = segmentoValues[level] || '';\r\n        }\r\n        _pendingPages = levelOrder\r\n          .filter((l) => groups[l])\r\n          .map((l) => ({\r\n            level: l,\r\n            students: groups[l],\r\n            config: levelConfig[l],\r\n          }))\r\n          .sort((a, b) => a.students[0].index - b.students[0].index);\r\n      },\r\n      onFormSubmitted: function () {\r\n        if (!_pendingPages) return;\r\n\r\n        setTimeout(function () {\r\n          fetch(API_URL, {\r\n            method: 'POST',\r\n            headers: API_HEADERS,\r\n            body: JSON.stringify({ responsavel, alunosList: [] }),\r\n          }).catch((err) => console.error('Erro ao atualizar contato early:', err));\r\n        }, 3000); \r\n\r\n        let buildForm = '';\r\n        _pendingPages.forEach((page, pageIdx) => {\r\n          const isLast = pageIdx === _pendingPages.length - 1;\r\n          const hidden = pageIdx === 0 ? '' : 'display:none';\r\n          buildForm += `<div class=\"level-page\" data-page=\"${pageIdx}\" style=\"${hidden}\">`;\r\n          buildForm += `<h3 class=\"level-title\">${page.config.label}<\/h3>`;\r\n\r\n          page.students.forEach(({ index }) => {\r\n            buildForm += `\r\n              <div class=\"form-student\">\r\n                  <div class=\"form-row\">\r\n                      <div class=\"form-group\">\r\n                          <label>Nome do Aluno ${index + 1}<span class=\"req\">*<\/span><\/label>\r\n                          <input type=\"text\" id=\"f-aluno-nome-${index}\" autocomplete=\"given-name\" placeholder=\"\"\/>\r\n                      <\/div>\r\n                      <div class=\"form-group\">\r\n                          <label>Sobrenome do Aluno ${index + 1}<span class=\"req\">*<\/span><\/label>\r\n                          <input type=\"text\" id=\"f-aluno-sobrenome-${index}\" autocomplete=\"family-name\" placeholder=\"\"\/>\r\n                      <\/div>\r\n                  <\/div>\r\n                  <div class=\"form-row full\">\r\n                      <div class=\"form-group\">\r\n                          <label>Data de Nascimento do Aluno ${index + 1}<span class=\"req\">*<\/span><\/label>\r\n                          <input type=\"date\" id=\"f-aluno-nasc-${index}\" min=\"1900-01-01\" max=\"${new Date().toISOString().slice(0, 10)}\"\/>\r\n                      <\/div>\r\n                  <\/div>\r\n                  <div class=\"form-row\">\r\n                      <div class=\"form-group\">\r\n                          <label>Escola de Origem do Aluno ${index + 1}<span class=\"req\">*<\/span><\/label>\r\n                          <input type=\"text\" id=\"f-aluno-escola-${index}\" placeholder=\"Nome da escola atual\"\/>\r\n                      <\/div>\r\n                      <div class=\"form-group\">\r\n                          <label>Turno de Interesse do Aluno ${index + 1}<span class=\"req\">*<\/span><\/label>\r\n                          <select id=\"f-aluno-turno-${index}\">\r\n                              <option value=\"\">Selecione...<\/option>\r\n                              <option value=\"Matutino\">Matutino<\/option>\r\n                              <option value=\"Vespertino\">Vespertino<\/option>\r\n                              <option value=\"A definir\">A definir<\/option>\r\n                          <\/select>\r\n                      <\/div>\r\n                  <\/div>\r\n              <\/div>`;\r\n          });\r\n\r\n          if (page.config.url) {\r\n            const embedParams = new URLSearchParams({\r\n              embed: 'true',\r\n              firstName: responsavel.nome,\r\n              lastName: responsavel.sobrenome,\r\n              email: responsavel.email,\r\n            });\r\n            agendamentoUrls[pageIdx] = page.config.url;\r\n            buildForm += `<div class=\"meetings-iframe-container\" data-src=\"${page.config.url}?${embedParams}\"><\/div>`;\r\n          }\r\n\r\n          if (isLast) {\r\n            buildForm += `<button class=\"btn-submit\" disabled onclick=\"submitAluno()\">Clique aqui para confirmar<\/button>`;\r\n          } else {\r\n            buildForm += `<button class=\"btn-submit\" disabled onclick=\"nextLevelPage(${pageIdx})\">Avan\u00e7ar<\/button>`;\r\n          }\r\n          buildForm += `<\/div>`;\r\n        });\r\n\r\n        document.querySelector('.form-card').innerHTML = buildForm;\r\n        window.scrollTo({ top: 0, behavior: 'smooth' });\r\n\r\n        document.querySelectorAll('.level-page').forEach(function (pageEl) {\r\n          const pIdx = parseInt(pageEl.getAttribute('data-page'));\r\n          pageEl.querySelectorAll('input, select').forEach(function (el) {\r\n            el.addEventListener('input', function () { atualizarBotaoPagina(pIdx); });\r\n            el.addEventListener('change', function () { atualizarBotaoPagina(pIdx); });\r\n          });\r\n        });\r\n\r\n        const existingEmbed = document.querySelector('script[src*=\"MeetingsEmbedCode\"]');\r\n        if (existingEmbed) existingEmbed.remove();\r\n        const embedScript = document.createElement('script');\r\n        embedScript.type = 'text\/javascript';\r\n        embedScript.src = 'https:\/\/static.hsappstatic.net\/MeetingsEmbed\/ex\/MeetingsEmbedCode.js';\r\n        document.body.appendChild(embedScript);\r\n      },\r\n    });\r\n  } \r\n\r\n  function coletarAlunosDaPagina(pageIdx) {\r\n    const pageEl = document.querySelector(`.level-page[data-page=\"${pageIdx}\"]`);\r\n    if (!pageEl) return;\r\n    const nivel = (pageEl.querySelector('.level-title') || {}).textContent || '';\r\n    const dataAgendamento = agendamentos[pageIdx] || null;\r\n    const duracao = agendamentoDuracoes[pageIdx] || 0;\r\n    const agendamentoUrl = agendamentoUrls[pageIdx] || '';\r\n\r\n    pageEl.querySelectorAll('.form-student').forEach(function (studentEl) {\r\n      const nomeEl = studentEl.querySelector('[id^=\"f-aluno-nome-\"]');\r\n      const studentIndex = nomeEl ? nomeEl.id.replace('f-aluno-nome-', '') : '';\r\n      alunosList.push({\r\n        nome: (document.getElementById('f-aluno-nome-' + studentIndex) || {}).value || '',\r\n        sobrenome: (document.getElementById('f-aluno-sobrenome-' + studentIndex) || {}).value || '',\r\n        nasc: (document.getElementById('f-aluno-nasc-' + studentIndex) || {}).value || '',\r\n        escola: (document.getElementById('f-aluno-escola-' + studentIndex) || {}).value || '',\r\n        turno: (document.getElementById('f-aluno-turno-' + studentIndex) || {}).value || '',\r\n        nivel: nivel,\r\n        ano_serie: yearClass[parseInt(studentIndex)] || '',\r\n        segmento: segmentoByIndex[parseInt(studentIndex)] || '',\r\n        dataAgendamento: dataAgendamento,\r\n        duracao: duracao,\r\n        agendamentoUrl: agendamentoUrl,\r\n        dealId: _reagendamentoDealIds[parseInt(studentIndex)] || null,\r\n      });\r\n    });\r\n  }\r\n\r\n  function nextLevelPage(currentPage) {\r\n    currentLevelPage = currentPage;\r\n    coletarAlunosDaPagina(currentPage);\r\n    const pages = document.querySelectorAll('.level-page');\r\n    if (pages[currentPage]) pages[currentPage].style.display = 'none';\r\n    currentLevelPage = currentPage + 1;\r\n    const nextPage = pages[currentPage + 1];\r\n    if (nextPage) {\r\n      nextPage.style.display = '';\r\n      const oldContainer = nextPage.querySelector('.meetings-iframe-container');\r\n      if (oldContainer) {\r\n        const baseSrc = (oldContainer.getAttribute('data-src') || '').replace(\/([?&])_t=\\d+&?\/, '$1').replace(\/[?&]$\/, '');\r\n        if (baseSrc) {\r\n          const sep = baseSrc.includes('?') ? '&' : '?';\r\n          const newSrc = baseSrc + sep + '_t=' + Date.now();\r\n          const newContainer = document.createElement('div');\r\n          newContainer.className = 'meetings-iframe-container';\r\n          newContainer.setAttribute('data-src', newSrc);\r\n          oldContainer.parentNode.replaceChild(newContainer, oldContainer);\r\n\r\n          const existingEmbed = document.querySelector('script[src*=\"MeetingsEmbedCode\"]');\r\n          if (existingEmbed) existingEmbed.remove();\r\n          const embedScript = document.createElement('script');\r\n          embedScript.type = 'text\/javascript';\r\n          embedScript.src = 'https:\/\/static.hsappstatic.net\/MeetingsEmbed\/ex\/MeetingsEmbedCode.js';\r\n          document.body.appendChild(embedScript);\r\n        }\r\n      }\r\n    }\r\n    window.scrollTo({ top: 0, behavior: 'smooth' });\r\n  }\r\n\r\n  async function submitAluno() {\r\n    const btn = document.querySelector('.level-page:last-child .btn-submit') || document.querySelector('.btn-submit');\r\n    if (btn) {\r\n      btn.disabled = true;\r\n      btn.classList.add('loading');\r\n      btn.textContent = 'Confirmando';\r\n    }\r\n    const lastPage = document.querySelectorAll('.level-page').length - 1;\r\n    currentLevelPage = lastPage;\r\n    coletarAlunosDaPagina(lastPage);\r\n    await enviarDealsHubSpot();\r\n  }\r\n\r\n  async function enviarDealsHubSpot() {\r\n    try {\r\n      const res = await fetch(API_URL, {\r\n        method: 'POST',\r\n        headers: API_HEADERS,\r\n        body: JSON.stringify({ responsavel, alunosList }),\r\n      });\r\n      const data = await res.json();\r\n      if (!res.ok || !data.success) {\r\n        console.error('Erro ao enviar para HubSpot:', data);\r\n      }\r\n    } catch (err) {\r\n      console.error('Erro na requisi\u00e7\u00e3o ao backend HubSpot:', err);\r\n    }\r\n\r\n    const card = document.querySelector('.form-card');\r\n    const msgSucesso = alunosList.length === 1 ? 'Agendamento realizado com sucesso!' : 'Agendamentos realizados com sucesso!';\r\n    if (card) card.innerHTML = `<p class=\"success-msg\">${msgSucesso}<\/p>`;\r\n    window.scrollTo({ top: 0, behavior: 'smooth' });\r\n  }\r\n\r\n  function fillFields(selector, valor) {\r\n    const input = document.querySelector(selector);\r\n    if (!input) return;\r\n    const nativeSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;\r\n    nativeSetter.call(input, valor);\r\n    input.dispatchEvent(new Event('input', { bubbles: true }));\r\n    input.dispatchEvent(new Event('change', { bubbles: true }));\r\n  }\r\n\r\n  function closeModal() {\r\n    document.getElementById('modal').classList.remove('open');\r\n  }\r\n  const modalEl = document.getElementById('modal');\r\n  if (modalEl) {\r\n    modalEl.addEventListener('click', (e) => {\r\n      if (e.target === e.currentTarget) closeModal();\r\n    });\r\n  }\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-56fdd34 ot-flex-column-vertical\" data-id=\"56fdd34\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-79976fa elementor-widget elementor-widget-image\" data-id=\"79976fa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"202\" height=\"186\" src=\"https:\/\/i0.wp.com\/home.dbosco.com.br\/wp-content\/uploads\/2021\/09\/ilustracao-planeta.png?fit=202%2C186&amp;ssl=1\" class=\"attachment-large size-large wp-image-4994\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-54b1696 elementor-widget elementor-widget-heading\" data-id=\"54b1696\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Querida fam\u00edlia,<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fbff7d6 elementor-widget elementor-widget-text-editor\" data-id=\"fbff7d6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Sabemos que escolher uma escola \u00e9 uma importante decis\u00e3o, que requer a avalia\u00e7\u00e3o de in\u00fameros fatores, como o prop\u00f3sito, a proposta pedag\u00f3gica, equipe, infraestrutura e acolhimento. Identificar e compreender as principais diferen\u00e7as entre as escolas \u00e9 parte essencial dessa experi\u00eancia de tomada de decis\u00e3o.<\/p><p>N\u00f3s, do Dom Bosco, com a experi\u00eancia de mais de 60 anos em educa\u00e7\u00e3o, fizemos a mais intensa pesquisa de toda nossa hist\u00f3ria, para promover uma completa evolu\u00e7\u00e3o dentro e fora das nossas salas de aula. Viajamos aos pa\u00edses de maior refer\u00eancia no campo educacional no mundo, com um desafiador objetivo: tornar o Dom Bosco uma escola exponencial.<\/p><p>Entendemos que \u00e9 fundamental formar cidad\u00e3os do futuro, desenvolvendo em nossas crian\u00e7as e jovens as habilidades e compet\u00eancias necess\u00e1rias para que possam viver em um mundo complexo e em constante transforma\u00e7\u00e3o.<\/p><p>Em nossas salas, oficinas e corredores, f\u00edsicos ou digitais, temos vivido uma nova concep\u00e7\u00e3o sobre o que \u00e9 ensinar, sobre como ensinar e sobre quais recursos usar para promover um processo educativo inovador e que fa\u00e7a sentido para os alunos.<\/p><p>Nosso trabalho \u00e9 marcado por um relacionamento personalizado com as fam\u00edlias de cada um de nossos alunos. Por isso, temos o prazer de convidar, tamb\u00e9m, a sua fam\u00edlia para conhecer de perto os projetos exponenciais desenvolvidos em nossa escola.<\/p><p>Esperamos pela oportunidade de conhec\u00ea-los e dar-lhes as boas-vindas ao Dom Bosco: A escola exponencial.<\/p><p>Agende sua visita com nossa equipe de Admiss\u00f5es:<\/p><p>Ser\u00e1 um prazer receb\u00ea-los em nossa escola!<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d8080d3 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d8080d3\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1b27b41 ot-flex-column-vertical\" data-id=\"1b27b41\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>agende Agende sua visita Querida fam\u00edlia, Sabemos que escolher uma escola \u00e9 uma importante decis\u00e3o, que requer a avalia\u00e7\u00e3o de in\u00fameros fatores, como o prop\u00f3sito, a proposta pedag\u00f3gica, equipe, infraestrutura e acolhimento. Identificar e compreender as principais diferen\u00e7as entre as escolas \u00e9 parte essencial dessa experi\u00eancia de tomada de decis\u00e3o. N\u00f3s, do Dom Bosco, com [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"content-type":"","_monsterinsights_skip_tracking":false,"footnotes":""},"class_list":["post-5003","page","type-page","status-publish","hentry"],"acf":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/home.dbosco.com.br\/index.php\/wp-json\/wp\/v2\/pages\/5003","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/home.dbosco.com.br\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/home.dbosco.com.br\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/home.dbosco.com.br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/home.dbosco.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=5003"}],"version-history":[{"count":68,"href":"https:\/\/home.dbosco.com.br\/index.php\/wp-json\/wp\/v2\/pages\/5003\/revisions"}],"predecessor-version":[{"id":7782,"href":"https:\/\/home.dbosco.com.br\/index.php\/wp-json\/wp\/v2\/pages\/5003\/revisions\/7782"}],"wp:attachment":[{"href":"https:\/\/home.dbosco.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=5003"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}