/* global React, ReactDOM */
const { useState, useEffect, useRef } = React;

// === DEFAULT IMAGES (Unsplash fallback) ===
const DEFAULT_IMG = {
  hero1: 'https://images.unsplash.com/photo-1534438327276-14e5300c3a48?w=1200&q=80',
  hero2: 'https://images.unsplash.com/photo-1540497077202-7c8a3999166f?w=1000&q=80',
  hero3: 'https://images.unsplash.com/photo-1517836357463-d25dfeac3438?w=1000&q=80',
  complex: 'https://images.unsplash.com/photo-1571902943202-507ec2618e8f?w=1600&q=80',

  fitness: 'https://images.unsplash.com/photo-1581009146145-b5ef050c2e1e?w=900&q=80',
  zumba: 'https://images.unsplash.com/photo-1518611012118-696072aa579a?w=900&q=80',
  pilates: 'https://images.unsplash.com/photo-1518310383802-640c2de311b2?w=900&q=80',
  boks: 'https://images.unsplash.com/photo-1549576490-b0b4831ef60a?w=900&q=80',
  kardiyo: 'https://images.unsplash.com/photo-1538805060514-97d9cc17730c?w=900&q=80',
  weights: 'https://images.unsplash.com/photo-1581009137042-c552e485697a?w=900&q=80',
  pt: 'https://images.unsplash.com/photo-1571019613454-1cb2f99b2d8b?w=900&q=80',
  group: 'https://images.unsplash.com/photo-1571388208497-71bedc66e932?w=900&q=80',

  treadmill: 'https://images.unsplash.com/photo-1571019613454-1cb2f99b2d8b?w=600&q=80',
  bike: 'https://images.unsplash.com/photo-1591741535018-d042766c62eb?w=600&q=80',
  smith: 'https://images.unsplash.com/photo-1534438327276-14e5300c3a48?w=600&q=80',
  cable: 'https://images.unsplash.com/photo-1581122584612-713f89daa8eb?w=600&q=80',
  legpress: 'https://images.unsplash.com/photo-1576678927484-cc907957088c?w=600&q=80',
  bench: 'https://images.unsplash.com/photo-1517836357463-d25dfeac3438?w=600&q=80',
  dumbbell: 'https://images.unsplash.com/photo-1583454110551-21f2fa2afe61?w=600&q=80',
  bag: 'https://images.unsplash.com/photo-1549060279-7e168fcee0c2?w=600&q=80',
  reformer: 'https://images.unsplash.com/photo-1518611012118-696072aa579a?w=600&q=80',
  studio: 'https://images.unsplash.com/photo-1571388208497-71bedc66e932?w=600&q=80',

  g1: 'https://images.unsplash.com/photo-1534438327276-14e5300c3a48?w=900&q=80',
  g2: 'https://images.unsplash.com/photo-1571902943202-507ec2618e8f?w=700&q=80',
  g3: 'https://images.unsplash.com/photo-1518611012118-696072aa579a?w=600&q=80',
  g4: 'https://images.unsplash.com/photo-1549576490-b0b4831ef60a?w=700&q=80',
  g5: 'https://images.unsplash.com/photo-1538805060514-97d9cc17730c?w=600&q=80',
  g6: 'https://images.unsplash.com/photo-1581009137042-c552e485697a?w=900&q=80',
  g7: 'https://images.unsplash.com/photo-1571019613454-1cb2f99b2d8b?w=700&q=80',
  g8: 'https://images.unsplash.com/photo-1581122584612-713f89daa8eb?w=600&q=80',

  t1: 'https://images.unsplash.com/photo-1567013127542-490d757e51fc?w=600&q=80',
  t2: 'https://images.unsplash.com/photo-1559586980-0bbed4f72b41?w=600&q=80',
  t3: 'https://images.unsplash.com/photo-1571019613454-1cb2f99b2d8b?w=600&q=80',
  t4: 'https://images.unsplash.com/photo-1583454122096-32a13ba98be0?w=600&q=80',
  t5: 'https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=600&q=80',
  t6: 'https://images.unsplash.com/photo-1594381898411-846e7d193883?w=600&q=80',
  t7: 'https://images.unsplash.com/photo-1530549387789-4c1017266635?w=600&q=80',
  t8: 'https://images.unsplash.com/photo-1607962837359-5e7e89f86776?w=600&q=80',
};

