{"product_id":"marmoleum-vivace","title":"Marmoleum Vivace","description":"\u003cp\u003eEen levendig, sterk gemarmerd dessin met rijke kleurcontrasten en goede vuilverhullende eigenschappen.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eMerk: Forbo\u003c\/li\u003e\n\u003cli\u003eMateriaal: natuurlijk linoleum\u003c\/li\u003e\n\u003cli\u003eRolbreedte: 200 cm\u003c\/li\u003e\n\u003cli\u003eDikte: 2,5 mm\u003c\/li\u003e\n\u003cli\u003eRollengte: maximaal 32 meter\u003c\/li\u003e\n\u003cli\u003ePrijs per m2: € 46,90 incl. btw\u003c\/li\u003e\n\u003cli\u003ePrijs per strekkende meter (200 cm breed, 2 m2): € 93,80 incl. btw\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eBestellen kan per 5 cm lengte. De prijs per m2 en de totaalprijs worden bij het bestellen getoond. Marmoleum wordt geleverd op een rol van 200 cm breed; 1 strekkende meter is 2 m2 en kost € 93,80 incl. btw.\u003c\/p\u003e\u003cscript data-marmoleum-2m-calculator\u003e\n(function () {\n  function applyMarmoleumWidth() {\n    var calc = document.querySelector('carpet-length-calculator');\n    if (!calc || calc.dataset.marmoleumWidthPatched === 'true') return;\n    calc.dataset.marmoleumWidthPatched = 'true';\n    var intro = calc.querySelector('.floor-calculator__intro');\n    if (intro) intro.textContent = 'Het Marmoleum is 2 meter breed. Vul de lengte in strekkende meters in; bestellen kan per 5 cm.';\n    var areaOutput = calc.querySelector('[data-carpet-area]');\n    if (areaOutput \u0026\u0026 areaOutput.previousElementSibling) areaOutput.previousElementSibling.textContent = 'Oppervlakte bij 2 meter breed';\n    var input = calc.querySelector('[data-carpet-length]');\n    function sync() {\n      var raw = parseFloat((input \u0026\u0026 input.value || '').replace(',', '.'));\n      var quantity = document.querySelector('input[name=\"quantity\"]');\n      var form = quantity \u0026\u0026 quantity.form;\n      if (!form) return;\n      function setProperty(name, value) {\n        var field = form.querySelector('input[name=\"' + name + '\"]');\n        if (!field) {\n          field = document.createElement('input');\n          field.type = 'hidden';\n          field.name = name;\n          form.appendChild(field);\n        }\n        field.value = value;\n        field.setAttribute('value', value);\n      }\n      setProperty('properties[Breedte]', '2 meter');\n      if (!raw || raw \u003c= 0) return;\n      var units = Math.max(1, Math.ceil((raw * 20) - 0.000001));\n      var meters = units \/ 20;\n      quantity.value = String(units);\n      setProperty('properties[Lengte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters) + ' strekkende meter');\n      setProperty('properties[Oppervlakte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2');\n      if (areaOutput) areaOutput.textContent = new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2';\n      var total = calc.querySelector('[data-carpet-total]');\n      var priceCents = parseInt(calc.dataset.priceCents || '0', 10);\n      if (total \u0026\u0026 priceCents) total.textContent = new Intl.NumberFormat('nl-NL', { style: 'currency', currency: 'EUR' }).format((units * priceCents) \/ 100);\n    }\n    if (input) {\n      input.addEventListener('input', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('blur', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('change', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n    }\n    var quantity = document.querySelector('input[name=\"quantity\"]');\n    if (quantity \u0026\u0026 quantity.form) quantity.form.addEventListener('submit', sync, true);\n    document.addEventListener('submit', sync, true);\n    requestAnimationFrame(sync);\n    setTimeout(sync, 200);\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', applyMarmoleumWidth, { once: true });\n  } else {\n    applyMarmoleumWidth();\n  }\n  document.addEventListener('shopify:section:load', applyMarmoleumWidth);\n}());\n\u003c\/script\u003e","brand":"Forbo","offers":[{"title":"3405 Granada","offer_id":58460596928856,"sku":"FOR-MAR-VIVACE-3405","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3403 Asian tiger","offer_id":58460596961624,"sku":"FOR-MAR-VIVACE-3403","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3407 donkey island","offer_id":58460596994392,"sku":"FOR-MAR-VIVACE-3407","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3411 sunny day","offer_id":58460597027160,"sku":"FOR-MAR-VIVACE-3411","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3413 green melody","offer_id":58460597059928,"sku":"FOR-MAR-VIVACE-3413","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3420 surprising storm","offer_id":58460597092696,"sku":"FOR-MAR-VIVACE-3420","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3421 oyster mountain","offer_id":58460597125464,"sku":"FOR-MAR-VIVACE-3421","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3426 cork tree","offer_id":58460597158232,"sku":"FOR-MAR-VIVACE-3426","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3427 agate","offer_id":58460597191000,"sku":"FOR-MAR-VIVACE-3427","price":4.69,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1010\/7902\/3960\/files\/marmoleum-vivace-3405.webp?v=1789302247","url":"https:\/\/cachetvloershop.nl\/products\/marmoleum-vivace","provider":"Cachet vloershop","version":"1.0","type":"link"}