/* ============================================================
   ATTRIBUTI — importati dal WordPress Menabue
   Solo Nome + Termini. Le 4 colonne tipo-macchina sono "tipi".
   ============================================================ */

const MTIPI = [
  { key:'carrelli',     label:'Movim.',       full:'Movimentazione',       icon:'forklift' },
  { key:'pulizia',      label:'Pulizia',      full:'Macchine Pulizia',     icon:'broom' },
  { key:'piattaforme',  label:'Piattaforme',  full:'Piattaforme Aeree',    icon:'lift' },
  { key:'avvolgitrici', label:'Avvolgitrici', full:'Macchine Avvolgitrici',icon:'wrap' },
];
const ALL4 = ['carrelli','pulizia','piattaforme','avvolgitrici'];

const ATTRIBUTI_INIT = [
  { id:'sottocat-mov', nome:'Sottocategoria', tipi:['carrelli'], rilievo:true,
    termini:['Transpallet Manuali','Transpallet elettrici','Elevatori elettrici','Commissionatori','Retrattili','Frontali elettrici','Frontali diesel','Trilaterali','Trattorini industriali','Multidirezionali'] },
  { id:'sottocat-pul', nome:'Sottocategoria', tipi:['pulizia'], rilievo:true,
    termini:['Lavasciuga uomo a terra','Spazzatrice uomo a terra','Lavasciuga uomo a bordo','Spazzatrice uomo a bordo'] },
  { id:'accessori', nome:'Accessori', tipi:['carrelli'],
    termini:['Posizionatore forche','Traslatore','Videocamera posteriore'] },
  { id:'alimentazione', nome:'Alimentazione', tipi:[...ALL4],
    termini:['Diesel','Elettrica','GPL','Manuale'] },
  { id:'altezza-sollevamento', nome:'Altezza di sollevamento (mm)', tipi:['carrelli'],
    termini:['200','205','800','1000','1735','2000','2500','2900','3000','3200','3300','3500','3600','3655','3700','4000','4060','4150','4200','4220','4300','4350','4455','4500','4700','4755','5000','5210','5400','5500','5600','6000','6300','6500','7000','7500','8000','8500','9000','9500','10000'] },
  { id:'altezza-max-lavoro', nome:'Altezza massima di lavoro (mm)', tipi:['piattaforme'],
    termini:['4900','5150','6700'] },
  { id:'altezza-cestello', nome:'Altezza max piano cestello (mm)', tipi:['piattaforme'],
    termini:['2916','3150','4200'] },
  { id:'ampiezza-lavoro', nome:'Ampiezza di lavoro (mm)', tipi:['pulizia'],
    termini:['850'] },
  { id:'anno', nome:'Anno', tipi:[...ALL4],
    termini:['1990','1991','1992','1993','1994','1995','1996','1997','1998','1999','2000','2001','2002','2003','2004','2005','2006','2007','2008','2009','2010','2011','2012','2013','2014','2015','2016','2017','2018','2019','2020','2021','2022','2023','2024','2025'] },
  { id:'attrezzatura', nome:'Attrezzatura', tipi:['carrelli'],
    termini:['Posizionatore forche','Posizionatore rotante','Rovesciatore','Traslatore'] },
  { id:'baricentro', nome:'Baricentro (mm)', tipi:['carrelli'],
    termini:['500','600','800','1000','1200'] },
  { id:'voltaggio', nome:'Voltaggio', tipi:['carrelli','pulizia'], locked:true,
    termini:['24V','2x12V','48V','80V','2 x 40V'] },
  { id:'amperaggio', nome:'Amperaggio', tipi:['carrelli','pulizia'], locked:true,
    termini:['150Ah','160Ah','180Ah','225Ah','230Ah','240Ah','250Ah','260Ah','270Ah','300Ah','310Ah','375Ah','400Ah','420Ah','460Ah','465Ah','500Ah','525Ah','560Ah','600Ah','620Ah','625Ah','690Ah','700Ah','720Ah','735Ah','750Ah','775Ah','800Ah','840Ah','875Ah','930Ah','1000Ah','1050Ah','1085Ah','1120Ah','1240Ah','1250Ah'] },
  { id:'consegna', nome:'Consegna', tipi:[...ALL4],
    termini:['Compresa nel prezzo per Modena e provincia'] },
  { id:'diametro-spazzola', nome:'Diametro spazzola (mm)', tipi:['pulizia'],
    termini:['500'] },
  { id:'dimensioni', nome:'Dimensioni (Lu x La x H) (mm)', tipi:[...ALL4],
    termini:['1328 x 610 x 1073','700 x 980 x 1690','700 x 980 x 1730','780 x 1530 x 1720'] },
  { id:'distributore', nome:'Distributore', tipi:['carrelli'],
    termini:['3 vie - leve','3 vie - minileve','4 vie - doppio mini Joystick','4 vie - leve','4 vie - minileve','Joystick multifunzione'] },
  { id:'estensione-cestello', nome:'Estensione cestello (mm)', tipi:['piattaforme'],
    termini:['600','1150'] },
  { id:'forche', nome:'Forche (mm)', tipi:['carrelli'],
    termini:['1000','1100','1150 x 520','1150 x 540','1150 x 550','1150 x 570','1190 x 560','1200','1300','1400','1800','2400','Possibilità di scelta in base all\u2019esigenza e alla disponibilità'] },
  { id:'garanzia', nome:'Garanzia', tipi:[...ALL4],
    termini:['3 mesi','6 mesi','12 mesi','12 mesi + 12 mesi di estensione','24 mesi','99 anni sul telaio e 5 sull\u2019unità pompa','Nessuna garanzia'] },
  { id:'ingombro-minimo', nome:'Ingombro minimo (mm)', tipi:['carrelli'],
    termini:['1330','1829','1930','1950','1980','2000','2005','2010','2071','2100','2150','2160','2200','2205','2220','2250','2260','2280','2350','2450','2460','2550','2565','2585','2600','2654','2700','2810','2850','3080','3221'] },
  { id:'modalita-guida', nome:'Modalità di guida', tipi:['carrelli','pulizia'],
    termini:['Uomo a bordo','Uomo a terra'] },
  { id:'montante', nome:'Montante', tipi:['carrelli'],
    termini:['Simplex','Duplex','Duplex - Visibilità totale','Triplex','Triplex - Alzata libera','Quadruplex','Telescopico','Privo di montante'] },
  { id:'ore-lavoro', nome:'Ore di lavoro', tipi:[...ALL4], termini:[] },
  { id:'pannellatura', nome:'Pannellatura', tipi:['carrelli'],
    termini:['Anteriore','Posteriore','Superiore','Superiore + Anteriore','Superiore + Posteriore','Semicabina','Cabina completa'] },
  { id:'pedaliera', nome:'Pedaliera', tipi:['carrelli'],
    termini:['Basculante','D2 Pedal','Pedale singolo con inversore di marcia'] },
  { id:'portata', nome:'Portata (kg)', tipi:['carrelli','piattaforme'],
    termini:['150','200','500','1000','1200','1250','1300','1400','1450','1500','1600','1800','2000','2300','2500','3000','3500','4000','4500','5000','6000','7000','8000','8500'] },
  { id:'raddrizzatore', nome:'Raddrizzatore', tipi:['carrelli','pulizia'],
    termini:['24 V','24 V / 32 A','24 V / 40 A','24 V / 80 A','24 V / 100 A','48 V','48 V / 75 A','48 V / 100 A','48 V / 120 A','48 V Litio','80 V','80 V / 90 A','80 V / 100 A','80 V / 120 A','Incorporato - 24V / 26A'] },
  { id:'resa-teorica', nome:'Resa teorica (m²/h)', tipi:['pulizia'],
    termini:['max. 2550'] },
  { id:'segnalatori', nome:'Segnalatori', tipi:['carrelli','pulizia'],
    termini:['Blue Light anteriore','Blue Light posteriore','Fanali anteriori','Fanali posteriori','Lampeggiante','Segnalatore acustico di retromarcia'] },
  { id:'serbatoio-acqua', nome:'Serbatoio acqua (l)', tipi:['pulizia'],
    termini:['55'] },
  { id:'stato-usato', nome:'Stato Usato', tipi:[...ALL4],
    termini:['Usato Base','Usato Premium Menabue'] },
  { id:'tipologia', nome:'Tipologia', tipi:[...ALL4],
    termini:['Avvolgipallet','Commissionatore','Controbilanciato elettrico','Controbilanciato endotermico','Elevatore elettrico','Macchine per la pulizia','Piattaforme aeree','Retrattile','Transpallet elettrico','Transpallet manuale','Trattore industriale','Trilaterale'] },
  { id:'velocita-spazzola', nome:'Velocità della spazzola (rpm)', tipi:['pulizia'],
    termini:['180'] },
  { id:'velocita-guida', nome:'Velocità di guida (km/h)', tipi:['carrelli','pulizia'],
    termini:['max. 6'] },
];

