jQuery(document).ready(function($){
const ajaxUrl=visa_check_data.ajax_url;
let nonce=visa_check_data.nonce;
const primaryColor=visa_check_data.primary_color||'#e20c1d';
const configuredLanguage=visa_check_data.language||'pt';
const containerLanguage=String($('.visa-check-container').first().data('language')||'').trim();
const allowedLanguages=['pt', 'es', 'en'];
const language=allowedLanguages.includes(containerLanguage) ? containerLanguage:configuredLanguage;
const defaultGroups=visa_check_data.default_groups||[];
const mode=String(visa_check_data.mode||'production').toLowerCase();
const availableTranslations=visa_check_data.languages||{};
const translations=availableTranslations[language]||visa_check_data.translations||{};
const VC_TEST_DEFAULTS={
name: 'Teste Automatizado',
email: (window.visa_check_data&&visa_check_data.test_email) ? String(visa_check_data.test_email):'',
phone: '(11) 99999-9999',
profession: 'Analista'
};
const t=translations;
const questions=translations.questions||{};
const uiText=(key)=> {
if(t&&t.ui&&typeof t.ui[key]==='string') return t.ui[key];
return '';
};
const uiTestText=(key)=> {
if(t&&t.ui&&t.ui.test_panel&&typeof t.ui.test_panel[key]==='string') return t.ui.test_panel[key];
return '';
};
const testState={
enabled: mode==='tests',
autofill: true,
answerMode: 'yes',
applyAllRequested: false,
fillComments: true,
lorem: 'Lorem ipsum dolor sit amet.'};
function getTestPanelHtml(opts){
if(!testState.enabled) return '';
opts=opts||{};
const showApplyHere=(opts.showApplyHere!==false);
const showApplyAll=(opts.showApplyAll!==false);
const labelYes='Sim';
const labelNo='Não';
const labelRandom='Randômico';
let html='';
html +='<div class="vc-test-panel">';
html +='<div class="vc-test-panel-title">'+'Modo Testes'+'</div>';
html +='<div class="vc-test-panel-content">';
html +='<div class="vc-test-radios">';
html +='<div class="vc-test-radios-label">'+'Respostas'+'</div>';
html +='<label class="vc-test-radio">';
html +='<input type="radio" name="vc-test-answer-mode" value="yes" '+(testState.answerMode==='yes'?'checked':'')+'> ';
html +='<span>'+labelYes+'</span>';
html +='</label>';
html +='<label class="vc-test-radio">';
html +='<input type="radio" name="vc-test-answer-mode" value="no" '+(testState.answerMode==='no'?'checked':'')+'> ';
html +='<span>'+labelNo+'</span>';
html +='</label>';
html +='<label class="vc-test-radio">';
html +='<input type="radio" name="vc-test-answer-mode" value="random" '+(testState.answerMode==='random'?'checked':'')+'> ';
html +='<span>'+labelRandom+'</span>';
html +='</label>';
html +='</div>';
const actionsClass=(!showApplyHere||!showApplyAll) ? 'vc-test-actions vc-test-actions-single':'vc-test-actions';
html +='<div class="'+actionsClass+'">';
if(showApplyAll){
html +='<button type="button" class="btn btn-sm btn-primary" id="vc-test-apply-all">'+'Aplicar Todas'+'</button>';
}
if(showApplyHere){
html +='<button type="button" class="btn btn-sm btn-secondary" id="vc-test-apply-visible">'+'Aplicar Aqui'+'</button>';
}
html +='</div>';
html +='</div>';
html +='</div>';
return html;
}
function bindTestPanelHandlers(opts){
if(!testState.enabled) return;
opts=opts||{};
$('input[name="vc-test-answer-mode"]').off('change.vcTest').on('change.vcTest', function(){
testState.answerMode=$(this).val();
});
$('#vc-test-apply-all').off('click.vcTest').on('click.vcTest', function(){
testState.applyAllRequested=true;
if(Array.isArray(selectedQuestionIds)&&selectedQuestionIds.length){
prefillAllTestAnswers(true);
}
if(opts.rerenderQuestions){
opts.rerenderQuestions();
}});
$('#vc-test-apply-visible').off('click.vcTest').on('click.vcTest', function(){
if($(this).is(':disabled')||$(this).hasClass('disabled')) return;
applyTestFillToVisibleQuestions(true);
if(opts.rerenderQuestions){
opts.rerenderQuestions();
}});
}
function getGoogleReferralOption(){
const p=translations.personal_screen||{};
const refOpts=Array.isArray(p.referral_options) ? p.referral_options:[];
const found=refOpts.find(o=> String(o).toLowerCase().includes('google'));
if(found) return found;
return refOpts.length ? refOpts[0]:'';
}
function applyTestAutofillOnStartScreen(force){
if(!testState.enabled||!testState.autofill) return;
const alreadyHasData = !!($('#vc-name').val().trim()||$('#vc-email').val().trim()||$('#vc-phone').val().trim()||$('#vc-profession').val().trim());
if(alreadyHasData&&!force) return;
$('#vc-name').val($('#vc-name').val()||VC_TEST_DEFAULTS.name);
$('#vc-email').val($('#vc-email').val()||VC_TEST_DEFAULTS.email);
$('#vc-phone').val($('#vc-phone').val()||VC_TEST_DEFAULTS.phone);
$('#vc-profession').val($('#vc-profession').val()||VC_TEST_DEFAULTS.profession);
const googleOpt=getGoogleReferralOption();
if(googleOpt){
$('#vc-referral').val(googleOpt).trigger('change');
}
$('#vc-consent').prop('checked', true);
}
function decideTestAnswer(){
if(testState.answerMode==='yes') return 'yes';
if(testState.answerMode==='no') return 'no';
return Math.random() < 0.5 ? 'yes':'no';
}
function prefillAllTestAnswers(overwrite){
if(!testState.enabled) return;
selectedQuestionIds.forEach(function(qid){
if(!overwrite&&responses.answers&&responses.answers[qid]){
return;
}
responses.answers[qid]=decideTestAnswer();
if(testState.fillComments){
const comment=testState.lorem;
responses.details[qid]=comment;
}else{
delete responses.details[qid];
}});
}
function applyTestFillToVisibleQuestions(overwrite){
if(!testState.enabled) return;
$('fieldset').each(function(){
const qid=$(this).data('qid');
const current=$('input[name="q-'+qid+'"]:checked').val();
if(!overwrite&&current){
return;
}
const chosen=decideTestAnswer();
$('input[name="q-'+qid+'"][value="'+chosen+'"]').prop('checked', true);
responses.answers[qid]=chosen;
if(testState.fillComments){
const $ta=$('textarea[name="detail-'+qid+'"]');
const existing=$ta.val().trim();
if(overwrite||!existing){
$ta.val(testState.lorem);
}
responses.details[qid]=$ta.val().trim();
}else{
$('textarea[name="detail-'+qid+'"]').val('');
delete responses.details[qid];
}});
}
function renderLoadingScreen(){
const container=$('#visa-check-form-container');
container.empty();
const p=translations.personal_screen||{};
const headerTitle=p.header_title||'';
const headerSubtitle=p.header_subtitle||'';
let html='';
html +='<div class="visa-card">';
html +='<div class="visa-card-header text-center">';
html +='<h5 class="fw-bold mb-1">'+ headerTitle +'</h5>';
html +='<p class="mb-0">'+ headerSubtitle +'</p>';
html +='</div>';
html +=getTestPanelHtml({ showApplyHere: false });
html +='<div class="progress">';
html +='<div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" style="width: 100%"></div>';
html +='</div>';
html +='<div class="visa-card-body">';
html +='<div class="visa-loading-area">';
html +='<div class="spinner-border" role="status" aria-hidden="true"></div>';
html +='<div class="mt-3"><strong>' + (uiText('processing')||'Processando...') + '</strong></div>';
html +='</div>';
html +='</div>';
html +='</div>';
container.append(html);
}
const groupMapping={
'TurismoEstudo': [1,2,3,4,5,6,7,8,9,10,11,12],
'TrabalhoTemporario': [13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],
'ImigranteTrabalho': [36,37,38,39,40,41,42,43,44,45,75,76,77,78,79,80,87,88,89,91,92,93,94,95,96,97,98,99,100,101,102,103,105,106,107,108,109,110,111,112,113],
'Familia': [114,115,116,117,118,119,120,121,122,123,124,125,126],
'Humanitario': [127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153]
};
let selectedGroups=[];
let selectedQuestionIds=[];
let currentPage=0;
const pageSize=5;
let responses={ personal: {}, answers: {}, details: {}, consent: 0 };
let responseDetails={};
renderStart();
function renderStart(prefill){
const container=$('#visa-check-form-container');
container.empty();
let html='';
html +='<div class="visa-card">';
const p=translations.personal_screen||{};
html +='<div class="visa-card-header text-center">';
const headerTitle=p.header_title||'';
const headerSubtitle=p.header_subtitle||'';
html +='<h5 class="fw-bold mb-1">'+ headerTitle +'</h5>';
html +='<p class="mb-0">'+ headerSubtitle +'</p>';
html +='</div>';
html +=getTestPanelHtml({ showApplyHere: false });
html +='<div class="progress">';
html +='<div class="progress-bar" role="progressbar" style="width:0%" aria-valuemin="0" aria-valuemax="100">0%</div>';
html +='</div>';
html +='<div class="visa-card-body">';
html +='<h3 class="mb-3">'+ (p.title||'') +'</h3>';
html +='<div class="mb-3"><label class="form-label">'+(p.name_label||'')+'</label><input type="text" class="form-control" id="vc-name" required></div>';
html +='<div class="mb-3"><label class="form-label">'+(p.email_label||'E‑mail')+'</label><input type="email" class="form-control" id="vc-email" required></div>';
html +='<div class="mb-3"><label class="form-label">'+(p.phone_label||'')+'</label><input type="text" class="form-control" id="vc-phone" required></div>';
html +='<div class="mb-3"><label class="form-label">'+(p.profession_label||'')+'</label><input type="text" class="form-control" id="vc-profession" required></div>';
html +='<div class="mb-3"><label class="form-label">'+(p.referral_label||'')+'</label><select class="form-select" id="vc-referral" required>';
html +='<option value="" disabled selected>'+ uiText('select_option') +'</option>';
const refOpts=p.referral_options||[];
refOpts.forEach(function(opt){ html +='<option>'+opt+'</option>'; });
html +='</select>';
html +='<div id="vc-referral-detail-container" class="mt-2" style="display:none;"><input type="text" class="form-control" id="vc-referral-detail" placeholder="'+(p.referral_detail_placeholder||'')+'"></div>';
html +='</div>';
html +='<div class="visa-category-section mb-3">';
html +='<p class="fw-semibold mb-2">'+ (p.categories_title||'') +'</p>';
const cats=p.categories||{};
let idx=1;
Object.keys(cats).forEach(function(key){
const label=cats[key];
html +='<div class="form-check mb-1"><input class="form-check-input category-check" type="checkbox" value="'+key+'" id="cat'+idx+'"><label class="form-check-label" for="cat'+idx+'">'+label+'</label></div>';
idx++;
});
html +='</div>';
html +='<div class="visa-consent-section mt-3"><div class="form-check"><input class="form-check-input" type="checkbox" id="vc-consent" required><label class="form-check-label" for="vc-consent">'+(p.consent_text||'')+'</label></div></div>';
html +='<div class="vc-start-actions mt-3">';
if(p.eligibility_note){
html +='<span class="vc-eligibility-note">'+p.eligibility_note+'</span>';
}
html +='<button type="button" class="btn btn-primary" id="vc-start-btn">'+(p.start_button||uiText('next'))+'</button>';
html +='</div>';
html +='</div>';
html +='</div>';
container.append(html);
bindTestPanelHandlers({ rerenderQuestions: false });
if(prefill&&responses&&responses.personal){
$('#vc-name').val($('#vc-name').val()||VC_TEST_DEFAULTS.name);
$('#vc-email').val($('#vc-email').val()||VC_TEST_DEFAULTS.email);
$('#vc-phone').val($('#vc-phone').val()||VC_TEST_DEFAULTS.phone);
$('#vc-profession').val($('#vc-profession').val()||VC_TEST_DEFAULTS.profession);
if(responses.personal.referral){
$('#vc-referral').val(responses.personal.referral);
$('#vc-referral-detail').val(responses.personal.referral_detail||'');
}
if(selectedGroups&&selectedGroups.length){
$('input.category-check').prop('checked', false);
selectedGroups.forEach(function(g){
$('input.category-check[value="'+g+'"]').prop('checked', true);
});
}
$('#vc-consent').prop('checked', !!responses.consent);
}
$('#vc-referral').on('change', function(){
const v=$(this).val();
const refOpts=(translations.personal_screen&&translations.personal_screen.referral_options) ? translations.personal_screen.referral_options:[];
const optIndication=refOpts.length >=2 ? refOpts[refOpts.length - 2]:'Indicação';
const optOther=refOpts.length >=1 ? refOpts[refOpts.length - 1]:'Outro';
if(v===optIndication||v===optOther){
$('#vc-referral-detail-container').show();
$('#vc-referral-detail').prop('required', true);
}else{
$('#vc-referral-detail-container').hide();
$('#vc-referral-detail').prop('required', false).val('');
}});
$('#vc-referral').trigger('change');
if(!(prefill&&selectedGroups&&selectedGroups.length)){
defaultGroups.forEach(function(g){
$('input.category-check[value="'+g+'"]').prop('checked', true);
});
}
applyTestAutofillOnStartScreen(false);
$('input.category-check').off('change.vc').on('change.vc', function(){
if($('input.category-check:checked').length > 0){
$('input.category-check').removeClass('is-invalid');
$('.visa-category-section').find('.vc-categories-error').remove();
}});
$('#vc-start-btn').off('click').on('click', function(){
$('.is-invalid').removeClass('is-invalid');
$('.invalid-feedback').remove();
let hasError=false;
const name=$('#vc-name').val().trim();
const email=$('#vc-email').val().trim();
const phone=$('#vc-phone').val().trim();
const prof=$('#vc-profession').val().trim();
const ref=$('#vc-referral').val();
const refDetail=$('#vc-referral-detail').val().trim();
if(!name){
$('#vc-name').addClass('is-invalid').after('<div class="invalid-feedback">'+uiText('name_required')+'</div>');
hasError=true;
}
if(!email){
$('#vc-email').addClass('is-invalid').after('<' + 'div class="invalid-feedback"' + '>' + (t.personal_screen&&t.personal_screen.errors&&t.personal_screen.errors.email_required ? t.personal_screen.errors.email_required:'') + '</div>');
hasError=true;
}else{
const emailRegex=/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/;
if(!emailRegex.test(email)){
$('#vc-email').addClass('is-invalid').after('<' + 'div class="invalid-feedback"' + '>' + (t.personal_screen&&t.personal_screen.errors&&t.personal_screen.errors.email_invalid ? t.personal_screen.errors.email_invalid:'') + '</div>');
hasError=true;
}}
const phoneDigits=phone.replace(/\D/g, '');
if(!phoneDigits||phoneDigits.length < 10){
$('#vc-phone').addClass('is-invalid').after('<' + 'div class="invalid-feedback"' + '>' + (t.personal_screen&&t.personal_screen.errors&&t.personal_screen.errors.phone_invalid ? t.personal_screen.errors.phone_invalid:'') + '</div>');
hasError=true;
}
if(!prof){
$('#vc-profession').addClass('is-invalid').after('<' + 'div class="invalid-feedback"' + '>' + (t.personal_screen&&t.personal_screen.errors&&t.personal_screen.errors.profession_required ? t.personal_screen.errors.profession_required:'') + '</div>');
hasError=true;
}
if(!ref){
$('#vc-referral').addClass('is-invalid').after('<' + 'div class="invalid-feedback"' + '>' + (t.personal_screen&&t.personal_screen.errors&&t.personal_screen.errors.referral_required ? t.personal_screen.errors.referral_required:'') + '</div>');
hasError=true;
}
const refOpts2=(translations.personal_screen&&translations.personal_screen.referral_options) ? translations.personal_screen.referral_options:[];
const optIndication2=refOpts2.length >=2 ? refOpts2[refOpts2.length - 2]:'Indicação';
const optOther2=refOpts2.length >=1 ? refOpts2[refOpts2.length - 1]:'Outro';
if((ref===optIndication2||ref===optOther2)&&!refDetail){
$('#vc-referral-detail').addClass('is-invalid').after('<' + 'div class="invalid-feedback"' + '>' + (t.personal_screen&&t.personal_screen.errors&&t.personal_screen.errors.referral_detail_required ? t.personal_screen.errors.referral_detail_required:'') + '</div>');
hasError=true;
}
if(!$('#vc-consent').is(':checked')){
$('#vc-consent').addClass('is-invalid');
$('<' + 'div class="invalid-feedback"' + '>' + (t.personal_screen&&t.personal_screen.errors&&t.personal_screen.errors.consent_required ? t.personal_screen.errors.consent_required:'') + '</div>').insertAfter($('#vc-consent').next('label'));
hasError=true;
}
selectedGroups=[];
$('input.category-check:checked').each(function(){
selectedGroups.push($(this).val());
});
if(selectedGroups.length===0){
$('input.category-check').addClass('is-invalid');
const $catSection=$('.visa-category-section');
$catSection.find('.vc-categories-error').remove();
$('<div class="invalid-feedback d-block vc-categories-error">'+uiText('select_category_error')+'</div>').appendTo($catSection);
hasError=true;
}
if(hasError){
return;
}
const prevAnswers=(responses&&responses.answers) ? responses.answers:{};
const prevDetails=(responses&&responses.details) ? responses.details:{};
responses=responses||{};
responses.personal={
name: name,
email: email,
phone: phone,
profession: prof,
referral: ref,
referral_detail: refDetail
};
responses.consent=$('#vc-consent').is(':checked') ? 1:0;
computeSelectedQuestions();
currentPage=0;
responses.answers={};
responses.details={};
selectedQuestionIds.forEach(function(qid){
if(prevAnswers&&prevAnswers[qid]){
responses.answers[qid]=prevAnswers[qid];
}
if(prevDetails&&prevDetails[qid]){
responses.details[qid]=prevDetails[qid];
}});
prefillAllTestAnswers(!!testState.applyAllRequested);
renderQuestions();
});
}
function computeSelectedQuestions(){
const ids=[];
selectedGroups.forEach(function(group){
const arr=groupMapping[group]||[];
arr.forEach(function(id){
if(!ids.includes(id)) ids.push(id);
});
});
ids.sort(function(a,b){ return a-b; });
selectedQuestionIds=ids;
}
function renderQuestions(){
const container=$('#visa-check-form-container');
container.empty();
const total=selectedQuestionIds.length;
const answered=currentPage * pageSize;
const percent=total ? Math.floor((answered / total) * 100):0;
let html='';
html +='<div class="visa-card">';
const pHead=translations.personal_screen||{};
const headerTitleQ=pHead.header_title||'';
const headerSubtitleQ=pHead.header_subtitle||'';
html +='<div class="visa-card-header text-center">';
html +='<h5 class="fw-bold mb-1">'+headerTitleQ+'</h5>';
html +='<p class="mb-0">'+headerSubtitleQ+'</p>';
html +='</div>';
html +=getTestPanelHtml();
html +='<div class="progress"><div class="progress-bar" role="progressbar" style="width:'+percent+'%" aria-valuemin="0" aria-valuemax="100">'+percent+'%</div></div>';
html +='<div class="visa-card-body">';
html +='<div id="page-error" class="text-danger mb-2"></div>';
html +='<form id="visa-check-form-page"></form>';
html +='<div class="vc-question-actions">';
html +='<button type="button" class="btn btn-secondary" id="vc-back-btn">'+uiText('back')+'</button>';
if(pHead.eligibility_note){
html +='<span class="vc-eligibility-note">'+pHead.eligibility_note+'</span>';
}else{
html +='<span class="vc-eligibility-note"></span>';
}
const isLast=(currentPage + 1) * pageSize >=total;
html +='<button type="button" class="btn btn-primary" id="vc-next-btn">'+ (isLast ? uiText('finish'):uiText('next')) +'</button>';
html +='</div>';
html +='</div>';
html +='</div>';
container.append(html);
bindTestPanelHandlers({ rerenderQuestions: true });
const start=currentPage * pageSize;
const end=Math.min(start + pageSize, total);
for (let i=start; i<end; i++){
const qid=selectedQuestionIds[i];
const qtext=questions[qid]||'';
const fieldset=$('<fieldset class="mb-3" data-qid="'+qid+'"></fieldset>');
fieldset.append('<legend class="visa-question-title">'+qid+'. '+qtext+'</legend>');
const row=$('<div class="d-flex flex-row align-items-start question-row visa-question-row"></div>');
const radioCol=$('<div class="radio-col visa-question-options"></div>');
const rYes=$('<div class="form-check"></div>');
rYes.append('<input class="form-check-input" type="radio" name="q-'+qid+'" value="yes" id="q-'+qid+'-yes"><label class="form-check-label ms-1" for="q-'+qid+'-yes">'+uiText('yes')+'</label>');
const rNo=$('<div class="form-check"></div>');
rNo.append('<input class="form-check-input" type="radio" name="q-'+qid+'" value="no" id="q-'+qid+'-no"><label class="form-check-label ms-1" for="q-'+qid+'-no">'+uiText('no')+'</label>');
radioCol.append(rYes).append(rNo);
const commentCol=$('<div class="flex-grow-1 ms-3 visa-question-comment"></div>');
const ta=$('<textarea class="form-control" rows="2" name="detail-'+qid+'" placeholder="'+uiText('optional_comment')+'" maxlength="150"></textarea>');
commentCol.append(ta);
row.append(radioCol).append(commentCol);
fieldset.append(row);
$('#visa-check-form-page').append(fieldset);
if(responses.answers&&responses.answers[qid]){
$('input[name="q-'+qid+'"][value="'+responses.answers[qid]+'"]').prop('checked', true);
}
if(responses.details&&responses.details[qid]){
$('textarea[name="detail-'+qid+'"]').val(responses.details[qid]);
}}
$('#vc-back-btn').off('click').on('click', function(){
captureResponses();
if(currentPage===0){
renderStart(true);
return;
}
currentPage--;
renderQuestions();
});
$('#vc-next-btn').off('click').on('click', function(){
if(!captureResponses()){
return;
}
if(isLast){
submitForm();
}else{
currentPage++;
renderQuestions();
}});
}
function captureResponses(){
let valid=true;
$('fieldset').removeClass('missing');
$('#page-error').text('');
$('fieldset').each(function(){
const qid=$(this).data('qid');
const val=$('input[name="q-'+qid+'"]:checked').val();
if(!val){
$(this).addClass('missing');
valid=false;
}else{
responses.answers[qid]=val;
const detail=$('textarea[name="detail-'+qid+'"]').val().trim();
if(detail) responses.details[qid]=detail;
}});
if(!valid){
$('#page-error').text(uiText('error_answer_all'));
}
return valid;
}
function refreshNonce(){
return $.ajax({
url: ajaxUrl,
type: 'POST',
dataType: 'json',
data: {
action: 'visa_check_refresh_nonce'
}}).done(function(response){
if(response&&response.success&&response.data&&response.data.nonce){
nonce=response.data.nonce;
}});
}
function submitForm(){
renderLoadingScreen();
refreshNonce().always(function(){
let data={
action: 'visa_check_submit',
nonce: nonce,
name: responses.personal.name,
email: responses.personal.email,
phone: responses.personal.phone,
profession: responses.personal.profession,
referral: responses.personal.referral,
referral_detail: responses.personal.referral_detail,
categories: selectedGroups,
language: language
};
for (let qid in responses.answers){
data['q-'+qid]=responses.answers[qid];
}
for (let qid in responses.details){
data['detail-'+qid]=responses.details[qid];
}
$.ajax({
url: ajaxUrl,
type: 'POST',
data: data,
dataType: 'json',
success: function(response){
if(response.success){
let resultHtml='<div class="visa-card">';
resultHtml +=response.data.html;
resultHtml +='</div>';
$('#visa-check-form-container').html(resultHtml);
$(document).off('click', '#vc-new-evaluation-btn').on('click', '#vc-new-evaluation-btn', function(){
selectedGroups=[];
selectedQuestionIds=[];
currentPage=0;
responses={ personal: {}, answers: {}, details: {}, consent: 0 };
responseDetails={};
renderStart();
});
}else{
$('#visa-check-form-container').html('<p>'+uiText('error_generic')+'</p>');
}},
error: function(){
$('#visa-check-form-container').html('<p>'+uiText('error_send')+'</p>');
}});
});
}});
(()=> {
"use strict";
var __webpack_exports__={};
class elementorHelloThemeHandler {
constructor(){
this.initSettings();
this.initElements();
this.bindEvents();
}
initSettings(){
this.settings={
selectors: {
menuToggle: '.site-header .site-navigation-toggle',
menuToggleHolder: '.site-header .site-navigation-toggle-holder',
dropdownMenu: '.site-header .site-navigation-dropdown'
}};}
initElements(){
this.elements={
window,
menuToggle: document.querySelector(this.settings.selectors.menuToggle),
menuToggleHolder: document.querySelector(this.settings.selectors.menuToggleHolder),
dropdownMenu: document.querySelector(this.settings.selectors.dropdownMenu)
};}
bindEvents(){
var _this$elements$menuTo;
if(!this.elements.menuToggleHolder||(_this$elements$menuTo=this.elements.menuToggleHolder)!==null&&_this$elements$menuTo!==void 0&&_this$elements$menuTo.classList.contains('hide')){
return;
}
this.elements.menuToggle.addEventListener('click', ()=> this.handleMenuToggle());
this.elements.menuToggle.addEventListener('keyup', event=> {
const ENTER_KEY=13;
const SPACE_KEY=32;
if(ENTER_KEY===event.keyCode||SPACE_KEY===event.keyCode){
event.currentTarget.click();
}});
this.elements.dropdownMenu.querySelectorAll('.menu-item-has-children > a').forEach(anchorElement=> anchorElement.addEventListener('click', event=> this.handleMenuChildren(event)));
}
closeMenuItems(){
this.elements.menuToggleHolder.classList.remove('elementor-active');
this.elements.window.removeEventListener('resize', ()=> this.closeMenuItems());
}
handleMenuToggle(){
const isDropdownVisible = !this.elements.menuToggleHolder.classList.contains('elementor-active');
this.elements.menuToggle.setAttribute('aria-expanded', isDropdownVisible);
this.elements.dropdownMenu.setAttribute('aria-hidden', !isDropdownVisible);
this.elements.menuToggleHolder.classList.toggle('elementor-active', isDropdownVisible);
this.elements.dropdownMenu.querySelectorAll('.elementor-active').forEach(item=> item.classList.remove('elementor-active'));
if(isDropdownVisible){
this.elements.window.addEventListener('resize', ()=> this.closeMenuItems());
}else{
this.elements.window.removeEventListener('resize', ()=> this.closeMenuItems());
}}
handleMenuChildren(event){
const anchor=event.currentTarget;
const parentLi=anchor.parentElement;
if(!(parentLi!==null&&parentLi!==void 0&&parentLi.classList)){
return;
}
parentLi.classList.toggle('elementor-active');
}}
document.addEventListener('DOMContentLoaded', ()=> {
new elementorHelloThemeHandler();
});
})()
;
/*
jQuery(document).ready(function(){
jQuery('#').hide();
});
*/
/*
jQuery(document).ready(function(){
console.log('viralizze_page.js: document->ready');
});
*/
/*
jQuery(window).on('load', function(){
console.log('viralizze_page.js: window->load');
});
*/
/*
jQuery(document).ready(function(){
jQuery('body').on('click' , function(){
console.log('viralizze_page.js: click');
jQuery('#meu_id').css('display' , 'block');
jQuery('.meu_id').css('display' , 'block');
});
});
*/
/*
jQuery(document).ready(function(){
var urlParams=new URLSearchParams(window.location.search);
var gVarParam=urlParams.get('variavel');
if(gVarParam!==null){
console.log(' VARIAVEL=ON ');
}else{
console.log(' VARIAVEL=OFF ');
}});
*/
function googleTranslateElementInit2(){
new google.translate.TranslateElement({ pageLanguage: 'pt' , autoDisplay: false }, "google_translate_element2");
}
if(!window.translate_script){
window.translate_script=document.createElement("script");
translate_script.src="https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit2";
document.body.appendChild(translate_script);
}
function GTranslateGetCurrentLang(){
var keyValue=document["cookie"].match("(^|;) ?googtrans=([^;]*)(;|$)");
return keyValue ? keyValue[2].split("/")[2]:null;
}
function GTranslateFireEvent(element, event){
try
{
if(document.createEventObject){
var evt=document.createEventObject();
element.fireEvent("on" + event, evt);
}else{
var evt=document.createEvent("HTMLEvents");
evt.initEvent(event, true, true);
element.dispatchEvent(evt);
}} catch (e){}}
function doGTranslate(lang_pair){
if(lang_pair.value) lang_pair=lang_pair.value;
if(lang_pair=="") return;
var lang=lang_pair.split("|")[1];
if(GTranslateGetCurrentLang()==null&&lang==lang_pair.split("|")[0]) return;
if(typeof ga=="function"){
ga("send", "event", "GTranslate", lang, location.hostname + location.pathname + location.search);
}
var teCombo;
var sel=document.getElementsByTagName("select");
for(var i=0; i < sel.length; i++)
if(sel[i].className.indexOf("goog-te-combo")!=-1){
teCombo=sel[i];
break;
}
if(document.getElementById("google_translate_element2")==null||document.getElementById("google_translate_element2").innerHTML.length==0||teCombo.length==0||teCombo.innerHTML.length==0){
setTimeout(function (){
doGTranslate(lang_pair);
}, 500);
}else{
teCombo.value=lang;
GTranslateFireEvent(teCombo, "change");
GTranslateFireEvent(teCombo, "change");
}}
var vCurrentGTranslate=jQuery('.goog-te-combo').val() ;
/*
jQuery(document).ready(function(){
});
*/
function changeSelectImgGTranslate(){
var vCurrentSelectImg='pt-br' ;
if(( vCurrentGTranslate==='en')||(vCurrentGTranslate==='en-us')){
vCurrentSelectImg='en-us' ;
}
else if(( vCurrentGTranslate!=null)&&(vCurrentGTranslate!='')){
vCurrentSelectImg=vCurrentGTranslate ;
}
var vImgSrc=jQuery('.'+ vCurrentSelectImg +' div img').attr('src') ;
jQuery('.btn-select div img').attr('src' , vImgSrc);
jQuery('.popup-container').fadeOut(500);
}
jQuery(document).ready(function(){
jQuery('.popup-container').hide();
jQuery('.btn-container').click(function(){
jQuery('.popup-container').fadeToggle(500);
});
});
function addClassGTranslate(){
jQuery('.pt-br	img').addClass('img-color-pb');
jQuery('.en-us img').addClass('img-color-pb');
jQuery('.es 	img').addClass('img-color-pb');
jQuery('.it 	img').addClass('img-color-pb');
jQuery('.fr 	img').addClass('img-color-pb');
jQuery('.de 	img').addClass('img-color-pb');
jQuery('.tr 	img').addClass('img-color-pb');
jQuery('.zh-TW img').addClass('img-color-pb');
jQuery('.ja 	img').addClass('img-color-pb');
jQuery('.ko 	img').addClass('img-color-pb');
jQuery('.hi 	img').addClass('img-color-pb');
jQuery('.mn 	img').addClass('img-color-pb');
jQuery('.ru 	img').addClass('img-color-pb');
}
jQuery(document).ready(function(){
jQuery('.pt-br').click(function(){ doGTranslate('pt|pt'); });
jQuery('.en-us').click(function(){ doGTranslate('pt|en'); });
jQuery('.es').click(function(){ doGTranslate('pt|es'); });
jQuery('.it').click(function(){ doGTranslate('pt|it'); });
jQuery('.fr').click(function(){ doGTranslate('pt|fr'); });
jQuery('.de').click(function(){ doGTranslate('pt|de'); });
jQuery('.tr').click(function(){ doGTranslate('pt|tr'); });
jQuery('.zh-TW').click(function(){ doGTranslate('pt|zh-TW'); });
jQuery('.ja').click(function(){ doGTranslate('pt|ja'); });
jQuery('.ko').click(function(){ doGTranslate('pt|ko'); });
jQuery('.hi').click(function(){ doGTranslate('pt|hi'); });
jQuery('.mn').click(function(){ doGTranslate('pt|mn'); });
jQuery('.ru').click(function(){ doGTranslate('pt|ru'); });
});
function changeGTranslate(){
addClassGTranslate();
if(( vCurrentGTranslate==='en')||(vCurrentGTranslate==='en-us')){
jQuery('.en-us img').removeClass('img-color-pb');
}
else if(vCurrentGTranslate==='es'){
jQuery('.es img').removeClass('img-color-pb');
}
else if(vCurrentGTranslate==='it'){
jQuery('.it img').removeClass('img-color-pb');
}
else if(vCurrentGTranslate==='fr'){
jQuery('.fr img').removeClass('img-color-pb');
}
else if(vCurrentGTranslate==='de'){
jQuery('.de img').removeClass('img-color-pb');
}
else if(vCurrentGTranslate==='tr'){
jQuery('.tr img').removeClass('img-color-pb');
}
else if(vCurrentGTranslate==='zh-TW'){
jQuery('.zh-TW img').removeClass('img-color-pb');
}
else if(vCurrentGTranslate==='ja'){
jQuery('.ja img').removeClass('img-color-pb');
}
else if(vCurrentGTranslate==='ko'){
jQuery('.ko img').removeClass('img-color-pb');
}
else if(vCurrentGTranslate==='hi'){
jQuery('.hi img').removeClass('img-color-pb');
}
else if(vCurrentGTranslate==='mn'){
jQuery('.mn img').removeClass('img-color-pb');
}
else if(vCurrentGTranslate==='ru'){
jQuery('.ru img').removeClass('img-color-pb');
}else{
jQuery('.pt-br img').removeClass('img-color-pb');
}
changeSelectImgGTranslate();
}
jQuery(document).ready(function(){
setInterval(function(){
if(vCurrentGTranslate!==jQuery('.goog-te-combo').val()){
vCurrentGTranslate=jQuery('.goog-te-combo').val() ;
changeGTranslate();
}}, 500);
});
/*
jQuery(document).ready(function(){
jQuery('#').hide();
});
*/
/*
jQuery(document).ready(function(){
console.log('viralizze_all.js: document->ready');
});
*/
/*
jQuery(window).on('load', function(){
console.log('viralizze_all.js: window->load');
});
*/
/*
jQuery(document).ready(function(){
jQuery('body').on('click' , function(){
console.log('viralizze_all.js: click');
jQuery('#meu_id').css('display' , 'block');
jQuery('.meu_id').css('display' , 'block');
});
});
*/
/*
jQuery(document).ready(function(){
var urlParams=new URLSearchParams(window.location.search);
var gVarParam=urlParams.get('variavel');
if(gVarParam!==null){
console.log(' VARIAVEL=ON ');
}else{
console.log(' VARIAVEL=OFF ');
}});
*/
/*
jQuery(document).ready(function(){
var vTootgle=false ;
jQuery(document).on('keydown' , function(event){
if(event.ctrlKey&&event.shiftKey&&event.keyCode===13){
vTootgle = !vTootgle ;
var vDisplay=vTootgle ? 'block':'none' ;
jQuery('#sangria').css('display' , vDisplay);
jQuery('.sangria').css('display' , vDisplay);
}});
});
*/
jQuery(document).ready(function(){
var oSelector='#disable , .disable' ;
jQuery(oSelector).prop('disabled', true);
});
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&"object"==typeof module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){function b(b){var i=".smartmenus_mouse";if(h||b)h&&b&&(a(document).off(i),h=!1);else{var j=!0,k=null,l={mousemove:function(b){var c={x:b.pageX,y:b.pageY,timeStamp:(new Date).getTime()};if(k){var d=Math.abs(k.x-c.x),g=Math.abs(k.y-c.y);if((d>0||g>0)&&d<=4&&g<=4&&c.timeStamp-k.timeStamp<=300&&(f=!0,j)){var h=a(b.target).closest("a");h.is("a")&&a.each(e,function(){if(a.contains(this.$root[0],h[0]))return this.itemEnter({currentTarget:h[0]}),!1}),j=!1}}k=c}};l[g?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(a){c(a.originalEvent)&&(f=!1)},a(document).on(d(l,i)),h=!0}}function c(a){return!/^(4|mouse)$/.test(a.pointerType)}function d(a,b){b||(b="");var c={};for(var d in a)c[d.split(" ").join(b+" ")+b]=a[d];return c}var e=[],f=!1,g="ontouchstart"in window,h=!1,i=window.requestAnimationFrame||function(a){return setTimeout(a,1e3/60)},j=window.cancelAnimationFrame||function(a){clearTimeout(a)},k=!!a.fn.animate;return a.SmartMenus=function(b,c){this.$root=a(b),this.opts=c,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in b.style||"webkitPerspective"in b.style,this.wasCollapsible=!1,this.init()},a.extend(a.SmartMenus,{hideAll:function(){a.each(e,function(){this.menuHideAll()})},destroy:function(){for(;e.length;)e[0].destroy();b(!0)},prototype:{init:function(c){var f=this;if(!c){e.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var g=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(d({"mouseover focusin":a.proxy(this.rootOver,this),"mouseout focusout":a.proxy(this.rootOut,this),keydown:a.proxy(this.rootKeyDown,this)},g)).on(d({mouseenter:a.proxy(this.itemEnter,this),mouseleave:a.proxy(this.itemLeave,this),mousedown:a.proxy(this.itemDown,this),focus:a.proxy(this.itemFocus,this),blur:a.proxy(this.itemBlur,this),click:a.proxy(this.itemClick,this)},g),"a"),g+=this.rootId,this.opts.hideOnClick&&a(document).on(d({touchstart:a.proxy(this.docTouchStart,this),touchmove:a.proxy(this.docTouchMove,this),touchend:a.proxy(this.docTouchEnd,this),click:a.proxy(this.docClick,this)},g)),a(window).on(d({"resize orientationchange":a.proxy(this.winResize,this)},g)),this.opts.subIndicators&&(this.$subArrow=a("<span/>").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),b()}if(this.$firstSub=this.$root.find("ul").each(function(){f.menuInit(a(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var h=/(index|default)\.[^#\?\/]*/i,i=/#.*/,j=window.location.href.replace(h,""),k=j.replace(i,"");this.$root.find("a:not(.mega-menu a)").each(function(){var b=this.href.replace(h,""),c=a(this);b!=j&&b!=k||(c.addClass("current"),f.opts.markCurrentTree&&c.parentsUntil("[data-smartmenus-id]","ul").each(function(){a(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(b){if(!b){var c=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(c),c+=this.rootId,a(document).off(c),a(window).off(c),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var d=this;this.$root.find("ul").each(function(){var b=a(this);b.dataSM("scroll-arrows")&&b.dataSM("scroll-arrows").remove(),b.dataSM("shown-before")&&((d.opts.subMenusMinWidth||d.opts.subMenusMaxWidth)&&b.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),b.dataSM("scroll-arrows")&&b.dataSM("scroll-arrows").remove(),b.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(b.attr("id")||"").indexOf(d.accessIdPrefix)&&b.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var b=a(this);0==b.attr("id").indexOf(d.accessIdPrefix)&&b.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),b||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),e.splice(a.inArray(this,e),1))},disable:function(b){if(!this.disabled){if(this.menuHideAll(),!b&&!this.opts.isPopup&&this.$root.is(":visible")){var c=this.$root.offset();this.$disableOverlay=a('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:c.top,left:c.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(b){return this.$touchScrollingSub?void(this.$touchScrollingSub=null):void((this.visibleSubMenus.length&&!a.contains(this.$root[0],b.target)||a(b.target).closest("a").length)&&this.menuHideAll())},docTouchEnd:function(b){if(this.lastTouch){if(this.visibleSubMenus.length&&(void 0===this.lastTouch.x2||this.lastTouch.x1==this.lastTouch.x2)&&(void 0===this.lastTouch.y2||this.lastTouch.y1==this.lastTouch.y2)&&(!this.lastTouch.target||!a.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var c=this;this.hideTimeout=setTimeout(function(){c.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(a){if(this.lastTouch){var b=a.originalEvent.touches[0];this.lastTouch.x2=b.pageX,this.lastTouch.y2=b.pageY}},docTouchStart:function(a){var b=a.originalEvent.touches[0];this.lastTouch={x1:b.pageX,y1:b.pageY,target:b.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(b){for(var c=a(b).closest("ul");c.dataSM("in-mega");)c=c.parent().closest("ul");return c[0]||null},getHeight:function(a){return this.getOffset(a,!0)},getOffset:function(a,b){var c;"none"==a.css("display")&&(c={position:a[0].style.position,visibility:a[0].style.visibility},a.css({position:"absolute",visibility:"hidden"}).show());var d=a[0].getBoundingClientRect&&a[0].getBoundingClientRect(),e=d&&(b?d.height||d.bottom-d.top:d.width||d.right-d.left);return e||0===e||(e=b?a[0].offsetHeight:a[0].offsetWidth),c&&a.hide().css(c),e},getStartZIndex:function(a){var b=parseInt(this[a?"$root":"$firstSub"].css("z-index"));return!a&&isNaN(b)&&(b=parseInt(this.$root.css("z-index"))),isNaN(b)?1:b},getTouchPoint:function(a){return a.touches&&a.touches[0]||a.changedTouches&&a.changedTouches[0]||a},getViewport:function(a){var b=a?"Height":"Width",c=document.documentElement["client"+b],d=window["inner"+b];return d&&(c=Math.min(c,d)),c},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(a){return this.getOffset(a)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(a){return this.handleEvents()&&!this.isLinkInMegaMenu(a)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var b="fixed"==this.$root.css("position");return b||this.$root.parentsUntil("body").each(function(){if("fixed"==a(this).css("position"))return b=!0,!1}),b},isLinkInMegaMenu:function(b){return a(this.getClosestMenu(b[0])).hasClass("mega-menu")},isTouchMode:function(){return!f||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(b,c){var d=b.closest("ul"),e=d.dataSM("level");if(e>1&&(!this.activatedItems[e-2]||this.activatedItems[e-2][0]!=d.dataSM("parent-a")[0])){var f=this;a(d.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(d).each(function(){f.itemActivate(a(this).dataSM("parent-a"))})}if(this.isCollapsible()&&!c||this.menuHideSubMenus(this.activatedItems[e-1]&&this.activatedItems[e-1][0]==b[0]?e:e-1),this.activatedItems[e-1]=b,this.$root.triggerHandler("activate.smapi",b[0])!==!1){var g=b.dataSM("sub");g&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(g)}},itemBlur:function(b){var c=a(b.currentTarget);this.handleItemEvents(c)&&this.$root.triggerHandler("blur.smapi",c[0])},itemClick:function(b){var c=a(b.currentTarget);if(this.handleItemEvents(c)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==c.closest("ul")[0])return this.$touchScrollingSub=null,b.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",c[0])===!1)return!1;var d=c.dataSM("sub"),e=!!d&&2==d.dataSM("level");if(d){var f=a(b.target).is(".sub-arrow"),g=this.isCollapsible(),h=/toggle$/.test(this.opts.collapsibleBehavior),i=/link$/.test(this.opts.collapsibleBehavior),j=/^accordion/.test(this.opts.collapsibleBehavior);if(d.is(":visible")){if(!g&&this.opts.showOnClick&&e)return this.menuHide(d),this.clickActivated=!1,this.focusActivated=!1,!1;if(g&&(h||f))return this.itemActivate(c,j),this.menuHide(d),!1}else if((!i||!g||f)&&(!g&&this.opts.showOnClick&&e&&(this.clickActivated=!0),this.itemActivate(c,j),d.is(":visible")))return this.focusActivated=!0,!1}return!(!g&&this.opts.showOnClick&&e||c.hasClass("disabled")||this.$root.triggerHandler("select.smapi",c[0])===!1)&&void 0}},itemDown:function(b){var c=a(b.currentTarget);this.handleItemEvents(c)&&c.dataSM("mousedown",!0)},itemEnter:function(b){var c=a(b.currentTarget);if(this.handleItemEvents(c)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var d=this;this.showTimeout=setTimeout(function(){d.itemActivate(c)},this.opts.showOnClick&&1==c.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",c[0])}},itemFocus:function(b){var c=a(b.currentTarget);this.handleItemEvents(c)&&(!this.focusActivated||this.isTouchMode()&&c.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==c[0]||this.itemActivate(c,!0),this.$root.triggerHandler("focus.smapi",c[0]))},itemLeave:function(b){var c=a(b.currentTarget);this.handleItemEvents(c)&&(this.isTouchMode()||(c[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),c.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",c[0]))},menuHide:function(b){if(this.$root.triggerHandler("beforehide.smapi",b[0])!==!1&&(k&&b.stop(!0,!0),"none"!=b.css("display"))){var c=function(){b.css("z-index","")};this.isCollapsible()?k&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,b,c):b.hide(this.opts.collapsibleHideDuration,c):k&&this.opts.hideFunction?this.opts.hideFunction.call(this,b,c):b.hide(this.opts.hideDuration,c),b.dataSM("scroll")&&(this.menuScrollStop(b),b.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),b.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),b.attr({"aria-expanded":"false","aria-hidden":"true"});var d=b.dataSM("level");this.activatedItems.splice(d-1,1),this.visibleSubMenus.splice(a.inArray(b,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",b[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var a=this.opts.isPopup?1:0,b=this.visibleSubMenus.length-1;b>=a;b--)this.menuHide(this.visibleSubMenus[b]);this.opts.isPopup&&(k&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(k&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(a){for(var b=this.activatedItems.length-1;b>=a;b--){var c=this.activatedItems[b].dataSM("sub");c&&this.menuHide(c)}},menuInit:function(a){if(!a.dataSM("in-mega")){a.hasClass("mega-menu")&&a.find("ul").dataSM("in-mega",!0);for(var b=2,c=a[0];(c=c.parentNode.parentNode)!=this.$root[0];)b++;var d=a.prevAll("a").eq(-1);d.length||(d=a.prevAll().find("a").eq(-1)),d.addClass("has-submenu").dataSM("sub",a),a.dataSM("parent-a",d).dataSM("level",b).parent().dataSM("sub",a);var e=d.attr("id")||this.accessIdPrefix+ ++this.idInc,f=a.attr("id")||this.accessIdPrefix+ ++this.idInc;d.attr({id:e,"aria-haspopup":"true","aria-controls":f,"aria-expanded":"false"}),a.attr({id:f,role:"group","aria-hidden":"true","aria-labelledby":e,"aria-expanded":"false"}),this.opts.subIndicators&&d[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(b){var c,e,f=b.dataSM("parent-a"),h=f.closest("li"),i=h.parent(),j=b.dataSM("level"),k=this.getWidth(b),l=this.getHeight(b),m=f.offset(),n=m.left,o=m.top,p=this.getWidth(f),q=this.getHeight(f),r=a(window),s=r.scrollLeft(),t=r.scrollTop(),u=this.getViewportWidth(),v=this.getViewportHeight(),w=i.parent().is("[data-sm-horizontal-sub]")||2==j&&!i.hasClass("sm-vertical"),x=this.opts.rightToLeftSubMenus&&!h.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&h.is("[data-sm-reverse]"),y=2==j?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,z=2==j?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(w?(c=x?p-k-y:y,e=this.opts.bottomToTopSubMenus?-l-z:q+z):(c=x?y-k:p-y,e=this.opts.bottomToTopSubMenus?q-z-l:z),this.opts.keepInViewport){var A=n+c,B=o+e;if(x&&A<s?c=w?s-A+c:p-y:!x&&A+k>s+u&&(c=w?s+u-k-A+c:y-k),w||(l<v&&B+l>t+v?e+=t+v-l-B:(l>=v||B<t)&&(e+=t-B)),w&&(B+l>t+v+.49||B<t)||!w&&l>v+.49){var C=this;b.dataSM("scroll-arrows")||b.dataSM("scroll-arrows",a([a('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],a('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]]).on({mouseenter:function(){b.dataSM("scroll").up=a(this).hasClass("scroll-up"),C.menuScroll(b)},mouseleave:function(a){C.menuScrollStop(b),C.menuScrollOut(b,a)},"mousewheel DOMMouseScroll":function(a){a.preventDefault()}}).insertAfter(b));var D=".smartmenus_scroll";if(b.dataSM("scroll",{y:this.cssTransforms3d?0:e-q,step:1,itemH:q,subH:l,arrowDownH:this.getHeight(b.dataSM("scroll-arrows").eq(1))}).on(d({mouseover:function(a){C.menuScrollOver(b,a)},mouseout:function(a){C.menuScrollOut(b,a)},"mousewheel DOMMouseScroll":function(a){C.menuScrollMousewheel(b,a)}},D)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:c+(parseInt(b.css("border-left-width"))||0),width:k-(parseInt(b.css("border-left-width"))||0)-(parseInt(b.css("border-right-width"))||0),zIndex:b.css("z-index")}).eq(w&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var E={};E[g?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(a){C.menuScrollTouch(b,a)},b.css({"touch-action":"none","-ms-touch-action":"none"}).on(d(E,D))}}}b.css({top:"auto",left:"0",marginLeft:c,marginTop:e-q})},menuScroll:function(a,b,c){var d,e=a.dataSM("scroll"),g=a.dataSM("scroll-arrows"),h=e.up?e.upEnd:e.downEnd;if(!b&&e.momentum){if(e.momentum*=.92,d=e.momentum,d<.5)return void this.menuScrollStop(a)}else d=c||(b||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(e.step));var j=a.dataSM("level");if(this.activatedItems[j-1]&&this.activatedItems[j-1].dataSM("sub")&&this.activatedItems[j-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(j-1),e.y=e.up&&h<=e.y||!e.up&&h>=e.y?e.y:Math.abs(h-e.y)>d?e.y+(e.up?d:-d):h,a.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+e.y+"px, 0)",transform:"translate3d(0, "+e.y+"px, 0)"}:{marginTop:e.y}),f&&(e.up&&e.y>e.downEnd||!e.up&&e.y<e.upEnd)&&g.eq(e.up?1:0).show(),e.y==h)f&&g.eq(e.up?0:1).hide(),this.menuScrollStop(a);else if(!b){this.opts.scrollAccelerate&&e.step<this.opts.scrollStep&&(e.step+=.2);var k=this;this.scrollTimeout=i(function(){k.menuScroll(a)})}},menuScrollMousewheel:function(a,b){if(this.getClosestMenu(b.target)==a[0]){b=b.originalEvent;var c=(b.wheelDelta||-b.detail)>0;a.dataSM("scroll-arrows").eq(c?0:1).is(":visible")&&(a.dataSM("scroll").up=c,this.menuScroll(a,!0))}b.preventDefault()},menuScrollOut:function(b,c){f&&(/^scroll-(up|down)/.test((c.relatedTarget||"").className)||(b[0]==c.relatedTarget||a.contains(b[0],c.relatedTarget))&&this.getClosestMenu(c.relatedTarget)==b[0]||b.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(b,c){if(f&&!/^scroll-(up|down)/.test(c.target.className)&&this.getClosestMenu(c.target)==b[0]){this.menuScrollRefreshData(b);var d=b.dataSM("scroll"),e=a(window).scrollTop()-b.dataSM("parent-a").offset().top-d.itemH;b.dataSM("scroll-arrows").eq(0).css("margin-top",e).end().eq(1).css("margin-top",e+this.getViewportHeight()-d.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(b){var c=b.dataSM("scroll"),d=a(window).scrollTop()-b.dataSM("parent-a").offset().top-c.itemH;this.cssTransforms3d&&(d=-(parseFloat(b.css("margin-top"))-d)),a.extend(c,{upEnd:d,downEnd:d+this.getViewportHeight()-c.subH})},menuScrollStop:function(a){if(this.scrollTimeout)return j(this.scrollTimeout),this.scrollTimeout=0,a.dataSM("scroll").step=1,!0},menuScrollTouch:function(b,d){if(d=d.originalEvent,c(d)){var e=this.getTouchPoint(d);if(this.getClosestMenu(e.target)==b[0]){var f=b.dataSM("scroll");if(/(start|down)$/i.test(d.type))this.menuScrollStop(b)?(d.preventDefault(),this.$touchScrollingSub=b):this.$touchScrollingSub=null,this.menuScrollRefreshData(b),a.extend(f,{touchStartY:e.pageY,touchStartTime:d.timeStamp});else if(/move$/i.test(d.type)){var g=void 0!==f.touchY?f.touchY:f.touchStartY;if(void 0!==g&&g!=e.pageY){this.$touchScrollingSub=b;var h=g<e.pageY;void 0!==f.up&&f.up!=h&&a.extend(f,{touchStartY:e.pageY,touchStartTime:d.timeStamp}),a.extend(f,{up:h,touchY:e.pageY}),this.menuScroll(b,!0,Math.abs(e.pageY-g))}d.preventDefault()}else void 0!==f.touchY&&((f.momentum=15*Math.pow(Math.abs(e.pageY-f.touchStartY)/(d.timeStamp-f.touchStartTime),2))&&(this.menuScrollStop(b),this.menuScroll(b),d.preventDefault()),delete f.touchY)}}},menuShow:function(a){if((a.dataSM("beforefirstshowfired")||(a.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",a[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",a[0])!==!1&&(a.dataSM("shown-before",!0),k&&a.stop(!0,!0),!a.is(":visible"))){var b=a.dataSM("parent-a"),c=this.isCollapsible();if((this.opts.keepHighlighted||c)&&b.addClass("highlighted"),c)a.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(a.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(a.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&a.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var d=this.getWidth(a);a.css("max-width",this.opts.subMenusMaxWidth),d>this.getWidth(a)&&a.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(a)}var e=function(){a.css("overflow","")};c?k&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,a,e):a.show(this.opts.collapsibleShowDuration,e):k&&this.opts.showFunction?this.opts.showFunction.call(this,a,e):a.show(this.opts.showDuration,e),b.attr("aria-expanded","true"),a.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(a),this.$root.triggerHandler("show.smapi",a[0])}},popupHide:function(a){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var b=this;this.hideTimeout=setTimeout(function(){b.menuHideAll()},a?1:this.opts.hideTimeout)},popupShow:function(a,b){if(!this.opts.isPopup)return void alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.');if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),k&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:a,top:b});var c=this,d=function(){c.$root.css("overflow","")};k&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,d):this.$root.show(this.opts.showDuration,d),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(b){if(this.handleEvents())switch(b.keyCode){case 27:var c=this.activatedItems[0];if(c){this.menuHideAll(),c[0].focus();var d=c.dataSM("sub");d&&this.menuHide(d)}break;case 32:var e=a(b.target);if(e.is("a")&&this.handleItemEvents(e)){var d=e.dataSM("sub");d&&!d.is(":visible")&&(this.itemClick({currentTarget:b.target}),b.preventDefault())}}},rootOut:function(a){if(this.handleEvents()&&!this.isTouchMode()&&a.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var b=this;this.hideTimeout=setTimeout(function(){b.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(a){this.handleEvents()&&!this.isTouchMode()&&a.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(a){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==a.type){var b=this.isCollapsible();this.wasCollapsible&&b||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=b}}else if(this.$disableOverlay){var c=this.$root.offset();this.$disableOverlay.css({top:c.top,left:c.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),a.fn.dataSM=function(a,b){return b?this.data(a+"_smartmenus",b):this.data(a+"_smartmenus")},a.fn.removeDataSM=function(a){return this.removeData(a+"_smartmenus")},a.fn.smartmenus=function(b){if("string"==typeof b){var c=arguments,d=b;return Array.prototype.shift.call(c),this.each(function(){var b=a(this).data("smartmenus");b&&b[d]&&b[d].apply(b,c)})}return this.each(function(){var c=a(this).data("sm-options")||null;c&&"object"!=typeof c&&(c=null,alert('ERROR\n\nSmartMenus jQuery init:\nThe value of the "data-sm-options" attribute must be valid JSON.')),c&&a.each(["showFunction","hideFunction","collapsibleShowFunction","collapsibleHideFunction"],function(){this in c&&delete c[this]}),new a.SmartMenus(this,a.extend({},a.fn.smartmenus.defaults,b,c))})},a.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(a,b){a.fadeOut(200,b)},collapsibleShowDuration:0,collapsibleShowFunction:function(a,b){a.slideDown(200,b)},collapsibleHideDuration:0,collapsibleHideFunction:function(a,b){a.slideUp(200,b)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},a});
(()=>{"use strict";const t=function(t){return"string"!=typeof t||""===t?(console.error("The namespace must be a non-empty string."),!1):!!/^[a-zA-Z][a-zA-Z0-9_.\-\/]*$/.test(t)||(console.error("The namespace can only contain numbers, letters, dashes, periods, underscores and slashes."),!1)},n=function(t){return"string"!=typeof t||""===t?(console.error("The hook name must be a non-empty string."),!1):/^__/.test(t)?(console.error("The hook name cannot begin with `__`."),!1):!!/^[a-zA-Z][a-zA-Z0-9_.-]*$/.test(t)||(console.error("The hook name can only contain numbers, letters, dashes, periods and underscores."),!1)},e=function(e,o){return function(i,r,s,c=10){const l=e[o];if(!n(i))return;if(!t(r))return;if("function"!=typeof s)return void console.error("The hook callback must be a function.");if("number"!=typeof c)return void console.error("If specified, the hook priority must be a number.");const a={callback:s,priority:c,namespace:r};if(l[i]){const t=l[i].handlers;let n;for(n=t.length;n>0&&!(c>=t[n-1].priority);n--);n===t.length?t[n]=a:t.splice(n,0,a),l.__current.forEach((t=>{t.name===i&&t.currentIndex>=n&&t.currentIndex++}))}else l[i]={handlers:[a],runs:0};"hookAdded"!==i&&e.doAction("hookAdded",i,r,s,c)}},o=function(e,o,i=!1){return function(r,s){const c=e[o];if(!n(r))return;if(!i&&!t(s))return;if(!c[r])return 0;let l=0;if(i)l=c[r].handlers.length,c[r]={runs:c[r].runs,handlers:[]};else{const t=c[r].handlers;for(let n=t.length-1;n>=0;n--)t[n].namespace===s&&(t.splice(n,1),l++,c.__current.forEach((t=>{t.name===r&&t.currentIndex>=n&&t.currentIndex--})))}return"hookRemoved"!==r&&e.doAction("hookRemoved",r,s),l}},i=function(t,n){return function(e,o){const i=t[n];return void 0!==o?e in i&&i[e].handlers.some((t=>t.namespace===o)):e in i}},r=function(t,n,e=!1){return function(o,...i){const r=t[n];r[o]||(r[o]={handlers:[],runs:0}),r[o].runs++;const s=r[o].handlers;if(!s||!s.length)return e?i[0]:void 0;const c={name:o,currentIndex:0};for(r.__current.push(c);c.currentIndex<s.length;){const t=s[c.currentIndex].callback.apply(null,i);e&&(i[0]=t),c.currentIndex++}return r.__current.pop(),e?i[0]:void 0}},s=function(t,n){return function(){var e;const o=t[n];return null!==(e=o.__current[o.__current.length-1]?.name)&&void 0!==e?e:null}},c=function(t,n){return function(e){const o=t[n];return void 0===e?void 0!==o.__current[0]:!!o.__current[0]&&e===o.__current[0].name}},l=function(t,e){return function(o){const i=t[e];if(n(o))return i[o]&&i[o].runs?i[o].runs:0}};class a{constructor(){this.actions=Object.create(null),this.actions.__current=[],this.filters=Object.create(null),this.filters.__current=[],this.addAction=e(this,"actions"),this.addFilter=e(this,"filters"),this.removeAction=o(this,"actions"),this.removeFilter=o(this,"filters"),this.hasAction=i(this,"actions"),this.hasFilter=i(this,"filters"),this.removeAllActions=o(this,"actions",!0),this.removeAllFilters=o(this,"filters",!0),this.doAction=r(this,"actions"),this.applyFilters=r(this,"filters",!0),this.currentAction=s(this,"actions"),this.currentFilter=s(this,"filters"),this.doingAction=c(this,"actions"),this.doingFilter=c(this,"filters"),this.didAction=l(this,"actions"),this.didFilter=l(this,"filters")}}const h=function(){return new a},u=h(),{addAction:d,addFilter:f,removeAction:m,removeFilter:k,hasAction:g,hasFilter:p,removeAllActions:A,removeAllFilters:b,doAction:_,applyFilters:v,currentAction:y,currentFilter:F,doingAction:B,doingFilter:I,didAction:N,didFilter:x,actions:j,filters:w}=u;window.JetPlugins=window.JetPlugins||new class{constructor(t){this.hooks=t||h(),this.globalNamespace="jet-plugins",this.blocksConditions={}}hookNameFromBlock(t){const n=this.getBlockName(t);return n?`${this.globalNamespace}.frontend.element-ready.${n}`:""}getBlockName(t){return"string"==typeof t?t.replace("/","."):this.getBlockName(t?.dataset?.isBlock||"")}init(t,n){if(n&&n.length&&this.bulkBlocksInit(n),(t=t||jQuery("body"))&&t.length){let n=t.find('[data-is-block*="/"]');n&&n.length&&n.each(((t,n)=>{this.initBlock(n)}))}}isBlockRequiresInit(t){let n=void 0===t.dataset.jetInited;const e=this.getBlockName(t);return n&&this.blocksConditions[e]&&(n=this.blocksConditions[e](t)),n}initBlock(t,n){n=n||!1;const e=this.hookNameFromBlock(t);if(e&&this.hasHandlers(e)){let o=n;o||(o=this.isBlockRequiresInit(t)),o&&(this.hooks.doAction(e,jQuery(t)),t.dataset.jetInited=!0)}}hasHandlers(t){return!!this.hooks.actions[t]&&!(!this.hooks.actions[t].handlers||!this.hooks.actions[t].handlers.length)}registerBlockHandlers(t){const n=this.getBlockName(t.block);this.hooks.addAction(this.hookNameFromBlock(n),`${this.globalNamespace}/${t.block}`,t.callback),t.condition&&"function"==typeof t.condition&&(this.blocksConditions[n]=t.condition)}bulkBlocksInit(t){for(var n=0;n<t.length;n++)this.registerBlockHandlers(t[n])}}})();
(function($){
"use strict";
var JetEngineRegisteredStores=window.JetEngineRegisteredStores||{};
var JetEngineStores=window.JetEngineStores||{};
var JetEngine={
currentMonth: null,
currentRequest: {},
activeCalendarDay: null,
lazyLoading: false,
addedScripts: [],
addedStyles: [],
addedPostCSS: [],
assetsPromises: [],
initDone: false,
commonInit: function(){
JetEngine.commonEvents();
$(window).on('jet-popup/render-content/ajax/success', JetEngine.initStores);
window.JetPlugins.hooks.addFilter('jet-popup.show-popup.data',
'JetEngine.popupData',
(popupData, $popup, $triggeredBy)=> {
if(! $triggeredBy){
return popupData;
}
if($triggeredBy.data('popupIsJetEngine')){
popupData=JetEngine.prepareJetPopup(popupData, { 'is-jet-engine': true }, $triggeredBy);
}
return popupData;
}
);
JetEngine.initStores();
JetEngine.customUrlActions.init();
},
commonEvents: function($scope){
$scope=$scope||$(document);
$scope
.on('click.JetEngine', '.jet-calendar-nav__link', JetEngine.switchCalendarMonth)
.on('click.JetEngine', '.jet-calendar-week__day-mobile-overlay', JetEngine.showCalendarEvent)
.on('click.JetEngine', '.jet-listing-dynamic-link__link[data-delete-link="1"]', JetEngine.showConfirmDeleteDialog)
.on('jet-filter-content-rendered', JetEngine.maybeReinitSlider)
.on('click.JetEngine', '.jet-add-to-store', JetEngine.addToStore)
.on('click.JetEngine', '.jet-remove-from-store', JetEngine.removeFromStore)
.on('click.JetEngine', '.jet-engine-listing-overlay-wrap:not([data-url*="event=hover"])', JetEngine.handleListingItemClick)
.on('jet-filter-content-rendered', JetEngine.filtersCompatibility)
.on('click.JetEngine', '.jet-container[data-url]', JetEngine.handleContainerURL)
.on('change.JetEngine', '.jet-listing-dynamic-link .qty', JetEngine.handleProductQuantityChange);
},
handleProductQuantityChange: function(event){
event.preventDefault();
event.stopPropagation();
const $this=$(this);
$this.closest(".jet-listing-dynamic-link").find(".jet-woo-add-to-cart").data("quantity", $this.val()).attr("data-quantity", $this.val());
},
handleContainerURL: function(){
var $this=$(this),
url=$this.data('url'),
target=$this.data('target');
if(! target){
window.location=url;
}else{
window.open(url, '_blank').focus();
}},
filtersCompatibility: function(event, $provider, filtersInstance, providerType){
if('jet-engine'!==providerType){
return;
}
var $blocksListing=$provider.closest('.jet-listing-grid--blocks');
if($blocksListing.length){
JetEngine.widgetListingGrid($blocksListing);
}
if(window.JetPopupFrontend&&window.JetPopupFrontend.initAttachedPopups){
window.JetPopupFrontend.initAttachedPopups($provider);
}},
init: function(){
var widgets={
'jet-listing-dynamic-field.default':JetEngine.widgetDynamicField,
'jet-listing-grid.default': JetEngine.widgetListingGrid,
};
$.each(widgets, function(widget, callback){
window.elementorFrontend.hooks.addAction('frontend/element_ready/' + widget, callback);
});
window.elementorFrontend.elements.$window.on('elementor/nested-tabs/activate',
(event, content)=> {
const $content=$(content);
setTimeout(()=> {
JetEngine.maybeReinitSlider(event, $content);
JetEngine.widgetDynamicField($content);
});
}
);
window.elementorFrontend.hooks.addFilter('jet-popup/widget-extensions/popup-data',
JetEngine.prepareJetPopup
);
window.JetPlugins.hooks.addFilter('jet-popup.show-popup.data',
'JetEngine.popupData',
(popupData, $popup, $triggeredBy)=> {
if(! $triggeredBy){
return popupData;
}
if($triggeredBy.data('popupIsJetEngine')){
popupData=JetEngine.prepareJetPopup(popupData, { 'is-jet-engine': true }, $triggeredBy);
}
return popupData;
}
);
JetEngine.updateAddedStyles();
},
initBricks: function($scope){
if(window.bricksIsFrontend){
return;
}
$scope=$scope||$('body');
JetEngine.initBlocks($scope);
},
initBlocks: function($scope){
$scope=$scope||$('body');
window.JetPlugins.init($scope, [
{
block: 'jet-engine/listing-grid',
callback: JetEngine.widgetListingGrid
},
{
block: 'jet-engine/dynamic-field',
callback: JetEngine.widgetDynamicField
}
]);
},
initFrontStores: function($scope){
$scope=$scope||$('body');
$('.jet-add-to-store.is-front-store', $scope).each(function(){
var $this=$(this),
args=$this.data('args'),
store=JetEngineStores[ args.store.type ],
count=0;
args=JetEngine.ensureJSON(args);
if(! store){
return;
}
if(store.inStore(args.store.slug, '' + args.post_id)){
JetEngine.switchDataStoreStatus($this);
}});
$('.jet-remove-from-store.is-front-store', $scope).each(function(){
var $this=$(this),
args=$this.data('args'),
store=JetEngineStores[ args.store.type ],
count=0;
args=JetEngine.ensureJSON(args);
if(! store){
return;
}
if(! store.inStore(args.store.slug, '' + args.post_id)){
$this.addClass('is-hidden');
}else{
$this.removeClass('is-hidden');
}});
},
initStores: function(){
JetEngine.initFrontStores();
$.each(JetEngineRegisteredStores, function(storeSlug, storeType){
var store=JetEngineStores[ storeType ],
storeData=null,
count=0;
if(! store){
return;
}
storeData=store.getStore(storeSlug);
if(storeData&&storeData.length){
count=storeData.length;
}
$('span.jet-engine-data-store-count[data-store="' + storeSlug + '"]').text(count);
});
JetEngine.loadFrontStoresItems();
},
loadFrontStoresItems: function($scope){
$scope=$scope||$('body');
$('.jet-listing-not-found.jet-listing-grid__items', $scope).each(function(){
var $this=$(this),
nav=$this.data('nav'),
isStore=$this.data('is-store-listing'),
query=nav.query;
nav=JetEngine.ensureJSON(nav);
if(query&&query.post__in&&query.post__in.length&&0 >=query.post__in.indexOf('is-front')){
var storeType=query.post__in[1],
storeSlug=query.post__in[2],
store=JetEngineStores[ storeType ],
posts=[],
$container=$this.closest('.elementor-widget-container');
if(! $container.length){
$container=$this.closest('.jet-listing-grid--blocks');
}
if(! store){
return;
}
posts=store.getStore(storeSlug);
if(! posts.length){
return;
}
query.post__in=posts;
query.is_front_store=true;
JetEngine.ajaxGetListing({
handler: 'get_listing',
container: $container,
masonry: false,
slider: false,
append: false,
query: query,
widgetSettings: nav.widget_settings,
}, function(response){
JetEngine.widgetListingGrid($container);
});
}else if(isStore){
$(document).trigger('jet-listing-grid-init-store', $this);
}});
},
removeFromStore: function(event){
event.preventDefault();
event.stopPropagation();
var $this=$(this),
args=$this.data('args'),
isDataStoreBtn=$this.hasClass('jet-data-store-link');
args=JetEngine.ensureJSON(args);
if(args.store.is_front){
var store=JetEngineStores[ args.store.type ],
count=0;
if(! store){
return;
}
if(! store.inStore(args.store.slug, '' + args.post_id)){
var storePosts=store.getStore(args.store.slug);
count=storePosts.length;
}else{
count=store.remove(args.store.slug, args.post_id);
}
$('.jet-add-to-store[data-store="' + args.store.slug + '"][data-post="' + args.post_id + '"]').each(function(){
JetEngine.switchDataStoreStatus($(this), true);
});
$('.jet-data-store-link.jet-remove-from-store[data-store="' + args.store.slug + '"][data-post="' + args.post_id + '"]').each(function(){
JetEngine.switchDataStoreStatus($(this), true);
});
$('span.jet-engine-data-store-count[data-store="' + args.store.slug + '"]').text(count);
if(args.remove_from_listing){
$this.closest('.jet-listing-dynamic-post-' + args.post_id).remove();
}
if(args.synch_id){
var $container=$('#' + args.synch_id),
$elemContainer=$container.find('> .elementor-widget-container'),
$items=$container.find('.jet-listing-grid__items'),
posts=[],
nav=$items.data('nav')||{},
query=nav.query||{};
nav=JetEngine.ensureJSON(nav);
posts=store.getStore(args.store.slug);
if(! posts.length){
posts=[ 'is-front', args.store.type, args.store.slug ];
}
query.post__in=posts;
query.is_front_store=true;
JetEngine.ajaxGetListing({
handler: 'get_listing',
container: $elemContainer.length ? $elemContainer:$container,
masonry: false,
slider: false,
append: false,
query: query,
widgetSettings: nav.widget_settings,
postID: window.elementorFrontendConfig.post.id,
elementID: $container.data('id'),
}, function(response){
JetEngine.widgetListingGrid($container);
});
}
$(document).trigger('jet-engine-data-stores-on-remove', args);
return;
}
if($this.hasClass('jet-store-processing')){
return;
}
$this.css('opacity', 0.3);
$this.addClass('jet-store-processing');
$.ajax({
url: JetEngineSettings.ajaxurl,
type: 'POST',
dataType: 'json',
data: {
action: 'jet_engine_remove_from_store_' + args.store.slug,
store: args.store.slug,
post_id: args.post_id,
},
}).done(function(response){
$this.css('opacity', 1);
$this.removeClass('jet-store-processing');
if(response.success){
if(! isDataStoreBtn){
$this.addClass('is-hidden');
}
$('.jet-add-to-store[data-store="' + args.store.slug + '"][data-post="' + args.post_id + '"]').each(function(){
JetEngine.switchDataStoreStatus($(this), true);
});
$('.jet-data-store-link.jet-remove-from-store[data-store="' + args.store.slug + '"][data-post="' + args.post_id + '"]').each(function(){
JetEngine.switchDataStoreStatus($(this), true);
});
if(args.synch_id){
var $container=$('#' + args.synch_id),
$elemContainer=$container.find('> .elementor-widget-container'),
$items=$container.find('.jet-listing-grid__items'),
nav=$items.data('nav'),
query=nav.query,
postID=window.elementorFrontend ? window.elementorFrontendConfig.post.id:0;
nav=JetEngine.ensureJSON(nav);
if($container.hasClass('brxe-jet-engine-listing-grid')){
postID=window.bricksData.postId;
}
JetEngine.ajaxGetListing({
handler: 'get_listing',
container: $elemContainer.length ? $elemContainer:$container,
masonry: false,
slider: false,
append: false,
query: query,
widgetSettings: nav.widget_settings,
postID,
elementID: $container.data('id'),
}, function(response){
JetEngine.widgetListingGrid($container);
});
}
if(args.remove_from_listing){
$this.closest('.jet-listing-grid__item[data-post="' + args.post_id + '"]').remove();
}
if(response.data.fragments){
$.each(response.data.fragments, function(selector, value){
$(selector).html(value);
});
}
$(document).trigger('jet-engine-data-stores-on-remove', args);
}else{
alert(response.data.message);
}
return response;
}).done(function(response){
if(args.remove_from_listing){
$this.closest('.jet-listing-grid__item').remove();
}
if(response.success){
$('span.jet-engine-data-store-count[data-store="' + args.store.slug + '"]').text(response.data.count);
}}).fail(function(jqXHR, textStatus, errorThrown){
$this.css('opacity', 1);
$this.removeClass('jet-store-processing');
alert(errorThrown);
});
},
triggerPopup: function(popupID, isJetEngine, postID){
if(! popupID){
return;
}
var popupData={
popupId: 'jet-popup-' + popupID,
};
if(isJetEngine){
popupData.isJetEngine=true;
popupData.postId=postID;
}
$(window).trigger({
type: 'jet-popup-open-trigger',
popupData: popupData
});
},
addToStore: function(event){
event.preventDefault();
event.stopPropagation();
var $this=$(this),
args=$this.data('args');
args=JetEngine.ensureJSON(args);
if($this.hasClass('in-store')){
if(args.popup){
JetEngine.triggerPopup(args.popup, args.isJetEngine, args.post_id);
}else if('_blank'===$this.attr('target')){
window.open($this.attr('href'));
}else{
window.location=$this.attr('href');
}
return;
}
if(args.store.is_front){
var store=JetEngineStores[ args.store.type ],
count=0;
if(! store){
return;
}
if(store.inStore(args.store.slug, '' + args.post_id)){
var storePosts=store.getStore(args.store.slug);
count=storePosts.length;
}else{
count=store.addToStore(args.store.slug, args.post_id, args.store.size);
if(false===count){
return;
}}
if(args.popup){
JetEngine.triggerPopup(args.popup, args.isJetEngine, args.post_id);
}
JetEngine.switchDataStoreStatus($this);
$('span.jet-engine-data-store-count[data-store="' + args.store.slug + '"]').text(count);
$('.jet-remove-from-store[data-store="' + args.store.slug + '"][data-post="' + args.post_id + '"]').removeClass('is-hidden');
if(args.synch_id){
var $container=$('#' + args.synch_id),
$elemContainer=$container.find('> .elementor-widget-container'),
$items=$container.find('.jet-listing-grid__items'),
posts=[],
nav=$items.data('nav')||{},
query=nav.query||{};
nav=JetEngine.ensureJSON(nav);
posts=store.getStore(args.store.slug);
query.post__in=posts;
query.is_front_store=true;
JetEngine.ajaxGetListing({
handler: 'get_listing',
container: $elemContainer.length ? $elemContainer:$container,
masonry: false,
slider: false,
append: false,
query: query,
widgetSettings: nav.widget_settings,
postID: window.elementorFrontendConfig.post.id,
elementID: $container.data('id'),
}, function(response){
JetEngine.widgetListingGrid($container);
});
}
$(document).trigger('jet-engine-data-stores-on-add', args);
return;
}
if($this.hasClass('jet-store-processing')){
return;
}
$this.css('opacity', 0.3);
$this.addClass('jet-store-processing');
$(document).trigger('jet-engine-on-add-to-store', [ $this, args ]);
$.ajax({
url: JetEngineSettings.ajaxurl,
type: 'POST',
dataType: 'json',
data: {
action: 'jet_engine_add_to_store_' + args.store.slug,
store: args.store.slug,
post_id: args.post_id,
},
}).done(function(response){
$this.css('opacity', 1);
$this.removeClass('jet-store-processing');
if(response.success){
JetEngine.switchDataStoreStatus($this);
$('.jet-remove-from-store[data-store="' + args.store.slug + '"][data-post="' + args.post_id + '"]').removeClass('is-hidden');
if(response.data.fragments){
$.each(response.data.fragments, function(selector, value){
$(selector).html(value);
});
}
if(args.synch_id){
var $container=$('#' + args.synch_id),
$elemContainer=$container.find('> .elementor-widget-container'),
$items=$container.find('.jet-listing-grid__items'),
nav=$items.data('nav'),
query=nav.query,
postID=window.elementorFrontend ? window.elementorFrontendConfig.post.id:0;
nav=JetEngine.ensureJSON(nav);
if($container.hasClass('brxe-jet-engine-listing-grid')){
postID=window.bricksData.postId;
}
JetEngine.ajaxGetListing({
handler: 'get_listing',
container: $elemContainer.length ? $elemContainer:$container,
masonry: false,
slider: false,
append: false,
query: query,
widgetSettings: nav.widget_settings,
postID,
elementID: $container.data('id'),
}, function(response){
JetEngine.widgetListingGrid($container);
});
}
if(args.popup){
JetEngine.triggerPopup(args.popup, args.isJetEngine, args.post_id);
}}else{
alert(response.data.message);
}
$(document).trigger('jet-engine-data-stores-on-add', args);
return response;
}).done(function(response){
if(response.success){
$('span.jet-engine-data-store-count[data-store="' + args.store.slug + '"]').text(response.data.count);
}}).fail(function(jqXHR, textStatus, errorThrown){
$this.css('opacity', 1);
$this.removeClass('jet-store-processing');
alert(errorThrown);
});
},
switchDataStoreStatus: function($item, toInitial){
var isDataStoreLink=$item.hasClass('jet-data-store-link'),
$label=$item.find('.jet-listing-dynamic-link__label, .jet-data-store-link__label'),
$icon=$item.find('.jet-listing-dynamic-link__icon, .jet-data-store-link__icon'),
args=$item.data('args'),
replaceLabel,
replaceURL,
replaceIcon;
args=JetEngine.ensureJSON(args);
toInitial=toInitial||false;
if(isDataStoreLink){
switch(args.action_after_added){
case 'remove_from_store':
if(toInitial){
$item.addClass('jet-add-to-store');
$item.removeClass('jet-remove-from-store');
$item.removeClass('in-store');
}else{
$item.addClass('jet-remove-from-store');
$item.removeClass('jet-add-to-store');
$item.addClass('in-store');
}
break;
case 'hide':
if(toInitial){
$item.removeClass('is-hidden');
}else{
$item.addClass('is-hidden');
}
return;
}}
if(toInitial){
replaceLabel=args.label;
replaceIcon=args.icon;
replaceURL='#';
}else{
replaceLabel=args.added_label;
replaceIcon=args.added_icon;
replaceURL=args.added_url;
}
if($label.length){
$label.replaceWith(replaceLabel);
}else{
$item.append(replaceLabel);
}
if($icon.length){
$icon.replaceWith(replaceIcon);
}else{
$item.prepend(replaceIcon);
}
if(isDataStoreLink&&'remove_from_store'===args.action_after_added){
return;
}
$item.attr('href', replaceURL);
if(toInitial){
$item.removeClass('in-store');
}else if(! $item.hasClass('in-store')){
$item.addClass('in-store');
}},
showConfirmDeleteDialog: function(event){
event.preventDefault();
event.stopPropagation();
var $this=$(this);
if(window.confirm($this.data('delete-message'))){
window.location=$this.attr('href');
}},
handleListingItemClick: function(event){
var url=$(this).data('url'),
target=$(this).data('target')||false;
if(url){
event.preventDefault();
if(window.elementorFrontend&&window.elementorFrontend.isEditMode()){
return;
}
if(-1!==url.indexOf('#jet-engine-action')){
JetEngine.customUrlActions.runAction(url);
}else{
if('_blank'===target){
window.open(url);
return;
}
window.location=url;
}}
},
customUrlActions: {
selectorOnClick: 'a[href^="#jet-engine-action"][href*="event=click"]',
selectorOnHover: 'a[href^="#jet-engine-action"][href*="event=hover"], [data-url^="#jet-engine-action"][data-url*="event=hover"]',
init: function(){
var timeout=null;
$(document).on('click.JetEngine', this.selectorOnClick, function(event){
event.preventDefault();
JetEngine.customUrlActions.actionHandler(event)
});
$(document).on('click.JetEngine', this.selectorOnHover, function(event){
if('A'===event.currentTarget.nodeName){
event.preventDefault();
}});
$(document).on({
'mouseenter.JetEngine': function(event){
if(timeout){
clearTimeout(timeout);
}
timeout=setTimeout(function(){
JetEngine.customUrlActions.actionHandler(event)
}, window.JetEngineSettings.hoverActionTimeout);
},
'mouseleave.JetEngine': function(){
if(timeout){
clearTimeout(timeout);
timeout=null;
}},
}, this.selectorOnHover);
},
actions: {},
addAction: function(name, callback){
this.actions[ name ]=callback;
},
actionHandler: function(event){
var url=$(event.currentTarget).attr('href')||$(event.currentTarget).attr('data-url');
this.runAction(url);
},
runAction: function(url){
var queryParts=url.split('&'),
settings={};
queryParts.forEach(function(item){
if(-1!==item.indexOf('=')){
var pair=item.split('=');
settings[ pair[0] ]=decodeURIComponent(pair[1]);
}});
if(! settings.action){
return;
}
var actionCb=this.actions[ settings.action ];
if(! actionCb){
return;
}
actionCb(settings);
}},
prepareJetPopup: function(popupData, widgetData, $scope){
var postId=null;
if(widgetData['is-jet-engine']){
popupData['isJetEngine']=true;
var $gridItems=$scope.closest('.jet-listing-grid__items'),
$gridItem=$scope.closest('.jet-listing-grid__item'),
$calendarItem=$scope.closest('.jet-calendar-week__day-event'),
$itemObject=$scope.closest('[data-item-object]'),
filterProvider=false,
filterQueryId='default';
if($gridItems.length){
popupData['listingSource']=$gridItems.data('listing-source');
popupData['listingId']=$gridItems.data('listing-id');
popupData['queryId']=$gridItems.data('query-id');
}else{
var $queryItems=$scope.closest('[data-query-id]'),
$listingSource=$scope.closest('[data-listing-source]');
if($queryItems.length){
popupData['queryId']=$queryItems.data('query-id');
}
if($listingSource.length){
popupData['listingSource']=$listingSource.data('listing-source');
}}
if($gridItem.length){
popupData['postId']=$gridItem.data('post-id');
filterProvider='jet-engine';
}else if($calendarItem.length){
popupData['postId']=$calendarItem.data('post-id');
filterProvider='jet-engine-calendar';
}else if($itemObject){
popupData['postId']=$itemObject.data('item-object');
}else if(window.elementorFrontendConfig&&window.elementorFrontendConfig.post){
popupData['postId']=window.elementorFrontendConfig.post.id;
}
if(window.JetEngineFormsEditor&&window.JetEngineFormsEditor.hasEditor){
popupData['hasEditor']=true;
}
if(window.JetSmartFilters){
switch(filterProvider){
case 'jet-engine':
var nav=$gridItems.data('nav');
if(nav.widget_settings?._element_id){
filterQueryId=nav.widget_settings._element_id;
}
break;
case 'jet-engine-calendar':
var settings=$calendarItem.closest('.jet-listing-calendar').data('settings');
if(settings._element_id){
filterQueryId=settings._element_id;
}
break;
}
filterProvider=window.JetPlugins.hooks.applyFilters('jet-engine.prepareJetPopupData.filterProvider', filterProvider, $scope, widgetData);
filterQueryId=window.JetPlugins.hooks.applyFilters('jet-engine.prepareJetPopupData.filterQueryId', filterQueryId, $scope, widgetData);
if(popupData.queryId&&filterProvider
&& window.JetSmartFilters?.filterGroups?.[ filterProvider + '/' + filterQueryId ]?.currentQuery
){
popupData['filtered_query']=window.JetSmartFilters.filterGroups[ filterProvider + '/' + filterQueryId ].currentQuery;
}}
}
return popupData;
},
showCalendarEvent: function(event){
var $this=$(this),
$day=$this.closest('.jet-calendar-week__day'),
$week=$day.closest('.jet-calendar-week'),
$events=$day.find('.jet-calendar-week__day-content'),
activeClass='calendar-event-active';
if($day.hasClass(activeClass)){
$day.removeClass(activeClass);
JetEngine.activeCalendarDay.remove();
JetEngine.activeCalendarDay=null;
return;
}
if(JetEngine.activeCalendarDay){
JetEngine.activeCalendarDay.remove();
$('.' + activeClass).removeClass(activeClass);
JetEngine.activeCalendarDay=null;
}
$day.addClass('calendar-event-active');
JetEngine.activeCalendarDay=$('<tr class="jet-calendar-week"><td colspan="7" class="jet-calendar-week__day jet-calendar-week__day-mobile"><div class="jet-calendar-week__day-mobile-event">' + $events.html() + '</div></td></tr>');
JetEngine.activeCalendarDay.find('.jet-popup-attach-event-inited').removeClass('jet-popup-attach-event-inited');
JetEngine.initElementsHandlers(JetEngine.activeCalendarDay);
JetEngine.activeCalendarDay.insertAfter($week);
},
widgetListingGrid: function($scope){
var widgetID=$scope.closest('.elementor-widget').data('id'),
$wrapper=$scope.find('.jet-listing-grid').first(),
hasLazyLoad=$wrapper.hasClass('jet-listing-grid--lazy-load'),
$listing=$scope.find('.jet-listing-grid__items').first(),
$slider=$listing.parent('.jet-listing-grid__slider'),
$masonry=$listing.hasClass('jet-listing-grid__masonry') ? $listing:false,
navSettings=$listing.data('nav'),
masonryGrid=false,
listingType='elementor';
navSettings=JetEngine.ensureJSON(navSettings);
if(hasLazyLoad){
var lazyLoadOptions=$wrapper.data('lazy-load'),
widgetSettings={},
$container=$scope.find('.elementor-widget-container');
if(window.elementorFrontend&&window.elementorFrontend.isEditMode()
&& $wrapper.closest('.elementor[data-elementor-type]').hasClass('elementor-edit-mode')
){
widgetSettings=JetEngine.getEditorElementSettings($scope.closest('.elementor-widget'));
widgetID=false;
}
if(! $container.length){
$container=$scope;
widgetSettings=$scope.data('widget-settings');
}
if(! widgetID){
widgetID=$scope.data('element-id');
listingType=$scope.data('listing-type');
}
JetEngine.lazyLoadListing({
container:      $container,
elementID:      widgetID,
postID:         lazyLoadOptions.post_id,
queriedID:      lazyLoadOptions.queried_id||false,
offset:         lazyLoadOptions.offset||'0px',
query:          lazyLoadOptions.query||{},
listingType:    listingType,
widgetSettings: widgetSettings,
extraProps:     lazyLoadOptions.extra_props||false,
});
return;
}
if($slider.length){
JetEngine.initSlider($slider);
}
if($masonry&&$masonry.length){
JetEngine.initMasonry($masonry);
if($scope.hasClass('brxe-jet-engine-listing-grid')){
$(window).on('load', function(){
JetEngine.runMasonry($masonry);
});
}}
if(navSettings&&navSettings.enabled){
JetEngine.loadMoreListing({
container: $listing,
settings:  navSettings,
masonry:   $masonry,
slider:    $slider,
});
}
if(window.elementorFrontend&&window.elementorFrontend.isEditMode()
&& $wrapper.closest('.elementor-element-edit-mode').length
){
JetEngine.initElementsHandlers($wrapper);
}},
initMasonry: function($masonry, masonrySettings){
imagesLoaded($masonry, function(){
JetEngine.runMasonry($masonry, masonrySettings);
});
},
runMasonry: function($masonry, masonrySettings){
var defaultSettings={
itemSelector: '> .jet-listing-grid__item',
columnsKey:   'columns',
};
masonrySettings=masonrySettings||{};
masonrySettings=$.extend({}, defaultSettings, masonrySettings);
var $eWidget=$masonry.closest('.elementor-widget'),
$items=$(masonrySettings.itemSelector, $masonry),
options=$masonry.data('masonry-grid-options')||{};
options=JetEngine.ensureJSON(options);
$items.css({
marginTop: ''
});
const { gap }=options;
let margin=null;
if(gap){
margin={
x: +gap.horizontal,
y: +gap.vertical,
};}
var args={
container: $masonry[0],
margin: margin ? margin:0,
};
if($eWidget.length){
var settings=JetEngine.getElementorElementSettings($eWidget),
breakpoints={},
eBreakpoints=window.elementorFrontend.config.responsive.activeBreakpoints,
columnsKey=masonrySettings.columnsKey;
args.columns=settings[columnsKey + '_widescreen'] ? +settings[columnsKey + '_widescreen']:+settings[columnsKey];
Object.keys(eBreakpoints).reverse().forEach(function(breakpointName){
if(settings[columnsKey + '_' + breakpointName]){
if('widescreen'===breakpointName){
breakpoints[eBreakpoints[breakpointName].value - 1]=+settings[columnsKey];
}else{
breakpoints[eBreakpoints[breakpointName].value]=+settings[columnsKey + '_' + breakpointName];
}}
});
args.breakAt=breakpoints;
}else{
args.columns=options.columns.desktop;
args.breakAt={
1025: options.columns.tablet,
768:  options.columns.mobile,
};}
var masonryInstance=Macy(args);
masonryInstance.runOnImageLoad(function (){
masonryInstance.recalculate(true);
}, true);
$masonry.on('jet-engine/listing/recalculate-masonry-listing', function(){
masonryInstance.runOnImageLoad(function (){
masonryInstance.recalculate(true);
}, true);
});
$(document).on('jet-engine/listing/recalculate-masonry', function(){
masonryInstance.recalculate(true);
});
},
ajaxGetListing: function(options, doneCallback, failCallback){
var container=options.container||false,
handler=options.handler||false,
masonry=options.masonry||false,
slider=options.slider||false,
append=options.append||false,
query=options.query||{},
widgetSettings=options.widgetSettings||{},
postID=options.postID||false,
queriedID=options.queriedID||false,
elementID=options.elementID||false,
page=options.page||1,
preventCSS=options.preventCSS||false,
listingType=options.listingType||false,
extraProps=options.extraProps||false,
isEditMode=window.elementorFrontend&&window.elementorFrontend.isEditMode();
doneCallback=doneCallback||function(response){};
if(! container||! handler){
return;
}
if(! preventCSS){
container.css({
pointerEvents: 'none',
opacity: '0.5',
cursor: 'default',
});
}
var requestData={
action: 'jet_engine_ajax',
handler: handler,
query: query,
widget_settings: widgetSettings,
page_settings: {
post_id: postID,
queried_id: queriedID,
element_id: elementID,
page: page,
},
listing_type: listingType,
isEditMode: isEditMode,
addedPostCSS: JetEngine.addedPostCSS
};
if(extraProps){
Object.assign(requestData, extraProps);
}
$.ajax({
url: JetEngineSettings.ajaxlisting,
type: 'POST',
dataType: 'json',
data: requestData,
}).done(function(response){
if(!preventCSS){
container.css({
pointerEvents: '',
opacity: '',
cursor: '',
});
}
if(response.success){
JetEngine.enqueueAssetsFromResponse(response);
container.data('page', page);
var $html=$(response.data.html);
JetEngine.initFrontStores($html);
if(slider&&slider.length){
var $slider=slider.find('> .jet-listing-grid__items');
if(! $slider.hasClass('slick-initialized')){
if(append){
container.append($html);
}else{
container.html($html);
}
var itemsCount=container.find('> .jet-listing-grid__item').length;
slider.addClass('jet-listing-grid__slider');
JetEngine.initSlider(slider, { itemsCount: itemsCount });
}else{
$html.each(function(index, el){
$slider.slick('slickAdd', el);
});
}}else{
if(append){
container.append($html);
}else{
container.html($html);
}
if(masonry&&masonry.length){
masonry.trigger('jet-engine/listing/recalculate-masonry-listing');
}}
Promise.all(JetEngine.assetsPromises).then(function(){
JetEngine.initElementsHandlers($html);
JetEngine.assetsPromises=[];
});
if(response.data.fragments){
for(var selector in response.data.fragments){
var $selector=$(selector);
if($selector.length){
$selector.html(response.data.fragments[ selector ]);
}}
}}
$(document).trigger('jet-engine/listing/ajax-get-listing/done', [ $html, options ]);
}).done(doneCallback).fail(function(){
container.removeAttr('style');
if(failCallback){
failCallback.call();
}});
},
loadMoreListing: function(args){
var instance={
setup: function(){
this.container=args.container;
this.masonry=args.masonry;
this.slider=args.slider;
this.settings=args.settings;
this.wrapper=this.container.closest('.jet-listing-grid');
this.type=this.settings.type||'click';
this.page=parseInt(this.container.data('page'), 10)||0;
this.pages=parseInt(this.container.data('pages'), 10)||0;
this.queriedID=this.container.data('queried-id')||false;
},
init: function(){
this.setup();
switch(this.type){
case 'click':
this.handleMore();
break;
case 'scroll':
if(( ! window.elementorFrontend||! window.elementorFrontend.isEditMode())&&! this.slider.length){
this.handleInfiniteScroll();
}
break;
}},
handleMore: function(){
if(! this.settings.more_el){
return;
}
var self=this,
$button=$(this.settings.more_el);
if(! $button.length){
return;
}
if(this.page===this.pages&&! window.elementor){
$button.css('display', 'none');
}else{
$button.removeAttr('style');
}
$(document)
.off('click', this.settings.more_el)
.on('click', this.settings.more_el, function(event){
event.preventDefault();
$button.css({
pointerEvents: 'none',
opacity: '0.5',
cursor: 'default',
});
self.ajaxGetItems(function(response){
$button.removeAttr('style');
if(response.success&&self.page===self.pages){
$button.css('display', 'none');
}}, function(){
$button.button.removeAttr('style');
}
);
});
},
handleInfiniteScroll: function(){
if(this.container.hasClass('jet-listing-not-found')){
return;
}
if(this.page===this.pages){
return;
}
var self=this,
$trigger=this.wrapper.find('.jet-listing-grid__loader'),
offset='0%';
if(! $trigger.length){
$trigger=$('<div>', {
class: 'jet-listing-grid__loading-trigger'
});
this.wrapper.append($trigger);
}
if(this.settings.widget_settings&&this.settings.widget_settings.load_more_offset){
var offsetValue=this.settings.widget_settings.load_more_offset;
switch(typeof offsetValue){
case 'object':
var size=offsetValue.size ? offsetValue.size:'0',
unit=offsetValue.unit ? offsetValue.unit:'px';
offset=size + unit;
break;
case 'number':
case 'string':
offset=offsetValue + 'px';
break;
}}
var observer=new IntersectionObserver(
function(entries, observer){
if(entries[0].isIntersecting){
self.ajaxGetItems(function(){
if(self.page!==self.pages){
setTimeout(function(){
observer.observe(entries[0].target);
}, 250);
}});
observer.unobserve(entries[0].target);
}},
{
rootMargin: '0% 0% ' + offset + ' 0%',
}
);
observer.observe($trigger[0]);
},
ajaxGetItems: function(doneCallback, failCallback){
var self=this;
this.page++;
this.wrapper.addClass('jet-listing-grid-loading');
JetEngine.ajaxGetListing({
handler:        'listing_load_more',
container:      this.container,
masonry:        this.masonry,
slider:         this.slider,
append:         true,
query:          this.settings.query,
widgetSettings: this.settings.widget_settings,
page:           this.page,
queriedID:      this.queriedID,
preventCSS:     !! this.wrapper.find('.jet-listing-grid__loader').length,
}, function(response){
JetEngine.lazyLoading=false;
self.wrapper.removeClass('jet-listing-grid-loading');
if(doneCallback){
doneCallback(response);
}
$(document).trigger('jet-engine/listing-grid/after-load-more', [args, response]);
}, function(){
JetEngine.lazyLoading=false;
self.wrapper.removeClass('jet-listing-grid-loading');
if(failCallback){
failCallback();
}});
},
};
instance.init();
},
lazyLoadListing: function(args){
var $wrapper=args.container.find('.jet-listing-grid'),
observer=new IntersectionObserver(
function(entries, observer){
if(entries[0].isIntersecting){
JetEngine.lazyLoading=true;
if(! $wrapper.length){
$wrapper=args.container;
}
$wrapper.addClass('jet-listing-grid-loading');
JetEngine.ajaxGetListing({
handler: 'get_listing',
container: args.container,
masonry: false,
slider: false,
append: false,
elementID: args.elementID,
postID: args.postID,
queriedID: args.queriedID,
query: args.query,
widgetSettings: args.widgetSettings,
listingType: args.listingType,
preventCSS: true,
extraProps: args.extraProps,
}, function(response){
$wrapper.removeClass('jet-listing-grid-loading');
var $widget=args.container.closest('.elementor-widget');
if(! $widget.length){
$widget=args.container.closest('.jet-listing-grid--blocks');
}
if(! $widget.length){
$widget=args.container;
}
if($widget.length){
$widget.find('.jet-listing-grid').first().removeClass('jet-listing-grid--lazy-load');
}
JetEngine.widgetListingGrid($widget);
JetEngine.loadFrontStoresItems($widget);
JetEngine.lazyLoading=false;
var needReInitFilters=false,
isEditMode=window.elementorFrontend&&window.elementorFrontend.isEditMode();
if(! isEditMode&&window.JetSmartFilterSettings){
if(response.data.filters_data){
$.each(response.data.filters_data, function(param, data){
if('extra_props'===param){
window.JetSmartFilterSettings[ param ]=$.extend({},
window.JetSmartFilterSettings[ param ],
data
);
}else{
if(window.JetSmartFilterSettings[ param ]['jet-engine']){
window.JetSmartFilterSettings[ param ]['jet-engine']=$.extend({},
window.JetSmartFilterSettings[ param ]['jet-engine'],
data
);
}else{
window.JetSmartFilterSettings[ param ]['jet-engine']=data;
}}
});
needReInitFilters=true;
}
if(response.data.indexer_data){
const {
provider=false,
query={}}=response.data.indexer_data;
window.JetSmartFilters.setIndexedData(provider, query);
}}
if(needReInitFilters&&window.JetSmartFilters){
window.JetSmartFilters.reinitFilters();
}
$(document).trigger('jet-engine/listing-grid/after-lazy-load', [ args, response ]);
}, function(){
JetEngine.lazyLoading=false;
if(! $wrapper.length){
$wrapper=args.container;
}
$wrapper.removeClass('jet-listing-grid-loading');
});
observer.unobserve(entries[0].target);
}},
{
rootMargin: '0% 0% ' + args.offset + ' 0%'
}
);
observer.observe(args.container[0]);
},
ensureJSON: function(maybeJSON){
if(! maybeJSON){
return maybeJSON;
}
if('string'===typeof maybeJSON){
console.log(maybeJSON);
}
return maybeJSON;
},
initSlider: function($slider, customOptions){
var $eWidget=$slider.closest('.elementor-widget'),
options=$slider.data('slider_options'),
windowWidth=$(window).width(),
tabletBP=1025,
mobileBP=768,
tabletSlides, mobileSlides, defaultOptions, slickOptions;
options=JetEngine.ensureJSON(options);
customOptions=customOptions||{};
options=$.extend({}, options, customOptions);
if($eWidget.length){
var settings=JetEngine.getElementorElementSettings($eWidget),
responsive=[],
deviceMode=elementorFrontend.getCurrentDeviceMode(),
eBreakpoints=window.elementorFrontend.config.responsive.activeBreakpoints;
options.slidesToShow=settings.columns_widescreen ? +settings.columns_widescreen:+settings.columns;
Object.keys(eBreakpoints).reverse().forEach(function(breakpointName){
if(settings['columns_' + breakpointName]){
if('widescreen'===breakpointName){
responsive.push({
breakpoint: eBreakpoints[breakpointName].value,
settings: {
slidesToShow: +settings['columns'],
}});
}else{
var breakpointSettings={
breakpoint: eBreakpoints[breakpointName].value + 1,
settings:   {
slidesToShow: +settings['columns_' + breakpointName],
}};
if(options.slidesToScroll > breakpointSettings.settings.slidesToShow){
breakpointSettings.settings.slidesToScroll=breakpointSettings.settings.slidesToShow;
}
responsive.push(breakpointSettings);
}}
});
options.responsive=responsive;
}else{
if(! options.slidesToShow){
options.slidesToShow={
desktop: 3,
tablet: 1,
mobile: 1,
}}
if(options.itemsCount <=options.slidesToShow.desktop&&windowWidth >=tabletBP){
$slider.removeClass('jet-listing-grid__slider');
return;
}else if(options.itemsCount <=options.slidesToShow.tablet&&tabletBP > windowWidth&&windowWidth >=mobileBP){
$slider.removeClass('jet-listing-grid__slider');
return;
}else if(options.itemsCount <=options.slidesToShow.mobile&&windowWidth < mobileBP){
$slider.removeClass('jet-listing-grid__slider');
return;
}
if(options.slidesToShow.tablet){
tabletSlides=options.slidesToShow.tablet;
}else{
tabletSlides=1===options.slidesToShow.desktop ? 1:2;
}
if(options.slidesToShow.mobile){
mobileSlides=options.slidesToShow.mobile;
}else{
mobileSlides=1;
}
options.slidesToShow=options.slidesToShow.desktop;
options.responsive=[
{
breakpoint: 1025,
settings: {
slidesToShow: tabletSlides,
slidesToScroll: options.slidesToScroll > tabletSlides ? tabletSlides:options.slidesToScroll
}},
{
breakpoint: 768,
settings: {
slidesToShow: mobileSlides,
slidesToScroll: 1
}}
];
}
defaultOptions={
customPaging: function(slider, i){
return $('<span />').text(i + 1).attr('role', 'tab');
},
slide: '.jet-listing-grid__item',
dotsClass: 'jet-slick-dots',
};
slickOptions=$.extend({}, defaultOptions, options);
var $sliderItems=$slider.find('> .jet-listing-grid__items');
if(slickOptions.infinite){
$sliderItems.on('init', function(){
var $items=$(this),
$clonedSlides=$('> .slick-list > .slick-track > .slick-cloned.jet-listing-grid__item', $items);
if(!$clonedSlides.length){
return;
}
JetEngine.initElementsHandlers($clonedSlides);
});
}
if(slickOptions.rtl){
$sliderItems.on('init', function(){
var $items=$(this),
$lazyImages=$('img[loading=lazy]', $items),
lazyImageObserver=new IntersectionObserver(
function(entries, observer){
entries.forEach(function(entry){
if(entry.isIntersecting){
if(! entry.target.complete){
entry.target.removeAttribute('loading');
}
observer.unobserve(entry.target);
}});
}
);
$lazyImages.each(function(){
const $img=$(this);
lazyImageObserver.observe($img[0]);
});
});
}
if($sliderItems.hasClass('slick-initialized')){
$sliderItems.slick('refresh', true);
return;
}
if(slickOptions.variableWidth){
slickOptions.slidesToShow=1;
slickOptions.slidesToScroll=1;
slickOptions.responsive=null;
}
$sliderItems.slick(slickOptions);
},
maybeReinitSlider: function(event, $scope){
var $slider=$scope.find('.jet-listing-grid__slider');
if($slider.length){
$slider.each(function(){
JetEngine.initSlider($(this));
});
}},
widgetDynamicField: function($scope){
var $slider=$scope.find('.jet-engine-gallery-slider');
if($slider.length){
if($.isFunction($.fn.imagesLoaded)){
$slider.imagesLoaded().always(function(instance){
var $eWidget=$slider.closest('.elementor-widget');
if($slider.hasClass('slick-initialized')){
$slider.slick('refresh', true);
}else{
var atts=$slider.data('atts');
atts=JetEngine.ensureJSON(atts);
if($eWidget.length){
var settings=JetEngine.getElementorElementSettings($scope),
eBreakpoints=window.elementorFrontend.config.responsive.activeBreakpoints,
responsive=[];
if(settings.img_slider_cols||settings.img_slider_cols_widescreen){
atts.slidesToShow=settings.img_slider_cols_widescreen ? +settings.img_slider_cols_widescreen:+settings.img_slider_cols;
}
Object.keys(eBreakpoints).reverse().forEach(function(breakpointName){
if(settings['img_slider_cols_' + breakpointName]){
if('widescreen'===breakpointName){
responsive.push({
breakpoint: eBreakpoints[breakpointName].value,
settings:   {
slidesToShow: +settings['img_slider_cols'],
}});
}else{
var breakpointSettings={
breakpoint: eBreakpoints[breakpointName].value + 1,
settings:   {
slidesToShow: +settings['img_slider_cols_' + breakpointName],
}};
responsive.push(breakpointSettings);
}}
});
atts.responsive=responsive;
}
$slider.slick(atts);
}});
}}
$slider.on('init', function (event, slick){
const slider=event.target;
if(!slider.classList.contains('jet-engine-gallery-lightbox')){
return;
}
let lightbox=new PhotoSwipeLightbox({
mainClass: 'brx',
gallery: slider,
children: 'a',
showHideAnimationType: 'none',
zoomAnimationDuration: false,
pswpModule: PhotoSwipe5,
});
lightbox.addFilter('numItems', numItems=> slick.slideCount);
lightbox.addFilter('clickedIndex', function (clickedIndex, e){
const slide=e.target.closest('.slick-slide');
if(!slide){
return clickedIndex;
}
if(clickedIndex >=slick.slideCount){
return clickedIndex % slick.slideCount;
}
return clickedIndex;
});
lightbox.addFilter('thumbEl', (thumbnail, itemData, index)=> {
return thumbnail;
});
lightbox.addFilter('thumbBounds', (thumbBounds, itemData, index)=> {
return thumbBounds;
});
lightbox.init();
});
var $masonry=$scope.find('.jet-engine-gallery-grid--masonry');
if($masonry.length){
JetEngine.initMasonry($masonry, {
columnsKey: 'img_columns',
itemSelector: '> .jet-engine-gallery-grid__item',
});
}},
switchCalendarMonth: function($event){
var $this=$(this),
$calendar=$this.closest('.jet-calendar'),
$widget=$calendar.closest('.elementor-widget-container'),
settings=$calendar.data('settings'),
post=$calendar.data('post'),
month=$this.data('month');
settings=JetEngine.ensureJSON(settings);
if(! $widget.length){
$widget=$calendar.closest('.jet-listing-calendar-block')
}
if(! $widget.length){
$widget=$calendar.closest('.brxe-jet-listing-calendar')
}
$calendar.addClass('jet-calendar-loading');
JetEngine.currentRequest={
jet_engine_action: 'jet_engine_calendar_get_month',
month: month,
settings: settings,
post: post,
};
$(document).trigger('jet-engine-request-calendar');
$.ajax({
url: JetEngineSettings.ajaxlisting,
type: 'POST',
dataType: 'json',
data: JetEngine.currentRequest,
}).done(function(response){
if(response.success){
$calendar.replaceWith(response.data.content);
JetEngine.initElementsHandlers($widget);
}
$calendar.removeClass('jet-calendar-loading');
});
},
initElementsHandlers: function($selector){
window.JetPlugins.init($selector);
$selector.find('[data-element_type]').each(function(){
var $this=$(this),
elementType=$this.data('element_type');
if(!elementType){
return;
}
if('widget'===elementType){
elementType=$this.data('widget_type');
window.elementorFrontend.hooks.doAction('frontend/element_ready/widget', $this, $);
}
window.elementorFrontend.hooks.doAction('frontend/element_ready/global', $this, $);
window.elementorFrontend.hooks.doAction('frontend/element_ready/' + elementType, $this, $);
});
if(window.elementorFrontend){
const elementorLazyLoad=new Event("elementor/lazyload/observe");
document.dispatchEvent(elementorLazyLoad);
}
if(window.JetPopupFrontend&&window.JetPopupFrontend.initAttachedPopups){
window.JetPopupFrontend.initAttachedPopups($selector);
}},
getElementorElementSettings: function($scope){
if(window.elementorFrontend&&window.elementorFrontend.isEditMode()&&$scope.hasClass('elementor-element-edit-mode')){
return JetEngine.getEditorElementSettings($scope);
}
return $scope.data('settings')||{};},
getEditorElementSettings: function($scope){
var modelCID=$scope.data('model-cid'),
elementData;
if(! modelCID){
return {};}
if(! window.elementorFrontend.hasOwnProperty('config')){
return {};}
if(! window.elementorFrontend.config.hasOwnProperty('elements')){
return {};}
if(! window.elementorFrontend.config.elements.hasOwnProperty('data')){
return {};}
elementData=window.elementorFrontend.config.elements.data[ modelCID ];
if(! elementData){
return {};}
return elementData.toJSON();
},
debounce: function(threshold, callback){
var timeout;
return function debounced($event){
function delayed(){
callback.call(this, $event);
timeout=null;
}
if(timeout){
clearTimeout(timeout);
}
timeout=setTimeout(delayed, threshold);
};},
updateAddedStyles: function(){
if(window.JetEngineSettings&&window.JetEngineSettings.addedPostCSS){
$.each(window.JetEngineSettings.addedPostCSS, function(ind, cssID){
JetEngine.addedStyles.push('elementor-post-' + cssID);
JetEngine.addedPostCSS.push(cssID);
});
}},
enqueueAssetsFromResponse: function(response){
if(response.data.scripts){
JetEngine.enqueueScripts(response.data.scripts);
}
if(response.data.styles){
JetEngine.enqueueStyles(response.data.styles);
}},
enqueueScripts: function(scripts){
$.each(scripts, function(handle, scriptHtml){
JetEngine.enqueueScript(handle, scriptHtml)
});
},
enqueueStyles: function(styles){
$.each(styles, function(handle, styleHtml){
JetEngine.enqueueStyle(handle, styleHtml)
});
},
enqueueScript: function(handle, scriptHtml){
if(-1!==JetEngine.addedScripts.indexOf(handle)){
return;
}
if(! scriptHtml){
return;
}
var selector='script[id="' + handle + '-js"]';
if($(selector).length){
return;
}
var scriptsTags=scriptHtml.match(/<script[\s\S]*?<\/script>/gm);
if(scriptsTags.length){
for(var i=0; i < scriptsTags.length; i++){
JetEngine.assetsPromises.push(new Promise(function(resolve, reject){
var $tag=$(scriptsTags[i]);
if($tag[0].src){
var tag=document.createElement('script');
tag.type=$tag[0].type;
tag.src=$tag[0].src;
tag.id=$tag[0].id;
tag.async=false;
tag.onload=function(){
resolve();
};
document.body.append(tag);
}else{
$('body').append(scriptsTags[i]);
resolve();
}})
);
}}
JetEngine.addedScripts.push(handle);
},
enqueueStyle: function(handle, styleHtml){
if(-1!==handle.indexOf('google-fonts')){
JetEngine.enqueueGoogleFonts(handle, styleHtml);
return;
}
if(-1!==JetEngine.addedStyles.indexOf(handle)){
return;
}
var selector='link[id="' + handle + '-css"],style[id="' + handle + '"]';
if($(selector).length){
return;
}
$('head').append(styleHtml);
JetEngine.addedStyles.push(handle);
if(-1!==handle.indexOf('elementor-post')){
var postID=handle.replace('elementor-post-', '');
JetEngine.addedPostCSS.push(postID);
}},
enqueueGoogleFonts: function(handle, styleHtml){
var selector='link[id="' + handle + '-css"]';
if($(selector).length){}
$('head').append(styleHtml);
},
filters:(function(){
var callbacks={};
return {
addFilter: function(name, callback){
if(! callbacks.hasOwnProperty(name)){
callbacks[name]=[];
}
callbacks[name].push(callback);
},
applyFilters: function(name, value, args){
if(! callbacks.hasOwnProperty(name)){
return value;
}
if(args===undefined){
args=[];
}
var container=callbacks[ name ];
var cbLen=container.length;
for (var i=0; i < cbLen; i++){
if(typeof container[i]==='function'){
value=container[i](value, args);
}}
return value;
}};})()
};
$(window).on('elementor/frontend/init', JetEngine.init);
window.JetEngine=JetEngine;
JetEngine.commonInit();
window.addEventListener('DOMContentLoaded', function(){
JetEngine.initBlocks();
JetEngine.initDone=true;
});
window.jetEngineBricks=function(){
JetEngine.initBricks();
}
$(window).trigger('jet-engine/frontend/loaded');
}(jQuery));