// Admin CMS key -> IMG key eslestirmesi
const CMS_MAP = {
  hero_image1: 'hero1', hero_image2: 'hero2', hero_image3: 'hero3',
  complex_image: 'complex',
  branch_fitness: 'fitness', branch_zumba: 'zumba', branch_pilates: 'pilates',
  branch_boks: 'boks', branch_kardiyo: 'kardiyo', branch_weights: 'weights',
  branch_pt: 'pt', branch_group: 'group',
  equip_treadmill: 'treadmill', equip_bike: 'bike', equip_smith: 'smith',
  equip_cable: 'cable', equip_legpress: 'legpress', equip_bench: 'bench',
  equip_dumbbell: 'dumbbell', equip_bag: 'bag', equip_reformer: 'reformer',
  equip_studio: 'studio',
  gallery_1: 'g1', gallery_2: 'g2', gallery_3: 'g3', gallery_4: 'g4',
  gallery_5: 'g5', gallery_6: 'g6', gallery_7: 'g7', gallery_8: 'g8',
  trainer_1_image: 't1', trainer_2_image: 't2', trainer_3_image: 't3',
  trainer_4_image: 't4', trainer_5_image: 't5', trainer_6_image: 't6',
  trainer_7_image: 't7',
};

// API base URL
const API_BASE = window.location.hostname === 'localhost'
  ? ''
  : 'https://api.bodylifegym.com.tr';

// Site settings'i yukle ve IMG'yi guncelle
const IMG = { ...DEFAULT_IMG };
window._siteSettings = {};

function resolveUrl(val) {
  if (!val) return null;
  if (val.startsWith('http')) return val;
  return API_BASE + val;
}

// Sayfa yuklendiginde API'den ayarlari cek
(async function loadSiteSettings() {
  try {
    const res = await fetch('/api/v1/admin/site-settings', {
      headers: { Accept: 'application/json' },
    });
    if (res.ok) {
      const result = await res.json();
      const settings = result.data || {};
      window._siteSettings = settings;

      // Gorselleri override et
      for (const [cmsKey, imgKey] of Object.entries(CMS_MAP)) {
        if (settings[cmsKey]) {
          const url = resolveUrl(settings[cmsKey]);
          if (url) IMG[imgKey] = url;
        }
      }

      // Hero text override
      if (settings.hero_title) window._heroTitle = settings.hero_title;
      if (settings.hero_subtitle) window._heroSub = settings.hero_subtitle;

      // Contact override
      if (settings.phone) window._phone = settings.phone;
      if (settings.whatsapp) window._whatsapp = settings.whatsapp;
      if (settings.address) window._address = settings.address;
      if (settings.instagram) window._instagram = settings.instagram;
    }
  } catch (e) {
    // API yoksa default degerler kullanilir
  }
})();

const BRANDS = [
  { id:'fitness', t:'FITNESS',  d:'Modern ekipmanlarla guc, dayaniklilik ve form kazan.', icon:'bi-lightning-charge-fill', get img() { return IMG.fitness; } },
  { id:'zumba',   t:'ZUMBA',    d:'Muzik, ritim ve yuksek enerjiyle kalori yak.',           icon:'bi-music-note-beamed',     get img() { return IMG.zumba; } },
  { id:'pilates', t:'PİLATES',  d:'Esneklik, denge ve guclu core yapisi icin ozel alan.',  icon:'bi-yin-yang',              get img() { return IMG.pilates; } },
  { id:'boks',    t:'BOKS',     d:'Kondisyon, refleks ve guc odakli yuksek tempolu antrenman.', icon:'bi-shield-fill', get img() { return IMG.boks; } },
  { id:'kardiyo', t:'KARDİYO',  d:'Kosu bantlari, bisikletler ve eliptik cihazlarla aktif performans.', icon:'bi-heart-pulse-fill', get img() { return IMG.kardiyo; } },
  { id:'weights', t:'AĞIRLIK',  d:'Smith Machine, dumbbell ve barbell ile serbest agirlik.', icon:'bi-stack', get img() { return IMG.weights; } },
  { id:'pt',      t:'PERSONAL', d:'Uzman egitmenlerle kisisel hedeflerine ozel program.',  icon:'bi-person-arms-up', get img() { return IMG.pt; } },
  { id:'group',   t:'GRUP',     d:'Yuksek tempolu grup dersleriyle motivasyon dolu antrenman.', icon:'bi-people-fill', get img() { return IMG.group; } },
];