// normalize an attribute / product-attr key for tolerant matching
function normAttr(s){
  return (s||'').toLowerCase()
    .normalize('NFD').replace(/[\u0300-\u036f]/g,'')   // strip accents
    .replace(/\([^)]*\)/g,'')                           // strip (units)
    .replace(/\b(mm|kg|km\/h|rpm|m²\/h|l|ah|v|a)\b/g,'')// strip unit tokens
    .replace(/[^a-z0-9 ]/g,' ')
    .replace(/\balt\b/g,'altezza').replace(/\bsoll\b/g,'sollevamento')
    .replace(/\s+/g,' ').trim();
}

Object.assign(window, { MTIPI, ALL4, ATTRIBUTI_INIT, normAttr });

/* ============================================================
   LISTINO BATTERIE NUOVE — matrice voltaggio × amperaggio
   (importato dal listino cliente; "Su richiesta" = SR)
   ============================================================ */
const BATT_VOLT = ['24V','2x12V','48V','80V','2 x 40V'];
const BATT_AMP  = ['150Ah','160Ah','180Ah','225Ah','230Ah','240Ah','250Ah','260Ah','270Ah','300Ah','310Ah','375Ah','400Ah','420Ah','460Ah','465Ah','500Ah','525Ah','560Ah','600Ah','620Ah','625Ah','690Ah','700Ah','720Ah','735Ah','750Ah','775Ah','800Ah','840Ah','875Ah','930Ah','1000Ah','1085Ah','1120Ah','1240Ah','1050Ah','1250Ah'];
const SR = 'SR'; // su richiesta
// price map keyed "VOLT|AMP"
const LISTINO_BATTERIE_INIT = {
  '24V|150Ah':828,'24V|225Ah':1000,'24V|250Ah':1050,'24V|260Ah':1011,'24V|300Ah':1153,'24V|310Ah':1202.8,'24V|375Ah':1299,'24V|400Ah':1390,'24V|420Ah':1433,'24V|465Ah':1569.03,'24V|500Ah':1474,'24V|560Ah':1734,'24V|600Ah':1763,'24V|620Ah':1746,'24V|735Ah':2109,'24V|840Ah':2370,'24V|875Ah':2139,'24V|1000Ah':2400,
  '2x12V|230Ah':1099,
  '48V|160Ah':1717,'48V|180Ah':1893,'48V|240Ah':2095,'48V|270Ah':2200,'48V|310Ah':2574,'48V|460Ah':3003,'48V|465Ah':3091,'48V|500Ah':2750,'48V|525Ah':3279,'48V|620Ah':3520,'48V|625Ah':3125,'48V|690Ah':3839,'48V|750Ah':3480,'48V|775Ah':4056,'48V|840Ah':SR,'48V|930Ah':4539,'48V|1085Ah':5458,'48V|1240Ah':6155,
  '80V|375Ah':4259,'80V|420Ah':4657,'80V|465Ah':4920,'80V|500Ah':4830,'80V|560Ah':5357,'80V|620Ah':4923,'80V|625Ah':5513,'80V|700Ah':6053,'80V|750Ah':6149,'80V|775Ah':5890,'80V|840Ah':6579,'80V|930Ah':6400,'80V|1120Ah':8792,'80V|1240Ah':9291,
  '2 x 40V|720Ah':SR,'2 x 40V|800Ah':SR,'2 x 40V|1050Ah':10136,'2 x 40V|1250Ah':10828,
};
function battKey(v,a){ return v+'|'+a; }
// Parse a product's battery attribute (e.g. "48V / 500Ah", "80V / 700Ah") → {volt, amp}
function parseBatt(str){
  if(!str) return null;
  const vm = str.match(/(2\s*x\s*40|2x12|24|48|80)\s*V/i);
  const am = str.match(/(\d{2,4})\s*Ah/i);
  if(!vm||!am) return null;
  let volt = vm[1].replace(/\s+/g,'');
  if(volt==='2x40') volt='2 x 40V'; else if(volt==='2x12') volt='2x12V'; else volt=volt+'V';
  return { volt, amp: am[1]+'Ah' };
}

