{"id":1448,"date":"2025-12-22T16:32:44","date_gmt":"2025-12-22T14:32:44","guid":{"rendered":"https:\/\/boxalmetro.com\/web\/?page_id=1448"},"modified":"2026-09-28T12:08:14","modified_gmt":"2026-09-28T10:08:14","slug":"simulatore-prezzo-selfstorage-via-di-tiglio-43-lucca","status":"publish","type":"page","link":"https:\/\/boxalmetro.com\/web\/simulatore-prezzo-selfstorage-via-di-tiglio-43-lucca\/","title":{"rendered":"Simulatore Prezzo SelfStorage Lucca Arancio 1"},"content":{"rendered":"<div>\r\nTorna ai <a href=\"https:\/\/boxalmetro.com\/web\/offerte-promo\/\">Simulatori di Prezzo Price Simulators Offerte e Promo<\/a> <br\/><br\/> o vai al\r\n<a href=\"https:\/\/boxalmetro.com\/web\/simulatore-prezzo-selfstorage-via-di-tiglio-43-lucca\/?sqm=2&months=6\"> Simulatore Prezzo SelfStorage Lucca Arancio (1)<\/a> <br\/><br\/> o vai al\r\n\r\n<a href=\"https:\/\/boxalmetro.com\/web\/simulatore-prezzo-selfstorage-centro-storico-via-pelleria-18-lucca\/?sqm=2.5&months=6\"> Simulatore Prezzo SelfStorage Lucca Centro Storico (2) <\/a> <br\/><br\/> o vai al\r\n\r\n<a href=\"https:\/\/boxalmetro.com\/web\/simulatore-prezzo-selfbikeracks-centro-storico-via-pelleria-18-lucca\/?racks=1&months=6\"> Simulatore Prezzo Posti Bici Self Bike Racks Lucca Centro Storico (3) <\/a> <br\/><br\/> o vai al\r\n\r\n<a href=\"https:\/\/boxalmetro.com\/web\/simulatore-prezzo-hybridstorage-individuali-non-self-via-di-tiglio-39-lucca\/?mq=4&mesi=6\"> Simulatore Prezzo HybridStorage Lucca Arancio 4 <\/a> <br\/><br\/> o vai al\r\n\r\n<a href=\"https:\/\/boxalmetro.com\/web\/simulatore-prezzo-warehouse-5-storage-condivisi-non-self-spav-lucca?mesi=6&metri=4\"> Simulatore Prezzo Magazzino Warehouse Viareggio e Lucca (5) <\/a> <br\/><br\/> o vai al\r\n\r\n<a href=\"https:\/\/boxalmetro.com\/web\/simulatore-prezzo-warestorage-condivisi-non-self-bagni-di-lucca\/?mq=8&mesi=6\">Simulatore Prezzo Magazzino Warehouse Bagni di Lucca (6) <\/a> <br\/><br\/> o vai al\r\n\r\n<a href=\"https:\/\/boxalmetro.com\/web\/simulatore-prezzo-selfstorage-cosplayers-espositori-lucca-comics-games?mesi=6&metri=4\"> Simulatore Prezzo SelfStorage Espositori Cosplayers Lucca Comics 2026 (7) <\/a> <br\/><br\/> o vai alla\r\n\r\n\r\n<a href=\"https:\/\/boxalmetro.com\/web\/offerte-promo\/#documenti-attivazione\">Lista dei documenti necessari all'attivazione del servizio - Paperwork<\/a>\r\n<\/div>\r\n<div class=\"storage-simulator-container\" id=\"storage-simulator\">\r\n  <div class=\"sim-header\">\r\n    <h3 id=\"sim-title\">Self Storage Price Simulator<\/h3>\r\n    <div class=\"lang-switch\">\r\n      <button onclick=\"setLanguage('en')\" id=\"btn-en\" class=\"active\">EN<\/button>\r\n      <button onclick=\"setLanguage('it')\" id=\"btn-it\">IT<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"sim-body\">\r\n    <div class=\"input-group\">\r\n      <label for=\"sqm\" id=\"label-sqm\">Square Meters (mq)<\/label>\r\n      <!-- Locked to 2 sqm -->\r\n      <input type=\"number\" id=\"sqm\" value=\"2\" min=\"2\" max=\"2\" readonly>\r\n    <\/div>\r\n\r\n    <div class=\"input-group\">\r\n      <label for=\"months\" id=\"label-months\">Duration (Months)<\/label>\r\n      <select id=\"months\" onchange=\"calculate()\">\r\n        <option value=\"1\">1<\/option>\r\n        <option value=\"2\">2<\/option>\r\n        <option value=\"3\">3<\/option>\r\n        <option value=\"4\">4<\/option>\r\n        <option value=\"6\">6<\/option>\r\n        <option value=\"12\">12<\/option>\r\n      <\/select>\r\n    <\/div>\r\n\r\n    <div class=\"results\">\r\n      <div class=\"result-item highlight\">\r\n        <span id=\"label-total\">Total Price<\/span>\r\n        <strong id=\"res-total\">\u20ac145.50<\/strong>\r\n      <\/div>\r\n      <div class=\"result-item\">\r\n        <span id=\"label-deposit\">Price with Deposit (Cauzione)<\/span>\r\n        <strong id=\"res-deposit\">\u20ac436.50<\/strong>\r\n      <\/div>\r\n      <div class=\"result-item\">\r\n        <span id=\"label-monthly\">Price per Month<\/span>\r\n        <strong id=\"res-monthly\">\u20ac145.50<\/strong>\r\n      <\/div>\r\n      <div class=\"result-item\">\r\n        <span id=\"label-monthly-sqm\">Price per Month per Sqm<\/span>\r\n        <strong id=\"res-monthly-sqm\">\u20ac72.75<\/strong>\r\n      <\/div>\r\n    <\/div>\r\n    \r\n    <div class=\"actions\">\r\n      <button id=\"btn-share\" onclick=\"shareUrl()\">Share URL<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<style>\r\n  .storage-simulator-container {\r\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\r\n    max-width: 450px;\r\n    margin: 20px auto;\r\n    background: #f9f9f9;\r\n    border: 1px solid #ddd;\r\n    border-radius: 8px;\r\n    box-shadow: 0 4px 6px rgba(0,0,0,0.1);\r\n    overflow: hidden;\r\n  }\r\n  .sim-header {\r\n    background: #0056b3;\r\n    color: white;\r\n    padding: 15px 20px;\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: center;\r\n  }\r\n  .sim-header h3 {\r\n    margin: 0;\r\n    font-size: 1.1rem;\r\n    color: white;\r\n  }\r\n  .lang-switch button {\r\n    background: transparent;\r\n    border: 1px solid white;\r\n    color: white;\r\n    padding: 4px 8px;\r\n    cursor: pointer;\r\n    font-size: 0.8rem;\r\n    border-radius: 4px;\r\n    transition: 0.2s;\r\n  }\r\n  .lang-switch button.active, .lang-switch button:hover {\r\n    background: white;\r\n    color: #0056b3;\r\n  }\r\n  .sim-body {\r\n    padding: 20px;\r\n  }\r\n  .input-group {\r\n    margin-bottom: 15px;\r\n  }\r\n  .input-group label {\r\n    display: block;\r\n    margin-bottom: 5px;\r\n    font-weight: 600;\r\n    font-size: 0.9rem;\r\n    color: #333;\r\n  }\r\n  .input-group input, .input-group select {\r\n    width: 100%;\r\n    padding: 10px;\r\n    border: 1px solid #ccc;\r\n    border-radius: 4px;\r\n    font-size: 1rem;\r\n    box-sizing: border-box;\r\n  }\r\n  .input-group input[readonly] {\r\n    background-color: #e9ecef;\r\n    cursor: not-allowed;\r\n    color: #495057;\r\n  }\r\n  .results {\r\n    margin-top: 20px;\r\n    border-top: 2px dashed #ddd;\r\n    padding-top: 15px;\r\n  }\r\n  .result-item {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: center;\r\n    padding: 8px 0;\r\n    border-bottom: 1px solid #eee;\r\n    font-size: 0.95rem;\r\n    color: #555;\r\n  }\r\n  .result-item:last-child {\r\n    border-bottom: none;\r\n  }\r\n  .result-item.highlight {\r\n    font-size: 1.1rem;\r\n    font-weight: bold;\r\n    color: #000;\r\n  }\r\n  .result-item strong {\r\n    color: #0056b3;\r\n  }\r\n  .result-item.highlight strong {\r\n    color: #28a745;\r\n  }\r\n  .actions {\r\n    margin-top: 20px;\r\n  }\r\n  #btn-share {\r\n    width: 100%;\r\n    background: #0056b3;\r\n    color: white;\r\n    border: none;\r\n    padding: 12px;\r\n    border-radius: 4px;\r\n    font-size: 1rem;\r\n    font-weight: 600;\r\n    cursor: pointer;\r\n    transition: background 0.2s;\r\n  }\r\n  #btn-share:hover {\r\n    background: #004494;\r\n  }\r\n  #btn-share.success {\r\n    background: #28a745;\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n  const translations = {\r\n    en: {\r\n      title: \"Self Storage Price Simulator\",\r\n      sqm: \"Square Meters (mq)\",\r\n      months: \"Duration (Months)\",\r\n      total: \"Total Price\",\r\n      deposit: \"Price with Deposit\",\r\n      monthly: \"Price per Month\",\r\n      monthlySqm: \"Price per Month per Sqm\",\r\n      shareBtn: \"Share URL\",\r\n      copied: \"Copied!\"\r\n    },\r\n    it: {\r\n      title: \"Simulatore Prezzi Self Storage\",\r\n      sqm: \"Metri Quadrati (mq)\",\r\n      months: \"Durata (Mesi)\",\r\n      total: \"Prezzo Totale\",\r\n      deposit: \"Prezzo con Cauzione Inclusa\",\r\n      monthly: \"Prezzo al Mese\",\r\n      monthlySqm: \"Prezzo al Mese per mq\",\r\n      shareBtn: \"Condividi URL\",\r\n      copied: \"Copiato!\"\r\n    }\r\n  };\r\n\r\n  let currentLang = 'en';\r\n\r\n  const basePricePerSqm = 75.00;\r\n  const monthDiscounts = { 1: 0.00, 2: 0.03, 3: 0.05, 4: 0.08, 6: 0.10, 12: 0.20 };\r\n  \r\n  function setLanguage(lang) {\r\n    currentLang = lang;\r\n    document.getElementById('btn-en').classList.remove('active');\r\n    document.getElementById('btn-it').classList.remove('active');\r\n    document.getElementById('btn-' + lang).classList.add('active');\r\n\r\n    document.getElementById('sim-title').innerText = translations[lang].title;\r\n    document.getElementById('label-sqm').innerText = translations[lang].sqm;\r\n    document.getElementById('label-months').innerText = translations[lang].months;\r\n    document.getElementById('label-total').innerText = translations[lang].total;\r\n    document.getElementById('label-deposit').innerText = translations[lang].deposit;\r\n    document.getElementById('label-monthly').innerText = translations[lang].monthly;\r\n    document.getElementById('label-monthly-sqm').innerText = translations[lang].monthlySqm;\r\n    document.getElementById('btn-share').innerText = translations[lang].shareBtn;\r\n    \r\n    calculate();\r\n  }\r\n\r\n  function calculate() {\r\n    let sqm = parseInt(document.getElementById('sqm').value);\r\n    let months = parseInt(document.getElementById('months').value);\r\n    \r\n    \/\/ Lock strictly to 2\r\n    if (isNaN(sqm) || sqm !== 2) {\r\n        sqm = 2;\r\n    }\r\n\r\n    \/\/ Update URL dynamically without reloading the page\r\n    const url = new URL(window.location);\r\n    url.searchParams.set('sqm', sqm);\r\n    url.searchParams.set('months', months);\r\n    url.searchParams.set('lang', currentLang);\r\n    window.history.replaceState({}, '', url);\r\n\r\n    \/\/ Logic replicated directly from \"Snap 2026-09-12 at 21.11.26.jpg\"\r\n    let mDiscount = monthDiscounts[months] || 0;\r\n    \r\n    \/\/ For 2 sqm, the discount is strictly 3% (0.03) based on the image\r\n    let sDiscount = 0.03; \r\n    let totalDiscount = mDiscount + sDiscount; \/\/ Additive discount\r\n\r\n    let rawPrice = basePricePerSqm * sqm * months;\r\n    let finalPrice = rawPrice * (1 - totalDiscount);\r\n    \r\n    let pricePerMonth = finalPrice \/ months;\r\n    let pricePerMonthPerSqm = pricePerMonth \/ sqm;\r\n    \r\n    \/\/ The image defines Deposit (Cauzione) as exactly 2x the discounted monthly rate\r\n    let depositAmount = pricePerMonth * 2; \r\n    let priceWithDeposit = finalPrice + depositAmount;\r\n\r\n    \/\/ Output formatting\r\n    const formatter = new Intl.NumberFormat('it-IT', { style: 'currency', currency: 'EUR' });\r\n    \r\n    document.getElementById('res-total').innerText = formatter.format(finalPrice);\r\n    document.getElementById('res-deposit').innerText = formatter.format(priceWithDeposit);\r\n    document.getElementById('res-monthly').innerText = formatter.format(pricePerMonth);\r\n    document.getElementById('res-monthly-sqm').innerText = formatter.format(pricePerMonthPerSqm);\r\n  }\r\n\r\n  function shareUrl() {\r\n    const currentUrl = window.location.href;\r\n    navigator.clipboard.writeText(currentUrl).then(() => {\r\n      const btn = document.getElementById('btn-share');\r\n      btn.innerText = translations[currentLang].copied;\r\n      btn.classList.add('success');\r\n      \r\n      setTimeout(() => {\r\n        btn.innerText = translations[currentLang].shareBtn;\r\n        btn.classList.remove('success');\r\n      }, 2000);\r\n    }).catch(err => {\r\n      console.error('Could not copy text: ', err);\r\n    });\r\n  }\r\n\r\n  function initializeFromUrl() {\r\n    const params = new URLSearchParams(window.location.search);\r\n    \r\n    \/\/ Handle Language from URL\r\n    const urlLang = params.get('lang');\r\n    if (urlLang === 'en' || urlLang === 'it') {\r\n      currentLang = urlLang;\r\n    }\r\n\r\n    \/\/ Handle Months from URL\r\n    const urlMonths = params.get('months');\r\n    if (urlMonths && [1, 2, 3, 4, 6, 12].includes(parseInt(urlMonths))) {\r\n      document.getElementById('months').value = urlMonths;\r\n    }\r\n\r\n    \/\/ Note: SQM is forced to 2, so reading it from URL is ignored to prevent overriding the restriction\r\n    \r\n    setLanguage(currentLang);\r\n  }\r\n\r\n  \/\/ Initialize on page load\r\n  initializeFromUrl();\r\n<\/script>","protected":false},"excerpt":{"rendered":"Torna ai Simulatori di Prezzo Price Simulators Offerte e Promo o vai al Simulatore Prezzo SelfStorage Lucca Arancio (1) o vai al Simulatore Prezzo SelfStorage Lucca Centro Storico (2) o vai al Simulatore Prezzo Posti Bici Self Bike Racks Lucca Centro Storico<p class=\"link-more\"><a class=\"myButt three\" href=\"https:\/\/boxalmetro.com\/web\/simulatore-prezzo-selfstorage-via-di-tiglio-43-lucca\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_joinchat":[],"footnotes":""},"class_list":["post-1448","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/boxalmetro.com\/web\/wp-json\/wp\/v2\/pages\/1448","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/boxalmetro.com\/web\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/boxalmetro.com\/web\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/boxalmetro.com\/web\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/boxalmetro.com\/web\/wp-json\/wp\/v2\/comments?post=1448"}],"version-history":[{"count":58,"href":"https:\/\/boxalmetro.com\/web\/wp-json\/wp\/v2\/pages\/1448\/revisions"}],"predecessor-version":[{"id":1867,"href":"https:\/\/boxalmetro.com\/web\/wp-json\/wp\/v2\/pages\/1448\/revisions\/1867"}],"wp:attachment":[{"href":"https:\/\/boxalmetro.com\/web\/wp-json\/wp\/v2\/media?parent=1448"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}