const EQUIPMENT = [
  { name:'Kosu Bandi',         meta:'10 cihaz · Kardiyo bolumu', get img() { return IMG.treadmill; } },
  { name:'Eliptik Bisiklet',   meta:'8 cihaz · Kardiyo bolumu',  get img() { return IMG.bike; } },
  { name:'Smith Machine',      meta:'2 set · Agirlik alani',     get img() { return IMG.smith; } },
  { name:'Cable Crossover',    meta:'4 istasyon · Fonksiyonel',  get img() { return IMG.cable; } },
  { name:'Leg Press',          meta:'3 cihaz · Alt vucut',       get img() { return IMG.legpress; } },
  { name:'Bench Press Alani',  meta:'6 set · Ust vucut',         get img() { return IMG.bench; } },
  { name:'Dumbbell Rack',      meta:'2.5 – 50 kg seti',          get img() { return IMG.dumbbell; } },
  { name:'Boks Torbasi',       meta:'5 istasyon · Boks salonu',  get img() { return IMG.bag; } },
  { name:'Pilates Reformer',   meta:'12 reformer · Studyo',      get img() { return IMG.reformer; } },
  { name:'Grup Studyosu',      meta:'80 m² · Zumba & dans',      get img() { return IMG.studio; } },
];

const PROGRAM = [
  { day:'PAZARTESİ', date:'01', sessions:[
    { time:'08:30 – 09:30', name:'Fitness Circuit', coach:'Emre K.' },
    { time:'18:00 – 19:00', name:'Pilates Core',    coach:'Selin A.' },
    { time:'20:00 – 21:00', name:'Boks Kondisyon',  coach:'Cem T.' },
  ]},
  { day:'SALI', date:'02', sessions:[
    { time:'10:00 – 11:00', name:'Zumba Energy',     coach:'Deniz K.' },
    { time:'17:30 – 18:30', name:'HIIT Burn',        coach:'Emre K.' },
    { time:'19:00 – 20:00', name:'Reformer Pilates', coach:'Selin A.' },
  ]},
  { day:'ÇARŞAMBA', date:'03', sessions:[
    { time:'09:00 – 10:00', name:'Pilates Mat',       coach:'Selin A.' },
    { time:'18:00 – 19:00', name:'Strength Training', coach:'Murat Y.' },
    { time:'20:00 – 21:00', name:'Boks Teknigi',      coach:'Cem T.' },
  ]},
  { day:'PERŞEMBE', date:'04', sessions:[
    { time:'08:00 – 09:00', name:'Cardio Blast',  coach:'Deniz K.' },
    { time:'18:30 – 19:30', name:'Boks Kondisyon',coach:'Cem T.' },
    { time:'20:00 – 21:00', name:'Zumba Party',   coach:'Deniz K.' },
  ]},
  { day:'CUMA', date:'05', sessions:[
    { time:'09:30 – 10:30', name:'Full Body Training', coach:'Emre K.' },
    { time:'18:00 – 19:00', name:'Functional Flow',     coach:'Murat Y.' },
    { time:'20:00 – 21:00', name:'Stretch & Recover',   coach:'Selin A.' },
  ]},
  { day:'CUMARTESİ', date:'06', sessions:[
    { time:'10:00 – 11:00', name:'Grup Kardiyo',  coach:'Deniz K.' },
    { time:'12:00 – 13:00', name:'Power Yoga',    coach:'Selin A.' },
    { time:'17:00 – 18:00', name:'Boks Sparring', coach:'Cem T.' },
  ]},
];

