/* global window */
// ===== מילים לנצח — data store (localStorage-backed) =====

const MLN_KEY  = 'mln_site_data_v2';   // bumped to v2 to pick up new fields
const MLN_EMAIL = 'milim.lanetzah@gmail.com';

// Inquiry topics (ייעוץ אישי הוסר — לא זמין כרגע)
const MLN_TOPICS = {
  lecture: { id: 'lecture', label: 'הזמנת הרצאה', color: '#B11E33' },
  book:    { id: 'book',    label: 'הזמנת הספר',   color: '#8E1B2E' },
  product: { id: 'product', label: 'רכישת מוצר',   color: '#C8324A' },
  general: { id: 'general', label: 'פנייה כללית',   color: '#7A6A67' },
};

const MLN_DEFAULT = {
  products: [
    { id: 'book', icon: 'book', name: 'הספר — מהמקום הכי שבור', price: 69,
      order: 'manual', stock: 24, active: true, status: 'active', statusLabel: '',
      hidePrice: false, image: null,
      desc: 'המסע מהשבר אל הצמיחה, כתוב במילים שמלוות אלפי קוראות וקוראים. הזמנה אישית בטלפון או במייל — ואשלח אליך עותק חתום.',
      note: 'הזמנה טלפונית / מייל' },
    { id: 'rec-lecture', icon: 'play', name: 'הרצאה מוקלטת', price: 149,
      order: 'cart', stock: null, active: true, comingSoon: true, status: 'coming-soon', statusLabel: '',
      hidePrice: false, image: null,
      desc: 'ההרצאה המלאה, מצולמת ומוקלטת, לצפייה מהבית בכל זמן. שעה וחצי שנוגעות ללב והופכות כאב לכוח.',
      note: 'בקרוב' },
    { id: 'cards-kids', icon: 'cards', name: 'קלפי טיפול לילדים', price: 99,
      order: 'cart', stock: 12, active: true, status: 'active', statusLabel: '',
      hidePrice: false, image: null,
      desc: 'חפיסת קלפים רגשית לילדים — כלי עדין לשיחה, להבעה ולעיבוד, בבית ובחדר הטיפול.',
      note: 'מארז פיזי' },
    { id: 'cards-adults', icon: 'cards', name: 'קלפי טיפול למבוגרים', price: 159,
      order: 'cart', stock: 8, active: true, status: 'active', statusLabel: '',
      hidePrice: false, image: null,
      desc: 'חפיסת קלפים להתבוננות פנימית, לתהליכי צמיחה ולליווי אישי או קבוצתי.',
      note: 'מארז פיזי' },
    { id: 'framed-poem', icon: 'frame', name: 'שיר ממוסגר', price: 20,
      order: 'cart', stock: 40, active: true, status: 'active', statusLabel: '',
      hidePrice: false, image: null,
      desc: 'שיר נבחר, מודפס וממוסגר ביד — מתנה קטנה שנשארת על הקיר ומזכירה שיש אור גם אחרי השבר.',
      note: 'הדפסה ממוסגרת' },
  ],
  gallery: [
    { id: 'g1', src: 'images/gallery-1.png', caption: 'רגע מתוך הרצאה' },
    { id: 'g2', src: 'images/gallery-2.png', caption: 'אור של בוקר חדש' },
    { id: 'g3', src: 'images/gallery-3.png', caption: 'מאחורי הקלעים' },
  ],
  testimonials: [
    { id: 't1', name: 'רונית — מנהלת רווחה', role: 'כנס עובדים', img: null,
      text: 'אודליה לא הרצתה — היא נגעה. אנשים בכו, צחקו, ויצאו אחרים. נדיר למצוא מישהי שהופכת כאב לכל כך הרבה אור.' },
    { id: 't2', name: 'משפחת לוי', role: 'קוראי הספר', img: null,
      text: 'קראנו את הספר בנשימה אחת. כל מילה מדויקת, כל עמוד מחזיק יד. תודה שלימדת אותנו לבחור בחיים.' },
    { id: 't3', name: 'דנה כ׳', role: 'מטפלת רגשית', img: null,
      text: 'קלפי הטיפול הפכו לכלי הכי אהוב עליי בחדר. הילדים נפתחים דרכם בצורה שלא הכרתי קודם.' },
  ],
  faq: [
    { id: 'f1', q: 'למי מתאימות ההרצאות?', a: 'לארגונים, קהילות, כנסים, צוותים וקבוצות — בכל מקום שבו רוצים לדבר על חוסן, על צמיחה מתוך כאב, ועל הכוח לבחור בחיים. אני מתאימה את התוכן לקהל ולאירוע.' },
    { id: 'f2', q: 'איך מזמינים הרצאה?', a: 'משאירים פרטים בטופס "הזמנת הרצאה" או יוצרים קשר ישיר. אחזור אליך עם הצעת מחיר מותאמת לאופי האירוע, למספר המשתתפים ולמיקום.' },
    { id: 'f3', q: 'איך רוכשים את הספר?', a: 'הספר מוזמן אישית — בטלפון או במייל. כך אני יכולה לחתום עליו עבורך ולוודא שהוא מגיע אליך בדיוק כמו שצריך.' },
    { id: 'f4', q: 'מה ההבדל בין הרצאה מוקלטת להרצאה חיה?', a: 'ההרצאה המוקלטת היא לצפייה מהבית בכל זמן. הרצאה חיה היא חוויה מותאמת אישית לאירוע שלך — ולכן היא בקשה להצעת מחיר ולא רכישה מיידית.' },
  ],
  inbox: [],
  trash: [],   // סל מחזור — פריטים מחוקים לשחזור
  // כתובות מייל המורשות להיכנס לאזור הניהול (עם הסיסמה). ניתן לעריכה בלשונית "הרשאות".
  admins: [
    'ilay2008meir@gmail.com',
    'milim.lanetzah@gmail.com',
    'odelyameir@gmail.com',
    'yaniv61075@gmail.com',
  ],
  invoices: [],   // ארכיון חשבוניות שהופקו — נשמר באתר לפי תאריך (שדות בלבד, ללא תמונה)
  poem: {
    lines: 'הַכְּאֵב לֹא נֶעֱלַם —\nהוּא רַק לָמַד לָלֶכֶת לְצִדִּי.\nוּמִשָּׁם, לְאַט,\nצָמְחוּ הַמִּלִּים.',
    source: 'מתוך הספר',
  },
  about: {
    title: 'הסיפור שלי הוא לא הסוף.\nהוא ההתחלה.',
    paragraphs: [
      'שמי אודליה מאיר. כשהייתי בת שש, אמא שלי נרצחה. גדלתי עם חור בלב ועם שאלה אחת גדולה — איך ממשיכים לחיות כשהדבר הכי יקר נלקח ממך.',
      'לקח לי שנים להבין שאת הכאב הזה אפשר לא רק לשאת — אפשר להפוך אותו לאור. בחרתי בחיים, ובחרתי לספר. היום אני עומדת מול אלפי אנשים, כותבת, ומלווה — וכל מילה שלי באה מהמקום האמיתי ביותר שיש.',
      'לא נולדתי חזקה. בחרתי להיות. ואני כאן כדי להראות לך שגם את/ה יכול/ה.',
    ],
  },
  invoice: {
    businessName: 'מילים לנצח',
    businessAddress: '',
    businessId: '',   // ח.פ / ע.מ
    vatNumber: '',
    logo: null,
    nextInvoiceNum: 1,
    vatPercent: 17,
  },
};

