// === JCGASISTAS — Shared utilities and small components (gás · Grande SP) ===

const SERVICES = [
  { id: "vazamento", icon: "🛟", title: "Detecção e Reparo de Vazamento de Gás", desc: "Localização precisa e correção segura — prioridade total à sua família." },
  { id: "tubulacao", icon: "🔧", title: "Instalação de Tubulação de Gás", desc: "Rede de gás nova ou ampliação, dentro da norma, com teste de pressão." },
  { id: "conversao", icon: "🍳", title: "Conversão de Fogão e Equipamentos", desc: "Botijão para gás encanado (ou o inverso), feita por técnico habilitado." },
  { id: "aquecedor", icon: "🚿", title: "Instalação e Manutenção de Aquecedor", desc: "Aquecedor a gás instalado, regulado e revisado com segurança." },
  { id: "laudo", icon: "📋", title: "Laudo de Estanqueidade", desc: "Laudo válido para síndico, seguradora e regularização do imóvel." },
  { id: "rede", icon: "🏢", title: "Rede de Gás para Condomínios", desc: "Projeto, instalação e manutenção de gás central para prédios." },
  { id: "manutencao", icon: "🛠️", title: "Manutenção Preventiva", desc: "Revisão periódica da instalação para evitar vazamentos e multas." },
  { id: "comercio", icon: "🍽️", title: "Gás para Comércio e Restaurantes", desc: "Instalação e adequação de cozinha industrial conforme a norma." },
];

const REGIONS = [
  "Moema", "Vila Mariana", "Pinheiros", "Itaim Bibi", "Jardins", "Perdizes",
  "Tatuapé", "Santana", "Morumbi", "Lapa", "Brooklin", "Vila Olímpia",
  "Saúde", "Ipiranga", "Mooca", "Vila Madalena", "Campo Belo", "Aclimação",
  "Santo André", "São Bernardo do Campo", "São Caetano do Sul", "Diadema",
  "Guarulhos", "Osasco", "Barueri", "Alphaville", "Cotia", "Taboão da Serra",
  "Carapicuíba", "Mauá", "Embu das Artes", "Itapecerica da Serra",
];

const TESTIMONIALS = [
  { name: "João Mendes", initials: "JM", place: "Grande São Paulo", problem: "Instalação de gás",
    text: "Contratei o serviço de instalação de gás e fiquei impressionado com a qualidade e rapidez. Profissionais muito bem preparados!" },
  { name: "Carla Souza", initials: "CS", place: "Grande São Paulo", problem: "Conversão de fogão",
    text: "Precisei fazer a conversão do fogão e fui super bem atendida. Tudo feito com segurança e atenção aos detalhes." },
  { name: "Marcos Oliveira", initials: "MO", place: "Grande São Paulo", problem: "Vazamento de gás",
    text: "Tive um problema sério com vazamento de gás e a equipe resolveu tudo no mesmo dia. Atendimento excelente!" },
];

const FAQS = [
  { q: "Vocês são técnicos certificados para mexer com gás?",
    a: "Sim. Todo serviço é executado por profissional habilitado, seguindo as normas técnicas de instalação de gás (ABNT). Trabalhar com gás sem qualificação é risco de vida — por isso só equipe própria e certificada atende você." },
  { q: "O que é o laudo de estanqueidade e quando preciso dele?",
    a: "É o documento que comprova que sua instalação de gás não tem vazamentos. Costuma ser exigido por síndicos, seguradoras e na regularização ou venda do imóvel. Emitimos o laudo após o teste de pressão da tubulação." },
  { q: "Desconfio de vazamento de gás. O que faço?",
    a: "Não acenda luzes nem use o celular no ambiente, feche o registro do gás, abra portas e janelas e saia do local. Depois ligue para nós: fazemos a detecção e o reparo com segurança. Vazamento de gás é a única real emergência — atendemos com prioridade." },
  { q: "Vocês fazem a conversão do meu fogão?",
    a: "Sim. Convertemos fogões e aquecedores de botijão (GLP) para gás encanado (GN) e vice-versa, com troca de injetores e regulagem, feita por técnico habilitado e com teste de segurança ao final." },
  { q: "Atendem condomínios e comércio?",
    a: "Sim. Atendemos residências, condomínios (rede de gás central) e comércios como restaurantes e padarias, incluindo projeto, instalação e manutenção dentro da norma." },
  { q: "Em quanto tempo vocês atendem na Grande São Paulo?",
    a: "Trabalhamos com agendamento ágil em toda a Grande São Paulo. Para suspeita de vazamento de gás, priorizamos o atendimento. Confirmamos o prazo real no momento do contato pelo WhatsApp." },
  { q: "O serviço tem garantia?",
    a: "Sim. Todo serviço executado tem garantia. Trabalhamos com equipe própria, material adequado e teste final — sem improviso quando o assunto é a segurança da sua família." },
];

const PROOF_STATS = [
  { num: "Certificado", lbl: "Técnico habilitado em gás" },
  { num: "Laudo", lbl: "Estanqueidade p/ síndico e seguro" },
  { num: "Garantia", lbl: "Em todo serviço executado" },
  { num: "Grande SP", lbl: "Atendimento em toda a região" },
  { num: "Equipe própria", lbl: "Sem terceirização" },
  { num: "Segurança", lbl: "Norma técnica em 1º lugar" },
];