/* ============================================================
   ZONE DI CONSEGNA — tariffe trasporti (importate dal cliente)
   ============================================================ */
const ZONE_INIT = [
  ['Vignola',1,100],['Marano s/Panaro',9,120],['Savignano',9,120],['Castelvetro',14,150],['Spilamberto',16,160],['Bazzano',20,160],['Casona',20,160],['Castelnuovo',20,160],['San Cesario',20,180],['Solignano',20,160],['Piumazzo',28,220],['Castelfranco',30,220],['Crespellano',30,220],['Guiglia',30,220],['Monteveglio',30,220],['Cavazzona',38,220],['Maranello',40,220],['San Damaso',40,210],['Spezzano',40,210],['Ubersetto',40,210],['Modena',48,220],['Cognento',50,220],['Formigine',50,220],['Serramazzoni',50,260],['Fiorano',54,220],['Magreta',54,220],['Sassuolo',54,220],['Casalgrande',60,230],['Castellarano',60,260],['Ganaceto',60,230],['Montese',60,260],['Nonantola',60,230],['Pavullo',60,230],['Salvaterra',62,240],['Veggia',60,240],['Zocca',60,240],['Bastiglia',70,240],['Bomporto',70,240],['Rubiera',70,280],['Campogalliano',80,280],['Ravarino',80,300],['Soliera',80,300],['Sorbara',80,300],['Scandiano',80,300],['Muraglione di Baiso',82,300],['Lama Mocogno',88,300],['Palagano',112,380],['Polinago',88,300],['Prignano',88,300],['Fanano',90,290],['San Prospero',90,300],['Camposanto',100,340],['Carpi',100,340],['Castelnuovo di Sotto',100,340],['Cavezzo',100,340],['Correggio',100,340],['Medolla',100,340],['Pianoro',100,340],['Reggio Emilia',100,340],['Rio Saliceto',100,340],['Sala Bolognese',100,340],['Sestola',100,320],['Toano',100,340],['Costrignano',106,340],['Montecreto',110,380],['Rovereto',110,360],['Montefiorino',100,360],['Concordia',120,420],['Mirandola',120,380],['Novi',120,380],['San Felice',120,360],['San Possidonio',120,360],['Viano',120,380],['Bondeno',140,400],['Finale Emilia',140,420],['Frassinoro',140,420],['Pievepelago',140,420],['Fiumalbo',150,450],['Cervarezza',160,580],['Mordano',164,580],['Imola',182,520]
].map((z,i)=>({ id:'z'+i, nome:z[0], km:z[1], tariffa:z[2] }));
ZONE_INIT.push({ id:'z-fuori', nome:'Fuori zona', km:null, tariffa:SR });

