/* Centrum + slot fake data */
const CENTRUMS = {
  nyugati: {
    key: "nyugati",
    name: "Nyugati",
    fullName: "Plazmacentrum Nyugati",
    address: "Budapest, Teréz körút 46., FBG Center 2. emelet",
    short: "Teréz krt. 46.",
    phone: "+36 30 149 4790",
    distance: "1,2 km tőled",
    transit: "M3 Nyugati pályaudvar · 4-6 villamos",
    note: "A legnagyobb és legforgalmasabb centrumunk. Szombaton is nyitva.",
    hours: "H–P 7:00–19:00 · Szo 8:00–16:00",
    capacity: { high: 5, mid: 4, low: 3 }, // shape of day-availability
  },
  blaha: {
    key: "blaha",
    name: "Blaha",
    fullName: "Plazmacentrum Blaha Lujza tér",
    address: "Budapest, Rákóczi út 42., EMKE Épület 9. emelet",
    short: "Rákóczi út 42.",
    phone: "+36 30 785 8750",
    distance: "3,4 km tőled",
    transit: "M2 Blaha Lujza tér · 4-6 villamos",
    note: "Belvárosi, közvetlenül a metrónál. Szombaton is nyitva.",
    hours: "H–P 7:00–19:00 · Szo 8:00–16:00",
    capacity: { high: 4, mid: 3, low: 2 },
  },
  baja: {
    key: "baja",
    name: "Baja",
    fullName: "Plazmacentrum Baja",
    address: "Baja, Dózsa György út 12.",
    short: "Dózsa György út 12.",
    phone: "+36 30 685 0611",
    distance: "—",
    transit: "Központ, gyalog 5 perc a buszpályaudvartól",
    note: "Kisebb, családias centrum. Soha nincs sor.",
    hours: "H–Sz 8:00–19:00 · Cs–P 8:00–15:00",
    capacity: { high: 3, mid: 3, low: 2 },
  },
};

/* Build the next 21 days starting today */
function buildDays(centrumKey, today = new Date()) {
  const DOW = ["V","H","K","Sze","Cs","P","Szo"];
  const MON = ["jan","feb","már","ápr","máj","jún","júl","aug","szept","okt","nov","dec"];
  const days = [];
  // Deterministic-ish pattern per centrum for visual realism
  const patternByCentrum = {
    nyugati: [3,2,2,1,3,2,0,3,2,1,2,2,3,0,2,1,2,3,2,1,2], // 0 full, 1 low, 2 mid, 3 high
    blaha:   [2,2,1,2,3,1,0,2,2,1,2,3,2,0,1,2,2,1,3,2,1],
    baja:    [3,2,3,2,1,2,0,3,2,2,1,2,3,0,2,2,1,2,2,3,1],
  };
  const pat = patternByCentrum[centrumKey] || patternByCentrum.nyugati;
  for (let i = 0; i < 21; i++) {
    const d = new Date(today);
    d.setDate(today.getDate() + i);
    const code = pat[i % pat.length];
    days.push({
      iso: d.toISOString().slice(0,10),
      day: d.getDate(),
      month: MON[d.getMonth()],
      dow: DOW[d.getDay()],
      isWeekend: d.getDay() === 0 || d.getDay() === 6,
      capCode: code, // 0 closed/full, 1 low, 2 mid, 3 high
      label: i === 0 ? "Ma" : (i === 1 ? "Holnap" : null),
    });
  }
  return days;
}

/* Build 8:00 → 18:00, 15-min slots; some are flagged taken */
function buildSlots(centrumKey, isoDate, dayCode) {
  const slots = [];
  // Deterministic 'taken' pattern by date hash
  let h = 0;
  for (let i = 0; i < isoDate.length; i++) h = (h * 31 + isoDate.charCodeAt(i)) >>> 0;
  for (let mins = 8 * 60; mins < 18 * 60; mins += 15) {
    const hh = String(Math.floor(mins / 60)).padStart(2, "0");
    const mm = String(mins % 60).padStart(2, "0");
    const id = `${hh}:${mm}`;
    // dayCode 0 -> mostly taken; 1 -> half; 2 -> a bit; 3 -> few
    const takenChance = dayCode === 0 ? 0.95 : dayCode === 1 ? 0.55 : dayCode === 2 ? 0.30 : 0.18;
    h = (h * 1664525 + 1013904223) >>> 0;
    const taken = (h / 0xffffffff) < takenChance;
    slots.push({ id, taken });
  }
  return slots;
}

/* Real Google reviews — verified from Plazmacentrum Google Business profiles.
   We render them in a Google-card style with initials avatar instead of stock photos. */
