(function (){
function el(tag, attrs, children){
var node=document.createElement(tag);
if(attrs){
Object.keys(attrs).forEach(function (k){
if(k==="class") node.className=attrs[k];
else if(k==="text") node.textContent=attrs[k];
else node.setAttribute(k, attrs[k]);
});
}
(children||[]).forEach(function (c){
if(typeof c==="string") node.appendChild(document.createTextNode(c));
else if(c) node.appendChild(c);
});
return node;
}
function safeText(v){
return String(v==null ? "":v);
}
function cleanPhone(v){
return safeText(v).replace(/[^\d]/g, "");
}
function deepGet(obj, path){
var cur=obj;
var parts=String(path||"").split(".");
for (var i=0; i < parts.length; i++){
if(!cur||typeof cur!=="object") return "";
cur=cur[parts[i]];
}
return cur==null ? "":cur;
}
function htmlToNode(html){
var t=document.createElement("template");
t.innerHTML=String(html||"").trim();
return t.content.firstElementChild||document.createElement("div");
}
function htmlToText(html){
if(html==null) return "";
var t=document.createElement("template");
t.innerHTML=String(html);
var lis=t.content ? t.content.querySelectorAll("li"):[];
if(lis&&lis.length){
var items=[];
for (var i=0; i < lis.length; i++){
var v=safeText(lis[i].textContent||"").replace(/\s+/g, " ").trim();
if(v) items.push(v);
}
return items.join(", ");
}
var out=(t.content&&t.content.textContent) ? t.content.textContent:"";
return safeText(out).replace(/\s+/g, " ").trim();
}
function applyBinds(rootNode, data){
var nodes=rootNode.querySelectorAll("[data-bind],[data-bind-text],[data-bind-href],[data-bind-href-wa],[data-bind-href-tel],[data-show-if]");
for (var i=0; i < nodes.length; i++){
var n=nodes[i];
var showIf=n.getAttribute("data-show-if");
if(showIf){
var vShow=deepGet(data, showIf);
if(!vShow) n.style.display="none";
}
var bindText=n.getAttribute("data-bind-text");
if(bindText) n.textContent=safeText(deepGet(data, bindText));
var bind=n.getAttribute("data-bind");
if(bind&&n.tagName==="IMG"){
var src=safeText(deepGet(data, bind));
if(src) n.setAttribute("src", src);
}else if(bind){
var bg=safeText(deepGet(data, bind));
if(bg) n.style.backgroundImage='url("' + bg.replace(/"/g, '\\"') + '")';
}
var bindHref=n.getAttribute("data-bind-href");
if(bindHref&&n.tagName==="A"){
var href=safeText(deepGet(data, bindHref));
if(href) n.setAttribute("href", href);
}
var bindWa=n.getAttribute("data-bind-href-wa");
if(bindWa){
var zap=safeText(deepGet(data, bindWa));
if(zap) n.setAttribute("href", formatWhatsUrl(zap));
}
var bindTel=n.getAttribute("data-bind-href-tel");
if(bindTel){
var tel=safeText(deepGet(data, bindTel));
if(tel) n.setAttribute("href", "tel:" + cleanPhone(tel));
}}
}
function firstImageFromSuite(s){
if(!s||typeof s!=="object") return "";
if(s.imagem) return safeText(s.imagem);
if(typeof s.imagens==="string") return safeText(s.imagens);
if(Array.isArray(s.imagens)&&s.imagens.length&&s.imagens[0]){
var i0=s.imagens[0];
if(typeof i0==="string") return safeText(i0);
if(i0&&typeof i0==="object"){
if(i0.image) return safeText(i0.image);
if(i0.imagem) return safeText(i0.imagem);
if(i0.url) return safeText(i0.url);
}}
return "";
}
function formatWhatsUrl(zap){
var n=cleanPhone(zap);
if(!n) return "";
if(n.indexOf("55")!==0) n="55" + n;
return "https://wa.me/" + n;
}
function faClass(kind){
if(kind==="pin") return "fa-thin fa-location-dot";
if(kind==="mail") return "fa-thin fa-envelope";
if(kind==="phone") return "fa-thin fa-phone";
if(kind==="whats") return "fa-thin fa-comment-dots";
if(kind==="chat") return "fa-thin fa-comments";
if(kind==="back") return "fa-thin fa-arrow-left";
return "fa-thin fa-circle";
}
function iconMarkup(kind){
return '<i class="bdm-fa ' + faClass(kind) + '" aria-hidden="true"></i>';
}
function findFirstQuestion(items){
for (var i=0; i < items.length; i++){
if(String(items[i].primeira||"").toUpperCase()==="S"&&items[i].tipo==="questao") return items[i];
}
for (var j=0; j < items.length; j++){
if(items[j].tipo==="questao") return items[j];
}
return null;
}
function findOptions(items, questionId){
var out=[];
for (var i=0; i < items.length; i++){
if(items[i].tipo==="opcao"&&String(items[i].parent)===String(questionId)) out.push(items[i]);
}
return out;
}
function findNextQuestion(items, optionId){
for (var i=0; i < items.length; i++){
if(items[i].tipo==="questao"&&String(items[i].parent)===String(optionId)) return items[i];
}
return null;
}
function boot(root){
if(!window.BDMChatPages) window.BDMChatPages={};
var container=document.getElementById("bdm-chat-container");
if(!container){
container=el("div", { id: "bdm-chat-container" });
document.body.appendChild(container);
}
var toggle=el("button", { class: "bdm-chat-toggle", type: "button", "aria-expanded": "false" }, ["Chat"]);
var panel=el("div", { class: "bdm-chat-panel", role: "dialog", "aria-label": "Motel Swing Chat" });
var header=el("div", { class: "bdm-chat-header" });
var headerEnd=el("div", { class: "bdm-chat-header-end" });
var titleWrap=el("div", { class: "bdm-chat-nav" });
var navHome=el("button", { class: "bdm-chat-navitem -icon", type: "button", "aria-label": "Home", title: "Home", "data-action": "openHome" });
navHome.innerHTML='<i class="bdm-fa fa-thin fa-house" aria-hidden="true"></i>';
var navRes=el("button", { class: "bdm-chat-navitem -icon", type: "button", "aria-label": "Minhas Reservas", title: "Minhas Reservas", "data-action": "openReservations" });
navRes.innerHTML='<i class="bdm-fa fa-thin fa-calendar-check" aria-hidden="true"></i>';
var navPontos=el("button", { class: "bdm-chat-navitem -icon", type: "button", "aria-label": "Meus Pontos de Fidelidade", title: "Meus Pontos de Fidelidade", "data-action": "openPontosFidelidade" });
navPontos.innerHTML='<i class="bdm-fa fa-thin fa-star" aria-hidden="true"></i>';
var navAcc=el("button", { class: "bdm-chat-navitem -icon", type: "button", "aria-label": "Minha Conta", title: "Minha Conta", "data-action": "openAccount" });
navAcc.innerHTML='<i class="bdm-fa fa-thin fa-user" aria-hidden="true"></i>';
var close=el("button", { class: "bdm-chat-close", type: "button", "aria-label": "Sair", title: "Sair" });
close.innerHTML='<i class="bdm-fa fa-thin fa-arrow-right-from-bracket" aria-hidden="true"></i>';
var closeMobile=el("button", {
class: "bdm-chat-close-mobile",
type: "button",
"aria-label": "Fechar",
title: "Fechar",
});
closeMobile.innerHTML='<i class="bdm-fa fa-thin fa-xmark" aria-hidden="true"></i>';
var body=el("div", { class: "bdm-chat-body" });
var state={ currentView: "home" };
var lastForm=null;
titleWrap.appendChild(navHome);
titleWrap.appendChild(navRes);
titleWrap.appendChild(navPontos);
titleWrap.appendChild(navAcc);
headerEnd.appendChild(close);
headerEnd.appendChild(closeMobile);
header.appendChild(titleWrap);
header.appendChild(headerEnd);
panel.appendChild(header);
panel.appendChild(body);
var noHeaderExit=el("button", {
class: "bdm-chat-noheader-exit",
type: "button",
"aria-label": "Fechar",
title: "Fechar",
});
noHeaderExit.innerHTML='<i class="bdm-fa fa-thin fa-xmark" aria-hidden="true"></i>';
panel.insertBefore(noHeaderExit, header);
noHeaderExit.addEventListener("click", function (){
setOpen(false);
});
function updateNoHeaderExit(){
var v=state.currentView;
var show =
container.classList.contains("bdm-no-header") &&
(v==="authLanding" ||
v==="authLogin" ||
v==="authRegister" ||
v==="authSubmitLogin" ||
v==="authSubmitRegister");
if(show) noHeaderExit.classList.add("bdm-chat-noheader-exit--on");
else noHeaderExit.classList.remove("bdm-chat-noheader-exit--on");
}
function renderBodyLoading(){
body.innerHTML="";
var wrap=el("div", {
class: "bdm-page-loading",
role: "status",
"aria-live": "polite",
"aria-busy": "true",
"aria-label": "Carregando conteúdo"
});
wrap.appendChild(el("i", { class: "bdm-fa fa-solid fa-circle-notch fa-spin", "aria-hidden": "true" }));
body.appendChild(wrap);
}
container.appendChild(toggle);
container.appendChild(panel);
function isMobilePanel(){
return window.matchMedia&&window.matchMedia("(max-width: 768px)").matches;
}
function setOpen(open){
if(open) panel.classList.add("is-open");
else panel.classList.remove("is-open");
toggle.setAttribute("aria-expanded", open ? "true":"false");
if(open){
document.documentElement.classList.add("bdm-chat-noscroll");
}else{
document.documentElement.classList.remove("bdm-chat-noscroll");
}}
function handleCloseClick(){
var pages=window.BDMChatPages||{};
if(state.currentView!=="home"){
navigate("home");
return;
}
if(pages.isLogged&&pages.isLogged()){
if(pages.logout) pages.logout();
navigate("authLanding");
}
setOpen(false);
}
toggle.addEventListener("click", function (){
setOpen(!panel.classList.contains("is-open"));
});
close.addEventListener("click", handleCloseClick);
closeMobile.addEventListener("click", function (){
setOpen(false);
});
window.addEventListener("resize", function (){
if(panel.classList.contains("is-open")){
document.documentElement.classList.add("bdm-chat-noscroll");
}else{
document.documentElement.classList.remove("bdm-chat-noscroll");
}});
navHome.addEventListener("click", function (ev){
ev.preventDefault();
navigate("home");
});
navRes.addEventListener("click", function (ev){
ev.preventDefault();
navigate("reservas");
});
navPontos.addEventListener("click", function (ev){
ev.preventDefault();
navigate("pontosFidelidade");
});
navAcc.addEventListener("click", function (ev){
ev.preventDefault();
navigate("conta");
});
renderBodyLoading();
var bootstrapUrl=(window.motelswingChat&&window.motelswingChat.restBootstrap)||"";
var motelUrl=(window.motelswingChat&&window.motelswingChat.restMotel)||"";
var suitesUrl=(window.motelswingChat&&window.motelswingChat.restSuites)||"";
var templateUrl=(window.motelswingChat&&window.motelswingChat.restTemplate)||"";
var loginUrl=(window.motelswingChat&&window.motelswingChat.restLogin)||"";
var cadastroUrl=(window.motelswingChat&&window.motelswingChat.restCadastro)||"";
var reservasUrl=(window.motelswingChat&&window.motelswingChat.restReservas)||"";
var pontosFidelidadeUrl=(window.motelswingChat&&window.motelswingChat.restPontosFidelidade)||"";
var pontosExtratoUrl=(window.motelswingChat&&window.motelswingChat.restPontosExtrato)||"";
var cupomAplicarUrl=(window.motelswingChat&&window.motelswingChat.restCupomAplicar)||"";
var userUpdateUrl=(window.motelswingChat&&window.motelswingChat.restUserUpdate)||"";
var suiteDetalhesUrl=(window.motelswingChat&&window.motelswingChat.restSuiteDetalhes)||"";
var suitePrecosUrl=(window.motelswingChat&&window.motelswingChat.restSuitePrecos)||"";
var intervalosFechamentoUrl=(window.motelswingChat&&window.motelswingChat.restIntervalosFechamento)||"";
var suiteTermosUrl=(window.motelswingChat&&window.motelswingChat.restSuiteTermos)||"";
var suiteTermosInterativaUrl=(window.motelswingChat&&window.motelswingChat.restSuiteTermosInterativa)||"";
var reservaSaveUrl=(window.motelswingChat&&window.motelswingChat.restReservaSave)||"";
var reservaCheckUrl=(window.motelswingChat&&window.motelswingChat.restReservaCheck)||"";
var reservaDetalheUrl=(window.motelswingChat&&window.motelswingChat.restReservaDetalhe)||"";
var pagamentoPreferenceUrl=(window.motelswingChat&&window.motelswingChat.restPagamentoPreference)||"";
var pagamentoSubmitUrl=(window.motelswingChat&&window.motelswingChat.restPagamentoSubmit)||"";
var pagamentoCheckUrl=(window.motelswingChat&&window.motelswingChat.restPagamentoCheck)||"";
if(!bootstrapUrl||!motelUrl||!suitesUrl||!templateUrl||!loginUrl||!cadastroUrl){
body.textContent="Configuração inválida do plugin.";
return;
}
var cachedMotelData=null;
var templateCache={};
var cache={ chatData: null };
function loadTemplate(name){
if(templateCache[name]) return Promise.resolve(templateCache[name]);
var url=templateUrl + "?name=" + encodeURIComponent(name);
return fetch(url, { credentials: "same-origin" })
.then(function (r){ return r.json(); })
.then(function (j){
templateCache[name]=(j&&j.html) ? j.html:"";
return templateCache[name];
});
}
function wireActions(scope){
var acts=scope.querySelectorAll("[data-action]");
for (var i=0; i < acts.length; i++){
(function (){
var elAct=acts[i];
var act=elAct.getAttribute("data-action");
if(!act) return;
if(elAct.tagName==="FORM"){
elAct.addEventListener("submit", function (ev){
ev.preventDefault();
lastForm=elAct;
if(act==="authSubmitLogin") navigate("authSubmitLogin");
if(act==="authSubmitRegister") navigate("authSubmitRegister");
});
}else{
elAct.addEventListener("click", function (){
if(act==="openChat") navigate("chat");
if(act==="openHome") navigate("home");
if(act==="openSuites") navigate("suites");
if(act==="openReservations") navigate("reservas");
if(act==="openPontosFidelidade") navigate("pontosFidelidade");
if(act==="openAccount") navigate("conta");
if(act==="authLogin") navigate("authLogin");
if(act==="authRegister") navigate("authRegister");
if(act==="reservarSuite"){
var pages=window.BDMChatPages||{};
var ctx=buildCtx();
if(pages.reservarSuite) pages.reservarSuite(ctx);
}
if(act==="togglePassword"){
var form=elAct.closest("form");
if(!form) return;
var input=form.querySelector('input[name="senha"]');
if(!input) return;
input.type=input.type==="password" ? "text":"password";
}});
}})();
}}
function buildCtx(){
return {
el: el,
safeText: safeText,
cleanPhone: cleanPhone,
deepGet: deepGet,
htmlToNode: htmlToNode,
htmlToText: htmlToText,
applyBinds: applyBinds,
firstImageFromSuite: firstImageFromSuite,
formatWhatsUrl: formatWhatsUrl,
iconMarkup: iconMarkup,
findFirstQuestion: findFirstQuestion,
findOptions: findOptions,
findNextQuestion: findNextQuestion,
loadTemplate: loadTemplate,
wireActions: wireActions,
body: body,
header: header,
state: state,
cache: cache,
urls: {
bootstrap: bootstrapUrl,
motel: motelUrl,
suites: suitesUrl,
suiteDetalhes: suiteDetalhesUrl,
suitePrecos: suitePrecosUrl,
intervalosFechamento: intervalosFechamentoUrl,
suiteTermos: suiteTermosUrl,
suiteTermosInterativa: suiteTermosInterativaUrl,
reservaSave: reservaSaveUrl,
reservaCheck: reservaCheckUrl,
reservaDetalhe: reservaDetalheUrl,
pagamentoPreference: pagamentoPreferenceUrl,
pagamentoSubmit: pagamentoSubmitUrl,
pagamentoCheck: pagamentoCheckUrl,
login: loginUrl,
cadastro: cadastroUrl,
reservas: reservasUrl,
pontosFidelidade: pontosFidelidadeUrl,
pontosExtrato: pontosExtratoUrl,
cupomAplicar: cupomAplicarUrl,
userUpdate: userUpdateUrl,
},
navigate: navigate,
setHeaderVisible: function (visible){
if(visible) container.classList.remove("bdm-no-header");
else container.classList.add("bdm-no-header");
updateNoHeaderExit();
},
showPageLoading: renderBodyLoading,
};}
function navigate(view){
state.currentView=view;
container.setAttribute("data-bdm-view", String(view||""));
var pages=window.BDMChatPages||{};
var ctx=buildCtx();
if(view!=="authSubmitLogin"&&view!=="authSubmitRegister"){
ctx.showPageLoading();
}
if(view==="authLanding"){
ctx.setHeaderVisible(false);
if(pages.authLanding) return pages.authLanding(ctx, cachedMotelData);
return;
}
if(view==="authLogin"){
ctx.setHeaderVisible(false);
if(pages.authLogin) return pages.authLogin(ctx, cachedMotelData);
return;
}
if(view==="authRegister"){
ctx.setHeaderVisible(false);
if(pages.authRegister) return pages.authRegister(ctx, cachedMotelData);
return;
}
if(view==="authSubmitLogin"){
ctx.setHeaderVisible(false);
if(pages.authSubmitLogin) return pages.authSubmitLogin(ctx, lastForm);
return;
}
if(view==="authSubmitRegister"){
ctx.setHeaderVisible(false);
if(pages.authSubmitRegister) return pages.authSubmitRegister(ctx, lastForm);
return;
}
if(view==="home"){
ctx.setHeaderVisible(true);
if(pages.home) return pages.home(ctx, cachedMotelData);
return;
}
if(view==="chat"){
ctx.setHeaderVisible(true);
if(pages.chat) return pages.chat(ctx);
return;
}
if(view==="suites"){
ctx.setHeaderVisible(true);
if(pages.suites) return pages.suites(ctx);
return;
}
if(view==="reservas"){
ctx.setHeaderVisible(true);
if(pages.reservas) return pages.reservas(ctx);
return;
}
if(view==="pontosFidelidade"){
ctx.setHeaderVisible(true);
if(pages.pontosFidelidade) return pages.pontosFidelidade(ctx);
return;
}
if(view==="conta"){
ctx.setHeaderVisible(true);
if(pages.conta) return pages.conta(ctx, cachedMotelData);
return;
}
if(view==="suiteDetalhes"){
ctx.setHeaderVisible(true);
if(pages.suiteDetalhes) return pages.suiteDetalhes(ctx);
return;
}
if(view==="reservaAguarde"){
ctx.setHeaderVisible(false);
if(pages.reservaAguarde) return pages.reservaAguarde(ctx);
return;
}
if(view==="reservaRecusada"){
ctx.setHeaderVisible(false);
if(pages.reservaRecusada) return pages.reservaRecusada(ctx);
return;
}
if(view==="reservaPagamento"){
ctx.setHeaderVisible(true);
if(pages.reservaPagamento) return pages.reservaPagamento(ctx);
return;
}
if(view==="reservaDetalhe"){
ctx.setHeaderVisible(true);
if(pages.reservaDetalhe) return pages.reservaDetalhe(ctx);
return;
}
updateNoHeaderExit();
}
fetch(motelUrl, { credentials: "same-origin" })
.then(function (r){ return r.json(); })
.then(function (motel){
if(motel&&motel.erro){
motel=applyPluginLogo({});
}else{
motel=applyPluginLogo(motel);
}
cachedMotelData=motel;
window.BDMChatMotelModel=motel;
window.BDMChatMotelIntegracao=readModelIntegracao(motel)||readFallbackIntegracao();
var pages=window.BDMChatPages||{};
if(pages.isLogged&&pages.isLogged()) navigate("home");
else navigate("authLanding");
})
.catch(function (){
window.BDMChatMotelIntegracao=readFallbackIntegracao();
navigate("authLanding");
});
}
function normalizeIntegracaoValue(value){
if(value==null) return "";
return String(value).trim().toUpperCase();
}
function readIntegracaoFromNode(node, depth){
if(!node||typeof node!=="object"||depth > 3) return "";
if(Array.isArray(node)){
for (var i=0; i < node.length; i++){
var arrValue=readIntegracaoFromNode(node[i], depth + 1);
if(arrValue) return arrValue;
}
return "";
}
var keys=Object.keys(node);
for (var k=0; k < keys.length; k++){
var key=keys[k];
if(!Object.prototype.hasOwnProperty.call(node, key)) continue;
var normalizedKey=String(key).trim().toLowerCase();
if(normalizedKey==="integracao" ||
normalizedKey==="integração" ||
normalizedKey==="integracao_api" ||
normalizedKey==="integracaopms"
){
return normalizeIntegracaoValue(node[key]);
}}
for (var j=0; j < keys.length; j++){
var child=node[keys[j]];
if(child&&typeof child==="object"){
var nestedValue=readIntegracaoFromNode(child, depth + 1);
if(nestedValue) return nestedValue;
}}
return "";
}
function readModelIntegracao(rawModel){
return readIntegracaoFromNode(rawModel, 0);
}
function readFallbackIntegracao(){
var localized =
window.motelswingChat&&typeof window.motelswingChat==="object"
? normalizeIntegracaoValue(window.motelswingChat.motelIntegracao)
: "";
if(localized) return localized;
return normalizeIntegracaoValue(window.BDMChatMotelIntegracao);
}
function applyPluginLogo(motel){
var chat=window.motelswingChat&&typeof window.motelswingChat==="object"
? window.motelswingChat
: {};
var logo=chat.pluginLogo ? String(chat.pluginLogo):"";
var google=chat.googleMapsUrl ? String(chat.googleMapsUrl):"";
var waze=chat.wazeUrl ? String(chat.wazeUrl):"";
var data=motel&&typeof motel==="object" ? motel:{};
if(logo&&!data.logo) data.logo=logo;
if(google&&!data.google) data.google=google;
if(waze&&!data.waze) data.waze=waze;
if(data.motel&&typeof data.motel==="object"){
if(logo&&!data.motel.logo) data.motel.logo=logo;
if(google&&!data.motel.google) data.motel.google=google;
if(waze&&!data.motel.waze) data.motel.waze=waze;
}
return data;
}
function suiteIsUnavailableToday(suite){
if(!suite||typeof suite!=="object") return false;
var modelIntegracao=readModelIntegracao(window.BDMChatMotelModel)||readFallbackIntegracao();
if(modelIntegracao==="N") return false;
if(readModelIntegracao(suite)==="N") return false;
function valueMeansUnavailable(v){
if(v===false) return true;
if(v===true) return false;
if(v===0||v==="0") return true;
if(typeof v==="string"){
var t=v.trim().toLowerCase();
if(t==="0"||t==="false"||t==="no"||t==="n"||t==="nao"||t==="não") return true;
if(t==="indisponivel"||t==="indisponível") return true;
}
if(typeof v==="number") return v===0;
var n=parseInt(v, 10);
return v!=null&&v!==""&&!isNaN(n)&&n===0;
}
if(Object.prototype.hasOwnProperty.call(suite, "disponibilidade")){
return valueMeansUnavailable(suite.disponibilidade);
}
if(Object.prototype.hasOwnProperty.call(suite, "disponivel")){
var d=suite.disponivel;
if(d===false||d===0||d==="0"||d==="N"||d==="n") return true;
if(d===true||d===1||d==="S"||d==="s"||d==="1") return false;
return valueMeansUnavailable(d);
}
if(Object.prototype.hasOwnProperty.call(suite, "disponível")){
return valueMeansUnavailable(suite["disponível"]);
}
if(Object.prototype.hasOwnProperty.call(suite, "indisponivel")||Object.prototype.hasOwnProperty.call(suite, "indisponível")){
var ind=suite.indisponivel!==undefined ? suite.indisponivel:suite["indisponível"];
return ind===true||ind===1||ind==="1"||String(ind).toLowerCase()==="true";
}
return false;
}
window.BDMChatReadIntegracaoFlag=readModelIntegracao;
window.BDMChatSuiteUnavailableToday=suiteIsUnavailableToday;
document.addEventListener("DOMContentLoaded", function (){
var root=document.getElementById("motelswing_reservas_root");
if(!root) return;
boot(root);
});
})();
(function (){
if(!window.BDMChatPages) window.BDMChatPages={};
var LS_CACHE_PREFIX="motelswing_panel_cache_";
function cfg(){
return window.motelswingChat||{};}
function panelBase(){
var b=cfg();
var base=String(b.panelBaseUrl||"").trim();
if(!base){
var sample=String(b.panelTermosAbsUrl||"").trim();
if(sample){
base=sample.replace(/\/[^/]*$/, "");
}}
return base.replace(/\/$/, "");
}
function authToken(){
var b=cfg();
return String(b.panelAuthToken||b.panelTermosAuthToken||"").trim();
}
function scriptPath(kind){
var scripts=cfg().panelScripts;
if(!scripts||typeof scripts!=="object") return "";
var p=String(scripts[kind]||"").trim();
if(p&&p.charAt(0)!=="/") p="/" + p;
return p;
}
function directEnabled(){
var b=cfg();
if(b.panelDirectEnabled===false) return false;
return !!panelBase()&&!!authToken()&&!!scriptPath("suites");
}
function timeoutMs(){
var n=parseInt(String(cfg().panelDirectTimeoutMs||"25000"), 10);
return isFinite(n)&&n >=5000 ? n:25000;
}
function cacheTtlMs(kind){
var map=cfg().panelDirectCacheTtlMs;
if(map&&typeof map==="object"&&map[kind]!=null){
var custom=parseInt(String(map[kind]), 10);
if(isFinite(custom)&&custom >=0) return custom;
}
if(kind==="suites") return 5 * 60 * 1000;
if(kind==="pontosSaldo") return 2 * 60 * 1000;
return 0;
}
function cacheKey(kind, fields){
try {
return LS_CACHE_PREFIX + kind + "_" + JSON.stringify(fields||{});
} catch (e){
return LS_CACHE_PREFIX + kind;
}}
function readCache(kind, fields){
var ttl=cacheTtlMs(kind);
if(ttl <=0) return null;
try {
var raw=sessionStorage.getItem(cacheKey(kind, fields));
if(!raw) return null;
var pack=JSON.parse(raw);
if(!pack||!pack.t||!pack.data) return null;
if(Date.now() - pack.t > ttl){
sessionStorage.removeItem(cacheKey(kind, fields));
return null;
}
return pack.data;
} catch (e){
return null;
}}
function writeCache(kind, fields, data){
var ttl=cacheTtlMs(kind);
if(ttl <=0||data==null) return;
try {
sessionStorage.setItem(cacheKey(kind, fields),
JSON.stringify({ t: Date.now(), data: data })
);
} catch (e){  }}
function encodeForm(fields){
var p=new URLSearchParams();
Object.keys(fields||{}).forEach(function (k){
var v=fields[k];
if(v===null||v===undefined) return;
p.append(k, String(v));
});
return p.toString();
}
function buildPanelFields(extra){
var out={ token: authToken() };
Object.keys(extra||{}).forEach(function (k){
var v=extra[k];
if(v===null||v===undefined) return;
out[k]=v;
});
return out;
}
function shouldForceAvailability(){
var b=cfg();
var flag=String(b.motelIntegracao||window.BDMChatMotelIntegracao||"").trim().toUpperCase();
return flag==="N";
}
function forceSuiteAvailability(suite){
if(!suite||typeof suite!=="object") return;
suite.disponibilidade=1;
suite.disponivel=1;
suite["disponível"]=1;
suite.indisponivel=0;
suite["indisponível"]=0;
}
function applyIntegracaoOverrides(data){
if(!shouldForceAvailability()||!data) return data;
if(Array.isArray(data)){
data.forEach(function (item){
if(item&&typeof item==="object") forceSuiteAvailability(item);
});
return data;
}
if(typeof data!=="object") return data;
if(Array.isArray(data.suites)){
data.suites.forEach(forceSuiteAvailability);
}
if(data.suite&&typeof data.suite==="object") forceSuiteAvailability(data.suite);
if(data.detalhes&&typeof data.detalhes==="object") forceSuiteAvailability(data.detalhes);
if(data.data&&typeof data.data==="object") applyIntegracaoOverrides(data.data);
forceSuiteAvailability(data);
return data;
}
function parseJsonText(text){
var s=String(text==null ? "":text).trim();
if(!s) return null;
try {
return JSON.parse(s);
} catch (e){
return null;
}}
function panelRequest(path, fields, mode){
var url=panelBase() + (path.charAt(0)==="/" ? path:"/" + path);
var controller=typeof AbortController!=="undefined" ? new AbortController():null;
var timer=controller
? setTimeout(function (){
try {
controller.abort();
} catch (e){  }}, timeoutMs())
: null;
var headers={ Accept: "application/json" };
var body;
if(mode==="form"){
headers["Content-Type"]="application/x-www-form-urlencoded;charset=UTF-8";
body=encodeForm(fields);
}else{
headers["Content-Type"]="application/json";
body=JSON.stringify(fields);
}
return fetch(url, {
method: "POST",
mode: "cors",
credentials: "omit",
headers: headers,
body: body,
signal: controller ? controller.signal:undefined
})
.then(function (r){
return r.text().then(function (t){
return { ok: r.ok, status: r.status, text: t, json: parseJsonText(t) };});
})
.finally(function (){
if(timer) clearTimeout(timer);
});
}
function panelPostScript(path, fields){
return panelRequest(path, fields, "json").then(function (res){
if(res.json&&typeof res.json==="object"){
return res.json;
}
return panelRequest(path, fields, "form").then(function (res2){
if(res2.json&&typeof res2.json==="object"){
return res2.json;
}
var err=(res2.json&&res2.json.erro) ? String(res2.json.erro):"Resposta inválida do painel.";
return { erro: err, _status: res2.status||502 };});
});
}
function fetchRestJson(restUrl, fields, useGet){
var url=String(restUrl||"").trim();
if(!url) return Promise.reject(new Error("REST não configurado."));
var pages=window.BDMChatPages||{};
if(useGet){
return fetch(url, { credentials: "same-origin" }).then(function (r){
return r.json();
});
}
return fetch(url, {
method: "POST",
credentials: "same-origin",
headers: pages.mergeWidgetAuthHeaders
? pages.mergeWidgetAuthHeaders({ "Content-Type": "application/json" })
: { "Content-Type": "application/json" },
body: JSON.stringify(fields||{})
}).then(function (r){
return r.json();
});
}
function fetchRestWithStatus(restUrl, fields){
var url=String(restUrl||"").trim();
if(!url) return Promise.reject(new Error("REST não configurado."));
var pages=window.BDMChatPages||{};
return fetch(url, {
method: "POST",
credentials: "same-origin",
headers: pages.mergeWidgetAuthHeaders
? pages.mergeWidgetAuthHeaders({ "Content-Type": "application/json" })
: { "Content-Type": "application/json" },
body: JSON.stringify(fields||{})
}).then(function (r){
return r
.json()
.then(function (j){
return { status: r.status, json: j };})
.catch(function (){
return { status: r.status, json: { erro: "Resposta inválida do servidor." }};});
});
}
function postDirect(kind, fields){
var path=scriptPath(kind);
if(!path) return Promise.reject(new Error("Script do painel não configurado."));
var cached=readCache(kind, fields);
if(cached!=null){
return Promise.resolve(cached);
}
return panelPostScript(path, buildPanelFields(fields)).then(function (json){
applyIntegracaoOverrides(json);
writeCache(kind, fields, json);
return json;
});
}
window.BDMChatPages.fetchWidgetJson=function (ctx, kind, fields, restUrl, opts){
opts=opts||{};
fields=fields||{};
var useGet = !!opts.useGet;
if(directEnabled()){
return postDirect(kind, fields).catch(function (){
return fetchRestJson(restUrl, fields, useGet);
});
}
return fetchRestJson(restUrl, fields, useGet);
};
function postDirectNoCache(kind, fields){
var path=scriptPath(kind);
if(!path) return Promise.reject(new Error("Script do painel não configurado."));
return panelPostScript(path, buildPanelFields(fields));
}
function normalizeReservaSavePanelJson(json){
if(json==null||json===""){
return {
ok: false,
status: 403,
json: {
result: "error",
erro: "Token do painel recusado (resposta vazia).",
message: "Token do painel recusado (resposta vazia)."
}};}
if(typeof json==="string"){
var t=String(json).trim();
return {
ok: false,
status: 400,
json: { result: "error", erro: t||"Resposta inválida do painel.", message: t||"Resposta inválida do painel." }};}
if(Array.isArray(json)&&json.length){
return { ok: true, status: 200, json: json };}
if(json&&typeof json==="object"&&String(json.result||"").toLowerCase()==="error"){
var msg=String(json.message||json.erro||"Não foi possível concluir a reserva.").trim();
return { ok: false, status: 400, json: { result: "error", erro: msg, message: msg, reserva: json.reserva||null }};}
return {
ok: false,
status: 502,
json: { result: "error", erro: "Resposta inesperada ao salvar a reserva.", message: "Resposta inesperada ao salvar a reserva." }};}
window.BDMChatPages.saveReserva=function (ctx, payload, restUrl){
payload=payload&&typeof payload==="object" ? Object.assign({}, payload):{};
var fields=Object.assign({}, payload);
delete fields.session_token;
if(directEnabled()&&scriptPath("reservasSave")){
return postDirectNoCache("reservasSave", fields)
.then(function (json){
var parsed=normalizeReservaSavePanelJson(json);
return { status: parsed.status, json: parsed.json };})
.catch(function (){
return fetchRestWithStatus(restUrl, payload);
});
}
return fetchRestWithStatus(restUrl, payload);
};
window.BDMChatPages.fetchWidgetJsonWithStatus=function (ctx, kind, fields, restUrl){
fields=fields||{};
if(directEnabled()){
return postDirect(kind, fields)
.then(function (json){
var st=json&&json.erro ? 400:200;
return { status: st, json: json };})
.catch(function (){
return fetchRestWithStatus(restUrl, fields);
});
}
return fetchRestWithStatus(restUrl, fields);
};
window.BDMChatPages.panelDirectEnabled=function (){
return directEnabled();
};})();
!function(a,b,c,d){function e(b,c){this.settings=null,this.options=a.extend({},e.Defaults,c),this.$element=a(b),this._handlers={},this._plugins={},this._supress={},this._current=null,this._speed=null,this._coordinates=[],this._breakpoint=null,this._width=null,this._items=[],this._clones=[],this._mergers=[],this._widths=[],this._invalidated={},this._pipe=[],this._drag={time:null,target:null,pointer:null,stage:{start:null,current:null},direction:null},this._states={current:{},tags:{initializing:["busy"],animating:["busy"],dragging:["interacting"]}},a.each(["onResize","onThrottledResize"],a.proxy(function(b,c){this._handlers[c]=a.proxy(this[c],this)},this)),a.each(e.Plugins,a.proxy(function(a,b){this._plugins[a.charAt(0).toLowerCase()+a.slice(1)]=new b(this)},this)),a.each(e.Workers,a.proxy(function(b,c){this._pipe.push({filter:c.filter,run:a.proxy(c.run,this)})},this)),this.setup(),this.initialize()}e.Defaults={items:3,loop:!1,center:!1,rewind:!1,checkVisibility:!0,mouseDrag:!0,touchDrag:!0,pullDrag:!0,freeDrag:!1,margin:0,stagePadding:0,merge:!1,mergeFit:!0,autoWidth:!1,startPosition:0,rtl:!1,smartSpeed:250,fluidSpeed:!1,dragEndSpeed:!1,responsive:{},responsiveRefreshRate:200,responsiveBaseElement:b,fallbackEasing:"swing",slideTransition:"",info:!1,nestedItemSelector:!1,itemElement:"div",stageElement:"div",refreshClass:"owl-refresh",loadedClass:"owl-loaded",loadingClass:"owl-loading",rtlClass:"owl-rtl",responsiveClass:"owl-responsive",dragClass:"owl-drag",itemClass:"owl-item",stageClass:"owl-stage",stageOuterClass:"owl-stage-outer",grabClass:"owl-grab"},e.Width={Default:"default",Inner:"inner",Outer:"outer"},e.Type={Event:"event",State:"state"},e.Plugins={},e.Workers=[{filter:["width","settings"],run:function(){this._width=this.$element.width()}},{filter:["width","items","settings"],run:function(a){a.current=this._items&&this._items[this.relative(this._current)]}},{filter:["items","settings"],run:function(){this.$stage.children(".cloned").remove()}},{filter:["width","items","settings"],run:function(a){var b=this.settings.margin||"",c=!this.settings.autoWidth,d=this.settings.rtl,e={width:"auto","margin-left":d?b:"","margin-right":d?"":b};!c&&this.$stage.children().css(e),a.css=e}},{filter:["width","items","settings"],run:function(a){var b=(this.width()/this.settings.items).toFixed(3)-this.settings.margin,c=null,d=this._items.length,e=!this.settings.autoWidth,f=[];for(a.items={merge:!1,width:b};d--;)c=this._mergers[d],c=this.settings.mergeFit&&Math.min(c,this.settings.items)||c,a.items.merge=c>1||a.items.merge,f[d]=e?b*c:this._items[d].width();this._widths=f}},{filter:["items","settings"],run:function(){var b=[],c=this._items,d=this.settings,e=Math.max(2*d.items,4),f=2*Math.ceil(c.length/2),g=d.loop&&c.length?d.rewind?e:Math.max(e,f):0,h="",i="";for(g/=2;g>0;)b.push(this.normalize(b.length/2,!0)),h+=c[b[b.length-1]][0].outerHTML,b.push(this.normalize(c.length-1-(b.length-1)/2,!0)),i=c[b[b.length-1]][0].outerHTML+i,g-=1;this._clones=b,a(h).addClass("cloned").appendTo(this.$stage),a(i).addClass("cloned").prependTo(this.$stage)}},{filter:["width","items","settings"],run:function(){for(var a=this.settings.rtl?1:-1,b=this._clones.length+this._items.length,c=-1,d=0,e=0,f=[];++c<b;)d=f[c-1]||0,e=this._widths[this.relative(c)]+this.settings.margin,f.push(d+e*a);this._coordinates=f}},{filter:["width","items","settings"],run:function(){var a=this.settings.stagePadding,b=this._coordinates,c={width:Math.ceil(Math.abs(b[b.length-1]))+2*a,"padding-left":a||"","padding-right":a||""};this.$stage.css(c)}},{filter:["width","items","settings"],run:function(a){var b=this._coordinates.length,c=!this.settings.autoWidth,d=this.$stage.children();if(c&&a.items.merge)for(;b--;)a.css.width=this._widths[this.relative(b)],d.eq(b).css(a.css);else c&&(a.css.width=a.items.width,d.css(a.css))}},{filter:["items"],run:function(){this._coordinates.length<1&&this.$stage.removeAttr("style")}},{filter:["width","items","settings"],run:function(a){a.current=a.current?this.$stage.children().index(a.current):0,a.current=Math.max(this.minimum(),Math.min(this.maximum(),a.current)),this.reset(a.current)}},{filter:["position"],run:function(){this.animate(this.coordinates(this._current))}},{filter:["width","position","items","settings"],run:function(){var a,b,c,d,e=this.settings.rtl?1:-1,f=2*this.settings.stagePadding,g=this.coordinates(this.current())+f,h=g+this.width()*e,i=[];for(c=0,d=this._coordinates.length;c<d;c++)a=this._coordinates[c-1]||0,b=Math.abs(this._coordinates[c])+f*e,(this.op(a,"<=",g)&&this.op(a,">",h)||this.op(b,"<",g)&&this.op(b,">",h))&&i.push(c);this.$stage.children(".active").removeClass("active"),this.$stage.children(":eq("+i.join("), :eq(")+")").addClass("active"),this.$stage.children(".center").removeClass("center"),this.settings.center&&this.$stage.children().eq(this.current()).addClass("center")}}],e.prototype.initializeStage=function(){this.$stage=this.$element.find("."+this.settings.stageClass),this.$stage.length||(this.$element.addClass(this.options.loadingClass),this.$stage=a("<"+this.settings.stageElement+">",{class:this.settings.stageClass}).wrap(a("<div/>",{class:this.settings.stageOuterClass})),this.$element.append(this.$stage.parent()))},e.prototype.initializeItems=function(){var b=this.$element.find(".owl-item");if(b.length)return this._items=b.get().map(function(b){return a(b)}),this._mergers=this._items.map(function(){return 1}),void this.refresh();this.replace(this.$element.children().not(this.$stage.parent())),this.isVisible()?this.refresh():this.invalidate("width"),this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass)},e.prototype.initialize=function(){if(this.enter("initializing"),this.trigger("initialize"),this.$element.toggleClass(this.settings.rtlClass,this.settings.rtl),this.settings.autoWidth&&!this.is("pre-loading")){var a,b,c;a=this.$element.find("img"),b=this.settings.nestedItemSelector?"."+this.settings.nestedItemSelector:d,c=this.$element.children(b).width(),a.length&&c<=0&&this.preloadAutoWidthImages(a)}this.initializeStage(),this.initializeItems(),this.registerEventHandlers(),this.leave("initializing"),this.trigger("initialized")},e.prototype.isVisible=function(){return!this.settings.checkVisibility||this.$element.is(":visible")},e.prototype.setup=function(){var b=this.viewport(),c=this.options.responsive,d=-1,e=null;c?(a.each(c,function(a){a<=b&&a>d&&(d=Number(a))}),e=a.extend({},this.options,c[d]),"function"==typeof e.stagePadding&&(e.stagePadding=e.stagePadding()),delete e.responsive,e.responsiveClass&&this.$element.attr("class",this.$element.attr("class").replace(new RegExp("("+this.options.responsiveClass+"-)\\S+\\s","g"),"$1"+d))):e=a.extend({},this.options),this.trigger("change",{property:{name:"settings",value:e}}),this._breakpoint=d,this.settings=e,this.invalidate("settings"),this.trigger("changed",{property:{name:"settings",value:this.settings}})},e.prototype.optionsLogic=function(){this.settings.autoWidth&&(this.settings.stagePadding=!1,this.settings.merge=!1)},e.prototype.prepare=function(b){var c=this.trigger("prepare",{content:b});return c.data||(c.data=a("<"+this.settings.itemElement+"/>").addClass(this.options.itemClass).append(b)),this.trigger("prepared",{content:c.data}),c.data},e.prototype.update=function(){for(var b=0,c=this._pipe.length,d=a.proxy(function(a){return this[a]},this._invalidated),e={};b<c;)(this._invalidated.all||a.grep(this._pipe[b].filter,d).length>0)&&this._pipe[b].run(e),b++;this._invalidated={},!this.is("valid")&&this.enter("valid")},e.prototype.width=function(a){switch(a=a||e.Width.Default){case e.Width.Inner:case e.Width.Outer:return this._width;default:return this._width-2*this.settings.stagePadding+this.settings.margin}},e.prototype.refresh=function(){this.enter("refreshing"),this.trigger("refresh"),this.setup(),this.optionsLogic(),this.$element.addClass(this.options.refreshClass),this.update(),this.$element.removeClass(this.options.refreshClass),this.leave("refreshing"),this.trigger("refreshed")},e.prototype.onThrottledResize=function(){b.clearTimeout(this.resizeTimer),this.resizeTimer=b.setTimeout(this._handlers.onResize,this.settings.responsiveRefreshRate)},e.prototype.onResize=function(){return!!this._items.length&&(this._width!==this.$element.width()&&(!!this.isVisible()&&(this.enter("resizing"),this.trigger("resize").isDefaultPrevented()?(this.leave("resizing"),!1):(this.invalidate("width"),this.refresh(),this.leave("resizing"),void this.trigger("resized")))))},e.prototype.registerEventHandlers=function(){a.support.transition&&this.$stage.on(a.support.transition.end+".owl.core",a.proxy(this.onTransitionEnd,this)),!1!==this.settings.responsive&&this.on(b,"resize",this._handlers.onThrottledResize),this.settings.mouseDrag&&(this.$element.addClass(this.options.dragClass),this.$stage.on("mousedown.owl.core",a.proxy(this.onDragStart,this)),this.$stage.on("dragstart.owl.core selectstart.owl.core",function(){return!1})),this.settings.touchDrag&&(this.$stage.on("touchstart.owl.core",a.proxy(this.onDragStart,this)),this.$stage.on("touchcancel.owl.core",a.proxy(this.onDragEnd,this)))},e.prototype.onDragStart=function(b){var d=null;3!==b.which&&(a.support.transform?(d=this.$stage.css("transform").replace(/.*\(|\)| /g,"").split(","),d={x:d[16===d.length?12:4],y:d[16===d.length?13:5]}):(d=this.$stage.position(),d={x:this.settings.rtl?d.left+this.$stage.width()-this.width()+this.settings.margin:d.left,y:d.top}),this.is("animating")&&(a.support.transform?this.animate(d.x):this.$stage.stop(),this.invalidate("position")),this.$element.toggleClass(this.options.grabClass,"mousedown"===b.type),this.speed(0),this._drag.time=(new Date).getTime(),this._drag.target=a(b.target),this._drag.stage.start=d,this._drag.stage.current=d,this._drag.pointer=this.pointer(b),a(c).on("mouseup.owl.core touchend.owl.core",a.proxy(this.onDragEnd,this)),a(c).one("mousemove.owl.core touchmove.owl.core",a.proxy(function(b){var d=this.difference(this._drag.pointer,this.pointer(b));a(c).on("mousemove.owl.core touchmove.owl.core",a.proxy(this.onDragMove,this)),Math.abs(d.x)<Math.abs(d.y)&&this.is("valid")||(b.preventDefault(),this.enter("dragging"),this.trigger("drag"))},this)))},e.prototype.onDragMove=function(a){var b=null,c=null,d=null,e=this.difference(this._drag.pointer,this.pointer(a)),f=this.difference(this._drag.stage.start,e);this.is("dragging")&&(a.preventDefault(),this.settings.loop?(b=this.coordinates(this.minimum()),c=this.coordinates(this.maximum()+1)-b,f.x=((f.x-b)%c+c)%c+b):(b=this.settings.rtl?this.coordinates(this.maximum()):this.coordinates(this.minimum()),c=this.settings.rtl?this.coordinates(this.minimum()):this.coordinates(this.maximum()),d=this.settings.pullDrag?-1*e.x/5:0,f.x=Math.max(Math.min(f.x,b+d),c+d)),this._drag.stage.current=f,this.animate(f.x))},e.prototype.onDragEnd=function(b){var d=this.difference(this._drag.pointer,this.pointer(b)),e=this._drag.stage.current,f=d.x>0^this.settings.rtl?"left":"right";a(c).off(".owl.core"),this.$element.removeClass(this.options.grabClass),(0!==d.x&&this.is("dragging")||!this.is("valid"))&&(this.speed(this.settings.dragEndSpeed||this.settings.smartSpeed),this.current(this.closest(e.x,0!==d.x?f:this._drag.direction)),this.invalidate("position"),this.update(),this._drag.direction=f,(Math.abs(d.x)>3||(new Date).getTime()-this._drag.time>300)&&this._drag.target.one("click.owl.core",function(){return!1})),this.is("dragging")&&(this.leave("dragging"),this.trigger("dragged"))},e.prototype.closest=function(b,c){var e=-1,f=30,g=this.width(),h=this.coordinates();return this.settings.freeDrag||a.each(h,a.proxy(function(a,i){return"left"===c&&b>i-f&&b<i+f?e=a:"right"===c&&b>i-g-f&&b<i-g+f?e=a+1:this.op(b,"<",i)&&this.op(b,">",h[a+1]!==d?h[a+1]:i-g)&&(e="left"===c?a+1:a),-1===e},this)),this.settings.loop||(this.op(b,">",h[this.minimum()])?e=b=this.minimum():this.op(b,"<",h[this.maximum()])&&(e=b=this.maximum())),e},e.prototype.animate=function(b){var c=this.speed()>0;this.is("animating")&&this.onTransitionEnd(),c&&(this.enter("animating"),this.trigger("translate")),a.support.transform3d&&a.support.transition?this.$stage.css({transform:"translate3d("+b+"px,0px,0px)",transition:this.speed()/1e3+"s"+(this.settings.slideTransition?" "+this.settings.slideTransition:"")}):c?this.$stage.animate({left:b+"px"},this.speed(),this.settings.fallbackEasing,a.proxy(this.onTransitionEnd,this)):this.$stage.css({left:b+"px"})},e.prototype.is=function(a){return this._states.current[a]&&this._states.current[a]>0},e.prototype.current=function(a){if(a===d)return this._current;if(0===this._items.length)return d;if(a=this.normalize(a),this._current!==a){var b=this.trigger("change",{property:{name:"position",value:a}});b.data!==d&&(a=this.normalize(b.data)),this._current=a,this.invalidate("position"),this.trigger("changed",{property:{name:"position",value:this._current}})}return this._current},e.prototype.invalidate=function(b){return"string"===a.type(b)&&(this._invalidated[b]=!0,this.is("valid")&&this.leave("valid")),a.map(this._invalidated,function(a,b){return b})},e.prototype.reset=function(a){(a=this.normalize(a))!==d&&(this._speed=0,this._current=a,this.suppress(["translate","translated"]),this.animate(this.coordinates(a)),this.release(["translate","translated"]))},e.prototype.normalize=function(a,b){var c=this._items.length,e=b?0:this._clones.length;return!this.isNumeric(a)||c<1?a=d:(a<0||a>=c+e)&&(a=((a-e/2)%c+c)%c+e/2),a},e.prototype.relative=function(a){return a-=this._clones.length/2,this.normalize(a,!0)},e.prototype.maximum=function(a){var b,c,d,e=this.settings,f=this._coordinates.length;if(e.loop)f=this._clones.length/2+this._items.length-1;else if(e.autoWidth||e.merge){if(b=this._items.length)for(c=this._items[--b].width(),d=this.$element.width();b--&&!((c+=this._items[b].width()+this.settings.margin)>d););f=b+1}else f=e.center?this._items.length-1:this._items.length-e.items;return a&&(f-=this._clones.length/2),Math.max(f,0)},e.prototype.minimum=function(a){return a?0:this._clones.length/2},e.prototype.items=function(a){return a===d?this._items.slice():(a=this.normalize(a,!0),this._items[a])},e.prototype.mergers=function(a){return a===d?this._mergers.slice():(a=this.normalize(a,!0),this._mergers[a])},e.prototype.clones=function(b){var c=this._clones.length/2,e=c+this._items.length,f=function(a){return a%2==0?e+a/2:c-(a+1)/2};return b===d?a.map(this._clones,function(a,b){return f(b)}):a.map(this._clones,function(a,c){return a===b?f(c):null})},e.prototype.speed=function(a){return a!==d&&(this._speed=a),this._speed},e.prototype.coordinates=function(b){var c,e=1,f=b-1;return b===d?a.map(this._coordinates,a.proxy(function(a,b){return this.coordinates(b)},this)):(this.settings.center?(this.settings.rtl&&(e=-1,f=b+1),c=this._coordinates[b],c+=(this.width()-c+(this._coordinates[f]||0))/2*e):c=this._coordinates[f]||0,c=Math.ceil(c))},e.prototype.duration=function(a,b,c){return 0===c?0:Math.min(Math.max(Math.abs(b-a),1),6)*Math.abs(c||this.settings.smartSpeed)},e.prototype.to=function(a,b){var c=this.current(),d=null,e=a-this.relative(c),f=(e>0)-(e<0),g=this._items.length,h=this.minimum(),i=this.maximum();this.settings.loop?(!this.settings.rewind&&Math.abs(e)>g/2&&(e+=-1*f*g),a=c+e,(d=((a-h)%g+g)%g+h)!==a&&d-e<=i&&d-e>0&&(c=d-e,a=d,this.reset(c))):this.settings.rewind?(i+=1,a=(a%i+i)%i):a=Math.max(h,Math.min(i,a)),this.speed(this.duration(c,a,b)),this.current(a),this.isVisible()&&this.update()},e.prototype.next=function(a){a=a||!1,this.to(this.relative(this.current())+1,a)},e.prototype.prev=function(a){a=a||!1,this.to(this.relative(this.current())-1,a)},e.prototype.onTransitionEnd=function(a){if(a!==d&&(a.stopPropagation(),(a.target||a.srcElement||a.originalTarget)!==this.$stage.get(0)))return!1;this.leave("animating"),this.trigger("translated")},e.prototype.viewport=function(){var d;return this.options.responsiveBaseElement!==b?d=a(this.options.responsiveBaseElement).width():b.innerWidth?d=b.innerWidth:c.documentElement&&c.documentElement.clientWidth?d=c.documentElement.clientWidth:console.warn("Can not detect viewport width."),d},e.prototype.replace=function(b){this.$stage.empty(),this._items=[],b&&(b=b instanceof jQuery?b:a(b)),this.settings.nestedItemSelector&&(b=b.find("."+this.settings.nestedItemSelector)),b.filter(function(){return 1===this.nodeType}).each(a.proxy(function(a,b){b=this.prepare(b),this.$stage.append(b),this._items.push(b),this._mergers.push(1*b.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)},this)),this.reset(this.isNumeric(this.settings.startPosition)?this.settings.startPosition:0),this.invalidate("items")},e.prototype.add=function(b,c){var e=this.relative(this._current);c=c===d?this._items.length:this.normalize(c,!0),b=b instanceof jQuery?b:a(b),this.trigger("add",{content:b,position:c}),b=this.prepare(b),0===this._items.length||c===this._items.length?(0===this._items.length&&this.$stage.append(b),0!==this._items.length&&this._items[c-1].after(b),this._items.push(b),this._mergers.push(1*b.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)):(this._items[c].before(b),this._items.splice(c,0,b),this._mergers.splice(c,0,1*b.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)),this._items[e]&&this.reset(this._items[e].index()),this.invalidate("items"),this.trigger("added",{content:b,position:c})},e.prototype.remove=function(a){(a=this.normalize(a,!0))!==d&&(this.trigger("remove",{content:this._items[a],position:a}),this._items[a].remove(),this._items.splice(a,1),this._mergers.splice(a,1),this.invalidate("items"),this.trigger("removed",{content:null,position:a}))},e.prototype.preloadAutoWidthImages=function(b){b.each(a.proxy(function(b,c){this.enter("pre-loading"),c=a(c),a(new Image).one("load",a.proxy(function(a){c.attr("src",a.target.src),c.css("opacity",1),this.leave("pre-loading"),!this.is("pre-loading")&&!this.is("initializing")&&this.refresh()},this)).attr("src",c.attr("src")||c.attr("data-src")||c.attr("data-src-retina"))},this))},e.prototype.destroy=function(){this.$element.off(".owl.core"),this.$stage.off(".owl.core"),a(c).off(".owl.core"),!1!==this.settings.responsive&&(b.clearTimeout(this.resizeTimer),this.off(b,"resize",this._handlers.onThrottledResize));for(var d in this._plugins)this._plugins[d].destroy();this.$stage.children(".cloned").remove(),this.$stage.unwrap(),this.$stage.children().contents().unwrap(),this.$stage.children().unwrap(),this.$stage.remove(),this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class",this.$element.attr("class").replace(new RegExp(this.options.responsiveClass+"-\\S+\\s","g"),"")).removeData("owl.carousel")},e.prototype.op=function(a,b,c){var d=this.settings.rtl;switch(b){case"<":return d?a>c:a<c;case">":return d?a<c:a>c;case">=":return d?a<=c:a>=c;case"<=":return d?a>=c:a<=c}},e.prototype.on=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent("on"+b,c)},e.prototype.off=function(a,b,c,d){a.removeEventListener?a.removeEventListener(b,c,d):a.detachEvent&&a.detachEvent("on"+b,c)},e.prototype.trigger=function(b,c,d,f,g){var h={item:{count:this._items.length,index:this.current()}},i=a.camelCase(a.grep(["on",b,d],function(a){return a}).join("-").toLowerCase()),j=a.Event([b,"owl",d||"carousel"].join(".").toLowerCase(),a.extend({relatedTarget:this},h,c));return this._supress[b]||(a.each(this._plugins,function(a,b){b.onTrigger&&b.onTrigger(j)}),this.register({type:e.Type.Event,name:b}),this.$element.trigger(j),this.settings&&"function"==typeof this.settings[i]&&this.settings[i].call(this,j)),j},e.prototype.enter=function(b){a.each([b].concat(this._states.tags[b]||[]),a.proxy(function(a,b){this._states.current[b]===d&&(this._states.current[b]=0),this._states.current[b]++},this))},e.prototype.leave=function(b){a.each([b].concat(this._states.tags[b]||[]),a.proxy(function(a,b){this._states.current[b]--},this))},e.prototype.register=function(b){if(b.type===e.Type.Event){if(a.event.special[b.name]||(a.event.special[b.name]={}),!a.event.special[b.name].owl){var c=a.event.special[b.name]._default;a.event.special[b.name]._default=function(a){return!c||!c.apply||a.namespace&&-1!==a.namespace.indexOf("owl")?a.namespace&&a.namespace.indexOf("owl")>-1:c.apply(this,arguments)},a.event.special[b.name].owl=!0}}else b.type===e.Type.State&&(this._states.tags[b.name]?this._states.tags[b.name]=this._states.tags[b.name].concat(b.tags):this._states.tags[b.name]=b.tags,this._states.tags[b.name]=a.grep(this._states.tags[b.name],a.proxy(function(c,d){return a.inArray(c,this._states.tags[b.name])===d},this)))},e.prototype.suppress=function(b){a.each(b,a.proxy(function(a,b){this._supress[b]=!0},this))},e.prototype.release=function(b){a.each(b,a.proxy(function(a,b){delete this._supress[b]},this))},e.prototype.pointer=function(a){var c={x:null,y:null};return a=a.originalEvent||a||b.event,a=a.touches&&a.touches.length?a.touches[0]:a.changedTouches&&a.changedTouches.length?a.changedTouches[0]:a,a.pageX?(c.x=a.pageX,c.y=a.pageY):(c.x=a.clientX,c.y=a.clientY),c},e.prototype.isNumeric=function(a){return!isNaN(parseFloat(a))},e.prototype.difference=function(a,b){return{x:a.x-b.x,y:a.y-b.y}},a.fn.owlCarousel=function(b){var c=Array.prototype.slice.call(arguments,1);return this.each(function(){var d=a(this),f=d.data("owl.carousel");f||(f=new e(this,"object"==typeof b&&b),d.data("owl.carousel",f),a.each(["next","prev","to","destroy","refresh","replace","add","remove"],function(b,c){f.register({type:e.Type.Event,name:c}),f.$element.on(c+".owl.carousel.core",a.proxy(function(a){a.namespace&&a.relatedTarget!==this&&(this.suppress([c]),f[c].apply(this,[].slice.call(arguments,1)),this.release([c]))},f))})),"string"==typeof b&&"_"!==b.charAt(0)&&f[b].apply(f,c)})},a.fn.owlCarousel.Constructor=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._interval=null,this._visible=null,this._handlers={"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoRefresh&&this.watch()},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};e.Defaults={autoRefresh:!0,autoRefreshInterval:500},e.prototype.watch=function(){this._interval||(this._visible=this._core.isVisible(),this._interval=b.setInterval(a.proxy(this.refresh,this),this._core.settings.autoRefreshInterval))},e.prototype.refresh=function(){this._core.isVisible()!==this._visible&&(this._visible=!this._visible,this._core.$element.toggleClass("owl-hidden",!this._visible),this._visible&&this._core.invalidate("width")&&this._core.refresh())},e.prototype.destroy=function(){var a,c;b.clearInterval(this._interval);for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoRefresh=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._loaded=[],this._handlers={"initialized.owl.carousel change.owl.carousel resized.owl.carousel":a.proxy(function(b){if(b.namespace&&this._core.settings&&this._core.settings.lazyLoad&&(b.property&&"position"==b.property.name||"initialized"==b.type)){var c=this._core.settings,e=c.center&&Math.ceil(c.items/2)||c.items,f=c.center&&-1*e||0,g=(b.property&&b.property.value!==d?b.property.value:this._core.current())+f,h=this._core.clones().length,i=a.proxy(function(a,b){this.load(b)},this);for(c.lazyLoadEager>0&&(e+=c.lazyLoadEager,c.loop&&(g-=c.lazyLoadEager,e++));f++<e;)this.load(h/2+this._core.relative(g)),h&&a.each(this._core.clones(this._core.relative(g)),i),g++}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};e.Defaults={lazyLoad:!1,lazyLoadEager:0},e.prototype.load=function(c){var d=this._core.$stage.children().eq(c),e=d&&d.find(".owl-lazy");!e||a.inArray(d.get(0),this._loaded)>-1||(e.each(a.proxy(function(c,d){var e,f=a(d),g=b.devicePixelRatio>1&&f.attr("data-src-retina")||f.attr("data-src")||f.attr("data-srcset");this._core.trigger("load",{element:f,url:g},"lazy"),f.is("img")?f.one("load.owl.lazy",a.proxy(function(){f.css("opacity",1),this._core.trigger("loaded",{element:f,url:g},"lazy")},this)).attr("src",g):f.is("source")?f.one("load.owl.lazy",a.proxy(function(){this._core.trigger("loaded",{element:f,url:g},"lazy")},this)).attr("srcset",g):(e=new Image,e.onload=a.proxy(function(){f.css({"background-image":'url("'+g+'")',opacity:"1"}),this._core.trigger("loaded",{element:f,url:g},"lazy")},this),e.src=g)},this)),this._loaded.push(d.get(0)))},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this._core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Lazy=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(c){this._core=c,this._previousHeight=null,this._handlers={"initialized.owl.carousel refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&this.update()},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&"position"===a.property.name&&this.update()},this),"loaded.owl.lazy":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&a.element.closest("."+this._core.settings.itemClass).index()===this._core.current()&&this.update()},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers),this._intervalId=null;var d=this;a(b).on("load",function(){d._core.settings.autoHeight&&d.update()}),a(b).resize(function(){d._core.settings.autoHeight&&(null!=d._intervalId&&clearTimeout(d._intervalId),d._intervalId=setTimeout(function(){d.update()},250))})};e.Defaults={autoHeight:!1,autoHeightClass:"owl-height"},e.prototype.update=function(){var b=this._core._current,c=b+this._core.settings.items,d=this._core.settings.lazyLoad,e=this._core.$stage.children().toArray().slice(b,c),f=[],g=0;a.each(e,function(b,c){f.push(a(c).height())}),g=Math.max.apply(null,f),g<=1&&d&&this._previousHeight&&(g=this._previousHeight),this._previousHeight=g,this._core.$stage.parent().height(g).addClass(this._core.settings.autoHeightClass)},e.prototype.destroy=function(){var a,b;for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoHeight=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._videos={},this._playing=null,this._handlers={"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.register({type:"state",name:"playing",tags:["interacting"]})},this),"resize.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.video&&this.isInFullScreen()&&a.preventDefault()},this),"refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.is("resizing")&&this._core.$stage.find(".cloned .owl-video-frame").remove()},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&"position"===a.property.name&&this._playing&&this.stop()},this),"prepared.owl.carousel":a.proxy(function(b){if(b.namespace){var c=a(b.content).find(".owl-video");c.length&&(c.css("display","none"),this.fetch(c,a(b.content)))}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers),this._core.$element.on("click.owl.video",".owl-video-play-icon",a.proxy(function(a){this.play(a)},this))};e.Defaults={video:!1,videoHeight:!1,videoWidth:!1},e.prototype.fetch=function(a,b){var c=function(){return a.attr("data-vimeo-id")?"vimeo":a.attr("data-vzaar-id")?"vzaar":"youtube"}(),d=a.attr("data-vimeo-id")||a.attr("data-youtube-id")||a.attr("data-vzaar-id"),e=a.attr("data-width")||this._core.settings.videoWidth,f=a.attr("data-height")||this._core.settings.videoHeight,g=a.attr("href");if(!g)throw new Error("Missing video URL.");if(d=g.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com|be\-nocookie\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/),d[3].indexOf("youtu")>-1)c="youtube";else if(d[3].indexOf("vimeo")>-1)c="vimeo";else{if(!(d[3].indexOf("vzaar")>-1))throw new Error("Video URL not supported.");c="vzaar"}d=d[6],this._videos[g]={type:c,id:d,width:e,height:f},b.attr("data-video",g),this.thumbnail(a,this._videos[g])},e.prototype.thumbnail=function(b,c){var d,e,f,g=c.width&&c.height?"width:"+c.width+"px;height:"+c.height+"px;":"",h=b.find("img"),i="src",j="",k=this._core.settings,l=function(c){e='<div class="owl-video-play-icon"></div>',d=k.lazyLoad?a("<div/>",{class:"owl-video-tn "+j,srcType:c}):a("<div/>",{class:"owl-video-tn",style:"opacity:1;background-image:url("+c+")"}),b.after(d),b.after(e)};if(b.wrap(a("<div/>",{class:"owl-video-wrapper",style:g})),this._core.settings.lazyLoad&&(i="data-src",j="owl-lazy"),h.length)return l(h.attr(i)),h.remove(),!1;"youtube"===c.type?(f="//img.youtube.com/vi/"+c.id+"/hqdefault.jpg",l(f)):"vimeo"===c.type?a.ajax({type:"GET",url:"//vimeo.com/api/v2/video/"+c.id+".json",jsonp:"callback",dataType:"jsonp",success:function(a){f=a[0].thumbnail_large,l(f)}}):"vzaar"===c.type&&a.ajax({type:"GET",url:"//vzaar.com/api/videos/"+c.id+".json",jsonp:"callback",dataType:"jsonp",success:function(a){f=a.framegrab_url,l(f)}})},e.prototype.stop=function(){this._core.trigger("stop",null,"video"),this._playing.find(".owl-video-frame").remove(),this._playing.removeClass("owl-video-playing"),this._playing=null,this._core.leave("playing"),this._core.trigger("stopped",null,"video")},e.prototype.play=function(b){var c,d=a(b.target),e=d.closest("."+this._core.settings.itemClass),f=this._videos[e.attr("data-video")],g=f.width||"100%",h=f.height||this._core.$stage.height();this._playing||(this._core.enter("playing"),this._core.trigger("play",null,"video"),e=this._core.items(this._core.relative(e.index())),this._core.reset(e.index()),c=a('<iframe frameborder="0" allowfullscreen mozallowfullscreen webkitAllowFullScreen ></iframe>'),c.attr("height",h),c.attr("width",g),"youtube"===f.type?c.attr("src","//www.youtube.com/embed/"+f.id+"?autoplay=1&rel=0&v="+f.id):"vimeo"===f.type?c.attr("src","//player.vimeo.com/video/"+f.id+"?autoplay=1"):"vzaar"===f.type&&c.attr("src","//view.vzaar.com/"+f.id+"/player?autoplay=true"),a(c).wrap('<div class="owl-video-frame" />').insertAfter(e.find(".owl-video")),this._playing=e.addClass("owl-video-playing"))},e.prototype.isInFullScreen=function(){var b=c.fullscreenElement||c.mozFullScreenElement||c.webkitFullscreenElement;return b&&a(b).parent().hasClass("owl-video-frame")},e.prototype.destroy=function(){var a,b;this._core.$element.off("click.owl.video");for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Video=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this.core=b,this.core.options=a.extend({},e.Defaults,this.core.options),this.swapping=!0,this.previous=d,this.next=d,this.handlers={"change.owl.carousel":a.proxy(function(a){a.namespace&&"position"==a.property.name&&(this.previous=this.core.current(),this.next=a.property.value)},this),"drag.owl.carousel dragged.owl.carousel translated.owl.carousel":a.proxy(function(a){a.namespace&&(this.swapping="translated"==a.type)},this),"translate.owl.carousel":a.proxy(function(a){a.namespace&&this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};e.Defaults={animateOut:!1,
animateIn:!1},e.prototype.swap=function(){if(1===this.core.settings.items&&a.support.animation&&a.support.transition){this.core.speed(0);var b,c=a.proxy(this.clear,this),d=this.core.$stage.children().eq(this.previous),e=this.core.$stage.children().eq(this.next),f=this.core.settings.animateIn,g=this.core.settings.animateOut;this.core.current()!==this.previous&&(g&&(b=this.core.coordinates(this.previous)-this.core.coordinates(this.next),d.one(a.support.animation.end,c).css({left:b+"px"}).addClass("animated owl-animated-out").addClass(g)),f&&e.one(a.support.animation.end,c).addClass("animated owl-animated-in").addClass(f))}},e.prototype.clear=function(b){a(b.target).css({left:""}).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.onTransitionEnd()},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Animate=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._call=null,this._time=0,this._timeout=0,this._paused=!0,this._handlers={"changed.owl.carousel":a.proxy(function(a){a.namespace&&"settings"===a.property.name?this._core.settings.autoplay?this.play():this.stop():a.namespace&&"position"===a.property.name&&this._paused&&(this._time=0)},this),"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoplay&&this.play()},this),"play.owl.autoplay":a.proxy(function(a,b,c){a.namespace&&this.play(b,c)},this),"stop.owl.autoplay":a.proxy(function(a){a.namespace&&this.stop()},this),"mouseover.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"mouseleave.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.play()},this),"touchstart.owl.core":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"touchend.owl.core":a.proxy(function(){this._core.settings.autoplayHoverPause&&this.play()},this)},this._core.$element.on(this._handlers),this._core.options=a.extend({},e.Defaults,this._core.options)};e.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},e.prototype._next=function(d){this._call=b.setTimeout(a.proxy(this._next,this,d),this._timeout*(Math.round(this.read()/this._timeout)+1)-this.read()),this._core.is("interacting")||c.hidden||this._core.next(d||this._core.settings.autoplaySpeed)},e.prototype.read=function(){return(new Date).getTime()-this._time},e.prototype.play=function(c,d){var e;this._core.is("rotating")||this._core.enter("rotating"),c=c||this._core.settings.autoplayTimeout,e=Math.min(this._time%(this._timeout||c),c),this._paused?(this._time=this.read(),this._paused=!1):b.clearTimeout(this._call),this._time+=this.read()%c-e,this._timeout=c,this._call=b.setTimeout(a.proxy(this._next,this,d),c-e)},e.prototype.stop=function(){this._core.is("rotating")&&(this._time=0,this._paused=!0,b.clearTimeout(this._call),this._core.leave("rotating"))},e.prototype.pause=function(){this._core.is("rotating")&&!this._paused&&(this._time=this.read(),this._paused=!0,b.clearTimeout(this._call))},e.prototype.destroy=function(){var a,b;this.stop();for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.autoplay=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){"use strict";var e=function(b){this._core=b,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={"prepared.owl.carousel":a.proxy(function(b){b.namespace&&this._core.settings.dotsData&&this._templates.push('<div class="'+this._core.settings.dotClass+'">'+a(b.content).find("[data-dot]").addBack("[data-dot]").attr("data-dot")+"</div>")},this),"added.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,0,this._templates.pop())},this),"remove.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,1)},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&"position"==a.property.name&&this.draw()},this),"initialized.owl.carousel":a.proxy(function(a){a.namespace&&!this._initialized&&(this._core.trigger("initialize",null,"navigation"),this.initialize(),this.update(),this.draw(),this._initialized=!0,this._core.trigger("initialized",null,"navigation"))},this),"refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._initialized&&(this._core.trigger("refresh",null,"navigation"),this.update(),this.draw(),this._core.trigger("refreshed",null,"navigation"))},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers)};e.Defaults={nav:!1,navText:['<span aria-label="Previous">&#x2039;</span>','<span aria-label="Next">&#x203a;</span>'],navSpeed:!1,navElement:'button type="button" role="presentation"',navContainer:!1,navContainerClass:"owl-nav",navClass:["owl-prev","owl-next"],slideBy:1,dotClass:"owl-dot",dotsClass:"owl-dots",dots:!0,dotsEach:!1,dotsData:!1,dotsSpeed:!1,dotsContainer:!1},e.prototype.initialize=function(){var b,c=this._core.settings;this._controls.$relative=(c.navContainer?a(c.navContainer):a("<div>").addClass(c.navContainerClass).appendTo(this.$element)).addClass("disabled"),this._controls.$previous=a("<"+c.navElement+">").addClass(c.navClass[0]).html(c.navText[0]).prependTo(this._controls.$relative).on("click",a.proxy(function(a){this.prev(c.navSpeed)},this)),this._controls.$next=a("<"+c.navElement+">").addClass(c.navClass[1]).html(c.navText[1]).appendTo(this._controls.$relative).on("click",a.proxy(function(a){this.next(c.navSpeed)},this)),c.dotsData||(this._templates=[a('<button role="button">').addClass(c.dotClass).append(a("<span>")).prop("outerHTML")]),this._controls.$absolute=(c.dotsContainer?a(c.dotsContainer):a("<div>").addClass(c.dotsClass).appendTo(this.$element)).addClass("disabled"),this._controls.$absolute.on("click","button",a.proxy(function(b){var d=a(b.target).parent().is(this._controls.$absolute)?a(b.target).index():a(b.target).parent().index();b.preventDefault(),this.to(d,c.dotsSpeed)},this));for(b in this._overrides)this._core[b]=a.proxy(this[b],this)},e.prototype.destroy=function(){var a,b,c,d,e;e=this._core.settings;for(a in this._handlers)this.$element.off(a,this._handlers[a]);for(b in this._controls)"$relative"===b&&e.navContainer?this._controls[b].html(""):this._controls[b].remove();for(d in this.overides)this._core[d]=this._overrides[d];for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},e.prototype.update=function(){var a,b,c,d=this._core.clones().length/2,e=d+this._core.items().length,f=this._core.maximum(!0),g=this._core.settings,h=g.center||g.autoWidth||g.dotsData?1:g.dotsEach||g.items;if("page"!==g.slideBy&&(g.slideBy=Math.min(g.slideBy,g.items)),g.dots||"page"==g.slideBy)for(this._pages=[],a=d,b=0,c=0;a<e;a++){if(b>=h||0===b){if(this._pages.push({start:Math.min(f,a-d),end:a-d+h-1}),Math.min(f,a-d)===f)break;b=0,++c}b+=this._core.mergers(this._core.relative(a))}},e.prototype.draw=function(){var b,c=this._core.settings,d=this._core.items().length<=c.items,e=this._core.relative(this._core.current()),f=c.loop||c.rewind;this._controls.$relative.toggleClass("disabled",!c.nav||d),c.nav&&(this._controls.$previous.toggleClass("disabled",!f&&e<=this._core.minimum(!0)),this._controls.$next.toggleClass("disabled",!f&&e>=this._core.maximum(!0))),this._controls.$absolute.toggleClass("disabled",!c.dots||d),c.dots&&(b=this._pages.length-this._controls.$absolute.children().length,c.dotsData&&0!==b?this._controls.$absolute.html(this._templates.join("")):b>0?this._controls.$absolute.append(new Array(b+1).join(this._templates[0])):b<0&&this._controls.$absolute.children().slice(b).remove(),this._controls.$absolute.find(".active").removeClass("active"),this._controls.$absolute.children().eq(a.inArray(this.current(),this._pages)).addClass("active"))},e.prototype.onTrigger=function(b){var c=this._core.settings;b.page={index:a.inArray(this.current(),this._pages),count:this._pages.length,size:c&&(c.center||c.autoWidth||c.dotsData?1:c.dotsEach||c.items)}},e.prototype.current=function(){var b=this._core.relative(this._core.current());return a.grep(this._pages,a.proxy(function(a,c){return a.start<=b&&a.end>=b},this)).pop()},e.prototype.getPosition=function(b){var c,d,e=this._core.settings;return"page"==e.slideBy?(c=a.inArray(this.current(),this._pages),d=this._pages.length,b?++c:--c,c=this._pages[(c%d+d)%d].start):(c=this._core.relative(this._core.current()),d=this._core.items().length,b?c+=e.slideBy:c-=e.slideBy),c},e.prototype.next=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!0),b)},e.prototype.prev=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!1),b)},e.prototype.to=function(b,c,d){var e;!d&&this._pages.length?(e=this._pages.length,a.proxy(this._overrides.to,this._core)(this._pages[(b%e+e)%e].start,c)):a.proxy(this._overrides.to,this._core)(b,c)},a.fn.owlCarousel.Constructor.Plugins.Navigation=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){"use strict";var e=function(c){this._core=c,this._hashes={},this.$element=this._core.$element,this._handlers={"initialized.owl.carousel":a.proxy(function(c){c.namespace&&"URLHash"===this._core.settings.startPosition&&a(b).trigger("hashchange.owl.navigation")},this),"prepared.owl.carousel":a.proxy(function(b){if(b.namespace){var c=a(b.content).find("[data-hash]").addBack("[data-hash]").attr("data-hash");if(!c)return;this._hashes[c]=b.content}},this),"changed.owl.carousel":a.proxy(function(c){if(c.namespace&&"position"===c.property.name){var d=this._core.items(this._core.relative(this._core.current())),e=a.map(this._hashes,function(a,b){return a===d?b:null}).join();if(!e||b.location.hash.slice(1)===e)return;b.location.hash=e}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers),a(b).on("hashchange.owl.navigation",a.proxy(function(a){var c=b.location.hash.substring(1),e=this._core.$stage.children(),f=this._hashes[c]&&e.index(this._hashes[c]);f!==d&&f!==this._core.current()&&this._core.to(this._core.relative(f),!1,!0)},this))};e.Defaults={URLhashListener:!1},e.prototype.destroy=function(){var c,d;a(b).off("hashchange.owl.navigation");for(c in this._handlers)this._core.$element.off(c,this._handlers[c]);for(d in Object.getOwnPropertyNames(this))"function"!=typeof this[d]&&(this[d]=null)},a.fn.owlCarousel.Constructor.Plugins.Hash=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){function e(b,c){var e=!1,f=b.charAt(0).toUpperCase()+b.slice(1);return a.each((b+" "+h.join(f+" ")+f).split(" "),function(a,b){if(g[b]!==d)return e=!c||b,!1}),e}function f(a){return e(a,!0)}var g=a("<support>").get(0).style,h="Webkit Moz O ms".split(" "),i={transition:{end:{WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"}},animation:{end:{WebkitAnimation:"webkitAnimationEnd",MozAnimation:"animationend",OAnimation:"oAnimationEnd",animation:"animationend"}}},j={csstransforms:function(){return!!e("transform")},csstransforms3d:function(){return!!e("perspective")},csstransitions:function(){return!!e("transition")},cssanimations:function(){return!!e("animation")}};j.csstransitions()&&(a.support.transition=new String(f("transition")),a.support.transition.end=i.transition.end[a.support.transition]),j.cssanimations()&&(a.support.animation=new String(f("animation")),a.support.animation.end=i.animation.end[a.support.animation]),j.csstransforms()&&(a.support.transform=new String(f("transform")),a.support.transform3d=j.csstransforms3d())}(window.Zepto||window.jQuery,window,document);
!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof module&&module.exports?module.exports=b(require("jquery")):b(a.jQuery)}(this,function(a){!function(){"use strict";function b(b,d){if(this.el=b,this.$el=a(b),this.s=a.extend({},c,d),this.s.dynamic&&"undefined"!==this.s.dynamicEl&&this.s.dynamicEl.constructor===Array&&!this.s.dynamicEl.length)throw"When using dynamic mode, you must also define dynamicEl as an Array.";return this.modules={},this.lGalleryOn=!1,this.lgBusy=!1,this.hideBartimeout=!1,this.isTouch="ontouchstart"in document.documentElement,this.s.slideEndAnimatoin&&(this.s.hideControlOnEnd=!1),this.s.dynamic?this.$items=this.s.dynamicEl:"this"===this.s.selector?this.$items=this.$el:""!==this.s.selector?this.s.selectWithin?this.$items=a(this.s.selectWithin).find(this.s.selector):this.$items=this.$el.find(a(this.s.selector)):this.$items=this.$el.children(),this.$slide="",this.$outer="",this.init(),this}var c={mode:"lg-slide",cssEasing:"ease",easing:"linear",speed:600,height:"100%",width:"100%",addClass:"",startClass:"lg-start-zoom",backdropDuration:150,hideBarsDelay:6e3,useLeft:!1,closable:!0,loop:!0,escKey:!0,keyPress:!0,controls:!0,slideEndAnimatoin:!0,hideControlOnEnd:!1,mousewheel:!0,getCaptionFromTitleOrAlt:!0,appendSubHtmlTo:".lg-sub-html",subHtmlSelectorRelative:!1,preload:1,showAfterLoad:!0,selector:"",selectWithin:"",nextHtml:"",prevHtml:"",index:!1,iframeMaxWidth:"100%",download:!0,counter:!0,appendCounterTo:".lg-toolbar",swipeThreshold:50,enableSwipe:!0,enableDrag:!0,dynamic:!1,dynamicEl:[],galleryId:1};b.prototype.init=function(){var b=this;b.s.preload>b.$items.length&&(b.s.preload=b.$items.length);var c=window.location.hash;c.indexOf("lg="+this.s.galleryId)>0&&(b.index=parseInt(c.split("&slide=")[1],10),a("body").addClass("lg-from-hash"),a("body").hasClass("lg-on")||(setTimeout(function(){b.build(b.index)}),a("body").addClass("lg-on"))),b.s.dynamic?(b.$el.trigger("onBeforeOpen.lg"),b.index=b.s.index||0,a("body").hasClass("lg-on")||setTimeout(function(){b.build(b.index),a("body").addClass("lg-on")})):b.$items.on("click.lgcustom",function(c){try{c.preventDefault(),c.preventDefault()}catch(a){c.returnValue=!1}b.$el.trigger("onBeforeOpen.lg"),b.index=b.s.index||b.$items.index(this),a("body").hasClass("lg-on")||(b.build(b.index),a("body").addClass("lg-on"))})},b.prototype.build=function(b){var c=this;c.structure(),a.each(a.fn.lightGallery.modules,function(b){c.modules[b]=new a.fn.lightGallery.modules[b](c.el)}),c.slide(b,!1,!1,!1),c.s.keyPress&&c.keyPress(),c.$items.length>1?(c.arrow(),setTimeout(function(){c.enableDrag(),c.enableSwipe()},50),c.s.mousewheel&&c.mousewheel()):c.$slide.on("click.lg",function(){c.$el.trigger("onSlideClick.lg")}),c.counter(),c.closeGallery(),c.$el.trigger("onAfterOpen.lg"),c.$outer.on("mousemove.lg click.lg touchstart.lg",function(){c.$outer.removeClass("lg-hide-items"),clearTimeout(c.hideBartimeout),c.hideBartimeout=setTimeout(function(){c.$outer.addClass("lg-hide-items")},c.s.hideBarsDelay)}),c.$outer.trigger("mousemove.lg")},b.prototype.structure=function(){var b,c="",d="",e=0,f="",g=this;for(a("body").append('<div class="lg-backdrop"></div>'),a(".lg-backdrop").css("transition-duration",this.s.backdropDuration+"ms"),e=0;e<this.$items.length;e++)c+='<div class="lg-item"></div>';if(this.s.controls&&this.$items.length>1&&(d='<div class="lg-actions"><button class="lg-prev lg-icon">'+this.s.prevHtml+'</button><button class="lg-next lg-icon">'+this.s.nextHtml+"</button></div>"),".lg-sub-html"===this.s.appendSubHtmlTo&&(f='<div class="lg-sub-html"></div>'),b='<div class="lg-outer '+this.s.addClass+" "+this.s.startClass+'"><div class="lg" style="width:'+this.s.width+"; height:"+this.s.height+'"><div class="lg-inner">'+c+'</div><div class="lg-toolbar lg-group"><span class="lg-close lg-icon"></span></div>'+d+f+"</div></div>",a("body").append(b),this.$outer=a(".lg-outer"),this.$slide=this.$outer.find(".lg-item"),this.s.useLeft?(this.$outer.addClass("lg-use-left"),this.s.mode="lg-slide"):this.$outer.addClass("lg-use-css3"),g.setTop(),a(window).on("resize.lg orientationchange.lg",function(){setTimeout(function(){g.setTop()},100)}),this.$slide.eq(this.index).addClass("lg-current"),this.doCss()?this.$outer.addClass("lg-css3"):(this.$outer.addClass("lg-css"),this.s.speed=0),this.$outer.addClass(this.s.mode),this.s.enableDrag&&this.$items.length>1&&this.$outer.addClass("lg-grab"),this.s.showAfterLoad&&this.$outer.addClass("lg-show-after-load"),this.doCss()){var h=this.$outer.find(".lg-inner");h.css("transition-timing-function",this.s.cssEasing),h.css("transition-duration",this.s.speed+"ms")}setTimeout(function(){a(".lg-backdrop").addClass("in")}),setTimeout(function(){g.$outer.addClass("lg-visible")},this.s.backdropDuration),this.s.download&&this.$outer.find(".lg-toolbar").append('<a id="lg-download" target="_blank" download class="lg-download lg-icon"></a>'),this.prevScrollTop=a(window).scrollTop()},b.prototype.setTop=function(){if("100%"!==this.s.height){var b=a(window).height(),c=(b-parseInt(this.s.height,10))/2,d=this.$outer.find(".lg");b>=parseInt(this.s.height,10)?d.css("top",c+"px"):d.css("top","0px")}},b.prototype.doCss=function(){return!!function(){var a=["transition","MozTransition","WebkitTransition","OTransition","msTransition","KhtmlTransition"],b=document.documentElement,c=0;for(c=0;c<a.length;c++)if(a[c]in b.style)return!0}()},b.prototype.isVideo=function(a,b){var c;if(c=this.s.dynamic?this.s.dynamicEl[b].html:this.$items.eq(b).attr("data-html"),!a)return c?{html5:!0}:(console.error("lightGallery :- data-src is not pvovided on slide item "+(b+1)+". Please make sure the selector property is properly configured. More info - http://sachinchoolur.github.io/lightGallery/demos/html-markup.html"),!1);var d=a.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com|be-nocookie\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)/i),e=a.match(/\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i),f=a.match(/\/\/(?:www\.)?dai.ly\/([0-9a-z\-_]+)/i),g=a.match(/\/\/(?:www\.)?(?:vk\.com|vkontakte\.ru)\/(?:video_ext\.php\?)(.*)/i);return d?{youtube:d}:e?{vimeo:e}:f?{dailymotion:f}:g?{vk:g}:void 0},b.prototype.counter=function(){this.s.counter&&a(this.s.appendCounterTo).append('<div id="lg-counter"><span id="lg-counter-current">'+(parseInt(this.index,10)+1)+'</span> / <span id="lg-counter-all">'+this.$items.length+"</span></div>")},b.prototype.addHtml=function(b){var c,d,e=null;if(this.s.dynamic?this.s.dynamicEl[b].subHtmlUrl?c=this.s.dynamicEl[b].subHtmlUrl:e=this.s.dynamicEl[b].subHtml:(d=this.$items.eq(b),d.attr("data-sub-html-url")?c=d.attr("data-sub-html-url"):(e=d.attr("data-sub-html"),this.s.getCaptionFromTitleOrAlt&&!e&&(e=d.attr("title")||d.find("img").first().attr("alt")))),!c)if(void 0!==e&&null!==e){var f=e.substring(0,1);"."!==f&&"#"!==f||(e=this.s.subHtmlSelectorRelative&&!this.s.dynamic?d.find(e).html():a(e).html())}else e="";".lg-sub-html"===this.s.appendSubHtmlTo?c?this.$outer.find(this.s.appendSubHtmlTo).load(c):this.$outer.find(this.s.appendSubHtmlTo).html(e):c?this.$slide.eq(b).load(c):this.$slide.eq(b).append(e),void 0!==e&&null!==e&&(""===e?this.$outer.find(this.s.appendSubHtmlTo).addClass("lg-empty-html"):this.$outer.find(this.s.appendSubHtmlTo).removeClass("lg-empty-html")),this.$el.trigger("onAfterAppendSubHtml.lg",[b])},b.prototype.preload=function(a){var b=1,c=1;for(b=1;b<=this.s.preload&&!(b>=this.$items.length-a);b++)this.loadContent(a+b,!1,0);for(c=1;c<=this.s.preload&&!(a-c<0);c++)this.loadContent(a-c,!1,0)},b.prototype.loadContent=function(b,c,d){var e,f,g,h,i,j,k=this,l=!1,m=function(b){for(var c=[],d=[],e=0;e<b.length;e++){var g=b[e].split(" ");""===g[0]&&g.splice(0,1),d.push(g[0]),c.push(g[1])}for(var h=a(window).width(),i=0;i<c.length;i++)if(parseInt(c[i],10)>h){f=d[i];break}};if(k.s.dynamic){if(k.s.dynamicEl[b].poster&&(l=!0,g=k.s.dynamicEl[b].poster),j=k.s.dynamicEl[b].html,f=k.s.dynamicEl[b].src,k.s.dynamicEl[b].responsive){m(k.s.dynamicEl[b].responsive.split(","))}h=k.s.dynamicEl[b].srcset,i=k.s.dynamicEl[b].sizes}else{if(k.$items.eq(b).attr("data-poster")&&(l=!0,g=k.$items.eq(b).attr("data-poster")),j=k.$items.eq(b).attr("data-html"),f=k.$items.eq(b).attr("href")||k.$items.eq(b).attr("data-src"),k.$items.eq(b).attr("data-responsive")){m(k.$items.eq(b).attr("data-responsive").split(","))}h=k.$items.eq(b).attr("data-srcset"),i=k.$items.eq(b).attr("data-sizes")}var n=!1;k.s.dynamic?k.s.dynamicEl[b].iframe&&(n=!0):"true"===k.$items.eq(b).attr("data-iframe")&&(n=!0);var o=k.isVideo(f,b);if(!k.$slide.eq(b).hasClass("lg-loaded")){if(n)k.$slide.eq(b).prepend('<div class="lg-video-cont lg-has-iframe" style="max-width:'+k.s.iframeMaxWidth+'"><div class="lg-video"><iframe class="lg-object" frameborder="0" src="'+f+'"  allowfullscreen="true"></iframe></div></div>');else if(l){var p="";p=o&&o.youtube?"lg-has-youtube":o&&o.vimeo?"lg-has-vimeo":"lg-has-html5",k.$slide.eq(b).prepend('<div class="lg-video-cont '+p+' "><div class="lg-video"><span class="lg-video-play"></span><img class="lg-object lg-has-poster" src="'+g+'" /></div></div>')}else o?(k.$slide.eq(b).prepend('<div class="lg-video-cont "><div class="lg-video"></div></div>'),k.$el.trigger("hasVideo.lg",[b,f,j])):k.$slide.eq(b).prepend('<div class="lg-img-wrap"><img class="lg-object lg-image" src="'+f+'" /></div>');if(k.$el.trigger("onAferAppendSlide.lg",[b]),e=k.$slide.eq(b).find(".lg-object"),i&&e.attr("sizes",i),h){e.attr("srcset",h);try{picturefill({elements:[e[0]]})}catch(a){console.warn("lightGallery :- If you want srcset to be supported for older browser please include picturefil version 2 javascript library in your document.")}}".lg-sub-html"!==this.s.appendSubHtmlTo&&k.addHtml(b),k.$slide.eq(b).addClass("lg-loaded")}k.$slide.eq(b).find(".lg-object").on("load.lg error.lg",function(){var c=0;d&&!a("body").hasClass("lg-from-hash")&&(c=d),setTimeout(function(){k.$slide.eq(b).addClass("lg-complete"),k.$el.trigger("onSlideItemLoad.lg",[b,d||0])},c)}),o&&o.html5&&!l&&k.$slide.eq(b).addClass("lg-complete"),!0===c&&(k.$slide.eq(b).hasClass("lg-complete")?k.preload(b):k.$slide.eq(b).find(".lg-object").on("load.lg error.lg",function(){k.preload(b)}))},b.prototype.slide=function(b,c,d,e){var f=this.$outer.find(".lg-current").index(),g=this;if(!g.lGalleryOn||f!==b){var h=this.$slide.length,i=g.lGalleryOn?this.s.speed:0;if(!g.lgBusy){if(this.s.download){var j;j=g.s.dynamic?!1!==g.s.dynamicEl[b].downloadUrl&&(g.s.dynamicEl[b].downloadUrl||g.s.dynamicEl[b].src):"false"!==g.$items.eq(b).attr("data-download-url")&&(g.$items.eq(b).attr("data-download-url")||g.$items.eq(b).attr("href")||g.$items.eq(b).attr("data-src")),j?(a("#lg-download").attr("href",j),g.$outer.removeClass("lg-hide-download")):g.$outer.addClass("lg-hide-download")}if(this.$el.trigger("onBeforeSlide.lg",[f,b,c,d]),g.lgBusy=!0,clearTimeout(g.hideBartimeout),".lg-sub-html"===this.s.appendSubHtmlTo&&setTimeout(function(){g.addHtml(b)},i),this.arrowDisable(b),e||(b<f?e="prev":b>f&&(e="next")),c){this.$slide.removeClass("lg-prev-slide lg-current lg-next-slide");var k,l;h>2?(k=b-1,l=b+1,0===b&&f===h-1?(l=0,k=h-1):b===h-1&&0===f&&(l=0,k=h-1)):(k=0,l=1),"prev"===e?g.$slide.eq(l).addClass("lg-next-slide"):g.$slide.eq(k).addClass("lg-prev-slide"),g.$slide.eq(b).addClass("lg-current")}else g.$outer.addClass("lg-no-trans"),this.$slide.removeClass("lg-prev-slide lg-next-slide"),"prev"===e?(this.$slide.eq(b).addClass("lg-prev-slide"),this.$slide.eq(f).addClass("lg-next-slide")):(this.$slide.eq(b).addClass("lg-next-slide"),this.$slide.eq(f).addClass("lg-prev-slide")),setTimeout(function(){g.$slide.removeClass("lg-current"),g.$slide.eq(b).addClass("lg-current"),g.$outer.removeClass("lg-no-trans")},50);g.lGalleryOn?(setTimeout(function(){g.loadContent(b,!0,0)},this.s.speed+50),setTimeout(function(){g.lgBusy=!1,g.$el.trigger("onAfterSlide.lg",[f,b,c,d])},this.s.speed)):(g.loadContent(b,!0,g.s.backdropDuration),g.lgBusy=!1,g.$el.trigger("onAfterSlide.lg",[f,b,c,d])),g.lGalleryOn=!0,this.s.counter&&a("#lg-counter-current").text(b+1)}g.index=b}},b.prototype.goToNextSlide=function(a){var b=this,c=b.s.loop;a&&b.$slide.length<3&&(c=!1),b.lgBusy||(b.index+1<b.$slide.length?(b.index++,b.$el.trigger("onBeforeNextSlide.lg",[b.index]),b.slide(b.index,a,!1,"next")):c?(b.index=0,b.$el.trigger("onBeforeNextSlide.lg",[b.index]),b.slide(b.index,a,!1,"next")):b.s.slideEndAnimatoin&&!a&&(b.$outer.addClass("lg-right-end"),setTimeout(function(){b.$outer.removeClass("lg-right-end")},400)))},b.prototype.goToPrevSlide=function(a){var b=this,c=b.s.loop;a&&b.$slide.length<3&&(c=!1),b.lgBusy||(b.index>0?(b.index--,b.$el.trigger("onBeforePrevSlide.lg",[b.index,a]),b.slide(b.index,a,!1,"prev")):c?(b.index=b.$items.length-1,b.$el.trigger("onBeforePrevSlide.lg",[b.index,a]),b.slide(b.index,a,!1,"prev")):b.s.slideEndAnimatoin&&!a&&(b.$outer.addClass("lg-left-end"),setTimeout(function(){b.$outer.removeClass("lg-left-end")},400)))},b.prototype.keyPress=function(){var b=this;this.$items.length>1&&a(window).on("keyup.lg",function(a){b.$items.length>1&&(37===a.keyCode&&(a.preventDefault(),b.goToPrevSlide()),39===a.keyCode&&(a.preventDefault(),b.goToNextSlide()))}),a(window).on("keydown.lg",function(a){!0===b.s.escKey&&27===a.keyCode&&(a.preventDefault(),b.$outer.hasClass("lg-thumb-open")?b.$outer.removeClass("lg-thumb-open"):b.destroy())})},b.prototype.arrow=function(){var a=this;this.$outer.find(".lg-prev").on("click.lg",function(){a.goToPrevSlide()}),this.$outer.find(".lg-next").on("click.lg",function(){a.goToNextSlide()})},b.prototype.arrowDisable=function(a){!this.s.loop&&this.s.hideControlOnEnd&&(a+1<this.$slide.length?this.$outer.find(".lg-next").removeAttr("disabled").removeClass("disabled"):this.$outer.find(".lg-next").attr("disabled","disabled").addClass("disabled"),a>0?this.$outer.find(".lg-prev").removeAttr("disabled").removeClass("disabled"):this.$outer.find(".lg-prev").attr("disabled","disabled").addClass("disabled"))},b.prototype.setTranslate=function(a,b,c){this.s.useLeft?a.css("left",b):a.css({transform:"translate3d("+b+"px, "+c+"px, 0px)"})},b.prototype.touchMove=function(b,c){var d=c-b;Math.abs(d)>15&&(this.$outer.addClass("lg-dragging"),this.setTranslate(this.$slide.eq(this.index),d,0),this.setTranslate(a(".lg-prev-slide"),-this.$slide.eq(this.index).width()+d,0),this.setTranslate(a(".lg-next-slide"),this.$slide.eq(this.index).width()+d,0))},b.prototype.touchEnd=function(a){var b=this;"lg-slide"!==b.s.mode&&b.$outer.addClass("lg-slide"),this.$slide.not(".lg-current, .lg-prev-slide, .lg-next-slide").css("opacity","0"),setTimeout(function(){b.$outer.removeClass("lg-dragging"),a<0&&Math.abs(a)>b.s.swipeThreshold?b.goToNextSlide(!0):a>0&&Math.abs(a)>b.s.swipeThreshold?b.goToPrevSlide(!0):Math.abs(a)<5&&b.$el.trigger("onSlideClick.lg"),b.$slide.removeAttr("style")}),setTimeout(function(){b.$outer.hasClass("lg-dragging")||"lg-slide"===b.s.mode||b.$outer.removeClass("lg-slide")},b.s.speed+100)},b.prototype.enableSwipe=function(){var a=this,b=0,c=0,d=!1;a.s.enableSwipe&&a.doCss()&&(a.$slide.on("touchstart.lg",function(c){a.$outer.hasClass("lg-zoomed")||a.lgBusy||(c.preventDefault(),a.manageSwipeClass(),b=c.originalEvent.targetTouches[0].pageX)}),a.$slide.on("touchmove.lg",function(e){a.$outer.hasClass("lg-zoomed")||(e.preventDefault(),c=e.originalEvent.targetTouches[0].pageX,a.touchMove(b,c),d=!0)}),a.$slide.on("touchend.lg",function(){a.$outer.hasClass("lg-zoomed")||(d?(d=!1,a.touchEnd(c-b)):a.$el.trigger("onSlideClick.lg"))}))},b.prototype.enableDrag=function(){var b=this,c=0,d=0,e=!1,f=!1;b.s.enableDrag&&b.doCss()&&(b.$slide.on("mousedown.lg",function(d){b.$outer.hasClass("lg-zoomed")||b.lgBusy||a(d.target).text().trim()||(d.preventDefault(),b.manageSwipeClass(),c=d.pageX,e=!0,b.$outer.scrollLeft+=1,b.$outer.scrollLeft-=1,b.$outer.removeClass("lg-grab").addClass("lg-grabbing"),b.$el.trigger("onDragstart.lg"))}),a(window).on("mousemove.lg",function(a){e&&(f=!0,d=a.pageX,b.touchMove(c,d),b.$el.trigger("onDragmove.lg"))}),a(window).on("mouseup.lg",function(g){f?(f=!1,b.touchEnd(d-c),b.$el.trigger("onDragend.lg")):(a(g.target).hasClass("lg-object")||a(g.target).hasClass("lg-video-play"))&&b.$el.trigger("onSlideClick.lg"),e&&(e=!1,b.$outer.removeClass("lg-grabbing").addClass("lg-grab"))}))},b.prototype.manageSwipeClass=function(){var a=this.index+1,b=this.index-1;this.s.loop&&this.$slide.length>2&&(0===this.index?b=this.$slide.length-1:this.index===this.$slide.length-1&&(a=0)),this.$slide.removeClass("lg-next-slide lg-prev-slide"),b>-1&&this.$slide.eq(b).addClass("lg-prev-slide"),this.$slide.eq(a).addClass("lg-next-slide")},b.prototype.mousewheel=function(){var a=this;a.$outer.on("mousewheel.lg",function(b){b.deltaY&&(b.deltaY>0?a.goToPrevSlide():a.goToNextSlide(),b.preventDefault())})},b.prototype.closeGallery=function(){var b=this,c=!1;this.$outer.find(".lg-close").on("click.lg",function(){b.destroy()}),b.s.closable&&(b.$outer.on("mousedown.lg",function(b){c=!!(a(b.target).is(".lg-outer")||a(b.target).is(".lg-item ")||a(b.target).is(".lg-img-wrap"))}),b.$outer.on("mousemove.lg",function(){c=!1}),b.$outer.on("mouseup.lg",function(d){(a(d.target).is(".lg-outer")||a(d.target).is(".lg-item ")||a(d.target).is(".lg-img-wrap")&&c)&&(b.$outer.hasClass("lg-dragging")||b.destroy())}))},b.prototype.destroy=function(b){var c=this;b||(c.$el.trigger("onBeforeClose.lg"),a(window).scrollTop(c.prevScrollTop)),b&&(c.s.dynamic||this.$items.off("click.lg click.lgcustom"),a.removeData(c.el,"lightGallery")),this.$el.off(".lg.tm"),a.each(a.fn.lightGallery.modules,function(a){c.modules[a]&&c.modules[a].destroy()}),this.lGalleryOn=!1,clearTimeout(c.hideBartimeout),this.hideBartimeout=!1,a(window).off(".lg"),a("body").removeClass("lg-on lg-from-hash"),c.$outer&&c.$outer.removeClass("lg-visible"),a(".lg-backdrop").removeClass("in"),setTimeout(function(){c.$outer&&c.$outer.remove(),a(".lg-backdrop").remove(),b||c.$el.trigger("onCloseAfter.lg")},c.s.backdropDuration+50)},a.fn.lightGallery=function(c){return this.each(function(){if(a.data(this,"lightGallery"))try{a(this).data("lightGallery").init()}catch(a){console.error("lightGallery has not initiated properly")}else a.data(this,"lightGallery",new b(this,c))})},a.fn.lightGallery.modules={}}()}),function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(0,function(a){!function(){"use strict";var b={autoplay:!1,pause:5e3,progressBar:!0,fourceAutoplay:!1,autoplayControls:!0,appendAutoplayControlsTo:".lg-toolbar"},c=function(c){return this.core=a(c).data("lightGallery"),this.$el=a(c),!(this.core.$items.length<2)&&(this.core.s=a.extend({},b,this.core.s),this.interval=!1,this.fromAuto=!0,this.canceledOnTouch=!1,this.fourceAutoplayTemp=this.core.s.fourceAutoplay,this.core.doCss()||(this.core.s.progressBar=!1),this.init(),this)};c.prototype.init=function(){var a=this;a.core.s.autoplayControls&&a.controls(),a.core.s.progressBar&&a.core.$outer.find(".lg").append('<div class="lg-progress-bar"><div class="lg-progress"></div></div>'),a.progress(),a.core.s.autoplay&&a.$el.one("onSlideItemLoad.lg.tm",function(){a.startlAuto()}),a.$el.on("onDragstart.lg.tm touchstart.lg.tm",function(){a.interval&&(a.cancelAuto(),a.canceledOnTouch=!0)}),a.$el.on("onDragend.lg.tm touchend.lg.tm onSlideClick.lg.tm",function(){!a.interval&&a.canceledOnTouch&&(a.startlAuto(),a.canceledOnTouch=!1)})},c.prototype.progress=function(){var a,b,c=this;c.$el.on("onBeforeSlide.lg.tm",function(){c.core.s.progressBar&&c.fromAuto&&(a=c.core.$outer.find(".lg-progress-bar"),b=c.core.$outer.find(".lg-progress"),c.interval&&(b.removeAttr("style"),a.removeClass("lg-start"),setTimeout(function(){b.css("transition","width "+(c.core.s.speed+c.core.s.pause)+"ms ease 0s"),a.addClass("lg-start")},20))),c.fromAuto||c.core.s.fourceAutoplay||c.cancelAuto(),c.fromAuto=!1})},c.prototype.controls=function(){var b=this;a(this.core.s.appendAutoplayControlsTo).append('<span class="lg-autoplay-button lg-icon"></span>'),b.core.$outer.find(".lg-autoplay-button").on("click.lg",function(){a(b.core.$outer).hasClass("lg-show-autoplay")?(b.cancelAuto(),b.core.s.fourceAutoplay=!1):b.interval||(b.startlAuto(),b.core.s.fourceAutoplay=b.fourceAutoplayTemp)})},c.prototype.startlAuto=function(){var a=this;a.core.$outer.find(".lg-progress").css("transition","width "+(a.core.s.speed+a.core.s.pause)+"ms ease 0s"),a.core.$outer.addClass("lg-show-autoplay"),a.core.$outer.find(".lg-progress-bar").addClass("lg-start"),a.interval=setInterval(function(){a.core.index+1<a.core.$items.length?a.core.index++:a.core.index=0,a.fromAuto=!0,a.core.slide(a.core.index,!1,!1,"next")},a.core.s.speed+a.core.s.pause)},c.prototype.cancelAuto=function(){clearInterval(this.interval),this.interval=!1,this.core.$outer.find(".lg-progress").removeAttr("style"),this.core.$outer.removeClass("lg-show-autoplay"),this.core.$outer.find(".lg-progress-bar").removeClass("lg-start")},c.prototype.destroy=function(){this.cancelAuto(),this.core.$outer.find(".lg-progress-bar").remove()},a.fn.lightGallery.modules.autoplay=c}()}),function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof module&&module.exports?module.exports=b(require("jquery")):b(a.jQuery)}(this,function(a){!function(){"use strict";function b(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement}var c={fullScreen:!0},d=function(b){return this.core=a(b).data("lightGallery"),this.$el=a(b),this.core.s=a.extend({},c,this.core.s),this.init(),this};d.prototype.init=function(){var a="";if(this.core.s.fullScreen){if(!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled))return;a='<span class="lg-fullscreen lg-icon"></span>',this.core.$outer.find(".lg-toolbar").append(a),this.fullScreen()}},d.prototype.requestFullscreen=function(){var a=document.documentElement;a.requestFullscreen?a.requestFullscreen():a.msRequestFullscreen?a.msRequestFullscreen():a.mozRequestFullScreen?a.mozRequestFullScreen():a.webkitRequestFullscreen&&a.webkitRequestFullscreen()},d.prototype.exitFullscreen=function(){document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()},d.prototype.fullScreen=function(){var c=this;a(document).on("fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg",function(){c.core.$outer.toggleClass("lg-fullscreen-on")}),this.core.$outer.find(".lg-fullscreen").on("click.lg",function(){b()?c.exitFullscreen():c.requestFullscreen()})},d.prototype.destroy=function(){b()&&this.exitFullscreen(),a(document).off("fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg")},a.fn.lightGallery.modules.fullscreen=d}()}),function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(0,function(a){!function(){"use strict";var b={pager:!1},c=function(c){return this.core=a(c).data("lightGallery"),this.$el=a(c),this.core.s=a.extend({},b,this.core.s),this.core.s.pager&&this.core.$items.length>1&&this.init(),this};c.prototype.init=function(){var b,c,d,e=this,f="";if(e.core.$outer.find(".lg").append('<div class="lg-pager-outer"></div>'),e.core.s.dynamic)for(var g=0;g<e.core.s.dynamicEl.length;g++)f+='<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="'+e.core.s.dynamicEl[g].thumb+'" /></div></span>';else e.core.$items.each(function(){e.core.s.exThumbImage?f+='<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="'+a(this).attr(e.core.s.exThumbImage)+'" /></div></span>':f+='<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="'+a(this).find("img").attr("src")+'" /></div></span>'});c=e.core.$outer.find(".lg-pager-outer"),c.html(f),b=e.core.$outer.find(".lg-pager-cont"),b.on("click.lg touchend.lg",function(){var b=a(this);e.core.index=b.index(),e.core.slide(e.core.index,!1,!0,!1)}),c.on("mouseover.lg",function(){clearTimeout(d),c.addClass("lg-pager-hover")}),c.on("mouseout.lg",function(){d=setTimeout(function(){c.removeClass("lg-pager-hover")})}),e.core.$el.on("onBeforeSlide.lg.tm",function(a,c,d){b.removeClass("lg-pager-active"),b.eq(d).addClass("lg-pager-active")})},c.prototype.destroy=function(){},a.fn.lightGallery.modules.pager=c}()}),function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(0,function(a){!function(){"use strict";var b={thumbnail:!0,animateThumb:!0,currentPagerPosition:"middle",thumbWidth:100,thumbHeight:"80px",thumbContHeight:100,thumbMargin:5,exThumbImage:!1,showThumbByDefault:!0,toogleThumb:!0,pullCaptionUp:!0,enableThumbDrag:!0,enableThumbSwipe:!0,swipeThreshold:50,loadYoutubeThumbnail:!0,youtubeThumbSize:1,loadVimeoThumbnail:!0,vimeoThumbSize:"thumbnail_small",loadDailymotionThumbnail:!0},c=function(c){return this.core=a(c).data("lightGallery"),this.core.s=a.extend({},b,this.core.s),this.$el=a(c),this.$thumbOuter=null,this.thumbOuterWidth=0,this.thumbTotalWidth=this.core.$items.length*(this.core.s.thumbWidth+this.core.s.thumbMargin),this.thumbIndex=this.core.index,this.core.s.animateThumb&&(this.core.s.thumbHeight="100%"),this.left=0,this.init(),this};c.prototype.init=function(){var a=this;this.core.s.thumbnail&&this.core.$items.length>1&&(this.core.s.showThumbByDefault&&setTimeout(function(){a.core.$outer.addClass("lg-thumb-open")},700),this.core.s.pullCaptionUp&&this.core.$outer.addClass("lg-pull-caption-up"),this.build(),this.core.s.animateThumb&&this.core.doCss()?(this.core.s.enableThumbDrag&&this.enableThumbDrag(),this.core.s.enableThumbSwipe&&this.enableThumbSwipe(),this.thumbClickable=!1):this.thumbClickable=!0,this.toogle(),this.thumbkeyPress())},c.prototype.build=function(){function b(a,b,c){var g,h=d.core.isVideo(a,c)||{},i="";h.youtube||h.vimeo||h.dailymotion?h.youtube?g=d.core.s.loadYoutubeThumbnail?"//img.youtube.com/vi/"+h.youtube[1]+"/"+d.core.s.youtubeThumbSize+".jpg":b:h.vimeo?d.core.s.loadVimeoThumbnail?(g="//i.vimeocdn.com/video/error_"+f+".jpg",i=h.vimeo[1]):g=b:h.dailymotion&&(g=d.core.s.loadDailymotionThumbnail?"//www.dailymotion.com/thumbnail/video/"+h.dailymotion[1]:b):g=b,e+='<div data-vimeo-id="'+i+'" class="lg-thumb-item" style="width:'+d.core.s.thumbWidth+"px; height: "+d.core.s.thumbHeight+"; margin-right: "+d.core.s.thumbMargin+'px"><img src="'+g+'" /></div>',i=""}var c,d=this,e="",f="",g='<div class="lg-thumb-outer"><div class="lg-thumb lg-group"></div></div>';switch(this.core.s.vimeoThumbSize){case"thumbnail_large":f="640";break;case"thumbnail_medium":f="200x150";break;case"thumbnail_small":f="100x75"}if(d.core.$outer.addClass("lg-has-thumb"),d.core.$outer.find(".lg").append(g),d.$thumbOuter=d.core.$outer.find(".lg-thumb-outer"),d.thumbOuterWidth=d.$thumbOuter.width(),d.core.s.animateThumb&&d.core.$outer.find(".lg-thumb").css({width:d.thumbTotalWidth+"px",position:"relative"}),this.core.s.animateThumb&&d.$thumbOuter.css("height",d.core.s.thumbContHeight+"px"),d.core.s.dynamic)for(var h=0;h<d.core.s.dynamicEl.length;h++)b(d.core.s.dynamicEl[h].src,d.core.s.dynamicEl[h].thumb,h);else d.core.$items.each(function(c){d.core.s.exThumbImage?b(a(this).attr("href")||a(this).attr("data-src"),a(this).attr(d.core.s.exThumbImage),c):b(a(this).attr("href")||a(this).attr("data-src"),a(this).find("img").attr("src"),c)});d.core.$outer.find(".lg-thumb").html(e),c=d.core.$outer.find(".lg-thumb-item"),c.each(function(){var b=a(this),c=b.attr("data-vimeo-id");c&&a.getJSON("//www.vimeo.com/api/v2/video/"+c+".json?callback=?",{format:"json"},function(a){b.find("img").attr("src",a[0][d.core.s.vimeoThumbSize])})}),c.eq(d.core.index).addClass("active"),d.core.$el.on("onBeforeSlide.lg.tm",function(){c.removeClass("active"),c.eq(d.core.index).addClass("active")}),c.on("click.lg touchend.lg",function(){var b=a(this);setTimeout(function(){(d.thumbClickable&&!d.core.lgBusy||!d.core.doCss())&&(d.core.index=b.index(),d.core.slide(d.core.index,!1,!0,!1))},50)}),d.core.$el.on("onBeforeSlide.lg.tm",function(){d.animateThumb(d.core.index)}),a(window).on("resize.lg.thumb orientationchange.lg.thumb",function(){setTimeout(function(){d.animateThumb(d.core.index),d.thumbOuterWidth=d.$thumbOuter.width()},200)})},c.prototype.setTranslate=function(a){this.core.$outer.find(".lg-thumb").css({transform:"translate3d(-"+a+"px, 0px, 0px)"})},c.prototype.animateThumb=function(a){var b=this.core.$outer.find(".lg-thumb");if(this.core.s.animateThumb){var c;switch(this.core.s.currentPagerPosition){case"left":c=0;break;case"middle":c=this.thumbOuterWidth/2-this.core.s.thumbWidth/2;break;case"right":c=this.thumbOuterWidth-this.core.s.thumbWidth}this.left=(this.core.s.thumbWidth+this.core.s.thumbMargin)*a-1-c,this.left>this.thumbTotalWidth-this.thumbOuterWidth&&(this.left=this.thumbTotalWidth-this.thumbOuterWidth),this.left<0&&(this.left=0),this.core.lGalleryOn?(b.hasClass("on")||this.core.$outer.find(".lg-thumb").css("transition-duration",this.core.s.speed+"ms"),this.core.doCss()||b.animate({left:-this.left+"px"},this.core.s.speed)):this.core.doCss()||b.css("left",-this.left+"px"),this.setTranslate(this.left)}},c.prototype.enableThumbDrag=function(){var b=this,c=0,d=0,e=!1,f=!1,g=0;b.$thumbOuter.addClass("lg-grab"),b.core.$outer.find(".lg-thumb").on("mousedown.lg.thumb",function(a){b.thumbTotalWidth>b.thumbOuterWidth&&(a.preventDefault(),c=a.pageX,e=!0,b.core.$outer.scrollLeft+=1,b.core.$outer.scrollLeft-=1,b.thumbClickable=!1,b.$thumbOuter.removeClass("lg-grab").addClass("lg-grabbing"))}),a(window).on("mousemove.lg.thumb",function(a){e&&(g=b.left,f=!0,d=a.pageX,b.$thumbOuter.addClass("lg-dragging"),g-=d-c,g>b.thumbTotalWidth-b.thumbOuterWidth&&(g=b.thumbTotalWidth-b.thumbOuterWidth),g<0&&(g=0),b.setTranslate(g))}),a(window).on("mouseup.lg.thumb",function(){f?(f=!1,b.$thumbOuter.removeClass("lg-dragging"),b.left=g,Math.abs(d-c)<b.core.s.swipeThreshold&&(b.thumbClickable=!0)):b.thumbClickable=!0,e&&(e=!1,b.$thumbOuter.removeClass("lg-grabbing").addClass("lg-grab"))})},c.prototype.enableThumbSwipe=function(){var a=this,b=0,c=0,d=!1,e=0;a.core.$outer.find(".lg-thumb").on("touchstart.lg",function(c){a.thumbTotalWidth>a.thumbOuterWidth&&(c.preventDefault(),b=c.originalEvent.targetTouches[0].pageX,a.thumbClickable=!1)}),a.core.$outer.find(".lg-thumb").on("touchmove.lg",function(f){a.thumbTotalWidth>a.thumbOuterWidth&&(f.preventDefault(),c=f.originalEvent.targetTouches[0].pageX,d=!0,a.$thumbOuter.addClass("lg-dragging"),e=a.left,e-=c-b,e>a.thumbTotalWidth-a.thumbOuterWidth&&(e=a.thumbTotalWidth-a.thumbOuterWidth),e<0&&(e=0),a.setTranslate(e))}),a.core.$outer.find(".lg-thumb").on("touchend.lg",function(){a.thumbTotalWidth>a.thumbOuterWidth&&d?(d=!1,a.$thumbOuter.removeClass("lg-dragging"),Math.abs(c-b)<a.core.s.swipeThreshold&&(a.thumbClickable=!0),a.left=e):a.thumbClickable=!0})},c.prototype.toogle=function(){var a=this;a.core.s.toogleThumb&&(a.core.$outer.addClass("lg-can-toggle"),a.$thumbOuter.append('<span class="lg-toogle-thumb lg-icon"></span>'),a.core.$outer.find(".lg-toogle-thumb").on("click.lg",function(){a.core.$outer.toggleClass("lg-thumb-open")}))},c.prototype.thumbkeyPress=function(){var b=this;a(window).on("keydown.lg.thumb",function(a){38===a.keyCode?(a.preventDefault(),b.core.$outer.addClass("lg-thumb-open")):40===a.keyCode&&(a.preventDefault(),b.core.$outer.removeClass("lg-thumb-open"))})},c.prototype.destroy=function(){
this.core.s.thumbnail&&this.core.$items.length>1&&(a(window).off("resize.lg.thumb orientationchange.lg.thumb keydown.lg.thumb"),this.$thumbOuter.remove(),this.core.$outer.removeClass("lg-has-thumb"))},a.fn.lightGallery.modules.Thumbnail=c}()}),function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof module&&module.exports?module.exports=b(require("jquery")):b(a.jQuery)}(this,function(a){!function(){"use strict";function b(a,b,c,d){var e=this;if(e.core.$slide.eq(b).find(".lg-video").append(e.loadVideo(c,"lg-object",!0,b,d)),d)if(e.core.s.videojs)try{videojs(e.core.$slide.eq(b).find(".lg-html5").get(0),e.core.s.videojsOptions,function(){!e.videoLoaded&&e.core.s.autoplayFirstVideo&&this.play()})}catch(a){console.error("Make sure you have included videojs")}else!e.videoLoaded&&e.core.s.autoplayFirstVideo&&e.core.$slide.eq(b).find(".lg-html5").get(0).play()}function c(a,b){var c=this.core.$slide.eq(b).find(".lg-video-cont");c.hasClass("lg-has-iframe")||(c.css("max-width",this.core.s.videoMaxWidth),this.videoLoaded=!0)}function d(b,c,d){var e=this,f=e.core.$slide.eq(c),g=f.find(".lg-youtube").get(0),h=f.find(".lg-vimeo").get(0),i=f.find(".lg-dailymotion").get(0),j=f.find(".lg-vk").get(0),k=f.find(".lg-html5").get(0);if(g)g.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}',"*");else if(h)try{$f(h).api("pause")}catch(a){console.error("Make sure you have included froogaloop2 js")}else if(i)i.contentWindow.postMessage("pause","*");else if(k)if(e.core.s.videojs)try{videojs(k).pause()}catch(a){console.error("Make sure you have included videojs")}else k.pause();j&&a(j).attr("src",a(j).attr("src").replace("&autoplay","&noplay"));var l;l=e.core.s.dynamic?e.core.s.dynamicEl[d].src:e.core.$items.eq(d).attr("href")||e.core.$items.eq(d).attr("data-src");var m=e.core.isVideo(l,d)||{};(m.youtube||m.vimeo||m.dailymotion||m.vk)&&e.core.$outer.addClass("lg-hide-download")}var e={videoMaxWidth:"855px",autoplayFirstVideo:!0,youtubePlayerParams:!1,vimeoPlayerParams:!1,dailymotionPlayerParams:!1,vkPlayerParams:!1,videojs:!1,videojsOptions:{}},f=function(b){return this.core=a(b).data("lightGallery"),this.$el=a(b),this.core.s=a.extend({},e,this.core.s),this.videoLoaded=!1,this.init(),this};f.prototype.init=function(){var e=this;e.core.$el.on("hasVideo.lg.tm",b.bind(this)),e.core.$el.on("onAferAppendSlide.lg.tm",c.bind(this)),e.core.doCss()&&e.core.$items.length>1&&(e.core.s.enableSwipe||e.core.s.enableDrag)?e.core.$el.on("onSlideClick.lg.tm",function(){var a=e.core.$slide.eq(e.core.index);e.loadVideoOnclick(a)}):e.core.$slide.on("click.lg",function(){e.loadVideoOnclick(a(this))}),e.core.$el.on("onBeforeSlide.lg.tm",d.bind(this)),e.core.$el.on("onAfterSlide.lg.tm",function(a,b){e.core.$slide.eq(b).removeClass("lg-video-playing")}),e.core.s.autoplayFirstVideo&&e.core.$el.on("onAferAppendSlide.lg.tm",function(a,b){if(!e.core.lGalleryOn){var c=e.core.$slide.eq(b);setTimeout(function(){e.loadVideoOnclick(c)},100)}})},f.prototype.loadVideo=function(b,c,d,e,f){var g="",h=1,i="",j=this.core.isVideo(b,e)||{};if(d&&(h=this.videoLoaded?0:this.core.s.autoplayFirstVideo?1:0),j.youtube)i="?wmode=opaque&autoplay="+h+"&enablejsapi=1",this.core.s.youtubePlayerParams&&(i=i+"&"+a.param(this.core.s.youtubePlayerParams)),g='<iframe class="lg-video-object lg-youtube '+c+'" width="560" height="315" src="//www.youtube.com/embed/'+j.youtube[1]+i+'" frameborder="0" allowfullscreen></iframe>';else if(j.vimeo)i="?autoplay="+h+"&api=1",this.core.s.vimeoPlayerParams&&(i=i+"&"+a.param(this.core.s.vimeoPlayerParams)),g='<iframe class="lg-video-object lg-vimeo '+c+'" width="560" height="315"  src="//player.vimeo.com/video/'+j.vimeo[1]+i+'" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';else if(j.dailymotion)i="?wmode=opaque&autoplay="+h+"&api=postMessage",this.core.s.dailymotionPlayerParams&&(i=i+"&"+a.param(this.core.s.dailymotionPlayerParams)),g='<iframe class="lg-video-object lg-dailymotion '+c+'" width="560" height="315" src="//www.dailymotion.com/embed/video/'+j.dailymotion[1]+i+'" frameborder="0" allowfullscreen></iframe>';else if(j.html5){var k=f.substring(0,1);"."!==k&&"#"!==k||(f=a(f).html()),g=f}else j.vk&&(i="&autoplay="+h,this.core.s.vkPlayerParams&&(i=i+"&"+a.param(this.core.s.vkPlayerParams)),g='<iframe class="lg-video-object lg-vk '+c+'" width="560" height="315" src="//vk.com/video_ext.php?'+j.vk[1]+i+'" frameborder="0" allowfullscreen></iframe>');return g},f.prototype.loadVideoOnclick=function(a){var b=this;if(a.find(".lg-object").hasClass("lg-has-poster")&&a.find(".lg-object").is(":visible"))if(a.hasClass("lg-has-video")){var c=a.find(".lg-youtube").get(0),d=a.find(".lg-vimeo").get(0),e=a.find(".lg-dailymotion").get(0),f=a.find(".lg-html5").get(0);if(c)c.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}',"*");else if(d)try{$f(d).api("play")}catch(a){console.error("Make sure you have included froogaloop2 js")}else if(e)e.contentWindow.postMessage("play","*");else if(f)if(b.core.s.videojs)try{videojs(f).play()}catch(a){console.error("Make sure you have included videojs")}else f.play();a.addClass("lg-video-playing")}else{a.addClass("lg-video-playing lg-has-video");var g,h,i=function(c,d){if(a.find(".lg-video").append(b.loadVideo(c,"",!1,b.core.index,d)),d)if(b.core.s.videojs)try{videojs(b.core.$slide.eq(b.core.index).find(".lg-html5").get(0),b.core.s.videojsOptions,function(){this.play()})}catch(a){console.error("Make sure you have included videojs")}else b.core.$slide.eq(b.core.index).find(".lg-html5").get(0).play()};b.core.s.dynamic?(g=b.core.s.dynamicEl[b.core.index].src,h=b.core.s.dynamicEl[b.core.index].html,i(g,h)):(g=b.core.$items.eq(b.core.index).attr("href")||b.core.$items.eq(b.core.index).attr("data-src"),h=b.core.$items.eq(b.core.index).attr("data-html"),i(g,h));var j=a.find(".lg-object");a.find(".lg-video").append(j),a.find(".lg-video-object").hasClass("lg-html5")||(a.removeClass("lg-complete"),a.find(".lg-video-object").on("load.lg error.lg",function(){a.addClass("lg-complete")}))}},f.prototype.destroy=function(){this.videoLoaded=!1},a.fn.lightGallery.modules.video=f}()}),function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(0,function(a){!function(){"use strict";var b=function(){var a=!1,b=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);return b&&parseInt(b[2],10)<54&&(a=!0),a},c={scale:1,zoom:!0,actualSize:!0,enableZoomAfter:300,useLeftForZoom:b()},d=function(b){return this.core=a(b).data("lightGallery"),this.core.s=a.extend({},c,this.core.s),this.core.s.zoom&&this.core.doCss()&&(this.init(),this.zoomabletimeout=!1,this.pageX=a(window).width()/2,this.pageY=a(window).height()/2+a(window).scrollTop()),this};d.prototype.init=function(){var b=this,c='<span id="lg-zoom-in" class="lg-icon"></span><span id="lg-zoom-out" class="lg-icon"></span>';b.core.s.actualSize&&(c+='<span id="lg-actual-size" class="lg-icon"></span>'),b.core.s.useLeftForZoom?b.core.$outer.addClass("lg-use-left-for-zoom"):b.core.$outer.addClass("lg-use-transition-for-zoom"),this.core.$outer.find(".lg-toolbar").append(c),b.core.$el.on("onSlideItemLoad.lg.tm.zoom",function(c,d,e){var f=b.core.s.enableZoomAfter+e;a("body").hasClass("lg-from-hash")&&e?f=0:a("body").removeClass("lg-from-hash"),b.zoomabletimeout=setTimeout(function(){b.core.$slide.eq(d).addClass("lg-zoomable")},f+30)});var d=1,e=function(c){var d,e,f=b.core.$outer.find(".lg-current .lg-image"),g=(a(window).width()-f.prop("offsetWidth"))/2,h=(a(window).height()-f.prop("offsetHeight"))/2+a(window).scrollTop();d=b.pageX-g,e=b.pageY-h;var i=(c-1)*d,j=(c-1)*e;f.css("transform","scale3d("+c+", "+c+", 1)").attr("data-scale",c),b.core.s.useLeftForZoom?f.parent().css({left:-i+"px",top:-j+"px"}).attr("data-x",i).attr("data-y",j):f.parent().css("transform","translate3d(-"+i+"px, -"+j+"px, 0)").attr("data-x",i).attr("data-y",j)},f=function(){d>1?b.core.$outer.addClass("lg-zoomed"):b.resetZoom(),d<1&&(d=1),e(d)},g=function(c,e,g,h){var i,j=e.prop("offsetWidth");i=b.core.s.dynamic?b.core.s.dynamicEl[g].width||e[0].naturalWidth||j:b.core.$items.eq(g).attr("data-width")||e[0].naturalWidth||j;var k;b.core.$outer.hasClass("lg-zoomed")?d=1:i>j&&(k=i/j,d=k||2),h?(b.pageX=a(window).width()/2,b.pageY=a(window).height()/2+a(window).scrollTop()):(b.pageX=c.pageX||c.originalEvent.targetTouches[0].pageX,b.pageY=c.pageY||c.originalEvent.targetTouches[0].pageY),f(),setTimeout(function(){b.core.$outer.removeClass("lg-grabbing").addClass("lg-grab")},10)},h=!1;b.core.$el.on("onAferAppendSlide.lg.tm.zoom",function(a,c){var d=b.core.$slide.eq(c).find(".lg-image");d.on("dblclick",function(a){g(a,d,c)}),d.on("touchstart",function(a){h?(clearTimeout(h),h=null,g(a,d,c)):h=setTimeout(function(){h=null},300),a.preventDefault()})}),a(window).on("resize.lg.zoom scroll.lg.zoom orientationchange.lg.zoom",function(){b.pageX=a(window).width()/2,b.pageY=a(window).height()/2+a(window).scrollTop(),e(d)}),a("#lg-zoom-out").on("click.lg",function(){b.core.$outer.find(".lg-current .lg-image").length&&(d-=b.core.s.scale,f())}),a("#lg-zoom-in").on("click.lg",function(){b.core.$outer.find(".lg-current .lg-image").length&&(d+=b.core.s.scale,f())}),a("#lg-actual-size").on("click.lg",function(a){g(a,b.core.$slide.eq(b.core.index).find(".lg-image"),b.core.index,!0)}),b.core.$el.on("onBeforeSlide.lg.tm",function(){d=1,b.resetZoom()}),b.zoomDrag(),b.zoomSwipe()},d.prototype.resetZoom=function(){this.core.$outer.removeClass("lg-zoomed"),this.core.$slide.find(".lg-img-wrap").removeAttr("style data-x data-y"),this.core.$slide.find(".lg-image").removeAttr("style data-scale"),this.pageX=a(window).width()/2,this.pageY=a(window).height()/2+a(window).scrollTop()},d.prototype.zoomSwipe=function(){var a=this,b={},c={},d=!1,e=!1,f=!1;a.core.$slide.on("touchstart.lg",function(c){if(a.core.$outer.hasClass("lg-zoomed")){var d=a.core.$slide.eq(a.core.index).find(".lg-object");f=d.prop("offsetHeight")*d.attr("data-scale")>a.core.$outer.find(".lg").height(),e=d.prop("offsetWidth")*d.attr("data-scale")>a.core.$outer.find(".lg").width(),(e||f)&&(c.preventDefault(),b={x:c.originalEvent.targetTouches[0].pageX,y:c.originalEvent.targetTouches[0].pageY})}}),a.core.$slide.on("touchmove.lg",function(g){if(a.core.$outer.hasClass("lg-zoomed")){var h,i,j=a.core.$slide.eq(a.core.index).find(".lg-img-wrap");g.preventDefault(),d=!0,c={x:g.originalEvent.targetTouches[0].pageX,y:g.originalEvent.targetTouches[0].pageY},a.core.$outer.addClass("lg-zoom-dragging"),i=f?-Math.abs(j.attr("data-y"))+(c.y-b.y):-Math.abs(j.attr("data-y")),h=e?-Math.abs(j.attr("data-x"))+(c.x-b.x):-Math.abs(j.attr("data-x")),(Math.abs(c.x-b.x)>15||Math.abs(c.y-b.y)>15)&&(a.core.s.useLeftForZoom?j.css({left:h+"px",top:i+"px"}):j.css("transform","translate3d("+h+"px, "+i+"px, 0)"))}}),a.core.$slide.on("touchend.lg",function(){a.core.$outer.hasClass("lg-zoomed")&&d&&(d=!1,a.core.$outer.removeClass("lg-zoom-dragging"),a.touchendZoom(b,c,e,f))})},d.prototype.zoomDrag=function(){var b=this,c={},d={},e=!1,f=!1,g=!1,h=!1;b.core.$slide.on("mousedown.lg.zoom",function(d){var f=b.core.$slide.eq(b.core.index).find(".lg-object");h=f.prop("offsetHeight")*f.attr("data-scale")>b.core.$outer.find(".lg").height(),g=f.prop("offsetWidth")*f.attr("data-scale")>b.core.$outer.find(".lg").width(),b.core.$outer.hasClass("lg-zoomed")&&a(d.target).hasClass("lg-object")&&(g||h)&&(d.preventDefault(),c={x:d.pageX,y:d.pageY},e=!0,b.core.$outer.scrollLeft+=1,b.core.$outer.scrollLeft-=1,b.core.$outer.removeClass("lg-grab").addClass("lg-grabbing"))}),a(window).on("mousemove.lg.zoom",function(a){if(e){var i,j,k=b.core.$slide.eq(b.core.index).find(".lg-img-wrap");f=!0,d={x:a.pageX,y:a.pageY},b.core.$outer.addClass("lg-zoom-dragging"),j=h?-Math.abs(k.attr("data-y"))+(d.y-c.y):-Math.abs(k.attr("data-y")),i=g?-Math.abs(k.attr("data-x"))+(d.x-c.x):-Math.abs(k.attr("data-x")),b.core.s.useLeftForZoom?k.css({left:i+"px",top:j+"px"}):k.css("transform","translate3d("+i+"px, "+j+"px, 0)")}}),a(window).on("mouseup.lg.zoom",function(a){e&&(e=!1,b.core.$outer.removeClass("lg-zoom-dragging"),!f||c.x===d.x&&c.y===d.y||(d={x:a.pageX,y:a.pageY},b.touchendZoom(c,d,g,h)),f=!1),b.core.$outer.removeClass("lg-grabbing").addClass("lg-grab")})},d.prototype.touchendZoom=function(a,b,c,d){var e=this,f=e.core.$slide.eq(e.core.index).find(".lg-img-wrap"),g=e.core.$slide.eq(e.core.index).find(".lg-object"),h=-Math.abs(f.attr("data-x"))+(b.x-a.x),i=-Math.abs(f.attr("data-y"))+(b.y-a.y),j=(e.core.$outer.find(".lg").height()-g.prop("offsetHeight"))/2,k=Math.abs(g.prop("offsetHeight")*Math.abs(g.attr("data-scale"))-e.core.$outer.find(".lg").height()+j),l=(e.core.$outer.find(".lg").width()-g.prop("offsetWidth"))/2,m=Math.abs(g.prop("offsetWidth")*Math.abs(g.attr("data-scale"))-e.core.$outer.find(".lg").width()+l);(Math.abs(b.x-a.x)>15||Math.abs(b.y-a.y)>15)&&(d&&(i<=-k?i=-k:i>=-j&&(i=-j)),c&&(h<=-m?h=-m:h>=-l&&(h=-l)),d?f.attr("data-y",Math.abs(i)):i=-Math.abs(f.attr("data-y")),c?f.attr("data-x",Math.abs(h)):h=-Math.abs(f.attr("data-x")),e.core.s.useLeftForZoom?f.css({left:h+"px",top:i+"px"}):f.css("transform","translate3d("+h+"px, "+i+"px, 0)"))},d.prototype.destroy=function(){var b=this;b.core.$el.off(".lg.zoom"),a(window).off(".lg.zoom"),b.core.$slide.off(".lg.zoom"),b.core.$el.off(".lg.tm.zoom"),b.resetZoom(),clearTimeout(b.zoomabletimeout),b.zoomabletimeout=!1},a.fn.lightGallery.modules.zoom=d}()}),function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(0,function(a){!function(){"use strict";var b={hash:!0},c=function(c){return this.core=a(c).data("lightGallery"),this.core.s=a.extend({},b,this.core.s),this.core.s.hash&&(this.oldHash=window.location.hash,this.init()),this};c.prototype.init=function(){var b,c=this;c.core.$el.on("onAfterSlide.lg.tm",function(a,b,d){history.replaceState?history.replaceState(null,null,window.location.pathname+window.location.search+"#lg="+c.core.s.galleryId+"&slide="+d):window.location.hash="lg="+c.core.s.galleryId+"&slide="+d}),a(window).on("hashchange.lg.hash",function(){b=window.location.hash;var a=parseInt(b.split("&slide=")[1],10);b.indexOf("lg="+c.core.s.galleryId)>-1?c.core.slide(a,!1,!1):c.core.lGalleryOn&&c.core.destroy()})},c.prototype.destroy=function(){this.core.s.hash&&(this.oldHash&&this.oldHash.indexOf("lg="+this.core.s.galleryId)<0?history.replaceState?history.replaceState(null,null,this.oldHash):window.location.hash=this.oldHash:history.replaceState?history.replaceState(null,document.title,window.location.pathname+window.location.search):window.location.hash="",this.core.$el.off(".lg.hash"))},a.fn.lightGallery.modules.hash=c}()}),function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(0,function(a){!function(){"use strict";var b={share:!0,facebook:!0,facebookDropdownText:"Facebook",twitter:!0,twitterDropdownText:"Twitter",googlePlus:!0,googlePlusDropdownText:"GooglePlus",pinterest:!0,pinterestDropdownText:"Pinterest"},c=function(c){return this.core=a(c).data("lightGallery"),this.core.s=a.extend({},b,this.core.s),this.core.s.share&&this.init(),this};c.prototype.init=function(){var b=this,c='<span id="lg-share" class="lg-icon"><ul class="lg-dropdown" style="position: absolute;">';c+=b.core.s.facebook?'<li><a id="lg-share-facebook" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">'+this.core.s.facebookDropdownText+"</span></a></li>":"",c+=b.core.s.twitter?'<li><a id="lg-share-twitter" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">'+this.core.s.twitterDropdownText+"</span></a></li>":"",c+=b.core.s.googlePlus?'<li><a id="lg-share-googleplus" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">'+this.core.s.googlePlusDropdownText+"</span></a></li>":"",c+=b.core.s.pinterest?'<li><a id="lg-share-pinterest" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">'+this.core.s.pinterestDropdownText+"</span></a></li>":"",c+="</ul></span>",this.core.$outer.find(".lg-toolbar").append(c),this.core.$outer.find(".lg").append('<div id="lg-dropdown-overlay"></div>'),a("#lg-share").on("click.lg",function(){b.core.$outer.toggleClass("lg-dropdown-active")}),a("#lg-dropdown-overlay").on("click.lg",function(){b.core.$outer.removeClass("lg-dropdown-active")}),b.core.$el.on("onAfterSlide.lg.tm",function(c,d,e){setTimeout(function(){a("#lg-share-facebook").attr("href","https://www.facebook.com/sharer/sharer.php?u="+encodeURIComponent(b.getSahreProps(e,"facebookShareUrl")||window.location.href)),a("#lg-share-twitter").attr("href","https://twitter.com/intent/tweet?text="+b.getSahreProps(e,"tweetText")+"&url="+encodeURIComponent(b.getSahreProps(e,"twitterShareUrl")||window.location.href)),a("#lg-share-googleplus").attr("href","https://plus.google.com/share?url="+encodeURIComponent(b.getSahreProps(e,"googleplusShareUrl")||window.location.href)),a("#lg-share-pinterest").attr("href","http://www.pinterest.com/pin/create/button/?url="+encodeURIComponent(b.getSahreProps(e,"pinterestShareUrl")||window.location.href)+"&media="+encodeURIComponent(b.getSahreProps(e,"src"))+"&description="+b.getSahreProps(e,"pinterestText"))},100)})},c.prototype.getSahreProps=function(a,b){var c="";if(this.core.s.dynamic)c=this.core.s.dynamicEl[a][b];else{var d=this.core.$items.eq(a).attr("href"),e=this.core.$items.eq(a).data(b);c="src"===b?d||e:e}return c},c.prototype.destroy=function(){},a.fn.lightGallery.modules.share=c}()});
(function (){
if(!window.BDMChatPages) window.BDMChatPages={};
var LS_USER="bdm_chat_user";
function getUser(){
try {
var raw=localStorage.getItem(LS_USER);
return raw ? JSON.parse(raw):null;
} catch (e){ return null; }}
function setUser(u){
try { localStorage.setItem(LS_USER, JSON.stringify(u||{})); } catch (e){}}
function clearUser(){
try { localStorage.removeItem(LS_USER); } catch (e){}}
function getWidgetSessionToken(){
var u=getUser();
return u&&u.session_token ? String(u.session_token):"";
}
window.BDMChatPages.getWidgetAuthHeaders=function (){
var token=getWidgetSessionToken();
if(!token) return {};
var h={};
h["X-BDM-Widget-Session"]=token;
return h;
};
window.BDMChatPages.mergeWidgetAuthHeaders=function (headers){
var base=headers&&typeof headers==="object" ? Object.assign({}, headers):{};
var auth=window.BDMChatPages.getWidgetAuthHeaders();
Object.keys(auth).forEach(function (k){
base[k]=auth[k];
});
return base;
};
function applySessionTokenFromApi(u, apiJson){
if(!u||!apiJson||typeof apiJson!=="object") return u;
if(apiJson.session_token){
u.session_token=String(apiJson.session_token);
}
return u;
}
function normalizeDigits(v){
return String(v||"").replace(/[^\d]/g, "");
}
function usuarioIdFromLoginPayload(p){
if(!p||typeof p!=="object"||p._parseError) return 0;
var tryParse=function (v){
var n=parseInt(String(v==null ? "":v), 10);
return n > 0 ? n:0;
};
var id=tryParse(p.id);
if(id) return id;
id=tryParse(p.id_usuario);
if(id) return id;
id=tryParse(p.idUsuario);
if(id) return id;
id=tryParse(p.id_cliente);
if(id) return id;
id=tryParse(p.cliente_id);
if(id) return id;
if(p.usuario&&typeof p.usuario==="object"){
id=tryParse(p.usuario.id);
if(id) return id;
}
if(p.cliente&&typeof p.cliente==="object"){
id=tryParse(p.cliente.id);
if(id) return id;
}
if(p.data&&typeof p.data==="object"){
if(!Array.isArray(p.data)){
id=usuarioIdFromLoginPayload(p.data);
if(id) return id;
}else if(p.data.length&&p.data[0]&&typeof p.data[0]==="object"){
id=usuarioIdFromLoginPayload(p.data[0]);
if(id) return id;
}}
return 0;
}
function loginPainelResultIsOk(j){
if(!j||typeof j!=="object") return false;
return String(j.result==null ? "":j.result).trim().toUpperCase()==="OK";
}
window.BDMChatPages.isPanelResultOk=function (j, allowUserFallback){
if(!j) return false;
var o=j;
if(Array.isArray(o)&&o[0]&&typeof o[0]==="object") o=o[0];
if(!o||typeof o!=="object") return false;
if(o.erro!=null&&String(o.erro).trim()!=="") return false;
var r=String(o.result==null ? "":o.result).trim().toLowerCase();
if(r==="ok"||r==="1"||r==="true"||r==="sucesso") return true;
if(r==="error"||r==="505") return false;
var s=String(o.sucesso==null ? "":o.sucesso).trim().toLowerCase();
if(s==="s"||s==="sim"||s==="ok"||s==="1"||s==="true") return true;
if(o.success===true||o.success===1) return true;
if(!allowUserFallback) return false;
return !!(o.id||o.id_usuario||o.idUsuario||o.id_cliente);
};
function loginPainelMensagemErro(j){
if(!j||typeof j!=="object") return "Falha ao entrar.";
var m=j.erro!=null ? j.erro:j.mensagem!=null ? j.mensagem:j.message;
m=String(m==null ? "":m).trim();
return m||"Credenciais inválidas.";
}
function setAuthFormLoading(ctx, form, on, message){
if(!form) return;
message=message||"Verificando os dados…";
var slot=form.querySelector(".bdm-auth-feedback");
if(!slot){
var submit=form.querySelector(".bdm-auth-cta.-primary");
if(!submit||!submit.parentNode) return;
slot=document.createElement("div");
slot.className="bdm-auth-feedback";
slot.setAttribute("aria-live", "polite");
submit.parentNode.insertBefore(slot, submit.nextSibling);
}
var sub=form.querySelector(".bdm-auth-cta.-primary");
var out=form.querySelector(".bdm-auth-cta.-outline");
var eyes=form.querySelectorAll(".bdm-auth-eye");
var inputs=form.querySelectorAll("input");
if(on){
form.setAttribute("aria-busy", "true");
for (var i=0; i < inputs.length; i++) inputs[i].disabled=true;
for (var e=0; e < eyes.length; e++) eyes[e].disabled=true;
if(sub) sub.disabled=true;
if(out) out.disabled=true;
slot.innerHTML="";
var wrap=ctx.el("div", { class: "bdm-auth-form-loading" });
wrap.appendChild(ctx.el("i", { class: "bdm-fa fa-solid fa-circle-notch fa-spin", "aria-hidden": "true" }));
wrap.appendChild(ctx.el("span", { text: message }));
slot.appendChild(wrap);
}else{
form.removeAttribute("aria-busy");
for (var j=0; j < inputs.length; j++) inputs[j].disabled=false;
for (var g=0; g < eyes.length; g++) eyes[g].disabled=false;
if(sub) sub.disabled=false;
if(out) out.disabled=false;
var slotOff=form.querySelector(".bdm-auth-feedback");
if(slotOff){
var loadEl=slotOff.querySelector(".bdm-auth-form-loading");
if(loadEl&&loadEl.parentNode) loadEl.parentNode.removeChild(loadEl);
}}
}
function cadastroRespostaValida(j){
if(!j||typeof j!=="object"||j._parseError) return false;
return String(j.result==null ? "":j.result).trim().toUpperCase()==="OK";
}
function cadastroMensagemErro(j){
if(!j||typeof j!=="object") return "Falha ao cadastrar.";
var r=String(j.result==null ? "":j.result).trim();
if(r==="505"){
return "Este e-mail já está cadastrado. Faça login ou use outro e-mail.";
}
if(r.toLowerCase()==="error"){
return "Não foi possível concluir o cadastro. Tente novamente mais tarde.";
}
var m=j.erro!=null ? j.erro:j.mensagem!=null ? j.mensagem:j.message;
m=String(m==null ? "":m).trim();
return m||"Falha ao cadastrar.";
}
function showAuthFormFeedback(ctx, form, message, isError){
if(!form||!message) return;
var slot=form.querySelector(".bdm-auth-feedback");
if(!slot){
var submit=form.querySelector(".bdm-auth-cta.-primary");
if(!submit||!submit.parentNode) return;
slot=document.createElement("div");
slot.className="bdm-auth-feedback";
slot.setAttribute("aria-live", "polite");
submit.parentNode.insertBefore(slot, submit.nextSibling);
}
slot.innerHTML="";
var div=ctx.el("div", {
class: "bdm-auth-form-message" + (isError ? " bdm-auth-form-message--error":""),
text: String(message)
});
slot.appendChild(div);
}
window.BDMChatPages.authLanding=function (ctx, motel){
ctx.state.currentView="authLanding";
ctx.loadTemplate("auth-landing").then(function (html){
var node=ctx.htmlToNode(html);
ctx.applyBinds(node, { motel: motel||{}});
ctx.wireActions(node);
ctx.body.innerHTML="";
ctx.body.appendChild(node);
}).catch(function (){
ctx.body.textContent="Falha ao carregar.";
});
};
window.BDMChatPages.authLogin=function (ctx, motel){
ctx.state.currentView="authLogin";
ctx.loadTemplate("auth-login").then(function (html){
var node=ctx.htmlToNode(html);
ctx.applyBinds(node, { motel: motel||{}});
ctx.wireActions(node);
ctx.body.innerHTML="";
ctx.body.appendChild(node);
}).catch(function (){
ctx.body.textContent="Falha ao carregar.";
});
};
window.BDMChatPages.authRegister=function (ctx, motel){
ctx.state.currentView="authRegister";
ctx.loadTemplate("auth-register").then(function (html){
var node=ctx.htmlToNode(html);
ctx.applyBinds(node, { motel: motel||{}});
ctx.wireActions(node);
ctx.body.innerHTML="";
ctx.body.appendChild(node);
}).catch(function (){
ctx.body.textContent="Falha ao carregar.";
});
};
window.BDMChatPages.authSubmitLogin=function (ctx, form){
var email=String(form.email&&form.email.value||"").trim().toLowerCase();
var senha=String(form.senha&&form.senha.value||"").trim();
var feedbackSlot=form&&form.querySelector ? form.querySelector(".bdm-auth-feedback"):null;
if(feedbackSlot) feedbackSlot.innerHTML="";
setAuthFormLoading(ctx, form, true, "Verificando login…");
console.log("[BDM login] POST", ctx.urls.login, { email: email, senhaLength: senha.length });
fetch(ctx.urls.login, {
method: "POST",
credentials: "same-origin",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ email: email, senha: senha })
})
.then(function (r){
return r.text().then(function (text){
console.log("[BDM login] resposta bruta (login via REST → painel login.php)", {
status: r.status,
ok: r.ok,
contentType: r.headers.get("content-type"),
corpo: text
});
var j={};
if(text){
try {
j=JSON.parse(text);
} catch (e){
console.log("[BDM login] corpo não é JSON válido", e);
j={ _parseError: String(e), _raw: text };}}
return { status: r.status, json: j };});
})
.then(function (res){
var j=res.json||{};
console.log("[BDM login] objeto interpretado", j);
if(res.status < 200||res.status >=300){
showAuthFormFeedback(ctx, form, loginPainelMensagemErro(j), true);
return;
}
if(!loginPainelResultIsOk(j)||usuarioIdFromLoginPayload(j) <=0){
showAuthFormFeedback(ctx, form, loginPainelMensagemErro(j), true);
return;
}
var nomeLogin="";
if(j&&typeof j==="object"){
nomeLogin=String(j.nome||(j.cliente&&j.cliente.nome)||(j.usuario&&j.usuario.nome)||"").trim();
}
setUser(applySessionTokenFromApi({
logged: true,
payload: j,
email: email,
nome: nomeLogin||undefined
}, j));
ctx.navigate("home");
})
.catch(function (){
showAuthFormFeedback(ctx, form, "Falha ao entrar.", true);
})
.finally(function (){
setAuthFormLoading(ctx, form, false);
});
};
window.BDMChatPages.authSubmitRegister=function (ctx, form){
var nome=String(form.nome&&form.nome.value||"").trim();
var email=String(form.email&&form.email.value||"").trim().toLowerCase();
var cpf=normalizeDigits(form.cpf&&form.cpf.value||"");
var telefone=String(form.telefone&&form.telefone.value||"").trim();
var senha=String(form.senha&&form.senha.value||"").trim();
if(cpf.length!==11){
showAuthFormFeedback(ctx, form, "CPF inválido (precisa ter 11 dígitos).", true);
return;
}
if(senha.length < 6){
showAuthFormFeedback(ctx, form, "Senha muito curta (mín. 6 caracteres).", true);
return;
}
var regFeedback=form&&form.querySelector ? form.querySelector(".bdm-auth-feedback"):null;
if(regFeedback) regFeedback.innerHTML="";
setAuthFormLoading(ctx, form, true, "Verificando cadastro…");
fetch(ctx.urls.cadastro, {
method: "POST",
credentials: "same-origin",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ nome: nome, email: email, cpf: cpf, telefone: telefone, senha: senha })
})
.then(function (r){
return r.text().then(function (text){
var j={};
if(text){
try {
j=JSON.parse(text);
} catch (e){
j={ _parseError: String(e), _raw: text };}}
return { status: r.status, json: j };});
})
.then(function (res){
var j=res.json||{};
if(res.status < 200||res.status >=300){
showAuthFormFeedback(ctx, form, cadastroMensagemErro(j), true);
return;
}
if(!cadastroRespostaValida(j)){
showAuthFormFeedback(ctx, form, cadastroMensagemErro(j), true);
return;
}
setUser(applySessionTokenFromApi({
logged: true,
payload: j,
email: email,
nome: nome,
cpf: cpf,
telefone: telefone
}, j));
ctx.navigate("home");
})
.catch(function (){
showAuthFormFeedback(ctx, form, "Falha ao cadastrar.", true);
})
.finally(function (){
setAuthFormLoading(ctx, form, false);
});
};
window.BDMChatPages.getUserRecord=function (){
return getUser();
};
window.BDMChatPages.isLogged=function (){
var u=getUser();
return !!(u&&u.logged);
};
window.BDMChatPages.saveUserProfile=function (fields){
var u=getUser();
if(!u||!u.logged) return false;
var f=fields||{};
if(f.nome!=null) u.nome=String(f.nome).trim();
if(f.telefone!=null) u.telefone=String(f.telefone).trim();
if(f.cpf!=null) u.cpf=normalizeDigits(f.cpf);
u.profile=u.profile&&typeof u.profile==="object" ? u.profile:{};
if(f.endereco!=null) u.profile.endereco=String(f.endereco).trim();
if(f.cidade!=null) u.profile.cidade=String(f.cidade).trim();
if(f.uf!=null) u.profile.uf=String(f.uf).trim().slice(0, 2).toUpperCase();
if(f.cep!=null) u.profile.cep=String(f.cep).trim();
if(f.numero!=null) u.profile.numero=String(f.numero).trim();
if(f.bairro!=null) u.profile.bairro=String(f.bairro).trim();
setUser(u);
return true;
};
window.BDMChatPages.applyUserApiResponse=function (serverUser){
if(!serverUser||typeof serverUser!=="object") return false;
var u=getUser();
if(!u||!u.logged) return false;
var copy={};
Object.keys(serverUser).forEach(function (k){
if(k==="senha"||k==="result") return;
copy[k]=serverUser[k];
});
if(copy.nome!=null) u.nome=String(copy.nome).trim();
if(copy.telefone!=null) u.telefone=String(copy.telefone).trim();
if(copy.cpf!=null) u.cpf=normalizeDigits(copy.cpf);
if(copy.email!=null&&!u.email) u.email=String(copy.email).trim();
u.profile=u.profile&&typeof u.profile==="object" ? u.profile:{};
if(copy.endereco!=null) u.profile.endereco=String(copy.endereco).trim();
if(copy.numero!=null) u.profile.numero=String(copy.numero).trim();
if(copy.bairro!=null) u.profile.bairro=String(copy.bairro).trim();
if(copy.cidade!=null) u.profile.cidade=String(copy.cidade).trim();
if(copy.estado!=null) u.profile.uf=String(copy.estado).trim().slice(0, 2).toUpperCase();
if(copy.cep!=null) u.profile.cep=String(copy.cep).trim();
u.payload=Object.assign({}, u.payload||{}, copy);
setUser(u);
return true;
};
window.BDMChatPages.getUsuarioId=function (){
var u=getUser();
if(!u||!u.payload||typeof u.payload!=="object") return 0;
return usuarioIdFromLoginPayload(u.payload);
};
window.BDMChatPages.logout=function (){
clearUser();
};})();
(function (){
if(!window.BDMChatPages) window.BDMChatPages={};
var LS_PENDING_RESERVA="bdm_chat_pending_reserva";
var LS_PENDING_PAYMENT="bdm_chat_pending_payment";
function getPendingReservaApproval(){
try {
var raw=localStorage.getItem(LS_PENDING_RESERVA);
return raw ? JSON.parse(raw):null;
} catch (e){
return null;
}}
function clearPendingReservaApproval(){
try {
localStorage.removeItem(LS_PENDING_RESERVA);
} catch (e){}}
function getPendingPayment(){
try {
var raw=localStorage.getItem(LS_PENDING_PAYMENT);
return raw ? JSON.parse(raw):null;
} catch (e){
return null;
}}
function clearPendingPayment(){
try {
localStorage.removeItem(LS_PENDING_PAYMENT);
} catch (e){}}
function extractReservaStatusFromDetalhe(api){
function readStatus(o){
if(!o||typeof o!=="object") return "";
return String(
o.status_reserva||o.status||o.checking||o.result||o.situacao||o.estado||""
).trim();
}
if(Array.isArray(api)&&api.length) return readStatus(api[0]).toUpperCase();
if(api&&typeof api==="object"&&Array.isArray(api.data)&&api.data.length){
return readStatus(api.data[0]).toUpperCase();
}
return readStatus(api).toUpperCase();
}
function escapeHtml(s){
return String(s||"")
.replace(/&/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(/"/g, "&quot;");
}
function highlightFidelidadeMensagem(msg){
var escaped=escapeHtml(msg);
return escaped
.replace(/(\d+\s+reservas?)/gi, "<strong>$1</strong>")
.replace(/(\d+\s+pontos?)/gi, "<strong>$1</strong>")
.replace(/(reserva da mesma su[ií]te\.?)/gi, "<strong>$1</strong>");
}
function splitMensagemLinhas(msg){
var s=String(msg||"").trim();
if(!s) return [];
var idx=s.search(/,\s*junte\s+/i);
if(idx >=0){
var p1=s.slice(0, idx + 1).trim();
var p2=s.slice(idx + 1).replace(/^,\s*/i, "").trim();
return [p1, p2];
}
return [s];
}
function parseFidelidadeBanner(api){
if(!api||typeof api!=="object") return null;
if(api.programa_ativo===false||api.programa_ativo===0||api.programa_ativo==="0") return null;
var result=String(api.result||"").trim().toLowerCase();
if(result&&result!=="success"&&result!=="ok") return null;
var block=api.regras;
var mensagem="";
if(block&&typeof block==="object"&&!Array.isArray(block)){
mensagem=String(block.mensagem||"").trim();
}
if(!mensagem) mensagem=String(api.mensagem||"").trim();
if(!mensagem){
var pts=block&&block.resgate_suite_pontos ? block.resgate_suite_pontos:920;
mensagem =
"Faça até 5 reservas pelo aplicativo, junte " +
pts +
" pontos e troque por uma nova reserva da mesma suíte.";
}
return { mensagem: mensagem };}
function mountFidelidadeBanner(ctx, node, api){
var banner=node.querySelector('[data-slot="fidelidade-banner"]');
var copy=node.querySelector('[data-slot="fidelidade-mensagem"]');
if(!banner||!copy) return;
var data=parseFidelidadeBanner(api);
if(!data||!data.mensagem){
banner.setAttribute("hidden", "hidden");
return;
}
copy.innerHTML="";
splitMensagemLinhas(data.mensagem).forEach(function (linha){
var p=document.createElement("p");
p.className="bdm-fidelidade-banner-line";
p.innerHTML=highlightFidelidadeMensagem(linha);
copy.appendChild(p);
});
banner.removeAttribute("hidden");
}
function isReservaPagamentoAtiva(status){
var s=String(status||"").toUpperCase();
return (
s==="PENDENTE" ||
s==="ACEITO" ||
s==="AGUARDANDO" ||
s==="AGUARDANDO PAGAMENTO" ||
s==="AGUARDANDO_PAGAMENTO" ||
s==="WAIT" ||
s==="VERIFICANDO"
);
}
window.BDMChatPages.home=function (ctx, motel){
ctx.state.currentView="home";
var pages=window.BDMChatPages||{};
var uid=pages.getUsuarioId ? pages.getUsuarioId():0;
var detalheUrl=(ctx.urls.reservaDetalhe||"").trim();
var pagamentoCheckUrl=(ctx.urls.pagamentoCheck||"").trim();
var pending=getPendingReservaApproval();
var pendingPayment=getPendingPayment();
function shouldResumePendingPaymentFlow(){
if(!pendingPayment||!pendingPayment.codigo_reserva||!uid||!detalheUrl){
return Promise.resolve(false);
}
if(parseInt(String(pendingPayment.id_usuario||0), 10)!==uid){
clearPendingPayment();
return Promise.resolve(false);
}
var codigoReserva=String(pendingPayment.codigo_reserva||"").trim();
if(!codigoReserva){
clearPendingPayment();
return Promise.resolve(false);
}
function resumeIfStillOpen(){
return fetch(detalheUrl, {
method: "POST",
credentials: "same-origin",
headers: window.BDMChatPages.mergeWidgetAuthHeaders({ "Content-Type": "application/json" }),
body: JSON.stringify({ id_usuario: uid, codigo_reserva: codigoReserva })
})
.then(function (r){ return r.json(); })
.then(function (detalhe){
var status=extractReservaStatusFromDetalhe(detalhe);
if(!isReservaPagamentoAtiva(status)){
clearPendingPayment();
return false;
}
ctx.state.lastReservaPaymentData=pendingPayment.payload&&typeof pendingPayment.payload==="object"
? pendingPayment.payload
: { codigo_reserva: codigoReserva, id_usuario: uid };
if(!ctx.state.lastReservaPaymentData.codigo_reserva){
ctx.state.lastReservaPaymentData.codigo_reserva=codigoReserva;
}
if(!ctx.state.lastReservaPaymentData.id_usuario){
ctx.state.lastReservaPaymentData.id_usuario=uid;
}
ctx.navigate("reservaPagamento");
return true;
})
.catch(function (){
return false;
});
}
if(!pagamentoCheckUrl){
return resumeIfStillOpen();
}
return fetch(pagamentoCheckUrl, {
method: "POST",
credentials: "same-origin",
headers: window.BDMChatPages.mergeWidgetAuthHeaders({ "Content-Type": "application/json" }),
body: JSON.stringify({ id_usuario: uid, codigo_reserva: codigoReserva })
})
.then(function (r){ return r.json().then(function (j){ return { status: r.status, json: j };});})
.then(function (res){
var payload=res&&res.json ? res.json:{};
if(res.status >=200&&res.status < 300){
var result=String(payload.result||payload.status||"").toUpperCase();
if(result==="OK"){
clearPendingPayment();
return false;
}}
return resumeIfStillOpen();
})
.catch(function (){
return resumeIfStillOpen();
});
}
function shouldResumePendingFlow(){
if(!pending||!pending.codigo_reserva||!uid||!detalheUrl){
return Promise.resolve(false);
}
if(parseInt(String(pending.id_usuario||0), 10)!==uid){
clearPendingReservaApproval();
return Promise.resolve(false);
}
return fetch(detalheUrl, {
method: "POST",
credentials: "same-origin",
headers: window.BDMChatPages.mergeWidgetAuthHeaders({ "Content-Type": "application/json" }),
body: JSON.stringify({ id_usuario: uid, codigo_reserva: pending.codigo_reserva })
})
.then(function (r){ return r.json(); })
.then(function (detalhe){
var status=extractReservaStatusFromDetalhe(detalhe);
if(status==="PENDENTE" ||
status==="WAIT" ||
status==="AGUARDANDO" ||
status==="VERIFICANDO"
){
ctx.state.lastReservaResult={
code: String(pending.codigo_reserva),
payload: pending.payload&&typeof pending.payload==="object"
? pending.payload
: { id_usuario: uid }};
ctx.navigate("reservaAguarde");
return true;
}
clearPendingReservaApproval();
return false;
})
.catch(function (){
return false;
});
}
shouldResumePendingPaymentFlow().then(function (resumedPayment){
if(resumedPayment) return true;
return shouldResumePendingFlow();
}).then(function (resumed){
if(resumed) return;
var pontosUrl=(ctx.urls.pontosFidelidade||"").trim();
var pages=window.BDMChatPages||{};
var fidelidadePromise=Promise.resolve(null);
if(uid&&pontosUrl){
fidelidadePromise=pages.fetchWidgetJson
? pages.fetchWidgetJson(ctx, "pontosSaldo", { id_usuario: uid }, pontosUrl).catch(function (){ return null; })
: fetch(pontosUrl, {
method: "POST",
credentials: "same-origin",
headers: pages.mergeWidgetAuthHeaders({ "Content-Type": "application/json" }),
body: JSON.stringify({ id_usuario: uid })
})
.then(function (r){ return r.json(); })
.catch(function (){ return null; });
}
var suitesPromise=pages.fetchWidgetJson
? pages.fetchWidgetJson(ctx, "suites", {}, ctx.urls.suites, { useGet: true })
: fetch(ctx.urls.suites, { credentials: "same-origin" }).then(function (r){ return r.json(); });
return Promise.all([
ctx.loadTemplate("home-suites"),
suitesPromise,
fidelidadePromise
])
.then(function (arr){
var html=arr[0];
var data=arr[1];
var fidelidade=arr[2];
if(!window.BDMChatMotelModel&&data&&typeof data==="object"&&data.motel&&typeof data.motel==="object"){
window.BDMChatMotelModel={ motel: data.motel };}
if((!window.BDMChatMotelIntegracao||window.BDMChatMotelIntegracao==="") &&
data &&
typeof data==="object" &&
data.motel &&
typeof data.motel==="object" &&
data.motel.integracao!=null
){
window.BDMChatMotelIntegracao=String(data.motel.integracao).trim().toUpperCase();
}
var node=ctx.htmlToNode(html);
mountFidelidadeBanner(ctx, node, fidelidade);
var grid=node.querySelector('[data-slot="suites"]')||node;
grid.innerHTML="";
var suites=(data&&data.suites) ? data.suites:(Array.isArray(data) ? data:[]);
if(!suites||!suites.length){
grid.appendChild(ctx.el("div", { class: "bdm-empty", text: "Nenhuma suíte encontrada." }));
}else{
suites.forEach(function (s){
var img=ctx.firstImageFromSuite(s);
var row=ctx.el("div", { class: "bdm-suite-row" });
row.addEventListener("click", function (){
ctx.state.selectedSuite=s;
ctx.navigate("suiteDetalhes");
});
var left=ctx.el("div", { class: "bdm-suite-left" });
if(img){
left.appendChild(ctx.el("img", { class: "bdm-suite-thumb", src: img, alt: ctx.safeText(s.nome||"Suíte"), loading: "lazy", referrerpolicy: "no-referrer" }));
}
var mid=ctx.el("div", { class: "bdm-suite-mid" });
mid.appendChild(ctx.el("div", { class: "bdm-suite-title" }, [ctx.safeText(s.nome||"Suíte")]));
var status=ctx.el("div", { class: "bdm-suite-status" });
status.appendChild(ctx.el("span", { class: "bdm-dot" }));
var unavailable =
typeof window.BDMChatSuiteUnavailableToday==="function"&&window.BDMChatSuiteUnavailableToday(s);
var available = !unavailable;
try {
var readIntegracao =
typeof window.BDMChatReadIntegracaoFlag==="function"
? window.BDMChatReadIntegracaoFlag
: function (){ return ""; };} catch (e){}
if(!available) status.className="bdm-suite-status -off";
status.appendChild(ctx.el("span", { text: available ? "Disponível":"Indisponível" }));
mid.appendChild(status);
var details=ctx.el("div", { class: "bdm-suite-details" });
var txt=ctx.htmlToText(s.texto||"");
if(txt){
details.appendChild(ctx.el("div", { class: "bdm-suite-text", text: txt }));
}
mid.appendChild(details);
var right=ctx.el("div", { class: "bdm-suite-right" });
var rawPrice=(s.apartir||s.preco||s.valor||s.preco2h||s.price) ? (s.apartir||s.preco||s.valor||s.preco2h||s.price):"";
var price="";
if(rawPrice!==null&&rawPrice!==undefined&&rawPrice!==""){
var n=parseFloat(String(rawPrice).replace(",", "."));
price=isFinite(n) ? ("R$ " + n.toFixed(2).replace(".", ",")):String(rawPrice);
}
if(price){
right.appendChild(ctx.el("div", { class: "bdm-suite-price-sub" }, ["a partir de"]));
right.appendChild(ctx.el("div", { class: "bdm-suite-price" }, [ctx.safeText(price)]));
}
var btn=ctx.el("button", { class: "bdm-suite-cta", type: "button" }, ["RESERVAR"]);
btn.addEventListener("click", function (ev){
if(ev&&ev.stopPropagation) ev.stopPropagation();
ctx.body.scrollTop=0;
ctx.body.appendChild(ctx.el("div", { class: "bdm-toast", text: "Reserva: em breve." }));
setTimeout(function (){
var t=ctx.body.querySelector(".bdm-toast");
if(t) t.remove();
}, 1800);
});
right.appendChild(btn);
row.appendChild(left);
row.appendChild(mid);
row.appendChild(right);
grid.appendChild(row);
});
}
ctx.body.innerHTML="";
ctx.body.appendChild(node);
ctx.wireActions(node);
})
.catch(function (){
ctx.body.textContent="Falha ao carregar suítes.";
});
}).catch(function (){
ctx.body.textContent="Falha ao carregar suítes.";
});
};})();
(function (){
if(!window.BDMChatPages) window.BDMChatPages={};
window.BDMChatPages.chat=function (ctx){
ctx.state.currentView="chat";
var p=ctx.cache.chatData
? Promise.resolve(ctx.cache.chatData)
: fetch(ctx.urls.bootstrap, { credentials: "same-origin" }).then(function (r){ return r.json(); });
p.then(function (data){
ctx.cache.chatData=data;
if(ctx.title&&data&&data.motel&&data.motel.nome) ctx.title.textContent=data.motel.nome;
var items=(data&&data.bot&&data.bot.items) ? data.bot.items:[];
ctx.body.innerHTML="";
var q=ctx.findFirstQuestion(items);
if(!q){
ctx.body.appendChild(ctx.el("div", { class: "bdm-msg -bot", text: "Chat não configurado para este motel." }));
return;
}
function renderQuestion(question){
ctx.body.appendChild(ctx.el("div", { class: "bdm-msg -bot" }, [ctx.safeText(question.texto||"")]));
var opts=ctx.findOptions(items, question.id);
if(!opts.length) return;
var wrap=ctx.el("div", { class: "bdm-options" });
opts.forEach(function (opt){
var b=ctx.el("button", { class: "bdm-option", type: "button" }, [ctx.safeText(opt.texto||"")]);
b.addEventListener("click", function (){
ctx.body.appendChild(ctx.el("div", { class: "bdm-msg -user" }, [ctx.safeText(opt.texto||"")]));
var next=ctx.findNextQuestion(items, opt.id);
if(!next){
ctx.body.appendChild(ctx.el("div", { class: "bdm-msg -bot", text: "Finalizado." }));
ctx.body.scrollTop=ctx.body.scrollHeight;
wrap.remove();
return;
}
wrap.remove();
renderQuestion(next);
ctx.body.scrollTop=ctx.body.scrollHeight;
});
wrap.appendChild(b);
});
ctx.body.appendChild(wrap);
ctx.body.scrollTop=ctx.body.scrollHeight;
}
renderQuestion(q);
}).catch(function (){
ctx.body.textContent="Falha ao carregar dados do chat.";
});
};})();
(function (){
if(!window.BDMChatPages) window.BDMChatPages={};
window.BDMChatPages.suites=function (ctx){
ctx.state.currentView="suites";
var pages=window.BDMChatPages||{};
var suitesPromise=pages.fetchWidgetJson
? pages.fetchWidgetJson(ctx, "suites", {}, ctx.urls.suites, { useGet: true })
: fetch(ctx.urls.suites, { credentials: "same-origin" }).then(function (r){ return r.json(); });
Promise.all([
ctx.loadTemplate("suites"),
suitesPromise
])
.then(function (arr){
var html=arr[0];
var data=arr[1];
var node=ctx.htmlToNode(html);
var grid=node.querySelector('[data-slot="suites"]')||node;
grid.innerHTML="";
var suites=(data&&data.suites) ? data.suites:(Array.isArray(data) ? data:[]);
if(!suites||!suites.length){
grid.appendChild(ctx.el("div", { class: "bdm-empty", text: "Nenhuma suíte encontrada." }));
}else{
suites.forEach(function (s){
var img=ctx.firstImageFromSuite(s);
var card=ctx.el("button", { class: "bdm-suite-card", type: "button" });
if(img){
var media=ctx.el("div", { class: "bdm-suite-media" });
media.appendChild(ctx.el("img", { class: "bdm-suite-img", src: img, alt: ctx.safeText(s.nome||"Suíte"), loading: "lazy", referrerpolicy: "no-referrer" }));
card.appendChild(media);
}
var info=ctx.el("div", { class: "bdm-suite-info" });
info.appendChild(ctx.el("div", { class: "bdm-suite-name" }, [ctx.safeText(s.nome||"Suíte")]));
if(s.descricao) info.appendChild(ctx.el("div", { class: "bdm-suite-desc" }, [ctx.safeText(s.descricao)]));
card.appendChild(info);
card.addEventListener("click", function (){
ctx.body.scrollTop=0;
ctx.body.appendChild(ctx.el("div", { class: "bdm-toast", text: "Detalhes da suíte: em breve." }));
setTimeout(function (){
var t=ctx.body.querySelector(".bdm-toast");
if(t) t.remove();
}, 1800);
});
grid.appendChild(card);
});
}
ctx.body.innerHTML="";
ctx.body.appendChild(node);
})
.catch(function (){
ctx.body.textContent="Falha ao carregar suítes.";
});
};})();
(function (){
if(!window.BDMChatPages) window.BDMChatPages={};
var LS_PENDING_RESERVA="bdm_chat_pending_reserva";
var LS_PENDING_PAYMENT="bdm_chat_pending_payment";
var CUPOM_FIDELIDADE="FIDELIDADE";
var VALOR_REAL_POR_PONTO_DEFAULT=0.25;
var MESES=["janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"];
function pad2(n){
return n < 10 ? "0" + n:String(n);
}
function getMinSelectableMidnight(){
var n=new Date();
if(n.getHours()===23){
var t=new Date(n.getFullYear(), n.getMonth(), n.getDate() + 1);
return t;
}
return new Date(n.getFullYear(), n.getMonth(), n.getDate());
}
function isRealToday(y, m, d){
var t=new Date();
return y===t.getFullYear()&&m===t.getMonth()&&d===t.getDate();
}
function dateAtMidnight(y, m, d){
return new Date(y, m, d);
}
function isDateBeforeMin(selY, selM, selD, minDate){
if(!minDate||!(minDate instanceof Date)) return false;
return dateAtMidnight(selY, selM, selD).getTime() < minDate.getTime();
}
function isPrecosListEmpty(data){
if(!data) return true;
if(typeof data==="object"&&data.erro&&isPrecosUnavailableErroMessage(data.erro)){
return true;
}
return normalizePrecosList(data).length===0;
}
function isPrecosUnavailableErroMessage(msg){
var s=String(msg==null ? "":msg).trim().toLowerCase();
return s.indexOf("sem autorização")!==-1||s.indexOf("sem autorizacao")!==-1;
}
function normalizePrecosApiResponse(data){
if(!data||typeof data!=="object") return data;
if(data.erro&&isPrecosUnavailableErroMessage(data.erro)){
return [];
}
return data;
}
function syncBookingUnavailableUi(node, merged, base, state, minDate, booking){
var unSlot=node.querySelector('[data-slot="unavailable-notice"]');
var flow=node.querySelector('[data-slot="booking-flow"]');
var disp0=isDisp0Combined(merged, base);
var selToday=isRealToday(state.selY, state.selM, state.selD);
var precosEmpty = !!(state&&state.precosEmptyForDay);
var hideFlow=isDateBeforeMin(state.selY, state.selM, state.selD, minDate)||(disp0&&selToday);
var showMsg=(disp0&&selToday)||precosEmpty;
var msg="";
if(disp0&&selToday){
msg="Esta suíte está indisponível para hoje. Selecione a partir de amanhã no calendário para escolher permanência e horário de chegada.";
}else if(precosEmpty){
msg="Indisponível para o dia selecionado.";
}
if(unSlot){
unSlot.textContent=msg;
unSlot.hidden = !showMsg;
unSlot.classList.toggle("-hidden", !showMsg);
}
if(flow){
flow.hidden=hideFlow;
flow.classList.toggle("-hidden", hideFlow);
}
if(booking&&booking.syncTermsButton) booking.syncTermsButton();
if(booking&&booking.refresh) booking.refresh();
}
function isSuiteUnavailableToday(suite){
if(!suite||typeof suite!=="object") return false;
var readIntegracao =
typeof window.BDMChatReadIntegracaoFlag==="function"
? window.BDMChatReadIntegracaoFlag
: function (raw){
if(!raw||typeof raw!=="object") return "";
if(Object.prototype.hasOwnProperty.call(raw, "integracao")){
return String(raw.integracao==null ? "":raw.integracao).trim().toUpperCase();
}
return "";
};
if(readIntegracao(window.BDMChatMotelModel)==="N") return false;
if(readIntegracao(suite)==="N") return false;
if(typeof window.BDMChatSuiteUnavailableToday==="function"){
try {
return !!window.BDMChatSuiteUnavailableToday(suite);
} catch (e){
}}
var d=suite.disponibilidade;
if(d===0||d==="0"||d===false) return true;
if(typeof d==="string"){
var t=d.trim().toLowerCase();
if(t==="0"||t==="false"||t==="no"||t==="n"||t==="nao"||t==="não") return true;
if(t==="indisponivel"||t==="indisponível") return true;
}
if(suite.disponivel===false||suite.disponivel===0||suite.disponivel==="0"||suite.disponivel==="N"||suite.disponivel==="n") return true;
if(suite["disponível"]===false||suite["disponível"]===0||suite["disponível"]==="0") return true;
return false;
}
function isDisp0Combined(merged, base){
var mergedUnavailable=isSuiteUnavailableToday(merged);
var baseUnavailable=isSuiteUnavailableToday(base);
var result=mergedUnavailable||baseUnavailable;
try {
var readIntegracao =
typeof window.BDMChatReadIntegracaoFlag==="function"
? window.BDMChatReadIntegracaoFlag
: function (){ return ""; };} catch (e){}
return result;
}
function getRealTodayMidnight(){
var n=new Date();
return new Date(n.getFullYear(), n.getMonth(), n.getDate());
}
function getCalendarMinDateForSuite(merged, base){
if(isDisp0Combined(merged, base)){
return getRealTodayMidnight();
}
return getMinSelectableMidnight();
}
function sameCalendarDay(a, b){
if(!a||!b||!(a instanceof Date)||!(b instanceof Date)||isNaN(a.getTime())||isNaN(b.getTime())){
return false;
}
return (
a.getFullYear()===b.getFullYear() &&
a.getMonth()===b.getMonth() &&
a.getDate()===b.getDate()
);
}
function getInitialPrecosMinDate(base){
if(isSuiteUnavailableToday(base)){
return getRealTodayMidnight();
}
return getMinSelectableMidnight();
}
function unwrapDetalhesJson(raw){
if(!raw||typeof raw!=="object"||Array.isArray(raw)) return raw;
if(raw.erro!=null) return raw;
var hasTop =
Object.prototype.hasOwnProperty.call(raw, "suite") ||
Object.prototype.hasOwnProperty.call(raw, "detalhes") ||
Object.prototype.hasOwnProperty.call(raw, "disponibilidade") ||
Object.prototype.hasOwnProperty.call(raw, "suites");
if(hasTop) return raw;
if(raw.data&&typeof raw.data==="object"&&!Array.isArray(raw.data)) return raw.data;
return raw;
}
function buildMergedSuite(base, suiteApi, detJson){
var merged=Object.assign({}, base||{}, suiteApi||{});
applyAvailabilityFromRawResponse(detJson, merged);
if(!Object.prototype.hasOwnProperty.call(merged, "disponibilidade")){
applyAvailabilityFromRawResponse(base, merged);
}
return merged;
}
function isSuiteInterativaFlag(merged, base, detJson){
var rows=[merged, base, detJson];
var suiteApi=normalizeDetalhesPayload(detJson);
if(suiteApi&&typeof suiteApi==="object") rows.push(suiteApi);
if(detJson&&detJson.data&&typeof detJson.data==="object"&&!Array.isArray(detJson.data)){
rows.push(detJson.data);
}
for (var i=0; i < rows.length; i++){
var src=rows[i];
if(!src||typeof src!=="object") continue;
var v=String(src.interativa!=null ? src.interativa:"").trim().toUpperCase();
if(v==="S"||v==="SIM"||v==="1"||v==="TRUE") return true;
}
return false;
}
function selectDateForPrecosApi(state){
var now=new Date();
if(isRealToday(state.selY, state.selM, state.selD)){
return formatSelectDate(now);
}
return state.selY + "-" + pad2(state.selM + 1) + "-" + pad2(state.selD) + "T12:00:00";
}
function formatSelectDate(d){
if(!d||!(d instanceof Date)||isNaN(d.getTime())){
d=new Date();
}
return d.getFullYear() + "-" + pad2(d.getMonth() + 1) + "-" + pad2(d.getDate()) + "T" + pad2(d.getHours()) + ":" + pad2(d.getMinutes()) + ":" + pad2(d.getSeconds());
}
function buildReservaDateTimeFromState(state){
var now=new Date();
return (
state.selY + "-" + pad2(state.selM + 1) + "-" + pad2(state.selD) +
" " + pad2(now.getHours()) + ":" + pad2(now.getMinutes()) + ":" + pad2(now.getSeconds())
);
}
function periodoFromPrecoItem(p){
if(!p||typeof p!=="object") return "";
if(p.periodo!=null&&String(p.periodo).trim()) return String(p.periodo).trim();
if(p.duracao!=null&&String(p.duracao).trim()) return String(p.duracao).trim();
if(p.tempo!=null&&String(p.tempo).trim()) return String(p.tempo).trim();
if(p.horas!=null&&String(p.horas).trim()) return String(p.horas).trim();
return "";
}
function normalizePeriodoReserva(label){
var raw=String(label==null ? "":label).trim();
if(!raw) return "";
return raw.replace(/\s*horas?$/i, "").trim();
}
function normalizeDetalhesPayload(data){
if(Array.isArray(data)&&data.length&&data[0]&&typeof data[0]==="object"){
return data[0];
}
if(!data||typeof data!=="object") return {};
if(data.suite&&typeof data.suite==="object") return data.suite;
if(data.detalhes&&typeof data.detalhes==="object") return data.detalhes;
if(data.suites&&typeof data.suites==="object"&&!Array.isArray(data.suites)) return data.suites;
return data;
}
function applyAvailabilityFromRawResponse(raw, target){
if(!target||typeof target!=="object") return;
var blobs=[];
function add(b){
if(b&&typeof b==="object"&&!Array.isArray(b)&&blobs.indexOf(b) < 0) blobs.push(b);
}
if(!raw||typeof raw!=="object") return;
if(Array.isArray(raw)&&raw.length&&raw[0]&&typeof raw[0]==="object"){
add(raw[0]);
}else{
add(raw);
if(raw.data&&typeof raw.data==="object"&&!Array.isArray(raw.data)) add(raw.data);
if(raw.dados&&typeof raw.dados==="object"&&!Array.isArray(raw.dados)) add(raw.dados);
if(raw.result&&typeof raw.result==="object"&&!Array.isArray(raw.result)) add(raw.result);
if(raw.suite&&typeof raw.suite==="object") add(raw.suite);
if(raw.detalhes&&typeof raw.detalhes==="object") add(raw.detalhes);
}
for (var i=0; i < blobs.length; i++){
var b=blobs[i];
if(Object.prototype.hasOwnProperty.call(b, "disponibilidade")){
var v=b.disponibilidade;
if(v===false||v==="false") target.disponibilidade=0;
else if(v===true) target.disponibilidade=1;
else target.disponibilidade=v;
return;
}
if(Object.prototype.hasOwnProperty.call(b, "disponivel")||Object.prototype.hasOwnProperty.call(b, "disponível")){
var dv=b.disponivel!==undefined ? b.disponivel:b["disponível"];
target.disponibilidade=dv===false||dv===0||dv==="0"||dv==="N"||dv==="n" ? 0:1;
return;
}}
}
function looksLikePrecoItem(o){
if(!o||typeof o!=="object") return false;
return (
o.valor!=null||o.preco!=null||o.apartir!=null||o.price!=null ||
o.duracao!=null||o.tempo!=null||o.horas!=null||o.periodo!=null
);
}
function normalizePrecosList(data){
if(!data||typeof data!=="object") return [];
if(Array.isArray(data)){
if(!data.length) return [];
if(data.length > 1&&data.every(function (row){ return looksLikePrecoItem(row); })){
return data;
}
if(data.length===1&&data[0]&&typeof data[0]==="object"){
var fromWrapper=normalizePrecosList(data[0]);
if(fromWrapper.length) return fromWrapper;
}
if(looksLikePrecoItem(data[0])){
if(data.length===1||data.every(function (row){ return looksLikePrecoItem(row); })){
return data;
}}
for (var a=0; a < data.length; a++){
var innerArr=normalizePrecosList(data[a]);
if(innerArr.length) return innerArr;
}
return [];
}
if(looksLikePrecoItem(data)) return [data];
if(data.data&&typeof data.data==="object"){
var nestedData=normalizePrecosList(data.data);
if(nestedData.length) return nestedData;
}
var keys=["precos", "periodos", "tempos", "valores", "tarifas", "dados", "lista", "resultado"];
for (var i=0; i < keys.length; i++){
var block=data[keys[i]];
if(!block) continue;
var innerKey=normalizePrecosList(block);
if(innerKey.length) return innerKey;
}
if(data.suite&&typeof data.suite==="object"){
var innerSuite=normalizePrecosList(data.suite);
if(innerSuite.length) return innerSuite;
}
if(Array.isArray(data.suites)&&data.suites.length){
for (var s=0; s < data.suites.length; s++){
var innerSuites=normalizePrecosList(data.suites[s]);
if(innerSuites.length) return innerSuites;
}}
return [];
}
function imagesFromDetail(suite){
var out=[];
if(!suite||typeof suite!=="object") return out;
if(Array.isArray(suite.galeria)){
suite.galeria.forEach(function (g){
if(typeof g==="string"&&g) out.push({ image: g, thumb: g });
else if(g&&typeof g==="object"){
var u=g.image||g.imagem||g.url||g.src||"";
var th=g.thumbImage||g.thumb||u;
if(u) out.push({ image: u, thumb: th });
}});
if(out.length) return out;
}
if(suite.imagens){
var im=suite.imagens;
if(typeof im==="string"){
var t=im.trim();
if(t.indexOf("[")===0){
try {
var parsed=JSON.parse(t);
if(Array.isArray(parsed)){
parsed.forEach(function (item){
if(typeof item==="string"&&item) out.push({ image: item, thumb: item });
else if(item&&typeof item==="object"){
var u2=item.image||item.imagem||item.url||"";
var th2=item.thumbImage||item.thumb||u2;
if(u2) out.push({ image: u2, thumb: th2 });
}});
return out;
}} catch (e){  }}
if(t.indexOf(",")!==-1){
return t.split(",").map(function (x){ return x.trim(); }).filter(Boolean).map(function (u){ return { image: u, thumb: u };});
}
if(t) return [{ image: t, thumb: t }];
}
if(Array.isArray(im)){
im.forEach(function (item){
if(typeof item==="string"&&item) out.push({ image: item, thumb: item });
else if(item&&typeof item==="object"){
var u3=item.image||item.imagem||item.url||"";
var th3=item.thumbImage||item.thumb||u3;
if(u3) out.push({ image: u3, thumb: th3 });
}});
return out;
}}
return out;
}
function formatMoneyBR(n){
if(!isFinite(n)) return "R$ 0,00";
return "R$ " + n.toFixed(2).replace(".", ",");
}
function parseMoneyAny(v){
if(v==null||v==="") return NaN;
var s=String(v).trim().replace(/[^\d,.-]/g, "");
if(s.indexOf(",") >=0&&s.indexOf(".") >=0){
s=s.replace(/\./g, "").replace(",", ".");
}else if(s.indexOf(",") >=0){
s=s.replace(",", ".");
}
return parseFloat(s);
}
function toast(ctx, msg){
ctx.body.scrollTop=0;
ctx.body.appendChild(ctx.el("div", { class: "bdm-toast", text: msg }));
setTimeout(function (){
var t=ctx.body.querySelector(".bdm-toast");
if(t) t.remove();
}, 2200);
}
function labelFromPrecoItem(p, i){
if(typeof p!=="object"||!p) return "Opção " + (i + 1);
var label=p.label||p.texto||p.nome||p.descricao||"";
var dur=p.duracao!=null ? p.duracao:(p.tempo!=null ? p.tempo:(p.horas!=null ? p.horas:p.periodo));
if(!label&&dur!=null){
var ds=String(dur).trim();
label=ds;
}
if(!label) label="Opção " + (i + 1);
return normalizePeriodoReserva(label);
}
function renderGalleryFallback(ctx, slot, items){
var idx={ v: 0 };
var mainWrap=ctx.el("div", { class: "bdm-gallery-main" });
var mainImg=ctx.el("img", { class: "bdm-gallery-main-img", alt: "", loading: "lazy", referrerpolicy: "no-referrer" });
mainImg.src=items[0].image;
var prev=ctx.el("button", { class: "bdm-gallery-nav -prev", type: "button", "aria-label": "Anterior" });
prev.innerHTML='<i class="bdm-fa fa-thin fa-chevron-left" aria-hidden="true"></i>';
var next=ctx.el("button", { class: "bdm-gallery-nav -next", type: "button", "aria-label": "Próximo" });
next.innerHTML='<i class="bdm-fa fa-thin fa-chevron-right" aria-hidden="true"></i>';
function show(i){
if(i < 0) i=items.length - 1;
if(i >=items.length) i=0;
idx.v=i;
mainImg.src=items[i].image;
}
prev.addEventListener("click", function (e){ e.stopPropagation(); show(idx.v - 1); });
next.addEventListener("click", function (e){ e.stopPropagation(); show(idx.v + 1); });
mainWrap.appendChild(mainImg);
mainWrap.appendChild(prev);
mainWrap.appendChild(next);
slot.appendChild(mainWrap);
var thumbs=ctx.el("div", { class: "bdm-gallery-thumbs" });
items.forEach(function (it, i){
var b=ctx.el("button", { class: "bdm-gallery-thumb", type: "button" });
b.appendChild(ctx.el("img", { src: it.thumb, alt: "", loading: "lazy", referrerpolicy: "no-referrer" }));
b.addEventListener("click", function (e){ e.stopPropagation(); show(i); });
thumbs.appendChild(b);
});
slot.appendChild(thumbs);
}
function renderGallery(ctx, slot, items){
slot.innerHTML="";
if(!items||!items.length){
slot.appendChild(ctx.el("div", { class: "bdm-gallery-empty", text: "Sem imagens." }));
return;
}
var jq=window.jQuery;
if(!jq||typeof jq.fn.owlCarousel!=="function"||typeof jq.fn.lightGallery!=="function"){
renderGalleryFallback(ctx, slot, items);
return;
}
var uid="bdm-gallery-" + String(Date.now()) + "-" + String(Math.random()).slice(2, 9);
var $slot=jq(slot);
var $wrap=jq("<div/>", {
class: "bdm-gallery-wrap",
"data-wp-ignore": "",
"data-bdm-gallery": "1"
});
var $carousel=jq("<div/>", { class: "owl-carousel bdm-gallery-owl", id: uid });
items.forEach(function (it){
var src=it.image;
var th=it.thumb||src;
var $a=jq("<a/>", {
class: "bdm-lg-item",
href: src,
"data-src": src,
"data-exthumbimage": th
});
$a.append(jq("<img/>", { src: th, alt: "", loading: "lazy", referrerpolicy: "no-referrer", draggable: false }));
$carousel.append(jq("<div/>", { class: "item" }).append($a));
});
$wrap.append($carousel);
$slot.append($wrap);
$wrap.get(0).addEventListener("click",
function (ev){
var el=ev.target&&ev.target.closest&&ev.target.closest("a.bdm-lg-item");
if(el) ev.preventDefault();
},
true
);
$carousel.owlCarousel({
loop: false,
margin: 0,
nav: items.length > 1,
navElement: "button",
navText: [
'<span class="bdm-owl-nav-inner"><i class="bdm-fa fa-thin fa-chevron-left" aria-hidden="true"></i></span>',
'<span class="bdm-owl-nav-inner"><i class="bdm-fa fa-thin fa-chevron-right" aria-hidden="true"></i></span>'
],
dots: false,
items: 1
});
$carousel.find(".owl-nav button").attr("type", "button");
$carousel.lightGallery({
selector: "a.bdm-lg-item",
download: false,
thumbnail: true,
showThumbByDefault: true,
animateThumb: true,
currentPagerPosition: "middle",
thumbWidth: 96,
thumbHeight: "72px",
thumbMargin: 8,
thumbContHeight: 100,
hideBarsDelay: 3000,
fullScreen: true,
hideControlOnEnd: true
});
}
var DOW_CODE_TO_NUM={ dom: 0, seg: 1, ter: 2, qua: 3, qui: 4, sex: 5, sab: 6 };
function parseHmToMinutes(hm){
var s=String(hm==null ? "":hm).trim();
var m=s.match(/^(\d{1,2}):(\d{2})/);
if(!m) return 0;
return parseInt(m[1], 10) * 60 + parseInt(m[2], 10);
}
function dowNumFromIntervalCode(code){
var c=String(code==null ? "":code).trim().toLowerCase().substring(0, 3);
return Object.prototype.hasOwnProperty.call(DOW_CODE_TO_NUM, c) ? DOW_CODE_TO_NUM[c]:-1;
}
function isArrivalBlockedByIntervalo(selY, selM, selD, slotHm, intervalo){
if(!intervalo||typeof intervalo!=="object") return false;
var selDow=new Date(selY, selM, selD).getDay();
var selMin=parseHmToMinutes(slotHm);
var startDow=dowNumFromIntervalCode(intervalo.dia_semana_inicio);
var endDow=dowNumFromIntervalCode(intervalo.dia_semana_fim);
var startMin=parseHmToMinutes(intervalo.hora_inicio);
var endMin=parseHmToMinutes(intervalo.hora_fim);
if(startDow < 0||endDow < 0) return false;
if(startDow===endDow){
if(selDow!==startDow) return false;
if(startMin <=endMin){
return selMin >=startMin&&selMin < endMin;
}
return selMin >=startMin||selMin < endMin;
}
if(startDow < endDow){
if(selDow < startDow||selDow > endDow) return false;
if(selDow===startDow) return selMin >=startMin;
if(selDow===endDow) return selMin < endMin;
return true;
}
if(selDow===startDow) return selMin >=startMin;
if(selDow===endDow) return selMin < endMin;
if(selDow > startDow||selDow < endDow) return true;
return false;
}
function isArrivalSlotBlocked(state, slotHm, intervalos){
if(!intervalos||!intervalos.length) return false;
for (var i=0; i < intervalos.length; i++){
if(isArrivalBlockedByIntervalo(state.selY, state.selM, state.selD, slotHm, intervalos[i])){
return true;
}}
return false;
}
function normalizeIntervalosList(json){
if(!json) return [];
if(Array.isArray(json)) return json;
if(typeof json!=="object") return [];
if(json.erro) return [];
if(Array.isArray(json.data)) return json.data;
if(Array.isArray(json.intervalos)) return json.intervalos;
if(Array.isArray(json.intervalos_dia_semana)) return json.intervalos_dia_semana;
return [];
}
function buildArrivalSlots(state, intervalos){
var now=new Date();
var slots=[];
if(isRealToday(state.selY, state.selM, state.selD)){
var start=new Date(now.getTime());
start.setSeconds(0, 0);
start.setMinutes(0);
start.setHours(start.getHours() + 1);
if(start.getFullYear()!==state.selY ||
start.getMonth()!==state.selM ||
start.getDate()!==state.selD
){
return slots;
}
var h0=start.getHours();
for (var h=h0; h <=23; h++){
slots.push(pad2(h) + ":00");
}}else{
for (var h2=0; h2 <=23; h2++){
slots.push(pad2(h2) + ":00");
}}
if(!intervalos||!intervalos.length) return slots;
return slots.filter(function (hm){
return !isArrivalSlotBlocked(state, hm, intervalos);
});
}
function fillChegada(select, state, intervalos){
select.innerHTML="";
var horarios=buildArrivalSlots(state, intervalos);
var ph=document.createElement("option");
ph.value="";
ph.textContent="Selecionar";
select.appendChild(ph);
horarios.forEach(function (h, i){
var opt=document.createElement("option");
opt.value=String(i + 1);
opt.textContent=h;
opt._bdmH=h;
select.appendChild(opt);
});
select.value="";
}
function fillPermanencia(select, precosArr, fallbackValor){
select.innerHTML="";
var ph=document.createElement("option");
ph.value="";
ph.textContent="Selecionar";
select.appendChild(ph);
var opts=[];
if(precosArr&&precosArr.length){
precosArr.forEach(function (p, i){
var label=labelFromPrecoItem(p, i);
var val=parseMoneyAny(typeof p==="object"&&p ? (p.valor||p.preco||p.apartir||p.price):"");
var periodoApi=periodoFromPrecoItem(p)||label;
opts.push({ label: label, valor: isFinite(val) ? val:NaN, raw: p, periodoApi: periodoApi });
});
}else{
opts.push({ label: "02:00", valor: fallbackValor, raw: null, periodoApi: "02:00" });
}
opts.forEach(function (o, i){
var opt=document.createElement("option");
opt.value=String(i);
opt.textContent=o.label;
opt._bdm=o;
select.appendChild(opt);
});
select.value="";
}
function renderCalendar(ctx, slot, state, minDate, onChange){
var minY=minDate.getFullYear();
var minM=minDate.getMonth();
var minD=minDate.getDate();
function isCellDisabled(y, m, d){
var cell=new Date(y, m, d);
return cell < minDate;
}
function draw(){
slot.innerHTML="";
var y=state.calYear;
var m=state.calMonth;
var first=new Date(y, m, 1);
var startWeek=first.getDay();
var daysInMonth=new Date(y, m + 1, 0).getDate();
var head=ctx.el("div", { class: "bdm-cal-head" });
var prevM=ctx.el("button", { class: "bdm-cal-nav", type: "button", "aria-label": "Mês anterior" });
prevM.innerHTML='<i class="bdm-fa fa-thin fa-chevron-left" aria-hidden="true"></i>';
var nextM=ctx.el("button", { class: "bdm-cal-nav", type: "button", "aria-label": "Próximo mês" });
nextM.innerHTML='<i class="bdm-fa fa-thin fa-chevron-right" aria-hidden="true"></i>';
var title=ctx.el("div", { class: "bdm-cal-title" }, [MESES[m] + " de " + y]);
var firstOfCal=new Date(y, m, 1);
var firstOfMin=new Date(minY, minM, 1);
var atMinMonth=firstOfCal.getTime() <=firstOfMin.getTime();
if(atMinMonth){
prevM.disabled=true;
prevM.classList.add("-disabled");
}
prevM.addEventListener("click", function (){
if(atMinMonth) return;
if(m===0){ m=11; y--; }else{ m--; }
state.calYear=y;
state.calMonth=m;
draw();
});
nextM.addEventListener("click", function (){
if(m===11){ m=0; y++; }else{ m++; }
state.calYear=y;
state.calMonth=m;
draw();
});
head.appendChild(prevM);
head.appendChild(title);
head.appendChild(nextM);
slot.appendChild(head);
var grid=ctx.el("div", { class: "bdm-cal-grid" });
var dow=["D", "S", "T", "Q", "Q", "S", "S"];
for (var i=0; i < 7; i++) grid.appendChild(ctx.el("div", { class: "bdm-cal-dow", text: dow[i] }));
for (var p=0; p < startWeek; p++) grid.appendChild(ctx.el("div", { class: "bdm-cal-cell -empty" }));
for (var d=1; d <=daysInMonth; d++){
(function (day){
var dis=isCellDisabled(y, m, day);
var cell=ctx.el("button", { class: "bdm-cal-cell", type: "button", text: String(day) });
if(dis){
cell.classList.add("-disabled");
cell.disabled=true;
}else if(state.selY===y&&state.selM===m&&state.selD===day){
cell.classList.add("-selected");
}
if(!dis){
cell.addEventListener("click", function (){
state.selY=y;
state.selM=m;
state.selD=day;
draw();
if(onChange) onChange();
});
}
grid.appendChild(cell);
})(d);
}
slot.appendChild(grid);
}
draw();
}
function createFidelidadeState(){
return {
saldo: null,
programaAtivo: false,
valorRealPorPonto: VALOR_REAL_POR_PONTO_DEFAULT,
pontosPorRealResgate: 0,
valorBrutoPeriodo: 0,
valorTotal: 0,
descontoCupom: 0,
cupomManual: "",
cupom: "",
usarPontos: false,
aplicandoCupom: false,
tipoDesconto: "",
descontoLabel: "",
pontosUtilizados: 0,
ocultarCampoCupom: false
};}
function pickApiNumber(obj, keys){
for (var i=0; i < keys.length; i++){
var v=obj&&obj[keys[i]];
if(v==null||v==="") continue;
var n=parseFloat(String(v).replace(/\./g, "").replace(",", "."));
if(isFinite(n)) return n;
}
return NaN;
}
function pontosNecessariosReserva(bruto, valorPorPonto, pontosPorRealResgate){
var b=Number(bruto)||0;
if(b <=0) return 0;
var porReal=Number(pontosPorRealResgate)||0;
if(porReal > 0) return Math.ceil(b * porReal);
var rate=Number(valorPorPonto)||VALOR_REAL_POR_PONTO_DEFAULT;
if(rate <=0) return 0;
return Math.ceil(b / rate);
}
function parseCupomAplicarResponse(api, valorBruto){
if(!api||typeof api!=="object") return null;
var result=String(api.result||api.status||"").trim().toLowerCase();
if(result&&result!=="success"&&result!=="ok"){
return { erro: String(api.erro||api.message||"Cupom inválido.") };}
var bruto=Number(valorBruto)||0;
var total=pickApiNumber(api, ["valor_reserva", "valor_final", "valor_total", "total", "valor", "selectTotal"]);
var tipoDesconto=String(api.tipo_desconto||"").trim().toLowerCase();
var valorDescontoRaw=pickApiNumber(api, ["valor_desconto", "desconto", "desconto_cupom"]);
var descontoValor=0;
var descontoLabel="";
if(tipoDesconto.indexOf("porcent") >=0||tipoDesconto==="percent"||tipoDesconto==="%"){
var pct=isFinite(valorDescontoRaw) ? valorDescontoRaw:0;
if(bruto > 0&&pct > 0){
descontoValor=Math.round(((bruto * pct) / 100) * 100) / 100;
}
descontoLabel=String(Math.round(pct)) + "%";
}else if(isFinite(valorDescontoRaw)&&valorDescontoRaw > 0){
descontoValor=valorDescontoRaw;
descontoLabel=formatMoneyBR(descontoValor);
}
if(!isFinite(total)){
total=Math.max(0, bruto - descontoValor);
}
if(!isFinite(descontoValor)||descontoValor <=0){
descontoValor=Math.max(0, bruto - total);
}
var pontosUtil=pickApiNumber(api, ["pontos_utilizados", "pontos_usados"]);
if(!isFinite(pontosUtil)) pontosUtil=0;
return {
total: isFinite(total) ? total:0,
desconto: descontoValor,
tipoDesconto: tipoDesconto,
descontoLabel: descontoLabel,
pontosUtilizados: Math.floor(pontosUtil),
ocultarCampoCupom:
api.ocultar_campo_cupom===true ||
api.ocultar_campo_cupom===1 ||
api.ocultar_campo_cupom==="1"
};}
function applyCupomParsedToFidelidade(fid, parsed, bruto){
if(!parsed||!fid) return;
fid.valorTotal=parsed.total;
fid.descontoCupom=parsed.desconto;
fid.tipoDesconto=parsed.tipoDesconto||"";
fid.descontoLabel=parsed.descontoLabel||"";
fid.pontosUtilizados=parsed.pontosUtilizados||0;
fid.ocultarCampoCupom = !!parsed.ocultarCampoCupom;
if(fid.descontoCupom <=0&&bruto > 0){
fid.descontoCupom=Math.max(0, bruto - parsed.total);
}}
function fidelidadeCupomAtivo(fid){
if(!fid) return false;
if(fid.usarPontos) return true;
return String(fid.cupomManual||"").trim().length > 0;
}
function limparDescontoFidelidadeState(fid, bruto){
if(!fid) return;
fid.usarPontos=false;
fid.aplicandoCupom=false;
fid.cupom="";
fid.cupomManual="";
fid.descontoCupom=0;
fid.tipoDesconto="";
fid.descontoLabel="";
fid.pontosUtilizados=0;
fid.ocultarCampoCupom=false;
var b=Number(bruto);
if(isFinite(b)&&b > 0) fid.valorTotal=b;
}
function carregarSaldoFidelidade(ctx, fid){
var pages=window.BDMChatPages||{};
var uid=pages.getUsuarioId ? pages.getUsuarioId():0;
var url=(ctx.urls.pontosFidelidade||"").trim();
if(!uid||!url){
fid.saldo=null;
return Promise.resolve();
}
var saldoPromise=pages.fetchWidgetJson
? pages.fetchWidgetJson(ctx, "pontosSaldo", { id_usuario: uid }, url)
: fetch(url, {
method: "POST",
credentials: "same-origin",
headers: pages.mergeWidgetAuthHeaders({ "Content-Type": "application/json" }),
body: JSON.stringify({ id_usuario: uid })
}).then(function (r){ return r.json(); });
return saldoPromise.then(function (api){
if(!api||typeof api!=="object"){
fid.saldo=null;
return;
}
fid.programaAtivo=api.programa_ativo!==false&&api.programa_ativo!==0&&api.programa_ativo!=="0";
fid.saldo=pickApiNumber(api, ["saldo", "pontos", "pontos_saldo"]);
if(!isFinite(fid.saldo)) fid.saldo=0;
fid.saldo=Math.floor(fid.saldo);
var block=api.regras;
if(block&&typeof block==="object"&&!Array.isArray(block)){
var rate=pickApiNumber(block, ["valor_ponto_reais", "valorRealPorPonto"]);
if(isFinite(rate)&&rate > 0) fid.valorRealPorPonto=rate;
var porReal=pickApiNumber(block, ["pontos_por_real_em_resgate", "pontosPorRealResgate"]);
if(isFinite(porReal)&&porReal > 0) fid.pontosPorRealResgate=porReal;
}})
.catch(function (){
fid.saldo=null;
});
}
function updateResumo(ctx, node, state, selPerm, selChegada){
var dataEl=node.querySelector('[data-bind-resumo="data"]');
var chegadaEl=node.querySelector('[data-bind-resumo="chegada"]');
var periodoEl=node.querySelector('[data-bind-resumo="periodo"]');
var totalEl=node.querySelector('[data-slot="total"]');
var descontoRow=node.querySelector('[data-booking="desconto-row"]');
var descontoVal=node.querySelector('[data-booking="desconto-valor"]');
var fid=state.fidelidade;
if(dataEl) dataEl.textContent=pad2(state.selD) + "-" + pad2(state.selM + 1) + "-" + state.selY;
if(chegadaEl) chegadaEl.textContent=selChegada||"--:--";
if(periodoEl) periodoEl.textContent=selPerm ? selPerm.label:"--";
var bruto=selPerm&&isFinite(selPerm.valor) ? selPerm.valor:state.fallbackValor;
if(fid){
if(selPerm&&isFinite(selPerm.valor)&&selPerm.valor > 0){
fid.valorBrutoPeriodo=selPerm.valor;
if(!fidelidadeCupomAtivo(fid)){
limparDescontoFidelidadeState(fid, selPerm.valor);
}}else{
fid.valorBrutoPeriodo=0;
if(!fidelidadeCupomAtivo(fid)){
limparDescontoFidelidadeState(fid, 0);
}}
}
var exibirTotal=bruto;
if(fid&&fidelidadeCupomAtivo(fid)&&isFinite(fid.valorTotal)){
exibirTotal=fid.valorTotal;
}
if(totalEl){
if(selPerm&&isFinite(selPerm.valor)) totalEl.textContent=formatMoneyBR(exibirTotal);
else if(isFinite(state.fallbackValor)) totalEl.textContent=formatMoneyBR(state.fallbackValor);
}
if(descontoRow&&descontoVal&&fid){
var cupomAtivo=fidelidadeCupomAtivo(fid);
var showDesc =
cupomAtivo&&(fid.descontoCupom > 0||(fid.descontoLabel&&String(fid.descontoLabel).trim().length > 0));
if(showDesc){
if(fid.tipoDesconto&&fid.tipoDesconto.indexOf("porcent") >=0&&fid.descontoLabel){
descontoVal.textContent="- " + fid.descontoLabel;
}else if(fid.descontoCupom > 0){
descontoVal.textContent="- " + formatMoneyBR(fid.descontoCupom);
}else{
descontoVal.textContent="-";
}
descontoRow.removeAttribute("hidden");
}else{
descontoVal.textContent="";
descontoRow.setAttribute("hidden", "hidden");
}}
if(fid&&typeof state.syncFidelidadeUi==="function") state.syncFidelidadeUi();
}
function setReservarEnabled(btn, on){
if(!btn) return;
btn.disabled = !on;
if(on) btn.classList.remove("-disabled");
else btn.classList.add("-disabled");
}
function lockBookingSelects(selPerm, selChe){
if(!selPerm||!selChe) return;
selPerm.disabled=true;
selChe.disabled=true;
selPerm.innerHTML="";
var o1=document.createElement("option");
o1.value="";
o1.textContent="Indisponível";
selPerm.appendChild(o1);
selChe.innerHTML="";
var o2=document.createElement("option");
o2.value="";
o2.textContent="Indisponível";
selChe.appendChild(o2);
}
function previewForLog(v, max){
max=max||500;
var s=String(v==null ? "":v);
if(s.length > max) return s.slice(0, max) + "… (+" + (s.length - max) + " caracteres)";
return s;
}
function shallowTermoFields(obj){
if(!obj||typeof obj!=="object") return {};
var out={};
Object.keys(obj).forEach(function (k){
if(!/termo/i.test(k)) return;
var v=obj[k];
out[k]=typeof v==="string" ? previewForLog(v, 600):v;
});
return out;
}
function logTermosDebug(merged, base, detJson, context){
var model=window.BDMChatMotelModel||{};
var motel=model&&model.motel&&typeof model.motel==="object" ? model.motel:null;
var payload={
onde: context||"",
merged: shallowTermoFields(merged),
base: shallowTermoFields(base),
motel: motel ? shallowTermoFields(motel):{},
model: shallowTermoFields(model)
};
if(detJson&&typeof detJson==="object"){
payload.detalhes_raiz=shallowTermoFields(detJson);
if(detJson.data&&typeof detJson.data==="object") payload.detalhes_data=shallowTermoFields(detJson.data);
if(detJson.suite&&typeof detJson.suite==="object") payload.detalhes_suite=shallowTermoFields(detJson.suite);
if(detJson.detalhes&&typeof detJson.detalhes==="object") payload.detalhes_nested=shallowTermoFields(detJson.detalhes);
}
var urls=[];
function tryUrl(s){
var t=String(s==null ? "":s).trim();
if(/^https?:\/\//i.test(t)&&urls.indexOf(t) < 0) urls.push(t);
}
[merged, base, motel, model, detJson, detJson&&detJson.data, detJson&&detJson.suite, detJson&&detJson.detalhes].forEach(function (o){
if(!o||typeof o!=="object") return;
Object.keys(o).forEach(function (k){
if(!/termo/i.test(k)) return;
tryUrl(o[k]);
});
});
urls.forEach(function (url){
fetch(url, { credentials: "omit", mode: "cors" })
.then(function (r){
return r.text().then(function (t){});
})
.catch(function (err){
console.log("[BDM chat termos] erro ao buscar URL (CORS/rede?)", url, err);
});
});
}
function sanitizeTermosHtml(rawHtml){
var source=String(rawHtml==null ? "":rawHtml).trim();
if(!source) return "";
var root=document.createElement("div");
root.innerHTML=source;
var blocked=root.querySelectorAll("script,style,iframe,object,embed,link,meta,base,form,input,textarea,select,button");
for (var i=0; i < blocked.length; i++){
var n=blocked[i];
if(n&&n.parentNode) n.parentNode.removeChild(n);
}
var all=root.querySelectorAll("*");
for (var j=0; j < all.length; j++){
var el=all[j];
for (var k=el.attributes.length - 1; k >=0; k--){
var attr=el.attributes[k];
var name=String(attr.name||"").toLowerCase();
var value=String(attr.value||"");
if(name.indexOf("on")===0){
el.removeAttribute(attr.name);
continue;
}
if((name==="href"||name==="src"||name==="xlink:href")&&/^\s*javascript:/i.test(value)){
el.removeAttribute(attr.name);
}}
}
return root.innerHTML.trim();
}
function readSuiteTermsHtml(merged, base){
var model=window.BDMChatMotelModel||{};
var motel=model&&model.motel&&typeof model.motel==="object" ? model.motel:null;
var sources=[merged, base, motel, model];
for (var i=0; i < sources.length; i++){
var src=sources[i];
if(!src||typeof src!=="object") continue;
if(Object.prototype.hasOwnProperty.call(src, "termos")){
var rawT=src.termos;
var sanitized=sanitizeTermosHtml(rawT);
if(sanitized) return sanitized;
if(rawT!=null&&String(rawT).trim()!==""){
console.log("[BDM chat termos] campo `termos` existe mas ficou vazio após sanitize (não é HTML útil?)", {
origem: i,
tipo: typeof rawT,
preview: previewForLog(rawT, 300)
});
}}
}
return "";
}
function extractTermosFromRestJson(json){
if(!json) return "";
if(Array.isArray(json)){
for (var a=0; a < json.length; a++){
var row=json[a];
if(row&&typeof row==="object"&&typeof row.termos==="string"&&row.termos.trim()!==""){
return row.termos;
}}
return "";
}
if(typeof json!=="object") return "";
if(json.erro) return "";
var keys=["termos", "texto", "conteudo", "html", "content", "body"];
var i;
for (i=0; i < keys.length; i++){
var k=keys[i];
if(Object.prototype.hasOwnProperty.call(json, k)){
var v=json[k];
if(typeof v==="string"&&v.trim()!=="") return v;
}}
var data=json.data;
if(data&&typeof data==="object"){
for (i=0; i < keys.length; i++){
var k2=keys[i];
if(Object.prototype.hasOwnProperty.call(data, k2)){
var v2=data[k2];
if(typeof v2==="string"&&v2.trim()!=="") return v2;
}}
}
if(typeof data==="string"&&data.trim()!=="") return data;
return "";
}
function fetchPainelTermosJquery(panelUrl){
var bdm=window.motelswingChat||{};
var url=String(panelUrl||bdm.panelTermosAbsUrl||"").trim();
if(typeof window.jQuery==="undefined"||!url){
return Promise.resolve(null);
}
var $=window.jQuery;
return new Promise(function (resolve){
$.ajax({
url: url,
type: "POST",
dataType: "text",
timeout: 30000
})
.done(function (text){
var s=typeof text==="string" ? text:String(text==null ? "":text);
var parsed=null;
try {
parsed=s ? JSON.parse(s):null;
} catch (e){
parsed=null;
}
if(parsed&&typeof parsed==="object"){
resolve(parsed);
return;
}
if(s.trim()!==""){
resolve({ termos: s });
return;
}
resolve(null);
})
.fail(function (xhr, status, err){
console.log("[BDM chat termos] $.ajax POST ao painel falhou:", status, err, xhr&&xhr.status);
resolve(null);
});
});
}
function resolveTermsModalHost(hostNode){
if(!hostNode||!hostNode.closest) return hostNode;
var openPanel=hostNode.closest(".bdm-chat-panel.is-open");
if(openPanel) return openPanel;
var panel=hostNode.closest(".bdm-chat-panel");
if(panel) return panel;
var root=hostNode.closest("#bdm-chat-container");
return root||hostNode;
}
function closeTermsModal(hostNode){
var rootHost=resolveTermsModalHost(hostNode);
if(!rootHost||!rootHost.querySelector) return;
var modal=rootHost.querySelector(".bdm-terms-modal-backdrop");
if(modal&&modal.parentNode){
modal.parentNode.removeChild(modal);
}}
function fetchTermosRest(ctx, restUrl){
var url=String(restUrl||"").trim();
if(!url) return Promise.resolve(null);
return fetch(url, {
method: "POST",
credentials: "same-origin",
headers: window.BDMChatPages.mergeWidgetAuthHeaders({ "Content-Type": "application/json" }),
body: "{}"
})
.then(function (r){
return r.json();
})
.catch(function (){
return null;
});
}
function openTermsModal(hostNode, termsHtml, onAccept, modalTitle){
if(!hostNode) return;
var rootHost=resolveTermsModalHost(hostNode);
if(!rootHost) return;
closeTermsModal(rootHost);
var backdrop=document.createElement("div");
backdrop.className="bdm-terms-modal-backdrop";
var panel=document.createElement("div");
panel.className="bdm-terms-modal";
var head=document.createElement("div");
head.className="bdm-terms-modal-head";
var title=document.createElement("h3");
title.className="bdm-terms-modal-title";
title.textContent=modalTitle||"Termos de uso";
var acceptBtn=document.createElement("button");
acceptBtn.type="button";
acceptBtn.className="bdm-terms-modal-accept";
acceptBtn.textContent="Aceito";
var body=document.createElement("div");
body.className="bdm-terms-modal-body";
body.innerHTML=termsHtml||"<p>Termos indisponíveis no momento.</p>";
head.appendChild(title);
head.appendChild(acceptBtn);
panel.appendChild(head);
panel.appendChild(body);
backdrop.appendChild(panel);
rootHost.appendChild(backdrop);
acceptBtn.addEventListener("click", function (e){
e.preventDefault();
e.stopPropagation();
console.log("[BDM chat termos] botão Aceito no modal", {
termsHtmlLength: String(termsHtml||"").length,
preview: previewForLog(termsHtml, 200)
});
if(typeof onAccept==="function") onAccept();
closeTermsModal(rootHost);
});
}
function bindBooking(ctx, node, state, precosPayload, precosArr, minDate, merged, base, detJson, intervalosFechamento, idSuite){
state.intervalosFechamento=intervalosFechamento&&intervalosFechamento.length ? intervalosFechamento:[];
state.fidelidade=createFidelidadeState();
var fid=state.fidelidade;
var selPerm=node.querySelector('[data-booking="permanencia"]');
var selChe=node.querySelector('[data-booking="chegada"]');
var cupomInp=node.querySelector('[data-booking="cupom"]');
var cupomWrap=node.querySelector('[data-booking="cupom-wrap"]');
var cupomApplyBtn=node.querySelector('[data-booking="cupom-apply"]');
var fidelidadeBox=node.querySelector('[data-slot="fidelidade-reserva-box"]');
var fidelidadeCheck=node.querySelector('[data-booking="fidelidade-check"]');
var cupomApplySeq=0;
var fidelidadeHint=node.querySelector('[data-booking="fidelidade-hint"]');
var termos=node.querySelector('[data-booking="termos"]');
var applyBtn=cupomApplyBtn||node.querySelector(".bdm-booking-apply");
var termLink=node.querySelector(".bdm-booking-terms-link");
var interacaoSection=node.querySelector('[data-slot="interacao-section"]');
var interacaoTermosWrap=node.querySelector('[data-slot="interacao-termos-wrap"]');
var interacaoCheck=node.querySelector('[data-booking="interacao-check"]');
var termosInteracaoCheck=node.querySelector('[data-booking="termos-interacao-check"]');
var resBtn=node.querySelector("[data-suite-reservar]");
var suiteInterativa=isSuiteInterativaFlag(merged, base, detJson);
state.suiteInterativa=suiteInterativa;
state.interacaoChecked=false;
state.termosInteracaoChecked=false;
var termsHtml=readSuiteTermsHtml(merged, base);
logTermosDebug(merged, base, detJson, "ao montar reserva (suite-detalhes)");
function syncInteracaoUi(){
if(!interacaoSection) return;
if(suiteInterativa){
interacaoSection.removeAttribute("hidden");
}else{
interacaoSection.setAttribute("hidden", "hidden");
state.interacaoChecked=false;
state.termosInteracaoChecked=false;
if(interacaoCheck) interacaoCheck.checked=false;
if(termosInteracaoCheck) termosInteracaoCheck.checked=false;
}
if(interacaoTermosWrap){
if(state.interacaoChecked) interacaoTermosWrap.removeAttribute("hidden");
else {
interacaoTermosWrap.setAttribute("hidden", "hidden");
state.termosInteracaoChecked=false;
if(termosInteracaoCheck) termosInteracaoCheck.checked=false;
}}
syncTermsButton();
}
function openTermosInterativaModalComFallback(hostNode, onAcceptCb){
fetchTermosRest(ctx, ctx.urls.suiteTermosInterativa)
.then(function (json){
var raw=extractTermosFromRestJson(json);
if(raw&&String(raw).trim()) return raw;
var bdm=window.motelswingChat||{};
return fetchPainelTermosJquery(bdm.panelTermosInterativaAbsUrl).then(function (j2){
return extractTermosFromRestJson(j2);
});
})
.then(function (raw){
if(!raw||!String(raw).trim()){
toast(ctx, "Termos de interação indisponíveis no momento.");
return;
}
var safe=sanitizeTermosHtml(raw);
if(!safe){
toast(ctx, "Termos de interação indisponíveis no momento.");
return;
}
openTermsModal(hostNode, safe, onAcceptCb, "Termos de uso da interação");
});
}
function openTermosModalComFallback(hostNode, onAcceptCb){
var local=readSuiteTermsHtml(merged, base);
if(local){
openTermsModal(hostNode, local, onAcceptCb);
return;
}
fetchPainelTermosJquery().then(function (json){
var raw=extractTermosFromRestJson(json);
if(!raw||!String(raw).trim()){
logTermosDebug(merged, base, detJson, "termos — POST ao painel sem HTML (CORS bloqueou? token?)");
toast(ctx, "Termos de uso indisponíveis no momento.");
return;
}
merged.termos=raw;
var safe=sanitizeTermosHtml(raw);
if(!safe){
toast(ctx, "Termos de uso indisponíveis no momento.");
return;
}
openTermsModal(hostNode, safe, onAcceptCb);
});
}
if(!termsHtml){
console.log("[BDM chat termos] sem HTML ao montar — link/checkbox fazem POST (jQuery) ao painel se precisar.");
}
var fb=state.fallbackValor;
var lastPrecosArr=precosArr&&precosArr.length ? precosArr.slice():[];
function getValorBrutoPeriodoAtual(){
var p=currentPermOption();
if(!p||!isFinite(p.valor)||p.valor <=0) return 0;
return Number(p.valor);
}
function getPontosNecessariosAtual(){
var bruto=getValorBrutoPeriodoAtual();
return pontosNecessariosReserva(bruto, fid.valorRealPorPonto, fid.pontosPorRealResgate);
}
function podeUsarPontosFidelidade(){
var pages=window.BDMChatPages||{};
if(!pages.isLogged||!pages.isLogged()) return false;
if(fid.saldo===null||!fid.programaAtivo) return false;
if(!selPerm||selPerm.disabled||selPerm.value==="") return false;
if(!selChe||selChe.disabled||selChe.value==="") return false;
var bruto=getValorBrutoPeriodoAtual();
if(bruto <=0) return false;
var need=getPontosNecessariosAtual();
if(need <=0) return false;
return Math.floor(Number(fid.saldo)) >=need;
}
function syncCupomWrapVisibility(){
if(!cupomWrap) return;
if(fid.usarPontos||fid.ocultarCampoCupom) cupomWrap.setAttribute("hidden", "hidden");
else cupomWrap.removeAttribute("hidden");
}
function syncFidelidadeUi(){
if(!fidelidadeBox) return;
if(podeUsarPontosFidelidade()){
fidelidadeBox.removeAttribute("hidden");
var need=getPontosNecessariosAtual();
if(fidelidadeHint){
var hintPontos=fid.pontosUtilizados > 0 ? fid.pontosUtilizados:need;
fidelidadeHint.textContent =
"Esta reserva utiliza " + hintPontos + " pontos (seu saldo: " + fid.saldo + ").";
}}else{
fidelidadeBox.setAttribute("hidden", "hidden");
if(fid.usarPontos||fid.cupom||fid.cupomManual||fid.descontoLabel){
limparDescontoFidelidadeState(fid, getValorBrutoPeriodoAtual());
}
if(fidelidadeCheck) fidelidadeCheck.checked=false;
}
if(fidelidadeCheck){
fidelidadeCheck.checked = !!fid.usarPontos;
fidelidadeCheck.disabled = !!fid.aplicandoCupom;
}
syncCupomWrapVisibility();
}
state.syncFidelidadeUi=syncFidelidadeUi;
function limparEstadoCupomEFidelidade(){
cupomApplySeq +=1;
limparDescontoFidelidadeState(fid, getValorBrutoPeriodoAtual());
if(fidelidadeCheck) fidelidadeCheck.checked=false;
if(cupomInp) cupomInp.value="";
syncFidelidadeUi();
}
function buildCupomPayload(codigoCupom){
var pages=window.BDMChatPages||{};
var uid=pages.getUsuarioId ? pages.getUsuarioId():0;
var sel=getSelection();
var valorPeriodo=String((getValorBrutoPeriodoAtual()||0).toFixed(2));
var payload={
id_usuario: uid,
id_suite: idSuite,
cupom: codigoCupom,
valor_periodo: valorPeriodo
};
if(codigoCupom!==CUPOM_FIDELIDADE){
payload.valor=valorPeriodo;
payload.valor_bruto=valorPeriodo;
payload.data_reserva=buildReservaDateTimeFromState(state);
payload.chegada_reserva=String(sel.chegada||"");
payload.periodo_reserva=String(sel.periodoReserva||sel.periodoLabel||"");
}
return payload;
}
function aplicarCupomRequest(codigoCupom){
var url=(ctx.urls.cupomAplicar||"").trim();
if(!url) return Promise.reject(new Error("Cupom indisponível."));
var payload=buildCupomPayload(codigoCupom);
var pagesCupom=window.BDMChatPages||{};
if(pagesCupom.fetchWidgetJsonWithStatus){
return pagesCupom.fetchWidgetJsonWithStatus(ctx, "cupomAplicar", payload, url);
}
return fetch(url, {
method: "POST",
credentials: "same-origin",
headers: pagesCupom.mergeWidgetAuthHeaders({ "Content-Type": "application/json" }),
body: JSON.stringify(payload)
}).then(function (r){
return r.json()
.then(function (j){
return { status: r.status, json: j };})
.catch(function (){
return { status: r.status, json: { erro: "Resposta inválida do servidor." }};});
});
}
function removerCupomFidelidade(){
limparEstadoCupomEFidelidade();
refresh();
}
function aplicarCupomFidelidade(){
if(!podeUsarPontosFidelidade()){
toast(ctx, "Saldo de pontos insuficiente para esta reserva.");
return Promise.resolve(false);
}
var seq=++cupomApplySeq;
fid.aplicandoCupom=true;
syncFidelidadeUi();
return aplicarCupomRequest(CUPOM_FIDELIDADE)
.then(function (res){
if(seq!==cupomApplySeq) return false;
var data=res&&res.json ? res.json:{};
if(res.status < 200||res.status >=300){
throw new Error(String((data&&data.erro)||"Não foi possível aplicar os pontos."));
}
var bruto=getValorBrutoPeriodoAtual();
var parsed=parseCupomAplicarResponse(data, bruto);
if(!parsed||parsed.erro){
throw new Error(parsed&&parsed.erro ? parsed.erro:"Cupom de fidelidade inválido.");
}
fid.usarPontos=true;
fid.cupom=CUPOM_FIDELIDADE;
fid.cupomManual="";
applyCupomParsedToFidelidade(fid, parsed, bruto);
if(cupomInp) cupomInp.value="";
refresh();
return true;
})
.catch(function (err){
if(seq!==cupomApplySeq) return false;
limparDescontoFidelidadeState(fid, getValorBrutoPeriodoAtual());
if(fidelidadeCheck) fidelidadeCheck.checked=false;
toast(ctx, err&&err.message ? err.message:"Não foi possível usar os pontos.");
refresh();
return false;
})
.finally(function (){
fid.aplicandoCupom=false;
syncFidelidadeUi();
});
}
function aplicarCupomManual(){
if(fid.usarPontos){
toast(ctx, "Remova os pontos de fidelidade para usar outro cupom.");
return;
}
var c=cupomInp ? cupomInp.value.trim().toUpperCase():"";
if(!c){
toast(ctx, "Informe um cupom.");
return;
}
if(c===CUPOM_FIDELIDADE){
toast(ctx, "Use a opção acima para pagar com pontos de fidelidade.");
return;
}
var sel=getSelection();
if(sel.blocked||!sel.periodoLabel||!sel.chegada){
toast(ctx, "Selecione permanência e horário de chegada.");
return;
}
var seqManual=++cupomApplySeq;
fid.aplicandoCupom=true;
if(applyBtn) applyBtn.disabled=true;
aplicarCupomRequest(c)
.then(function (res){
if(seqManual!==cupomApplySeq) return;
var data=res&&res.json ? res.json:{};
if(res.status < 200||res.status >=300){
throw new Error(String((data&&data.erro)||"Cupom inválido."));
}
var bruto=getValorBrutoPeriodoAtual();
var parsed=parseCupomAplicarResponse(data, bruto);
if(!parsed||parsed.erro){
throw new Error(parsed&&parsed.erro ? parsed.erro:"Cupom inválido.");
}
fid.cupomManual=c;
fid.cupom=c;
fid.usarPontos=false;
applyCupomParsedToFidelidade(fid, parsed, bruto);
refresh();
toast(ctx, "Cupom aplicado.");
})
.catch(function (err){
if(seqManual===cupomApplySeq){
limparDescontoFidelidadeState(fid, getValorBrutoPeriodoAtual());
}
toast(ctx, err&&err.message ? err.message:"Não foi possível aplicar o cupom.");
refresh();
})
.finally(function (){
fid.aplicandoCupom=false;
if(applyBtn) applyBtn.disabled=false;
syncFidelidadeUi();
});
}
function onUsarPontosFidelidadeChange(checked){
if(!checked){
removerCupomFidelidade();
return;
}
if(!podeUsarPontosFidelidade()){
if(fidelidadeCheck) fidelidadeCheck.checked=false;
toast(ctx, "Saldo de pontos insuficiente para esta reserva.");
return;
}
aplicarCupomFidelidade();
}
carregarSaldoFidelidade(ctx, fid).then(function (){
syncFidelidadeUi();
refresh();
});
function isDateSelectionBlocked(){
return (
isDateBeforeMin(state.selY, state.selM, state.selD, minDate) ||
(isDisp0Combined(merged, base)&&isRealToday(state.selY, state.selM, state.selD))
);
}
function isPrecosEmptyForDay(){
return !lastPrecosArr.length;
}
function currentPermOption(){
var opt=selPerm.options[selPerm.selectedIndex];
if(!opt||opt.value===""||!opt._bdm){
return { label: "", valor: NaN, raw: null };}
return opt._bdm;
}
function currentChegada(){
var opt=selChe.options[selChe.selectedIndex];
if(!opt||opt.value==="") return "";
return opt._bdmH||opt.textContent||"";
}
function getSelection(){
var p=currentPermOption();
var c=currentChegada();
var v=p&&isFinite(p.valor) ? p.valor:NaN;
return {
blocked: isSelectionBlocked(),
periodoLabel: p&&p.label ? p.label:"",
periodoReserva: p&&p.periodoApi ? String(p.periodoApi):(p&&p.label ? normalizePeriodoReserva(p.label):""),
chegada: c||"",
valor: isFinite(v) ? v:0
};}
function isSelectionBlocked(){
return isDateSelectionBlocked()||isPrecosEmptyForDay();
}
function refresh(){
var blocked=isSelectionBlocked();
if(blocked){
updateResumo(ctx, node, state, null, blocked&&isPrecosEmptyForDay()&&!isDateSelectionBlocked() ? "Indisponível":"--");
syncTermsButton();
return;
}
var p=currentPermOption();
var c=currentChegada();
var v=p.valor;
if(!isFinite(v)) v=fb;
updateResumo(
ctx,
node,
state,
p&&p.label ? p:null,
c||(selChe&&selChe.value==="" ? "":c)
);
syncTermsButton();
}
function isReservaFormReady(){
if(isSelectionBlocked()) return false;
if(!termos||!termos.checked) return false;
if(suiteInterativa&&state.interacaoChecked&&!state.termosInteracaoChecked) return false;
if(isDateBeforeMin(state.selY, state.selM, state.selD, minDate)) return false;
if(isDisp0Combined(merged, base)&&isRealToday(state.selY, state.selM, state.selD)) return false;
if(!selPerm||selPerm.disabled||selPerm.value==="") return false;
if(!selChe||selChe.disabled||selChe.value==="") return false;
var p=currentPermOption();
if(!p||!p.label) return false;
var c=currentChegada();
if(!c||!String(c).trim()) return false;
return true;
}
function syncTermsButton(){
setReservarEnabled(resBtn, isReservaFormReady());
}
function applySelectsState(arr){
lastPrecosArr=arr&&arr.length ? arr.slice():[];
var dateBlocked=isDateSelectionBlocked();
var precosEmpty = !lastPrecosArr.length;
state.precosEmptyForDay = !dateBlocked&&precosEmpty;
if(dateBlocked||precosEmpty){
lockBookingSelects(selPerm, selChe);
}else{
selPerm.disabled=false;
selChe.disabled=false;
fillPermanencia(selPerm, lastPrecosArr, fb);
fillChegada(selChe, state, state.intervalosFechamento);
}
refresh();
syncTermsButton();
}
applySelectsState(lastPrecosArr);
selPerm.addEventListener("change", function (){
limparEstadoCupomEFidelidade();
refresh();
});
selChe.addEventListener("change", function (){
limparEstadoCupomEFidelidade();
refresh();
});
if(termos){
termos.addEventListener("change", function (){
if(!termos.checked){
syncTermsButton();
return;
}
termos.checked=false;
syncTermsButton();
openTermosModalComFallback(node, function (){
termos.checked=true;
syncTermsButton();
});
});
}
if(interacaoCheck){
interacaoCheck.addEventListener("change", function (){
state.interacaoChecked = !!interacaoCheck.checked;
if(!state.interacaoChecked){
state.termosInteracaoChecked=false;
if(termosInteracaoCheck) termosInteracaoCheck.checked=false;
}
syncInteracaoUi();
});
}
if(termosInteracaoCheck){
termosInteracaoCheck.addEventListener("change", function (){
if(!state.interacaoChecked){
termosInteracaoCheck.checked=false;
state.termosInteracaoChecked=false;
syncTermsButton();
return;
}
if(!termosInteracaoCheck.checked){
state.termosInteracaoChecked=false;
syncTermsButton();
return;
}
termosInteracaoCheck.checked=false;
state.termosInteracaoChecked=false;
syncTermsButton();
openTermosInterativaModalComFallback(node, function (){
state.termosInteracaoChecked=true;
if(termosInteracaoCheck) termosInteracaoCheck.checked=true;
syncTermsButton();
});
});
}
syncInteracaoUi();
if(applyBtn){
applyBtn.addEventListener("click", function (e){
e.preventDefault();
e.stopPropagation();
aplicarCupomManual();
});
}
if(fidelidadeCheck){
fidelidadeCheck.addEventListener("change", function (){
onUsarPontosFidelidadeChange(!!fidelidadeCheck.checked);
});
}
if(termLink){
termLink.addEventListener("click", function (e){
e.preventDefault();
e.stopPropagation();
openTermosModalComFallback(node, function (){
if(termos) termos.checked=true;
syncTermsButton();
});
});
}
return {
refresh: refresh,
termos: termos,
getSelection: getSelection,
getPontosNecessariosAtual: getPontosNecessariosAtual,
podeUsarPontosFidelidade: podeUsarPontosFidelidade,
limparCupomEFidelidade: limparEstadoCupomEFidelidade,
refillChegada: function (){
applySelectsState(lastPrecosArr);
},
refillPermanencia: function (arr){
limparEstadoCupomEFidelidade();
lastPrecosArr=arr&&arr.length ? arr.slice():[];
applySelectsState(lastPrecosArr);
},
syncTermsButton: syncTermsButton
};}
window.BDMChatPages.suiteDetalhes=function (ctx){
ctx.state.currentView="suiteDetalhes";
var base=ctx.state.selectedSuite||{};
var idSuite=parseInt(
String(base.id_suite!=null&&base.id_suite!=="" ? base.id_suite:base.id||""),
10
);
if(!idSuite){
ctx.body.textContent="Suíte inválida.";
return;
}
var detUrl=(ctx.urls.suiteDetalhes||"").trim();
var preUrl=(ctx.urls.suitePrecos||"").trim();
if(!detUrl||!preUrl){
ctx.body.textContent="Rotas de detalhes não configuradas.";
return;
}
var pagesLoad=window.BDMChatPages||{};
function fetchDetalhes(){
if(pagesLoad.fetchWidgetJson){
return pagesLoad.fetchWidgetJson(ctx, "detalhes", { id_suite: idSuite }, detUrl);
}
return fetch(detUrl, {
method: "POST",
credentials: "same-origin",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ id_suite: idSuite })
}).then(function (r){ return r.json(); });
}
function fetchPrecos(state){
var fields={ id_suite: idSuite, selectDate: selectDateForPrecosApi(state) };
if(pagesLoad.fetchWidgetJson){
return pagesLoad.fetchWidgetJson(ctx, "precos", fields, preUrl);
}
return fetch(preUrl, {
method: "POST",
credentials: "same-origin",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(fields)
}).then(function (r){ return r.json(); });
}
function fetchTermos(){
return fetchPainelTermosJquery();
}
function fetchIntervalosFechamento(){
var url=(ctx.urls.intervalosFechamento||"").trim();
if(!url) return Promise.resolve([]);
var loadIntervalos=pagesLoad.fetchWidgetJson
? pagesLoad.fetchWidgetJson(ctx, "intervalos", {}, url)
: fetch(url, {
method: "POST",
credentials: "same-origin",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({})
}).then(function (r){ return r.json(); });
return loadIntervalos
.then(function (j){ return normalizeIntervalosList(j); })
.catch(function (){ return []; });
}
var initialMinDate=getInitialPrecosMinDate(base);
var initialPrecosState={
selY: initialMinDate.getFullYear(),
selM: initialMinDate.getMonth(),
selD: initialMinDate.getDate()
};
Promise.all([
ctx.loadTemplate("suite-detalhes"),
fetchDetalhes(),
fetchPrecos(initialPrecosState),
fetchTermos(),
fetchIntervalosFechamento()
])
.then(function (arr){
var html=arr[0];
var detJson=unwrapDetalhesJson(arr[1]);
var preJson=normalizePrecosApiResponse(arr[2]);
var termJson=arr[3];
var intervalosJson=arr[4];
if(detJson&&detJson.erro){
ctx.body.textContent=String(detJson.erro);
return;
}
var suiteApi=normalizeDetalhesPayload(detJson);
var merged=buildMergedSuite(base, suiteApi, detJson);
var minDate=getCalendarMinDateForSuite(merged, base);
var precosMismatch =
!sameCalendarDay(minDate, initialMinDate)||(preJson&&preJson.erro&&!isPrecosUnavailableErroMessage(preJson.erro));
if(precosMismatch){
return fetchPrecos({
selY: minDate.getFullYear(),
selM: minDate.getMonth(),
selD: minDate.getDate()
}).then(function (pre2){
return {
html: html,
detJson: detJson,
preJson: normalizePrecosApiResponse(pre2),
merged: merged,
suiteApi: suiteApi,
minDate: minDate,
termJson: termJson,
intervalosFechamento: intervalosJson
};});
}
return {
html: html,
detJson: detJson,
preJson: preJson,
merged: merged,
suiteApi: suiteApi,
minDate: minDate,
termJson: termJson,
intervalosFechamento: intervalosJson
};})
.then(function (pack){
if(!pack) return;
var html=pack.html;
var preJson=pack.preJson;
var merged=pack.merged;
var minDate=pack.minDate;
if(preJson&&preJson.erro){
ctx.body.textContent=String(preJson.erro);
return;
}
var termosPainel=extractTermosFromRestJson(pack.termJson);
if(termosPainel){
merged.termos=termosPainel;
}
var texto=ctx.htmlToText(merged.texto||"");
var imgItems=imagesFromDetail(merged);
if(!imgItems.length){
var one=ctx.firstImageFromSuite(merged);
if(one) imgItems=[{ image: one, thumb: one }];
}
var precosArr=normalizePrecosList(preJson);
var fallbackValor=parseMoneyAny(merged.apartir||merged.preco||merged.valor);
if(!isFinite(fallbackValor)) fallbackValor=0;
var intervalosFechamento=normalizeIntervalosList(pack.intervalosFechamento);
var state={
calYear: minDate.getFullYear(),
calMonth: minDate.getMonth(),
selY: minDate.getFullYear(),
selM: minDate.getMonth(),
selD: minDate.getDate(),
fallbackValor: fallbackValor,
intervalosFechamento: intervalosFechamento,
precosEmptyForDay: isPrecosListEmpty(preJson),
interacaoChecked: false,
termosInteracaoChecked: false,
suiteInterativa: isSuiteInterativaFlag(merged, base, pack.detJson)
};
var node=ctx.htmlToNode(html);
var gSlot=node.querySelector('[data-slot="gallery"]');
var descSlot=node.querySelector('[data-slot="descricao"]');
var calSlot=node.querySelector('[data-slot="calendar"]');
var bookingRef={ booking: null };
if(gSlot) renderGallery(ctx, gSlot, imgItems);
if(descSlot) descSlot.textContent=texto||"—";
function onDayChanged(){
if(bookingRef.booking&&bookingRef.booking.limparCupomEFidelidade){
bookingRef.booking.limparCupomEFidelidade();
}
syncBookingUnavailableUi(node, merged, base, state, minDate, bookingRef.booking);
fetchPrecos(state).then(function (pj){
pj=normalizePrecosApiResponse(pj);
if(pj&&pj.erro){
ctx.body.textContent=String(pj.erro);
return;
}
var arr=normalizePrecosList(pj);
state.precosEmptyForDay=isPrecosListEmpty(pj);
if(bookingRef.booking&&bookingRef.booking.refillPermanencia){
bookingRef.booking.refillPermanencia(arr);
}
syncBookingUnavailableUi(node, merged, base, state, minDate, bookingRef.booking);
}).catch(function (){
state.precosEmptyForDay=true;
if(bookingRef.booking&&bookingRef.booking.refillPermanencia){
bookingRef.booking.refillPermanencia([]);
}
syncBookingUnavailableUi(node, merged, base, state, minDate, bookingRef.booking);
});
}
if(calSlot){
renderCalendar(ctx, calSlot, state, minDate, onDayChanged);
}
var booking=bindBooking(ctx, node, state, preJson, precosArr, minDate, merged, base, pack.detJson, intervalosFechamento, idSuite);
bookingRef.booking=booking;
syncBookingUnavailableUi(node, merged, base, state, minDate, booking);
ctx.wireActions(node);
var resBtn=node.querySelector("[data-suite-reservar]");
if(resBtn){
resBtn.addEventListener("click", function (e){
e.stopPropagation();
if(isDisp0Combined(merged, base)&&isRealToday(state.selY, state.selM, state.selD)){
toast(ctx, "Esta suíte não está disponível para hoje. Escolha amanhã ou outra data.");
return;
}
if(isDateBeforeMin(state.selY, state.selM, state.selD, minDate)){
toast(ctx, "Esta suíte não está disponível na data selecionada. Escolha outro dia.");
return;
}
if(state.precosEmptyForDay){
toast(ctx, "Indisponível para o dia selecionado.");
return;
}
if(booking.termos&&!booking.termos.checked){
toast(ctx, "Aceite os termos de uso para continuar.");
return;
}
if(state.suiteInterativa&&state.interacaoChecked&&!state.termosInteracaoChecked){
toast(ctx, "Aceite os termos de uso da interação.");
return;
}
var selection=booking.getSelection ? booking.getSelection():null;
if(!selection||selection.blocked){
toast(ctx, "Selecione uma data disponível para reservar.");
return;
}
if(!selection.periodoLabel||!String(selection.periodoLabel).trim()){
toast(ctx, "Selecione a permanência.");
return;
}
if(!selection.chegada||!String(selection.chegada).trim()){
toast(ctx, "Selecione o horário de chegada.");
return;
}
var pages=window.BDMChatPages||{};
var uid=pages.getUsuarioId ? pages.getUsuarioId():0;
if(!uid){
toast(ctx, "Faça login novamente para concluir a reserva.");
return;
}
var user=pages.getUserRecord ? pages.getUserRecord():null;
var userPayload=user&&user.payload&&typeof user.payload==="object" ? user.payload:{};
var fid=state.fidelidade||{};
var valorBruto =
isFinite(fid.valorBrutoPeriodo)&&fid.valorBrutoPeriodo > 0
? fid.valorBrutoPeriodo
: isFinite(selection.valor)
? selection.valor
: 0;
var valorFinal=valorBruto;
if(fidelidadeCupomAtivo(fid)&&isFinite(fid.valorTotal)){
valorFinal=fid.valorTotal;
}
var pontosEnvio=0;
var cupomEnvio=String(fid.cupom||fid.cupomManual||"").trim();
if(fid.usarPontos){
pontosEnvio=fid.pontosUtilizados > 0
? fid.pontosUtilizados
: booking.getPontosNecessariosAtual
? booking.getPontosNecessariosAtual()
: pontosNecessariosReserva(valorBruto, fid.valorRealPorPonto, fid.pontosPorRealResgate);
if(!pontosEnvio||Math.floor(Number(fid.saldo)) < pontosEnvio){
toast(ctx, "Saldo de pontos insuficiente para esta reserva.");
return;
}
if(!cupomEnvio) cupomEnvio=CUPOM_FIDELIDADE;
}
var interacaoReserva="N";
if(state.suiteInterativa&&state.interacaoChecked===true) interacaoReserva="S";
var reservaPayload={
id_suite: idSuite,
id_usuario: uid,
data_reserva: buildReservaDateTimeFromState(state),
chegada_reserva: String(selection.chegada),
periodo_reserva: String(selection.periodoReserva||selection.periodoLabel||""),
valor_reserva: String(Number(valorFinal).toFixed(2)),
valor_reserva_total: String(Number(valorBruto).toFixed(2)),
interacao_reserva: interacaoReserva,
pontos_fidelidade: fid.usarPontos ? pontosEnvio:0,
cupom: cupomEnvio,
nome: String((user&&user.nome)||userPayload.nome||"").trim(),
email: String((user&&user.email)||userPayload.email||"").trim(),
telefone: String((user&&user.telefone)||userPayload.telefone||"").trim(),
cpf: String((user&&user.cpf)||userPayload.cpf||"").trim()
};
window.BDMChatPages.reservarSuite(ctx, reservaPayload, resBtn);
});
}
ctx.body.innerHTML="";
ctx.body.appendChild(node);
})
.catch(function (){
ctx.body.textContent="Falha ao carregar detalhes da suíte.";
});
};
function extractReservaCode(api){
if(Array.isArray(api)&&api.length&&api[0]&&typeof api[0]==="object"){
return String(api[0].codigo_reserva||api[0].codigo||api[0].codigoPedido||"").trim();
}
if(!api||typeof api!=="object") return "";
if(Array.isArray(api.data)&&api.data.length&&api.data[0]&&typeof api.data[0]==="object"){
return String(api.data[0].codigo_reserva||api.data[0].codigo||api.data[0].codigoPedido||"").trim();
}
return String(api.codigo_reserva||api.codigo||api.codigoPedido||"").trim();
}
function rememberPendingReservaApproval(data){
try {
localStorage.setItem(LS_PENDING_RESERVA, JSON.stringify(data||{}));
} catch (e){}}
function clearPendingReservaApproval(){
try {
localStorage.removeItem(LS_PENDING_RESERVA);
} catch (e){}}
function rememberPendingPayment(data){
try {
localStorage.setItem(LS_PENDING_PAYMENT, JSON.stringify(data||{}));
} catch (e){}}
function clearPendingPayment(){
try {
localStorage.removeItem(LS_PENDING_PAYMENT);
} catch (e){}}
function clearReservaCheckTimer(ctx){
if(!ctx||!ctx.state) return;
if(ctx.state.reservaCheckTimer){
clearTimeout(ctx.state.reservaCheckTimer);
ctx.state.reservaCheckTimer=null;
}}
function extractCheckResult(api){
if(!api||typeof api!=="object") return "";
return String(api.result||api.status||"").trim().toUpperCase();
}
function clearPagamentoCheckTimer(ctx){
if(!ctx||!ctx.state) return;
if(ctx.state.pagamentoCheckTimer){
clearTimeout(ctx.state.pagamentoCheckTimer);
ctx.state.pagamentoCheckTimer=null;
}}
function extractPreferenceId(api){
if(Array.isArray(api)&&api.length&&api[0]&&typeof api[0]==="object"){
return String(api[0].id||api[0].preference_id||"").trim();
}
if(!api||typeof api!=="object") return "";
if(Array.isArray(api.data)&&api.data.length&&api.data[0]&&typeof api.data[0]==="object"){
return String(api.data[0].id||api.data[0].preference_id||"").trim();
}
return String(api.id||api.preference_id||"").trim();
}
function extractPixPayload(api){
if(!api||typeof api!=="object") return null;
var poi=api.point_of_interaction&&typeof api.point_of_interaction==="object"
? api.point_of_interaction
: {};
var tx=poi.transaction_data&&typeof poi.transaction_data==="object"
? poi.transaction_data
: {};
var code=String(tx.qr_code||"").trim();
var base64=String(tx.qr_code_base64||"").trim();
if(!code&&!base64) return null;
return { code: code, base64: base64 };}
function formatDateDisplay(raw){
var s=String(raw==null ? "":raw).trim();
var m=s.match(/^(\d{4})-(\d{2})-(\d{2})/);
if(m) return m[3] + "-" + m[2] + "-" + m[1];
return s;
}
function formatMoneyDisplay(raw){
var n=parseFloat(String(raw==null ? "":raw).replace(",", "."));
if(!isFinite(n)) return "R$ 0,00";
return "R$ " + n.toFixed(2).replace(".", ",");
}
window.BDMChatPages.reservarSuite=function (ctx, payload, btn){
if(ctx&&ctx.state&&ctx.state.reservaSubmitInFlight){
toast(ctx, "Aguarde, estamos processando sua reserva.");
return;
}
clearReservaCheckTimer(ctx);
clearPagamentoCheckTimer(ctx);
clearPendingPayment();
var url=(ctx.urls.reservaSave||"").trim();
if(!url){
toast(ctx, "Rota de reserva não configurada.");
return;
}
if(!payload||typeof payload!=="object"){
toast(ctx, "Dados da reserva inválidos.");
return;
}
if(ctx&&ctx.state) ctx.state.reservaSubmitInFlight=true;
if(btn) btn.disabled=true;
var pages=window.BDMChatPages||{};
var savePromise=pages.saveReserva
? pages.saveReserva(ctx, payload, url)
: fetch(url, {
method: "POST",
credentials: "same-origin",
headers: window.BDMChatPages.mergeWidgetAuthHeaders({ "Content-Type": "application/json" }),
body: JSON.stringify(payload)
}).then(function (r){
return r.json().then(function (j){
return { status: r.status, json: j };});
});
savePromise
.then(function (res){
if(ctx&&ctx.state) ctx.state.reservaSubmitInFlight=false;
if(btn) btn.disabled=false;
var data=res&&res.json ? res.json:{};
if(typeof data==="string"){
data={ erro: data.trim()||"Resposta inválida ao salvar a reserva." };}
var errText="";
if(data&&data.erro!=null&&String(data.erro).trim()) errText=String(data.erro).trim();
else if(data&&data.message!=null&&String(data.message).trim()) errText=String(data.message).trim();
if(res.status < 200||res.status >=300||(data&&data.result==="error")||errText){
toast(ctx, errText||"Não foi possível concluir a reserva.");
return;
}
ctx.state.lastReservaResult={
code: extractReservaCode(data),
payload: payload,
response: data
};
if(ctx.state.lastReservaResult.code){
rememberPendingReservaApproval({
codigo_reserva: ctx.state.lastReservaResult.code,
id_usuario: payload.id_usuario||0,
payload: payload,
date_create: Date.now(),
status: "Pendente"
});
}
ctx.navigate("reservaAguarde");
})
.catch(function (){
if(ctx&&ctx.state) ctx.state.reservaSubmitInFlight=false;
if(btn) btn.disabled=false;
toast(ctx, "Falha ao enviar a reserva.");
});
};
window.BDMChatPages.reservaAguarde=function (ctx){
ctx.state.currentView="reservaAguarde";
clearReservaCheckTimer(ctx);
clearPagamentoCheckTimer(ctx);
var result=ctx.state.lastReservaResult||{};
var code=result&&result.code ? String(result.code):"";
var checkUrl=(ctx.urls.reservaCheck||"").trim();
var bathtub=(window.motelswingChat&&window.motelswingChat.assetBathtub)||"";
ctx.loadTemplate("reserva-aguarde")
.then(function (html){
var node=ctx.htmlToNode(html);
var codeEl=node.querySelector('[data-slot="reserva-codigo"]');
if(codeEl) codeEl.textContent=code||"—";
var img=node.querySelector('[data-slot="reserva-aguarde-img"]');
if(img&&bathtub) img.setAttribute("src", bathtub);
ctx.body.innerHTML="";
ctx.body.appendChild(node);
function runCheck(){
if(ctx.state.currentView!=="reservaAguarde") return;
var pages=window.BDMChatPages||{};
var uid=pages.getUsuarioId ? pages.getUsuarioId():0;
if(!checkUrl||!uid||!code) return;
fetch(checkUrl, {
method: "POST",
credentials: "same-origin",
headers: window.BDMChatPages.mergeWidgetAuthHeaders({ "Content-Type": "application/json" }),
body: JSON.stringify({ id_usuario: uid, codigo_reserva: code })
})
.then(function (r){
return r.json().then(function (j){ return { status: r.status, json: j };});
})
.then(function (res){
if(ctx.state.currentView!=="reservaAguarde") return;
var data=res&&res.json ? res.json:{};
if(res.status < 200||res.status >=300||data.erro){
ctx.state.reservaCheckTimer=setTimeout(runCheck, 5000);
return;
}
var resultStatus=extractCheckResult(data);
if(resultStatus==="WAIT"||resultStatus===""){
ctx.state.reservaCheckTimer=setTimeout(runCheck, 5000);
return;
}
if(resultStatus==="REFUSED"){
clearReservaCheckTimer(ctx);
clearPendingReservaApproval();
clearPendingPayment();
ctx.navigate("reservaRecusada");
return;
}
if(resultStatus==="OK"){
clearReservaCheckTimer(ctx);
clearPendingReservaApproval();
var payload=result&&result.payload&&typeof result.payload==="object" ? result.payload:{};
ctx.state.lastReservaPaymentData={
codigo_reserva: code,
id_usuario: payload.id_usuario||"",
id_suite: payload.id_suite||"",
data_reserva: payload.data_reserva||"",
chegada_reserva: payload.chegada_reserva||"",
periodo_reserva: payload.periodo_reserva||"",
valor_reserva: payload.valor_reserva||"",
nome: payload.nome||"",
email: payload.email||"",
telefone: payload.telefone||"",
cpf: payload.cpf||""
};
rememberPendingPayment({
codigo_reserva: code,
id_usuario: payload.id_usuario||0,
payload: ctx.state.lastReservaPaymentData,
status: "PENDENTE_PAGAMENTO",
date_create: Date.now()
});
ctx.navigate("reservaPagamento");
return;
}
ctx.state.reservaCheckTimer=setTimeout(runCheck, 5000);
})
.catch(function (){
if(ctx.state.currentView!=="reservaAguarde") return;
ctx.state.reservaCheckTimer=setTimeout(runCheck, 5000);
});
}
ctx.state.reservaCheckTimer=setTimeout(runCheck, 5000);
})
.catch(function (){
ctx.body.textContent="Falha ao carregar tela de confirmação.";
});
};
window.BDMChatPages.reservaRecusada=function (ctx){
ctx.state.currentView="reservaRecusada";
clearReservaCheckTimer(ctx);
clearPagamentoCheckTimer(ctx);
clearPendingReservaApproval();
clearPendingPayment();
var sad=(window.motelswingChat&&window.motelswingChat.assetSad)||"";
ctx.loadTemplate("reserva-recusada")
.then(function (html){
var node=ctx.htmlToNode(html);
var img=node.querySelector('[data-slot="reserva-recusada-img"]');
if(img&&sad) img.setAttribute("src", sad);
var btn=node.querySelector('[data-action="backHome"]');
if(btn){
btn.addEventListener("click", function (e){
e.preventDefault();
ctx.navigate("home");
});
}
ctx.body.innerHTML="";
ctx.body.appendChild(node);
})
.catch(function (){
ctx.body.textContent="Falha ao carregar status da reserva.";
});
};
window.BDMChatPages.reservaPagamento=function (ctx){
ctx.state.currentView="reservaPagamento";
clearReservaCheckTimer(ctx);
clearPagamentoCheckTimer(ctx);
clearPendingReservaApproval();
var data=ctx.state.lastReservaPaymentData||{};
var publicKey=(window.motelswingChat&&window.motelswingChat.mpPublicKey)||"";
var preferUrl=(ctx.urls.pagamentoPreference||"").trim();
var submitUrl=(ctx.urls.pagamentoSubmit||"").trim();
var checkUrl=(ctx.urls.pagamentoCheck||"").trim();
ctx.loadTemplate("reserva-pagamento")
.then(function (html){
var node=ctx.htmlToNode(html);
var code=node.querySelector('[data-slot="pagamento-codigo"]');
var dt=node.querySelector('[data-slot="pagamento-data"]');
var chegada=node.querySelector('[data-slot="pagamento-chegada"]');
var periodo=node.querySelector('[data-slot="pagamento-periodo"]');
var valor=node.querySelector('[data-slot="pagamento-valor"]');
if(code) code.textContent=String(data.codigo_reserva||"—");
if(dt) dt.textContent=formatDateDisplay(data.data_reserva||"");
if(chegada) chegada.textContent=String(data.chegada_reserva||"--:--");
if(periodo) periodo.textContent=String(data.periodo_reserva||"--");
if(valor) valor.textContent=formatMoneyDisplay(data.valor_reserva||"");
var note=node.querySelector('[data-slot="pagamento-note"]');
var brickWrap=node.querySelector('[data-slot="pagamento-brick-wrap"]');
var pixWrap=node.querySelector('[data-slot="pagamento-pix"]');
var pixQr=node.querySelector('[data-slot="pagamento-pix-qr"]');
var pixCode=node.querySelector('[data-slot="pagamento-pix-code"]');
var pixCopyBtn=node.querySelector('[data-action="copyPixCode"]');
var pages=window.BDMChatPages||{};
var uid=pages.getUsuarioId ? pages.getUsuarioId():0;
var codigo=String(data.codigo_reserva||"").trim();
function setNote(msg){
if(!note) return;
note.hidden = !msg;
note.textContent=msg||"";
}
function setBrickLoading(on){
if(!brickWrap) return;
brickWrap.classList.toggle("-loading", !!on);
}
function setPixData(pix){
if(!pixWrap||!pixQr||!pixCode) return;
if(!pix||(!pix.code&&!pix.base64)){
pixWrap.hidden=true;
pixCode.value="";
pixQr.removeAttribute("src");
return;
}
if(pix.base64){
pixQr.src="data:image/png;base64," + pix.base64;
}else{
pixQr.removeAttribute("src");
}
pixCode.value=pix.code||"";
pixWrap.hidden=false;
setTimeout(function (){
try {
pixWrap.scrollIntoView({ behavior: "smooth", block: "end" });
if(ctx&&ctx.body){
ctx.body.scrollTop=ctx.body.scrollHeight;
}} catch (e){}}, 120);
}
function runPagamentoCheck(){
if(ctx.state.currentView!=="reservaPagamento") return;
if(!checkUrl||!uid||!codigo) return;
fetch(checkUrl, {
method: "POST",
credentials: "same-origin",
headers: window.BDMChatPages.mergeWidgetAuthHeaders({ "Content-Type": "application/json" }),
body: JSON.stringify({ id_usuario: uid, codigo_reserva: codigo })
})
.then(function (r){ return r.json().then(function (j){ return { status: r.status, json: j };});})
.then(function (res){
if(ctx.state.currentView!=="reservaPagamento") return;
var payload=res&&res.json ? res.json:{};
if(res.status < 200||res.status >=300||payload.erro){
ctx.state.pagamentoCheckTimer=setTimeout(runPagamentoCheck, 30000);
return;
}
if(extractCheckResult(payload)==="OK"){
clearPagamentoCheckTimer(ctx);
clearPendingPayment();
toast(ctx, "Pagamento confirmado.");
ctx.state.selectedReservaRaw=Object.assign({}, data||{}, {
codigo_reserva: codigo,
id_usuario: uid
});
ctx.state.lastReservaPaymentData=ctx.state.selectedReservaRaw;
ctx.navigate("reservaDetalhe");
return;
}
if(extractCheckResult(payload)==="REFUSED"){
clearPagamentoCheckTimer(ctx);
clearPendingPayment();
ctx.navigate("reservaRecusada");
return;
}
ctx.state.pagamentoCheckTimer=setTimeout(runPagamentoCheck, 30000);
})
.catch(function (){
if(ctx.state.currentView!=="reservaPagamento") return;
ctx.state.pagamentoCheckTimer=setTimeout(runPagamentoCheck, 30000);
});
}
ctx.body.innerHTML="";
ctx.body.appendChild(node);
if(pixCopyBtn){
pixCopyBtn.addEventListener("click", function (e){
e.preventDefault();
var txt=pixCode ? String(pixCode.value||"").trim():"";
if(!txt){
setNote("Código Pix ainda não disponível.");
return;
}
if(navigator.clipboard&&navigator.clipboard.writeText){
navigator.clipboard.writeText(txt).then(function (){
toast(ctx, "Código Pix copiado.");
}).catch(function (){
setNote("Não foi possível copiar automaticamente.");
});
}else{
try {
pixCode.focus();
pixCode.select();
document.execCommand ("copy");
toast(ctx, "Código Pix copiado.");
} catch (err){
setNote("Não foi possível copiar automaticamente.");
}}
});
}
if(!publicKey){
setNote("Chave pública do Mercado Pago não configurada.");
return;
}
if(!preferUrl||!submitUrl||!checkUrl){
setNote("Rotas de pagamento não configuradas.");
return;
}
if(!uid||!codigo){
setNote("Dados da reserva inválidos para pagamento.");
return;
}
rememberPendingPayment({
codigo_reserva: codigo,
id_usuario: uid,
payload: data,
status: "PENDENTE_PAGAMENTO",
date_create: Date.now()
});
setBrickLoading(true);
setNote("Carregando opções de pagamento...");
fetch(preferUrl, {
method: "POST",
credentials: "same-origin",
headers: window.BDMChatPages.mergeWidgetAuthHeaders({ "Content-Type": "application/json" }),
body: JSON.stringify({ id_usuario: uid, codigo_reserva: codigo })
})
.then(function (r){ return r.json().then(function (j){ return { status: r.status, json: j };});})
.then(function (res){
var prefPayload=res&&res.json ? res.json:{};
if(res.status < 200||res.status >=300||prefPayload.erro){
setBrickLoading(false);
setNote(String(prefPayload.erro||prefPayload.message||"Não foi possível iniciar pagamento."));
return;
}
var prefId=extractPreferenceId(prefPayload);
if(!prefId){
setBrickLoading(false);
setNote("Preference do pagamento não retornada.");
return;
}
if(typeof window.BDMChatStartPagamento!=="function"){
setBrickLoading(false);
setNote("Módulo de pagamento não carregado.");
return;
}
window.BDMChatStartPagamento({
publicKey: publicKey,
amount: parseFloat(String(data.valor_reserva||"").replace(",", "."))||0,
preferenceId: prefId,
codigoReserva: codigo,
idUsuario: uid,
submitUrl: submitUrl,
onReady: function (){
setBrickLoading(false);
setNote("");
},
onPaymentCreated: function (_paymentId, payload){
var pix=extractPixPayload(payload);
setPixData(pix);
},
onError: function (err){
setBrickLoading(false);
setNote(err&&err.message ? err.message:"Falha ao enviar pagamento.");
}}).then(function (){
ctx.state.pagamentoCheckTimer=setTimeout(runPagamentoCheck, 30000);
}).catch(function (err){
setBrickLoading(false);
setNote(err&&err.message ? err.message:"Falha ao carregar checkout.");
});
})
.catch(function (){
setBrickLoading(false);
setNote("Falha na comunicação com o serviço de pagamento.");
});
})
.catch(function (){
ctx.body.textContent="Falha ao carregar página de pagamento.";
});
};})();
(function (){
if(!window.BDMChatPages) window.BDMChatPages={};
function pick(obj, keys){
for (var i=0; i < keys.length; i++){
var k=keys[i];
if(obj&&obj[k]!=null&&String(obj[k]).trim()!=="") return obj[k];
}
return "";
}
function pickText(obj, keys){
var v=pick(obj, keys);
if(v==null||v==="") return "";
if(typeof v==="object"){
var inner=pick(v, ["nome", "name", "titulo", "title", "descricao"]);
if(inner!=null&&inner!=="") return String(inner);
return "";
}
return String(v);
}
function normalizeList(api){
if(!api) return [];
if(Array.isArray(api)) return api;
if(typeof api!=="object") return [];
var keys=["reservas", "lista", "items", "data", "rows"];
for (var j=0; j < keys.length; j++){
var arr=api[keys[j]];
if(Array.isArray(arr)) return arr;
}
return [];
}
function stripAcc(s){
try {
return String(s||"")
.toLowerCase()
.normalize("NFD")
.replace(/[\u0300-\u036f]/g, "");
} catch (e){
return String(s||"").toLowerCase();
}}
function formatDateBR(raw){
if(raw==null||raw==="") return "—";
var s=String(raw).trim();
var m=s.match(/^(\d{4})-(\d{2})-(\d{2})/);
if(m) return m[3] + "/" + m[2] + "/" + m[1];
m=s.match(/^(\d{2})\/(\d{2})\/(\d{4})/);
if(m) return m[0];
return s.length > 10 ? s.slice(0, 10):s;
}
function formatHora(raw){
if(raw==null||raw==="") return "—";
var s=String(raw).trim();
var m=s.match(/(\d{2}:\d{2})/);
if(m) return m[1];
return s.length >=5 ? s.slice(0, 5):s;
}
function formatMoney(raw){
if(raw==null||raw==="") return "";
var s=String(raw).trim().replace(/R\$\s*/i, "").replace(/\s/g, "");
var n;
if(/,/.test(s)){
n=parseFloat(s.replace(/\./g, "").replace(",", "."));
}else{
n=parseFloat(s);
}
if(!isFinite(n)) return String(raw);
return "R$ " + n.toFixed(2).replace(".", ",");
}
function statusToken(statusRaw){
return resolveReservaStatusBadge(statusRaw).token;
}
function resolveReservaStatusBadge(statusRaw){
var label=statusLabel(statusRaw);
var s=stripAcc(statusRaw);
if(!s) return { token: "confirmada", label: label };
if(s.indexOf("cancel") >=0) return { token: "cancelada", label: label };
if(s.indexOf("recus") >=0||s.indexOf("rejeit") >=0||s.indexOf("negad") >=0){
return { token: "cancelada", label: label };}
if(s.indexOf("conclu") >=0||s.indexOf("finaliz") >=0) return { token: "concluida", label: label };
if(s.indexOf("pend") >=0||s.indexOf("aguard") >=0||s.indexOf("wait") >=0){
return { token: "pendente", label: label };}
if(s.indexOf("aceit") >=0||s.indexOf("aprova") >=0||s.indexOf("confirm") >=0){
return { token: "confirmada", label: label };}
return { token: "confirmada", label: label };}
function isReservaAceita(statusRaw){
return stripAcc(statusRaw).indexOf("aceit") >=0;
}
function isPagamentoAprovado(row){
if(!row||typeof row!=="object") return false;
var pagamentoRaw=pickText(row, [
"pagamento_status",
"status_pagamento",
"payment_status",
"status_pagamento_reserva",
"pagamento_situacao"
]);
var sPay=stripAcc(pagamentoRaw);
if(sPay){
if(sPay.indexOf("aprova") >=0 ||
sPay.indexOf("conclu") >=0 ||
sPay.indexOf("paid") >=0 ||
sPay.indexOf("success") >=0 ||
sPay.indexOf("pago") >=0
){
return true;
}
if(sPay.indexOf("pend") >=0 ||
sPay.indexOf("aguard") >=0 ||
sPay.indexOf("wait") >=0 ||
sPay.indexOf("recus") >=0 ||
sPay.indexOf("cancel") >=0 ||
sPay.indexOf("falh") >=0 ||
sPay.indexOf("negad") >=0
){
return false;
}}
var resultRaw=pickText(row, ["pagamento_result", "payment_result", "resultado_pagamento", "result"]);
var sResult=stripAcc(resultRaw);
if(sResult){
if(sResult==="ok"||sResult.indexOf("aprova") >=0||sResult.indexOf("paid") >=0){
return true;
}}
return false;
}
function resolveReservaStatus(row){
return pickText(row, ["status_reserva", "status", "situacao", "estado", "checking"]);
}
function shouldShowReservaCodigo(row){
var statusReserva=resolveReservaStatus(row);
return isReservaAceita(statusReserva)&&isPagamentoAprovado(row);
}
function statusLabel(statusRaw){
var s=String(statusRaw||"").trim();
if(s) return s.toUpperCase();
return "CONFIRMADA";
}
function resolvePagamentoStatus(row){
var pagamentoRaw=pickText(row, ["pagamento_status", "status_pagamento", "payment_status"]);
var sPay=stripAcc(pagamentoRaw);
if(sPay){
if(sPay.indexOf("aprova") >=0||sPay.indexOf("conclu") >=0||sPay.indexOf("paid") >=0||sPay.indexOf("success") >=0){
return { token: "pago", label: "PAGAMENTO CONCLUÍDO" };}
if(sPay.indexOf("pend") >=0||sPay.indexOf("wait") >=0||sPay.indexOf("process") >=0){
return { token: "pendente", label: "PAGAMENTO PENDENTE" };}}
var reservaRaw=pickText(row, ["status_reserva", "status", "situacao", "estado", "checking"]);
var sRes=stripAcc(reservaRaw);
if(sRes.indexOf("pend") >=0||sRes.indexOf("aguard") >=0||sRes.indexOf("wait") >=0){
return { token: "pendente", label: "PAGAMENTO PENDENTE" };}
if(sRes.indexOf("aceit") >=0||sRes.indexOf("aprova") >=0||sRes.indexOf("conclu") >=0||sRes.indexOf("finaliz") >=0){
return { token: "pago", label: "PAGAMENTO CONCLUÍDO" };}
return { token: statusToken(reservaRaw), label: statusLabel(reservaRaw) };}
function normalizeItem(row){
if(!row||typeof row!=="object") return null;
var suite=pickText(row, ["suite_nome", "nome_suite", "suite", "suite_name", "titulo", "descricao_suite"]);
var img=pick(row, ["imagem", "image_url", "foto", "thumb", "url_imagem", "suite_imagem"]);
if(!img&&Array.isArray(row.imagens)&&row.imagens.length){
var im0=row.imagens[0];
if(typeof im0==="string") img=im0;
else if(im0&&typeof im0==="object") img=im0.image||im0.thumbImage||im0.url||"";
}
if(!img&&row.suite&&typeof row.suite==="object"){
var s=row.suite;
img=pick(s, ["imagem", "image_url", "foto", "thumb", "url_imagem", "suite_imagem"]);
if(!img&&Array.isArray(s.imagens)&&s.imagens.length){
var sim0=s.imagens[0];
if(typeof sim0==="string") img=sim0;
else if(sim0&&typeof sim0==="object") img=sim0.image||sim0.thumbImage||sim0.url||"";
}}
var data=pick(row, ["data", "data_reserva", "dia", "date", "data_inicio"]);
var hora=pick(row, ["hora", "horario", "hora_inicio", "time", "hora_reserva", "chegada_reserva"]);
var valor=pick(row, ["pagamento_valor", "valor_reserva", "valor", "preco", "price", "total", "valor_total"]);
var dur=pick(row, ["periodo_reserva", "duracao", "periodo", "tempo", "duracao_texto", "pacote"]);
var statusData=resolvePagamentoStatus(row);
var durStr=dur ? String(dur).trim():"—";
var priceLine=formatMoney(valor)||"R$ 0,00";
return {
suite: suite ? String(suite):"Suíte",
img: img ? String(img):"",
dataFmt: formatDateBR(data),
horaFmt: formatHora(hora),
periodo: durStr,
valorPago: priceLine,
statusTok: statusData.token,
statusLbl: statusData.label
};}
function firstDetailRecord(api){
if(!api) return null;
if(Array.isArray(api)&&api.length&&api[0]&&typeof api[0]==="object") return api[0];
if(api&&typeof api==="object"&&Array.isArray(api.data)&&api.data.length&&api.data[0]&&typeof api.data[0]==="object") return api.data[0];
if(api&&typeof api==="object") return api;
return null;
}
function normalizeDetail(row){
if(!row||typeof row!=="object") return null;
var suite=pickText(row, ["suite_nome", "nome_suite", "suite", "suite_name", "titulo", "descricao_suite"]);
var codigo=pickText(row, ["codigo_reserva", "codigo", "codigoPedido"]);
var statusReservaRaw=resolveReservaStatus(row);
var statusBadge=resolveReservaStatusBadge(statusReservaRaw);
var data=pick(row, ["data", "data_reserva", "dia", "date", "data_inicio"]);
var hora=pick(row, ["hora", "horario", "hora_inicio", "time", "hora_reserva", "chegada_reserva"]);
var periodo=pickText(row, ["periodo_reserva", "duracao", "periodo", "tempo", "duracao_texto"]);
var valor=pick(row, ["pagamento_valor", "valor_reserva", "valor", "preco", "price", "total", "valor_total", "transaction_amount"]);
var img=pickText(row, ["imagem", "image_url", "foto", "thumb", "url_imagem", "suite_imagem"]);
if(!img&&Array.isArray(row.imagens)&&row.imagens.length){
var im0=row.imagens[0];
if(typeof im0==="string") img=im0;
else if(im0&&typeof im0==="object") img=String(im0.image||im0.thumbImage||im0.url||"");
}
if(!img&&row.suite&&typeof row.suite==="object"){
img=pickText(row.suite, ["imagem", "image_url", "foto", "thumb", "url_imagem", "suite_imagem"]);
if(!img&&Array.isArray(row.suite.imagens)&&row.suite.imagens.length){
var sim0=row.suite.imagens[0];
if(typeof sim0==="string") img=sim0;
else if(sim0&&typeof sim0==="object") img=String(sim0.image||sim0.thumbImage||sim0.url||"");
}}
var paymentMethodRaw=pickText(row, ["pagamento_metodo", "payment_method_id", "metodo_pagamento", "forma_pagamento", "payment_type_id"]);
function paymentLabel(method){
var m=String(method||"").trim().toLowerCase();
if(!m) return "—";
if(m==="pix") return "Pix";
if(m==="credit_card"||m==="creditcard"||m==="cartao"||m==="cartão") return "Cartão de crédito";
if(m==="debit_card"||m==="debitcard") return "Cartão de débito";
if(m==="ticket"||m==="boleto") return "Boleto";
if(m==="bank_transfer") return "Pix";
return String(method).replace(/_/g, " ");
}
return {
suite: suite||"Suíte",
codigo: codigo||"—",
statusTok: statusBadge.token,
statusLbl: statusBadge.label,
showCodigo: shouldShowReservaCodigo(row),
dataFmt: formatDateBR(data),
horaFmt: formatHora(hora),
periodo: periodo||"—",
valorFmt: formatMoney(valor)||"R$ 0,00",
pagamento: paymentLabel(paymentMethodRaw),
img: img||""
};}
function metaSpan(ctx, iconClass, text){
var span=ctx.el("span", { class: "bdm-reserva-meta-i" });
var ic=document.createElement("i");
ic.className="bdm-fa fa-thin " + iconClass;
ic.setAttribute("aria-hidden", "true");
span.appendChild(ic);
span.appendChild(document.createTextNode(" " + text));
return span;
}
window.BDMChatPages.reservas=function (ctx){
ctx.state.currentView="reservas";
var pages=window.BDMChatPages||{};
var url=(ctx.urls.reservas||"").trim();
function mountShell(emptyMsg){
ctx.loadTemplate("reservas").then(function (html){
var node=ctx.htmlToNode(html);
var slot=node.querySelector('[data-slot="reservas"]');
if(slot&&emptyMsg){
slot.innerHTML="";
slot.appendChild(ctx.el("div", { class: "bdm-empty", text: emptyMsg }));
}
ctx.body.innerHTML="";
ctx.body.appendChild(node);
}).catch(function (){
ctx.body.textContent="Falha ao carregar reservas.";
});
}
if(!pages.isLogged||!pages.isLogged()){
mountShell("Faça login para ver suas reservas.");
return;
}
var uid=pages.getUsuarioId ? pages.getUsuarioId():0;
if(!uid){
mountShell("Não foi possível identificar sua conta. Faça login novamente.");
return;
}
if(!url){
mountShell("Lista de reservas não configurada.");
return;
}
Promise.all([
ctx.loadTemplate("reservas"),
fetch(url, {
method: "POST",
credentials: "same-origin",
headers: window.BDMChatPages.mergeWidgetAuthHeaders({ "Content-Type": "application/json" }),
body: JSON.stringify({ id_usuario: uid })
}).then(function (r){ return r.json(); })
])
.then(function (arr){
var html=arr[0];
var data=arr[1];
var node=ctx.htmlToNode(html);
var slot=node.querySelector('[data-slot="reservas"]');
if(!slot){
ctx.body.innerHTML="";
ctx.body.appendChild(node);
return;
}
slot.innerHTML="";
if(data&&data.erro){
slot.appendChild(ctx.el("div", { class: "bdm-empty", text: String(data.erro) }));
ctx.body.innerHTML="";
ctx.body.appendChild(node);
return;
}
var list=normalizeList(data);
if(!list.length){
slot.appendChild(ctx.el("div", { class: "bdm-empty", text: "Você ainda não possui reservas." }));
}else{
list.forEach(function (row){
var it=normalizeItem(row);
if(!it) return;
var card=ctx.el("button", { type: "button", class: "bdm-reserva-card" });
var thumbWrap=ctx.el("div", { class: "bdm-reserva-thumb-wrap" });
if(it.img){
thumbWrap.appendChild(ctx.el("img", {
class: "bdm-reserva-thumb",
src: it.img,
alt: "",
loading: "lazy",
referrerpolicy: "no-referrer"
}));
}else{
thumbWrap.appendChild(ctx.el("div", { class: "bdm-reserva-thumb -placeholder" }));
}
card.appendChild(thumbWrap);
var info=ctx.el("div", { class: "bdm-reserva-info" });
info.appendChild(ctx.el("div", { class: "bdm-reserva-suite", text: it.suite }));
var meta=ctx.el("div", { class: "bdm-reserva-meta" });
meta.appendChild(metaSpan(ctx, "fa-calendar", it.dataFmt));
meta.appendChild(ctx.el("span", { class: "bdm-reserva-meta-sep", "aria-hidden": "true" }));
meta.appendChild(metaSpan(ctx, "fa-clock", it.horaFmt));
info.appendChild(meta);
var extra=ctx.el("div", { class: "bdm-reserva-extra" });
extra.appendChild(ctx.el("div", { class: "bdm-reserva-extra-i" }, [
ctx.el("span", { class: "bdm-reserva-extra-k", text: "Período" }),
ctx.el("b", { class: "bdm-reserva-extra-v", text: it.periodo })
]));
extra.appendChild(ctx.el("div", { class: "bdm-reserva-extra-i" }, [
ctx.el("span", { class: "bdm-reserva-extra-k", text: "Valor" }),
ctx.el("b", { class: "bdm-reserva-extra-v -value", text: it.valorPago })
]));
info.appendChild(extra);
var badge=ctx.el("span", {
class: "bdm-reserva-status -" + it.statusTok,
text: it.statusLbl
});
info.appendChild(badge);
card.appendChild(info);
var chev=ctx.el("span", { class: "bdm-reserva-chev", "aria-hidden": "true" });
chev.innerHTML='<i class="bdm-fa fa-thin fa-chevron-right"></i>';
card.appendChild(chev);
card.addEventListener("click", function (){
ctx.state.selectedReservaRaw=row;
ctx.state.selectedReserva=it;
ctx.navigate("reservaDetalhe");
});
slot.appendChild(card);
});
}
ctx.body.innerHTML="";
ctx.body.appendChild(node);
})
.catch(function (){
ctx.body.textContent="Falha ao carregar suas reservas.";
});
};
window.BDMChatPages.reservaDetalhe=function (ctx){
ctx.state.currentView="reservaDetalhe";
var pages=window.BDMChatPages||{};
var uid=pages.getUsuarioId ? pages.getUsuarioId():0;
var url=(ctx.urls.reservaDetalhe||"").trim();
var raw=ctx.state.selectedReservaRaw||ctx.state.lastReservaPaymentData||{};
var codigo=pickText(raw, ["codigo_reserva", "codigo", "codigoPedido"]);
if(!uid||!codigo||!url){
ctx.body.textContent="Detalhes da reserva indisponíveis.";
return;
}
ctx.loadTemplate("reserva-detalhe")
.then(function (html){
return fetch(url, {
method: "POST",
credentials: "same-origin",
headers: window.BDMChatPages.mergeWidgetAuthHeaders({ "Content-Type": "application/json" }),
body: JSON.stringify({ id_usuario: uid, codigo_reserva: codigo })
}).then(function (r){ return r.json(); }).then(function (api){ return { html: html, api: api };});
})
.then(function (pack){
var row=firstDetailRecord(pack.api)||raw||{};
var detail=normalizeDetail(row)||{
suite: "Suíte",
codigo: codigo,
statusTok: "confirmada",
statusLbl: "—",
showCodigo: false,
dataFmt: "—",
horaFmt: "—",
periodo: "—",
valorFmt: "R$ 0,00",
pagamento: "—",
img: ""
};
var model=window.BDMChatMotelModel||{};
var motelNode=model&&model.motel&&typeof model.motel==="object" ? model.motel:model;
var chat=window.motelswingChat||{};
var googleUrl=pickText(row, ["google", "maps", "google_maps"])
|| pickText(motelNode, ["google", "maps", "google_maps"])
|| String(chat.googleMapsUrl||"").trim();
var wazeUrl=pickText(row, ["waze"])
|| pickText(motelNode, ["waze"])
|| String(chat.wazeUrl||"").trim();
var endereco=pickText(row, ["endereco", "endereco_motel"])
|| pickText(motelNode, ["endereco"])
|| String(chat.motelEndereco||"").trim();
var node=ctx.htmlToNode(pack.html);
var setText=function (slot, value){
var el=node.querySelector('[data-slot="' + slot + '"]');
if(el) el.textContent=value;
};
setText("detalhe-suite", detail.suite);
var statusSlot=node.querySelector('[data-slot="detalhe-status"]');
if(statusSlot){
statusSlot.textContent="";
statusSlot.appendChild(ctx.el("span", {
class: "bdm-reserva-status -" + (detail.statusTok||"confirmada"),
text: detail.statusLbl||"—"
}));
}
var codeEl=node.querySelector('[data-slot="detalhe-codigo"]');
if(codeEl){
if(detail.showCodigo&&detail.codigo&&detail.codigo!=="—"){
codeEl.textContent=detail.codigo;
codeEl.removeAttribute("hidden");
}else{
codeEl.textContent="";
codeEl.setAttribute("hidden", "hidden");
}}
setText("detalhe-data", detail.dataFmt);
setText("detalhe-hora", detail.horaFmt);
setText("detalhe-periodo", detail.periodo);
setText("detalhe-valor", detail.valorFmt);
setText("detalhe-pagamento", detail.pagamento);
if(endereco){
setText("detalhe-endereco", endereco);
var enderecoRow=node.querySelector('[data-slot="detalhe-endereco-row"]');
if(enderecoRow) enderecoRow.removeAttribute("hidden");
}
var img=node.querySelector('[data-slot="detalhe-img"]');
if(img){
if(detail.img){
img.setAttribute("src", detail.img);
img.removeAttribute("hidden");
}else{
img.setAttribute("hidden", "hidden");
}}
var g=node.querySelector('[data-slot="detalhe-google"]');
var w=node.querySelector('[data-slot="detalhe-waze"]');
if(g){
if(googleUrl) g.setAttribute("href", googleUrl);
else g.setAttribute("hidden", "hidden");
}
if(w){
if(wazeUrl) w.setAttribute("href", wazeUrl);
else w.setAttribute("hidden", "hidden");
}
ctx.body.innerHTML="";
ctx.body.appendChild(node);
})
.catch(function (){
ctx.body.textContent="Falha ao carregar detalhes da reserva.";
});
};})();
(function (){
if(!window.BDMChatPages) window.BDMChatPages={};
var EXTRATO_LIMITE=50;
function pick(obj, keys){
for (var i=0; i < keys.length; i++){
var k=keys[i];
if(obj&&obj[k]!=null&&String(obj[k]).trim()!=="") return obj[k];
}
return "";
}
function pickNumber(obj, keys){
var v=pick(obj, keys);
if(v===""||v==null) return 0;
var s=String(v).trim();
var n;
if(/,/.test(s)){
n=parseFloat(s.replace(/\./g, "").replace(",", "."));
}else{
n=parseFloat(s);
}
return isFinite(n) ? Math.round(n):0;
}
function isTruthy(v){
if(v===true||v===1||v==="1") return true;
if(v===false||v===0||v==="0") return false;
var s=String(v||"").trim().toLowerCase();
return s==="true"||s==="sim"||s==="s"||s==="ativo"||s==="ok";
}
function firstRecord(api){
if(!api) return {};
if(Array.isArray(api)&&api.length&&api[0]&&typeof api[0]==="object") return api[0];
if(api&&typeof api==="object"&&Array.isArray(api.data)&&api.data.length&&api.data[0]) return api.data[0];
if(api&&typeof api==="object") return api;
return {};}
function normalizeMovimentacoes(api){
if(!api) return [];
if(Array.isArray(api)) return api;
if(typeof api!=="object") return [];
var keys=["movimentacoes", "extrato", "movimentos", "lista", "items", "data", "rows", "historico"];
for (var i=0; i < keys.length; i++){
var arr=api[keys[i]];
if(Array.isArray(arr)) return arr;
}
return [];
}
function parseProgramaAtivo(row){
if(!row||typeof row!=="object") return true;
if(row.programa_ativo!=null) return isTruthy(row.programa_ativo);
if(row.programaAtivo!=null) return isTruthy(row.programaAtivo);
if(row.ativo!=null) return isTruthy(row.ativo);
return true;
}
function parseRegrasBlock(row){
var mensagem="";
var lista=[];
var block=row&&row.regras;
if(block&&typeof block==="object"&&!Array.isArray(block)){
mensagem=String(block.mensagem||"").trim();
if(Array.isArray(block.regras)){
lista=block.regras.map(function (s){ return String(s).trim(); }).filter(Boolean);
}}
if(!mensagem){
mensagem=String(pick(row, ["mensagem", "mensagem_programa", "mensagemPrograma", "destaque_mensagem", "destaque"])||"").trim();
}
if(!lista.length){
var flat=row.regras||row.regras_lista||row.regrasLista;
if(typeof flat==="string"){
lista=flat.split(/\r?\n/).map(function (s){ return s.trim(); }).filter(Boolean);
}else if(Array.isArray(flat)){
lista=flat.map(function (s){ return String(s).trim(); }).filter(Boolean);
}}
return { mensagem: mensagem, regras: lista };}
function normalizeResumo(api){
var row=firstRecord(api);
var regrasBlock=parseRegrasBlock(row);
return {
programaAtivo: parseProgramaAtivo(row),
saldo: pickNumber(row, ["saldo", "pontos", "pontos_saldo", "total_pontos", "pontos_disponiveis"]),
totalGanho: pickNumber(row, ["total_ganho", "totalGanho", "pontos_ganhos", "ganho", "pontos_ganho"]),
totalGasto: pickNumber(row, ["total_gasto", "totalGasto", "total_utilizado", "pontos_utilizados", "utilizado", "pontos_usados"]),
mensagem: regrasBlock.mensagem,
regras: regrasBlock.regras
};}
function formatDateTimeBR(raw){
if(raw==null||raw==="") return "—";
var s=String(raw).trim();
var m=s.match(/^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2})/);
if(m) return m[3] + "/" + m[2] + "/" + m[1] + " " + m[4] + ":" + m[5];
m=s.match(/^(\d{2})\/(\d{2})\/(\d{4})[ T](\d{2}):(\d{2})/);
if(m) return m[0].replace(" ", " ").slice(0, 16);
return formatDateBR(s);
}
function formatDateBR(raw){
if(raw==null||raw==="") return "—";
var s=String(raw).trim();
var m=s.match(/^(\d{4})-(\d{2})-(\d{2})/);
if(m) return m[3] + "/" + m[2] + "/" + m[1];
m=s.match(/^(\d{2})\/(\d{2})\/(\d{4})/);
if(m) return m[0];
return s.length > 10 ? s.slice(0, 10):s;
}
function labelTipoMov(tipo){
var raw=String(tipo||"").trim();
if(!raw) return "Movimentação";
return raw
.replace(/_/g, " ")
.split(/\s+/)
.filter(Boolean)
.map(function (word){
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
})
.join(" ");
}
function normalizeMovimentacao(row){
if(!row||typeof row!=="object") return null;
var pontos=pickNumber(row, ["pontos"]);
if(pontos===0&&row.pontos!=null&&row.pontos!==""){
pontos=parseFloat(String(row.pontos).replace(",", "."));
if(!isFinite(pontos)) pontos=0;
else pontos=Math.round(pontos);
}
var tipoRaw=String(pick(row, ["tipo", "tipo_movimento", "operacao"])||"").toLowerCase();
if(pontos > 0&&(tipoRaw.indexOf("debit") >=0||tipoRaw.indexOf("resgat") >=0||tipoRaw.indexOf("gasto") >=0)){
pontos=-Math.abs(pontos);
}
return {
tipo: pick(row, ["tipo", "tipo_movimento", "operacao"]),
descricao: String(pick(row, ["descricao", "motivo", "observacao"])||"").trim(),
criadoEm: formatDateTimeBR(pick(row, ["criado_em", "criadoEm", "data", "data_movimento"])),
pontos: pontos
};}
function setText(node, slot, value){
var el=node.querySelector('[data-slot="' + slot + '"]');
if(el) el.textContent=value;
}
function applyResumo(ctx, node, resumo){
var inativo=node.querySelector('[data-slot="pontos-inativo"]');
var ativo=node.querySelector('[data-slot="pontos-ativo"]');
if(!resumo.programaAtivo){
if(inativo){
var p=inativo.querySelector("p");
if(p){
p.textContent=resumo.aviso||"O programa de fidelidade não está disponível no momento.";
}
inativo.removeAttribute("hidden");
}
if(ativo) ativo.setAttribute("hidden", "hidden");
return;
}
if(inativo) inativo.setAttribute("hidden", "hidden");
if(ativo) ativo.removeAttribute("hidden");
setText(node, "pontos-saldo", String(resumo.saldo));
setText(node, "pontos-ganho", String(resumo.totalGanho));
setText(node, "pontos-utilizado", String(resumo.totalGasto));
var mensagemEl=node.querySelector('[data-slot="pontos-mensagem"]');
if(mensagemEl){
if(resumo.mensagem){
mensagemEl.textContent=resumo.mensagem;
mensagemEl.removeAttribute("hidden");
}else{
mensagemEl.textContent="";
mensagemEl.setAttribute("hidden", "hidden");
}}
var regrasEl=node.querySelector('[data-slot="pontos-regras"]');
if(regrasEl){
regrasEl.innerHTML="";
resumo.regras.forEach(function (linha){
regrasEl.appendChild(ctx.el("li", { text: linha }));
});
if(resumo.regras.length) regrasEl.removeAttribute("hidden");
else regrasEl.setAttribute("hidden", "hidden");
}}
function setExtratoLoading(node, loading){
var loadingEl=node.querySelector('[data-slot="pontos-extrato-loading"]');
var refreshBtn=node.querySelector(".bdm-pontos-extrato-refresh");
if(loadingEl){
if(loading){
loadingEl.removeAttribute("hidden");
loadingEl.classList.add("-on");
}else{
loadingEl.setAttribute("hidden", "hidden");
loadingEl.classList.remove("-on");
}}
if(refreshBtn){
refreshBtn.disabled = !!loading;
}}
function renderExtratoList(ctx, node, rows){
var listEl=node.querySelector('[data-slot="pontos-extrato-list"]');
var emptyEl=node.querySelector('[data-slot="pontos-extrato-empty"]');
if(!listEl) return;
listEl.innerHTML="";
rows.forEach(function (row){
var m=normalizeMovimentacao(row);
if(!m) return;
var item=ctx.el("div", { class: "bdm-pontos-extrato-item" });
var main=ctx.el("div", { class: "bdm-pontos-extrato-main" });
main.appendChild(ctx.el("h3", { class: "bdm-pontos-extrato-tipo", text: labelTipoMov(m.tipo) }));
if(m.descricao){
main.appendChild(ctx.el("p", { class: "bdm-pontos-extrato-desc", text: m.descricao }));
}
main.appendChild(ctx.el("p", { class: "bdm-pontos-extrato-date", text: m.criadoEm }));
item.appendChild(main);
var noteClass=m.pontos >=0 ? "-credit":"-debit";
var prefix=m.pontos > 0 ? "+":"";
item.appendChild(ctx.el("b", {
class: "bdm-pontos-extrato-delta " + noteClass,
text: prefix + String(m.pontos)
}));
listEl.appendChild(item);
});
if(emptyEl){
if(!listEl.children.length) emptyEl.removeAttribute("hidden");
else emptyEl.setAttribute("hidden", "hidden");
}}
function loadExtrato(ctx, node){
var pages=window.BDMChatPages||{};
var uid=pages.getUsuarioId ? pages.getUsuarioId():0;
var url=(ctx.urls.pontosExtrato||"").trim();
if(!uid||!url){
setExtratoLoading(node, false);
renderExtratoList(ctx, node, []);
var emptyEl=node.querySelector('[data-slot="pontos-extrato-empty"]');
if(emptyEl){
emptyEl.textContent="Extrato indisponível.";
emptyEl.removeAttribute("hidden");
}
return;
}
setExtratoLoading(node, true);
var extratoPromise=pages.fetchWidgetJson
? pages.fetchWidgetJson(ctx, "pontosExtrato", { id_usuario: uid, limite: EXTRATO_LIMITE }, url)
: fetch(url, {
method: "POST",
credentials: "same-origin",
headers: pages.mergeWidgetAuthHeaders({ "Content-Type": "application/json" }),
body: JSON.stringify({ id_usuario: uid, limite: EXTRATO_LIMITE })
}).then(function (r){ return r.json(); });
extratoPromise
.then(function (api){
var rows=normalizeMovimentacoes(api);
renderExtratoList(ctx, node, rows);
})
.catch(function (){
var listEl=node.querySelector('[data-slot="pontos-extrato-list"]');
if(listEl) listEl.innerHTML="";
var emptyEl=node.querySelector('[data-slot="pontos-extrato-empty"]');
if(emptyEl){
emptyEl.textContent="Falha ao carregar o extrato.";
emptyEl.removeAttribute("hidden");
}})
.finally(function (){
setExtratoLoading(node, false);
});
}
function wireTabs(ctx, node){
var tabs=node.querySelectorAll(".bdm-pontos-tab");
var panels=node.querySelectorAll(".bdm-pontos-panel");
var refreshBtn=node.querySelector(".bdm-pontos-extrato-refresh");
function showTab(name){
for (var i=0; i < tabs.length; i++){
var tab=tabs[i];
var on=tab.getAttribute("data-tab")===name;
tab.classList.toggle("-active", on);
tab.setAttribute("aria-selected", on ? "true":"false");
}
for (var j=0; j < panels.length; j++){
var panel=panels[j];
var show=panel.getAttribute("data-panel")===name;
if(show) panel.removeAttribute("hidden");
else panel.setAttribute("hidden", "hidden");
}
if(name==="extrato"&&ctx.state.pontosExtratoLoaded!==true){
ctx.state.pontosExtratoLoaded=true;
loadExtrato(ctx, node);
}}
for (var k=0; k < tabs.length; k++){
tabs[k].addEventListener("click", function (){
var tabName=this.getAttribute("data-tab");
if(tabName) showTab(tabName);
});
}
if(refreshBtn){
refreshBtn.addEventListener("click", function (){
loadExtrato(ctx, node);
});
}
showTab("resumo");
}
function mountPage(ctx, node, resumo){
wireTabs(ctx, node);
applyResumo(ctx, node, resumo||{
programaAtivo: true,
saldo: 0,
totalGanho: 0,
totalGasto: 0,
mensagem: "",
regras: []
});
ctx.body.innerHTML="";
ctx.body.appendChild(node);
}
window.BDMChatPages.pontosFidelidade=function (ctx){
ctx.state.currentView="pontosFidelidade";
ctx.state.pontosExtratoLoaded=false;
var pages=window.BDMChatPages||{};
var url=(ctx.urls.pontosFidelidade||"").trim();
function mountShell(msg){
ctx.loadTemplate("pontos-fidelidade").then(function (html){
var node=ctx.htmlToNode(html);
var resumo={
programaAtivo: false,
saldo: 0,
totalGanho: 0,
totalGasto: 0,
mensagem: "",
regras: [],
aviso: msg||"O programa de fidelidade não está disponível no momento."
};
mountPage(ctx, node, resumo);
}).catch(function (){
ctx.body.textContent="Falha ao carregar pontos de fidelidade.";
});
}
if(!pages.isLogged||!pages.isLogged()){
mountShell("Faça login para ver seus pontos.");
return;
}
var uid=pages.getUsuarioId ? pages.getUsuarioId():0;
if(!uid){
mountShell("Não foi possível identificar sua conta. Faça login novamente.");
return;
}
if(!url){
mountShell("Programa de fidelidade não configurado.");
return;
}
var saldoPromise=pages.fetchWidgetJson
? pages.fetchWidgetJson(ctx, "pontosSaldo", { id_usuario: uid }, url)
: fetch(url, {
method: "POST",
credentials: "same-origin",
headers: pages.mergeWidgetAuthHeaders({ "Content-Type": "application/json" }),
body: JSON.stringify({ id_usuario: uid })
}).then(function (r){ return r.json(); });
Promise.all([
ctx.loadTemplate("pontos-fidelidade"),
saldoPromise
])
.then(function (pack){
var node=ctx.htmlToNode(pack[0]);
mountPage(ctx, node, normalizeResumo(pack[1]));
})
.catch(function (){
ctx.body.textContent="Falha ao carregar seus pontos.";
});
};})();
(function (){
if(!window.BDMChatPages) window.BDMChatPages={};
function toast(ctx, msg){
var prev=ctx.body.querySelector(".bdm-toast");
if(prev) prev.remove();
ctx.body.appendChild(ctx.el("div", { class: "bdm-toast", text: msg }));
setTimeout(function (){
var t=ctx.body.querySelector(".bdm-toast");
if(t) t.remove();
}, 2600);
}
function pickFirst(obj, keys){
if(!obj||typeof obj!=="object") return "";
for (var i=0; i < keys.length; i++){
var v=obj[keys[i]];
if(v!=null&&String(v).trim()!=="") return String(v).trim();
}
return "";
}
function deepPick(obj, path){
var parts=String(path||"").split(".");
var cur=obj;
for (var i=0; i < parts.length; i++){
if(!cur||typeof cur!=="object") return "";
cur=cur[parts[i]];
}
return cur==null ? "":String(cur).trim();
}
function formatCpfDisplay(digits){
var d=String(digits||"").replace(/\D/g, "");
if(d.length!==11) return String(digits||"").trim();
return d.slice(0, 3) + "." + d.slice(3, 6) + "." + d.slice(6, 9) + "-" + d.slice(9, 11);
}
function displayNome(u){
if(!u) return "Visitante";
if(u.nome&&String(u.nome).trim()) return String(u.nome).trim();
var p=u.payload&&typeof u.payload==="object" ? u.payload:null;
if(p){
var n=pickFirst(p, ["nome", "name"])||deepPick(p, "cliente.nome")||deepPick(p, "usuario.nome");
if(n) return n;
}
if(u.email){
var at=u.email.indexOf("@");
var local=at > 0 ? u.email.slice(0, at):u.email;
if(local) return local.charAt(0).toUpperCase() + local.slice(1);
}
return "Usuário";
}
function onlyDigits(v){
return String(v||"").replace(/\D/g, "");
}
function formatCepMask(d8){
if(d8.length!==8) return String(d8||"");
return d8.slice(0, 5) + "-" + d8.slice(5);
}
function wireCepAutofill(ctx, form){
var cepEl=form.elements.cep;
if(!cepEl) return;
var debounceTimer=null;
var lastFetchedDigits="";
var inFlight=false;
function fetchCep(digits){
if(digits.length!==8||inFlight) return;
if(digits===lastFetchedDigits) return;
inFlight=true;
fetch("https://viacep.com.br/ws/" + encodeURIComponent(digits) + "/json/", { mode: "cors" })
.then(function (r){
return r.json();
})
.then(function (data){
inFlight=false;
if(!data||data.erro===true){
lastFetchedDigits="";
toast(ctx, "CEP não encontrado.");
return;
}
lastFetchedDigits=digits;
if(form.endereco) form.endereco.value=String(data.logradouro||"").trim();
if(form.bairro) form.bairro.value=String(data.bairro||"").trim();
if(form.cidade) form.cidade.value=String(data.localidade||"").trim();
if(form.uf) form.uf.value=String(data.uf||"").trim().slice(0, 2).toUpperCase();
var d=onlyDigits(data.cep||cepEl.value);
if(d.length===8) cepEl.value=formatCepMask(d);
})
.catch(function (){
inFlight=false;
lastFetchedDigits="";
toast(ctx, "Não foi possível consultar o CEP.");
});
}
cepEl.addEventListener("input", function (){
clearTimeout(debounceTimer);
var d=onlyDigits(cepEl.value);
if(d.length < 8) lastFetchedDigits="";
debounceTimer=setTimeout(function (){
if(d.length===8) fetchCep(d);
}, 450);
});
cepEl.addEventListener("blur", function (){
clearTimeout(debounceTimer);
var d=onlyDigits(cepEl.value);
if(d.length===8){
cepEl.value=formatCepMask(d);
fetchCep(d);
}});
}
function buildSnapshot(u){
var p=u&&u.payload&&typeof u.payload==="object" ? u.payload:{};
var prof=u&&u.profile&&typeof u.profile==="object" ? u.profile:{};
var cpfRaw=u.cpf||pickFirst(p, ["cpf", "documento"])||"";
return {
nome: displayNome(u),
email: String(u.email||pickFirst(p, ["email", "mail"])||"").trim(),
telefone: String(u.telefone||pickFirst(p, ["telefone", "fone", "celular", "phone"])||"").trim(),
cpf: formatCpfDisplay(cpfRaw),
endereco: String(prof.endereco||pickFirst(p, ["endereco", "logradouro", "rua"])||"").trim(),
numero: String(prof.numero||pickFirst(p, ["numero", "num"])||"").trim(),
bairro: String(prof.bairro||pickFirst(p, ["bairro"])||"").trim(),
cidade: String(prof.cidade||pickFirst(p, ["cidade"])||"").trim(),
uf: String(prof.uf||pickFirst(p, ["uf", "estado"])||"").trim().slice(0, 2).toUpperCase(),
cep: String(prof.cep||pickFirst(p, ["cep"])||"").trim()
};}
function fillForm(node, snap){
var nomeEl=node.querySelector('[data-conta-display="nome"]');
var mailEl=node.querySelector('[data-conta-display="email"]');
if(nomeEl) nomeEl.textContent=snap.nome;
if(mailEl) mailEl.textContent=snap.email||"—";
var form=node.querySelector("[data-conta-form]");
if(!form) return;
var fields=["nome", "telefone", "cpf", "endereco", "numero", "bairro", "cidade", "uf", "cep"];
fields.forEach(function (name){
var inp=form.elements[name];
if(inp&&snap[name]!=null) inp.value=snap[name];
});
var sen=form.elements.senha;
if(sen) sen.value="";
}
window.BDMChatPages.conta=function (ctx){
ctx.state.currentView="conta";
var pages=window.BDMChatPages||{};
function mountGuest(msg){
ctx.loadTemplate("conta").then(function (html){
var node=ctx.htmlToNode(html);
var bodyEl=node.querySelector(".bdm-conta-body");
if(bodyEl){
bodyEl.innerHTML="";
bodyEl.appendChild(ctx.el("div", { class: "bdm-empty", text: msg }));
}
ctx.body.innerHTML="";
ctx.body.appendChild(node);
}).catch(function (){
ctx.body.textContent="Falha ao carregar.";
});
}
if(!pages.isLogged||!pages.isLogged()){
mountGuest("Faça login para acessar sua conta.");
return;
}
ctx.loadTemplate("conta").then(function (html){
var node=ctx.htmlToNode(html);
var u=pages.getUserRecord ? pages.getUserRecord():null;
var snap=buildSnapshot(u||{});
fillForm(node, snap);
var form=node.querySelector("[data-conta-form]");
if(form){
form.addEventListener("submit", function (ev){
ev.preventDefault();
var uid=pages.getUsuarioId ? pages.getUsuarioId():0;
if(!uid){
toast(ctx, "Não foi possível identificar o usuário. Faça login novamente.");
return;
}
var apiUrl=(ctx.urls.userUpdate||"").trim();
if(!apiUrl){
toast(ctx, "Atualização de cadastro não configurada.");
return;
}
var nome=String(form.nome&&form.nome.value||"").trim();
var telefone=String(form.telefone&&form.telefone.value||"").trim();
var cpf=String(form.cpf&&form.cpf.value||"").trim();
var endereco=String(form.endereco&&form.endereco.value||"").trim();
var numero=String(form.numero&&form.numero.value||"").trim();
var bairro=String(form.bairro&&form.bairro.value||"").trim();
var cidade=String(form.cidade&&form.cidade.value||"").trim();
var uf=String(form.uf&&form.uf.value||"").trim().slice(0, 2).toUpperCase();
var cep=String(form.cep&&form.cep.value||"").trim();
var senha=String(form.senha&&form.senha.value||"").trim();
var body={
id: uid,
nome: nome,
telefone: telefone,
cpf: onlyDigits(cpf),
cep: cep,
endereco: endereco,
numero: numero,
bairro: bairro,
cidade: cidade,
uf: uf
};
if(senha) body.senha=senha;
fetch(apiUrl, {
method: "POST",
credentials: "same-origin",
headers: window.BDMChatPages.mergeWidgetAuthHeaders({ "Content-Type": "application/json" }),
body: JSON.stringify(body)
})
.then(function (r){
return r.json().then(function (j){
return { ok: r.ok, json: j };});
})
.then(function (res){
var j=res.json||{};
var ok=pages.isPanelResultOk ? pages.isPanelResultOk(j, true):false;
if(!ok){
var errMsg="Não foi possível atualizar o cadastro.";
var o=j;
if(Array.isArray(o)&&o[0]&&typeof o[0]==="object") o=o[0];
if(o&&o.erro!=null&&String(o.erro).trim()){
errMsg=String(o.erro).trim();
}else if(j.erro!=null&&String(j.erro).trim()){
errMsg=String(j.erro).trim();
}else if(!res.ok){
errMsg="Falha ao salvar.";
}
toast(ctx, errMsg);
return;
}
var payload=j;
if(Array.isArray(payload)&&payload[0]&&typeof payload[0]==="object"){
payload=payload[0];
}
if(pages.applyUserApiResponse) pages.applyUserApiResponse(payload);
if(pages.saveUserProfile){
pages.saveUserProfile({
nome: nome,
telefone: telefone,
cpf: cpf,
endereco: endereco,
numero: numero,
bairro: bairro,
cidade: cidade,
uf: uf,
cep: cep
});
}
var u2=pages.getUserRecord ? pages.getUserRecord():null;
fillForm(node, buildSnapshot(u2||{}));
toast(ctx, "Dados atualizados com sucesso.");
})
.catch(function (){
toast(ctx, "Falha de conexão ao salvar.");
});
});
wireCepAutofill(ctx, form);
}
ctx.body.innerHTML="";
ctx.body.appendChild(node);
}).catch(function (){
ctx.body.textContent="Falha ao carregar.";
});
};})();
(function (){
var sdkPromise=null;
function loadMercadoPagoSdk(){
if(window.MercadoPago) return Promise.resolve();
if(sdkPromise) return sdkPromise;
sdkPromise=new Promise(function (resolve, reject){
var s=document.createElement("script");
s.src="https://sdk.mercadopago.com/js/v2";
s.async=true;
s.onload=function (){ resolve(); };
s.onerror=function (){ reject(new Error("Falha ao carregar SDK do Mercado Pago.")); };
document.head.appendChild(s);
});
return sdkPromise;
}
function destroyController(refName){
var c=window[refName];
if(c&&typeof c.unmount==="function"){
try { c.unmount(); } catch (e){}}
window[refName]=null;
}
function ensureContainerVisible(id, visible){
var el=document.getElementById(id);
if(!el) return;
el.style.display=visible ? "":"none";
}
function getSafeErrorMessage(payload){
if(!payload||typeof payload!=="object") return "Falha no pagamento.";
return String(payload.erro||payload.message||"Falha no pagamento.");
}
window.BDMChatStartPagamento=async function (cfg){
cfg=cfg||{};
var publicKey=String(cfg.publicKey||"").trim();
if(!publicKey) throw new Error("Mercado Pago public key ausente.");
var preferenceId=String(cfg.preferenceId||"").trim();
if(!preferenceId) throw new Error("Preference ID ausente.");
var amount=Number(cfg.amount||0);
if(!isFinite(amount)||amount <=0) throw new Error("Valor de pagamento inválido.");
await loadMercadoPagoSdk();
destroyController("paymentBrickController");
destroyController("statusScreenBrickController");
ensureContainerVisible("paymentBrick_container", true);
ensureContainerVisible("statusScreenBrick_container", false);
var mp=new window.MercadoPago(publicKey, { locale: "pt-BR" });
var bricksBuilder=mp.bricks();
var settings={
initialization: {
amount: Number(amount.toFixed(2)),
preferenceId: preferenceId,
},
customization: {
paymentMethods: {
creditCard: "all",
debitCard: "all",
bankTransfer: "all",
maxInstallments: 1
},
visual: {
style: {
theme: "dark"
}}
},
callbacks: {
onReady: function (){
if(typeof cfg.onReady==="function") cfg.onReady();
},
onSubmit: function (args){
return new Promise(function (resolve, reject){
fetch(String(cfg.submitUrl||""), {
method: "POST",
credentials: "same-origin",
headers: (window.BDMChatPages&&window.BDMChatPages.mergeWidgetAuthHeaders)
? window.BDMChatPages.mergeWidgetAuthHeaders({ "Content-Type": "application/json" })
: { "Content-Type": "application/json" },
body: JSON.stringify({
codigo_reserva: cfg.codigoReserva,
id_usuario: cfg.idUsuario,
form_data: args&&args.formData ? args.formData:{}})
})
.then(function (r){
return r.json().then(function (j){ return { status: r.status, json: j };});
})
.then(function (res){
var data=res&&res.json ? res.json:{};
if(res.status < 200||res.status >=300||data.erro||data.result==="error"){
var err=new Error(getSafeErrorMessage(data));
if(typeof cfg.onError==="function") cfg.onError(err);
reject(err);
return;
}
var paymentId=data.id||(data.data&&data.data.id);
if(paymentId&&typeof cfg.onPaymentCreated==="function"){
cfg.onPaymentCreated(paymentId, data);
}
resolve();
})
.catch(function (err){
if(typeof cfg.onError==="function") cfg.onError(err);
reject(err);
});
});
},
onError: function (error){
if(typeof cfg.onError==="function") cfg.onError(error);
}}
};
window.paymentBrickController=await bricksBuilder.create("payment", "paymentBrick_container", settings);
return window.paymentBrickController;
};
window.BDMChatRenderStatusBrick=async function (publicKey, paymentId){
if(!publicKey||!paymentId) return;
await loadMercadoPagoSdk();
destroyController("statusScreenBrickController");
var mp=new window.MercadoPago(String(publicKey), { locale: "pt-BR" });
var bricksBuilder=mp.bricks();
ensureContainerVisible("paymentBrick_container", false);
ensureContainerVisible("statusScreenBrick_container", true);
window.statusScreenBrickController=await bricksBuilder.create("statusScreen",
"statusScreenBrick_container",
{
initialization: { paymentId: paymentId },
customization: {
visual: { style: { theme: "dark" }}
},
callbacks: {
onReady: function (){},
onError: function (){}}
}
);
};})();
!function(t,e){"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,(function(){function t(){}let e=t.prototype;return e.on=function(t,e){if(!t||!e)return this;let i=this._events=this._events||{},s=i[t]=i[t]||[];return s.includes(e)||s.push(e),this},e.once=function(t,e){if(!t||!e)return this;this.on(t,e);let i=this._onceEvents=this._onceEvents||{};return(i[t]=i[t]||{})[e]=!0,this},e.off=function(t,e){let i=this._events&&this._events[t];if(!i||!i.length)return this;let s=i.indexOf(e);return-1!=s&&i.splice(s,1),this},e.emitEvent=function(t,e){let i=this._events&&this._events[t];if(!i||!i.length)return this;i=i.slice(0),e=e||[];let s=this._onceEvents&&this._onceEvents[t];for(let n of i){s&&s[n]&&(this.off(t,n),delete s[n]),n.apply(this,e)}return this},e.allOff=function(){return delete this._events,delete this._onceEvents,this},t})),
function(t,e){"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter")):t.imagesLoaded=e(t,t.EvEmitter)}("undefined"!=typeof window?window:this,(function(t,e){let i=t.jQuery,s=t.console;function n(t,e,o){if(!(this instanceof n))return new n(t,e,o);let r=t;var h;("string"==typeof t&&(r=document.querySelectorAll(t)),r)?(this.elements=(h=r,Array.isArray(h)?h:"object"==typeof h&&"number"==typeof h.length?[...h]:[h]),this.options={},"function"==typeof e?o=e:Object.assign(this.options,e),o&&this.on("always",o),this.getImages(),i&&(this.jqDeferred=new i.Deferred),setTimeout(this.check.bind(this))):s.error(`Bad element for imagesLoaded ${r||t}`)}n.prototype=Object.create(e.prototype),n.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)};const o=[1,9,11];n.prototype.addElementImages=function(t){"IMG"===t.nodeName&&this.addImage(t),!0===this.options.background&&this.addElementBackgroundImages(t);let{nodeType:e}=t;if(!e||!o.includes(e))return;let i=t.querySelectorAll("img");for(let t of i)this.addImage(t);if("string"==typeof this.options.background){let e=t.querySelectorAll(this.options.background);for(let t of e)this.addElementBackgroundImages(t)}};const r=/url\((['"])?(.*?)\1\)/gi;function h(t){this.img=t}function d(t,e){this.url=t,this.element=e,this.img=new Image}return n.prototype.addElementBackgroundImages=function(t){let e=getComputedStyle(t);if(!e)return;let i=r.exec(e.backgroundImage);for(;null!==i;){let s=i&&i[2];s&&this.addBackground(s,t),i=r.exec(e.backgroundImage)}},n.prototype.addImage=function(t){let e=new h(t);this.images.push(e)},n.prototype.addBackground=function(t,e){let i=new d(t,e);this.images.push(i)},n.prototype.check=function(){if(this.progressedCount=0,this.hasAnyBroken=!1,!this.images.length)return void this.complete();let t=(t,e,i)=>{setTimeout((()=>{this.progress(t,e,i)}))};this.images.forEach((function(e){e.once("progress",t),e.check()}))},n.prototype.progress=function(t,e,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!t.isLoaded,this.emitEvent("progress",[this,t,e]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,t),this.progressedCount===this.images.length&&this.complete(),this.options.debug&&s&&s.log(`progress: ${i}`,t,e)},n.prototype.complete=function(){let t=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(t,[this]),this.emitEvent("always",[this]),this.jqDeferred){let t=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[t](this)}},h.prototype=Object.create(e.prototype),h.prototype.check=function(){this.getIsImageComplete()?this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.img.crossOrigin&&(this.proxyImage.crossOrigin=this.img.crossOrigin),this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.proxyImage.src=this.img.currentSrc||this.img.src)},h.prototype.getIsImageComplete=function(){return this.img.complete&&this.img.naturalWidth},h.prototype.confirm=function(t,e){this.isLoaded=t;let{parentNode:i}=this.img,s="PICTURE"===i.nodeName?i:this.img;this.emitEvent("progress",[this,s,e])},h.prototype.handleEvent=function(t){let e="on"+t.type;this[e]&&this[e](t)},h.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},h.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},h.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},d.prototype=Object.create(h.prototype),d.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url,this.getIsImageComplete()&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},d.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},d.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.element,e])},n.makeJQueryPlugin=function(e){(e=e||t.jQuery)&&(i=e,i.fn.imagesLoaded=function(t,e){return new n(this,t,e).jqDeferred.promise(i(this))})},n.makeJQueryPlugin(),n}));
(()=>{"use strict";var e,r,_,t,a,n={},i={};function __webpack_require__(e){var r=i[e];if(void 0!==r)return r.exports;var _=i[e]={id:e,loaded:!1,exports:{}};return n[e].call(_.exports,_,_.exports,__webpack_require__),_.loaded=!0,_.exports}__webpack_require__.m=n,e=[],__webpack_require__.O=(r,_,t,a)=>{if(!_){var n=1/0;for(b=0;b<e.length;b++){for(var[_,t,a]=e[b],i=!0,c=0;c<_.length;c++)(!1&a||n>=a)&&Object.keys(__webpack_require__.O).every(e=>__webpack_require__.O[e](_[c]))?_.splice(c--,1):(i=!1,a<n&&(n=a));if(i){e.splice(b--,1);var o=t();void 0!==o&&(r=o)}}return r}a=a||0;for(var b=e.length;b>0&&e[b-1][2]>a;b--)e[b]=e[b-1];e[b]=[_,t,a]},_=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,__webpack_require__.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var a=Object.create(null);__webpack_require__.r(a);var n={};r=r||[null,_({}),_([]),_(_)];for(var i=2&t&&e;("object"==typeof i||"function"==typeof i)&&!~r.indexOf(i);i=_(i))Object.getOwnPropertyNames(i).forEach(r=>n[r]=()=>e[r]);return n.default=()=>e,__webpack_require__.d(a,n),a},__webpack_require__.d=(e,r)=>{for(var _ in r)__webpack_require__.o(r,_)&&!__webpack_require__.o(e,_)&&Object.defineProperty(e,_,{enumerable:!0,get:r[_]})},__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((r,_)=>(__webpack_require__.f[_](e,r),r),[])),__webpack_require__.u=e=>786===e?"397f2d183c19202777d6.bundle.min.js":216===e?"lightbox.570c05c5a283cfb6b223.bundle.min.js":30===e?"text-path.a67c1f3a78d208bc7e1b.bundle.min.js":131===e?"accordion.8b0db5058afeb74622f5.bundle.min.js":707===e?"alert.b4336601ffdb6086d1b5.bundle.min.js":457===e?"counter.12335f45aaa79d244f24.bundle.min.js":234===e?"progress.0ea083b809812c0e3aa1.bundle.min.js":575===e?"tabs.18344b05d8d1ea0702bc.bundle.min.js":775===e?"toggle.2a177a3ef4785d3dfbc5.bundle.min.js":180===e?"video.86d44e46e43d0807e708.bundle.min.js":177===e?"image-carousel.6167d20b95b33386757b.bundle.min.js":212===e?"text-editor.45609661e409413f1cef.bundle.min.js":211===e?"wp-audio.c9624cb6e5dc9de86abd.bundle.min.js":215===e?"nested-tabs.a2401356d329f179475e.bundle.min.js":915===e?"nested-accordion.294d40984397351fd0f5.bundle.min.js":1===e?"contact-buttons.e98d0220ce8c38404e7e.bundle.min.js":336===e?"floating-bars.740d06d17cea5cebdb61.bundle.min.js":557===e?"shared-frontend-handlers.03caa53373b56d3bab67.bundle.min.js":396===e?"shared-editor-handlers.cacdcbed391abf4b48b0.bundle.min.js":768===e?"container-editor-handlers.a2e8e48d28c5544fb183.bundle.min.js":77===e?"section-frontend-handlers.d85ab872da118940910d.bundle.min.js":220===e?"section-editor-handlers.53ffedef32043348b99b.bundle.min.js":304===e?"nested-title-keyboard-handler.2a67d3cc630e11815acc.bundle.min.js":void 0,__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t={},a="elementorFrontend:",__webpack_require__.l=(e,r,_,n)=>{if(t[e])t[e].push(r);else{var i,c;if(void 0!==_)for(var o=document.getElementsByTagName("script"),b=0;b<o.length;b++){var d=o[b];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==a+_){i=d;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",__webpack_require__.nc&&i.setAttribute("nonce",__webpack_require__.nc),i.setAttribute("data-webpack",a+_),i.src=e),t[e]=[r];var onScriptComplete=(r,_)=>{i.onerror=i.onload=null,clearTimeout(u);var a=t[e];if(delete t[e],i.parentNode&&i.parentNode.removeChild(i),a&&a.forEach(e=>e(_)),r)return r(_)},u=setTimeout(onScriptComplete.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=onScriptComplete.bind(null,i.onerror),i.onload=onScriptComplete.bind(null,i.onload),c&&document.head.appendChild(i)}},__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;__webpack_require__.g.importScripts&&(e=__webpack_require__.g.location+"");var r=__webpack_require__.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var _=r.getElementsByTagName("script");if(_.length)for(var t=_.length-1;t>-1&&(!e||!/^http(s?):/.test(e));)e=_[t--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),__webpack_require__.p=e})(),(()=>{var e={76:0};__webpack_require__.f.j=(r,_)=>{var t=__webpack_require__.o(e,r)?e[r]:void 0;if(0!==t)if(t)_.push(t[2]);else if(76!=r){var a=new Promise((_,a)=>t=e[r]=[_,a]);_.push(t[2]=a);var n=__webpack_require__.p+__webpack_require__.u(r),i=new Error;__webpack_require__.l(n,_=>{if(__webpack_require__.o(e,r)&&(0!==(t=e[r])&&(e[r]=void 0),t)){var a=_&&("load"===_.type?"missing":_.type),n=_&&_.target&&_.target.src;i.message="Loading chunk "+r+" failed.\n("+a+": "+n+")",i.name="ChunkLoadError",i.type=a,i.request=n,t[1](i)}},"chunk-"+r,r)}else e[r]=0},__webpack_require__.O.j=r=>0===e[r];var webpackJsonpCallback=(r,_)=>{var t,a,[n,i,c]=_,o=0;if(n.some(r=>0!==e[r])){for(t in i)__webpack_require__.o(i,t)&&(__webpack_require__.m[t]=i[t]);if(c)var b=c(__webpack_require__)}for(r&&r(_);o<n.length;o++)a=n[o],__webpack_require__.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return __webpack_require__.O(b)},r=self.webpackChunkelementorFrontend=self.webpackChunkelementorFrontend||[];r.forEach(webpackJsonpCallback.bind(null,0)),r.push=webpackJsonpCallback.bind(null,r.push.bind(r))})()})();
(self.webpackChunkelementorFrontend=self.webpackChunkelementorFrontend||[]).push([[941],{1:(e,t,r)=>{"use strict";var n=r(5578),i=r(7255),s=r(5755),o=r(1866),a=r(6029),c=r(5022),l=n.Symbol,u=i("wks"),p=c?l.for||l:l&&l.withoutSetter||o;e.exports=function(e){return s(u,e)||(u[e]=a&&s(l,e)?l[e]:p("Symbol."+e)),u[e]}},41:e=>{"use strict";e.exports=function(e){return{iterator:e,next:e.next,done:!1}}},169:(e,t,r)=>{"use strict";var n=r(4762),i=r(8473),s=r(1483),o=r(5755),a=r(382),c=r(2048).CONFIGURABLE,l=r(7268),u=r(4483),p=u.enforce,d=u.get,h=String,f=Object.defineProperty,g=n("".slice),m=n("".replace),v=n([].join),y=a&&!i(function(){return 8!==f(function(){},"length",{value:8}).length}),w=String(String).split("String"),b=e.exports=function(e,t,r){"Symbol("===g(h(t),0,7)&&(t="["+m(h(t),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),r&&r.getter&&(t="get "+t),r&&r.setter&&(t="set "+t),(!o(e,"name")||c&&e.name!==t)&&(a?f(e,"name",{value:t,configurable:!0}):e.name=t),y&&r&&o(r,"arity")&&e.length!==r.arity&&f(e,"length",{value:r.arity});try{r&&o(r,"constructor")&&r.constructor?a&&f(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=p(e);return o(n,"source")||(n.source=v(w,"string"==typeof t?t:"")),e};Function.prototype.toString=b(function toString(){return s(this)&&d(this).source||l(this)},"toString")},274:(e,t,r)=>{"use strict";var n=r(8473);e.exports=!n(function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")})},348:(e,t,r)=>{"use strict";var n=r(1807),i=r(1483),s=r(1704),o=TypeError;e.exports=function(e,t){var r,a;if("string"===t&&i(r=e.toString)&&!s(a=n(r,e)))return a;if(i(r=e.valueOf)&&!s(a=n(r,e)))return a;if("string"!==t&&i(r=e.toString)&&!s(a=n(r,e)))return a;throw new o("Can't convert object to primitive value")}},382:(e,t,r)=>{"use strict";var n=r(8473);e.exports=!n(function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]})},641:(e,t,r)=>{"use strict";r(5724),r(4846),r(7458),r(9655);const Module=function(){const e=jQuery,t=arguments,r=this,n={};let i;this.getItems=function(e,t){if(t){const r=t.split("."),n=r.splice(0,1);if(!r.length)return e[n];if(!e[n])return;return this.getItems(e[n],r.join("."))}return e},this.getSettings=function(e){return this.getItems(i,e)},this.setSettings=function(t,n,s){if(s||(s=i),"object"==typeof t)return e.extend(s,t),r;const o=t.split("."),a=o.splice(0,1);return o.length?(s[a]||(s[a]={}),r.setSettings(o.join("."),n,s[a])):(s[a]=n,r)},this.getErrorMessage=function(e,t){let r;if("forceMethodImplementation"===e)r=`The method '${t}' must to be implemented in the inheritor child.`;else r="An error occurs";return r},this.forceMethodImplementation=function(e){throw new Error(this.getErrorMessage("forceMethodImplementation",e))},this.on=function(t,i){if("object"==typeof t)return e.each(t,function(e){r.on(e,this)}),r;return t.split(" ").forEach(function(e){n[e]||(n[e]=[]),n[e].push(i)}),r},this.off=function(e,t){if(!n[e])return r;if(!t)return delete n[e],r;const i=n[e].indexOf(t);return-1!==i&&(delete n[e][i],n[e]=n[e].filter(e=>e)),r},this.trigger=function(t){const i="on"+t[0].toUpperCase()+t.slice(1),s=Array.prototype.slice.call(arguments,1);r[i]&&r[i].apply(r,s);const o=n[t];return o?(e.each(o,function(e,t){t.apply(r,s)}),r):r},r.__construct.apply(r,t),e.each(r,function(e){const t=r[e];"function"==typeof t&&(r[e]=function(){return t.apply(r,arguments)})}),function(){i=r.getDefaultSettings();const n=t[0];n&&e.extend(!0,i,n)}(),r.trigger("init")};Module.prototype.__construct=function(){},Module.prototype.getDefaultSettings=function(){return{}},Module.prototype.getConstructorID=function(){return this.constructor.name},Module.extend=function(e){const t=jQuery,r=this,child=function(){return r.apply(this,arguments)};return t.extend(child,r),(child.prototype=Object.create(t.extend({},r.prototype,e))).constructor=child,child.__super__=r.prototype,child},e.exports=Module},670:(e,t,r)=>{"use strict";var n=r(382),i=r(5835),s=r(7738);e.exports=function(e,t,r){n?i.f(e,t,s(0,r)):e[t]=r}},751:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,r(5724),r(4846),r(9655);class InstanceType{static[Symbol.hasInstance](e){let t=super[Symbol.hasInstance](e);if(e&&!e.constructor.getInstanceType)return t;if(e&&(e.instanceTypes||(e.instanceTypes=[]),t||this.getInstanceType()===e.constructor.getInstanceType()&&(t=!0),t)){const t=this.getInstanceType===InstanceType.getInstanceType?"BaseInstanceType":this.getInstanceType();-1===e.instanceTypes.indexOf(t)&&e.instanceTypes.push(t)}return!t&&e&&(t=e.instanceTypes&&Array.isArray(e.instanceTypes)&&-1!==e.instanceTypes.indexOf(this.getInstanceType())),t}static getInstanceType(){elementorModules.ForceMethodImplementation()}constructor(){let e=new.target;const t=[];for(;e.__proto__&&e.__proto__.name;)t.push(e.__proto__),e=e.__proto__;t.reverse().forEach(e=>this instanceof e)}}t.default=InstanceType},1091:e=>{"use strict";var t=TypeError;e.exports=function(e){if(e>9007199254740991)throw t("Maximum allowed index exceeded");return e}},1265:(e,t,r)=>{"use strict";var n=r(6784);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(641)),s=n(r(2425)),o=n(r(2946)),a=n(r(3980)),c=n(r(2970)),l=n(r(8685)),u=r(9031),p=r(1462);const d={Module:i.default,ViewModule:s.default,ArgsObject:o.default,ForceMethodImplementation:l.default,utils:{Masonry:a.default,Scroll:c.default},importExport:{createGetInitialState:u.createGetInitialState,customizationDialogsRegistry:p.customizationDialogsRegistry}};window.elementorModules?Object.assign(window.elementorModules,d):window.elementorModules=d;t.default=window.elementorModules},1278:(e,t,r)=>{"use strict";var n=r(4762),i=n({}.toString),s=n("".slice);e.exports=function(e){return s(i(e),8,-1)}},1409:(e,t,r)=>{"use strict";var n=r(5578),i=r(1483);e.exports=function(e,t){return arguments.length<2?(r=n[e],i(r)?r:void 0):n[e]&&n[e][t];var r}},1423:(e,t,r)=>{"use strict";var n=r(1409),i=r(1483),s=r(4815),o=r(5022),a=Object;e.exports=o?function(e){return"symbol"==typeof e}:function(e){var t=n("Symbol");return i(t)&&s(t.prototype,a(e))}},1462:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.customizationDialogsRegistry=void 0;var n=r(7958);t.customizationDialogsRegistry=new n.BaseRegistry},1483:e=>{"use strict";var t="object"==typeof document&&document.all;e.exports=void 0===t&&void 0!==t?function(e){return"function"==typeof e||e===t}:function(e){return"function"==typeof e}},1506:(e,t,r)=>{"use strict";var n=r(2914),i=r(1807),s=r(2293),o=r(8761),a=r(5299),c=r(6960),l=r(4815),u=r(4887),p=r(6665),d=r(6721),h=TypeError,Result=function(e,t){this.stopped=e,this.result=t},f=Result.prototype;e.exports=function(e,t,r){var g,m,v,y,w,b,S,x=r&&r.that,E=!(!r||!r.AS_ENTRIES),I=!(!r||!r.IS_RECORD),_=!(!r||!r.IS_ITERATOR),C=!(!r||!r.INTERRUPTED),O=n(t,x),stop=function(e){return g&&d(g,"normal"),new Result(!0,e)},callFn=function(e){return E?(s(e),C?O(e[0],e[1],stop):O(e[0],e[1])):C?O(e,stop):O(e)};if(I)g=e.iterator;else if(_)g=e;else{if(!(m=p(e)))throw new h(o(e)+" is not iterable");if(a(m)){for(v=0,y=c(e);y>v;v++)if((w=callFn(e[v]))&&l(f,w))return w;return new Result(!1)}g=u(e,m)}for(b=I?e.next:g.next;!(S=i(b,g)).done;){try{w=callFn(S.value)}catch(e){d(g,"throw",e)}if("object"==typeof w&&w&&l(f,w))return w}return new Result(!1)}},1507:e=>{"use strict";e.exports={}},1703:e=>{"use strict";var t=Math.ceil,r=Math.floor;e.exports=Math.trunc||function trunc(e){var n=+e;return(n>0?r:t)(n)}},1704:(e,t,r)=>{"use strict";var n=r(1483);e.exports=function(e){return"object"==typeof e?null!==e:n(e)}},1799:(e,t,r)=>{"use strict";var n=r(382),i=r(8473),s=r(3145);e.exports=!n&&!i(function(){return 7!==Object.defineProperty(s("div"),"a",{get:function(){return 7}}).a})},1807:(e,t,r)=>{"use strict";var n=r(274),i=Function.prototype.call;e.exports=n?i.bind(i):function(){return i.apply(i,arguments)}},1831:(e,t,r)=>{"use strict";var n=r(9557),i=r(5578),s=r(2095),o="__core-js_shared__",a=e.exports=i[o]||s(o,{});(a.versions||(a.versions=[])).push({version:"3.46.0",mode:n?"pure":"global",copyright:"© 2014-2025 Denis Pushkarev (zloirock.ru), 2025 CoreJS Company (core-js.io)",license:"https://github.com/zloirock/core-js/blob/v3.46.0/LICENSE",source:"https://github.com/zloirock/core-js"})},1851:(e,t,r)=>{"use strict";var n,i,s,o=r(8473),a=r(1483),c=r(1704),l=r(5290),u=r(3181),p=r(7914),d=r(1),h=r(9557),f=d("iterator"),g=!1;[].keys&&("next"in(s=[].keys())?(i=u(u(s)))!==Object.prototype&&(n=i):g=!0),!c(n)||o(function(){var e={};return n[f].call(e)!==e})?n={}:h&&(n=l(n)),a(n[f])||p(n,f,function(){return this}),e.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:g}},1866:(e,t,r)=>{"use strict";var n=r(4762),i=0,s=Math.random(),o=n(1.1.toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+o(++i+s,36)}},1975:(e,t,r)=>{"use strict";var n=r(8612),i=r(1807),s=r(8120),o=r(2293),a=r(41),c=r(8660),l=r(8901),u=r(9557),p=r(6721),d=r(7486),h=r(5267),f=!u&&!d("filter",function(){}),g=!u&&!f&&h("filter",TypeError),m=u||f||g,v=c(function(){for(var e,t,r=this.iterator,n=this.predicate,s=this.next;;){if(e=o(i(s,r)),this.done=!!e.done)return;if(t=e.value,l(r,n,[t,this.counter++],!0))return t}});n({target:"Iterator",proto:!0,real:!0,forced:m},{filter:function filter(e){o(this);try{s(e)}catch(e){p(this,"throw",e)}return g?i(g,this,e):new v(a(this),{predicate:e})}})},1983:(e,t,r)=>{"use strict";var n=r(6721);e.exports=function(e,t,r){for(var i=e.length-1;i>=0;i--)if(void 0!==e[i])try{r=n(e[i].iterator,t,r)}catch(e){t="throw",r=e}if("throw"===t)throw r;return r}},2048:(e,t,r)=>{"use strict";var n=r(382),i=r(5755),s=Function.prototype,o=n&&Object.getOwnPropertyDescriptor,a=i(s,"name"),c=a&&"something"===function something(){}.name,l=a&&(!n||n&&o(s,"name").configurable);e.exports={EXISTS:a,PROPER:c,CONFIGURABLE:l}},2095:(e,t,r)=>{"use strict";var n=r(5578),i=Object.defineProperty;e.exports=function(e,t){try{i(n,e,{value:t,configurable:!0,writable:!0})}catch(r){n[e]=t}return t}},2121:(e,t,r)=>{"use strict";var n=r(4762),i=r(8473),s=r(1278),o=Object,a=n("".split);e.exports=i(function(){return!o("z").propertyIsEnumerable(0)})?function(e){return"String"===s(e)?a(e,""):o(e)}:o},2278:(e,t,r)=>{"use strict";var n=r(6742),i=r(4741).concat("length","prototype");t.f=Object.getOwnPropertyNames||function getOwnPropertyNames(e){return n(e,i)}},2293:(e,t,r)=>{"use strict";var n=r(1704),i=String,s=TypeError;e.exports=function(e){if(n(e))return e;throw new s(i(e)+" is not an object")}},2313:(e,t,r)=>{"use strict";var n=r(7914);e.exports=function(e,t,r){for(var i in t)n(e,i,t[i],r);return e}},2347:(e,t,r)=>{"use strict";var n=r(3312),i=Object;e.exports=function(e){return i(n(e))}},2355:(e,t,r)=>{"use strict";var n=r(1807),i=r(1704),s=r(1423),o=r(2564),a=r(348),c=r(1),l=TypeError,u=c("toPrimitive");e.exports=function(e,t){if(!i(e)||s(e))return e;var r,c=o(e,u);if(c){if(void 0===t&&(t="default"),r=n(c,e,t),!i(r)||s(r))return r;throw new l("Can't convert object to primitive value")}return void 0===t&&(t="number"),a(e,t)}},2425:(e,t,r)=>{"use strict";var n=r(6784);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(641));t.default=i.default.extend({elements:null,getDefaultElements:()=>({}),bindEvents(){},onInit(){this.initElements(),this.bindEvents()},initElements(){this.elements=this.getDefaultElements()}})},2564:(e,t,r)=>{"use strict";var n=r(8120),i=r(5983);e.exports=function(e,t){var r=e[t];return i(r)?void 0:n(r)}},2811:(e,t,r)=>{"use strict";var n=r(1409);e.exports=n("document","documentElement")},2890:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,r(4846),r(6211);class _default extends elementorModules.ViewModule{getDefaultSettings(){return{selectors:{elements:".elementor-element",nestedDocumentElements:".elementor .elementor-element"},classes:{editMode:"elementor-edit-mode"}}}getDefaultElements(){const e=this.getSettings("selectors");return{$elements:this.$element.find(e.elements).not(this.$element.find(e.nestedDocumentElements))}}getDocumentSettings(e){let t;if(this.isEdit){t={};const e=elementor.settings.page.model;jQuery.each(e.getActiveControls(),r=>{t[r]=e.attributes[r]})}else t=this.$element.data("elementor-settings")||{};return this.getItems(t,e)}runElementsHandlers(){this.elements.$elements.each((e,t)=>setTimeout(()=>elementorFrontend.elementsHandler.runReadyTrigger(t)))}onInit(){this.$element=this.getSettings("$element"),super.onInit(),this.isEdit=this.$element.hasClass(this.getSettings("classes.editMode")),this.isEdit?elementor.on("document:loaded",()=>{elementor.settings.page.model.on("change",this.onSettingsChange.bind(this))}):this.runElementsHandlers()}onSettingsChange(){}}t.default=_default},2914:(e,t,r)=>{"use strict";var n=r(3786),i=r(8120),s=r(274),o=n(n.bind);e.exports=function(e,t){return i(e),void 0===t?e:s?o(e,t):function(){return e.apply(t,arguments)}}},2946:(e,t,r)=>{"use strict";var n=r(6784);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(751)),s=n(r(5213));class ArgsObject extends i.default{static getInstanceType(){return"ArgsObject"}constructor(e){super(),this.args=e}requireArgument(e,t=this.args){if(!Object.prototype.hasOwnProperty.call(t,e))throw Error(`${e} is required.`)}requireArgumentType(e,t,r=this.args){if(this.requireArgument(e,r),typeof r[e]!==t)throw Error(`${e} invalid type: ${t}.`)}requireArgumentInstance(e,t,r=this.args){if(this.requireArgument(e,r),!(r[e]instanceof t||(0,s.default)(r[e],t)))throw Error(`${e} invalid instance.`)}requireArgumentConstructor(e,t,r=this.args){if(this.requireArgument(e,r),r[e].constructor.toString()!==t.prototype.constructor.toString())throw Error(`${e} invalid constructor type.`)}}t.default=ArgsObject},2970:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,r(5724);t.default=class Scroll{static scrollObserver(e){let t=0;const r={root:e.root||null,rootMargin:e.offset||"0px",threshold:((e=0)=>{const t=[];if(e>0&&e<=100){const r=100/e;for(let e=0;e<=100;e+=r)t.push(e/100)}else t.push(0);return t})(e.sensitivity)};return new IntersectionObserver(function handleIntersect(r){const n=r[0].boundingClientRect.y,i=r[0].isIntersecting,s=n<t?"down":"up",o=Math.abs(parseFloat((100*r[0].intersectionRatio).toFixed(2)));e.callback({sensitivity:e.sensitivity,isInViewport:i,scrollPercentage:o,intersectionScrollDirection:s}),t=n},r)}static getElementViewportPercentage(e,t={}){const r=e[0].getBoundingClientRect(),n=t.start||0,i=t.end||0,s=window.innerHeight*n/100,o=window.innerHeight*i/100,a=r.top-window.innerHeight,c=0-a+s,l=r.top+s+e.height()-a+o,u=Math.max(0,Math.min(c/l,1));return parseFloat((100*u).toFixed(2))}static getPageScrollPercentage(e={},t){const r=e.start||0,n=e.end||0,i=t||document.documentElement.scrollHeight-document.documentElement.clientHeight,s=i*r/100,o=i+s+i*n/100;return(document.documentElement.scrollTop+document.body.scrollTop+s)/o*100}}},3005:(e,t,r)=>{"use strict";var n=r(1703);e.exports=function(e){var t=+e;return t!=t||0===t?0:n(t)}},3145:(e,t,r)=>{"use strict";var n=r(5578),i=r(1704),s=n.document,o=i(s)&&i(s.createElement);e.exports=function(e){return o?s.createElement(e):{}}},3181:(e,t,r)=>{"use strict";var n=r(5755),i=r(1483),s=r(2347),o=r(5409),a=r(9441),c=o("IE_PROTO"),l=Object,u=l.prototype;e.exports=a?l.getPrototypeOf:function(e){var t=s(e);if(n(t,c))return t[c];var r=t.constructor;return i(r)&&t instanceof r?r.prototype:t instanceof l?u:null}},3242:(e,t,r)=>{"use strict";var n=r(8612),i=r(1807),s=r(1506),o=r(8120),a=r(2293),c=r(41),l=r(6721),u=r(5267)("find",TypeError);n({target:"Iterator",proto:!0,real:!0,forced:u},{find:function find(e){a(this);try{o(e)}catch(e){l(this,"throw",e)}if(u)return i(u,this,e);var t=c(this),r=0;return s(t,function(t,n){if(e(t,r++))return n(t)},{IS_RECORD:!0,INTERRUPTED:!0}).result}})},3312:(e,t,r)=>{"use strict";var n=r(5983),i=TypeError;e.exports=function(e){if(n(e))throw new i("Can't call method on "+e);return e}},3392:(e,t,r)=>{"use strict";var n=r(3005),i=Math.max,s=Math.min;e.exports=function(e,t){var r=n(e);return r<0?i(r+t,0):s(r,t)}},3617:(e,t,r)=>{"use strict";var n=r(8612),i=r(5578),s=r(6021),o=r(2293),a=r(1483),c=r(3181),l=r(3864),u=r(670),p=r(8473),d=r(5755),h=r(1),f=r(1851).IteratorPrototype,g=r(382),m=r(9557),v="constructor",y="Iterator",w=h("toStringTag"),b=TypeError,S=i[y],x=m||!a(S)||S.prototype!==f||!p(function(){S({})}),E=function Iterator(){if(s(this,f),c(this)===f)throw new b("Abstract class Iterator not directly constructable")},defineIteratorPrototypeAccessor=function(e,t){g?l(f,e,{configurable:!0,get:function(){return t},set:function(t){if(o(this),this===f)throw new b("You can't redefine this property");d(this,e)?this[e]=t:u(this,e,t)}}):f[e]=t};d(f,w)||defineIteratorPrototypeAccessor(w,y),!x&&d(f,v)&&f[v]!==Object||defineIteratorPrototypeAccessor(v,E),E.prototype=f,n({global:!0,constructor:!0,forced:x},{Iterator:E})},3658:(e,t,r)=>{"use strict";var n=r(6742),i=r(4741);e.exports=Object.keys||function keys(e){return n(e,i)}},3786:(e,t,r)=>{"use strict";var n=r(1278),i=r(4762);e.exports=function(e){if("Function"===n(e))return i(e)}},3815:(e,t,r)=>{"use strict";var n=r(2355),i=r(1423);e.exports=function(e){var t=n(e,"string");return i(t)?t:t+""}},3864:(e,t,r)=>{"use strict";var n=r(169),i=r(5835);e.exports=function(e,t,r){return r.get&&n(r.get,t,{getter:!0}),r.set&&n(r.set,t,{setter:!0}),i.f(e,t,r)}},3896:(e,t,r)=>{"use strict";var n=r(382),i=r(8473);e.exports=n&&i(function(){return 42!==Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype})},3980:(e,t,r)=>{"use strict";var n=r(6784);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,r(5724);var i=n(r(2425));t.default=i.default.extend({getDefaultSettings:()=>({container:null,items:null,columnsCount:3,verticalSpaceBetween:30}),getDefaultElements(){return{$container:jQuery(this.getSettings("container")),$items:jQuery(this.getSettings("items"))}},run(){var e=[],t=this.elements.$container.position().top,r=this.getSettings(),n=r.columnsCount;t+=parseInt(this.elements.$container.css("margin-top"),10),this.elements.$items.each(function(i){var s=Math.floor(i/n),o=jQuery(this),a=o[0].getBoundingClientRect().height+r.verticalSpaceBetween;if(s){var c=o.position(),l=i%n,u=c.top-t-e[l];u-=parseInt(o.css("margin-top"),10),u*=-1,o.css("margin-top",u+"px"),e[l]+=a}else e.push(a)})}})},3991:(e,t,r)=>{"use strict";var n=r(8612),i=r(1807),s=r(8120),o=r(2293),a=r(41),c=r(8660),l=r(8901),u=r(6721),p=r(7486),d=r(5267),h=r(9557),f=!h&&!p("map",function(){}),g=!h&&!f&&d("map",TypeError),m=h||f||g,v=c(function(){var e=this.iterator,t=o(i(this.next,e));if(!(this.done=!!t.done))return l(e,this.mapper,[t.value,this.counter++],!0)});n({target:"Iterator",proto:!0,real:!0,forced:m},{map:function map(e){o(this);try{s(e)}catch(e){u(this,"throw",e)}return g?i(g,this,e):new v(a(this),{mapper:e})}})},4338:(e,t,r)=>{"use strict";var n={};n[r(1)("toStringTag")]="z",e.exports="[object z]"===String(n)},4347:(e,t)=>{"use strict";t.f=Object.getOwnPropertySymbols},4364:(e,t,r)=>{"use strict";r(3991)},4483:(e,t,r)=>{"use strict";var n,i,s,o=r(4644),a=r(5578),c=r(1704),l=r(9037),u=r(5755),p=r(1831),d=r(5409),h=r(1507),f="Object already initialized",g=a.TypeError,m=a.WeakMap;if(o||p.state){var v=p.state||(p.state=new m);v.get=v.get,v.has=v.has,v.set=v.set,n=function(e,t){if(v.has(e))throw new g(f);return t.facade=e,v.set(e,t),t},i=function(e){return v.get(e)||{}},s=function(e){return v.has(e)}}else{var y=d("state");h[y]=!0,n=function(e,t){if(u(e,y))throw new g(f);return t.facade=e,l(e,y,t),t},i=function(e){return u(e,y)?e[y]:{}},s=function(e){return u(e,y)}}e.exports={set:n,get:i,has:s,enforce:function(e){return s(e)?i(e):n(e,{})},getterFor:function(e){return function(t){var r;if(!c(t)||(r=i(t)).type!==e)throw new g("Incompatible receiver, "+e+" required");return r}}}},4644:(e,t,r)=>{"use strict";var n=r(5578),i=r(1483),s=n.WeakMap;e.exports=i(s)&&/native code/.test(String(s))},4741:e=>{"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},4762:(e,t,r)=>{"use strict";var n=r(274),i=Function.prototype,s=i.call,o=n&&i.bind.bind(s,s);e.exports=n?o:function(e){return function(){return s.apply(e,arguments)}}},4815:(e,t,r)=>{"use strict";var n=r(4762);e.exports=n({}.isPrototypeOf)},4846:(e,t,r)=>{"use strict";r(3617)},4887:(e,t,r)=>{"use strict";var n=r(1807),i=r(8120),s=r(2293),o=r(8761),a=r(6665),c=TypeError;e.exports=function(e,t){var r=arguments.length<2?a(e):t;if(i(r))return s(n(r,e));throw new c(o(e)+" is not iterable")}},4914:(e,t,r)=>{"use strict";var n=r(1278);e.exports=Array.isArray||function isArray(e){return"Array"===n(e)}},4946:(e,t,r)=>{"use strict";var n=r(6784),i=n(r(1265)),s=n(r(2890)),o=n(r(7955)),a=n(r(8140)),c=n(r(7224)),l=n(r(5633)),u=n(r(9603));i.default.frontend={Document:s.default,tools:{StretchElement:o.default},handlers:{Base:c.default,StretchedElement:a.default,SwiperBase:l.default,CarouselBase:u.default}}},4961:(e,t,r)=>{"use strict";var n=r(382),i=r(1807),s=r(7611),o=r(7738),a=r(5599),c=r(3815),l=r(5755),u=r(1799),p=Object.getOwnPropertyDescriptor;t.f=n?p:function getOwnPropertyDescriptor(e,t){if(e=a(e),t=c(t),u)try{return p(e,t)}catch(e){}if(l(e,t))return o(!i(s.f,e,t),e[t])}},5022:(e,t,r)=>{"use strict";var n=r(6029);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5213:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default=(e,t)=>{t=Array.isArray(t)?t:[t];for(const r of t)if(e.constructor.name===r.prototype[Symbol.toStringTag])return!0;return!1}},5247:e=>{"use strict";e.exports=function(e,t){return{value:e,done:t}}},5267:(e,t,r)=>{"use strict";var n=r(5578);e.exports=function(e,t){var r=n.Iterator,i=r&&r.prototype,s=i&&i[e],o=!1;if(s)try{s.call({next:function(){return{done:!0}},return:function(){o=!0}},-1)}catch(e){e instanceof t||(o=!1)}if(!o)return s}},5290:(e,t,r)=>{"use strict";var n,i=r(2293),s=r(5799),o=r(4741),a=r(1507),c=r(2811),l=r(3145),u=r(5409),p="prototype",d="script",h=u("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(e){return"<"+d+">"+e+"</"+d+">"},NullProtoObjectViaActiveX=function(e){e.write(scriptTag("")),e.close();var t=e.parentWindow.Object;return e=null,t},NullProtoObject=function(){try{n=new ActiveXObject("htmlfile")}catch(e){}var e,t,r;NullProtoObject="undefined"!=typeof document?document.domain&&n?NullProtoObjectViaActiveX(n):(t=l("iframe"),r="java"+d+":",t.style.display="none",c.appendChild(t),t.src=String(r),(e=t.contentWindow.document).open(),e.write(scriptTag("document.F=Object")),e.close(),e.F):NullProtoObjectViaActiveX(n);for(var i=o.length;i--;)delete NullProtoObject[p][o[i]];return NullProtoObject()};a[h]=!0,e.exports=Object.create||function create(e,t){var r;return null!==e?(EmptyConstructor[p]=i(e),r=new EmptyConstructor,EmptyConstructor[p]=null,r[h]=e):r=NullProtoObject(),void 0===t?r:s.f(r,t)}},5299:(e,t,r)=>{"use strict";var n=r(1),i=r(6775),s=n("iterator"),o=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||o[s]===e)}},5409:(e,t,r)=>{"use strict";var n=r(7255),i=r(1866),s=n("keys");e.exports=function(e){return s[e]||(s[e]=i(e))}},5578:function(e,t,r){"use strict";var check=function(e){return e&&e.Math===Math&&e};e.exports=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof r.g&&r.g)||check("object"==typeof this&&this)||function(){return this}()||Function("return this")()},5599:(e,t,r)=>{"use strict";var n=r(2121),i=r(3312);e.exports=function(e){return n(i(e))}},5633:(e,t,r)=>{"use strict";var n=r(6784);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(7224));class SwiperHandlerBase extends i.default{getInitialSlide(){const e=this.getEditSettings();return e.activeItemIndex?e.activeItemIndex-1:0}getSlidesCount(){return this.elements.$slides.length}togglePauseOnHover(e){e?this.elements.$swiperContainer.on({mouseenter:()=>{this.swiper.autoplay.stop()},mouseleave:()=>{this.swiper.autoplay.start()}}):this.elements.$swiperContainer.off("mouseenter mouseleave")}handleKenBurns(){const e=this.getSettings();this.$activeImageBg&&this.$activeImageBg.removeClass(e.classes.kenBurnsActive),this.activeItemIndex=this.swiper?this.swiper.activeIndex:this.getInitialSlide(),this.swiper?this.$activeImageBg=jQuery(this.swiper.slides[this.activeItemIndex]).children("."+e.classes.slideBackground):this.$activeImageBg=jQuery(this.elements.$slides[0]).children("."+e.classes.slideBackground),this.$activeImageBg.addClass(e.classes.kenBurnsActive)}}t.default=SwiperHandlerBase},5724:(e,t,r)=>{"use strict";var n=r(8612),i=r(2347),s=r(6960),o=r(9273),a=r(1091);n({target:"Array",proto:!0,arity:1,forced:r(8473)(function(){return 4294967297!==[].push.call({length:4294967296},1)})||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}}()},{push:function push(e){var t=i(this),r=s(t),n=arguments.length;a(r+n);for(var c=0;c<n;c++)t[r]=arguments[c],r++;return o(t,r),r}})},5755:(e,t,r)=>{"use strict";var n=r(4762),i=r(2347),s=n({}.hasOwnProperty);e.exports=Object.hasOwn||function hasOwn(e,t){return s(i(e),t)}},5799:(e,t,r)=>{"use strict";var n=r(382),i=r(3896),s=r(5835),o=r(2293),a=r(5599),c=r(3658);t.f=n&&!i?Object.defineProperties:function defineProperties(e,t){o(e);for(var r,n=a(t),i=c(t),l=i.length,u=0;l>u;)s.f(e,r=i[u++],n[r]);return e}},5835:(e,t,r)=>{"use strict";var n=r(382),i=r(1799),s=r(3896),o=r(2293),a=r(3815),c=TypeError,l=Object.defineProperty,u=Object.getOwnPropertyDescriptor,p="enumerable",d="configurable",h="writable";t.f=n?s?function defineProperty(e,t,r){if(o(e),t=a(t),o(r),"function"==typeof e&&"prototype"===t&&"value"in r&&h in r&&!r[h]){var n=u(e,t);n&&n[h]&&(e[t]=r.value,r={configurable:d in r?r[d]:n[d],enumerable:p in r?r[p]:n[p],writable:!1})}return l(e,t,r)}:l:function defineProperty(e,t,r){if(o(e),t=a(t),o(r),i)try{return l(e,t,r)}catch(e){}if("get"in r||"set"in r)throw new c("Accessors not supported");return"value"in r&&(e[t]=r.value),e}},5983:e=>{"use strict";e.exports=function(e){return null==e}},6021:(e,t,r)=>{"use strict";var n=r(4815),i=TypeError;e.exports=function(e,t){if(n(t,e))return e;throw new i("Incorrect invocation")}},6029:(e,t,r)=>{"use strict";var n=r(6477),i=r(8473),s=r(5578).String;e.exports=!!Object.getOwnPropertySymbols&&!i(function(){var e=Symbol("symbol detection");return!s(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41})},6145:(e,t,r)=>{"use strict";var n=r(4338),i=r(1483),s=r(1278),o=r(1)("toStringTag"),a=Object,c="Arguments"===s(function(){return arguments}());e.exports=n?s:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=a(e),o))?r:c?s(t):"Object"===(n=s(t))&&i(t.callee)?"Arguments":n}},6211:(e,t,r)=>{"use strict";r(3242)},6477:(e,t,r)=>{"use strict";var n,i,s=r(5578),o=r(9461),a=s.process,c=s.Deno,l=a&&a.versions||c&&c.version,u=l&&l.v8;u&&(i=(n=u.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!i&&o&&(!(n=o.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=o.match(/Chrome\/(\d+)/))&&(i=+n[1]),e.exports=i},6651:(e,t,r)=>{"use strict";var n=r(5599),i=r(3392),s=r(6960),createMethod=function(e){return function(t,r,o){var a=n(t),c=s(a);if(0===c)return!e&&-1;var l,u=i(o,c);if(e&&r!=r){for(;c>u;)if((l=a[u++])!=l)return!0}else for(;c>u;u++)if((e||u in a)&&a[u]===r)return e||u||0;return!e&&-1}};e.exports={includes:createMethod(!0),indexOf:createMethod(!1)}},6665:(e,t,r)=>{"use strict";var n=r(6145),i=r(2564),s=r(5983),o=r(6775),a=r(1)("iterator");e.exports=function(e){if(!s(e))return i(e,a)||i(e,"@@iterator")||o[n(e)]}},6721:(e,t,r)=>{"use strict";var n=r(1807),i=r(2293),s=r(2564);e.exports=function(e,t,r){var o,a;i(e);try{if(!(o=s(e,"return"))){if("throw"===t)throw r;return r}o=n(o,e)}catch(e){a=!0,o=e}if("throw"===t)throw r;if(a)throw o;return i(o),r}},6726:(e,t,r)=>{"use strict";var n=r(5755),i=r(9497),s=r(4961),o=r(5835);e.exports=function(e,t,r){for(var a=i(t),c=o.f,l=s.f,u=0;u<a.length;u++){var p=a[u];n(e,p)||r&&n(r,p)||c(e,p,l(t,p))}}},6742:(e,t,r)=>{"use strict";var n=r(4762),i=r(5755),s=r(5599),o=r(6651).indexOf,a=r(1507),c=n([].push);e.exports=function(e,t){var r,n=s(e),l=0,u=[];for(r in n)!i(a,r)&&i(n,r)&&c(u,r);for(;t.length>l;)i(n,r=t[l++])&&(~o(u,r)||c(u,r));return u}},6775:e=>{"use strict";e.exports={}},6784:e=>{e.exports=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},6960:(e,t,r)=>{"use strict";var n=r(8324);e.exports=function(e){return n(e.length)}},7224:(e,t,r)=>{"use strict";r(5724),r(4846),r(7458),r(6211),r(9655),e.exports=elementorModules.ViewModule.extend({$element:null,editorListeners:null,onElementChange:null,onEditSettingsChange:null,onPageSettingsChange:null,isEdit:null,__construct(e){this.isActive(e)&&(this.$element=e.$element,this.isEdit=this.$element.hasClass("elementor-element-edit-mode"),this.isEdit&&this.addEditorListeners())},isActive:()=>!0,isElementInTheCurrentDocument(){return!!elementorFrontend.isEditMode()&&elementor.documents.currentDocument.id.toString()===this.$element[0].closest(".elementor").dataset.elementorId},findElement(e){var t=this.$element;return t.find(e).filter(function(){return jQuery(this).parent().closest(".elementor-element").is(t)})},getUniqueHandlerID(e,t){return e||(e=this.getModelCID()),t||(t=this.$element),e+t.attr("data-element_type")+this.getConstructorID()},initEditorListeners(){var e=this;if(e.editorListeners=[{event:"element:destroy",to:elementor.channels.data,callback(t){t.cid===e.getModelCID()&&e.onDestroy()}}],e.onElementChange){const t=e.getWidgetType()||e.getElementType();let r="change";"global"!==t&&(r+=":"+t),e.editorListeners.push({event:r,to:elementor.channels.editor,callback(t,r){e.getUniqueHandlerID(r.model.cid,r.$el)===e.getUniqueHandlerID()&&e.onElementChange(t.model.get("name"),t,r)}})}e.onEditSettingsChange&&e.editorListeners.push({event:"change:editSettings",to:elementor.channels.editor,callback(t,r){if(r.model.cid!==e.getModelCID())return;const n=Object.keys(t.changed)[0];e.onEditSettingsChange(n,t.changed[n])}}),["page"].forEach(function(t){var r="on"+t[0].toUpperCase()+t.slice(1)+"SettingsChange";e[r]&&e.editorListeners.push({event:"change",to:elementor.settings[t].model,callback(t){e[r](t.changed)}})})},getEditorListeners(){return this.editorListeners||this.initEditorListeners(),this.editorListeners},addEditorListeners(){var e=this.getUniqueHandlerID();this.getEditorListeners().forEach(function(t){elementorFrontend.addListenerOnce(e,t.event,t.callback,t.to)})},removeEditorListeners(){var e=this.getUniqueHandlerID();this.getEditorListeners().forEach(function(t){elementorFrontend.removeListeners(e,t.event,null,t.to)})},getElementType(){return this.$element.data("element_type")},getWidgetType(){const e=this.$element.data("widget_type");if(e)return e.split(".")[0]},getID(){return this.$element.data("id")},getModelCID(){return this.$element.data("model-cid")},getElementSettings(e){let t={};const r=this.getModelCID();if(this.isEdit&&r){const e=elementorFrontend.config.elements.data[r],n=e.attributes;let i=n.widgetType||n.elType;n.isInner&&(i="inner-"+i);let s=elementorFrontend.config.elements.keys[i];s||(s=elementorFrontend.config.elements.keys[i]=[],jQuery.each(e.controls,(e,t)=>{(t.frontend_available||t.editor_available)&&s.push(e)})),jQuery.each(e.getActiveControls(),function(e){if(-1!==s.indexOf(e)){let r=n[e];r.toJSON&&(r=r.toJSON()),t[e]=r}})}else t=this.$element.data("settings")||{};return this.getItems(t,e)},getEditSettings(e){var t={};return this.isEdit&&(t=elementorFrontend.config.elements.editSettings[this.getModelCID()].attributes),this.getItems(t,e)},getCurrentDeviceSetting(e){return elementorFrontend.getCurrentDeviceSetting(this.getElementSettings(),e)},onInit(){this.isActive(this.getSettings())&&elementorModules.ViewModule.prototype.onInit.apply(this,arguments)},onDestroy(){this.isEdit&&this.removeEditorListeners(),this.unbindEvents&&this.unbindEvents()}})},7255:(e,t,r)=>{"use strict";var n=r(1831);e.exports=function(e,t){return n[e]||(n[e]=t||{})}},7268:(e,t,r)=>{"use strict";var n=r(4762),i=r(1483),s=r(1831),o=n(Function.toString);i(s.inspectSource)||(s.inspectSource=function(e){return o(e)}),e.exports=s.inspectSource},7458:(e,t,r)=>{"use strict";r(1975)},7486:e=>{"use strict";e.exports=function(e,t){var r="function"==typeof Iterator&&Iterator.prototype[e];if(r)try{r.call({next:null},t).next()}catch(e){return!0}}},7611:(e,t)=>{"use strict";var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,i=n&&!r.call({1:2},1);t.f=i?function propertyIsEnumerable(e){var t=n(this,e);return!!t&&t.enumerable}:r},7738:e=>{"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},7914:(e,t,r)=>{"use strict";var n=r(1483),i=r(5835),s=r(169),o=r(2095);e.exports=function(e,t,r,a){a||(a={});var c=a.enumerable,l=void 0!==a.name?a.name:t;if(n(r)&&s(r,l,a),a.global)c?e[t]=r:o(t,r);else{try{a.unsafe?e[t]&&(c=!0):delete e[t]}catch(e){}c?e[t]=r:i.f(e,t,{value:r,enumerable:!1,configurable:!a.nonConfigurable,writable:!a.nonWritable})}return e}},7955:e=>{"use strict";e.exports=elementorModules.ViewModule.extend({getDefaultSettings:()=>({element:null,direction:elementorFrontend.config.is_rtl?"right":"left",selectors:{container:window},considerScrollbar:!1,cssOutput:"inline"}),getDefaultElements(){return{$element:jQuery(this.getSettings("element"))}},stretch(){const e=this.getSettings();let t;try{t=jQuery(e.selectors.container)}catch(e){}t&&t.length||(t=jQuery(this.getDefaultSettings().selectors.container)),this.reset();var r=this.elements.$element,n=t.innerWidth(),i=r.offset().left,s="fixed"===r.css("position"),o=s?0:i,a=window===t[0];if(!a){var c=t.offset().left;s&&(o=c),i>c&&(o=i-c)}if(e.considerScrollbar&&a){o-=window.innerWidth-n}s||(elementorFrontend.config.is_rtl&&(o=n-(r.outerWidth()+o)),o=-o),e.margin&&(o+=e.margin);var l={};let u=n;e.margin&&(u-=2*e.margin),l.width=u+"px",l[e.direction]=o+"px","variables"!==e.cssOutput?r.css(l):this.applyCssVariables(r,l)},reset(){const e={},t=this.getSettings(),r=this.elements.$element;"variables"!==t.cssOutput?(e.width="",e[t.direction]="",r.css(e)):this.resetCssVariables(r)},applyCssVariables(e,t){e.css("--stretch-width",t.width),t.left?e.css("--stretch-left",t.left):e.css("--stretch-right",t.right)},resetCssVariables(e){e.css({"--stretch-width":"","--stretch-left":"","--stretch-right":""})}})},7958:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseRegistry=void 0,r(4846),r(7458),r(9655),r(4364);t.BaseRegistry=class BaseRegistry{constructor(){this.sections=new Map}register(e){if(!e.key||!e.title)throw new Error("Template type must have key and title");const t=this.get(e.key)||this.formatSection(e);if(e.children)if(t.children){const r=new Map(t.children.map(e=>[e.key,e]));e.children.forEach(e=>{const t=this.formatSection(e);r.set(e.key,t)}),t.children=Array.from(r.values())}else t.children=e.children.map(e=>this.formatSection(e));this.sections.set(e.key,t)}formatSection({children:e,...t}){return{key:t.key,title:t.title,description:t.description||"",useParentDefault:!1!==t.useParentDefault,getInitialState:t.getInitialState||null,component:t.component||null,order:t.order||10,isAvailable:t.isAvailable||(()=>!0),...t}}getAll(){return Array.from(this.sections.values()).filter(e=>e.isAvailable()).map(e=>e.children?{...e,children:[...e.children].sort((e,t)=>e.order-t.order)}:e).sort((e,t)=>e.order-t.order)}get(e){return this.sections.get(e)}}},8120:(e,t,r)=>{"use strict";var n=r(1483),i=r(8761),s=TypeError;e.exports=function(e){if(n(e))return e;throw new s(i(e)+" is not a function")}},8140:(e,t,r)=>{"use strict";var n=r(6784);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,r(4846),r(6211);var i=n(r(7224));class StretchedElement extends i.default{getStretchedClass(){return"e-stretched"}getStretchSettingName(){return"stretch_element"}getStretchActiveValue(){return"yes"}bindEvents(){const e=this.getUniqueHandlerID();elementorFrontend.addListenerOnce(e,"resize",this.stretch),elementorFrontend.addListenerOnce(e,"sticky:stick",this.stretch,this.$element),elementorFrontend.addListenerOnce(e,"sticky:unstick",this.stretch,this.$element),elementorFrontend.isEditMode()&&(this.onKitChangeStretchContainerChange=this.onKitChangeStretchContainerChange.bind(this),elementor.channels.editor.on("kit:change:stretchContainer",this.onKitChangeStretchContainerChange))}unbindEvents(){elementorFrontend.removeListeners(this.getUniqueHandlerID(),"resize",this.stretch),elementorFrontend.isEditMode()&&elementor.channels.editor.off("kit:change:stretchContainer",this.onKitChangeStretchContainerChange)}isActive(e){return elementorFrontend.isEditMode()||e.$element.hasClass(this.getStretchedClass())}getStretchElementForConfig(e=null){return e?this.$element.find(e):this.$element}getStretchElementConfig(){return{element:this.getStretchElementForConfig(),selectors:{container:this.getStretchContainer()},considerScrollbar:elementorFrontend.isEditMode()&&elementorFrontend.config.is_rtl}}initStretch(){this.stretch=this.stretch.bind(this),this.stretchElement=new elementorModules.frontend.tools.StretchElement(this.getStretchElementConfig())}getStretchContainer(){return elementorFrontend.getKitSettings("stretched_section_container")||window}isStretchSettingEnabled(){return this.getElementSettings(this.getStretchSettingName())===this.getStretchActiveValue()}stretch(){this.isStretchSettingEnabled()&&this.stretchElement.stretch()}onInit(...e){this.isActive(this.getSettings())&&(this.initStretch(),super.onInit(...e),this.stretch())}onElementChange(e){this.getStretchSettingName()===e&&(this.isStretchSettingEnabled()?this.stretch():this.stretchElement.reset())}onKitChangeStretchContainerChange(){this.stretchElement.setSettings("selectors.container",this.getStretchContainer()),this.stretch()}}t.default=StretchedElement},8324:(e,t,r)=>{"use strict";var n=r(3005),i=Math.min;e.exports=function(e){var t=n(e);return t>0?i(t,9007199254740991):0}},8473:e=>{"use strict";e.exports=function(e){try{return!!e()}catch(e){return!0}}},8612:(e,t,r)=>{"use strict";var n=r(5578),i=r(4961).f,s=r(9037),o=r(7914),a=r(2095),c=r(6726),l=r(8730);e.exports=function(e,t){var r,u,p,d,h,f=e.target,g=e.global,m=e.stat;if(r=g?n:m?n[f]||a(f,{}):n[f]&&n[f].prototype)for(u in t){if(d=t[u],p=e.dontCallGetSet?(h=i(r,u))&&h.value:r[u],!l(g?u:f+(m?".":"#")+u,e.forced)&&void 0!==p){if(typeof d==typeof p)continue;c(d,p)}(e.sham||p&&p.sham)&&s(d,"sham",!0),o(r,u,d,e)}}},8660:(e,t,r)=>{"use strict";var n=r(1807),i=r(5290),s=r(9037),o=r(2313),a=r(1),c=r(4483),l=r(2564),u=r(1851).IteratorPrototype,p=r(5247),d=r(6721),h=r(1983),f=a("toStringTag"),g="IteratorHelper",m="WrapForValidIterator",v="normal",y="throw",w=c.set,createIteratorProxyPrototype=function(e){var t=c.getterFor(e?m:g);return o(i(u),{next:function next(){var r=t(this);if(e)return r.nextHandler();if(r.done)return p(void 0,!0);try{var n=r.nextHandler();return r.returnHandlerResult?n:p(n,r.done)}catch(e){throw r.done=!0,e}},return:function(){var r=t(this),i=r.iterator;if(r.done=!0,e){var s=l(i,"return");return s?n(s,i):p(void 0,!0)}if(r.inner)try{d(r.inner.iterator,v)}catch(e){return d(i,y,e)}if(r.openIters)try{h(r.openIters,v)}catch(e){return d(i,y,e)}return i&&d(i,v),p(void 0,!0)}})},b=createIteratorProxyPrototype(!0),S=createIteratorProxyPrototype(!1);s(S,f,"Iterator Helper"),e.exports=function(e,t,r){var n=function Iterator(n,i){i?(i.iterator=n.iterator,i.next=n.next):i=n,i.type=t?m:g,i.returnHandlerResult=!!r,i.nextHandler=e,i.counter=0,i.done=!1,w(this,i)};return n.prototype=t?b:S,n}},8685:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.ForceMethodImplementation=void 0;class ForceMethodImplementation extends Error{constructor(e={},t={}){super(`${e.isStatic?"static ":""}${e.fullName}() should be implemented, please provide '${e.functionName||e.fullName}' functionality.`,t),Object.keys(t).length&&console.error(t),Error.captureStackTrace(this,ForceMethodImplementation)}}t.ForceMethodImplementation=ForceMethodImplementation;t.default=e=>{const t=Error().stack.split("\n")[2].trim(),r=t.startsWith("at new")?"constructor":t.split(" ")[1],n={};if(n.functionName=r,n.fullName=r,n.functionName.includes(".")){const e=n.functionName.split(".");n.className=e[0],n.functionName=e[1]}else n.isStatic=!0;throw new ForceMethodImplementation(n,e)}},8730:(e,t,r)=>{"use strict";var n=r(8473),i=r(1483),s=/#|\.prototype\./,isForced=function(e,t){var r=a[o(e)];return r===l||r!==c&&(i(t)?n(t):!!t)},o=isForced.normalize=function(e){return String(e).replace(s,".").toLowerCase()},a=isForced.data={},c=isForced.NATIVE="N",l=isForced.POLYFILL="P";e.exports=isForced},8761:e=>{"use strict";var t=String;e.exports=function(e){try{return t(e)}catch(e){return"Object"}}},8901:(e,t,r)=>{"use strict";var n=r(2293),i=r(6721);e.exports=function(e,t,r,s){try{return s?t(n(r)[0],r[1]):t(r)}catch(t){i(e,"throw",t)}}},9031:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createGetInitialState=function createGetInitialState(e,t={}){return(r,n)=>{let i=n;if(r.hasOwnProperty("uploadedData")){i=!1;const t=r.uploadedData.manifest.templates,n=elementorAppConfig?.["import-export-customization"]?.exportGroups||{};for(const r in t){if(n[t[r].doc_type]===e){i=!0;break}}}return{enabled:i,...t}}}},9037:(e,t,r)=>{"use strict";var n=r(382),i=r(5835),s=r(7738);e.exports=n?function(e,t,r){return i.f(e,t,s(1,r))}:function(e,t,r){return e[t]=r,e}},9273:(e,t,r)=>{"use strict";var n=r(382),i=r(4914),s=TypeError,o=Object.getOwnPropertyDescriptor,a=n&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=a?function(e,t){if(i(e)&&!o(e,"length").writable)throw new s("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},9441:(e,t,r)=>{"use strict";var n=r(8473);e.exports=!n(function(){function F(){}return F.prototype.constructor=null,Object.getPrototypeOf(new F)!==F.prototype})},9461:(e,t,r)=>{"use strict";var n=r(5578).navigator,i=n&&n.userAgent;e.exports=i?String(i):""},9497:(e,t,r)=>{"use strict";var n=r(1409),i=r(4762),s=r(2278),o=r(4347),a=r(2293),c=i([].concat);e.exports=n("Reflect","ownKeys")||function ownKeys(e){var t=s.f(a(e)),r=o.f;return r?c(t,r(e)):t}},9557:e=>{"use strict";e.exports=!1},9603:(e,t,r)=>{"use strict";var n=r(6784);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,r(4846),r(6211),r(9655);var i=n(r(5633));class CarouselHandlerBase extends i.default{getDefaultSettings(){return{selectors:{carousel:".swiper",swiperWrapper:".swiper-wrapper",slideContent:".swiper-slide",swiperArrow:".elementor-swiper-button",paginationWrapper:".swiper-pagination",paginationBullet:".swiper-pagination-bullet",paginationBulletWrapper:".swiper-pagination-bullets"}}}getDefaultElements(){const e=this.getSettings("selectors"),t={$swiperContainer:this.$element.find(e.carousel),$swiperWrapper:this.$element.find(e.swiperWrapper),$swiperArrows:this.$element.find(e.swiperArrow),$paginationWrapper:this.$element.find(e.paginationWrapper),$paginationBullets:this.$element.find(e.paginationBullet),$paginationBulletWrapper:this.$element.find(e.paginationBulletWrapper)};return t.$slides=t.$swiperContainer.find(e.slideContent),t}getSwiperSettings(){const e=this.getElementSettings(),t=+e.slides_to_show||3,r=1===t,n=elementorFrontend.config.responsive.activeBreakpoints,i={mobile:1,tablet:r?1:2},s={slidesPerView:t,loop:"yes"===e.infinite,speed:e.speed,handleElementorBreakpoints:!0,breakpoints:{}};let o=t;Object.keys(n).reverse().forEach(t=>{const r=i[t]?i[t]:o;s.breakpoints[n[t].value]={slidesPerView:+e["slides_to_show_"+t]||r,slidesPerGroup:+e["slides_to_scroll_"+t]||1},e.image_spacing_custom&&(s.breakpoints[n[t].value].spaceBetween=this.getSpaceBetween(t)),o=+e["slides_to_show_"+t]||r}),"yes"===e.autoplay&&(s.autoplay={delay:e.autoplay_speed,disableOnInteraction:"yes"===e.pause_on_interaction}),r?(s.effect=e.effect,"fade"===e.effect&&(s.fadeEffect={crossFade:!0})):s.slidesPerGroup=+e.slides_to_scroll||1,e.image_spacing_custom&&(s.spaceBetween=this.getSpaceBetween());const a="arrows"===e.navigation||"both"===e.navigation,c="dots"===e.navigation||"both"===e.navigation||e.pagination;return a&&(s.navigation={prevEl:".elementor-swiper-button-prev",nextEl:".elementor-swiper-button-next"}),c&&(s.pagination={el:`.elementor-element-${this.getID()} .swiper-pagination`,type:e.pagination?e.pagination:"bullets",clickable:!0,renderBullet:(e,t)=>`<span class="${t}" role="button" tabindex="0" data-bullet-index="${e}" aria-label="${elementorFrontend.config.i18n.a11yCarouselPaginationBulletMessage} ${e+1}"></span>`}),"yes"===e.lazyload&&(s.lazy={loadPrevNext:!0,loadPrevNextAmount:1}),s.a11y={enabled:!0,prevSlideMessage:elementorFrontend.config.i18n.a11yCarouselPrevSlideMessage,nextSlideMessage:elementorFrontend.config.i18n.a11yCarouselNextSlideMessage,firstSlideMessage:elementorFrontend.config.i18n.a11yCarouselFirstSlideMessage,lastSlideMessage:elementorFrontend.config.i18n.a11yCarouselLastSlideMessage},s.on={slideChange:()=>{this.a11ySetPaginationTabindex(),this.handleElementHandlers(),this.a11ySetSlideAriaHidden()},init:()=>{this.a11ySetPaginationTabindex(),this.a11ySetSlideAriaHidden("initialisation")}},this.applyOffsetSettings(e,s,t),s}getOffsetWidth(){const e=elementorFrontend.getCurrentDeviceMode();return elementorFrontend.utils.controls.getResponsiveControlValue(this.getElementSettings(),"offset_width","size",e)||0}applyOffsetSettings(e,t,r){const n=e.offset_sides;if(!(elementorFrontend.isEditMode()&&"NestedCarousel"===this.constructor.name)&&n&&"none"!==n)switch(n){case"right":this.forceSliderToShowNextSlideWhenOnLast(t,r),this.addClassToSwiperContainer("offset-right");break;case"left":this.addClassToSwiperContainer("offset-left");break;case"both":this.forceSliderToShowNextSlideWhenOnLast(t,r),this.addClassToSwiperContainer("offset-both")}}forceSliderToShowNextSlideWhenOnLast(e,t){e.slidesPerView=t+.001}addClassToSwiperContainer(e){this.getDefaultElements().$swiperContainer[0].classList.add(e)}async onInit(...e){if(super.onInit(...e),!this.elements.$swiperContainer.length||2>this.elements.$slides.length)return;await this.initSwiper();"yes"===this.getElementSettings().pause_on_hover&&this.togglePauseOnHover(!0)}async initSwiper(){const e=elementorFrontend.utils.swiper;this.swiper=await new e(this.elements.$swiperContainer,this.getSwiperSettings()),this.elements.$swiperContainer.data("swiper",this.swiper)}bindEvents(){this.elements.$swiperArrows.on("keydown",this.onDirectionArrowKeydown.bind(this)),this.elements.$paginationWrapper.on("keydown",".swiper-pagination-bullet",this.onDirectionArrowKeydown.bind(this)),this.elements.$swiperContainer.on("keydown",".swiper-slide",this.onDirectionArrowKeydown.bind(this)),this.$element.find(":focusable").on("focus",this.onFocusDisableAutoplay.bind(this)),elementorFrontend.elements.$window.on("resize",this.getSwiperSettings.bind(this))}unbindEvents(){this.elements.$swiperArrows.off(),this.elements.$paginationWrapper.off(),this.elements.$swiperContainer.off(),this.$element.find(":focusable").off(),elementorFrontend.elements.$window.off("resize")}onDirectionArrowKeydown(e){const t=elementorFrontend.config.is_rtl,r=e.originalEvent.code,n=t?"ArrowLeft":"ArrowRight";if(!(-1!==["ArrowLeft","ArrowRight"].indexOf(r)))return!0;(t?"ArrowRight":"ArrowLeft")===r?this.swiper.slidePrev():n===r&&this.swiper.slideNext()}onFocusDisableAutoplay(){this.swiper.autoplay.stop()}updateSwiperOption(e){const t=this.getElementSettings()[e],r=this.swiper.params;switch(e){case"autoplay_speed":r.autoplay.delay=t;break;case"speed":r.speed=t}this.swiper.update()}getChangeableProperties(){return{pause_on_hover:"pauseOnHover",autoplay_speed:"delay",speed:"speed",arrows_position:"arrows_position"}}onElementChange(e){if(0===e.indexOf("image_spacing_custom"))return void this.updateSpaceBetween(e);if(this.getChangeableProperties()[e])if("pause_on_hover"===e){const e=this.getElementSettings("pause_on_hover");this.togglePauseOnHover("yes"===e)}else this.updateSwiperOption(e)}onEditSettingsChange(e){"activeItemIndex"===e&&this.swiper.slideToLoop(this.getEditSettings("activeItemIndex")-1)}getSpaceBetween(e=null){const t=elementorFrontend.utils.controls.getResponsiveControlValue(this.getElementSettings(),"image_spacing_custom","size",e);return Number(t)||0}updateSpaceBetween(e){const t=e.match("image_spacing_custom_(.*)"),r=t?t[1]:"desktop",n=this.getSpaceBetween(r);"desktop"!==r&&(this.swiper.params.breakpoints[elementorFrontend.config.responsive.activeBreakpoints[r].value].spaceBetween=n),this.swiper.params.spaceBetween=n,this.swiper.update()}getPaginationBullets(e="array"){const t=this.$element.find(this.getSettings("selectors").paginationBullet);return"array"===e?Array.from(t):t}a11ySetPaginationTabindex(){const e=this.swiper?.params?.pagination.bulletClass,t=this.swiper?.params?.pagination.bulletActiveClass;this.getPaginationBullets().forEach(e=>{e.classList?.contains(t)||e.removeAttribute("tabindex")});const r="ArrowLeft"===event?.code||"ArrowRight"===event?.code;event?.target?.classList?.contains(e)&&r&&this.$element.find(`.${t}`).trigger("focus")}getSwiperWrapperTranformXValue(){let e=this.elements.$swiperWrapper[0]?.style.transform;return e=e.replace("translate3d(",""),e=e.split(","),e=parseInt(e[0].replace("px","")),e||0}a11ySetSlideAriaHidden(e=""){if("number"!=typeof("initialisation"===e?0:this.swiper?.activeIndex))return;const t=this.getSwiperWrapperTranformXValue(),r=this.elements.$swiperWrapper[0].clientWidth;this.elements.$swiperContainer.find(this.getSettings("selectors").slideContent).each((e,n)=>{0<=n.offsetLeft+t&&r>n.offsetLeft+t?(n.removeAttribute("aria-hidden"),n.removeAttribute("inert")):(n.setAttribute("aria-hidden",!0),n.setAttribute("inert",""))})}handleElementHandlers(){}}t.default=CarouselHandlerBase},9655:(e,t,r)=>{"use strict";r(9930)},9930:(e,t,r)=>{"use strict";var n=r(8612),i=r(1807),s=r(1506),o=r(8120),a=r(2293),c=r(41),l=r(6721),u=r(5267)("forEach",TypeError);n({target:"Iterator",proto:!0,real:!0,forced:u},{forEach:function forEach(e){a(this);try{o(e)}catch(e){l(this,"throw",e)}if(u)return i(u,this,e);var t=c(this),r=0;s(t,function(t){e(t,r++)},{IS_RECORD:!0})}})}},e=>{var t;t=4946,e(e.s=t)}]);
!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(x){"use strict";var t,e,i,n,W,C,o,s,r,l,a,h,u;function E(t,e,i){return[parseFloat(t[0])*(a.test(t[0])?e/100:1),parseFloat(t[1])*(a.test(t[1])?i/100:1)]}function L(t,e){return parseInt(x.css(t,e),10)||0}function N(t){return null!=t&&t===t.window}x.ui=x.ui||{},x.ui.version="1.13.3",
x.extend(x.expr.pseudos,{data:x.expr.createPseudo?x.expr.createPseudo(function(e){return function(t){return!!x.data(t,e)}}):function(t,e,i){return!!x.data(t,i[3])}}),
x.fn.extend({disableSelection:(t="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}),enableSelection:function(){return this.off(".ui-disableSelection")}}),
x.ui.focusable=function(t,e){var i,n,o,s=t.nodeName.toLowerCase();return"area"===s?(o=(i=t.parentNode).name,!(!t.href||!o||"map"!==i.nodeName.toLowerCase())&&0<(i=x("img[usemap='#"+o+"']")).length&&i.is(":visible")):(/^(input|select|textarea|button|object)$/.test(s)?(n=!t.disabled)&&(o=x(t).closest("fieldset")[0])&&(n=!o.disabled):n="a"===s&&t.href||e,n&&x(t).is(":visible")&&function(t){var e=t.css("visibility");for(;"inherit"===e;)t=t.parent(),e=t.css("visibility");return"visible"===e}(x(t)))},x.extend(x.expr.pseudos,{focusable:function(t){return x.ui.focusable(t,null!=x.attr(t,"tabindex"))}}),x.fn._form=function(){return"string"==typeof this[0].form?this.closest("form"):x(this[0].form)},
x.ui.formResetMixin={_formResetHandler:function(){var e=x(this);setTimeout(function(){var t=e.data("ui-form-reset-instances");x.each(t,function(){this.refresh()})})},_bindFormResetHandler:function(){var t;this.form=this.element._form(),this.form.length&&((t=this.form.data("ui-form-reset-instances")||[]).length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t))},_unbindFormResetHandler:function(){var t;this.form.length&&((t=this.form.data("ui-form-reset-instances")).splice(x.inArray(this,t),1),t.length?this.form.data("ui-form-reset-instances",t):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))}},x.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),
x.expr.pseudos||(x.expr.pseudos=x.expr[":"]),x.uniqueSort||(x.uniqueSort=x.unique),x.escapeSelector||(e=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,i=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},x.escapeSelector=function(t){return(t+"").replace(e,i)}),x.fn.even&&x.fn.odd||x.fn.extend({even:function(){return this.filter(function(t){return t%2==0})},odd:function(){return this.filter(function(t){return t%2==1})}}),
x.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},
x.fn.labels=function(){var t,e,i;return this.length?this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents("label"),(t=this.attr("id"))&&(i=(i=this.eq(0).parents().last()).add((i.length?i:this).siblings()),t="label[for='"+x.escapeSelector(t)+"']",e=e.add(i.find(t).addBack(t))),this.pushStack(e)):this.pushStack([])},x.ui.plugin={add:function(t,e,i){var n,o=x.ui[t].prototype;for(n in i)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([e,i[n]])},call:function(t,e,i,n){var o,s=t.plugins[e];if(s&&(n||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(o=0;o<s.length;o++)t.options[s[o][0]]&&s[o][1].apply(t.element,i)}},
W=Math.max,C=Math.abs,o=/left|center|right/,s=/top|center|bottom/,r=/[\+\-]\d+(\.[\d]+)?%?/,l=/^\w+/,a=/%$/,h=x.fn.position,x.position={scrollbarWidth:function(){var t,e,i;return void 0!==n?n:(i=(e=x("<div style='display:block;position:absolute;width:200px;height:200px;overflow:hidden;'><div style='height:300px;width:auto;'></div></div>")).children()[0],x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),n=t-i)},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?x.position.scrollbarWidth():0,height:e?x.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=x(t||window),i=N(e[0]),n=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:n,offset:!i&&!n?x(t).offset():{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},x.fn.position=function(f){var c,d,p,g,m,v,y,w,b,_,t,e;return f&&f.of?(v="string"==typeof(f=x.extend({},f)).of?x(document).find(f.of):x(f.of),y=x.position.getWithinInfo(f.within),w=x.position.getScrollInfo(y),b=(f.collision||"flip").split(" "),_={},e=9===(e=(t=v)[0]).nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:N(e)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:e.preventDefault?{width:0,height:0,offset:{top:e.pageY,left:e.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()},v[0].preventDefault&&(f.at="left top"),d=e.width,p=e.height,m=x.extend({},g=e.offset),x.each(["my","at"],function(){var t,e,i=(f[this]||"").split(" ");(i=1===i.length?o.test(i[0])?i.concat(["center"]):s.test(i[0])?["center"].concat(i):["center","center"]:i)[0]=o.test(i[0])?i[0]:"center",i[1]=s.test(i[1])?i[1]:"center",t=r.exec(i[0]),e=r.exec(i[1]),_[this]=[t?t[0]:0,e?e[0]:0],f[this]=[l.exec(i[0])[0],l.exec(i[1])[0]]}),1===b.length&&(b[1]=b[0]),"right"===f.at[0]?m.left+=d:"center"===f.at[0]&&(m.left+=d/2),"bottom"===f.at[1]?m.top+=p:"center"===f.at[1]&&(m.top+=p/2),c=E(_.at,d,p),m.left+=c[0],m.top+=c[1],this.each(function(){var i,t,r=x(this),l=r.outerWidth(),a=r.outerHeight(),e=L(this,"marginLeft"),n=L(this,"marginTop"),o=l+e+L(this,"marginRight")+w.width,s=a+n+L(this,"marginBottom")+w.height,h=x.extend({},m),u=E(_.my,r.outerWidth(),r.outerHeight());"right"===f.my[0]?h.left-=l:"center"===f.my[0]&&(h.left-=l/2),"bottom"===f.my[1]?h.top-=a:"center"===f.my[1]&&(h.top-=a/2),h.left+=u[0],h.top+=u[1],i={marginLeft:e,marginTop:n},x.each(["left","top"],function(t,e){x.ui.position[b[t]]&&x.ui.position[b[t]][e](h,{targetWidth:d,targetHeight:p,elemWidth:l,elemHeight:a,collisionPosition:i,collisionWidth:o,collisionHeight:s,offset:[c[0]+u[0],c[1]+u[1]],my:f.my,at:f.at,within:y,elem:r})}),f.using&&(t=function(t){var e=g.left-h.left,i=e+d-l,n=g.top-h.top,o=n+p-a,s={target:{element:v,left:g.left,top:g.top,width:d,height:p},element:{element:r,left:h.left,top:h.top,width:l,height:a},horizontal:i<0?"left":0<e?"right":"center",vertical:o<0?"top":0<n?"bottom":"middle"};d<l&&C(e+i)<d&&(s.horizontal="center"),p<a&&C(n+o)<p&&(s.vertical="middle"),W(C(e),C(i))>W(C(n),C(o))?s.important="horizontal":s.important="vertical",f.using.call(this,t,s)}),r.offset(x.extend(h,{using:t}))})):h.apply(this,arguments)},x.ui.position={fit:{left:function(t,e){var i,n=e.within,o=n.isWindow?n.scrollLeft:n.offset.left,n=n.width,s=t.left-e.collisionPosition.marginLeft,r=o-s,l=s+e.collisionWidth-n-o;n<e.collisionWidth?0<r&&l<=0?(i=t.left+r+e.collisionWidth-n-o,t.left+=r-i):t.left=!(0<l&&r<=0)&&l<r?o+n-e.collisionWidth:o:0<r?t.left+=r:0<l?t.left-=l:t.left=W(t.left-s,t.left)},top:function(t,e){var i,n=e.within,n=n.isWindow?n.scrollTop:n.offset.top,o=e.within.height,s=t.top-e.collisionPosition.marginTop,r=n-s,l=s+e.collisionHeight-o-n;o<e.collisionHeight?0<r&&l<=0?(i=t.top+r+e.collisionHeight-o-n,t.top+=r-i):t.top=!(0<l&&r<=0)&&l<r?n+o-e.collisionHeight:n:0<r?t.top+=r:0<l?t.top-=l:t.top=W(t.top-s,t.top)}},flip:{left:function(t,e){var i=e.within,n=i.offset.left+i.scrollLeft,o=i.width,i=i.isWindow?i.scrollLeft:i.offset.left,s=t.left-e.collisionPosition.marginLeft,r=s-i,s=s+e.collisionWidth-o-i,l="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,a="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,h=-2*e.offset[0];r<0?((o=t.left+l+a+h+e.collisionWidth-o-n)<0||o<C(r))&&(t.left+=l+a+h):0<s&&(0<(n=t.left-e.collisionPosition.marginLeft+l+a+h-i)||C(n)<s)&&(t.left+=l+a+h)},top:function(t,e){var i=e.within,n=i.offset.top+i.scrollTop,o=i.height,i=i.isWindow?i.scrollTop:i.offset.top,s=t.top-e.collisionPosition.marginTop,r=s-i,s=s+e.collisionHeight-o-i,l="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,a="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,h=-2*e.offset[1];r<0?((o=t.top+l+a+h+e.collisionHeight-o-n)<0||o<C(r))&&(t.top+=l+a+h):0<s&&(0<(n=t.top-e.collisionPosition.marginTop+l+a+h-i)||C(n)<s)&&(t.top+=l+a+h)}},flipfit:{left:function(){x.ui.position.flip.left.apply(this,arguments),x.ui.position.fit.left.apply(this,arguments)},top:function(){x.ui.position.flip.top.apply(this,arguments),x.ui.position.fit.top.apply(this,arguments)}}},x.ui.safeActiveElement=function(e){var i;try{i=e.activeElement}catch(t){i=e.body}return i=(i=i||e.body).nodeName?i:e.body},x.ui.safeBlur=function(t){t&&"body"!==t.nodeName.toLowerCase()&&x(t).trigger("blur")},
x.fn.scrollParent=function(t){var e=this.css("position"),i="absolute"===e,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,t=this.parents().filter(function(){var t=x(this);return(!i||"static"!==t.css("position"))&&n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&t.length?t:x(this[0].ownerDocument||document)},
x.extend(x.expr.pseudos,{tabbable:function(t){var e=x.attr(t,"tabindex"),i=null!=e;return(!i||0<=e)&&x.ui.focusable(t,i)}}),
x.fn.extend({uniqueId:(u=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++u)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&x(this).removeAttr("id")})}});
var f,c=0,d=Array.prototype.hasOwnProperty,p=Array.prototype.slice;x.cleanData=(f=x.cleanData,function(t){for(var e,i,n=0;null!=(i=t[n]);n++)(e=x._data(i,"events"))&&e.remove&&x(i).triggerHandler("remove");f(t)}),x.widget=function(t,i,e){var n,o,s,r={},l=t.split(".")[0],a=l+"-"+(t=t.split(".")[1]);return e||(e=i,i=x.Widget),Array.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr.pseudos[a.toLowerCase()]=function(t){return!!x.data(t,a)},x[l]=x[l]||{},n=x[l][t],o=x[l][t]=function(t,e){if(!this||!this._createWidget)return new o(t,e);arguments.length&&this._createWidget(t,e)},x.extend(o,n,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(s=new i).options=x.widget.extend({},s.options),x.each(e,function(e,n){function o(){return i.prototype[e].apply(this,arguments)}function s(t){return i.prototype[e].apply(this,t)}r[e]="function"!=typeof n?n:function(){var t,e=this._super,i=this._superApply;return this._super=o,this._superApply=s,t=n.apply(this,arguments),this._super=e,this._superApply=i,t}}),o.prototype=x.widget.extend(s,{widgetEventPrefix:n&&s.widgetEventPrefix||t},r,{constructor:o,namespace:l,widgetName:t,widgetFullName:a}),n?(x.each(n._childConstructors,function(t,e){var i=e.prototype;x.widget(i.namespace+"."+i.widgetName,o,e._proto)}),delete n._childConstructors):i._childConstructors.push(o),x.widget.bridge(t,o),o},x.widget.extend=function(t){for(var e,i,n=p.call(arguments,1),o=0,s=n.length;o<s;o++)for(e in n[o])i=n[o][e],d.call(n[o],e)&&void 0!==i&&(x.isPlainObject(i)?t[e]=x.isPlainObject(t[e])?x.widget.extend({},t[e],i):x.widget.extend({},i):t[e]=i);return t},x.widget.bridge=function(s,e){var r=e.prototype.widgetFullName||s;x.fn[s]=function(i){var t="string"==typeof i,n=p.call(arguments,1),o=this;return t?this.length||"instance"!==i?this.each(function(){var t,e=x.data(this,r);return"instance"===i?(o=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?x.error("no such method '"+i+"' for "+s+" widget instance"):(t=e[i].apply(e,n))!==e&&void 0!==t?(o=t&&t.jquery?o.pushStack(t.get()):t,!1):void 0:x.error("cannot call methods on "+s+" prior to initialization; attempted to call method '"+i+"'")}):o=void 0:(n.length&&(i=x.widget.extend.apply(null,[i].concat(n))),this.each(function(){var t=x.data(this,r);t?(t.option(i||{}),t._init&&t._init()):x.data(this,r,new e(i,this))})),o}},x.Widget=function(){},x.Widget._childConstructors=[],x.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=c++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,n,o,s=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(s={},t=(i=t.split(".")).shift(),i.length){for(n=s[t]=x.widget.extend({},this.options[t]),o=0;o<i.length-1;o++)n[i[o]]=n[i[o]]||{},n=n[i[o]];if(t=i.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];s[t]=e}return this._setOptions(s),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,i,n;for(e in t)n=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&n&&n.length&&(i=x(n.get()),this._removeClass(n,e),i.addClass(this._classes({element:i,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(o){var s=[],r=this;function t(t,e){for(var i,n=0;n<t.length;n++)i=r.classesElementLookup[t[n]]||x(),i=o.add?(function(){var i=[];o.element.each(function(t,e){x.map(r.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),r._on(x(i),{remove:"_untrackClassesElement"})}(),x(x.uniqueSort(i.get().concat(o.element.get())))):x(i.not(o.element).get()),r.classesElementLookup[t[n]]=i,s.push(t[n]),e&&o.classes[t[n]]&&s.push(o.classes[t[n]])}return(o=x.extend({element:this.element,classes:this.options.classes||{}},o)).keys&&t(o.keys.match(/\S+/g)||[],!0),o.extra&&t(o.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(i){var n=this;x.each(n.classesElementLookup,function(t,e){-1!==x.inArray(i.target,e)&&(n.classesElementLookup[t]=x(e.not(i.target).get()))}),this._off(x(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,n){var o="string"==typeof t||null===t,e={extra:o?e:i,keys:o?t:e,element:o?this.element:t,add:n="boolean"==typeof n?n:i};return e.element.toggleClass(this._classes(e),n),this},_on:function(o,s,t){var r,l=this;"boolean"!=typeof o&&(t=s,s=o,o=!1),t?(s=r=x(s),this.bindings=this.bindings.add(s)):(t=s,s=this.element,r=this.widget()),x.each(t,function(t,e){function i(){if(o||!0!==l.options.disabled&&!x(this).hasClass("ui-state-disabled"))return("string"==typeof e?l[e]:e).apply(l,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||x.guid++);var t=t.match(/^([\w:-]*)\s*(.*)$/),n=t[1]+l.eventNamespace,t=t[2];t?r.on(n,t,i):s.on(n,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=x(this.bindings.not(t).get()),this.focusable=x(this.focusable.not(t).get()),this.hoverable=x(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(x(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(x(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(x(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(x(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var n,o,s=this.options[t];if(i=i||{},(e=x.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],o=e.originalEvent)for(n in o)n in e||(e[n]=o[n]);return this.element.trigger(e,i),!("function"==typeof s&&!1===s.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},x.each({show:"fadeIn",hide:"fadeOut"},function(s,r){x.Widget.prototype["_"+s]=function(e,t,i){var n,o=(t="string"==typeof t?{effect:t}:t)?!0!==t&&"number"!=typeof t&&t.effect||r:s;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),n=!x.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),n&&x.effects&&x.effects.effect[o]?e[s](t):o!==s&&e[o]?e[o](t.duration,t.easing,i):e.queue(function(t){x(this)[s](),i&&i.call(e[0]),t()})}})});