// data.jsx — Configuración, base de invitados (mock) y contenido editorial.
// Exporta a window: CONFIG, GUESTS, getInvite, EVENT, LODGING, GIFT.

/* ============================================================================
   1) CONEXIÓN DEL RSVP  (la opción más eficiente: Google Sheets + Apps Script)
   ----------------------------------------------------------------------------
   • Abre la "Guía de conexión Google Sheets.html" incluida en el proyecto.
   • Sigue los 6 pasos: crear la hoja, pegar el script, publicar como Web App.
   • Copia la URL que termina en /exec y pégala abajo entre las comillas.
   • Mientras esté vacío, el formulario funciona en MODO DEMO (no envía nada,
     solo muestra la confirmación y registra el payload en la consola).
   ========================================================================== */
const CONFIG = {
  WEBHOOK_URL: 'https://script.google.com/macros/s/AKfycbySaoGEgGm1TAcmN4jFqRT9w-_-2PNe4syKjC5y3oH0M_MEeLsQkzaUd7MeNsAaYKgqew/exec',
  // Fecha/hora del evento en horario de Oaxaca (UTC−6)
  DATE_ISO: '2026-11-07T13:00:00-06:00',
  coupleHash: '#DianaYDaniel',
  // Token global que el script comparte — solo para verificar el origen (opcional)
  formSecret: 'dd-2026',
};

/* ============================================================================
   2) BASE DE INVITADOS.  Cada invitado tiene:
      id     → identificador en la URL  (?id=INV001)
      k      → token secreto del enlace (?k=...) — sin él, no se abre la invitación
      nombre → cómo se le saluda
      pases  → número máximo de personas permitidas
      acomp  → nombre del acompañante (null = va solo/a · 'TBD' = +1 sin nombre)
   ----------------------------------------------------------------------------
   El enlace que se comparte se ve así:
      .../Invitación Diana & Daniel.html?id=INV001&k=7typqw
   Lista generada desde Invitados_RSVP_BodaDD.xlsx · 31 invitaciones.
   ========================================================================== */
const GUESTS = {
  INV001 : { k: '7typqw', nombre: 'Cristina Ortiz',              pases: 1, acomp: null },
  INV002 : { k: '5ji8dm', nombre: 'Hugo Reyes',                  pases: 1, acomp: null },
  INV003 : { k: '7w764q', nombre: 'Cristina Reyes',              pases: 2, acomp: 'Alberto García' },
  INV004 : { k: 'c5knbw', nombre: 'Rosario Ortiz',               pases: 2, acomp: 'Eduardo Vila' },
  INV005 : { k: '5f075k', nombre: 'Valeria Vila',                pases: 1, acomp: null },
  INV006 : { k: 'lj6zh2', nombre: 'Claudia Torres',              pases: 2, acomp: 'Juan Antonio Torres-Septien' },
  INV007 : { k: 'jxa3bc', nombre: 'Paulina Flores',              pases: 2, acomp: 'Carlos Eduardo' },
  INV008 : { k: 'eulllz', nombre: 'Erika Estrada',               pases: 1, acomp: null },
  INV009 : { k: '0pe7y9', nombre: 'Karla Vázquez',               pases: 1, acomp: null },
  INV010 : { k: 'xot1d2', nombre: 'Catalina Larrazolo',          pases: 2, acomp: 'TBD' },
  INV011 : { k: 'q6t40v', nombre: 'David Cerdio',                pases: 2, acomp: 'Ana Lú' },
  INV012 : { k: '7zkqm1', nombre: 'Carlos Pacheco',              pases: 1, acomp: null },
  INV013 : { k: 'a59cc7', nombre: 'Sergio Patrón',               pases: 2, acomp: 'Oziel' },
  INV014 : { k: '0f4p7b', nombre: 'Rossmery Meza',               pases: 1, acomp: null },
  INV015 : { k: '5bqtlu', nombre: 'Rosario Becerra',             pases: 2, acomp: 'José Luis' },
  INV016 : { k: 'dq2lzy', nombre: 'Cristina Gómez',              pases: 2, acomp: 'Carlos Luis' },
  INV017 : { k: 'xn1ddf', nombre: 'David Favila',                pases: 2, acomp: 'Alejandra' },
  INV018 : { k: 'uxv1hx', nombre: 'Karla Navar',                 pases: 1, acomp: null },
  INV019 : { k: 'isdt87', nombre: 'Eduardo Herrera',             pases: 1, acomp: null },
  INV020 : { k: 'usqo6j', nombre: 'Paulina Ojeda',               pases: 2, acomp: 'TBD' },
  INV021 : { k: 'nv5po7', nombre: 'Mar Rentería',                pases: 2, acomp: 'Esposo de Mar' },
  INV022 : { k: '8fhvfl', nombre: 'Sammy Ortiz',                 pases: 2, acomp: 'Raúl' },
  INV023 : { k: 'wae6j4', nombre: 'José Alvarado',               pases: 2, acomp: 'Emma Amador' },
  INV024 : { k: 'o6er96', nombre: 'Rafael Torres',               pases: 2, acomp: 'Lissie' },
  INV025 : { k: 'yfmp58', nombre: 'Cuauhtémoc Molina',           pases: 1, acomp: null },
  INV026 : { k: 'z1tlwg', nombre: 'Irving Ángel',                pases: 2, acomp: 'Elba' },
  INV027 : { k: '47lyuz', nombre: 'Manu Hernández',              pases: 1, acomp: null },
  INV028 : { k: 'bdolpp', nombre: 'Eduardo Torres',              pases: 1, acomp: null },
  INV029 : { k: 'b16dxc', nombre: 'Juan José Torres Blancas',    pases: 1, acomp: null },
  INV030 : { k: 'cfioxu', nombre: 'Landy Rodríguez',             pases: 1, acomp: null },
  INV031 : { k: '8h4jvk', nombre: 'Juan José Torres Montes de Oca', pases: 2, acomp: 'Ana' },
  PRUEBA : { k: 'test99', nombre: 'Toribio Torres',              pases: 2, acomp: 'Kuki Torres' },
  DEMO   : { k: 'demo', nombre: 'Nuestros invitados',          pases: 2, acomp: null },
};

