// Mock data: exercises, templates, history, biometrics, nutrition.
// All exposed via window so other Babel scripts can read them.

var I18N = {
  fr: {
    training: "Entraînement", planning: "Planification", progress: "Progression",
    dashboard: "Tableau de bord", workouts: "Mes entraînements", calendar: "Calendrier",
    templates: "Modèles", exercises: "Exercices", charts: "Graphiques",
    biometrics: "Biométrie", nutrition: "Nutrition", profile: "Mon profil",
    admin: "Admin",
    new_workout: "Nouvel entraînement", quick_start: "Démarrage rapide",
    from_template: "À partir d'un modèle", empty_workout: "Vide",
    today: "Aujourd'hui", yesterday: "Hier",
    sets: "séries", reps: "rép", kg: "kg", min: "min", sec: "s",
    rest: "Repos", finish: "Terminer", add_exercise: "Ajouter un exercice",
    last_time: "Dernière fois", target: "Objectif", warmup: "Échauffement",
    working: "Travail", failure: "Échec", drop: "Drop", pr: "PR",
    week: "Semaine", month: "Mois", year: "Année",
    body_weight: "Poids corporel", body_fat: "Masse graisseuse",
    chest: "Poitrine", waist: "Taille", arm: "Bras", thigh: "Cuisse",
    calories: "Calories", protein: "Protéines", carbs: "Glucides", fat: "Lipides",
    breakfast: "Déjeuner", lunch: "Dîner", dinner: "Souper", snack: "Collation",
    push: "Push", pull: "Pull", legs: "Jambes", upper: "Haut", lower: "Bas",
    full_body: "Corps complet", core: "Abdos", cardio: "Cardio",
    all: "Tous", barbell: "Barre", dumbbell: "Haltère", machine: "Machine",
    cable: "Poulie", bodyweight: "Poids du corps", kettlebell: "Kettlebell",
    beginner: "Débutant", intermediate: "Intermédiaire", advanced: "Avancé",
    streak: "Série", volume: "Volume", workouts_count: "Entraînements",
    avg_duration: "Durée moy.", this_week: "Cette semaine",
    save: "Enregistrer", cancel: "Annuler", next: "Suivant", previous: "Précédent",
    search: "Rechercher", filter: "Filtrer", muscle_group: "Groupe musculaire",
    equipment: "Équipement", level: "Niveau",
    log_workout: "Logger", start: "Démarrer", continue: "Continuer",
    set: "Série", weight: "Poids", reps_short: "Reps",
    rest_timer: "Minuteur de repos", skip: "Passer", done: "Fait",
    notes: "Notes", rpe: "RPE",
    no_workouts: "Aucun entraînement", create_first: "Créez votre premier",
    quick_actions: "Actions rapides", recent: "Récents",
    overview: "Aperçu", history: "Historique", stats: "Statistiques",
    members: "Membres", exercises_db: "Base d'exercices",
    reports: "Rapports", settings: "Paramètres",
    monday: "Lun", tuesday: "Mar", wednesday: "Mer", thursday: "Jeu",
    friday: "Ven", saturday: "Sam", sunday: "Dim",
    months: ["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],
  },
  en: {
    training: "Training", planning: "Planning", progress: "Progress",
    dashboard: "Dashboard", workouts: "My Workouts", calendar: "Calendar",
    templates: "Templates", exercises: "Exercises", charts: "Charts",
    biometrics: "Biometrics", nutrition: "Nutrition", profile: "My Profile",
    admin: "Admin",
    new_workout: "New Workout", quick_start: "Quick start",
    from_template: "From template", empty_workout: "Empty",
    today: "Today", yesterday: "Yesterday",
    sets: "sets", reps: "reps", kg: "kg", min: "min", sec: "s",
    rest: "Rest", finish: "Finish", add_exercise: "Add exercise",
    last_time: "Last time", target: "Target", warmup: "Warmup",
    working: "Working", failure: "Failure", drop: "Drop", pr: "PR",
    week: "Week", month: "Month", year: "Year",
    body_weight: "Body weight", body_fat: "Body fat",
    chest: "Chest", waist: "Waist", arm: "Arm", thigh: "Thigh",
    calories: "Calories", protein: "Protein", carbs: "Carbs", fat: "Fat",
    breakfast: "Breakfast", lunch: "Lunch", dinner: "Dinner", snack: "Snack",
    push: "Push", pull: "Pull", legs: "Legs", upper: "Upper", lower: "Lower",
    full_body: "Full body", core: "Core", cardio: "Cardio",
    all: "All", barbell: "Barbell", dumbbell: "Dumbbell", machine: "Machine",
    cable: "Cable", bodyweight: "Bodyweight", kettlebell: "Kettlebell",
    beginner: "Beginner", intermediate: "Intermediate", advanced: "Advanced",
    streak: "Streak", volume: "Volume", workouts_count: "Workouts",
    avg_duration: "Avg duration", this_week: "This week",
    save: "Save", cancel: "Cancel", next: "Next", previous: "Previous",
    search: "Search", filter: "Filter", muscle_group: "Muscle group",
    equipment: "Equipment", level: "Level",
    log_workout: "Log", start: "Start", continue: "Continue",
    set: "Set", weight: "Weight", reps_short: "Reps",
    rest_timer: "Rest timer", skip: "Skip", done: "Done",
    notes: "Notes", rpe: "RPE",
    no_workouts: "No workouts", create_first: "Create your first",
    quick_actions: "Quick actions", recent: "Recent",
    overview: "Overview", history: "History", stats: "Stats",
    members: "Members", exercises_db: "Exercise DB",
    reports: "Reports", settings: "Settings",
    monday: "Mon", tuesday: "Tue", wednesday: "Wed", thursday: "Thu",
    friday: "Fri", saturday: "Sat", sunday: "Sun",
    months: ["January","February","March","April","May","June","July","August","September","October","November","December"],
  },
};

// Curated subset of ~40 exercises across muscle groups (representing 5000+ DB)
var EXERCISES = [
  // Chest
  { id: 1, name: "Bench Press", muscle: "chest", secondary: ["triceps","shoulders"], equipment: "barbell", level: "intermediate" },
  { id: 2, name: "Incline Dumbbell Press", muscle: "chest", secondary: ["shoulders"], equipment: "dumbbell", level: "intermediate" },
  { id: 3, name: "Cable Fly", muscle: "chest", secondary: [], equipment: "cable", level: "beginner" },
  { id: 4, name: "Push-up", muscle: "chest", secondary: ["triceps","core"], equipment: "bodyweight", level: "beginner" },
  { id: 5, name: "Dumbbell Bench Press", muscle: "chest", secondary: ["triceps"], equipment: "dumbbell", level: "intermediate" },
  { id: 6, name: "Pec Deck", muscle: "chest", secondary: [], equipment: "machine", level: "beginner" },
  // Back
  { id: 10, name: "Deadlift", muscle: "back", secondary: ["legs","core"], equipment: "barbell", level: "advanced" },
  { id: 11, name: "Pull-up", muscle: "back", secondary: ["biceps"], equipment: "bodyweight", level: "intermediate" },
  { id: 12, name: "Barbell Row", muscle: "back", secondary: ["biceps"], equipment: "barbell", level: "intermediate" },
  { id: 13, name: "Lat Pulldown", muscle: "back", secondary: ["biceps"], equipment: "cable", level: "beginner" },
  { id: 14, name: "Seated Cable Row", muscle: "back", secondary: ["biceps"], equipment: "cable", level: "beginner" },
  { id: 15, name: "T-Bar Row", muscle: "back", secondary: ["biceps"], equipment: "barbell", level: "intermediate" },
  // Legs
  { id: 20, name: "Back Squat", muscle: "legs", secondary: ["core"], equipment: "barbell", level: "intermediate" },
  { id: 21, name: "Romanian Deadlift", muscle: "legs", secondary: ["back"], equipment: "barbell", level: "intermediate" },
  { id: 22, name: "Leg Press", muscle: "legs", secondary: [], equipment: "machine", level: "beginner" },
  { id: 23, name: "Walking Lunges", muscle: "legs", secondary: ["core"], equipment: "dumbbell", level: "beginner" },
  { id: 24, name: "Leg Curl", muscle: "legs", secondary: [], equipment: "machine", level: "beginner" },
  { id: 25, name: "Leg Extension", muscle: "legs", secondary: [], equipment: "machine", level: "beginner" },
  { id: 26, name: "Bulgarian Split Squat", muscle: "legs", secondary: ["core"], equipment: "dumbbell", level: "intermediate" },
  { id: 27, name: "Calf Raise", muscle: "legs", secondary: [], equipment: "machine", level: "beginner" },
  // Shoulders
  { id: 30, name: "Overhead Press", muscle: "shoulders", secondary: ["triceps"], equipment: "barbell", level: "intermediate" },
  { id: 31, name: "Lateral Raise", muscle: "shoulders", secondary: [], equipment: "dumbbell", level: "beginner" },
  { id: 32, name: "Face Pull", muscle: "shoulders", secondary: ["back"], equipment: "cable", level: "beginner" },
  { id: 33, name: "Arnold Press", muscle: "shoulders", secondary: ["triceps"], equipment: "dumbbell", level: "intermediate" },
  { id: 34, name: "Rear Delt Fly", muscle: "shoulders", secondary: [], equipment: "dumbbell", level: "beginner" },
  // Arms
  { id: 40, name: "Barbell Curl", muscle: "biceps", secondary: [], equipment: "barbell", level: "beginner" },
  { id: 41, name: "Hammer Curl", muscle: "biceps", secondary: [], equipment: "dumbbell", level: "beginner" },
  { id: 42, name: "Preacher Curl", muscle: "biceps", secondary: [], equipment: "machine", level: "intermediate" },
  { id: 50, name: "Tricep Pushdown", muscle: "triceps", secondary: [], equipment: "cable", level: "beginner" },
  { id: 51, name: "Skull Crusher", muscle: "triceps", secondary: [], equipment: "barbell", level: "intermediate" },
  { id: 52, name: "Dips", muscle: "triceps", secondary: ["chest"], equipment: "bodyweight", level: "intermediate" },
  // Core
  { id: 60, name: "Plank", muscle: "core", secondary: [], equipment: "bodyweight", level: "beginner" },
  { id: 61, name: "Hanging Leg Raise", muscle: "core", secondary: [], equipment: "bodyweight", level: "intermediate" },
  { id: 62, name: "Cable Crunch", muscle: "core", secondary: [], equipment: "cable", level: "beginner" },
  { id: 63, name: "Russian Twist", muscle: "core", secondary: [], equipment: "bodyweight", level: "beginner" },
  // Cardio
  { id: 70, name: "Treadmill Run", muscle: "cardio", secondary: [], equipment: "machine", level: "beginner" },
  { id: 71, name: "Rowing Machine", muscle: "cardio", secondary: ["back"], equipment: "machine", level: "beginner" },
  { id: 72, name: "Assault Bike", muscle: "cardio", secondary: [], equipment: "machine", level: "intermediate" },
];

var MUSCLE_GROUPS = [
  { id: "chest", fr: "Poitrine", en: "Chest" },
  { id: "back", fr: "Dos", en: "Back" },
  { id: "legs", fr: "Jambes", en: "Legs" },
  { id: "shoulders", fr: "Épaules", en: "Shoulders" },
  { id: "biceps", fr: "Biceps", en: "Biceps" },
  { id: "triceps", fr: "Triceps", en: "Triceps" },
  { id: "core", fr: "Abdos", en: "Core" },
  { id: "cardio", fr: "Cardio", en: "Cardio" },
];

var EQUIPMENT = ["barbell", "dumbbell", "machine", "cable", "bodyweight", "kettlebell"];
var LEVELS = ["beginner", "intermediate", "advanced"];

var TEMPLATES = [
  {
    id: 1, name: "Push Day A", category: "push", color: "#E8682C",
    duration: 65, exercises: [
      { exerciseId: 1, sets: 4, repsRange: "5-8" },
      { exerciseId: 2, sets: 3, repsRange: "8-10" },
      { exerciseId: 30, sets: 3, repsRange: "8-10" },
      { exerciseId: 31, sets: 3, repsRange: "12-15" },
      { exerciseId: 50, sets: 3, repsRange: "10-12" },
    ],
  },
  {
    id: 2, name: "Pull Day A", category: "pull", color: "#3B7DD8",
    duration: 60, exercises: [
      { exerciseId: 11, sets: 4, repsRange: "5-8" },
      { exerciseId: 12, sets: 3, repsRange: "8-10" },
      { exerciseId: 13, sets: 3, repsRange: "10-12" },
      { exerciseId: 32, sets: 3, repsRange: "12-15" },
      { exerciseId: 40, sets: 3, repsRange: "10-12" },
    ],
  },
  {
    id: 3, name: "Leg Day", category: "legs", color: "#5B9E3C",
    duration: 75, exercises: [
      { exerciseId: 20, sets: 5, repsRange: "5" },
      { exerciseId: 21, sets: 3, repsRange: "8-10" },
      { exerciseId: 22, sets: 3, repsRange: "10-12" },
      { exerciseId: 24, sets: 3, repsRange: "12-15" },
      { exerciseId: 27, sets: 4, repsRange: "12-15" },
    ],
  },
  {
    id: 4, name: "Upper Body", category: "upper", color: "#9B5BC2",
    duration: 70, exercises: [
      { exerciseId: 1, sets: 4, repsRange: "6-8" },
      { exerciseId: 12, sets: 4, repsRange: "6-8" },
      { exerciseId: 31, sets: 3, repsRange: "10-12" },
      { exerciseId: 40, sets: 3, repsRange: "10-12" },
      { exerciseId: 50, sets: 3, repsRange: "10-12" },
    ],
  },
  {
    id: 5, name: "Full Body Quick", category: "full_body", color: "#D8A93B",
    duration: 40, exercises: [
      { exerciseId: 20, sets: 3, repsRange: "8" },
      { exerciseId: 1, sets: 3, repsRange: "8" },
      { exerciseId: 11, sets: 3, repsRange: "8" },
      { exerciseId: 60, sets: 3, repsRange: "60s" },
    ],
  },
];

// Generate ~3 months of workout history
function genHistory() {
  const today = new Date(2026, 4, 5); // May 5 2026
  const out = [];
  const tplCycle = [1, 2, 3, 1, 2, 3, 4]; // P/P/L pattern
  let id = 1;
  for (let d = 90; d >= 0; d--) {
    const date = new Date(today);
    date.setDate(date.getDate() - d);
    const dow = date.getDay();
    // skip Sundays + ~30% other days
    if (dow === 0) continue;
    if (Math.random() < 0.25 && d > 1) continue;
    const tpl = TEMPLATES[tplCycle[d % tplCycle.length] - 1];
    const exercises = tpl.exercises.map((te, i) => {
      const ex = EXERCISES.find(e => e.id === te.exerciseId);
      const sets = [];
      const baseWeight = ex.equipment === "bodyweight" ? 0 :
                         ex.muscle === "legs" ? 80 + Math.random() * 40 :
                         ex.muscle === "back" || ex.muscle === "chest" ? 60 + Math.random() * 30 :
                         20 + Math.random() * 20;
      const progression = (90 - d) * 0.3;
      for (let s = 0; s < te.sets; s++) {
        const weight = Math.round((baseWeight + progression - s * 2.5) * 2) / 2;
        const reps = parseInt(te.repsRange) + Math.floor(Math.random() * 3) - 1;
        sets.push({
          weight: Math.max(0, weight),
          reps: Math.max(1, reps),
          done: true,
          isPR: d < 7 && s === 0 && Math.random() < 0.3,
        });
      }
      return { exerciseId: ex.id, name: ex.name, sets };
    });
    const totalVolume = exercises.reduce((sum, e) =>
      sum + e.sets.reduce((s, set) => s + set.weight * set.reps, 0), 0);
    out.push({
      id: id++, date: date.toISOString().slice(0, 10), templateId: tpl.id,
      name: tpl.name, duration: tpl.duration + Math.floor(Math.random() * 20 - 10),
      volume: Math.round(totalVolume), exercises,
    });
  }
  return out.reverse(); // most recent first
}

var HISTORY = genHistory();

// Biometrics — 90 days of weight + measurements
function genBio() {
  const today = new Date(2026, 4, 5);
  const out = [];
  let weight = 82.4;
  let bodyFat = 18.5;
  for (let d = 90; d >= 0; d -= 3) {
    const date = new Date(today);
    date.setDate(date.getDate() - d);
    weight -= 0.05 + (Math.random() - 0.5) * 0.4;
    bodyFat -= 0.04 + (Math.random() - 0.5) * 0.3;
    out.push({
      date: date.toISOString().slice(0, 10),
      weight: Math.round(weight * 10) / 10,
      bodyFat: Math.round(bodyFat * 10) / 10,
      chest: 102 + Math.random() * 1.5,
      waist: 84 - d * 0.02 + (Math.random() - 0.5),
      arm: 38 + (90 - d) * 0.01 + (Math.random() - 0.5) * 0.3,
      thigh: 60 + (Math.random() - 0.5) * 0.5,
    });
  }
  return out;
}

var BIOMETRICS = genBio();

var NUTRITION_TODAY = {
  date: "2026-05-05",
  goal: { calories: 2400, protein: 180, carbs: 260, fat: 70 },
  meals: [
    { id: 1, type: "breakfast", time: "07:30", items: [
      { name: "Avoine + lait + bleuets", cal: 420, p: 18, c: 62, f: 9 },
      { name: "Café noir", cal: 5, p: 0, c: 1, f: 0 },
    ]},
    { id: 2, type: "lunch", time: "12:15", items: [
      { name: "Poulet grillé 200g", cal: 330, p: 62, c: 0, f: 8 },
      { name: "Riz brun 1 tasse", cal: 220, p: 5, c: 46, f: 2 },
      { name: "Brocoli + huile olive", cal: 95, p: 4, c: 7, f: 7 },
    ]},
    { id: 3, type: "snack", time: "15:30", items: [
      { name: "Shake protéiné", cal: 180, p: 35, c: 6, f: 2 },
      { name: "Banane", cal: 105, p: 1, c: 27, f: 0 },
    ]},
    { id: 4, type: "dinner", time: "19:00", items: [
      { name: "Saumon 180g", cal: 360, p: 38, c: 0, f: 22 },
      { name: "Patate douce", cal: 180, p: 4, c: 41, f: 0 },
    ]},
  ],
};

var USER = {
  name: "GUS",
  full: "GUS",
  initial: "G",
  email: "",
  member_since: "",
  height: 178,
  weight: 81.2,
  goal: "",
  level: "intermediate",
  gender: "male",
  role: "athlete",
  coach: "",
  streak: 0,
  totalWorkouts: HISTORY.length,
  thisWeek: 0,
};

Object.assign(window, {
  I18N, EXERCISES, MUSCLE_GROUPS, EQUIPMENT, LEVELS,
  TEMPLATES, HISTORY, BIOMETRICS, NUTRITION_TODAY, USER,
});