const STEPS = [
  { num: 1, t: "Você chama", d: "Pelo WhatsApp ou ligação direta" },
  { num: 2, t: "Avaliação", d: "Entendemos sua necessidade e orientamos" },
  { num: 3, t: "Agendamento", d: "Visita técnica no melhor horário pra você" },
  { num: 4, t: "Execução segura", d: "Serviço dentro da norma, com teste de pressão" },
  { num: 5, t: "Laudo e garantia", d: "Documentação e cobertura do serviço" },
];

// Format BR phone: (11) 91309-2151
function maskPhone(v) {
  const digits = v.replace(/\D/g, "").slice(0, 11);
  if (digits.length <= 2) return digits.length ? `(${digits}` : "";
  if (digits.length <= 6) return `(${digits.slice(0,2)}) ${digits.slice(2)}`;
  if (digits.length <= 10) return `(${digits.slice(0,2)}) ${digits.slice(2,6)}-${digits.slice(6)}`;
  return `(${digits.slice(0,2)}) ${digits.slice(2,7)}-${digits.slice(7)}`;
}
function validPhone(v) {
  const digits = v.replace(/\D/g, "");
  return digits.length >= 10;
}

const COMPANY = {
  name: "JCGasistas",
  tagline: "Gasista Certificado · Grande São Paulo",
  phone: "(11) 91309-2151",
  phoneDigits: "5511913092151",
  landline: "(11) 4750-2390",
  city: "São Paulo",
};

function buildWA(message) {
  const text = encodeURIComponent(message || "Olá! Preciso de um gasista. Pode me atender?");
  return `https://wa.me/${COMPANY.phoneDigits}?text=${text}`;
}

// Registra o lead do form do hero no PhoneTrack (LeadTrack "Botões Na Página"),
// disparando o form oculto do widget (#whatsapp-<ID> -> .chat-send) que faz POST
// api/v3/leads com o gclid da visita -> conversão offline no Google Ads.
function phtRegisterLead(widgetId, name, phoneDigits) {
  try {
    const form = document.getElementById("whatsapp-" + widgetId);
    if (!form) return;
    const nameEl = form.querySelector("input[type=text]");
    const telEl = form.querySelector("input[type=tel]");
    const btn = form.querySelector("button.chat-send, button[type=submit]");
    if (!nameEl || !telEl || !btn) return;
    const setNative = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, "value").set;
    [[nameEl, name], [telEl, phoneDigits]].forEach(([el, val]) => {
      setNative.call(el, val);
      el.dispatchEvent(new Event("input", { bubbles: true }));
      el.dispatchEvent(new Event("change", { bubbles: true }));
    });
    const realOpen = window.open;
    window.open = function () { return { focus() {}, closed: false }; };
    btn.click();
    setTimeout(() => { window.open = realOpen; }, 2500);
  } catch (e) { /* silencioso */ }
}

function trackEvent(event, params) {
  window.dataLayer = window.dataLayer || [];
  window.dataLayer.push({ event, ...(params || {}) });
}

function waClick(source, message) {
  trackEvent("whatsapp_click", {
    source,
    message: message || "default",
    page_location: location.href,
  });
}

function openWA(message) {
  window.open(buildWA(message), "_blank");
}

function Logo({ light }) {
  return (
    <a href="#top" className={`logo logo-img ${light ? "logo-light" : ""}`} aria-label="JCGasistas">
      <img src="assets/jcg-logo.png" alt="JCGasistas — Gasista certificado na Grande São Paulo" />
    </a>
  );
}

function PhonePulse() {
  return (
    <a href={`tel:+${COMPANY.phoneDigits}`} className="phone-pulse" onClick={() => trackEvent("phone_click", { source: "topbar" })}>
      <span className="phone-dot"></span>
      {COMPANY.phone}
    </a>
  );
}

function Stars({ value = 5 }) {
  return (
    <span className="stars" aria-label={`${value} estrelas`}>
      {"★".repeat(value)}{"☆".repeat(5 - value)}
    </span>
  );
}

function Topbar({ tweaks }) {
  return (
    <header className="topbar" id="top">
      <div className="container topbar-inner">
        <Logo />
        <div className="topbar-actions">
          <PhonePulse />
          <a className="btn btn-ghost" href={`tel:+${COMPANY.phoneDigits}`} onClick={() => trackEvent("phone_click", { source: "topbar_btn" })}>
            <span>📞</span> Ligar Agora
          </a>
          <a className="btn btn-whatsapp pht-whatsapp" data-widget="5645" href={buildWA()} target="_blank" rel="noopener" onClick={() => waClick("topbar")}>
            <span>💬</span> WhatsApp
          </a>
        </div>
      </div>
    </header>
  );
}

Object.assign(window, {
  SERVICES, REGIONS, TESTIMONIALS, FAQS, PROOF_STATS, STEPS, COMPANY,
  maskPhone, validPhone, buildWA, openWA, trackEvent, waClick, phtRegisterLead,
  Logo, PhonePulse, Stars, Topbar,
});