function getInvite() {
  const q = new URLSearchParams(location.search);
  const id = (q.get('id') || '').trim().toUpperCase();
  const k = (q.get('k') || '').trim();
  if (!id) return { status: 'none' };                 // sin id → portada genérica
  const g = GUESTS[id];
  if (!g) return { status: 'invalid', id };            // id inexistente
  if (g.k !== k) return { status: 'denied', id, nombre: g.nombre }; // token incorrecto
  return { status: 'ok', id, ...g };
}

/* ============================================================================
   3) CONTENIDO EDITORIAL
   ========================================================================== */
const EVENT = {
  novios: { a: 'Diana', b: 'Daniel' },
  fechaLarga: 'Sábado 7 de noviembre de 2026',
  fechaCorta: '07 · 11 · 2026',
  hora: '1:00 PM',
  ciudad: 'Oaxaca de Juárez, México',
  venue: 'Kaku Secret Gallery',
  venueZona: 'Oaxaca de Juárez, Oax.',
  mapsUrl: 'https://share.google/Y3h9RPyeTY4A4eEBJ',
  wazeUrl: 'https://waze.com/ul?q=Kaku%20Secret%20Gallery%20Oaxaca&navigate=yes',
  ceremoniaHora: '1:00 PM',
  recepcionHora: '3:00 PM',
  dress: {
    nivel: 'Semi formal',
    hombres: [
      'Camisa de manga larga o guayabera',
      'Pantalón de vestir en color claro',
      'Saco opcional · sin corbata',
      'Zapatos formales',
    ],
    mujeres: [
      'Vestido midi o largo, enterizo elegante o traje',
      'Evitar blanco, beige y negro',
      'Zapatos cómodos para disfrutar la fiesta',
    ],
  },
  ninos: 'Los niños están mejor en casa, descansando, mientras mamá y papá se divierten. Será una celebración solo para adultos.',
};

// Todos a menos de 10 minutos caminando de Kaku Secret Gallery.
// cat → grupo · dir → dirección · rating → estrellas Google · nota → detalle opcional
const LODGING = [
  // —— Hoteles boutique ——
  { nombre: 'Casa de Siete Balcones', cat: 'Hoteles boutique', dir: 'Morelos 800',      rating: 4.8, url: 'https://maps.google.com/?cid=5222576429452597903' },
  { nombre: 'Sauvé Casa Boutique',    cat: 'Hoteles boutique', dir: 'Matamoros 102',     rating: 4.7, url: 'https://hotelsauve.com/' },
  { nombre: 'Hotel La Casona de Tita', cat: 'Hoteles boutique', dir: 'García Vigil 805', rating: 4.7, url: 'https://www.lacasonadetitaoaxaca.com/' },
  { nombre: 'Majagua Hotel Boutique', cat: 'Hoteles boutique', dir: 'Pino Suárez 519',   rating: 4.6, url: 'https://www.majaguahotel.com/' },
  { nombre: 'Hotel Casa Catrina',     cat: 'Hoteles boutique', dir: 'García Vigil 703',  rating: 4.5, url: 'http://www.casacatrina.com.mx/' },
  // —— Casas / villas ——
  { nombre: 'Casa Almaviva', cat: 'Casas y villas', dir: 'Quintana Roo 102', nota: 'Villa completa con alberca', rating: 5.0, url: 'http://oaxaca.almaviva.villas/' },
  { nombre: 'Casa Murguía',  cat: 'Casas y villas', dir: 'Murguía 403',      nota: '5 habitaciones · alberca',   rating: 4.5, url: 'http://www.casamurguia.com/' },
  // —— Opción económica ——
  { nombre: 'Hostal Luz de Luna', cat: 'Opción económica', dir: 'Benito Juárez 101', rating: 4.4, url: 'http://www.hosteluzdeluna.com/' },
];

const GIFT = {
  intro: 'Tu presencia es nuestro mejor regalo. Si además deseas tener un detalle con nosotros, lo recibiremos con todo el corazón.',
  banco: 'BBVA',
  titular: 'Diana & Daniel',
  clabe: '01021...', // ← completa los 18 dígitos de la CLABE
  nota: 'Lluvia de sobres el día del evento.',
};

Object.assign(window, { CONFIG, GUESTS, getInvite, EVENT, LODGING, GIFT });