Object.assign(window, { BATT_VOLT, BATT_AMP, SR, LISTINO_BATTERIE_INIT, battKey, parseBatt, ZONE_INIT });

/* ============================================================
   LISTINO STR — noleggio breve termine (importato dal cliente)
   prezzo giornaliero (min. 3 giorni) + mensile. 'SR' = su richiesta
   ============================================================ */
const LISTINO_STR_INIT = [
  { id:'g-cbe', tipo:'gruppo', nome:'Controbilanciati elettrici' },
  { id:'cbe1', nome:'CBE 10-15 ton', giorno:55, mese:700 },
  { id:'cbe2', nome:'CBE 16-20 ton', giorno:60, mese:800 },
  { id:'cbe3', nome:'CBE 25-35 ton', giorno:90, mese:1000 },
  { id:'cbe4', nome:'CBE 40-50 ton', giorno:115, mese:1700 },
  { id:'cbe5', nome:'CBE 60-85 ton', giorno:140, mese:2500 },
  { id:'g-cbd', tipo:'gruppo', nome:'Controbilanciati diesel' },
  { id:'cbd1', nome:'CBD 15-35 ton', giorno:85, mese:1000 },
  { id:'cbd2', nome:'CBD 40-50 ton', giorno:115, mese:1700 },
  { id:'cbd3', nome:'CBD 60-80 ton', giorno:140, mese:2500 },
  { id:'g-altro', tipo:'gruppo', nome:'Altre tipologie' },
  { id:'tpe', nome:'Transpallet elettrici', giorno:30, mese:400 },
  { id:'stk', nome:'Stoccatori elettrici', giorno:40, mese:550 },
  { id:'g-comm', tipo:'gruppo', nome:'Commissionatori' },
  { id:'co', nome:'Commissionatori orizzontali', giorno:50, mese:950 },
  { id:'cv', nome:'Commissionatori verticali', giorno:80, mese:1000 },
  { id:'g-altri2', tipo:'gruppo', nome:'Retrattili e trilaterali' },
  { id:'retr', nome:'Retrattili', giorno:90, mese:1300 },
  { id:'tril', nome:'Trilaterali', giorno:SR, mese:SR },
];

