{"id":7684,"date":"2026-09-15T15:33:59","date_gmt":"2026-09-15T18:33:59","guid":{"rendered":"https:\/\/home.dbosco.com.br\/?page_id=7684"},"modified":"2026-09-18T14:01:39","modified_gmt":"2026-09-18T17:01:39","slug":"teste","status":"publish","type":"page","link":"https:\/\/home.dbosco.com.br\/index.php\/teste\/","title":{"rendered":"teste"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"7684\" class=\"elementor elementor-7684\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-753008d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"753008d\" 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-ce30cce ot-flex-column-vertical\" data-id=\"ce30cce\" 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-27954c9 elementor-widget elementor-widget-html\" data-id=\"27954c9\" 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<script charset=\"utf-8\" type=\"text\/javascript\" src=\"\/\/js.hsforms.net\/forms\/embed\/v2.js\"><\/script>\r\n<script>\r\n  hbspt.forms.create({\r\n    portalId: \"2961792\",\r\n    formId: \"8cf2a626-7114-4edb-a13e-c6562f705e24\",\r\n    region: \"na1\"\r\n  });\r\n<\/script>\r\n\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-efa0a91 elementor-widget elementor-widget-html\" data-id=\"efa0a91\" 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 {\r\n    max-width: 680px;\r\n    margin: 0 auto;\r\n    background: #ffffff;\r\n    padding: 30px;\r\n    border-radius: 12px;\r\n    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);\r\n    font-family: inherit;\r\n  }\r\n  .level-title {\r\n    font-size: 1.5rem;\r\n    font-weight: 700;\r\n    color: #1a1a1a;\r\n    margin-bottom: 24px;\r\n    border-bottom: 2px solid #f0f0f0;\r\n    padding-bottom: 12px;\r\n  }\r\n  .form-student {\r\n    background: #fdfdfd;\r\n    border: 1px solid #e2e8f0;\r\n    border-radius: 8px;\r\n    padding: 20px;\r\n    margin-bottom: 24px;\r\n  }\r\n  .form-row {\r\n    display: flex;\r\n    gap: 16px;\r\n    margin-bottom: 16px;\r\n  }\r\n  .form-row.full {\r\n    display: block;\r\n  }\r\n  .form-group {\r\n    flex: 1;\r\n    display: flex;\r\n    flex-direction: column;\r\n  }\r\n  .form-group label {\r\n    font-size: 1.05rem !important;\r\n    font-weight: 600 !important;\r\n    color: #2d3748 !important;\r\n    margin-bottom: 8px !important;\r\n    display: inline-block;\r\n  }\r\n  .form-group .req {\r\n    color: #e53e3e;\r\n    margin-left: 4px;\r\n    font-size: 1.05rem !important;\r\n  }\r\n  .form-group input,\r\n  .form-group select {\r\n    width: 100%;\r\n    height: 48px;\r\n    padding: 10px 14px;\r\n    border: 1px solid #cbd5e0;\r\n    border-radius: 6px;\r\n    font-size: 1rem !important;\r\n    outline: none;\r\n    transition: border-color 0.2s;\r\n    background-color: #ffffff;\r\n    box-sizing: border-box;\r\n  }\r\n  .form-group input:focus,\r\n  .form-group select:focus {\r\n    border-color: #6b3fa0;\r\n  }\r\n  .form-group input:disabled,\r\n  .form-group select:disabled {\r\n    background-color: #f7fafc;\r\n    color: #718096;\r\n    cursor: not-allowed;\r\n  }\r\n  .meetings-iframe-container {\r\n    margin: 20px 0;\r\n    min-height: 500px;\r\n  }\r\n  .meetings-iframe-container iframe {\r\n    width: 100% !important;\r\n    border: none !important;\r\n    min-height: 650px;\r\n  }\r\n  .btn-submit {\r\n    display: block;\r\n    width: 100%;\r\n    padding: 14px;\r\n    background-color: #f5c518;\r\n    color: #52307c;\r\n    font-weight: 800;\r\n    font-size: 1rem;\r\n    border: none;\r\n    border-radius: 8px;\r\n    cursor: pointer;\r\n    transition: background-color 0.2s, transform 0.2s;\r\n    margin-top: 20px;\r\n  }\r\n  .btn-submit:hover:not(:disabled) {\r\n    background-color: #e0af00;\r\n    transform: translateY(-2px);\r\n  }\r\n  .btn-submit:disabled {\r\n    background-color: #cbd5e0;\r\n    color: #718096;\r\n    cursor: not-allowed;\r\n    transform: none;\r\n  }\r\n  .success-msg {\r\n    text-align: center;\r\n    font-size: 1.25rem;\r\n    font-weight: 600;\r\n    color: #2f855a;\r\n    padding: 40px 20px;\r\n  }\r\n  @media (max-width: 600px) {\r\n    .form-row {\r\n      flex-direction: column;\r\n      gap: 12px;\r\n    }\r\n  }\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\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\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\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\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\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  const defaultLevelConfig = {\r\n    infantil: { label: 'Educa\u00e7\u00e3o Infantil', url: 'https:\/\/meetings.hubspot.com\/infantil-atendimento\/agendamento-de-visitas-educacao-infantil' },\r\n    iniciais: { label: 'Fundamental Anos Iniciais', url: 'https:\/\/meetings.hubspot.com\/atendimento-fundamental-1\/agendamento-de-visitas-fundamental-anos-iniciais' },\r\n    finais: { label: 'Fundamental Anos Finais', url: 'https:\/\/meetings.hubspot.com\/atendimento-fundamenta-2\/agendamento-de-visitas-fundamental-anos-finais' },\r\n    medio: { label: 'Ensino M\u00e9dio', url: 'https:\/\/meetings.hubspot.com\/atendimento-medio\/agendamento-de-visita-ensino-medio-clone' },\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\r\n    const grupoKey = params.get('grupo') || '';\r\n    if (!grupoKey) return;\r\n\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\r\n    fetch(API_URL + '?action=grupo&id=' + encodeURIComponent(grupoKey), { headers: API_GET_HEADERS })\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) 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\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 levelOrder = ['infantil', 'iniciais', 'finais', 'medio'];\r\n\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\r\n        _pendingPages = levelOrder\r\n          .filter(function (l) { return !!groups[l]; })\r\n          .map(function (l) { return { level: l, students: groups[l], config: defaultLevelConfig[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\" 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\" 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}\" 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({ embed: 'true', firstName: responsavel.nome, lastName: responsavel.sobrenome, email: responsavel.email });\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) 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        let section = $form.querySelector('#year-series-section');\r\n        if (!section) {\r\n            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\r\n        function getFilhosField() {\r\n            return $form.querySelector('select[name*=\"filho\"]') ||\r\n                   $form.querySelector('input[name*=\"filho\"]') ||\r\n                   $form.querySelector('[id^=\"n_mero_de_filhos\"]');\r\n        }\r\n\r\n        let currentQty = -1;\r\n\r\n        function renderDropdowns(qty) {\r\n          if (qty < 1) {\r\n            section.innerHTML = '';\r\n            return;\r\n          }\r\n\r\n          if (!serieOpcoes || serieOpcoes.length === 0) {\r\n            return;\r\n          }\r\n\r\n          const prev = [];\r\n          const existing = section.querySelectorAll('select.ys-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\" style=\"font-weight: 600; color: #2d3748; font-size: 1.05rem; margin-bottom: 8px; display: block;\">\r\n                      Ano\/S\u00e9rie do Filho ${i + 1}<span class=\"hs-form-required\" style=\"color: #e53e3e;\"> *<\/span>\r\n                  <\/label>\r\n                  <div class=\"input\">\r\n                      <select id=\"ys-${i}\" class=\"hs-input ys-select\" style=\"width:100%; height: 48px; border: 1px solid #cbd5e0; border-radius: 6px; padding: 10px 14px; font-size: 1rem; background-color: #fff; outline:none;\">\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.ys-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        function checkQty() {\r\n            const field = getFilhosField();\r\n            if (!field) return;\r\n            const val = parseInt(field.value, 10) || 0;\r\n            if (val !== currentQty) {\r\n                currentQty = val;\r\n                renderDropdowns(val);\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            checkQty();\r\n          })\r\n          .catch(() => console.error('Erro ao buscar op\u00e7\u00f5es de ano\/s\u00e9rie na API'));\r\n\r\n        const field = getFilhosField();\r\n        if (field) {\r\n            field.addEventListener('change', checkQty);\r\n            field.addEventListener('input', checkQty);\r\n        }\r\n\r\n        setInterval(checkQty, 500);\r\n\r\n        const phoneEl = $form.querySelector('[name=\"mobilephone\"]');\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\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 nFilhosEl = $form.querySelector('[name*=\"filho\"]') \\vert{}\\vert{} $form.querySelector('[id^=\"n_mero_de_filhos\"]');\r\n        qtyChildrens = nFilhosEl ? parseInt(nFilhosEl.value, 10) || 0 : 0;\r\n\r\n        responsavel.nome      = ($form.querySelector('[name=\"firstname\"]') || {}).value || '';\r\n        responsavel.sobrenome = ($form.querySelector('[name=\"lastname\"]') || {}).value || '';\r\n        responsavel.email     = ($form.querySelector('[name=\"email\"]') || {}).value || '';\r\n        responsavel.telefone  = ($form.querySelector('[name=\"mobilephone\"]') || {}).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          if (num >= 6 && num <= 9) return 'finais';\r\n          if (num >= 1 && num <= 5) return 'iniciais';\r\n          return 'infantil';\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\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\r\n        _pendingPages = levelOrder\r\n          .filter((l) => groups[l])\r\n          .map((l) => ({ level: l, students: groups[l], config: defaultLevelConfig[l] }))\r\n          .sort((a, b) => a.students[0].index - b.students[0].index);\r\n      },\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\"\/>\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\"\/>\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', () => atualizarBotaoPagina(pIdx));\r\n            el.addEventListener('change', () => 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\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<\/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\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":4,"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-7684","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\/7684","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\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/home.dbosco.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=7684"}],"version-history":[{"count":13,"href":"https:\/\/home.dbosco.com.br\/index.php\/wp-json\/wp\/v2\/pages\/7684\/revisions"}],"predecessor-version":[{"id":7697,"href":"https:\/\/home.dbosco.com.br\/index.php\/wp-json\/wp\/v2\/pages\/7684\/revisions\/7697"}],"wp:attachment":[{"href":"https:\/\/home.dbosco.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=7684"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}