const WHY = [
  { i:'bi-building-fill-up', t:'Genis Kompleks',       d:'Birden fazla antrenman alani, ferah studyolar ve hijyenik atmosfer.' },
  { i:'bi-tools',            t:'Cesitli Cihazlar',     d:'Modern kardiyo, agirlik ve fonksiyonel ekipmanlarin tamami tek tesiste.' },
  { i:'bi-people-fill',      t:'Uzman Kadro',          d:'Sertifikali fitness, pilates, zumba ve boks egitmenleri.' },
  { i:'bi-droplet-half',     t:'Sauna Hizmeti',        d:'Antrenman sonrasi rahatlama icin ozel sauna alani.' },
  { i:'bi-music-note-list',  t:'Grup Dersleri',        d:'Zumba, pilates, boks ve HIIT dersleri haftanin her gunu.' },
  { i:'bi-bullseye',         t:'Kisiye Ozel Program',  d:'Hedeflerine uygun bireysel antrenman ve beslenme plani.' },
  { i:'bi-shield-check',     t:'Hijyenik Ortam',       d:'Duzenli temizlik ve havalandirma ile saglikli antrenman.' },
  { i:'bi-credit-card-2-front-fill', t:'Esnek Uyelik', d:'Aylik, 3 aylik ve yillik esnek paket secenekleri.' },
];

// Default paketler — API'den guncellenecek
let PLANS = [
  {
    name:'FITNESS 1 AY',
    tag:'En populer — kisa donem',
    amount:'2.800',
    featured:true,
    features:[
      { txt:'Fitness salonu sinirsiz', on:true },
      { txt:'Soyunma odasi ve dus', on:true },
      { txt:'Kardiyo ve agirlik alani', on:true },
      { txt:'Grup dersleri', on:false },
      { txt:'Sauna kullanimi', on:false },
    ],
  },
  {
    name:'FITNESS 3 AY',
    tag:'Orta vade · grup dersleri dahil',
    amount:'7.000',
    features:[
      { txt:'Fitness salonu sinirsiz', on:true },
      { txt:'Soyunma odasi ve dus', on:true },
      { txt:'Tum grup dersleri', on:true },
      { txt:'Form degerlendirme', on:true },
      { txt:'Sauna kullanimi', on:false },
    ],
  },
  {
    name:'FITNESS YILLIK',
    tag:'Tam paket · sauna + dolap',
    amount:'19.000',
    features:[
      { txt:'Fitness salonu sinirsiz', on:true },
      { txt:'Soyunma odasi ve dus', on:true },
      { txt:'Tum grup dersleri', on:true },
      { txt:'Sauna kullanimi', on:true },
      { txt:'Kisisel dolap', on:true },
    ],
  },
];

let PLANS_EXTRA = [
  { name:'Fitness 2 Ay',       amount:'5.000',  desc:'Fitness salonu, soyunma odasi, dus' },
  { name:'Fitness 6 Ay',       amount:'12.000', desc:'Fitness, grup dersleri ve sauna dahil' },
  { name:'Pilates 1 Ay',       amount:'2.800',  desc:'Pilates grup dersi · haftada 3 gun' },
  { name:'Pilates 3 Ay',       amount:'7.000',  desc:'Pilates 3 gun/hafta + beslenme danismanligi' },
  { name:'Zumba 1 Ay',         amount:'2.500',  desc:'Zumba grup dersi · haftada 3 gun' },
  { name:'Ozel Ders · 12 Seans', amount:'8.000',desc:'Birebir PT, 12 seans + beslenme danismanligi', pt:true },
];

// Default egitmenler — API'den guncellenecek
let TRAINERS = [
  { name:'Hamit Altintop',     spec:'Fitness Coach',                                    role:'Fitness',  get img() { return IMG.t1; } },
  { name:'Hasan Kucuk',        spec:'Fitness · CrossFit · TRX · Beslenme',              role:'Fitness',  get img() { return IMG.t5; } },
  { name:'Irem Capar Sivri',   spec:'Fitness · Yoga · Pilates · Boks · Zumba · TRX',    role:'All-round',get img() { return IMG.t2; } },
  { name:'Songul Bad',         spec:'Pilates Egitmeni',                                 role:'Pilates',  get img() { return IMG.t8; } },
  { name:'Muhsin',             spec:'Pilates Egitmeni',                                 role:'Pilates',  get img() { return IMG.t7; } },
  { name:'Hakan',              spec:'Fitness · CrossFit · Ozel Ders',                   role:'CrossFit', get img() { return IMG.t3; } },
  { name:'Yusuf',              spec:'Fitness · CrossFit · Ozel Ders',                   role:'CrossFit', get img() { return IMG.t6; } },
];