const TESTIMONIALS = [
  {
    name: "Csaba Benkő",
    initials: "CB",
    avatarColor: "#1A73E8",
    stars: 5,
    ago: "9 hónapja",
    centrum: "Plazmacentrum",
    quote: "Most voltam először, donor vizsgálaton. Teljesen korrekt volt mindenki, elmondták hogyan zajlik. Kedvesek voltak!",
  },
  {
    name: "Ádám Kling",
    initials: "ÁK",
    avatarColor: "#E63946",
    stars: 5,
    ago: "6 hónapja",
    centrum: "Plazmacentrum",
    quote: "Eddig összesen 5 alkalommal mentem plazmát adni és mindig mindenki kedves és segítőkész volt. Legközelebb is megyek.",
  },
  {
    name: "Balázs Gyöngyösi",
    initials: "BG",
    avatarColor: "#34A853",
    stars: 5,
    ago: "7 hónapja",
    centrum: "Plazmacentrum",
    quote: "Nagyon tiszta, modern és rendezett környezet, ahol mindig udvariasan és kedvesen fogadnak. A személyzet rendkívül barátságos, figyelmes és segítőkész.",
  },
  {
    name: "Nóra",
    initials: "N",
    avatarColor: "#FB8C00",
    stars: 5,
    ago: "egy éve",
    centrum: "Plazmacentrum",
    quote: "Szeretek ide járni. A vizsgáló orvosok, a recepciós lányok és a ferézises csajok is segítőkészek és közvetlenek. Mindig hamar sorra kerülök.",
  },
  {
    name: "István Kecskeméti",
    initials: "IK",
    avatarColor: "#8E24AA",
    stars: 5,
    ago: "2 éve",
    centrum: "Plazmacentrum",
    quote: "Szuper, gyors csapat, általában gyorsan sorra kerülök. Az orvosok, a felvételisek és a donorteremben tevékenykedők egyaránt kedvesek. Csak ajánlani tudom őket!",
  },
  {
    name: "Ádám Fodor",
    initials: "ÁF",
    avatarColor: "#0F9D58",
    stars: 5,
    ago: "2 éve",
    centrum: "Plazmacentrum",
    quote: "Kiváló lokáció, magas színvonalú munkamorál. Szakképzett orvosok, asszisztensek és recepciósok. Sikerült leküzdenem a tűfóbiám!",
  },
];

const FAQ = [
  {
    q: "Fáj?",
    a: "Mint egy vérvétel. 5 másodperc tűszúrás, utána semmi. A gép visszaadja a véredet, csak a plazmát tartja meg.",
  },
  {
    q: "Biztonságos?",
    a: "Profi orvosok vizsgálnak meg minden alkalommal vérplazmaadás előtt. Az OVSZ szigorú protokoll szerint dolgozunk. Steril, egyszer használatos eszközök minden alkalommal.",
  },
  {
    q: "Káros?",
    a: "Nem — sőt egészséges is lehet. Tanulmányok szerint plazmaadás során rengeteg káros örök vegyi anyag (pl. teflon származékok) is kiszűrődik a szervezetedből.",
  },
  {
    q: "Mennyi időt vesz el?",
    a: "Első alkalom kb. 90 perc (a regisztráció és az első plazmaadás miatt). A 2. alkalomtól már csak kb. 50 perc. A kanapéban ülsz végig — Spotify-on a fejhallgató.",
  },
  {
    q: "Hányszor adhatok?",
    a: "Évente 45-ször. Két alkalom között minimum 3 napnak kell eltelnie.",
  },
  {
    q: "Nálatok is csak utalványt kapok?",
    a: "Nem. Közvetlen készpénz kifizetést kapsz már rögtön az első alkalom után. Nem utalás, nincs várakozás, nincs „2 munkanap”, nincs rejtett minősítő alkalom, és semmiképp nem kupon.",
  },
  {
    q: "Mire használják a plazmám?",
    a: "Súlyos égési sérülések kezelésére, balesetek utáni nagy vérveszteség pótlására, immunhiányos és hemofíliás betegek kezelésére, autoimmun betegségek és májbetegségek terápiájára, valamint intenzív osztályos és műtéti ellátásokhoz. Egyetlen plazmaadás akár több beteg kezeléséhez is hozzájárulhat.",
  },
  {
    q: "Miért jó még a plazmaadás?",
    a: "Ingyenes szűrés. Ingyenes vérkép. Rendszeres ingyenes egészségügyi vizsgálat. Minden alkalommal megnyugtató kép arról, hogy minden rendben van veled.",
  },
];

window.CENTRUMS = CENTRUMS;
window.buildDays = buildDays;
window.buildSlots = buildSlots;
window.TESTIMONIALS = TESTIMONIALS;
window.FAQ = FAQ;
