{"id":32197,"date":"2026-02-18T07:22:40","date_gmt":"2026-02-18T07:22:40","guid":{"rendered":"https:\/\/meber2026.graphoservice.it\/configurator\/"},"modified":"2026-05-05T05:59:28","modified_gmt":"2026-05-05T05:59:28","slug":"configurator","status":"publish","type":"page","link":"https:\/\/www.meber.it\/en\/configurator\/","title":{"rendered":"Configurator"},"content":{"rendered":"<div class=\"et_pb_section_0 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_0 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_0 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_12_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_group_0 et_pb_group et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_icon_0 et_pb_icon et_animated et_pb_module et_flex_module\"><span class=\"et_pb_icon_wrap\"><span class=\"et-pb-icon\">\uf0ad<\/span><\/span><\/div>\n\n<div class=\"et_pb_text_0 et_pb_text et_pb_bg_layout_dark et_animated et_pb_module et_block_module\"><div class=\"et_pb_text_inner\"><h1>Configurator<\/h1>\n<\/div><\/div>\n\n<div class=\"et_pb_text_1 et_pb_text et_pb_bg_layout_dark et_animated et_pb_module et_block_module\"><div class=\"et_pb_text_inner\"><h1><strong>Stetchers<\/strong><\/h1>\n<\/div><\/div>\n\n<div class=\"et_pb_text_2 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><h6><span id=\"text2_b\" class=\"item_subtitle\">Find the right stretcher for your ambulance<\/span><\/h6>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_image_0 et_pb_image et_pb_module et_flex_module\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.meber.it\/wp-content\/uploads\/2026\/02\/baffo_bianco.svg\" title=\"baffo_bianco\" width=\"1600\" height=\"200\" srcset=\"https:\/\/www.meber.it\/wp-content\/uploads\/2026\/02\/baffo_bianco.svg 1600w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 1600px, 100vw\" class=\"wp-image-127\" \/><\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_1 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_1 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_1 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_code_0 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\">  <!-- Barra superiore con titolo -->\n\n  <!-- CONTAINER PRINCIPALE: conterr\u00e0 i vari step -->\n  <div class=\"container\">\n\t<!-- STEP 1 (Inserimento Altezza Piano di Carico) -->\n\t<div class=\"step-card active\" id=\"step1\">\n\t  <h2>Step 1 <span style=\"font-weight:300\">Enter the loading platform height<\/span><\/h2>\n\t  <div class=\"input-container\">\n\t\t<img decoding=\"async\" src=\"\/wp-content\/uploads\/configurator\/images\/Altezza Piano di Carico-02.png\" alt=\"Height Measurement Guide\" class=\"measurement-guide\">\n\t\t<div class=\"input-group\">\n\t\t  <label for=\"input-height\">Height (H) in cm:<\/label>\n<input type=\"number\" id=\"input-height\" min=\"0\" step=\"0.1\" placeholder=\"E.g. 37.5\"\/>\n<button id=\"btn-submit-height\" class=\"primary-btn\">Confirm height<\/button>\n\t\t<\/div>\n\t  <\/div>\n\t<\/div>\n    <!-- STEP 2 + STEP 3 (Supporto e Barella) racchiusi in un container \"steps-2-3\" -->\n    <div class=\"step-card hidden\" id=\"steps-2-3\">\n      <!-- Riquadro in alto per il veicolo scelto -->\n      <div class=\"chosen-vehicle\" id=\"chosen-vehicle\"><\/div>\n\n      <div class=\"step-content\">\n\t\t  <h2>Step 2 <span style=\"font-weight:300\">Select the support<\/span><\/h2>\n\t\t  <p>Or select the stretcher directly. With each selection, compatible options will be highlighted in green.<\/p>\n        <!-- Opzioni Supporto popolate in #support-options -->\n        <div class=\"options\" id=\"support-options\"><\/div>\n        <button class=\"reset-btn\" id=\"btn-reset-support\">Reset Support<\/button>\n\n\t\t  <h2>Step 3 <span style=\"font-weight:300\">Select the stretcher<\/span><\/h2>\n        <!-- Opzioni Barella popolate in #stretcher-options -->\n        <div class=\"options\" id=\"stretcher-options\"><\/div>\n        <button class=\"reset-btn\" id=\"btn-reset-stretcher\">Reset stretcher<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- STEP 4 (Ribaltina) -->\n    <div class=\"step-card hidden\" id=\"step4\">\n\t\t<h2>Step 4 <span style=\"font-weight:300\">Confirm your selection<\/span><\/h2>\n\n      <!-- Riquadro con veicolo\/supporto\/barella scelti -->\n      <div class=\"previous-choices\" id=\"previous-choices-step4\"><\/div>\n\n      <!-- Opzioni Ribaltina popolate in #ribaltina-options -->\n      <div class=\"options\" id=\"ribaltina-options\" style=\"display:none!important;\"><\/div>\n      <button class=\"reset-btn\" id=\"btn-reset-ribaltina\" style=\"display:none!important;\">Reset folding plate<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- Barra di navigazione (pulsanti Avanti\/Indietro\/Conferma) -->\n  <footer class=\"bottombar\">\n    <button id=\"btn-back\" class=\"nav-btn hidden\">Go back<\/button>\n<button id=\"btn-next\" class=\"nav-btn hidden\">Next<\/button>\n<button id=\"btn-confirm\" class=\"primary-btn hidden\">Confirm<\/button>\n  <\/footer>\n\n\n<\/div><\/div>\n\n<div class=\"et_pb_code_1 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><style>\/* RESET BASE *\/\n* {\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n}\n\n\/* BODY *\/\n\n\/* TOPBAR (header) *\/\n\n\/* CONTENITORE PRINCIPALE *\/\n.container {\n  width: 100%;\n  max-width: 1280px;\n  margin: 20px auto 70px auto;\n  padding: 0 20px;\n  display: flex;\n  flex-direction: column;\n  gap: 20px;\n}\n\n\/* STEP-CARD *\/\n.step-card {\n  background: #fff;\n  border-radius: 12px;\n  box-shadow: 0 2px 8px rgba(0,0,0,0.07);\n  padding: 20px;\n  transition: transform 0.3s ease;\n  overflow: hidden;\n}\n.step-card:hover {\n  transform: translateY(-2px);\n}\n.step-card h2 {\n  font-size: 1.2rem;\n  font-weight: 600;\n  margin-bottom: 10px;\n  color: var(--accent);\n}\n.step-card.hidden {\n  display: none; \/* Viene nascosto dal JS quando non \u00e8 attivo *\/\n}\n\n\/* step-content (solo per step 2-3 layout) *\/\n.step-content {\n  display: flex;\n  flex-direction: column;\n  gap: 20px;\n  margin-top: 10px;\n}\n\n\/* chosen-vehicle (riquadro con veicolo scelto in step 2-3) *\/\n.chosen-vehicle {\n  background: #f9f9f9;\n  border: 1px solid #eee;\n  border-radius: 10px;\n  padding: 15px;\n  margin-bottom: 15px;\n}\n\n\/* PREVIOUS-CHOICES (step4) *\/\n.previous-choices {\n  background: #f9f9f9;\n  border: 1px solid #eee;\n  border-radius: 10px;\n  padding: 15px;\n  margin-bottom: 15px;\n}\n.previous-choices .choice-box {\n  display: flex;\n  align-items: center;\n  gap: 10px;\n  margin-bottom: 10px;\n}\n\n\/* OPTIONS (contenitore delle scelte) *\/\n.options {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 15px;\n}\n\n\/* SINGOLA OPZIONE (support, barella, ribaltina) *\/\n.option {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  border: 2px solid #eee;\n  border-radius: 10px;\n  background: #fff;\n  padding: 15px;\n  width: 135px;\n  cursor: pointer;\n  transition: border-color 0.3s, box-shadow 0.3s;\n  text-align: center;\n}\n.option:hover {\n  border-color: #ddd;\n  box-shadow: 0 2px 5px rgba(0,0,0,0.08);\n}\n.option img {\n  width: 100%;\n  height: 80px;\n  object-fit: cover;\n  border-radius: 8px;\n  margin-bottom: 10px;\n}\n.option.disabled {\n  opacity: 0.5;\n  pointer-events: none;\n  cursor: not-allowed;\n}\n.option.valid {\n  border-color: var(--mm-accent);\n}\n.option.selected {\n    background: var(--accent);\n    border-color: var(--gs-color-accent-2);\n  color: #fff;\n}\n\n.option:not(.disabled) p {\n    color: #000;\n    font-weight: 400;\n}\n.option span {\n    font-size: 10px;\n    line-height: 12px;\n    margin-top: 10px;\n}\n  \n  .option.selected p {\n    color: #fff;\n}\n\n\n\/* Pulsante di reset (usato in step 2,3,4) *\/\n.reset-btn {\n  margin-top: 5px;\n  padding: 8px 12px;\n  background-color: #dc3545;\n  color: #fff;\n  font-size: 0.9rem;\n  border: none;\n  border-radius: 6px;\n  cursor: pointer;\n  transition: background 0.3s;\n  align-self: flex-start;\n}\n.reset-btn:hover {\n  background-color: #b52d3a;\n}\n\n\/* NAVIGAZIONE BOTTOMBAR *\/\n.bottombar {\n  background: #fff;\n  border-top: 1px solid #eee;\n  box-shadow: 0 -2px 5px rgba(0,0,0,0.05);\n  padding: 15px;\n  text-align: center;\n  position: fixed;\n  bottom: 0;\n  width: 100%;\n}\n.nav-btn,\n.primary-btn {\n  margin: 0 5px;\n  padding: 10px 20px;\n  font-size: 1rem;\n  border: none;\n  border-radius: 12px;\n  cursor: pointer;\n  transition: background 0.3s ease;\n}\n.nav-btn {\n  background: #555;\n  color: #fff;\n}\n.nav-btn:hover {\n  background: #444;\n}\n.primary-btn {\n  background: var(--mm-accent);\n  color: #fff;\n}\n.primary-btn:hover {\n  background: #594ce6;\n}\n\n\/* HELPER UTILI *\/\n.hidden {\n  display: none;\n}\n.active {\n  display: block;\n}\n\np {\n\t\n  font-size: 0.9rem;\n  font-weight: 200;\n  color: #aaa;\n}\n\n\/* Contenitore per l'input e l'immagine affiancati *\/\n.input-container {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 20px;\n  flex-wrap: wrap;\n}\n\n\/* Stile per l'immagine guida alla misurazione *\/\n.measurement-guide {\n  max-width: 200px;\n  height: auto;\n  border-radius: 10px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n\/* Gruppo di input e label *\/\n.input-group {\n  display: flex;\n  flex-direction: column;\n  align-items: flex-start;\n  gap: 10px;\n}\n\n.input-group label {\n  font-size: 1rem;\n  color: #444;\n}\n\n.input-group input {\n  padding: 10px;\n  font-size: 1rem;\n  border: 1px solid #ccc;\n  border-radius: 5px;\n  width: 200px;\n}\n\n.input-group button {\n  align-self: center;\n  padding: 10px 20px;\n  font-size: 1rem;\n  border: none;\n  border-radius: 5px;\n  background-color:var(--mm-accent);\n  color: white;\n  cursor: pointer;\n  transition: background 0.3s ease;\n}\n\n.input-group button:hover {\n  background-color: #594ce6;\n}\n<\/style><\/div><\/div>\n\n<div class=\"et_pb_code_2 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><script>\n\/**********************************************\n * VARIABILI DI STATO E ARRAYS\n **********************************************\/\nlet vehicleHeight = null; \/\/ Altezza del piano di carico inserita dall'utente\nlet selectedSupport = null;\nlet selectedStretcher = null;\nlet selectedRibaltina = null;\n\n\/\/ Dati caricati da data.json\nlet supports = [];\nlet stretchers = [];\nlet ribaltine = [];\n\n\/\/ Array per ricordare le ribaltine gi\u00e0 disabilitate (una volta invalide, sempre invalide)\nlet alreadyDisabledRibaltine = [];\n\n\/**********************************************\n * CARICAMENTO DATI DA data.json\n **********************************************\/\nasync function loadData() {\n  try {\n    const response = await fetch(\"\/wp-content\/uploads\/configurator\/data.json\");\n    if (!response.ok) {\n      throw new Error('Errore HTTP: ${response.status}');\n    }\n    const data = await response.json();\n\n    \/\/ Popoliamo i nostri array globali\n    supports = data.supports || [];\n    stretchers = data.stretchers || [];\n    ribaltine = data.ribaltine || [];\n\n    \/\/ Avvia il configuratore\n    initStep1();\n  } catch (err) {\n    console.error(\"Errore nel caricamento di data.json:\", err);\n    alert(\"Impossibile caricare i dati dal file JSON.\");\n  }\n}\n\n\/**********************************************\n * STEP 1: INSERIMENTO ALTEZZA PIANO DI CARICO\n **********************************************\/\nfunction initStep1() {\n  \/\/ Reset variabili di stato\n  vehicleHeight = null;\n  selectedSupport = null;\n  selectedStretcher = null;\n  selectedRibaltina = null;\n  alreadyDisabledRibaltine = [];\n\n  showElement(\"step1\");\n  hideElement(\"steps-2-3\");\n  hideElement(\"step4\");\n\n  document.getElementById(\"btn-back\").classList.add(\"hidden\");\n  document.getElementById(\"btn-next\").classList.add(\"hidden\");\n  document.getElementById(\"btn-confirm\").classList.add(\"hidden\");\n\n  \/\/ Gestione del click sul pulsante \"Conferma Altezza\"\n  document.getElementById(\"btn-submit-height\").addEventListener(\"click\", () => {\n    const inputHeight = document.getElementById(\"input-height\").value;\n    const heightValue = parseFloat(inputHeight);\n\n    if (isNaN(heightValue) || heightValue <= 0) {\n      alert(\"Per favore, inserisci un'altezza valida in centimetri.\");\n      return;\n    }\n\n    vehicleHeight = heightValue;\n    hideElement(\"step1\");\n    showElement(\"steps-2-3\");\n    initSteps2and3();\n  });\n}\n\n\/**********************************************\n * STEP 2 & 3: SUPPORTO + BARELLA\n **********************************************\/\nfunction initSteps2and3() {\n  \/\/ Mostra l'altezza del veicolo inserita\n  const chVeh = document.getElementById(\"chosen-vehicle\");\n  chVeh.innerHTML = `\n    <div class=\"chosen-vehicle-content\">\n      <strong>Altezza Piano di Carico (H):<\/strong> ${vehicleHeight} cm\n    <\/div>\n  `;\n\n  document.getElementById(\"btn-back\").classList.remove(\"hidden\");\n  document.getElementById(\"btn-next\").classList.remove(\"hidden\");\n  document.getElementById(\"btn-confirm\").classList.add(\"hidden\");\n\n  \/\/ Popola supporti e barelle\n  displayAllOptions(\"support-options\", supports, handleSupportClick, selectedSupport);\n  displayAllOptions(\"stretcher-options\", stretchers, handleStretcherClick, selectedStretcher);\n\n  \/\/ Pulsanti di reset\n  document.getElementById(\"btn-reset-support\").addEventListener(\"click\", resetSupport);\n  document.getElementById(\"btn-reset-stretcher\").addEventListener(\"click\", resetStretcher);\n}\n\n\/**********************************************\n * STEP 4: RIBALTINA\n **********************************************\/\nfunction initStep4() {\n  hideElement(\"steps-2-3\");\n  showElement(\"step4\");\n\n  document.getElementById(\"btn-back\").classList.remove(\"hidden\");\n  document.getElementById(\"btn-next\").classList.add(\"hidden\");\n  document.getElementById(\"btn-confirm\").classList.remove(\"hidden\");\n\n  \/\/ Mostra riquadro con altezza, supporto e barella\n  populatePreviousChoicesStep4();\n\n  \/\/ Popola tutte le ribaltine\n  displayAllOptions(\"ribaltina-options\", ribaltine, handleRibaltinaClick, selectedRibaltina);\n\n  \/\/ Disabilita (per sempre) le ribaltine invalide o gi\u00e0 disabilitate\n  disableInvalidRibaltine();\n\n  document.getElementById(\"btn-reset-ribaltina\").addEventListener(\"click\", resetRibaltina);\n}\n\n\/**********************************************\n * MOSTRA ALTEZZA, SUPPORTO, BARELLA IN STEP 4\n **********************************************\/\nfunction populatePreviousChoicesStep4() {\n  const container = document.getElementById(\"previous-choices-step4\");\n  container.innerHTML = \"\";\n\n  \/\/ Altezza del veicolo\n  if (vehicleHeight) {\n    const divVeh = document.createElement(\"div\");\n    divVeh.classList.add(\"choice-box\");\n    divVeh.innerHTML = `\n      <strong>Altezza Piano di Carico (H):<\/strong> ${vehicleHeight} cm\n    `;\n    container.appendChild(divVeh);\n  }\n\n  \/\/ Supporto\n  if (selectedSupport) {\n    const divSup = document.createElement(\"div\");\n    divSup.classList.add(\"choice-box\");\n    divSup.innerHTML = `\n      <img decoding=\"async\" src=\"${selectedSupport.img}\" alt=\"${selectedSupport.name}\" style=\"width:40px; height:40px;\" \/>\n      <strong>Supporto:<\/strong> ${selectedSupport.name}\n    `;\n    container.appendChild(divSup);\n  }\n\n  \/\/ Barella\n  if (selectedStretcher) {\n    const divStr = document.createElement(\"div\");\n    divStr.classList.add(\"choice-box\");\n    divStr.innerHTML = `\n      <img decoding=\"async\" src=\"${selectedStretcher.img}\" alt=\"${selectedStretcher.name}\" style=\"width:40px; height:40px;\" \/>\n      <strong>Barella:<\/strong> ${selectedStretcher.name}\n    `;\n    container.appendChild(divStr);\n  }\n}\n\n\/**********************************************\n * DISABILITA RIBALTINE INVALID PER SEMPRE\n **********************************************\/\nfunction disableInvalidRibaltine() {\n  const container = document.getElementById(\"ribaltina-options\");\n  const optionDivs = container.querySelectorAll(\".option\");\n\n  ribaltine.forEach((rib, i) => {\n    const wasDisabled = alreadyDisabledRibaltine.includes(rib.name);\n    const isInvalidNow = !isValidRibaltina(rib, selectedStretcher, selectedSupport);\n\n    \/\/ Se era gi\u00e0 disabilitata o \u00e8 invalida ora => disabilita\n    if (wasDisabled || isInvalidNow) {\n      optionDivs[i].classList.add(\"disabled\");\n      optionDivs[i].classList.remove(\"valid\");\n      optionDivs[i].removeEventListener(\"click\", handleRibaltinaClick);\n      if (!wasDisabled) {\n        alreadyDisabledRibaltine.push(rib.name);\n      }\n    }\n  });\n}\n\n\/**********************************************\n * GESTORI DI EVENTI CLICK\n **********************************************\/\nfunction handleSupportClick(item, idx, container) {\n  selectedSupport = item;\n  removeHighlights(\"support-options\");\n  container.children[idx].classList.add(\"selected\");\n\n  highlightValid(\"stretcher-options\", stretchers, (s) => isValidStretcher(s, selectedSupport));\n}\n\nfunction handleStretcherClick(item, idx, container) {\n  selectedStretcher = item;\n  removeHighlights(\"stretcher-options\");\n  container.children[idx].classList.add(\"selected\");\n\n  highlightValid(\"support-options\", supports, (sup) => isValidSupport(sup, selectedStretcher));\n}\n\nfunction handleRibaltinaClick(item, idx, container) {\n  selectedRibaltina = item;\n  removeHighlights(\"ribaltina-options\");\n  container.children[idx].classList.add(\"selected\");\n}\n\n\/**********************************************\n * VALIDAZIONE\n **********************************************\/\nfunction isValidStretcher(stretcher, support) {\n  const minHeight = vehicleHeight + support.AS - 5;\n  const maxHeight = vehicleHeight + support.AS + 5;\n  return stretcher.AminC >= minHeight && stretcher.AmaxC >= maxHeight;\n}\n\nfunction isValidSupport(support, stretcher) {\n  const minHeight = vehicleHeight + support.AS - 5;\n  const maxHeight = vehicleHeight + support.AS + 5;\n  return stretcher.AminC >= minHeight && stretcher.AmaxC >= maxHeight;\n}\n\nfunction isValidRibaltina(ribaltina, stretcher, support) {\n\n\t\n  const requiredHeight = vehicleHeight + support.AS + ribaltina.RY-1;\n  return stretcher.AminC <= requiredHeight && stretcher.AmaxC >= requiredHeight;\n}\n\n\/**********************************************\n * UTILIT\u00c0\n **********************************************\/\nfunction displayAllOptions(containerId, items, clickHandler, selectedItem) {\n  const container = document.getElementById(containerId);\n  container.innerHTML = \"\";\n\n  items.forEach((item, idx) => {\n    const optionDiv = document.createElement(\"div\");\n    optionDiv.classList.add(\"option\");\n    if (selectedItem && selectedItem.name === item.name) {\n      optionDiv.classList.add(\"selected\");\n    }\n    optionDiv.innerHTML = `\n      <img decoding=\"async\" src=\"${item.img}\" alt=\"${item.name}\">\n      <p>${item.name}<\/p>\n      <span>${item.description}<\/span>\n    `;\n    optionDiv.addEventListener(\"click\", () => clickHandler(item, idx, container));\n    container.appendChild(optionDiv);\n  });\n}\n\nfunction removeHighlights(containerId) {\n  const container = document.getElementById(containerId);\n  const options = container.querySelectorAll(\".option\");\n  options.forEach((option) => {\n    option.classList.remove(\"selected\");\n    option.classList.remove(\"valid\");\n  });\n}\n\nfunction highlightValid(containerId, items, validationFn) {\n  const container = document.getElementById(containerId);\n  const options = container.querySelectorAll(\".option\");\n  items.forEach((item, idx) => {\n    if (validationFn(item)) {\n      options[idx].classList.add(\"valid\");\n    } else {\n      options[idx].classList.remove(\"valid\");\n    }\n  });\n}\n\n\n\/**********************************************\n * RESET FUNZIONI\n **********************************************\/\nfunction resetSupport() {\n  selectedSupport = null;\n  removeHighlights(\"support-options\");\n  displayAllOptions(\"support-options\", supports, handleSupportClick, null);\n\n  if (selectedStretcher) {\n    highlightValid(\"support-options\", supports, (sup) => isValidSupport(sup, selectedVehicle, selectedStretcher));\n  }\n}\n\nfunction resetStretcher() {\n  selectedStretcher = null;\n  removeHighlights(\"stretcher-options\");\n  displayAllOptions(\"stretcher-options\", stretchers, handleStretcherClick, null);\n\n  if (selectedSupport) {\n    highlightValid(\"stretcher-options\", stretchers, (s) => isValidStretcher(s, selectedVehicle, selectedSupport));\n  }\n}\n\nfunction resetRibaltina() {\n  selectedRibaltina = null;\n  removeHighlights(\"ribaltina-options\");\n  displayAllOptions(\"ribaltina-options\", ribaltine, handleRibaltinaClick, null);\n\n  \/\/ Riapplica la disabilitazione\n  disableInvalidRibaltine();\n}\n\n\/**********************************************\n * NAVIGAZIONE\n **********************************************\/\nfunction goBack() {\n  if (!document.getElementById(\"step4\").classList.contains(\"hidden\")) {\n    hideElement(\"step4\");\n    showElement(\"steps-2-3\");\n    document.getElementById(\"btn-next\").classList.remove(\"hidden\");\n    document.getElementById(\"btn-confirm\").classList.add(\"hidden\");\n  } else {\n    initStep1();\n  }\n}\n\nfunction goNext() {\n  if (!selectedSupport || !selectedStretcher) {\n    alert(\"Per favore, seleziona sia un supporto che una barella.\");\n    return;\n  }\n  hideElement(\"steps-2-3\");\n  showElement(\"step4\");\n  document.getElementById(\"btn-next\").classList.add(\"hidden\");\n  document.getElementById(\"btn-confirm\").classList.remove(\"hidden\");\n  initStep4();\n}\n\nfunction completeSelection() {\n  \/\/if (!selectedRibaltina) {\n  \/\/  alert(\"Per favore, seleziona una ribaltina.\");\n  \/\/  return;\n  \/\/}\n  alert(`Configurazione completata:\n    Altezza Piano di Carico: ${vehicleHeight} cm\n    Supporto: ${selectedSupport.name}\n    Barella: ${selectedStretcher.name}`);\n    \/\/ Ribaltina: ${selectedRibaltina.name}\n\t\n}\n\n\/**********************************************\n * MOSTRA\/NASCONDI ELEMENTI\n **********************************************\/\nfunction showElement(id) {\n  document.getElementById(id).classList.remove(\"hidden\");\n}\n\nfunction hideElement(id) {\n  document.getElementById(id).classList.add(\"hidden\");\n}\n\n\/**********************************************\n * INIZIALIZZAZIONE\n **********************************************\/\nwindow.addEventListener(\"DOMContentLoaded\", () => {\n  document.getElementById(\"btn-back\").addEventListener(\"click\", goBack);\n  document.getElementById(\"btn-next\").addEventListener(\"click\", goNext);\n  document.getElementById(\"btn-confirm\").addEventListener(\"click\", completeSelection);\n\n  loadData();\n});\n<\/script><\/div><\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-32197","page","type-page","status-publish","hentry"],"acf":[],"dsm_author":{"name":"admeb26","avatar_url":"https:\/\/www.meber.it\/wp-content\/plugins\/ultimate-member\/assets\/img\/default_avatar.jpg","archive_link":"https:\/\/www.meber.it\/en\/author\/admeb26\/","biodata":""},"dsm_categories":[],"dsm_attachment_categories":[],"dsm_featured_image":null,"dsm_comment_count":0,"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Configurator - Me.Ber.<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.meber.it\/en\/configurator\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Configurator - Me.Ber.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.meber.it\/en\/configurator\/\" \/>\n<meta property=\"og:site_name\" content=\"Me.Ber.\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-05T05:59:28+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.meber.it\\\/en\\\/configurator\\\/\",\"url\":\"https:\\\/\\\/www.meber.it\\\/en\\\/configurator\\\/\",\"name\":\"Configurator - Me.Ber.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.meber.it\\\/en\\\/#website\"},\"datePublished\":\"2026-02-18T07:22:40+00:00\",\"dateModified\":\"2026-05-05T05:59:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.meber.it\\\/en\\\/configurator\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.meber.it\\\/en\\\/configurator\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.meber.it\\\/en\\\/configurator\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.meber.it\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Configurator\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.meber.it\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.meber.it\\\/en\\\/\",\"name\":\"Me.Ber.\",\"description\":\"In Case of Emergerncy\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.meber.it\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Configurator - Me.Ber.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.meber.it\/en\/configurator\/","og_locale":"en_US","og_type":"article","og_title":"Configurator - Me.Ber.","og_url":"https:\/\/www.meber.it\/en\/configurator\/","og_site_name":"Me.Ber.","article_modified_time":"2026-05-05T05:59:28+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.meber.it\/en\/configurator\/","url":"https:\/\/www.meber.it\/en\/configurator\/","name":"Configurator - Me.Ber.","isPartOf":{"@id":"https:\/\/www.meber.it\/en\/#website"},"datePublished":"2026-02-18T07:22:40+00:00","dateModified":"2026-05-05T05:59:28+00:00","breadcrumb":{"@id":"https:\/\/www.meber.it\/en\/configurator\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.meber.it\/en\/configurator\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.meber.it\/en\/configurator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.meber.it\/en\/"},{"@type":"ListItem","position":2,"name":"Configurator"}]},{"@type":"WebSite","@id":"https:\/\/www.meber.it\/en\/#website","url":"https:\/\/www.meber.it\/en\/","name":"Me.Ber.","description":"In Case of Emergerncy","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.meber.it\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/www.meber.it\/en\/wp-json\/wp\/v2\/pages\/32197","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.meber.it\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.meber.it\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.meber.it\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.meber.it\/en\/wp-json\/wp\/v2\/comments?post=32197"}],"version-history":[{"count":1,"href":"https:\/\/www.meber.it\/en\/wp-json\/wp\/v2\/pages\/32197\/revisions"}],"predecessor-version":[{"id":32198,"href":"https:\/\/www.meber.it\/en\/wp-json\/wp\/v2\/pages\/32197\/revisions\/32198"}],"wp:attachment":[{"href":"https:\/\/www.meber.it\/en\/wp-json\/wp\/v2\/media?parent=32197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}