function mlnLoad() {
  try {
    const raw = localStorage.getItem(MLN_KEY);
    if (!raw) return JSON.parse(JSON.stringify(MLN_DEFAULT));
    const saved = JSON.parse(raw);
    // deep-merge: new top-level keys from default appear in older saves
    const base = JSON.parse(JSON.stringify(MLN_DEFAULT));
    return { ...base, ...saved };
  } catch (e) {
    return JSON.parse(JSON.stringify(MLN_DEFAULT));
  }
}

function mlnSave(data) {
  try { localStorage.setItem(MLN_KEY, JSON.stringify(data)); }
  catch (e) { console.warn('mln save failed', e); }
}

function mlnResetDemo() {
  localStorage.removeItem(MLN_KEY);
  return JSON.parse(JSON.stringify(MLN_DEFAULT));
}

const mlnId = () => 'id-' + Date.now().toString(36) + Math.random().toString(36).slice(2, 6);

// בונה קישור לכתיבת מייל ב‑Gmail (אמין יותר מ‑mailto שנכשל בשקט כשאין תוכנת מייל מוגדרת)
const mlnGmailTo = (to, subject, body) => {
  let url = 'https://mail.google.com/mail/?view=cm&fs=1&to=' + encodeURIComponent(to || '');
  if (subject) url += '&su=' + encodeURIComponent(subject);
  if (body)    url += '&body=' + encodeURIComponent(body);
  return url;
};

window.MLN = { KEY: MLN_KEY, EMAIL: MLN_EMAIL, TOPICS: MLN_TOPICS,
  DEFAULT: MLN_DEFAULT, load: mlnLoad, save: mlnSave, reset: mlnResetDemo, id: mlnId,
  gmailTo: mlnGmailTo };