Object.assign(window, { LISTINO_STR_INIT });

/* ============================================================
   CATEGORIE CLIENTI + COEFFICIENTI USURA → MAGGIORAZIONE
   (valori indicativi: il cliente non li ha forniti, sono modificabili)
   ============================================================ */
// Coefficienti: per ogni fascia di usura (%), la maggiorazione % applicata
// alla tariffa di noleggio (sia STR sia LTR).
const USURA_COEFF_INIT = [
  { id:'uc1', label:'Usura bassa',    min:0,  max:15,  aumento:0  },
  { id:'uc2', label:'Usura moderata', min:15, max:35,  aumento:8  },
  { id:'uc3', label:'Usura elevata',  min:35, max:55,  aumento:18 },
  { id:'uc4', label:'Usura severa',   min:55, max:100, aumento:30 },
];

// Categorie cliente: il settore determina quanto il cliente "consuma" il mezzo.
const CLIENTE_CATEGORIE_INIT = [
  { id:'cc1', nome:'Biomedicale / Farmaceutico', usura:8,  note:'Uso attento, ambienti puliti' },
  { id:'cc2', nome:'Logistica / Magazzino',      usura:22, note:'Uso intensivo standard' },
  { id:'cc3', nome:'Metalmeccanica',             usura:32, note:'Carichi pesanti, fondi abrasivi' },
  { id:'cc4', nome:'Industria alimentare (celle frigo)', usura:48, note:'Sbalzi termici, ingresso/uscita celle' },
  { id:'cc5', nome:'Edilizia / Cantieri',        usura:62, note:'Ambienti gravosi, polveri e detriti' },
];

// Given a usura %, find the matching coefficient → maggiorazione %
function maggiorazioneFor(usura, coeff){
  const list = coeff || USURA_COEFF_INIT;
  if (usura==null) return { aumento:0, fascia:null };
  const f = list.find(c => usura >= c.min && usura <= c.max) || list[list.length-1];
  return { aumento: f ? f.aumento : 0, fascia: f };
}

Object.assign(window, { USURA_COEFF_INIT, CLIENTE_CATEGORIE_INIT, maggiorazioneFor });