// API'den egitmenler ve paketleri cek
(async function loadDynamicData() {
  try {
    // Egitmenler
    const tRes = await fetch('/api/v1/trainers', { headers: { Accept: 'application/json' } });
    if (tRes.ok) {
      const tData = await tRes.json();
      const apiTrainers = tData.data || [];
      if (apiTrainers.length > 0) {
        TRAINERS = apiTrainers.map(function(t, i) {
          const imgKey = 't' + (i + 1);
          const siteImg = window._siteSettings && window._siteSettings['trainer_' + (i+1) + '_image'];
          return {
            name: t.name,
            spec: t.spec || 'Fitness',
            role: t.role || 'Fitness',
            get img() { return siteImg ? resolveUrl(siteImg) : (IMG[imgKey] || IMG.t1); },
          };
        });
        window.TRAINERS = TRAINERS;
      }
    }
  } catch(e) {}

  try {
    // Paketler
    const pRes = await fetch('/api/v1/packages', { headers: { Accept: 'application/json' } });
    if (pRes.ok) {
      const pData = await pRes.json();
      const apiPkgs = pData.data || [];
      if (apiPkgs.length > 0) {
        // Ana 3 paket: en ucuz, orta, en pahali fitness paketleri
        const fitnessPkgs = apiPkgs.filter(function(p) { return !p.hasPt; });
        const sorted = fitnessPkgs.sort(function(a,b) { return a.price - b.price; });

        if (sorted.length >= 3) {
          var pick = [sorted[0], sorted[Math.floor(sorted.length/2)], sorted[sorted.length-1]];
          PLANS = pick.map(function(p, i) {
            return {
              name: p.name.toUpperCase(),
              tag: i === 0 ? 'En populer — kisa donem' : i === 1 ? 'Orta vade · grup dersleri dahil' : 'Tam paket · sauna + dolap',
              amount: p.price.toLocaleString('tr-TR'),
              featured: i === 0,
              features: (p.features || []).map(function(f) { return { txt: f, on: true }; }),
            };
          });
          window.PLANS = PLANS;
        }

        // Diger paketler
        PLANS_EXTRA = apiPkgs.filter(function(p) {
          return !PLANS.some(function(pl) { return pl.name === p.name.toUpperCase(); });
        }).map(function(p) {
          return {
            name: p.name,
            amount: p.price.toLocaleString('tr-TR'),
            desc: (p.features || []).slice(0,2).join(' · ') || p.description || '',
            pt: p.hasPt || false,
          };
        });
        window.PLANS_EXTRA = PLANS_EXTRA;
      }
    }
  } catch(e) {}
})();

const TESTIMONIALS = [
  { name:'Ayse T.',  branch:'Pilates',  text:'6 ayda posturum ve enerji seviyem ciddi sekilde degisti. Reformer dersleri muhtesem, Body Life Gym\'in pilates alani cok ferah.' },
  { name:'Mehmet K.',branch:'Boks',     text:'Boks bolumune ilk gelisimde bile kendimi iyi hissettim. Teknigi ve kondisyonu birlikte calistiriyor. Tesis buyuk, ekipman tam.' },
  { name:'Zeynep B.',branch:'Zumba',    text:'Pazartesi ve carsamba zumbasini kacirmiyorum. 1 saat boyunca kalori erimesi tam bir terapi gibi.' },
  { name:'Ahmet O.', branch:'Personal Training', text:'12 haftalik programla hedefime ulastim. Beslenme dahil her seyi takip etti. Sauna da isin uzerine harika geliyor.' },
  { name:'Esra D.',  branch:'Fitness',  text:'Cihaz cesitliligi ve hijyen tam not. Sabah erkenden geldigimde bile her sey tertemiz, hocalar her zaman yardimci.' },
  { name:'Burak C.', branch:'Kardiyo',  text:'Kosu bandi, eliptik, bisiklet... Kardiyo bolumu Hatay\'da gordugum en genis alan. Ekran ve surat ayarlari yeni nesil.' },
];

window.IMG = IMG;
window.BRANDS = BRANDS;
window.EQUIPMENT = EQUIPMENT;
window.PROGRAM = PROGRAM;
window.WHY = WHY;
window.PLANS = PLANS;
window.TRAINERS = TRAINERS;
window.TESTIMONIALS = TESTIMONIALS;
window.PLANS_EXTRA = PLANS_EXTRA;
