Ir para o conteúdo
if(document.querySelector(".xpbox-shared-header")){
// Site-wide shared native shell; published links never target draft page URLs.
(() => {
const init=()=>{
const header=document.querySelector('.xpbox-shared-header');
if(!header)return;
const main=document.querySelector('#conteudo')||document.querySelector('main')||document.querySelector('#content');
if(main){if(!main.id)main.id='xpbox-main-content';header.querySelectorAll('.skip-link a,a.skip-link').forEach(link=>link.setAttribute('href','#'+main.id));}
const base='https://cebraspe.xpbox.com.br/';
const normalize=path=>path.replace(//+$/,'')||'/';
const draftHome=document.body.classList.contains('page-id-26754');
const draftHiring=document.body.classList.contains('page-id-26763');
const currentPath=draftHome?'/':draftHiring?'/como-contratar':normalize(window.location.pathname);
document.querySelectorAll('.xpbox-shell a[href]').forEach(link=>{
const url=new URL(link.getAttribute('href'),window.location.href);
if(url.origin!==new URL(base).origin)return;
if(normalize(url.pathname)==='/pagina-inicial-xpbox')url.pathname='/';
if(['/contrate-o-cebraspe-xpbox','/contrate-o-cebraspe'].includes(normalize(url.pathname)))url.pathname='/como-contratar/';
if(link.getAttribute('href')==='#solicitar-proposta')url.pathname='/como-contratar/';
link.setAttribute('href',url.href);
});
header.querySelectorAll('#primary-menu a.nav-link').forEach(link=>{
const url=new URL(link.href,base);
link.removeAttribute('aria-current');
if(url.origin===new URL(base).origin&&normalize(url.pathname)===currentPath)link.setAttribute('aria-current','page');
});
header.querySelectorAll('.language-nav a[lang="pt-BR"],.header-language-nav a[lang="pt-BR"]').forEach(link=>{
link.href=draftHome||draftHiring?window.location.href:base+window.location.pathname.replace(/^//,'');
link.setAttribute('aria-current','page');
});
header.querySelectorAll('.utility-accessibility,.header-accessibility').forEach(widget=>{
const link=widget.matches('a')?widget:widget.querySelector('a');
if(link)link.setAttribute('href',draftHiring?'#acessibilidade-da-pagina':base+'avaliacoes/acessibilidade/');
});
const location=header.closest('.elementor-location-header'),utility=header.querySelector('.utility-bar');
if(location&&utility&&!location.dataset.xpboxUtilityMeasured){
location.dataset.xpboxUtilityMeasured='true';
const measure=()=>location.style.setProperty('--xpbox-utility-height',utility.offsetHeight+'px');
measure();if(window.ResizeObserver)new ResizeObserver(measure).observe(utility);else window.addEventListener('resize',measure,{passive:true});
}
};
if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',init);else init();
})();
/* Behavior only. Content is rendered by native Elementor widgets. */
(() => {
const init = () => {
const page=document.querySelector('.xpbox-page');
document.querySelectorAll(':is(.xpbox-page,.xpbox-shell) :is(.menu-toggle,.nav-disclosure,[data-text-scale],[data-contrast-toggle],.carousel-button,[data-submit-button])').forEach(widget=>{
const button=widget.querySelector('.elementor-button');
if(!button||button.dataset.xpboxMirrored)return;
button.dataset.xpboxMirrored='true';
button.addEventListener('click',e=>e.preventDefault());
button.setAttribute('role','button');
button.addEventListener('keydown',e=>{if(e.key===' '){e.preventDefault();button.click();}});
const mirror=()=>['aria-expanded','aria-pressed','aria-label','aria-disabled'].forEach(name=>{
if(widget.hasAttribute(name))button.setAttribute(name,widget.getAttribute(name));
});
mirror();new MutationObserver(mirror).observe(widget,{attributes:true,attributeFilter:['aria-expanded','aria-pressed','aria-label','aria-disabled']});
});
if(!page||page.dataset.xpboxReady)return;
page.dataset.xpboxReady='true';
const form=page.querySelector('.xpbox-request-form');
if(!form)return;
const profile=form.querySelector('.xpbox-profile-form form');
const fields=form.querySelector('.institution-fields');
const status=form.querySelector('#route-status');
const response=form.querySelector('#response-panel');
const errorSummary=form.querySelector('#error-summary');
const errorList=errorSummary.querySelector('.xpbox-tag-ul');
const live=form.querySelector('[data-form-live]');
const submit=form.querySelector('[data-submit-button]');
const submitAnchor=submit.querySelector('a');
const submitLabel=submit.querySelector('[data-submit-label]');
fields.hidden=true;
form.querySelectorAll('.xpbox-field-form').forEach(widget=>{
const input=widget.querySelector('input:not([type=hidden]),select,textarea');
if(!input)return;
const label=widget.parentElement.querySelector('.xpbox-tag-label');
if(label){label.id='xpbox-label-'+input.id;input.setAttribute('aria-labelledby',label.id);}
for(const [key,value] of Object.entries(widget.dataset)){
if(!key.startsWith('input'))continue;
const attr=key.slice(5).replace(/[A-Z]/g,c=>'-'+c.toLowerCase()).replace(/^-/,'');
input.setAttribute(attr,value);
}
});
const setStatus=(target,text,href,label)=>{
target.replaceChildren(document.createTextNode(text));
if(href){const a=document.createElement('a');a.href=href;a.textContent=label;target.append(a);}
target.hidden=false;target.setAttribute('role','status');target.tabIndex=-1;target.focus();
};
// No Elementor AJAX, email or file upload in the demonstration.
form.addEventListener('submit',event=>{
event.preventDefault();event.stopImmediatePropagation();
if(event.target!==profile)return;
const selected=profile.querySelector('input:checked')?.value;
if(!selected){form.querySelector('#profile-error').textContent='Selecione um perfil antes de continuar.';return;}
form.querySelector('#profile-error').textContent='';
form.classList.toggle('is-institution',selected==='instituicao');
fields.hidden=selected!=='instituicao';
if(selected==='instituicao'){
status.hidden=true;
const heading=form.querySelector('#institution-form-title');
heading?.focus();heading?.scrollIntoView({behavior:'smooth',block:'center'});
}else if(selected==='candidato')setStatus(status,'Atendimento ao candidato. Consulte o ','/fale-conosco/','Fale com o Cebraspe ou a página da sua seleção.');
else if(selected==='aplicador')setStatus(status,'Atendimento ao aplicador. Acesse a área ','/colaborador/','Para o colaborador para orientações sobre atividades de campo.');
},true);
let attempts=0,busy=false;
const validate=()=>{
errorList.replaceChildren();errorSummary.hidden=true;
form.querySelectorAll('.field-error').forEach(error=>error.textContent='');
const inputs=[...fields.querySelectorAll('.elementor-field:not([type=hidden])')];
const invalid=[];
for(const input of inputs){
input.setCustomValidity('');input.removeAttribute('aria-invalid');
if(input.id==='form-field-telefone'&&input.value&&!/^d{10,11}$/.test(input.value.replace(/D/g,'')))input.setCustomValidity('Informe DDD e número, com 10 ou 11 dígitos.');
if(input.id==='form-field-uf'&&input.value&&!/^[a-z]{2}$/i.test(input.value))input.setCustomValidity('Use a sigla da unidade federativa com duas letras.');
if(input.id==='form-field-descricao'&&input.value&&input.value.trim().length{e.preventDefault();input.focus();});item.append(link);errorList.append(item);invalid.push(input);
}
}
if(invalid.length){errorSummary.hidden=false;errorSummary.focus();return false;}
return true;
};
const simulate=()=>{
if(busy||!validate())return;
busy=true;response.hidden=true;form.setAttribute('aria-busy','true');
submitAnchor.setAttribute('aria-disabled','true');submitLabel.textContent='Enviando demonstração...';
live.textContent='Enviando demonstração. Nenhum dado será transmitido.';
attempts++;
window.setTimeout(()=>{
const failed=attempts===1;
response.classList.toggle('is-error',failed);
response.querySelector('.xpbox-response-failure').hidden=!failed;
response.querySelector('.xpbox-response-success').hidden=failed;
response.querySelectorAll('[data-response-value]').forEach(widget=>{
const target=widget.querySelector('p')||widget.querySelector('.elementor-widget-container');
target.textContent=form.querySelector('#form-field-'+widget.dataset.responseValue)?.value||'';
});
const email=form.querySelector('#form-field-email')?.value||'';
const note=response.querySelector('[data-email-expectation]');
(note.querySelector('p')||note.querySelector('.elementor-widget-container')).textContent=`Na produção, uma confirmação automática com protocolo, resumo e prazo seria enviada para ${email}. Este protótipo não enviou e-mail.`;
response.hidden=false;response.focus();busy=false;form.removeAttribute('aria-busy');
submitAnchor.setAttribute('aria-disabled','false');submitLabel.textContent='Solicitar proposta';
live.textContent=failed?'Falha demonstrativa. As informações foram preservadas e a solicitação pode ser tentada novamente.':'Simulação concluída. Protocolo fictício e resumo disponíveis.';
},800);
};
submit.addEventListener('click',event=>{event.preventDefault();simulate();});
form.querySelector('[data-prototype-retry]')?.addEventListener('click',event=>{event.preventDefault();simulate();});
fields.addEventListener('input',event=>{
if(!event.target.matches('input,select,textarea'))return;
event.target.setCustomValidity('');event.target.removeAttribute('aria-invalid');
const error=form.querySelector('#'+event.target.id.replace('form-field-','')+'-error');if(error)error.textContent='';
response.hidden=true;live.textContent='';
});
};
if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',init);else init();
})();
(() => {
/* XPBOX editor-safe global search 20260916: editor canvas must remain editable. */
const isElementorEditor = document.body.classList.contains('elementor-editor-active') || Boolean(window.elementor?.isEditMode?.());
if (isElementorEditor) {
const overlay = document.querySelector('.xpbox-shared-header #global-search');
if (overlay) { overlay.hidden = true; overlay.setAttribute('aria-hidden', 'true'); overlay.style.display = 'none'; }
return;
}
const header = document.querySelector('.xpbox-shared-header .site-header');
const menuToggle = header?.querySelector('.menu-toggle');
const primaryMenu = header?.querySelector('#primary-menu');
if (!header || !menuToggle || !primaryMenu || header.dataset.globalHeaderReady === 'true') return;
header.dataset.globalHeaderReady = 'true';
const megaItems = Array.from(primaryMenu.querySelectorAll('.nav-item')).filter((item) => item.querySelector('.submenu-panel'));
const desktopMegaCapable = window.matchMedia('(min-width: 1280px) and (hover: hover) and (pointer: fine)');
const searchToggle = header.querySelector('.global-search-toggle');
const searchOverlay = document.querySelector('.xpbox-shared-header #global-search');
const searchClose = searchOverlay?.querySelector('.search-close');
const searchInput = searchOverlay?.querySelector('.elementor-search-form__input');
let closeMegaTimer;
let pinnedMegaItem = null;
let searchReturnFocus = null;
document.querySelectorAll('.xpbox-shared-header [data-language-choice][aria-disabled="true"]').forEach((link) => {
link.addEventListener('click', (event) => {
event.preventDefault();
visualStatus.textContent = `${link.dataset.languageChoice}: tradução pendente de revisão humana e integração no WordPress.`;
});
});
const textScaleButtons = Array.from(document.querySelectorAll('.xpbox-shared-header [data-text-scale]'));
const contrastButtons = Array.from(document.querySelectorAll('.xpbox-shared-header [data-contrast-toggle]'));
const visualStatus = document.createElement('span');
const allowedScales = [0.9, 1, 1.1];
let visualScale = 1;
let highContrast = false;
visualStatus.className = 'sr-only';
visualStatus.setAttribute('role', 'status');
visualStatus.setAttribute('aria-live', 'polite');
header.appendChild(visualStatus);
try {
const storedScale = Number(window.sessionStorage.getItem('cebraspe-text-scale'));
if (allowedScales.includes(storedScale)) visualScale = storedScale;
highContrast = window.sessionStorage.getItem('cebraspe-high-contrast') === 'true';
} catch {
visualScale = 1;
highContrast = false;
}
const syncVisualPreferences = (announcement = '') => {
document.body.style.zoom = visualScale === 1 ? '' : String(visualScale);
document.documentElement.toggleAttribute('data-high-contrast', highContrast);
if (highContrast) document.documentElement.setAttribute('data-high-contrast', 'true');
textScaleButtons.forEach((button) => {
const direction = button.dataset.textScale;
button.disabled = direction === 'increase' ? visualScale === 1.1 : visualScale === 0.9;
});
contrastButtons.forEach((button) => button.setAttribute('aria-pressed', String(highContrast)));
if (announcement) visualStatus.textContent = announcement;
};
textScaleButtons.forEach((button) => {
button.addEventListener('click', () => {
const currentIndex = allowedScales.indexOf(visualScale);
const offset = button.dataset.textScale === 'increase' ? 1 : -1;
visualScale = allowedScales[Math.max(0, Math.min(allowedScales.length - 1, currentIndex + offset))];
try { window.sessionStorage.setItem('cebraspe-text-scale', String(visualScale)); } catch {}
syncVisualPreferences(`Tamanho do texto ajustado para ${Math.round(visualScale * 100)}%.`);
});
});
contrastButtons.forEach((button) => {
button.addEventListener('click', () => {
highContrast = !highContrast;
try { window.sessionStorage.setItem('cebraspe-high-contrast', String(highContrast)); } catch {}
syncVisualPreferences(highContrast ? 'Contraste elevado ativado.' : 'Contraste padrão restaurado.');
});
});
syncVisualPreferences();
const setMenuOpen = (isOpen) => {
menuToggle.setAttribute('aria-expanded', String(isOpen));
menuToggle.setAttribute('aria-label', isOpen ? 'Fechar menu' : 'Abrir menu');
header.classList.toggle('is-menu-open', isOpen);
};
const setMegaOpen = (item, isOpen) => {
item.classList.toggle('is-mega-open', isOpen);
const disclosure = item.querySelector('.nav-disclosure');
const sectionName = item.querySelector('.nav-link')?.textContent.trim() || 'seção';
disclosure?.setAttribute('aria-expanded', String(isOpen));
disclosure?.setAttribute('aria-label', `${isOpen ? 'Fechar' : 'Abrir'} submenu ${sectionName}`);
};
const closeAllMega = (exceptItem = null) => {
window.clearTimeout(closeMegaTimer);
megaItems.forEach((item) => {
if (item !== exceptItem) setMegaOpen(item, false);
});
if (!exceptItem || pinnedMegaItem !== exceptItem) pinnedMegaItem = null;
};
const openMega = (item, pin = false) => {
window.clearTimeout(closeMegaTimer);
closeAllMega(item);
setMegaOpen(item, true);
if (pin) pinnedMegaItem = item;
};
const closeMegaWithDelay = (item) => {
window.clearTimeout(closeMegaTimer);
closeMegaTimer = window.setTimeout(() => {
if (!pinnedMegaItem) setMegaOpen(item, false);
}, 260);
};
const openSearch = () => {
if (!searchOverlay || !searchToggle) return;
searchReturnFocus = document.activeElement instanceof HTMLElement ? document.activeElement : searchToggle;
closeAllMega();
setMenuOpen(false);
searchOverlay.hidden = false;
searchToggle.setAttribute('aria-expanded', 'true');
searchToggle.setAttribute('aria-label', 'Fechar busca');
document.body.style.overflow = 'hidden';
window.setTimeout(() => searchInput?.focus(), 0);
};
const closeSearch = (returnFocus = false) => {
if (!searchOverlay || !searchToggle) return;
searchOverlay.hidden = true;
searchToggle.setAttribute('aria-expanded', 'false');
searchToggle.setAttribute('aria-label', 'Abrir busca');
document.body.style.overflow = '';
if (returnFocus) searchReturnFocus?.focus();
searchReturnFocus = null;
};
menuToggle.addEventListener('click', () => {
const isOpen = menuToggle.getAttribute('aria-expanded') === 'true';
setMenuOpen(!isOpen);
if (isOpen) {
closeAllMega();
} else {
window.setTimeout(() => primaryMenu.querySelector('a[href], button')?.focus(), 0);
}
});
megaItems.forEach((item) => {
const trigger = item.querySelector('.nav-disclosure');
if (!trigger) return;
trigger.addEventListener('click', () => {
const isOpen = item.classList.contains('is-mega-open');
const isPinned = pinnedMegaItem === item;
if (isOpen && isPinned) {
closeAllMega();
return;
}
openMega(item, true);
});
item.addEventListener('mouseenter', () => {
if (desktopMegaCapable.matches && !pinnedMegaItem) openMega(item);
});
item.addEventListener('mouseleave', () => {
if (desktopMegaCapable.matches && !pinnedMegaItem) closeMegaWithDelay(item);
});
});
primaryMenu.addEventListener('click', (event) => {
if (event.target instanceof Element && event.target.closest('a') && !event.target.closest('.nav-disclosure')) {
setMenuOpen(false);
closeAllMega();
}
});
document.addEventListener('click', (event) => {
if (event.target instanceof Node && !primaryMenu.contains(event.target)) closeAllMega();
});
searchClose?.addEventListener('click', () => closeSearch(true));
searchOverlay?.addEventListener('click', (event) => {
if (event.target === searchOverlay) closeSearch(true);
if (event.target instanceof Element && event.target.closest('a')) closeSearch();
});
document.addEventListener('keydown', (event) => {
if (event.key === 'Tab' && searchOverlay && !searchOverlay.hidden) {
const focusable = Array.from(searchOverlay.querySelectorAll('a[href], button:not([disabled]), input:not([disabled])'));
const first = focusable[0];
const last = focusable[focusable.length - 1];
if (!first || !last) {
event.preventDefault();
return;
}
if (event.shiftKey && document.activeElement === first) {
event.preventDefault();
last.focus();
} else if (!event.shiftKey && document.activeElement === last) {
event.preventDefault();
first.focus();
}
return;
}
if (event.key !== 'Escape') return;
if (searchOverlay && !searchOverlay.hidden) {
closeSearch(true);
return;
}
const menuWasOpen = menuToggle.getAttribute('aria-expanded') === 'true';
const openItem = megaItems.find((item) => item.classList.contains('is-mega-open'));
closeAllMega();
setMenuOpen(false);
if (menuWasOpen) menuToggle.querySelector('a')?.focus();
else if (openItem) openItem.querySelector('.nav-disclosure a')?.focus();
});
})();
(() => {
const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');
const carousel = document.querySelector('.xpbox-page [data-carousel]');
if (carousel) {
const track = carousel.querySelector('[data-carousel-track]');
const pages = Array.from(track.children);
const previous = carousel.querySelector('[data-carousel-previous]');
const next = carousel.querySelector('[data-carousel-next]');
const toggle = carousel.querySelector('[data-carousel-toggle]');
const toggleLabel = carousel.querySelector('[data-carousel-toggle-label]') || document.createElement('span');
const controls = carousel.querySelector('.carousel-controls');
const position = carousel.querySelector('[data-carousel-position]');
const announcement = carousel.querySelector('[data-carousel-announcement]');
let current = 0;
let timer = null;
let explicitlyPaused = reducedMotion.matches;
let pointerPaused = false;
let focusPaused = false;
let touchStartX = null;
const desktopCarousel = window.matchMedia('(min-width: 641px)');
const itemsPerView = () => desktopCarousel.matches ? 5 : 1;
const totalViews = () => Math.ceil(pages.length / itemsPerView());
const isPaused = () => explicitlyPaused || pointerPaused || focusPaused;
const syncTimer = () => {
window.clearInterval(timer);
timer = null;
if (!isPaused()) {
timer = window.setInterval(() => showPage(current + 1, false), 9000);
}
toggle.dataset.state = explicitlyPaused ? 'paused' : 'playing';
toggleLabel.textContent = explicitlyPaused ? 'Reproduzir' : 'Pausar';
toggle.setAttribute('aria-label', explicitlyPaused ? 'Reproduzir carrossel' : 'Pausar carrossel');
};
const showPage = (nextIndex, manual) => {
current = (nextIndex + totalViews()) % totalViews();
track.style.transform = `translateX(-${current * 100}%)`;
pages.forEach((page, index) => {
const firstVisible = current * itemsPerView();
const active = index >= firstVisible && index showPage(current - 1, true));
next.addEventListener('click', () => showPage(current + 1, true));
toggle.addEventListener('click', () => {
explicitlyPaused = !explicitlyPaused;
syncTimer();
announcement.textContent = explicitlyPaused ? 'Rotação automática pausada.' : 'Rotação automática reproduzindo.';
});
carousel.addEventListener('pointerenter', () => {
pointerPaused = true;
syncTimer();
});
carousel.addEventListener('pointerleave', () => {
pointerPaused = false;
syncTimer();
});
carousel.addEventListener('focusin', () => {
focusPaused = true;
syncTimer();
});
carousel.addEventListener('focusout', (event) => {
if (event.relatedTarget instanceof Node && carousel.contains(event.relatedTarget)) return;
focusPaused = false;
syncTimer();
});
carousel.addEventListener('touchstart', (event) => {
touchStartX = event.changedTouches[0]?.clientX ?? null;
}, { passive: true });
carousel.addEventListener('touchend', (event) => {
if (touchStartX === null) return;
const distance = (event.changedTouches[0]?.clientX ?? touchStartX) - touchStartX;
if (Math.abs(distance) > 48) showPage(current + (distance {
if (reducedMotion.matches) explicitlyPaused = true;
syncTimer();
});
desktopCarousel.addEventListener('change', () => {
current = 0;
showPage(0, false);
syncTimer();
});
}
})();}
/* XPBOX immediate native popup opener 20260916 */
(function(){
function popupDocument(){ return window.elementorFrontend && window.elementorFrontend.documentsManager && window.elementorFrontend.documentsManager.documents[26830]; }
function openWhenReady(event){
var tries = 0;
(function open(){
var doc = popupDocument();
if (doc) { doc.showModal(null, event); return; }
if (++tries < 30) requestAnimationFrame(open);
})();
}
document.addEventListener('click', function(event){
var opener = event.target.closest('.xpbox-shared-header .global-search-toggle .elementor-button');
var closer = event.target.closest('#elementor-popup-modal-26830 .search-close .elementor-button');
if (!opener && !closer) return;
event.preventDefault();
event.stopImmediatePropagation();
if (opener) { openWhenReady(event); }
else { var doc = popupDocument(); if (doc) doc.getModal().hide(); }
}, true);
})();