{"id":49021,"date":"2025-10-17T15:37:26","date_gmt":"2025-10-17T15:37:26","guid":{"rendered":"https:\/\/termotom.com\/?page_id=49021"},"modified":"2026-10-24T10:31:20","modified_gmt":"2026-10-24T10:31:20","slug":"konfigurator-fuer-polycarbonat-mehrstegplatten","status":"publish","type":"page","link":"https:\/\/termotom.com\/de\/dachkonfigurator\/konfigurator-fuer-polycarbonat-mehrstegplatten\/","title":{"rendered":"Konfigurator f\u00fcr Polycarbonat-Mehrstegplatten"},"content":{"rendered":"<!DOCTYPE html>\r\n<html lang=\"sl-SI\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Pomo\u010dnik za Ve\u010dslojne Plo\u0161\u010de<\/title>\r\n    <!-- Font Awesome for icons -->\r\n    <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/4.7.0\/css\/font-awesome.min.css\" integrity=\"sha512-SfTiTlX6kk+qitfevl\/7LibUOeJWlt9rbyDn92a1DqWOw9vWG2MFoays0sgObmWazO5BQPiFucnnEAjpAB+\/Sw==\" crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\" \/>\r\n    <style>\r\n        :root {\r\n            --primary-color: #c0cb30;\r\n            --secondary-color: #000000;\r\n            --text-color: #4e4f51;\r\n            --background-light: #f8f8f8;\r\n            --background-white: #ffffff;\r\n            --border-color: #e0e0e0;\r\n            --button-color: #D11D55;\r\n            --button-hover-color: #a71744;\r\n            --disabled-color: #cccccc;\r\n            --disabled-bg-color: #f5f5f5;\r\n            --font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, \"Open Sans\", \"Helvetica Neue\", sans-serif;\r\n            --info-color: #4e4f52; \/* Color for info texts *\/\r\n        }\r\n\r\n        body {\r\n            font-family: var(--font-family);\r\n            color: var(--text-color);\r\n            line-height: 1.6;\r\n            margin: 0;\r\n            padding: 20px;\r\n            background-color: var(--background-light);\r\n        }\r\n\r\n        #configurator-container {\r\n            max-width: 800px;\r\n            margin: 20px auto;\r\n            background-color: var(--background-white);\r\n            border-radius: 8px;\r\n            box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);\r\n            overflow: hidden;\r\n        }\r\n\r\n        .configurator-step {\r\n            display: none; \/* Hide steps by default *\/\r\n            padding: 30px;\r\n            border-bottom: 1px solid var(--border-color);\r\n            animation: fadeIn 0.5s ease-in-out;\r\n        }\r\n\r\n        .configurator-step:last-child {\r\n            border-bottom: none;\r\n        }\r\n\r\n        .configurator-step.active {\r\n            display: block;\r\n        }\r\n\r\n        h2, h3 {\r\n            color: var(--secondary-color);\r\n            margin-top: 0;\r\n            margin-bottom: 20px;\r\n            border-bottom: 2px solid var(--primary-color);\r\n            padding-bottom: 10px;\r\n        }\r\n\r\n        h3 {\r\n            font-size: 1.2em;\r\n            margin-bottom: 15px;\r\n            border-bottom: none; \/* Remove border for subheadings *\/\r\n             padding-bottom: 0;\r\n        }\r\n        h4 {\r\n             font-size: 1em;\r\n             margin-top: 25px;\r\n             margin-bottom: 10px;\r\n             color: var(--secondary-color);\r\n        }\r\n\r\n        p {\r\n            margin-bottom: 15px;\r\n        }\r\n\r\n        .option-group {\r\n            display: flex;\r\n            flex-wrap: wrap;\r\n            gap: 15px;\r\n            margin-bottom: 25px;\r\n        }\r\n\r\n        .option-button {\r\n            display: flex;\r\n            flex-direction: column;\r\n            align-items: center;\r\n            justify-content: flex-start; \/* Align content to the top *\/\r\n            padding: 5px;\r\n            border: 2px solid var(--border-color);\r\n            border-radius: 6px;\r\n            cursor: pointer;\r\n            transition: all 0.3s ease;\r\n            background-color: #fff;\r\n            text-align: center;\r\n            min-width: 120px;\r\n            min-height: 100px;\r\n            flex-grow: 1;\r\n            box-shadow: 0 2px 4px rgba(0,0,0,0.05);\r\n        }\r\n         .option-button.panel-count-btn {\r\n            min-width: 80px;\r\n            flex-grow: 0;\r\n         }\r\n\r\n        .option-button img {\r\n            max-width: 100%;\r\n            height: 120px;\r\n            object-fit: contain;\r\n            margin-bottom: 10px;\r\n            border-radius: 4px;\r\n        }\r\n\r\n        .option-button span {\r\n            font-weight: 600;\r\n            font-size: 0.9em;\r\n             margin-top: auto;\r\n             padding-top: 5px;\r\n             flex-grow: 1; \/* Pushes price info down *\/\r\n             display: flex;\r\n             align-items: center;\r\n             justify-content: center;\r\n        }\r\n        \r\n        .option-button .price-info {\r\n            font-size: 0.85em;\r\n            font-weight: normal;\r\n           \/* color: var(--button-color); *\/\r\n            margin-top: 5px;\r\n        }\r\n\r\n\r\n        .option-button:hover:not(.disabled) {\r\n            border-color: var(--primary-color);\r\n            box-shadow: 0 4px 8px rgba(0,0,0,0.1);\r\n            transform: translateY(-2px);\r\n        }\r\n\r\n        .option-button.selected {\r\n            border-color: var(--primary-color);\r\n            background-color: #f5f7dc;\r\n            box-shadow: 0 0 0 3px var(--primary-color);\r\n        }\r\n\r\n        .option-button.disabled {\r\n            cursor: not-allowed;\r\n            background-color: var(--disabled-bg-color);\r\n            color: #999;\r\n            opacity: 0.6;\r\n            box-shadow: none;\r\n            border-color: var(--border-color);\r\n        }\r\n         .option-button.disabled img {\r\n             filter: grayscale(100%);\r\n         }\r\n\r\n\r\n        .input-group {\r\n            margin-bottom: 10px;\r\n            display: flex;\r\n            flex-direction: column;\r\n            align-items: flex-start;\r\n        }\r\n        .input-group div {\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 5px;\r\n        }\r\n\r\n        .input-group label {\r\n            display: block;\r\n            margin-bottom: 8px;\r\n            font-weight: 600;\r\n            font-size: 0.9em;\r\n        }\r\n\r\n        .input-group input[type=\"number\"],\r\n        .input-group input[type=\"text\"] {\r\n            padding: 10px;\r\n            border: 1px solid var(--border-color);\r\n            border-radius: 4px;\r\n            font-size: 1em;\r\n            width: 120px;\r\n            box-sizing: border-box;\r\n        }\r\n\r\n        .input-group .unit {\r\n            color: #777;\r\n            margin-left: 0;\r\n        }\r\n        .input-group button {\r\n             margin-top: 10px;\r\n             padding: 8px 15px;\r\n             font-size: 0.9em;\r\n             background-color: #6c757d;\r\n             color: white;\r\n             border: none;\r\n             border-radius: 4px;\r\n             cursor: pointer;\r\n        }\r\n         .input-group button:hover {\r\n              background-color: #5a6268;\r\n         }\r\n\r\n        .calculation-result {\r\n             margin-top: 10px;\r\n             padding: 10px;\r\n             background-color: #e9f5e9;\r\n             border: 1px solid #c8e6c9;\r\n             border-left: 3px solid #4CAF50;\r\n             border-radius: 4px;\r\n             font-size: 0.95em;\r\n             color: #2e7d32;\r\n         }\r\n          .calculation-result strong {\r\n             color: #1b5e20;\r\n          }\r\n\r\n        .nav-buttons {\r\n            display: flex;\r\n            justify-content: space-between;\r\n            margin-top: 30px;\r\n            padding-top: 20px;\r\n            border-top: 1px solid var(--border-color);\r\n        }\r\n\r\n        .nav-buttons button {\r\n            padding: 12px 25px;\r\n            border: none;\r\n            border-radius: 5px;\r\n            cursor: pointer;\r\n            font-weight: bold;\r\n            font-size: 1em;\r\n            transition: background-color 0.3s ease;\r\n        }\r\n\r\n        .nav-buttons .prev-btn {\r\n            background-color: #6c757d;\r\n            color: white;\r\n        }\r\n        .nav-buttons .prev-btn:hover {\r\n            background-color: #5a6268;\r\n        }\r\n\r\n        .nav-buttons .next-btn, #start-configurator-btn, #reset-configurator-btn, #add-to-cart-btn, #show-accessories-btn, #finalize-accessories-btn {\r\n            background-color: var(--button-color);\r\n            color: white;\r\n        }\r\n        .nav-buttons .next-btn:hover, #start-configurator-btn:hover, #reset-configurator-btn:hover, #add-to-cart-btn:hover, #show-accessories-btn:hover, #finalize-accessories-btn:hover {\r\n            background-color: var(--button-hover-color);\r\n        }\r\n\r\n        .nav-buttons button:disabled {\r\n            background-color: var(--disabled-color);\r\n            cursor: not-allowed;\r\n            opacity: 0.7;\r\n        }\r\n\r\n        #summary-table, #summary-table-final {\r\n            width: 100%;\r\n            border-collapse: collapse;\r\n            margin-bottom: 20px;\r\n            font-size: 0.95em;\r\n        }\r\n\r\n        #summary-table th, #summary-table td,\r\n        #summary-table-final th, #summary-table-final td {\r\n            border: 1px solid var(--border-color);\r\n            padding: 10px;\r\n            text-align: left;\r\n            vertical-align: middle;\r\n        }\r\n\r\n        #summary-table th, #summary-table-final th {\r\n            background-color: var(--background-light);\r\n            font-weight: 600;\r\n            font-size: 0.85em;\r\n            text-transform: uppercase;\r\n             white-space: nowrap;\r\n        }\r\n        #summary-table td, #summary-table-final td {\r\n            font-size: 0.9em;\r\n        }\r\n        #summary-table img, #summary-table-final img {\r\n            max-width: 40px;\r\n            height: auto;\r\n            vertical-align: middle;\r\n            margin-right: 8px;\r\n            border: 1px solid var(--border-color);\r\n            border-radius: 3px;\r\n        }\r\n        #summary-table td:nth-child(4), #summary-table td:nth-child(5), #summary-table td:nth-child(6),\r\n        #summary-table-final td:nth-child(4), #summary-table-final td:nth-child(5), #summary-table-final td:nth-child(6) {\r\n            text-align: right;\r\n            white-space: nowrap;\r\n        }\r\n         #summary-table tfoot td, #summary-table-final tfoot td {\r\n              font-weight: bold;\r\n         }\r\n\r\n        .summary-total {\r\n            margin-top: 20px;\r\n            text-align: right;\r\n            font-size: 1.2em;\r\n            font-weight: bold;\r\n        }\r\n\r\n        .summary-total span {\r\n             color: var(--button-color);\r\n        }\r\n\r\n        .roof-sketch-container {\r\n            text-align: center;\r\n            margin-bottom: 20px;\r\n        }\r\n        #roof-sketch-length, #roof-sketch-width {\r\n            display: block;\r\n            margin: 10px auto;\r\n            border: 1px solid var(--border-color);\r\n            max-width: 100%;\r\n            height: auto;\r\n            background-color: #fff;\r\n        }\r\n\r\n        .explanation-text {\r\n            font-size: 0.9em;\r\n            color: #555;\r\n            margin-bottom: 15px;\r\n            background-color: #f0f0f0;\r\n            padding: 10px;\r\n            border-radius: 4px;\r\n            border-left: 3px solid var(--primary-color);\r\n        }\r\n        \r\n        #combination-choices .option-button {\r\n            flex-direction: row;\r\n            justify-content: flex-start;\r\n            align-items: center;\r\n            text-align: left;\r\n            flex-grow: 0;\r\n            width: 100%;\r\n        }\r\n        #combination-choices .option-button span {\r\n            margin: 0;\r\n            padding: 0;\r\n            font-weight: normal;\r\n        }\r\n\r\n        .step-indicator {\r\n            text-align: center;\r\n            margin-bottom: 20px;\r\n            font-size: 0.9em;\r\n            color: #777;\r\n        }\r\n\r\n        .price-suffix {\r\n             font-size: 0.8em;\r\n             color: #666;\r\n             margin-left: 4px;\r\n        }\r\n\r\n        .hidden {\r\n            display: none;\r\n        }\r\n         #custom-cut-section {\r\n             margin-top: 20px;\r\n             padding-top: 15px;\r\n             border-top: 1px dashed var(--border-color);\r\n         }\r\n         #custom-cut-section label {\r\n             font-weight: normal;\r\n             color: var(--info-color);\r\n         }\r\n         #custom-cut-section input {\r\n              margin-top: 5px;\r\n         }\r\n         #alu-profile-sub-options {\r\n             margin-top: 20px;\r\n             padding-top: 15px;\r\n             border-top: 1px dashed var(--border-color);\r\n         }\r\n\r\n\r\n        @keyframes fadeIn {\r\n            from { opacity: 0; transform: translateY(10px); }\r\n            to { opacity: 1; transform: translateY(0); }\r\n        }\r\n\r\n        \/* Responsive adjustments *\/\r\n        @media (max-width: 600px) {\r\n            body { padding: 10px; }\r\n            #configurator-container { margin: 10px auto; }\r\n            .configurator-step { padding: 15px; }\r\n            .option-group { gap: 10px; }\r\n            .option-button { min-width: 100px; padding: 10px; min-height: 80px;}\r\n            .option-button.panel-count-btn { min-width: 60px; padding: 8px 5px;}\r\n            .option-button img { height: 50px; }\r\n             .option-button span { font-size: 0.85em; }\r\n            .nav-buttons { flex-direction: column; gap: 10px;}\r\n            .nav-buttons button { width: 100%; }\r\n             .nav-buttons > div { width: 100%; display: flex; flex-direction: column; gap: 10px;}\r\n             .nav-buttons .prev-btn { order: 3; } \/* Move back button to bottom *\/\r\n            h2 { font-size: 1.2em; }\r\n            h3 { font-size: 1.05em; }\r\n             #summary-table th, #summary-table td, \r\n             #summary-table-final th, #summary-table-final td { padding: 6px; font-size: 0.8em; }\r\n             #summary-table img, #summary-table-final img { max-width: 30px;}\r\n            .input-group input[type=\"number\"], .input-group input[type=\"text\"] { width: 100px; }\r\n            .summary-total { font-size: 1.1em;}\r\n\r\n#summary-table, #summary-table-final {\r\n            display: block;\r\n            width: 100%;\r\n            overflow-x: auto;\r\n            -webkit-overflow-scrolling: touch; \/* Za bolj gladko drsenje na iOS *\/\r\n        }\r\n\r\n        }\r\n\t#type-options {\r\n    display: grid;\r\n    grid-template-columns: repeat(2, 1fr);\r\n    gap: 15px;\r\n}\r\n\r\n\t#thickness-options {\r\n    display: grid;\r\n    grid-template-columns: repeat(2, 1fr);\r\n    gap: 15px;\r\n}\r\n\r\n\t.undertypecolor {\r\n\tfont-size:0.9em;\r\n\tmargin-top:-10px;\r\n\tmargin-bottom:10px;\r\n}\r\n\r\n        \/* --- Dodani stili za trakove --- *\/\r\n        .option-button {\r\n            position: relative; \/* Nujno za pravilno pozicioniranje traku *\/\r\n            overflow: hidden;   \/* Skrije dele traku, ki segajo \u010dez rob gumba *\/\r\n        }\r\n\r\n        .ribbon {\r\n            position: absolute;\r\n            z-index: 1;\r\n            padding: 4px 0;\r\n            color: white;\r\n            font-size: 0.75em;\r\n            font-weight: bold;\r\n            text-align: center;\r\n            text-transform: uppercase;\r\n            letter-spacing: 0.5px;\r\n            width: 160px;\r\n            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25);\r\n        }\r\n\r\n        \/* Stil za trak v zgornjem desnem kotu *\/\r\n        .ribbon-top-right {\r\n            top: 26px;\r\n            right: -39px;\r\n            transform: rotate(45deg);\r\n        }\r\n\r\n        \/* Barve za razli\u010dne namene *\/\r\n        .ribbon-recommendation {\r\n            background-color: var(--button-color); \/* Uporabi glavno barvo gumbov *\/\r\n        }\r\n        .ribbon-purpose {\r\n            background-color: #28a745; \/* Zelena za namen uporabe *\/\r\n        }\r\n        .ribbon-purpose-alt {\r\n            background-color: #17a2b8; \/* Druga\u010dna barva za drug namen *\/\r\n        }\r\n\t\t\r\n\t\t\r\n\t\t#finalize-accessories-btn.is-loading,\r\n\t\t#add-to-cart-btn.is-loading {\r\n\t\t  position: relative;\r\n\t\t  opacity: .85;\r\n\t\t  cursor: wait;\r\n\t\t}\r\n\r\n\t\t#finalize-accessories-btn.is-loading::after,\r\n\t\t#add-to-cart-btn.is-loading::after {\r\n\t\t  content: \"\";\r\n\t\t  display: inline-block;\r\n\t\t  width: 14px;\r\n\t\t  height: 14px;\r\n\t\t  margin-left: 10px;\r\n\t\t  border: 2px solid rgba(255,255,255,.6);\r\n\t\t  border-top-color: rgba(255,255,255,1);\r\n\t\t  border-radius: 50%;\r\n\t\t  animation: kwspin .8s linear infinite;\r\n\t\t  vertical-align: -2px;\r\n\t\t}\r\n\r\n\t\t@keyframes kwspin {\r\n\t\t  to { transform: rotate(360deg); }\r\n\t\t}\r\n\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n\r\n<div id=\"configurator-container\">\r\n\r\n    <!-- Step 1: Introduction -->\r\n    <div id=\"step-1\" class=\"configurator-step active\">\r\n        <h2>Pomo\u010dnik za ve\u010dslojne plo\u0161\u010de<\/h2>\r\n        <p>Dobrodo\u0161li! Pomagali vam bomo sestaviti kosovnico materiala za va\u0161o novo streho ali nadstre\u0161ek iz ve\u010dslojnih polikarbonatnih plo\u0161\u010d.<\/p>\r\n        <p>Sledite korakom in na koncu boste prejeli podroben seznam potrebnega materiala z izra\u010dunanimi cenami.<\/p>\r\n        <div class=\"nav-buttons\" style=\"justify-content: flex-end;\">\r\n            <button id=\"start-configurator-btn\" class=\"next-btn\" onclick=\"nextStep()\">Za\u010dni<\/button>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Step 2: Choose Panel Type, Color, Thickness -->\r\n    <div id=\"step-2\" class=\"configurator-step\">\r\n        <div class=\"step-indicator\">Korak 1 od 9<\/div>\r\n        <h2>Izberite lastnosti plo\u0161\u010de<\/h2>\r\n        <p>Izberite tip, barvo oziroma strukturo in debelino plo\u0161\u010de. Izbirate lahko samo med mo\u017enimi kombinacijami.<\/p>\r\n        \r\n        <h4>Tip plo\u0161\u010de<\/h4>\r\n        <div class=\"option-group\" id=\"type-options\"><\/div>\r\n\r\n        <h4>Barva in struktura plo\u0161\u010de<\/h4>\r\n\t<div class=\"undertypecolor\">Vse plo\u0161\u010de prepu\u0161\u010dajo svetlobo. Barvne plo\u0161\u010de so svetlobno manj prepustne, X struktura doda plo\u0161\u010di trdnost, siva in sen\u010dna plo\u0161\u010da pa \u0161e dodatno \u0161\u010ditita proti premo\u010dnemu soncu.<\/div>\r\n        <div class=\"option-group\" id=\"color-options\"><\/div>\r\n\r\n        <h4>Debelina plo\u0161\u010de<\/h4>\r\n\t<div class=\"undertypecolor\">Tanj\u0161e plo\u0161\u010de 4 mm do 8 mm najpogosteje uporabljamo za rastlinjake, tople grede. Plo\u0161\u010de 10 mm in 16 mm so najpogostej\u0161a izbira za stre\u0161no kritino. Najdebelej\u0161e plo\u0161\u010de, 20 mm, 25 mm in 32 mm pa omogo\u010dijo ve\u010djo trdnost kritine (ve\u010dje razdalje med nosilci) in ve\u010djo izolativnost za predelne stene in fasade.<\/div>\r\n        <div class=\"option-group\" id=\"thickness-options\"><\/div>\r\n\r\n        <div class=\"nav-buttons\">\r\n            <button class=\"prev-btn\" onclick=\"prevStep()\">Nazaj<\/button>\r\n            <button class=\"next-btn\" onclick=\"nextStep()\" disabled>Naprej<\/button>\r\n        <\/div>\r\n    <\/div>\r\n    \r\n    <!-- Step 3: Choose Length -->\r\n    <div id=\"step-3\" class=\"configurator-step\">\r\n        <div class=\"step-indicator\">Korak 2 od 9<\/div>\r\n        <h2>Izberite dol\u017eino plo\u0161\u010d<\/h2>\r\n        <p>Dol\u017eina plo\u0161\u010de ustreza razdalji od slemena do kapa va\u0161e strehe (glej skico).<\/p>\r\n        <div class=\"roof-sketch-container\">\r\n             <canvas id=\"roof-sketch-length\" width=\"400\" height=\"200\"><\/canvas>\r\n        <\/div>\r\n        <p>Izberite eno od standardnih dol\u017ein ali vpi\u0161ite svojo \u017eeleno dol\u017eino v centimetrih.<\/p>\r\n        <div class=\"input-group\">\r\n            <label for=\"custom-length\">Vpi\u0161ite dol\u017eino (od slemena do kapa):<\/label>\r\n            <div>\r\n                <input type=\"number\" id=\"custom-length\" placeholder=\"Npr. 320\" min=\"1\">\r\n                <span class=\"unit\">cm<\/span>\r\n                 <button onclick=\"selectCustomLength()\">Izra\u010dunaj potrebno dol\u017eino<\/button>\r\n            <\/div>\r\n             <div id=\"length-result\" class=\"calculation-result hidden\"><\/div>\r\n        <\/div>\r\n         <h4>Standardne dol\u017eine:<\/h4>\r\n        <div class=\"option-group\" id=\"length-options\"><\/div>\r\n         <div id=\"custom-cut-section\" class=\"input-group hidden\">\r\n             <hr style=\"width:100%; border-top: 1px dashed var(--border-color); margin: 15px 0;\">\r\n             <label for=\"custom-cut-length\">\u017delena dol\u017eina odreza (neobvezno):<\/label>\r\n             <p class=\"explanation-text\" style=\"font-size: 0.85em; margin-top: 0;\">\u010ce \u017eelite, da vam plo\u0161\u010de brezpla\u010dno odre\u017eemo na to\u010dno mero, jo vpi\u0161ite tukaj. Izbrana bo prva ve\u010dja standardna plo\u0161\u010da, ki jo bomo nato odrezali. \u010ce pustite prazno, boste prejeli izbrano standardno dol\u017eino.<\/p>\r\n             <div>\r\n                 <input type=\"number\" id=\"custom-cut-length\" placeholder=\"Npr. 315\" min=\"1\">\r\n                 <span class=\"unit\">cm<\/span>\r\n                  <button onclick=\"setCustomCut()\" style=\"margin-left: 10px;\">Potrdi odrez<\/button>\r\n             <\/div>\r\n             <div id=\"custom-cut-info\" style=\"font-size: 0.9em; color: var(--info-color); margin-top: 5px;\"><\/div>\r\n         <\/div>\r\n        <div class=\"nav-buttons\">\r\n            <button class=\"prev-btn\" onclick=\"prevStep()\">Nazaj<\/button>\r\n            <button class=\"next-btn\" onclick=\"nextStep()\" disabled>Naprej<\/button>\r\n        <\/div>\r\n    <\/div>\r\n    \r\n    <!-- Step 4: Choose Width \/ Number of Panels -->\r\n    <div id=\"step-4\" class=\"configurator-step\">\r\n        <div class=\"step-indicator\">Korak 3 od 9<\/div>\r\n        <h2>Dolo\u010dite \u0161irino strehe<\/h2>\r\n        <div class=\"roof-sketch-container\">\r\n             <canvas id=\"roof-sketch-width\" width=\"400\" height=\"200\"><\/canvas>\r\n        <\/div>\r\n    \r\n        <div id=\"panel-width-info\" class=\"explanation-text\"><\/div>\r\n    \r\n        <div class=\"input-group\">\r\n            <label for=\"custom-width\">Vpi\u0161ite skupno \u0161irino va\u0161e strehe:<\/label>\r\n            <div>\r\n                <input type=\"number\" id=\"custom-width\" placeholder=\"Npr. 480\" min=\"1\">\r\n                <span class=\"unit\">cm<\/span>\r\n                <button onclick=\"calculateWidthCombination()\">Izra\u010dunaj kombinacijo plo\u0161\u010d<\/button>\r\n            <\/div>\r\n            <div id=\"width-result\" class=\"calculation-result hidden\"><\/div>\r\n        <\/div>\r\n    \r\n        <div id=\"combination-options\" class=\"hidden\">\r\n            <h4>Izberite \u017eeleno kombinacijo plo\u0161\u010d:<\/h4>\r\n            <p class=\"explanation-text\" style=\"font-size: 0.85em;\">Predlagamo kombinacije, ki z najmanj\u0161im prese\u017ekom pokrijejo va\u0161o vpisano \u0161irino.<\/p>\r\n            <div class=\"option-group\" id=\"combination-choices\"><\/div>\r\n        <\/div>\r\n        \r\n        <div id=\"legacy-panel-count-section\" class=\"hidden\">\r\n             <h4>Izberite \u0161tevilo plo\u0161\u010d:<\/h4>\r\n             <div class=\"option-group\" id=\"panel-count-options\"><\/div>\r\n        <\/div>\r\n    \r\n        <div class=\"nav-buttons\">\r\n            <button class=\"prev-btn\" onclick=\"prevStep()\">Nazaj<\/button>\r\n            <button class=\"next-btn\" onclick=\"nextStep()\" disabled>Naprej<\/button>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Step 5: Choose Construction Type -->\r\n    <div id=\"step-5\" class=\"configurator-step\">\r\n         <div class=\"step-indicator\">Korak 4 od 9<\/div>\r\n        <h2>Izberite vrsto nosilne konstrukcije<\/h2>\r\n        <p>Izberite material va\u0161e nosilne konstrukcije (les ali kovina), da dolo\u010dimo ustrezne vijake.<\/p>\r\n        <div class=\"option-group\" id=\"construction-options\"><\/div>\r\n        <div class=\"nav-buttons\">\r\n            <button class=\"prev-btn\" onclick=\"prevStep()\">Nazaj<\/button>\r\n            <button class=\"next-btn\" onclick=\"nextStep();\" disabled>Naprej<\/button>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Step 6: Choose Profile Type -->\r\n    <div id=\"step-6\" class=\"configurator-step\">\r\n        <div class=\"step-indicator\">Korak 5 od 9<\/div>\r\n        <h2>Izberite vrsto profilov za spajanje<\/h2>\r\n        <p>Izberite med cenej\u0161imi polikarbonatnimi profili ali kvalitetnej\u0161imi in trajnej\u0161imi aluminijastimi profili.<\/p>\r\n        <div class=\"option-group\" id=\"profile-type-options\"><\/div>\r\n        <div id=\"alu-profile-sub-options\" class=\"hidden\">\r\n            <h4>Kako potekajo va\u0161i nosilci?<\/h4>\r\n            <p>Ta izbira dolo\u010da, ali potrebujete vezne profile (za pre\u010dne nosilce) ali kombinacijo zgornjih profilov in podlo\u017ene gume (za vzdol\u017ene nosilce).<\/p>\r\n            <div class=\"option-group\" id=\"alu-direction-options\"><\/div>\r\n            <div id=\"alu-width-warning\" class=\"hidden\" style=\"margin-top: 15px; padding: 10px; background-color: #fff9e6; border: 1px solid #ffecb3; border-radius: 4px;\">\r\n                <p class=\"explanation-text\" style=\"background: none; border: none; padding: 0; margin-bottom: 10px;\">\r\n                    Za monta\u017eo s pokrivnimi profili morajo biti va\u0161i vzdol\u017eni nosilci (\u0161pirovci) \u0161iroki vsaj 50mm. \u010ce so o\u017eji, boste morali uporabiti vezne profile.\r\n                <\/p>\r\n                <label>\r\n                    <input type=\"checkbox\" id=\"narrow-beam-checkbox\" onclick=\"handleNarrowBeamCheck(this)\"> Moji nosilci so o\u017eji od 50mm.\r\n                <\/label>\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"nav-buttons\">\r\n            <button class=\"prev-btn\" onclick=\"prevStep()\">Nazaj<\/button>\r\n            <button class=\"next-btn\" onclick=\"nextStep();\" disabled>Naprej<\/button>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Step 7: Screws -->\r\n    <div id=\"step-7\" class=\"configurator-step\">\r\n        <div class=\"step-indicator\">Korak 6 od 9<\/div>\r\n        <h2>Pritrdilni material<\/h2>\r\n        <p>Glede na va\u0161e izbire smo pripravili predlog potrebnega pritrdilnega materiala.<\/p>\r\n        <p class=\"explanation-text\">\u0160tevilo vijakov, profilov, tesnil in drugega pritrdilnega materiala je izra\u010dunano glede na povr\u0161ino in \u0161tevilo plo\u0161\u010d in vrsto izbranih profilov.<\/p>\r\n        <div id=\"screw-info-result\"><\/div>\r\n        <div class=\"nav-buttons\">\r\n            <button class=\"prev-btn\" onclick=\"prevStep()\">Nazaj<\/button>\r\n            <button class=\"next-btn\" onclick=\"generateSummary(true); nextStep();\">Prika\u017ei povzetek<\/button>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Step 8: Initial Summary -->\r\n    <div id=\"step-8\" class=\"configurator-step\">\r\n        <div class=\"step-indicator\">Korak 7 od 9<\/div>\r\n        <h2>Povzetek va\u0161e izbire<\/h2>\r\n        <p>Preglejte izbrane artikle in koli\u010dine. S klikom na gumb \"Nadaljuj\" lahko osnovno ponudbo \u0161e prilagodite in artikle dodate v ko\u0161arico spletne trgovine, preverite mo\u017enosti dostave in pla\u010dil.<\/p>\r\n        <table id=\"summary-table\">\r\n            <thead>\r\n                <tr>\r\n                    <th>Artikel<\/th>\r\n                    <th>Slika<\/th>\r\n                    <th>Lastnosti<\/th>\r\n                    <th style=\"text-align: right;\">Koli\u010dina<\/th>\r\n                    <th style=\"text-align: right;\">Cena\/enoto<\/th>\r\n                    <th style=\"text-align: right;\">Skupaj<\/th>\r\n                <\/tr>\r\n            <\/thead>\r\n            <tbody><\/tbody>\r\n            <tfoot><\/tfoot>\r\n        <\/table>\r\n\r\n        <div class=\"nav-buttons\">\r\n            <button class=\"prev-btn\" onclick=\"prevStep()\">Nazaj (Uredi)<\/button>\r\n            <div>\r\n                 <button id=\"reset-configurator-btn\" onclick=\"resetConfigurator()\" style=\"background-color: #6c757d; margin-right: 10px;\">Izberi ponovno<\/button>\r\n                 <button id=\"show-accessories-btn\" onclick=\"showAccessoryStep()\">Nadaljuj<\/button>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Step 9: Accessories -->\r\n    <div id=\"step-9\" class=\"configurator-step\">\r\n        <div class=\"step-indicator\">Korak 8 od 9<\/div>\r\n        <h2>Dodatne Mo\u017enosti in Opcijske izbire<\/h2>\r\n        <p>Izberite dodatno opremo za va\u0161e naro\u010dilo. Povzetek se bo sproti posodabljal.<\/p>\r\n        \r\n        <div id=\"accessory-options-container\"><\/div>\r\n\r\n        <div class=\"nav-buttons\">\r\n             <button class=\"prev-btn\" onclick=\"showStep(8);\">Nazaj na povzetek<\/button>\r\n             <button id=\"finalize-accessories-btn\" onclick=\"finalizeAccessories()\">Prika\u017ei posodobljen povzetek<\/button>\r\n        <\/div>\r\n    <\/div>\r\n    \r\n    <!-- Step 10: Final Summary -->\r\n    <div id=\"step-10\" class=\"configurator-step\">\r\n        <div class=\"step-indicator\">Korak 9 od 9<\/div>\r\n        <h2>Kon\u010dni povzetek<\/h2>\r\n        <p>Preglejte kon\u010dno kosovnico, vklju\u010dno z dodatno opremo. Pripravljeni ste za oddajo naro\u010dila.<\/p>\r\n        <table id=\"summary-table-final\">\r\n            <thead>\r\n                <tr>\r\n                    <th>Artikel<\/th>\r\n                    <th>Slika<\/th>\r\n                    <th>Lastnosti<\/th>\r\n                    <th style=\"text-align: right;\">Koli\u010dina<\/th>\r\n                    <th style=\"text-align: right;\">Cena\/enoto<\/th>\r\n                    <th style=\"text-align: right;\">Skupaj<\/th>\r\n                <\/tr>\r\n            <\/thead>\r\n            <tbody><\/tbody>\r\n            <tfoot><\/tfoot>\r\n        <\/table>\r\n    \r\n        <div class=\"nav-buttons\">\r\n            <button class=\"prev-btn\" onclick=\"showStep(9)\">Nazaj (Dodatki)<\/button>\r\n            <div>\r\n                 <button id=\"reset-configurator-btn-final\" onclick=\"resetConfigurator()\" style=\"background-color: #6c757d; margin-right: 10px;\">Izberi ponovno<\/button>\r\n                 <button id=\"add-to-cart-btn\" onclick=\"addToCart()\">Dodaj v ko\u0161arico<\/button>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n\r\n<\/div>\r\n\r\n<script>\r\n    const productData = {\r\n        panels: {\r\n            'standard': {\r\n                'prozorna': {\r\n                    4: { productId: 14322, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-4.5-mm-2\u00d7UV-prozorna-scaled.jpg' },\r\n                    10: { productId: 14377, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-STANDARD-deb.-10-mm-1\u00d7UV-prozorna-1-1-scaled.jpg' },\r\n                    16: { productId: 14507, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-16-mm-2\u00d7UV-prozorna-2-1-scaled.jpg' },\r\n                },\r\n                'mlecna_opal': {\r\n                  \/*  10: { productId: 14421, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-10-mm-2\u00d7UV-mlecna-2-1-scaled.jpg' }, *\/\r\n                },\r\n                'mlecna_opal_x_struktura': { \/\/ MOVED FROM mlecna_opal\r\n                    16: { productId: 14543, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-STANDARD-deb.-16-mm-1\u00d7UV-mlecnaopal-1-scaled.jpg' },\r\n                },\r\n                'rjava_bronze': {\r\n                    10: { productId: 14453, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-STANDARD-deb.-10-mm-1\u00d7UV-rjava-1-scaled.jpg' },\r\n                    16: { productId: 14575, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-STANDARD-deb.-16-mm-1\u00d7UV-rjava-1-scaled.jpg' },\r\n                }\r\n            },\r\n            'lexan': {\r\n                'prozorna': {\r\n                    4.5: { productId: 14329, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-4.5-mm-2\u00d7UV-prozorna-scaled.jpg' },\r\n                    6: { productId: 14340, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-6-mm-2\u00d7UV-prozorna-2-1-scaled.jpg' },\r\n                    8: { productId: 14370, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-6-mm-2\u00d7UV-prozorna-2-1-scaled.jpg' },\r\n                    10: { productId: 14393, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-10-mm-2\u00d7UV-prozorna-1-scaled.jpg' },\r\n                    16: { productId: 14516, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-16-mm-2\u00d7UV-prozorna-2-1-scaled.jpg' },\r\n                },\r\n                'prozorna_x_struktura': {\r\n                    16: { productId: 14626, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-16-mm-X-struktura-2\u00d7UV-prozorna-1-scaled.jpg' },\r\n                    20: { productId: 14662, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-20-mm-2\u00d7UV-prozorna-1-2-scaled.jpg' },\r\n                    25: { productId: 14679, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-20-mm-2\u00d7UV-prozorna-1-2-scaled.jpg' }, \r\n                    32: { productId: 14696, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-32-mm-2\u00d7UV-prozorna-1-1-scaled.jpg' },\r\n                },\r\n                'mlecna_opal': {\r\n                    6: { productId: 14350, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-6-mm-2\u00d7UV-mlecna-2-1-scaled.jpg' },\r\n                    10: { productId: 14428, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-10-mm-2\u00d7UV-mlecna-2-1-scaled.jpg' },\r\n                    16: { productId: 14550, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-16-mm-2\u00d7UV-mlecna-1-1-scaled.jpg' },\r\n                },\r\n                'mlecna_opal_x_struktura': {\r\n                    16: { productId: 18594, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-STANDARD-deb.-16-mm-1\u00d7UV-mlecnaopal-1-scaled.jpg' }\r\n                },\r\n                'rjava_bronze': {\r\n                    6: { productId: 14360, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-6-mm-2\u00d7UV-rjava-1-1-scaled.jpg' },\r\n                    10: { productId: 14484, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-10-mm-2\u00d7UV-rjava-1-1-scaled.jpg' },\r\n                    16: { productId: 14582, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-16-mm-2\u00d7UV-rjava-1-1-scaled.jpg' },\r\n                },\r\n                'siva_solar_control': {\r\n                    10: { productId: 14460, image: 'https:\/\/termotom.com\/wp-content\/uploads\/BST_7226.jpg' },\r\n                    16: { productId: 14602, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-deb.-16-mm-2\u00d7UV-siva-solar-control-1-scaled.jpg' },\r\n                },\r\n                 'temno_modra': {\r\n                    10: { productId: 18533, image: 'https:\/\/termotom.com\/wp-content\/uploads\/ChatGPT-Image-15.-maj-2025-08_47_14.png' }\r\n                }\r\n            },\r\n            'premium': {\r\n                'prozorna': {\r\n                    16: { productId: 14646, image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-PREMIUM-deb.-16-mm-2\u00d7UV-prozorna-1-scaled.jpg' },\r\n                }\r\n            },\r\n            'sencena': {\r\n                'prozorna_sencena': {\r\n                    16: { productId: 18652, image: 'https:\/\/termotom.com\/wp-content\/uploads\/polikarbonatna-plosca-sencena.png' },\r\n                }\r\n            }\r\n        },\r\n        variations: {\r\n            14322: [{\"id\":14323,\"dim\":\"2100x1000\",\"price\":15.25},{\"id\":14324,\"dim\":\"2100x2000\",\"price\":30.49},{\"id\":14325,\"dim\":\"2100x3000\",\"price\":45.74},{\"id\":14326,\"dim\":\"2100x4000\",\"price\":60.98},{\"id\":14327,\"dim\":\"2100x5000\",\"price\":76.23},{\"id\":14328,\"dim\":\"2100x6000\",\"price\":91.48}],\r\n            14329: [{\"id\":14330,\"dim\":\"2100x1000\",\"price\":21.19},{\"id\":14331,\"dim\":\"2100x1500\",\"price\":31.78},{\"id\":14332,\"dim\":\"2100x2000\",\"price\":42.38},{\"id\":14333,\"dim\":\"2100x2500\",\"price\":52.97},{\"id\":14334,\"dim\":\"2100x3000\",\"price\":63.57},{\"id\":14335,\"dim\":\"2100x3500\",\"price\":74.16},{\"id\":14336,\"dim\":\"2100x4000\",\"price\":84.76},{\"id\":14337,\"dim\":\"2100x4500\",\"price\":95.35},{\"id\":14338,\"dim\":\"2100x5000\",\"price\":105.95},{\"id\":14339,\"dim\":\"2100x6000\",\"price\":127.13}],\r\n            14340: [{\"id\":14341,\"dim\":\"2100x1000\",\"price\":27.55},{\"id\":14342,\"dim\":\"2100x1500\",\"price\":41.33},{\"id\":14343,\"dim\":\"2100x2000\",\"price\":55.1},{\"id\":14344,\"dim\":\"2100x2500\",\"price\":68.88},{\"id\":14345,\"dim\":\"2100x3000\",\"price\":82.66},{\"id\":14346,\"dim\":\"2100x3500\",\"price\":96.43},{\"id\":14347,\"dim\":\"2100x4000\",\"price\":110.21},{\"id\":14348,\"dim\":\"2100x4500\",\"price\":123.98},{\"id\":14349,\"dim\":\"2100x6000\",\"price\":165.31}],\r\n            14350: [{\"id\":14351,\"dim\":\"2100x1000\",\"price\":30.3},{\"id\":14352,\"dim\":\"2100x1500\",\"price\":45.45},{\"id\":14353,\"dim\":\"2100x2000\",\"price\":60.61},{\"id\":14354,\"dim\":\"2100x2500\",\"price\":75.76},{\"id\":14355,\"dim\":\"2100x3000\",\"price\":90.91},{\"id\":14356,\"dim\":\"2100x3500\",\"price\":106.06},{\"id\":14357,\"dim\":\"2100x4000\",\"price\":121.21},{\"id\":14358,\"dim\":\"2100x4500\",\"price\":136.36},{\"id\":14359,\"dim\":\"2100x6000\",\"price\":181.82}],\r\n            14360: [{\"id\":14361,\"dim\":\"2100x1000\",\"price\":30.3},{\"id\":14362,\"dim\":\"2100x1500\",\"price\":45.45},{\"id\":14363,\"dim\":\"2100x2000\",\"price\":60.61},{\"id\":14364,\"dim\":\"2100x2500\",\"price\":75.76},{\"id\":14365,\"dim\":\"2100x3000\",\"price\":90.91},{\"id\":14366,\"dim\":\"2100x3500\",\"price\":106.06},{\"id\":14367,\"dim\":\"2100x4000\",\"price\":121.21},{\"id\":14368,\"dim\":\"2100x4500\",\"price\":136.36},{\"id\":14369,\"dim\":\"2100x6000\",\"price\":181.82}],\r\n            14370: [{\"id\":14371,\"dim\":\"2100x1000\",\"price\":31.79},{\"id\":14372,\"dim\":\"2100x2000\",\"price\":63.59},{\"id\":14373,\"dim\":\"2100x3000\",\"price\":95.38},{\"id\":14374,\"dim\":\"2100x4000\",\"price\":127.18},{\"id\":14375,\"dim\":\"2100x4500\",\"price\":143.07},{\"id\":14376,\"dim\":\"2100x6000\",\"price\":190.76}],\r\n            14377: [{\"id\":14380,\"dim\":\"1250x1000\",\"price\":19.3},{\"id\":14381,\"dim\":\"1250x2000\",\"price\":38.6},{\"id\":14382,\"dim\":\"1250x3000\",\"price\":57.9},{\"id\":14383,\"dim\":\"1250x4000\",\"price\":77.2},{\"id\":14384,\"dim\":\"1250x5000\",\"price\":96.5},{\"id\":14385,\"dim\":\"1250x6000\",\"price\":115.8},{\"id\":14386,\"dim\":\"2100x1000\",\"price\":32.42},{\"id\":14387,\"dim\":\"2100x2000\",\"price\":64.85},{\"id\":14388,\"dim\":\"2100x3000\",\"price\":97.27},{\"id\":14389,\"dim\":\"2100x4000\",\"price\":129.7},{\"id\":14390,\"dim\":\"2100x5000\",\"price\":162.12},{\"id\":14391,\"dim\":\"2100x6000\",\"price\":194.54},{\"id\":14392,\"dim\":\"2100x7000\",\"price\":226.97}],\r\n            14393: [{\"id\":14396,\"dim\":\"1200x1000\",\"price\":20.58},{\"id\":14397,\"dim\":\"1200x1500\",\"price\":30.87},{\"id\":14398,\"dim\":\"1200x2000\",\"price\":41.16},{\"id\":14399,\"dim\":\"1200x2500\",\"price\":51.45},{\"id\":14400,\"dim\":\"1200x3000\",\"price\":61.74},{\"id\":14401,\"dim\":\"1200x3500\",\"price\":72.03},{\"id\":14402,\"dim\":\"1200x4000\",\"price\":82.32},{\"id\":14403,\"dim\":\"1200x4500\",\"price\":92.61},{\"id\":14404,\"dim\":\"1200x5000\",\"price\":102.9},{\"id\":14405,\"dim\":\"1200x6000\",\"price\":123.48},{\"id\":14406,\"dim\":\"1200x7000\",\"price\":144.06},{\"id\":14407,\"dim\":\"2100x500\",\"price\":18.01},{\"id\":14408,\"dim\":\"2100x1000\",\"price\":36.02},{\"id\":14409,\"dim\":\"2100x1500\",\"price\":54.02},{\"id\":14410,\"dim\":\"2100x2000\",\"price\":72.03},{\"id\":14411,\"dim\":\"2100x2500\",\"price\":90.04},{\"id\":14412,\"dim\":\"2100x3000\",\"price\":108.05},{\"id\":14413,\"dim\":\"2100x3500\",\"price\":126.05},{\"id\":14414,\"dim\":\"2100x4000\",\"price\":144.06},{\"id\":14415,\"dim\":\"2100x4500\",\"price\":162.07},{\"id\":14416,\"dim\":\"2100x5000\",\"price\":180.08},{\"id\":14417,\"dim\":\"2100x5500\",\"price\":198.08},{\"id\":14418,\"dim\":\"2100x6000\",\"price\":216.09},{\"id\":14419,\"dim\":\"2100x7000\",\"price\":252.11},{\"id\":14420,\"dim\":\"2100x9000\",\"price\":324.14}],\r\n            14421: [{\"id\":14423,\"dim\":\"2100x1000\",\"price\":35.66},{\"id\":14424,\"dim\":\"2100x2000\",\"price\":71.32},{\"id\":14425,\"dim\":\"2100x3000\",\"price\":106.97},{\"id\":14426,\"dim\":\"2100x4000\",\"price\":142.63},{\"id\":14427,\"dim\":\"2100x6000\",\"price\":213.95}],\r\n            14428: [{\"id\":14430,\"dim\":\"1200x1000\",\"price\":22.64},{\"id\":14431,\"dim\":\"1200x1500\",\"price\":33.97},{\"id\":14432,\"dim\":\"1200x2000\",\"price\":45.29},{\"id\":14433,\"dim\":\"1200x2500\",\"price\":56.61},{\"id\":14434,\"dim\":\"1200x3000\",\"price\":67.93},{\"id\":14435,\"dim\":\"1200x3500\",\"price\":79.25},{\"id\":14436,\"dim\":\"1200x4000\",\"price\":90.58},{\"id\":14437,\"dim\":\"1200x4500\",\"price\":101.9},{\"id\":14438,\"dim\":\"1200x6000\",\"price\":135.86},{\"id\":14439,\"dim\":\"2100x500\",\"price\":19.81},{\"id\":14440,\"dim\":\"2100x1000\",\"price\":39.63},{\"id\":14441,\"dim\":\"2100x1500\",\"price\":59.44},{\"id\":14442,\"dim\":\"2100x2000\",\"price\":79.25},{\"id\":14443,\"dim\":\"2100x2500\",\"price\":99.07},{\"id\":14444,\"dim\":\"2100x3000\",\"price\":118.88},{\"id\":14445,\"dim\":\"2100x3500\",\"price\":138.69},{\"id\":14446,\"dim\":\"2100x4000\",\"price\":158.51},{\"id\":14447,\"dim\":\"2100x4500\",\"price\":178.32},{\"id\":14448,\"dim\":\"2100x5000\",\"price\":198.14},{\"id\":14449,\"dim\":\"2100x5500\",\"price\":217.95},{\"id\":14450,\"dim\":\"2100x6000\",\"price\":237.76},{\"id\":14451,\"dim\":\"2100x7000\",\"price\":277.39},{\"id\":14452,\"dim\":\"2100x9000\",\"price\":356.64}],\r\n            14453: [{\"id\":14455,\"dim\":\"2100x1000\",\"price\":35.66},{\"id\":14456,\"dim\":\"2100x2000\",\"price\":71.32},{\"id\":14457,\"dim\":\"2100x3000\",\"price\":106.97},{\"id\":14458,\"dim\":\"2100x4000\",\"price\":142.63},{\"id\":14459,\"dim\":\"2100x6000\",\"price\":213.95}],\r\n            14460: [{\"id\":14462,\"dim\":\"1050x1000\",\"price\":20.71},{\"id\":14463,\"dim\":\"1050x2000\",\"price\":41.41},{\"id\":14464,\"dim\":\"1050x3000\",\"price\":62.12},{\"id\":14465,\"dim\":\"1050x4000\",\"price\":82.82},{\"id\":14466,\"dim\":\"1050x5000\",\"price\":103.53},{\"id\":14467,\"dim\":\"1050x6000\",\"price\":124.24},{\"id\":14468,\"dim\":\"1050x7000\",\"price\":144.94},{\"id\":14469,\"dim\":\"1050x9000\",\"price\":186.35},{\"id\":14470,\"dim\":\"2100x500\",\"price\":20.71},{\"id\":14471,\"dim\":\"2100x1000\",\"price\":41.41},{\"id\":14472,\"dim\":\"2100x1500\",\"price\":62.12},{\"id\":14473,\"dim\":\"2100x2000\",\"price\":82.82},{\"id\":14474,\"dim\":\"2100x2500\",\"price\":103.53},{\"id\":14475,\"dim\":\"2100x3000\",\"price\":124.24},{\"id\":14476,\"dim\":\"2100x3500\",\"price\":144.94},{\"id\":14477,\"dim\":\"2100x4000\",\"price\":165.65},{\"id\":14478,\"dim\":\"2100x4500\",\"price\":186.35},{\"id\":14479,\"dim\":\"2100x5000\",\"price\":207.06},{\"id\":14480,\"dim\":\"2100x5500\",\"price\":227.77},{\"id\":14481,\"dim\":\"2100x6000\",\"price\":248.47},{\"id\":14482,\"dim\":\"2100x7000\",\"price\":289.88},{\"id\":14483,\"dim\":\"2100x9000\",\"price\":372.71}],\r\n            14484: [{\"id\":14486,\"dim\":\"1200x1000\",\"price\":22.64},{\"id\":14487,\"dim\":\"1200x1500\",\"price\":33.97},{\"id\":14488,\"dim\":\"1200x2000\",\"price\":45.29},{\"id\":14489,\"dim\":\"1200x2500\",\"price\":56.61},{\"id\":14490,\"dim\":\"1200x3000\",\"price\":67.93},{\"id\":14491,\"dim\":\"1200x3500\",\"price\":79.25},{\"id\":14492,\"dim\":\"1200x4000\",\"price\":90.58},{\"id\":14493,\"dim\":\"1200x4500\",\"price\":101.9},{\"id\":14494,\"dim\":\"1200x6000\",\"price\":135.86},{\"id\":14495,\"dim\":\"2100x500\",\"price\":19.81},{\"id\":14496,\"dim\":\"2100x1000\",\"price\":39.63},{\"id\":14497,\"dim\":\"2100x1500\",\"price\":59.44},{\"id\":14498,\"dim\":\"2100x2000\",\"price\":79.25},{\"id\":14499,\"dim\":\"2100x2500\",\"price\":99.07},{\"id\":14500,\"dim\":\"2100x3000\",\"price\":118.88},{\"id\":14501,\"dim\":\"2100x3500\",\"price\":138.69},{\"id\":14502,\"dim\":\"2100x4000\",\"price\":158.51},{\"id\":14503,\"dim\":\"2100x4500\",\"price\":178.32},{\"id\":14504,\"dim\":\"2100x5000\",\"price\":198.14},{\"id\":14505,\"dim\":\"2100x6000\",\"price\":237.76},{\"id\":14506,\"dim\":\"2100x7000\",\"price\":277.39}],\r\n            14507: [{\"id\":14509,\"dim\":\"2100x1000\",\"price\":51.49},{\"id\":14510,\"dim\":\"2100x2000\",\"price\":102.98},{\"id\":14511,\"dim\":\"2100x3000\",\"price\":154.48},{\"id\":14512,\"dim\":\"2100x4000\",\"price\":205.97},{\"id\":14513,\"dim\":\"2100x5000\",\"price\":257.46},{\"id\":14514,\"dim\":\"2100x6000\",\"price\":308.95},{\"id\":14515,\"dim\":\"2100x7000\",\"price\":360.44}],\r\n            14516: [{\"id\":14518,\"dim\":\"1200x1000\",\"price\":32.69},{\"id\":14519,\"dim\":\"1200x1500\",\"price\":49.03},{\"id\":14520,\"dim\":\"1200x2000\",\"price\":65.38},{\"id\":14521,\"dim\":\"1200x2500\",\"price\":81.72},{\"id\":14522,\"dim\":\"1200x3000\",\"price\":98.06},{\"id\":14523,\"dim\":\"1200x3500\",\"price\":114.41},{\"id\":14524,\"dim\":\"1200x4000\",\"price\":130.75},{\"id\":14525,\"dim\":\"1200x4500\",\"price\":147.1},{\"id\":14526,\"dim\":\"1200x5000\",\"price\":163.44},{\"id\":14527,\"dim\":\"1200x6000\",\"price\":196.13},{\"id\":14528,\"dim\":\"1200x7000\",\"price\":228.82},{\"id\":14529,\"dim\":\"2100x500\",\"price\":28.6},{\"id\":14530,\"dim\":\"2100x1000\",\"price\":57.2},{\"id\":14531,\"dim\":\"2100x1500\",\"price\":85.81},{\"id\":14532,\"dim\":\"2100x2000\",\"price\":114.41},{\"id\":14533,\"dim\":\"2100x2500\",\"price\":143.01},{\"id\":14534,\"dim\":\"2100x3000\",\"price\":171.61},{\"id\":14535,\"dim\":\"2100x3500\",\"price\":200.21},{\"id\":14536,\"dim\":\"2100x4000\",\"price\":228.82},{\"id\":14537,\"dim\":\"2100x4500\",\"price\":257.42},{\"id\":14538,\"dim\":\"2100x5000\",\"price\":286.02},{\"id\":14539,\"dim\":\"2100x5500\",\"price\":314.62},{\"id\":14540,\"dim\":\"2100x6000\",\"price\":343.22},{\"id\":14541,\"dim\":\"2100x7000\",\"price\":400.43},{\"id\":14542,\"dim\":\"2100x9000\",\"price\":514.84}],\r\n            14543: [{\"id\":14545,\"dim\":\"2100x1000\",\"price\":56.64},{\"id\":14546,\"dim\":\"2100x2000\",\"price\":113.27},{\"id\":14547,\"dim\":\"2100x3000\",\"price\":169.91},{\"id\":14548,\"dim\":\"2100x4000\",\"price\":226.55},{\"id\":14549,\"dim\":\"2100x6000\",\"price\":339.82}],\r\n            14550: [{\"id\":14552,\"dim\":\"1200x1000\",\"price\":35.95},{\"id\":14553,\"dim\":\"1200x1500\",\"price\":53.93},{\"id\":14554,\"dim\":\"1200x2000\",\"price\":71.9},{\"id\":14555,\"dim\":\"1200x2500\",\"price\":89.88},{\"id\":14556,\"dim\":\"1200x3000\",\"price\":107.86},{\"id\":14557,\"dim\":\"1200x3500\",\"price\":125.83},{\"id\":14558,\"dim\":\"1200x4000\",\"price\":143.81},{\"id\":14559,\"dim\":\"1200x4500\",\"price\":161.78},{\"id\":14560,\"dim\":\"1200x6000\",\"price\":215.71},{\"id\":14561,\"dim\":\"2100x500\",\"price\":31.46},{\"id\":14562,\"dim\":\"2100x1000\",\"price\":62.92},{\"id\":14563,\"dim\":\"2100x1500\",\"price\":94.37},{\"id\":14564,\"dim\":\"2100x2000\",\"price\":125.83},{\"id\":14565,\"dim\":\"2100x2500\",\"price\":157.29},{\"id\":14566,\"dim\":\"2100x3000\",\"price\":188.75},{\"id\":14567,\"dim\":\"2100x3500\",\"price\":220.21},{\"id\":14568,\"dim\":\"2100x4000\",\"price\":251.66},{\"id\":14569,\"dim\":\"2100x4500\",\"price\":283.12},{\"id\":14570,\"dim\":\"2100x5000\",\"price\":314.58},{\"id\":14571,\"dim\":\"2100x5500\",\"price\":346.04},{\"id\":14572,\"dim\":\"2100x6000\",\"price\":377.5},{\"id\":14573,\"dim\":\"2100x7000\",\"price\":440.41},{\"id\":14574,\"dim\":\"2100x9000\",\"price\":566.24}],\r\n            14575: [{\"id\":14577,\"dim\":\"2100x1000\",\"price\":56.64},{\"id\":14578,\"dim\":\"2100x2000\",\"price\":113.27},{\"id\":14579,\"dim\":\"2100x3000\",\"price\":169.91},{\"id\":14580,\"dim\":\"2100x4000\",\"price\":226.55},{\"id\":14581,\"dim\":\"2100x6000\",\"price\":339.82}],\r\n            14582: [{\"id\":14584,\"dim\":\"1050x1000\",\"price\":31.46},{\"id\":14585,\"dim\":\"1050x2000\",\"price\":62.92},{\"id\":14586,\"dim\":\"1050x3000\",\"price\":94.37},{\"id\":14587,\"dim\":\"1050x4000\",\"price\":125.83},{\"id\":14588,\"dim\":\"1050x6000\",\"price\":188.75},{\"id\":14589,\"dim\":\"1050x7000\",\"price\":220.21},{\"id\":14590,\"dim\":\"2100x500\",\"price\":31.46},{\"id\":14591,\"dim\":\"2100x1000\",\"price\":62.92},{\"id\":14592,\"dim\":\"2100x1500\",\"price\":94.37},{\"id\":14593,\"dim\":\"2100x2000\",\"price\":125.83},{\"id\":14594,\"dim\":\"2100x2500\",\"price\":157.29},{\"id\":14595,\"dim\":\"2100x3000\",\"price\":188.75},{\"id\":14596,\"dim\":\"2100x3500\",\"price\":220.21},{\"id\":14597,\"dim\":\"2100x4000\",\"price\":251.66},{\"id\":14598,\"dim\":\"2100x4500\",\"price\":283.12},{\"id\":14599,\"dim\":\"2100x5000\",\"price\":314.58},{\"id\":14600,\"dim\":\"2100x6000\",\"price\":377.5},{\"id\":14601,\"dim\":\"2100x7000\",\"price\":440.41}],\r\n            14602: [{\"id\":14604,\"dim\":\"1050x1000\",\"price\":32.90},{\"id\":14605,\"dim\":\"1050x2000\",\"price\":65.79},{\"id\":14606,\"dim\":\"1050x3000\",\"price\":98.69},{\"id\":14607,\"dim\":\"1050x4000\",\"price\":131.59},{\"id\":14608,\"dim\":\"1050x5000\",\"price\":164.48},{\"id\":14609,\"dim\":\"1050x6000\",\"price\":197.38},{\"id\":14610,\"dim\":\"1050x7000\",\"price\":230.28},{\"id\":14611,\"dim\":\"1050x9000\",\"price\":296.07},{\"id\":14612,\"dim\":\"2100x500\",\"price\":32.90},{\"id\":14613,\"dim\":\"2100x1000\",\"price\":65.79},{\"id\":14614,\"dim\":\"2100x1500\",\"price\":98.69},{\"id\":14615,\"dim\":\"2100x2000\",\"price\":131.59},{\"id\":14616,\"dim\":\"2100x2500\",\"price\":164.48},{\"id\":14617,\"dim\":\"2100x3000\",\"price\":197.38},{\"id\":14618,\"dim\":\"2100x3500\",\"price\":230.28},{\"id\":14619,\"dim\":\"2100x4000\",\"price\":263.17},{\"id\":14620,\"dim\":\"2100x4500\",\"price\":296.07},{\"id\":14621,\"dim\":\"2100x5000\",\"price\":328.97},{\"id\":14622,\"dim\":\"2100x5500\",\"price\":361.86},{\"id\":14623,\"dim\":\"2100x6000\",\"price\":394.76},{\"id\":14624,\"dim\":\"2100x7000\",\"price\":460.55},{\"id\":14625,\"dim\":\"2100x9000\",\"price\":592.14}],\r\n            14626: [{\"id\":14628,\"dim\":\"1050x1000\",\"price\":29.14},{\"id\":14629,\"dim\":\"1050x2000\",\"price\":58.28},{\"id\":14630,\"dim\":\"1050x3000\",\"price\":87.41},{\"id\":14631,\"dim\":\"1050x4000\",\"price\":116.55},{\"id\":14632,\"dim\":\"1050x6000\",\"price\":174.83},{\"id\":14633,\"dim\":\"1050x7000\",\"price\":203.96},{\"id\":14634,\"dim\":\"2100x500\",\"price\":29.14},{\"id\":14635,\"dim\":\"2100x1000\",\"price\":58.28},{\"id\":14636,\"dim\":\"2100x1500\",\"price\":87.41},{\"id\":14637,\"dim\":\"2100x2000\",\"price\":116.55},{\"id\":14638,\"dim\":\"2100x2500\",\"price\":145.69},{\"id\":14639,\"dim\":\"2100x3000\",\"price\":174.83},{\"id\":14640,\"dim\":\"2100x3500\",\"price\":203.96},{\"id\":14641,\"dim\":\"2100x4000\",\"price\":233.1},{\"id\":14642,\"dim\":\"2100x4500\",\"price\":262.24},{\"id\":14643,\"dim\":\"2100x5000\",\"price\":291.38},{\"id\":14644,\"dim\":\"2100x6000\",\"price\":349.65},{\"id\":14645,\"dim\":\"2100x7000\",\"price\":407.93}],\r\n            14646: [{\"id\":14649,\"dim\":\"980x1000\",\"price\":35.59},{\"id\":14650,\"dim\":\"980x1500\",\"price\":53.39},{\"id\":14651,\"dim\":\"980x2000\",\"price\":71.19},{\"id\":14652,\"dim\":\"980x2500\",\"price\":88.98},{\"id\":14653,\"dim\":\"980x3000\",\"price\":106.78},{\"id\":14654,\"dim\":\"980x3500\",\"price\":124.58},{\"id\":14655,\"dim\":\"980x4000\",\"price\":142.37},{\"id\":14656,\"dim\":\"980x4500\",\"price\":160.17},{\"id\":14657,\"dim\":\"980x5000\",\"price\":177.97},{\"id\":14658,\"dim\":\"980x5500\",\"price\":195.76},{\"id\":14659,\"dim\":\"980x6000\",\"price\":213.56},{\"id\":14660,\"dim\":\"980x7000\",\"price\":249.16},{\"id\":14661,\"dim\":\"980x9000\",\"price\":320.34}],\r\n            14662: [{\"id\":14664,\"dim\":\"1050x1000\",\"price\":33.9},{\"id\":14665,\"dim\":\"1050x2000\",\"price\":67.81},{\"id\":14666,\"dim\":\"1050x3000\",\"price\":101.71},{\"id\":14667,\"dim\":\"1050x4000\",\"price\":135.62},{\"id\":14668,\"dim\":\"1050x6000\",\"price\":203.43},{\"id\":14669,\"dim\":\"2100x500\",\"price\":33.9},{\"id\":14670,\"dim\":\"2100x1000\",\"price\":67.81},{\"id\":14671,\"dim\":\"2100x1500\",\"price\":101.71},{\"id\":14672,\"dim\":\"2100x2000\",\"price\":135.62},{\"id\":14673,\"dim\":\"2100x2500\",\"price\":169.52},{\"id\":14674,\"dim\":\"2100x3000\",\"price\":203.43},{\"id\":14675,\"dim\":\"2100x3500\",\"price\":237.33},{\"id\":14676,\"dim\":\"2100x4000\",\"price\":271.24},{\"id\":14677,\"dim\":\"2100x4500\",\"price\":305.14},{\"id\":14678,\"dim\":\"2100x6000\",\"price\":406.85}],\r\n            14679: [{\"id\":14681,\"dim\":\"1050x1000\",\"price\":36.03},{\"id\":14682,\"dim\":\"1050x2000\",\"price\":72.05},{\"id\":14683,\"dim\":\"1050x3000\",\"price\":108.08},{\"id\":14684,\"dim\":\"1050x4000\",\"price\":144.1},{\"id\":14685,\"dim\":\"1050x7000\",\"price\":252.18},{\"id\":14686,\"dim\":\"2100x500\",\"price\":36.03},{\"id\":14687,\"dim\":\"2100x1000\",\"price\":72.05},{\"id\":14688,\"dim\":\"2100x1500\",\"price\":108.08},{\"id\":14689,\"dim\":\"2100x2000\",\"price\":144.1},{\"id\":14690,\"dim\":\"2100x2500\",\"price\":180.13},{\"id\":14691,\"dim\":\"2100x3000\",\"price\":216.15},{\"id\":14692,\"dim\":\"2100x3500\",\"price\":252.18},{\"id\":14693,\"dim\":\"2100x4000\",\"price\":288.2},{\"id\":14694,\"dim\":\"2100x4500\",\"price\":324.23},{\"id\":14695,\"dim\":\"2100x7000\",\"price\":504.36}],\r\n            14696: [{\"id\":14698,\"dim\":\"1200x500\",\"price\":23},{\"id\":14699,\"dim\":\"1200x1000\",\"price\":46.01},{\"id\":14700,\"dim\":\"1200x1500\",\"price\":69.01},{\"id\":14701,\"dim\":\"1200x2000\",\"price\":92.02},{\"id\":14702,\"dim\":\"1200x2500\",\"price\":115.02},{\"id\":14703,\"dim\":\"1200x3000\",\"price\":138.02},{\"id\":14704,\"dim\":\"1200x3500\",\"price\":161.03},{\"id\":14705,\"dim\":\"1200x4000\",\"price\":184.03},{\"id\":14706,\"dim\":\"1200x4500\",\"price\":207.04},{\"id\":14707,\"dim\":\"1200x6000\",\"price\":276.05},{\"id\":14708,\"dim\":\"1200x7000\",\"price\":322.06}],\r\n            18533: [{\"id\":18543,\"dim\":\"2100x500\",\"price\":20.71},{\"id\":18544,\"dim\":\"2100x1000\",\"price\":41.41},{\"id\":18545,\"dim\":\"2100x1500\",\"price\":62.12},{\"id\":18546,\"dim\":\"2100x2000\",\"price\":82.82},{\"id\":18547,\"dim\":\"2100x2500\",\"price\":103.53},{\"id\":18548,\"dim\":\"2100x3000\",\"price\":124.24},{\"id\":18549,\"dim\":\"2100x3500\",\"price\":144.94},{\"id\":18550,\"dim\":\"2100x4000\",\"price\":165.65},{\"id\":18551,\"dim\":\"2100x4500\",\"price\":186.35},{\"id\":18552,\"dim\":\"2100x5000\",\"price\":207.06},{\"id\":18553,\"dim\":\"2100x6000\",\"price\":248.47}],\r\n            18594: [{\"id\":18640,\"dim\":\"2100x500\",\"price\":32.06},{\"id\":18641,\"dim\":\"2100x1000\",\"price\":64.11},{\"id\":18642,\"dim\":\"2100x1500\",\"price\":96.17},{\"id\":18643,\"dim\":\"2100x2000\",\"price\":128.23},{\"id\":18644,\"dim\":\"2100x2500\",\"price\":160.28},{\"id\":18645,\"dim\":\"2100x3000\",\"price\":192.34},{\"id\":18646,\"dim\":\"2100x3500\",\"price\":224.4},{\"id\":18647,\"dim\":\"2100x4000\",\"price\":256.45},{\"id\":18648,\"dim\":\"2100x4500\",\"price\":288.51},{\"id\":18649,\"dim\":\"2100x5000\",\"price\":320.57},{\"id\":18650,\"dim\":\"2100x6000\",\"price\":384.68},{\"id\":18966,\"dim\":\"2100x5500\",\"price\":352.62},{\"id\":18967,\"dim\":\"2100x7000\",\"price\":448.79},{\"id\":18968,\"dim\":\"2100x9000\",\"price\":577.02}],\r\n            18652: [{\"id\":18675,\"dim\":\"1200x500\",\"price\":18.8},{\"id\":18666,\"dim\":\"1200x1000\",\"price\":37.6},{\"id\":18667,\"dim\":\"1200x1500\",\"price\":56.39},{\"id\":18668,\"dim\":\"1200x2000\",\"price\":75.19},{\"id\":18669,\"dim\":\"1200x2500\",\"price\":93.99},{\"id\":18670,\"dim\":\"1200x3000\",\"price\":112.79},{\"id\":18672,\"dim\":\"1200x3500\",\"price\":131.59},{\"id\":18673,\"dim\":\"1200x4000\",\"price\":150.38},{\"id\":18674,\"dim\":\"1200x4500\",\"price\":169.18},{\"id\":18676,\"dim\":\"1200x5000\",\"price\":187.98},{\"id\":18677,\"dim\":\"1200x6000\",\"price\":225.58},{\"id\":18678,\"dim\":\"1200x7000\",\"price\":263.17},{\"id\":18679,\"dim\":\"1200x9000\",\"price\":338.36}]\r\n        },\r\n        accessories: {\r\n            poly_h_profile: { '4': 14144, '6': 14150, '8': 14156, '10': 14162, '16': 14168 },\r\n            poly_u_profile: { '4': 14201, '4.5': 14201, '6': 14202, '8': 14203, '10': 14204, '16': 14205 },\r\n            poly_u_profile_variations: {\r\n                 14201: { price: 1.89, length: 2100, name: 'Polikarbonatni U profil za 4 mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/LPU_6MM.jpg' },\r\n                 14202: { price: 2.10, length: 2100, name: 'Polikarbonatni U profil za 6 mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/LPU_6MM.jpg' },\r\n                 14203: { price: 2.31, length: 2100, name: 'Polikarbonatni U profil za 8 mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/LPU_8MM.jpg' },\r\n                 14204: { price: 2.52, length: 2100, name: 'Polikarbonatni U profil za 10 mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/LPU_10MM.jpg' },\r\n                 14205: { price: 3.57, length: 2100, name: 'Polikarbonatni U profil za 16 mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/LPU_16MM.jpg' },\r\n            },\r\n            poly_h_profile_variations: {\r\n                14144: [{\"id\":14145,\"len\":1000,\"price\":2.5},{\"id\":14146,\"len\":2000,\"price\":5},{\"id\":14147,\"len\":3000,\"price\":7.5},{\"id\":14148,\"len\":4000,\"price\":10},{\"id\":14149,\"len\":6000,\"price\":15}],\r\n                14150: [{\"id\":14151,\"len\":1000,\"price\":2.9},{\"id\":14152,\"len\":2000,\"price\":5.8},{\"id\":14153,\"len\":3000,\"price\":8.7},{\"id\":14154,\"len\":4000,\"price\":11.6},{\"id\":14155,\"len\":6000,\"price\":17.4}],\r\n                14156: [{\"id\":14157,\"len\":1000,\"price\":3.5},{\"id\":14158,\"len\":2000,\"price\":7},{\"id\":14159,\"len\":3000,\"price\":10.5},{\"id\":14160,\"len\":4000,\"price\":14},{\"id\":14161,\"len\":6000,\"price\":21}],\r\n                14162: [{\"id\":14163,\"len\":1000,\"price\":3.8},{\"id\":14164,\"len\":2000,\"price\":7.6},{\"id\":14165,\"len\":3000,\"price\":11.4},{\"id\":14166,\"len\":4000,\"price\":15.2},{\"id\":14167,\"len\":6000,\"price\":22.8}],\r\n                14168: [{\"id\":14169,\"len\":1000,\"price\":6.9},{\"id\":14170,\"len\":2000,\"price\":13.8},{\"id\":14171,\"len\":3000,\"price\":20.7},{\"id\":14172,\"len\":4000,\"price\":27.6},{\"id\":14173,\"len\":6000,\"price\":41.4}],\r\n            },\r\n            alu_joining_profile: { id: 17802, name: 'Alu dvojni vezni profil', img: 'https:\/\/termotom.com\/wp-content\/uploads\/ALU_VEZNI_S_TESNILI-scaled-1.jpg' },\r\n            alu_top_profile: { id: 14082, name: 'Alu pokrivni profil 60mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/POKRIVNI_60MM.jpg' },\r\n            alu_top_profile_50mm: { id: 14071, name: 'Alu pokrivni profil 50mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/50MM_POKRIVNI.jpg' },\r\n            alu_top_profile_80mm: { id: 14096, name: 'Alu pokrivni profil 80mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/POKRIVNI_80MM.jpg' },\r\n            alu_l_profile_end_cap: { id: 18790, name: 'Aluminijast L profil, zaklju\u010dni element', img: 'https:\/\/termotom.com\/wp-content\/uploads\/81.jpg', price: 0.50 },\r\n            alu_rubber_gasket: { id: 14107, name: 'Podlo\u017ena guma 60mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/GUMA_PODLOZNA_60.jpg' },\r\n            alu_rubber_gasket_50mm: { id: 16198, name: 'Podlo\u017ena guma 50mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/GUMA_PODLOZNA_50.jpg' },\r\n            alu_rubber_gasket_80mm: { id: 14108, name: 'Podlo\u017ena guma 80mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/GUMA_PODLOZNA_80-scaled.jpg' },\r\n            alu_drip_profile: {\r\n                '6': { id: 14206, name: 'Alu odkapni profil za 6 mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/ODKAPNIK_6MM.jpg' },\r\n                '8': { id: 14210, name: 'Alu odkapni profil za 8 mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/ODKAPNIK_8MM.jpg' },\r\n                '10': { id: 14214, name: 'Alu odkapni profil za 10 mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/ODKAPNIK_10MM.jpg' },\r\n                '16': { id: 14218, name: 'Alu odkapni profil za 16 mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/ODKAPNIK_16MM.jpg' },\r\n                '20': { id: 14222, name: 'Alu odkapni profil za 20 mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/ODKAPNIK_20MM.jpg' },\r\n                '25': { id: 14226, name: 'Alu odkapni profil za 25 mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/ODKAPNIK_20MM.jpg' },\r\n                '32': { id: 14230, name: 'Alu odkapni profil za 32 mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/ODKAPNIK_32MM.jpg' }\r\n            },\r\n            anti_dust_tape: {\r\n                '4-10': { perforated: 14308, non_perforated: 14309, img: 'https:\/\/termotom.com\/wp-content\/uploads\/XC-2977_barvna-scaled.jpg' },\r\n                '16-25': { perforated: 14310, non_perforated: 14311, img: 'https:\/\/termotom.com\/wp-content\/uploads\/XC-2977_barvna-scaled.jpg' },\r\n                '32-50': { perforated: 14312, non_perforated: 14313, img: 'https:\/\/termotom.com\/wp-content\/uploads\/XC-2977_barvna-scaled.jpg' },\r\n                 variations: {\r\n                     14308: {price: 19.80, length: 33},\r\n                     14309: {price: 19.80, length: 33},\r\n                     14310: {price: 23.10, length: 33},\r\n                     14311: {price: 23.10, length: 33},\r\n                     14312: {price: 47.08, length: 33},\r\n                     14313: {price: 60.00, length: 50},\r\n                 }\r\n            },\r\n             screws: {\r\n                wood: {\r\n                    fi19: [\r\n                        { id: 20967, length: 50, price: 21, perSet: 50, name: 'Vijak lesni 6,5x50 fi19' },\r\n                        { id: 20971, length: 75, price: 27.5, perSet: 50, name: 'Vijak lesni 6,5x75 fi19' }\r\n                    ],\r\n                    fi29: [\r\n                        { id: 20969, length: 50, price: 32.5, perSet: 50, name: 'Vijak lesni 6,5x50 fi29' },\r\n                        { id: 20973, length: 75, price: 39, perSet: 50, name: 'Vijak lesni 6,5x75 fi29' }\r\n                    ]\r\n                },\r\n                metal: {\r\n                    fi19: [\r\n                        { id: 20957, length: 32, price: 18.5, perSet: 50, name: 'Vijak kovinski 6,3x32 fi19' },\r\n                        { id: 20961, length: 50, price: 21, perSet: 50, name: 'Vijak kovinski 6,3x50 fi19' },\r\n                        { id: 20965, length: 64, price: 25, perSet: 50, name: 'Vijak kovinski 6,3x64 fi19' }\r\n                    ],\r\n                    fi29: [\r\n                        { id: 20959, length: 32, price: 30, perSet: 50, name: 'Vijak kovinski 6,3x32 fi29' },\r\n                        { id: 20963, length: 50, price: 32.5, perSet: 50, name: 'Vijak kovinski 6,3x50 fi29' }\r\n                    ]\r\n                },\r\n                img: 'https:\/\/termotom.com\/wp-content\/uploads\/Vijak-lesni-fi19.jpg'\r\n            },\r\n            alu_cover_profile_53mm: { id: 14109, name: 'Alu okrasni pokrov 53mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/OKRASNI_POKROV_50MM.jpg' },\r\n            alu_cover_profile_63mm: { id: 14120, name: 'Alu okrasni pokrov 63mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/OKRASNI_POKROV_60MM.jpg' },\r\n            alu_cover_profile_83mm: { id: 14132, name: 'Alu okrasni pokrov 83mm', img: 'https:\/\/termotom.com\/wp-content\/uploads\/OKRASNI_POKROV_80MM.jpg' },\r\n            drobni_material: { id: 14321, price: 24.75, name: 'Drobni monta\u017eni material', img: 'https:\/\/termotom.com\/wp-content\/uploads\/MONTAZNI_MATERIAL_KOMPLET1.jpg' },\r\n            silikonski_kit: { id: 14314, price: 11.95, name: 'Silikon, brezkislinski, za polikarbonat', img: 'https:\/\/termotom.com\/wp-content\/uploads\/silikon-ottoseal-scaled.jpg' },\r\n            silikonski_trak: { id: 18854, price: 53.40, name: 'Silikonski trak PU8137, 30m', img: 'https:\/\/termotom.com\/wp-content\/uploads\/91.jpg'},\r\n            fi50_washers: {\r\n                10: {\r\n                    siva: { id: 14315, price: 7.00, perSet: 10, name: 'Podlo\u017eka fi 50 mm (10mm, siva)', img: 'https:\/\/termotom.com\/wp-content\/uploads\/Termotom_produkti15.jpg' },\r\n                    rjava: { id: 14316, price: 7.00, perSet: 10, name: 'Podlo\u017eka fi 50 mm (10mm, rjava)', img: 'https:\/\/termotom.com\/wp-content\/uploads\/SPC.jpg' },\r\n                    bela: { id: 16197, price: 7.00, perSet: 10, name: 'Podlo\u017eka fi 50 mm (10mm, bela)', img: 'https:\/\/termotom.com\/wp-content\/uploads\/Termotom_produkti14.jpg' }\r\n                },\r\n                16: {\r\n                    bela: { id: 14317, price: 7.00, perSet: 10, name: 'Podlo\u017eka fi 50 mm (16mm, bela)', img: 'https:\/\/termotom.com\/wp-content\/uploads\/Termotom_produkti14.jpg' },\r\n                    siva: { id: 14318, price: 7.00, perSet: 10, name: 'Podlo\u017eka fi 50 mm (16mm, siva)', img: 'https:\/\/termotom.com\/wp-content\/uploads\/Termotom_produkti15.jpg' },\r\n                    rjava: { id: 14319, price: 7.00, perSet: 10, name: 'Podlo\u017eka fi 50 mm (16mm, rjava)', img: 'https:\/\/termotom.com\/wp-content\/uploads\/SPC.jpg' }\r\n                }\r\n            }\r\n        }\r\n    };\r\n    \r\n    const accessoryVariations = {\r\n        14071: [{\"id\":14072,\"len\":1000,\"price\":7.59},{\"id\":14073,\"len\":1500,\"price\":11.39},{\"id\":14074,\"len\":2000,\"price\":15.18},{\"id\":14075,\"len\":2500,\"price\":18.98},{\"id\":14076,\"len\":3000,\"price\":22.77},{\"id\":14077,\"len\":3500,\"price\":26.57},{\"id\":14078,\"len\":4000,\"price\":30.36},{\"id\":14079,\"len\":4500,\"price\":37.95},{\"id\":14080,\"len\":6000,\"price\":45.54},{\"id\":14081,\"len\":7000,\"price\":53.13}],\r\n        16198: [{\"id\":16199,\"len\":1000,\"price\":2.75},{\"id\":16200,\"len\":2000,\"price\":5.5},{\"id\":16201,\"len\":3000,\"price\":8.25},{\"id\":16202,\"len\":4000,\"price\":11},{\"id\":16203,\"len\":5000,\"price\":13.75},{\"id\":16204,\"len\":6000,\"price\":16.5},{\"id\":16205,\"len\":7000,\"price\":19.25},{\"id\":16206,\"len\":10000,\"price\":27.5},{\"id\":16207,\"len\":30000,\"price\":82.5}],\r\n        17802: [{\"id\":17803,\"len\":1000,\"price\":16.37},{\"id\":17804,\"len\":1500,\"price\":24.56},{\"id\":17805,\"len\":2000,\"price\":32.74},{\"id\":17806,\"len\":2500,\"price\":40.93},{\"id\":17807,\"len\":3000,\"price\":49.11},{\"id\":17808,\"len\":3500,\"price\":57.3},{\"id\":17809,\"len\":4000,\"price\":65.48},{\"id\":17810,\"len\":4500,\"price\":73.67},{\"id\":17811,\"len\":5000,\"price\":81.85},{\"id\":17812,\"len\":5500,\"price\":90.04},{\"id\":17813,\"len\":6000,\"price\":98.22},{\"id\":17814,\"len\":7000,\"price\":114.59},{\"id\":17815,\"len\":9000,\"price\":147.33}],\r\n        14082: [{\"id\":14083,\"len\":1000,\"price\":9.47},{\"id\":14084,\"len\":1500,\"price\":14.21},{\"id\":14085,\"len\":2000,\"price\":18.94},{\"id\":14086,\"len\":2500,\"price\":23.68},{\"id\":14087,\"len\":3000,\"price\":28.41},{\"id\":14088,\"len\":3500,\"price\":33.15},{\"id\":14089,\"len\":4000,\"price\":37.88},{\"id\":14090,\"len\":4500,\"price\":42.62},{\"id\":14091,\"len\":5000,\"price\":47.35},{\"id\":14092,\"len\":5500,\"price\":52.09},{\"id\":14093,\"len\":6000,\"price\":56.82},{\"id\":14094,\"len\":7000,\"price\":66.29},{\"id\":14095,\"len\":9000,\"price\":85.23}],\r\n        14096: [{\"id\":14097,\"len\":1000,\"price\":12.41},{\"id\":14098,\"len\":1500,\"price\":18.62},{\"id\":14099,\"len\":2000,\"price\":24.82},{\"id\":14100,\"len\":2500,\"price\":31.03},{\"id\":14101,\"len\":3000,\"price\":37.23},{\"id\":14102,\"len\":3500,\"price\":43.44},{\"id\":14103,\"len\":4000,\"price\":49.64},{\"id\":14104,\"len\":5000,\"price\":62.05},{\"id\":14105,\"len\":6000,\"price\":74.46},{\"id\":14106,\"len\":7000,\"price\":86.87}],\r\n        14107: [{\"id\":16163,\"len\":1000,\"price\":3.03},{\"id\":16164,\"len\":2000,\"price\":6.06},{\"id\":16165,\"len\":3000,\"price\":9.09},{\"id\":16166,\"len\":4000,\"price\":12.12},{\"id\":16167,\"len\":5000,\"price\":15.15},{\"id\":16168,\"len\":6000,\"price\":18.18},{\"id\":16169,\"len\":7000,\"price\":21.21},{\"id\":16170,\"len\":10000,\"price\":30.3},{\"id\":16171,\"len\":30000,\"price\":90.9}],\r\n        14108: [{\"id\":16172,\"len\":1000,\"price\":3.49},{\"id\":16173,\"len\":2000,\"price\":6.98},{\"id\":16174,\"len\":3000,\"price\":10.47},{\"id\":16175,\"len\":4000,\"price\":13.96},{\"id\":16176,\"len\":5000,\"price\":17.45},{\"id\":16177,\"len\":6000,\"price\":20.94},{\"id\":16178,\"len\":7000,\"price\":24.43},{\"id\":16179,\"len\":10000,\"price\":34.90},{\"id\":16180,\"len\":30000,\"price\":104.70}],\r\n        14109: [{\"id\":14110,\"len\":1000,\"price\":4.11},{\"id\":14111,\"len\":1500,\"price\":6.17},{\"id\":14112,\"len\":2000,\"price\":8.22},{\"id\":14113,\"len\":2500,\"price\":10.28},{\"id\":14114,\"len\":3000,\"price\":12.33},{\"id\":14115,\"len\":3500,\"price\":14.39},{\"id\":14116,\"len\":4000,\"price\":16.44},{\"id\":14117,\"len\":5000,\"price\":20.55},{\"id\":14118,\"len\":6000,\"price\":24.66},{\"id\":14119,\"len\":7000,\"price\":28.77}],\r\n        14120: [{\"id\":14121,\"len\":1000,\"price\":5.49},{\"id\":14122,\"len\":1500,\"price\":8.24},{\"id\":14123,\"len\":2000,\"price\":10.98},{\"id\":14124,\"len\":2500,\"price\":13.73},{\"id\":14125,\"len\":3000,\"price\":16.47},{\"id\":14126,\"len\":3500,\"price\":19.22},{\"id\":14127,\"len\":4000,\"price\":21.96},{\"id\":14128,\"len\":4500,\"price\":24.71},{\"id\":14129,\"len\":5000,\"price\":27.45},{\"id\":14130,\"len\":6000,\"price\":32.94},{\"id\":14131,\"len\":7000,\"price\":38.43}],\r\n        14132: [{\"id\":14133,\"len\":1000,\"price\":6.79},{\"id\":14134,\"len\":1500,\"price\":10.19},{\"id\":14135,\"len\":2000,\"price\":13.58},{\"id\":14136,\"len\":2500,\"price\":16.98},{\"id\":14137,\"len\":3000,\"price\":20.37},{\"id\":14138,\"len\":3500,\"price\":23.77},{\"id\":14139,\"len\":4000,\"price\":27.16},{\"id\":14140,\"len\":4500,\"price\":30.56},{\"id\":14141,\"len\":5000,\"price\":33.95},{\"id\":14142,\"len\":6000,\"price\":40.74},{\"id\":14143,\"len\":7000,\"price\":47.53}],\r\n        14206: [{\"id\":14207,\"len\":2100,\"price\":5.10},{\"id\":14208,\"len\":4250,\"price\":10.33},{\"id\":14209,\"len\":6350,\"price\":15.43}],\r\n        14210: [{\"id\":14211,\"len\":2100,\"price\":5.36},{\"id\":14212,\"len\":4250,\"price\":10.84},{\"id\":14213,\"len\":6350,\"price\":16.19}],\r\n        14214: [{\"id\":14215,\"len\":2100,\"price\":5.44},{\"id\":14216,\"len\":4250,\"price\":11.01},{\"id\":14217,\"len\":6350,\"price\":16.45}],\r\n        14218: [{\"id\":14219,\"len\":2100,\"price\":5.94},{\"id\":14220,\"len\":4250,\"price\":12.03},{\"id\":14221,\"len\":6350,\"price\":17.97}],\r\n        14222: [{\"id\":14223,\"len\":2000,\"price\":7.38},{\"id\":14224,\"len\":4000,\"price\":14.76},{\"id\":14225,\"len\":6000,\"price\":22.14}],\r\n        14226: [{\"id\":14227,\"len\":2000,\"price\":7.86},{\"id\":14228,\"len\":4000,\"price\":15.72},{\"id\":14229,\"len\":6000,\"price\":23.58}],\r\n        14230: [{\"id\":14231,\"len\":2000,\"price\":11.98},{\"id\":14232,\"len\":4000,\"price\":23.96},{\"id\":14233,\"len\":6000,\"price\":35.94}],\r\n    };\r\n\r\n    let currentStep = 1;\r\n    const totalSteps = 10;\r\n    let userSelection = {};\r\n    let baseCart = { items: [], notes: [], totalPrice: 0, totalAreaM2: 0 }; \r\n    let accessoriesChanged = false;\r\n\r\n    function resetUserSelection(){\r\n        userSelection = {\r\n            panel: { type: null, color: null, thickness: null, selectedProductId: null },\r\n            length: { panelLengthMm: null, customLengthCm: null, customCutCm: null },\r\n            width: { roofWidthCm: null, panelCombination: null, availableWidthsMm: [], totalAreaM2: 0 },\r\n            construction: { material: null },\r\n            profiles: { type: null, aluDirection: null },\r\n            accessories: {\r\n                drobni_material: false,\r\n                silikonski_kit: true,\r\n                silikonski_trak: false,\r\n                bocni_profili: false,\r\n                podlozke_upgrade: null, \r\n                linijsko_vijacenje: false,\r\n                profil_upgrade: null,\r\n                okrasni_pokrov: false\r\n            },\r\n            cart: { items: [], notes: [], totalPrice: 0 }\r\n        };\r\n        baseCart = { items: [], notes: [], totalPrice: 0, totalAreaM2: 0 };\r\n        accessoriesChanged = false;\r\n    }\r\n\r\n    const steps = document.querySelectorAll('.configurator-step');\r\n    const typeOptionsContainer = document.getElementById('type-options');\r\n    const colorOptionsContainer = document.getElementById('color-options');\r\n    const thicknessOptionsContainer = document.getElementById('thickness-options');\r\n    const lengthOptionsContainer = document.getElementById('length-options');\r\n    const panelCountOptionsContainer = document.getElementById('panel-count-options');\r\n    const constructionOptionsContainer = document.getElementById('construction-options');\r\n    const profileTypeOptionsContainer = document.getElementById('profile-type-options');\r\n    const aluDirectionOptionsContainer = document.getElementById('alu-direction-options');\r\n    const aluProfileSubOptions = document.getElementById('alu-profile-sub-options');\r\n    const accessoryOptionsContainer = document.getElementById('accessory-options-container');\r\n    const customLengthInput = document.getElementById('custom-length');\r\n    const lengthResultDiv = document.getElementById('length-result');\r\n    const customCutSection = document.getElementById('custom-cut-section');\r\n    const customCutInput = document.getElementById('custom-cut-length');\r\n    const customCutInfo = document.getElementById('custom-cut-info');\r\n    const panelWidthInfo = document.getElementById('panel-width-info');\r\n    const customWidthInput = document.getElementById('custom-width');\r\n    const widthResultDiv = document.getElementById('width-result');\r\n    const screwInfoResult = document.getElementById('screw-info-result');\r\n    const legacyPanelCountSection = document.getElementById('legacy-panel-count-section');\r\n    const combinationOptions = document.getElementById('combination-options');\r\n    const combinationChoices = document.getElementById('combination-choices');\r\n    const summaryTableBody = document.querySelector('#summary-table tbody');\r\n    const summaryTableFoot = document.querySelector('#summary-table tfoot');\r\n    const finalSummaryTableBody = document.querySelector('#summary-table-final tbody');\r\n    const finalSummaryTableFoot = document.querySelector('#summary-table-final tfoot');\r\n    const sketchLengthCanvas = document.getElementById('roof-sketch-length');\r\n    const sketchWidthCanvas = document.getElementById('roof-sketch-width');\r\n\r\n\tfunction scrollToConfiguratorTop() {\r\n\t  const el = document.getElementById('configurator-container');\r\n\t  if (!el) return;\r\n\r\n\t  const y = el.getBoundingClientRect().top + window.pageYOffset - 20; \/\/ 20px rezerve\r\n\t  window.scrollTo({ top: y, behavior: 'smooth' });\r\n\t}\r\n\tfunction scrollToPageTop() {\r\n\t  window.scrollTo({ top: 0, behavior: 'smooth' });\r\n\t}\r\n\r\n    function initializeConfigurator() {\r\n        resetUserSelection();\r\n        loadPanelSelectionOptions();\r\n        loadConstructionOptions();\r\n        loadProfileOptions();\r\n        drawRoofSketch(sketchLengthCanvas, 'length');\r\n        drawRoofSketch(sketchWidthCanvas, 'width');\r\n        showStep(1);\r\n    }\r\n\r\n    function showStep(stepNumber) {\r\n        steps.forEach(step => step.classList.remove('active'));\r\n        const currentStepElement = document.getElementById(`step-${stepNumber}`);\r\n        if (currentStepElement) {\r\n            currentStepElement.classList.add('active');\r\n             if (stepNumber === 6) {\r\n                updateProfileOptions();\r\n            }\r\n             if (stepNumber === 8) {\r\n                displayCart(userSelection.cart, summaryTableBody, summaryTableFoot);\r\n            }\r\n             if (stepNumber === 10) {\r\n                displayCart(userSelection.cart, finalSummaryTableBody, finalSummaryTableFoot);\r\n            }\r\n            updateButtonStates(stepNumber);\r\n\t\t\trequestAnimationFrame(() => scrollToPageTop());\r\n        }\r\n        currentStep = stepNumber;\r\n    }\r\n\r\n    function nextStep() {\r\n        if (currentStep < totalSteps) {\r\n            if (validateStep(currentStep)) {\r\n                if (currentStep === 2) loadLengthOptions();\r\n                if (currentStep === 3) loadWidthInfo();\r\n                 if (currentStep === 6) updateScrewInfo();\r\n                \r\n                showStep(currentStep + 1);\r\n            } else {\r\n                 alert('Prosimo, dokon\u010dajte izbiro na trenutnem koraku.');\r\n            }\r\n        }\r\n    }\r\n\r\n    function prevStep() {\r\n        if (currentStep > 1) {\r\n            if(currentStep === 9) { \r\n                displayCart(baseCart, summaryTableBody, summaryTableFoot);\r\n            }\r\n            showStep(currentStep - 1);\r\n        }\r\n    }\r\n\r\n    function validateStep(step) {\r\n        switch(step) {\r\n            case 2: return userSelection.panel.type && userSelection.panel.color && userSelection.panel.thickness;\r\n            case 3: return userSelection.length.panelLengthMm !== null;\r\n            case 4: return userSelection.width.panelCombination !== null;\r\n            case 5: return userSelection.construction.material !== null;\r\n            case 6: \r\n                const thick = userSelection.panel.thickness;\r\n                if ([20, 25, 32].includes(thick)) {\r\n                    return userSelection.profiles.aluDirection !== null;\r\n                }\r\n                if (userSelection.profiles.type === 'polycarbonate') return true;\r\n                if (userSelection.profiles.type === 'aluminum' && userSelection.profiles.aluDirection) return true;\r\n                return false;\r\n            case 7: return true;\r\n            case 8: return true;\r\n            default: return true;\r\n        }\r\n    }\r\n\r\n    function updateButtonStates(stepNumber) {\r\n        const currentStepElement = document.getElementById(`step-${stepNumber}`);\r\n        if (!currentStepElement) return;\r\n\r\n        const nextBtn = currentStepElement.querySelector('.next-btn, #show-accessories-btn');\r\n        const prevBtn = currentStepElement.querySelector('.prev-btn');\r\n\r\n        if (prevBtn) {\r\n            prevBtn.disabled = (stepNumber === 1);\r\n        }\r\n\r\n        if (nextBtn) {\r\n            nextBtn.disabled = !validateStep(stepNumber);\r\n            if (stepNumber === 7) {\r\n                nextBtn.textContent = \"Prika\u017ei povzetek\";\r\n                 nextBtn.onclick = () => { generateSummary(true); nextStep(); };\r\n            } else if (stepNumber === 8) {\r\n                nextBtn.textContent = \"Nadaljuj\";\r\n                nextBtn.onclick = () => showAccessoryStep();\r\n            }\r\n            else {\r\n                nextBtn.textContent = \"Naprej\";\r\n                nextBtn.onclick = () => nextStep();\r\n            }\r\n        }\r\n    }\r\n\r\n    function loadPanelSelectionOptions() {\r\n        const panelTypes = {\r\n            'lexan': { name: 'LEXAN\u2122 plo\u0161\u010de (2x UV, 20 let garancije)', image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-16-mm-2\u00d7UV-prozorna-2-1-scaled.jpg' },\r\n            'standard': { name: 'Standardne plo\u0161\u010de (1x UV)', image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-STANDARD-deb.-10-mm-1\u00d7UV-prozorna-1-1-scaled.jpg' },\r\n            'premium': { name: 'Premium (najmo\u010dnej\u0161a ve\u010dslojna plo\u0161\u010da na trgu)', image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-PREMIUM-deb.-16-mm-2\u00d7UV-prozorna-1-scaled.jpg' },\r\n            'sencena': { name: 'Sen\u010dne plo\u0161\u010de (z belimi sen\u010dnimi prekati)', image: 'https:\/\/termotom.com\/wp-content\/uploads\/polikarbonatna-plosca-sencena.png' }\r\n        };\r\n        const colors = {\r\n            'prozorna': { name: 'Prozorna', image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-10-mm-2\u00d7UV-prozorna-1-scaled.jpg' },\r\n            'prozorna_x_struktura': { name: 'Prozorna X-struktura', image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-16-mm-X-struktura-2\u00d7UV-prozorna-1-scaled.jpg' },\r\n            'prozorna_sencena': { name: 'Prozorna (sen\u010dna)', image: 'https:\/\/termotom.com\/wp-content\/uploads\/polikarbonatna-plosca-sencena.png' },\r\n            'mlecna_opal': { name: 'Mle\u010dna \/ Opal', image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-10-mm-2\u00d7UV-mlecna-2-1-scaled.jpg' },\r\n            'mlecna_opal_x_struktura': { name: 'Bela\/Mle\u010dna X-struktura', image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-STANDARD-deb.-16-mm-1\u00d7UV-mlecnaopal-1-scaled.jpg' },\r\n            'rjava_bronze': { name: 'Rjava \/ Bronze', image: 'https:\/\/termotom.com\/wp-content\/uploads\/Vecslojna-polikarbonatna-plosca-LEXAN-deb.-10-mm-2\u00d7UV-rjava-1-1-scaled.jpg' },\r\n            'siva_solar_control': { name: 'Siva Solar Control', image: 'https:\/\/termotom.com\/wp-content\/uploads\/BST_7226.jpg' },\r\n            'temno_modra': { name: 'Temno Modra', image: 'https:\/\/termotom.com\/wp-content\/uploads\/ChatGPT-Image-15.-maj-2025-08_47_14.png' }\r\n        };\r\n        const thicknesses = [4, 4.5, 6, 8, 10, 16, 20, 25, 32];\r\n\r\n        typeOptionsContainer.innerHTML = Object.keys(panelTypes).map(key => {\r\n            let ribbonHtml = '';\r\n            if (key === 'lexan') {\r\n                ribbonHtml = '<div class=\"ribbon ribbon-top-right ribbon-recommendation\">Izbira kupcev<\/div>';\r\n            }\r\n            return `\r\n            <div class=\"option-button\" data-group=\"type\" data-value=\"${key}\" onclick=\"selectPanelOption(this)\">\r\n                ${ribbonHtml}\r\n                <img decoding=\"async\" src=\"${panelTypes[key].image}\" alt=\"${panelTypes[key].name}\" loading=\"lazy\">\r\n                <span>${panelTypes[key].name}<\/span>\r\n            <\/div>`;\r\n        }).join('');\r\n\r\n        colorOptionsContainer.innerHTML = Object.keys(colors).map(key => `\r\n            <div class=\"option-button\" data-group=\"color\" data-value=\"${key}\" onclick=\"selectPanelOption(this)\">\r\n                <img decoding=\"async\" src=\"${colors[key].image}\" alt=\"${colors[key].name}\" loading=\"lazy\">\r\n                <span>${colors[key].name}<\/span>\r\n            <\/div>`).join('');\r\n        \r\n        thicknessOptionsContainer.innerHTML = thicknesses.map(th => {\r\n            let ribbonHtml = '';\r\n            if (th === 10 || th === 16) {\r\n                ribbonHtml = '<div class=\"ribbon ribbon-top-right ribbon-purpose\">Za nadstre\u0161ke<\/div>';\r\n            } else if (th === 4 || th === 4.5) {\r\n                 ribbonHtml = '<div class=\"ribbon ribbon-top-right ribbon-purpose-alt\">Za rastlinjake<\/div>';\r\n            }\r\n            return `\r\n            <div class=\"option-button\" data-group=\"thickness\" data-value=\"${th}\" onclick=\"selectPanelOption(this)\">\r\n                ${ribbonHtml}\r\n                <span>${th} mm<\/span>\r\n            <\/div>`;\r\n        }).join('');\r\n    }\r\n\r\n    function selectPanelOption(button) {\r\n        const group = button.dataset.group;\r\n        let value = button.dataset.value;\r\n        if(group === 'thickness') value = parseFloat(value); \r\n\r\n        const container = button.parentElement;\r\n        const alreadySelected = button.classList.contains('selected');\r\n        \r\n        if (alreadySelected) {\r\n            button.classList.remove('selected');\r\n            userSelection.panel[group] = null;\r\n        } else {\r\n            container.querySelectorAll('.option-button').forEach(btn => btn.classList.remove('selected'));\r\n            button.classList.add('selected');\r\n            userSelection.panel[group] = value;\r\n        }\r\n\r\n        updateAvailableOptions();\r\n    }\r\n\r\n    function updateAvailableOptions() {\r\n        const { type, color, thickness } = userSelection.panel;\r\n\r\n        document.querySelectorAll('#type-options .option-button').forEach(btn => {\r\n            const typeKey = btn.dataset.value;\r\n            let isPossible = false;\r\n            if (productData.panels[typeKey]) {\r\n                for (const colorKey in productData.panels[typeKey]) {\r\n                    if (!color || colorKey === color) {\r\n                        for (const thickKey in productData.panels[typeKey][colorKey]) {\r\n                            if (!thickness || thickKey == thickness) {\r\n                                isPossible = true; break;\r\n                            }\r\n                        }\r\n                    }\r\n                    if (isPossible) break;\r\n                }\r\n            }\r\n            btn.classList.toggle('disabled', !isPossible);\r\n        });\r\n\r\n        document.querySelectorAll('#color-options .option-button').forEach(btn => {\r\n            const colorKey = btn.dataset.value;\r\n            let isPossible = false;\r\n            for (const typeKey in productData.panels) {\r\n                if ((!type || typeKey === type) && productData.panels[typeKey][colorKey]) {\r\n                     for (const thickKey in productData.panels[typeKey][colorKey]) {\r\n                        if (!thickness || thickKey == thickness) {\r\n                            isPossible = true; break;\r\n                        }\r\n                    }\r\n                }\r\n                if (isPossible) break;\r\n            }\r\n             btn.classList.toggle('disabled', !isPossible);\r\n        });\r\n\r\n        document.querySelectorAll('#thickness-options .option-button').forEach(btn => {\r\n            const thickKey = btn.dataset.value;\r\n            let isPossible = false;\r\n            for (const typeKey in productData.panels) {\r\n                if ((!type || typeKey === type)) {\r\n                     for (const colorKey in productData.panels[typeKey]) {\r\n                        if ((!color || colorKey === color) && productData.panels[typeKey][colorKey]?.[thickKey]) {\r\n                            isPossible = true; break;\r\n                        }\r\n                    }\r\n                }\r\n                 if (isPossible) break;\r\n            }\r\n             btn.classList.toggle('disabled', !isPossible);\r\n        });\r\n        \r\n        if (userSelection.panel.type && userSelection.panel.color && userSelection.panel.thickness) {\r\n            const selectedProduct = productData.panels[userSelection.panel.type]?.[userSelection.panel.color]?.[userSelection.panel.thickness];\r\n            userSelection.panel.selectedProductId = selectedProduct ? selectedProduct.productId : null;\r\n        } else {\r\n             userSelection.panel.selectedProductId = null;\r\n        }\r\n\r\n        updateButtonStates(currentStep);\r\n    }\r\n    \r\n    function loadLengthOptions() {\r\n        const productId = userSelection.panel.selectedProductId;\r\n        if (!productId || !productData.variations[productId]) {\r\n            lengthOptionsContainer.innerHTML = '<p class=\"explanation-text\" style=\"color: red;\">Za izbrano kombinacijo ni na voljo standardnih dol\u017ein. Prosimo, spremenite izbiro v prej\u0161njem koraku.<\/p>';\r\n            return;\r\n        }\r\n\r\n        const variations = productData.variations[productId];\r\n        const uniqueLengths = [...new Set(variations.map(v => parseInt(v.dim.split('x')[1])))].sort((a, b) => a - b);\r\n\r\n        lengthOptionsContainer.innerHTML = '';\r\n        uniqueLengths.forEach(lengthMm => {\r\n            const button = document.createElement('div');\r\n            button.className = 'option-button';\r\n            button.dataset.value = lengthMm;\r\n            button.onclick = () => selectStandardLength(button);\r\n            button.innerHTML = `<span>${lengthMm \/ 10} cm<\/span>`; \r\n            lengthOptionsContainer.appendChild(button);\r\n        });\r\n    }\r\n    \r\n    function selectStandardLength(button) {\r\n        const lengthMm = parseInt(button.dataset.value);\r\n        lengthOptionsContainer.querySelectorAll('.option-button').forEach(btn => btn.classList.remove('selected'));\r\n        button.classList.add('selected');\r\n\r\n        userSelection.length.panelLengthMm = lengthMm;\r\n        userSelection.length.customLengthCm = null; \r\n        customLengthInput.value = '';\r\n        \r\n        lengthResultDiv.innerHTML = `Izbrali ste standardno dol\u017eino: <strong>${lengthMm \/ 10} cm<\/strong>.`;\r\n        lengthResultDiv.classList.remove('hidden');\r\n        customCutSection.classList.remove('hidden');\r\n        customCutInput.max = lengthMm \/ 10;\r\n        customCutInput.value = ''; \r\n        customCutInfo.innerHTML = '';\r\n        \r\n        updateButtonStates(currentStep);\r\n    }\r\n\r\n    function selectCustomLength() {\r\n        const lengthCm = parseFloat(customLengthInput.value);\r\n        if (isNaN(lengthCm) || lengthCm <= 0) {\r\n            lengthResultDiv.innerHTML = `<span style=\"color: red;\">Vpi\u0161ite veljavno dol\u017eino v cm.<\/span>`;\r\n            lengthResultDiv.classList.remove('hidden');\r\n            return;\r\n        }\r\n\r\n        const productId = userSelection.panel.selectedProductId;\r\n        if (!productId || !productData.variations[productId]) return;\r\n\r\n        const variations = productData.variations[productId];\r\n        const uniqueLengths = [...new Set(variations.map(v => parseInt(v.dim.split('x')[1])))].sort((a, b) => a - b);\r\n        \r\n        let nextStandardLengthMm = uniqueLengths.find(l => l >= lengthCm * 10);\r\n        \r\n        if (!nextStandardLengthMm) {\r\n            lengthResultDiv.innerHTML = `<span style=\"color: red;\">\u017dal nimamo plo\u0161\u010de, ki bi ustrezala va\u0161i dol\u017eini. Najdalj\u0161a je ${Math.max(...uniqueLengths)\/10} cm.<\/span>`;\r\n            lengthResultDiv.classList.remove('hidden');\r\n            return;\r\n        }\r\n\r\n        userSelection.length.panelLengthMm = nextStandardLengthMm;\r\n        userSelection.length.customLengthCm = lengthCm;\r\n        userSelection.length.customCutCm = lengthCm;\r\n\r\n        lengthOptionsContainer.querySelectorAll('.option-button').forEach(btn => {\r\n            btn.classList.toggle('selected', parseInt(btn.dataset.value) === nextStandardLengthMm);\r\n        });\r\n        \r\n        lengthResultDiv.innerHTML = `Za va\u0161o mero <strong>${lengthCm} cm<\/strong> potrebujete plo\u0161\u010do dol\u017eine <strong>${nextStandardLengthMm \/ 10} cm<\/strong>, ki jo bomo odrezali na va\u0161o mero.`;\r\n        lengthResultDiv.classList.remove('hidden');\r\n        customCutSection.classList.remove('hidden');\r\n        customCutInput.value = lengthCm;\r\n        customCutInput.max = nextStandardLengthMm \/ 10;\r\n        customCutInfo.innerHTML = `Potrjena dol\u017eina odreza: <strong>${lengthCm} cm<\/strong>.`\r\n\r\n        updateButtonStates(currentStep);\r\n    }\r\n\r\n    function setCustomCut() {\r\n        const cutLength = parseFloat(customCutInput.value);\r\n        const maxCut = parseFloat(customCutInput.max);\r\n        if (isNaN(cutLength) || cutLength <= 0 || cutLength > maxCut) {\r\n            alert(`Vpi\u0161ite veljavno mero za odrez, ki je manj\u0161a ali enaka standardni dol\u017eini plo\u0161\u010de (${maxCut} cm).`);\r\n            return;\r\n        }\r\n        userSelection.length.customCutCm = cutLength;\r\n        customCutInfo.innerHTML = `Potrjena dol\u017eina odreza: <strong>${cutLength} cm<\/strong>.`;\r\n    }\r\n\r\n    function loadWidthInfo() {\r\n        const { selectedProductId } = userSelection.panel;\r\n        const { panelLengthMm } = userSelection.length; \r\n        const allVariations = productData.variations[selectedProductId] || [];\r\n        \r\n        const availableWidthsMm = allVariations\r\n            .filter(v => parseInt(v.dim.split('x')[1]) === panelLengthMm)\r\n            .map(v => parseInt(v.dim.split('x')[0]))\r\n            .filter((value, index, self) => self.indexOf(value) === index) \r\n            .sort((a, b) => a - b);\r\n            \r\n        userSelection.width.availableWidthsMm = availableWidthsMm;\r\n\r\n        let widthText = \"razli\u010dne \u0161irine plo\u0161\u010d\";\r\n        if (availableWidthsMm.length > 0) {\r\n            widthText = `\u0161irine plo\u0161\u010d: <strong>${availableWidthsMm.map(w => `${w\/10} cm`).join(', ')}<\/strong>`;\r\n        }\r\n        \r\n        panelWidthInfo.innerHTML = `Glede na va\u0161o izbiro so na voljo ${widthText}. Vpi\u0161ite skupno \u0161irino, ki jo \u017eelite pokriti, mi pa vam bomo predlagali optimalne kombinacije.`;\r\n        widthResultDiv.classList.add('hidden');\r\n        combinationOptions.classList.add('hidden');\r\n        legacyPanelCountSection.classList.add('hidden');\r\n        customWidthInput.value = '';\r\n        userSelection.width.panelCombination = null;\r\n        updateButtonStates(currentStep);\r\n    }\r\n    \r\n    function calculateWidthCombination() {\r\n        const targetWidthCm = parseFloat(customWidthInput.value);\r\n        if (isNaN(targetWidthCm) || targetWidthCm <= 0) {\r\n            widthResultDiv.innerHTML = `<span style=\"color: red;\">Prosimo, vpi\u0161ite veljavno \u0161irino.<\/span>`;\r\n            widthResultDiv.classList.remove('hidden');\r\n            return;\r\n        }\r\n\r\n        const availableWidthsMm = [...userSelection.width.availableWidthsMm].sort((a, b) => b - a);\r\n\r\n        if (availableWidthsMm.length === 0) {\r\n            widthResultDiv.innerHTML = `<span style=\"color: red;\">Napaka: Za izbrano dol\u017eino ni na voljo nobenih \u0161irin plo\u0161\u010d. Poskusite izbrati drugo dol\u017eino.<\/span>`;\r\n            widthResultDiv.classList.remove('hidden');\r\n            combinationOptions.classList.add('hidden');\r\n            legacyPanelCountSection.classList.add('hidden');\r\n            return;\r\n        }\r\n        \r\n        if (availableWidthsMm.length === 1) {\r\n            const panelWidthCm = availableWidthsMm[0] \/ 10;\r\n            const jointGapCm = 2;\r\n            let panelCount = 1;\r\n            let coveredWidth = panelWidthCm;\r\n            \r\n            while(coveredWidth < targetWidthCm) {\r\n                panelCount++;\r\n                coveredWidth = (panelCount * panelWidthCm) + ((panelCount - 1) * jointGapCm);\r\n            }\r\n            \r\n            panelCountOptionsContainer.innerHTML = '';\r\n            for(let i=1; i <= 10; i++) {\r\n                const button = document.createElement('div');\r\n                button.className = 'option-button panel-count-btn';\r\n                button.dataset.count = i;\r\n                button.onclick = () => selectPanelCount(i, availableWidthsMm[0]);\r\n                button.innerHTML = `<span>${i}<\/span>`;\r\n                if(i === panelCount) button.classList.add('selected'); \r\n                panelCountOptionsContainer.appendChild(button);\r\n            }\r\n             selectPanelCount(panelCount, availableWidthsMm[0]); \r\n             widthResultDiv.innerHTML = `Izra\u010dunano \u0161tevilo plo\u0161\u010d za \u0161irino <strong>${targetWidthCm} cm<\/strong>. Po potrebi lahko izberete drugo koli\u010dino.`;\r\n             widthResultDiv.classList.remove('hidden');\r\n             legacyPanelCountSection.classList.remove('hidden');\r\n             combinationOptions.classList.add('hidden');\r\n             return;\r\n        }\r\n\r\n        const allCombinations = [];\r\n        const targetWidthMm = targetWidthCm * 10;\r\n        const jointGapMm = 20;\r\n        const MAX_TOTAL_PANELS = 12;\r\n\r\n        const memo = new Set();\r\n        function findCombinationsIterative(target, widths) {\r\n            const queue = [{ combo: {}, widthSum: 0, panelCount: 0 }];\r\n            memo.add(\"[]\");\r\n\r\n            while(queue.length > 0 && allCombinations.length < 200 && queue.length < 1000) { \r\n                const { combo, widthSum, panelCount } = queue.shift();\r\n\r\n                if (panelCount >= MAX_TOTAL_PANELS) continue;\r\n\r\n                for (const width of widths) {\r\n                    const newCombo = {...combo};\r\n                    newCombo[width] = (newCombo[width] || 0) + 1;\r\n                    const comboKey = JSON.stringify(Object.entries(newCombo).sort());\r\n                    if (memo.has(comboKey)) continue;\r\n                    memo.add(comboKey);\r\n\r\n                    const newPanelCount = panelCount + 1;\r\n                    const newWidthSum = widthSum + width;\r\n                    const totalCoveredWidth = newWidthSum + (newPanelCount > 1 ? (newPanelCount - 1) * jointGapMm : 0);\r\n\r\n                    if (totalCoveredWidth >= target) {\r\n                        allCombinations.push({\r\n                            totalWidth: totalCoveredWidth,\r\n                            counts: newCombo,\r\n                            waste: totalCoveredWidth - target,\r\n                            panelCount: newPanelCount\r\n                        });\r\n                    } else if (newPanelCount < MAX_TOTAL_PANELS) {\r\n                        queue.push({ combo: newCombo, widthSum: newWidthSum, panelCount: newPanelCount });\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        \r\n        findCombinationsIterative(targetWidthMm, availableWidthsMm);\r\n\r\n        if (allCombinations.length === 0) {\r\n            widthResultDiv.innerHTML = `<span style=\"color: red;\">Ne najdem kombinacije za vpisano \u0161irino. Poskusite z ve\u010djo \u0161irino.<\/span>`;\r\n            widthResultDiv.classList.remove('hidden');\r\n            combinationOptions.classList.add('hidden');\r\n            legacyPanelCountSection.classList.add('hidden');\r\n            return;\r\n        }\r\n\r\n        allCombinations.sort((a, b) => {\r\n            if (a.waste !== b.waste) return a.waste - b.waste;\r\n            return a.panelCount - b.panelCount;\r\n        });\r\n\r\n        const bestCombinations = allCombinations.slice(0, 3);\r\n        \r\n        widthResultDiv.innerHTML = `Za va\u0161o mero <strong>${targetWidthCm} cm<\/strong> predlagamo naslednje kombinacije (vklju\u010dno z 2cm med plo\u0161\u010dami za spojni profil):`;\r\n        widthResultDiv.classList.remove('hidden');\r\n\r\n        combinationChoices.innerHTML = '';\r\n        bestCombinations.forEach((combo) => {\r\n            const totalPanels = combo.panelCount;\r\n            let textParts = [];\r\n             Object.entries(combo.counts).sort(([a],[b]) => b-a).forEach(([width, count]) => {\r\n                let panelText = count === 1 ? 'plo\u0161\u010da' : (count === 2 ? 'plo\u0161\u010di' : 'plo\u0161\u010de');\r\n                textParts.push(`${count} ${panelText} ${width\/10} cm`);\r\n            });\r\n            \r\n            let text = `<strong>${totalPanels} ${totalPanels === 1 ? 'plo\u0161\u010da' : 'plo\u0161\u010de'}:<\/strong> ${textParts.join(' + ')}, za skupno \u0161irino do: <strong>${(combo.totalWidth \/ 10).toFixed(1)} cm<\/strong>.`;\r\n            \r\n            const button = document.createElement('div');\r\n            button.className = 'option-button';\r\n            button.dataset.combination = JSON.stringify(combo);\r\n            button.onclick = () => selectCombination(button);\r\n            button.innerHTML = `<span>${text}<\/span>`;\r\n            combinationChoices.appendChild(button);\r\n        });\r\n\r\n        combinationOptions.classList.remove('hidden');\r\n        legacyPanelCountSection.classList.add('hidden');\r\n        userSelection.width.panelCombination = null;\r\n        updateButtonStates(currentStep);\r\n    }\r\n    \r\n    function selectPanelCount(count, widthMm) {\r\n        const combo = {\r\n            counts: { [widthMm]: count },\r\n            panelCount: count,\r\n            totalWidth: (count * widthMm) + ((count - 1) * 20),\r\n            waste: 0,\r\n        };\r\n        \r\n        panelCountOptionsContainer.querySelectorAll('.option-button').forEach(btn => btn.classList.remove('selected'));\r\n        panelCountOptionsContainer.querySelector(`[data-count=\"${count}\"]`).classList.add('selected');\r\n        \r\n        userSelection.width.panelCombination = combo;\r\n        updateButtonStates(currentStep);\r\n    }\r\n\r\n    function selectCombination(button) {\r\n        combinationChoices.querySelectorAll('.option-button').forEach(btn => btn.classList.remove('selected'));\r\n        button.classList.add('selected');\r\n        \r\n        userSelection.width.panelCombination = JSON.parse(button.dataset.combination);\r\n        updateButtonStates(currentStep);\r\n    }\r\n    \r\n    function loadConstructionOptions() {\r\n        constructionOptionsContainer.innerHTML = `\r\n            <div class=\"option-button\" data-group=\"material\" data-value=\"wood\" onclick=\"selectOption(this.parentElement, this, 'material', 'wood', 'construction')\">\r\n                <img decoding=\"async\" src=\"https:\/\/termotom.com\/wp-content\/uploads\/Vijak-lesni-fi19.jpg\" alt=\"Lesena konstrukcija\">\r\n                <span>Lesena konstrukcija<\/span>\r\n            <\/div>\r\n            <div class=\"option-button\" data-group=\"material\" data-value=\"metal\" onclick=\"selectOption(this.parentElement, this, 'material', 'metal', 'construction')\">\r\n                <img decoding=\"async\" src=\"https:\/\/termotom.com\/wp-content\/uploads\/Vijak-kovina-fi19.jpg\" alt=\"Kovinska konstrukcija\">\r\n                <span>Kovinska konstrukcija<\/span>\r\n            <\/div>`;\r\n    }\r\n\r\n    function loadProfileOptions() {\r\n        profileTypeOptionsContainer.innerHTML = `\r\n             <div class=\"option-button\" data-group=\"type\" data-value=\"polycarbonate\" onclick=\"selectProfileType(this)\">\r\n                <div class=\"ribbon ribbon-top-right ribbon-purpose-alt\">Za rastlinjake<\/div>\r\n                <img decoding=\"async\" src=\"https:\/\/termotom.com\/wp-content\/uploads\/LPH_10MM.jpg\" alt=\"Polikarbonatni profili\">\r\n                <span>Polikarbonatni profili (cenej\u0161i)<\/span>\r\n            <\/div>\r\n            <div class=\"option-button\" data-group=\"type\" data-value=\"aluminum\" onclick=\"selectProfileType(this)\">\r\n                <div class=\"ribbon ribbon-top-right ribbon-purpose\">Za kritine<\/div>\r\n                <img decoding=\"async\" src=\"https:\/\/termotom.com\/wp-content\/uploads\/ALU_VEZNI_S_TESNILI-scaled-1.jpg\" alt=\"Aluminijasti profili\">\r\n                <span>Aluminijasti profili (kvalitetnej\u0161i)<\/span>\r\n            <\/div>`;\r\n\r\n        aluDirectionOptionsContainer.innerHTML = `\r\n            <div class=\"option-button\" data-group=\"aluDirection\" data-value=\"vzdolzno\" onclick=\"selectOption(this.parentElement, this, 'aluDirection', 'vzdolzno', 'profiles')\">\r\n                <img decoding=\"async\" src=\"https:\/\/termotom.com\/wp-content\/uploads\/POKRIVNI_60MM.jpg\" alt=\"Vzdol\u017eni nosilci\">\r\n                <span>Vzdol\u017eni nosilci (\u0161pirovci)<\/span>\r\n            <\/div>\r\n            <div class=\"option-button\" data-group=\"aluDirection\" data-value=\"precno\" onclick=\"selectOption(this.parentElement, this, 'aluDirection', 'precno', 'profiles')\">\r\n                <img decoding=\"async\" src=\"https:\/\/termotom.com\/wp-content\/uploads\/ALU_VEZNI_S_TESNILI-scaled-1.jpg\" alt=\"Pre\u010dni nosilci\">\r\n                <span>Pre\u010dni nosilci (letve)<\/span>\r\n            <\/div>`;\r\n    }\r\n    \r\n    function updateProfileOptions() {\r\n        const polyButton = profileTypeOptionsContainer.querySelector('[data-value=\"polycarbonate\"]');\r\n        const aluButton = profileTypeOptionsContainer.querySelector('[data-value=\"aluminum\"]');\r\n        const thick = userSelection.panel.thickness;\r\n\r\n        if ([20, 25, 32].includes(thick)) {\r\n            polyButton.classList.add('disabled');\r\n            polyButton.classList.remove('selected');\r\n            if(userSelection.profiles.type !== 'aluminum'){\r\n                aluButton.classList.add('selected');\r\n                userSelection.profiles.type = 'aluminum';\r\n            }\r\n            aluProfileSubOptions.classList.remove('hidden');\r\n        } else {\r\n            polyButton.classList.remove('disabled');\r\n        }\r\n        \r\n        if (userSelection.profiles.type === 'polycarbonate' && polyButton.classList.contains('disabled')) {\r\n            userSelection.profiles.type = 'aluminum';\r\n            aluButton.classList.add('selected');\r\n            aluProfileSubOptions.classList.remove('hidden');\r\n        }\r\n\r\n        updateButtonStates(currentStep);\r\n    }\r\n    \r\n    function selectProfileType(button) {\r\n        if (button.classList.contains('disabled')) return;\r\n        \r\n        const value = button.dataset.value;\r\n        userSelection.profiles.type = value;\r\n        \r\n        profileTypeOptionsContainer.querySelectorAll('.option-button').forEach(btn => btn.classList.remove('selected'));\r\n        button.classList.add('selected');\r\n        \r\n        if (value === 'aluminum') {\r\n            aluProfileSubOptions.classList.remove('hidden');\r\n        } else {\r\n            aluProfileSubOptions.classList.add('hidden');\r\n            userSelection.profiles.aluDirection = null; \r\n            aluDirectionOptionsContainer.querySelectorAll('.option-button').forEach(btn => btn.classList.remove('selected'));\r\n        }\r\n        updateButtonStates(currentStep);\r\n    }\r\n    \r\n     function selectOption(container, selectedButton, key, value, category) {\r\n         container.querySelectorAll('.option-button').forEach(btn => btn.classList.remove('selected'));\r\n         selectedButton.classList.add('selected');\r\n         userSelection[category][key] = value;\r\n         \r\n         if(category === 'profiles' && key === 'aluDirection') {\r\n             const warningDiv = document.getElementById('alu-width-warning');\r\n             const checkbox = document.getElementById('narrow-beam-checkbox');\r\n             const vzdolzniButton = document.querySelector('#alu-direction-options [data-value=\"vzdolzno\"]');\r\n             if(value === 'vzdolzno') {\r\n                 warningDiv.classList.remove('hidden');\r\n             } else {\r\n                 warningDiv.classList.add('hidden');\r\n                 if(checkbox.checked) {\r\n                     checkbox.checked = false;\r\n                     vzdolzniButton.classList.remove('disabled');\r\n                 }\r\n             }\r\n         }\r\n         updateButtonStates(currentStep);\r\n     }\r\n\r\n    function handleNarrowBeamCheck(checkbox) {\r\n        const vzdolzniButton = document.querySelector('#alu-direction-options [data-value=\"vzdolzno\"]');\r\n        const precniButton = document.querySelector('#alu-direction-options [data-value=\"precno\"]');\r\n\r\n        if (checkbox.checked) {\r\n            vzdolzniButton.classList.add('disabled');\r\n            selectOption(precniButton.parentElement, precniButton, 'aluDirection', 'precno', 'profiles');\r\n        } else {\r\n            vzdolzniButton.classList.remove('disabled');\r\n        }\r\n    }\r\n     \r\n     function updateScrewInfo(){\r\n         screwInfoResult.innerHTML = `Na naslednjem koraku boste videli celoten izra\u010dun, vklju\u010dno z vijaki in ostalim materialom.`;\r\n     }\r\n     \r\n    function calculateCostOfItems(items) {\r\n        return items.reduce((sum, item) => sum + (item.qty * item.price), 0);\r\n    }\r\n\r\n    function calculateOptimalPieces(productId, requiredTotalLengthMm, numSets = 1) {\r\n        const variations = accessoryVariations[productId] || productData.accessories.poly_h_profile_variations[productId];\r\n        if (!variations) return { pieces: [], totalCost: 0 };\r\n\r\n        const sortedVariations = [...variations].sort((a, b) => b.len - a.len);\r\n        let pieces = [];\r\n        let totalCost = 0;\r\n\r\n        for (let i = 0; i < numSets; i++) {\r\n            let remainingLength = requiredTotalLengthMm;\r\n            while (remainingLength > 0) {\r\n                let bestFit = [...sortedVariations].sort((a,b) => a.len - b.len).find(v => v.len >= remainingLength);\r\n                if (bestFit) {\r\n                    pieces.push(bestFit);\r\n                    totalCost += bestFit.price;\r\n                    remainingLength = 0;\r\n                } else {\r\n                    const largestPiece = sortedVariations[0];\r\n                    if(!largestPiece) break;\r\n                    pieces.push(largestPiece);\r\n                    totalCost += largestPiece.price;\r\n                    remainingLength -= largestPiece.len;\r\n                }\r\n            }\r\n        }\r\n        return { pieces, totalCost };\r\n    }\r\n\r\n    function addOptimalAccessoryByLength(cart, productId, name, requiredTotalLengthMm, img, details, numSets = 1) {\r\n        const { pieces } = calculateOptimalPieces(productId, requiredTotalLengthMm, numSets);\r\n        if (pieces.length === 0) return;\r\n\r\n        const itemsToAdd = {};\r\n        pieces.forEach(piece => {\r\n            itemsToAdd[piece.id] = (itemsToAdd[piece.id] || 0) + 1;\r\n        });\r\n        \r\n        const variations = accessoryVariations[productId] || productData.accessories.poly_h_profile_variations[productId];\r\n\r\n        for (const [variationId, qty] of Object.entries(itemsToAdd)) {\r\n            const variation = variations.find(v => v.id == variationId);\r\n            if (variation) {\r\n                 cart.items.push({\r\n                    name: name,\r\n                    img: img,\r\n                    details: `${details}, kos dol\u017eine ${(variation.len \/ 1000).toString().replace('.', ',')} m`,\r\n                    qty: qty,\r\n                    price: variation.price,\r\n                    total: qty * variation.price,\r\n                    id: productId,\r\n                    variationId: variation.id,\r\n                    type: 'accessory'\r\n                });\r\n            }\r\n        }\r\n    }\r\n    \r\n    function addAccessoryByPiece(cart, productId, name, requiredQty, img, details) {\r\n         if (!productId || requiredQty <= 0) return;\r\n         \r\n         const tapeData = productData.accessories.anti_dust_tape.variations[productId];\r\n         if (tapeData) {\r\n             const qty = Math.ceil(requiredQty \/ (tapeData.length * 1000)); \r\n             if (qty > 0) {\r\n                cart.items.push({name: name, img: img, details: `${details} (kolut ${tapeData.length}m)`, qty: qty, price: tapeData.price, total: qty * tapeData.price, id: productId, type: 'accessory' });\r\n             }\r\n             return;\r\n         }\r\n         \r\n         const itemData = Object.values(productData.accessories).find(item => typeof item === 'object' && item.id === productId);\r\n         if (itemData) {\r\n             cart.items.push({ name: itemData.name, img: itemData.img, details: details, qty: requiredQty, price: itemData.price, total: requiredQty * itemData.price, id: productId, type: 'accessory' });\r\n         }\r\n    }\r\n\r\n    function calculateBaseMaterials() {\r\n        let cart = { items: [], notes: [], totalPrice: 0, totalAreaM2: 0 };\r\n        const { panel, length, width, construction, profiles } = userSelection;\r\n\r\n        let totalAreaM2 = 0;\r\n        const finalPanelLengthMm = length.customCutCm ? length.customCutCm * 10 : length.panelLengthMm;\r\n        const panelLengthToOrderMm = length.panelLengthMm;\r\n\r\n        if (!width.panelCombination || !width.panelCombination.counts) {\r\n            console.error(\"No panel combination selected.\");\r\n            return false;\r\n        }\r\n\r\n        for (const [panelWidthMmStr, count] of Object.entries(width.panelCombination.counts)) {\r\n            const panelWidthMm = parseInt(panelWidthMmStr);\r\n            const panelVariation = productData.variations[panel.selectedProductId].find(v => {\r\n                const [varWidth, varLength] = v.dim.split('x').map(d => parseInt(d));\r\n                return varLength === panelLengthToOrderMm && varWidth === panelWidthMm;\r\n            });\r\n            if (!panelVariation) continue;\r\n            \r\n            const itemTitle = `Ve\u010dslojna polikarbonatna plo\u0161\u010da`;\r\n            \r\n            cart.items.push({\r\n                name: itemTitle,\r\n                img: productData.panels[panel.type][panel.color][panel.thickness].image,\r\n                details: `Tip: ${panel.type}, Barva: ${panel.color.replace(\/_\/g, ' ')}, Deb.: ${panel.thickness}mm, Dim.: ${panelVariation.dim.replace('x', ' x ')} mm`,\r\n                qty: count,\r\n                price: parseFloat(panelVariation.price),\r\n                total: count * parseFloat(panelVariation.price),\r\n                id: panel.selectedProductId,\r\n                variationId: panelVariation.id,\r\n                type: 'panel'\r\n            });\r\n            totalAreaM2 += count * (panelWidthMm \/ 1000) * (finalPanelLengthMm \/ 1000);\r\n        }\r\n        \r\n        cart.totalAreaM2 = totalAreaM2;\r\n        userSelection.width.totalAreaM2 = totalAreaM2;\r\n\r\n        if (length.customCutCm && length.customCutCm !== length.panelLengthMm\/10) {\r\n             cart.notes.push(`Vse plo\u0161\u010de prosim odre\u017eite na dol\u017eino ${length.customCutCm} cm.`);\r\n        }\r\n        \r\n        const totalNumPanels = Object.values(width.panelCombination.counts).reduce((s, c) => s + c, 0);\r\n        const numJoints = totalNumPanels > 1 ? totalNumPanels - 1 : 0;\r\n        const totalRoofWidthMm = Object.keys(width.panelCombination.counts).reduce((sum, w) => sum + (parseInt(w) * width.panelCombination.counts[w]), 0);\r\n        \r\n        let tapeKey = panel.thickness <= 10 ? '4-10' : (panel.thickness <= 25 ? '16-25' : '32-50');\r\n        const tapes = productData.accessories.anti_dust_tape[tapeKey];\r\n        if(tapes){\r\n             addAccessoryByPiece(cart, tapes.perforated, 'Protipra\u0161ni trak (perforiran)', totalRoofWidthMm, 'https:\/\/termotom.com\/wp-content\/uploads\/XC-2977_barvna-scaled.jpg', `Za spodnji rob`);\r\n             addAccessoryByPiece(cart, tapes.non_perforated, 'Protipra\u0161ni trak (neprekinjen)', totalRoofWidthMm, 'https:\/\/termotom.com\/wp-content\/uploads\/XC-2981_barvna-scaled.jpg', `Za zgornji rob`);\r\n        }\r\n        \r\n        const topEdgeName = 'Za zgornji rob';\r\n        const bottomEdgeName = 'Za spodnji (odkapni) rob';\r\n        \r\n        if (panel.thickness <= 4.5) {\r\n            const polyUProfileId = productData.accessories.poly_u_profile[panel.thickness];\r\n            if (polyUProfileId) {\r\n                const uProfileData = productData.accessories.poly_u_profile_variations[polyUProfileId];\r\n                const totalLengthNeeded = totalRoofWidthMm * 2;\r\n                const qty = Math.ceil(totalLengthNeeded \/ uProfileData.length);\r\n                if (qty > 0) {\r\n                     cart.items.push({\r\n                        name: uProfileData.name, img: uProfileData.img, details: `Za zgornji in spodnji rob`,\r\n                        qty: qty, price: uProfileData.price, total: qty * uProfileData.price,\r\n                        id: polyUProfileId, type: 'accessory' \r\n                    });\r\n                }\r\n            }\r\n        } else {\r\n            const isThickPanelForcedAlu = [20, 25, 32].includes(panel.thickness);\r\n            const aluDripProfileData = productData.accessories.alu_drip_profile[panel.thickness];\r\n\r\n            if (profiles.type === 'polycarbonate' && !isThickPanelForcedAlu) {\r\n                const polyUProfileId = productData.accessories.poly_u_profile[panel.thickness];\r\n                if (polyUProfileId) {\r\n                    const uProfileData = productData.accessories.poly_u_profile_variations[polyUProfileId];\r\n                    const qtyTop = Math.ceil(totalRoofWidthMm \/ uProfileData.length);\r\n                    if(qtyTop > 0) {\r\n                        cart.items.push({ \r\n                            name: uProfileData.name, img: uProfileData.img, details: topEdgeName, qty: qtyTop, price: uProfileData.price, \r\n                            total: qtyTop * uProfileData.price, id: polyUProfileId, type: 'accessory' \r\n                        });\r\n                    }\r\n                }\r\n                 if (aluDripProfileData) {\r\n                    addOptimalAccessoryByLength(cart, aluDripProfileData.id, aluDripProfileData.name, totalRoofWidthMm, aluDripProfileData.img, bottomEdgeName, 1);\r\n                 }\r\n            } else { \r\n                 if (aluDripProfileData) {\r\n                    addOptimalAccessoryByLength(cart, aluDripProfileData.id, aluDripProfileData.name, totalRoofWidthMm, aluDripProfileData.img, topEdgeName, 1);\r\n                    addOptimalAccessoryByLength(cart, aluDripProfileData.id, aluDripProfileData.name, totalRoofWidthMm, aluDripProfileData.img, bottomEdgeName, 1);\r\n                }\r\n            }\r\n        }\r\n        \r\n        if(numJoints > 0){\r\n             const profileLengthMm = finalPanelLengthMm;\r\n             if (profiles.type === 'polycarbonate') {\r\n                const hProfileId = productData.accessories.poly_h_profile[panel.thickness];\r\n                if (hProfileId) {\r\n                    addOptimalAccessoryByLength(cart, hProfileId, `Polikarbonatni H-profil ${panel.thickness}mm`, profileLengthMm, 'https:\/\/termotom.com\/wp-content\/uploads\/LPH_10MM.jpg', `Za ${numJoints} spojev`, numJoints);\r\n                }\r\n             } else { \r\n                if (profiles.aluDirection === 'precno') {\r\n                    addOptimalAccessoryByLength(cart, productData.accessories.alu_joining_profile.id, 'Alu dvojni vezni profil', profileLengthMm, productData.accessories.alu_joining_profile.img, `Za ${numJoints} spojev`, numJoints);\r\n                } else { \r\n                     addOptimalAccessoryByLength(cart, productData.accessories.alu_top_profile.id, 'Alu pokrivni profil 60mm', profileLengthMm, productData.accessories.alu_top_profile.img, `Za ${numJoints} spojev`, numJoints);\r\n                     addOptimalAccessoryByLength(cart, productData.accessories.alu_rubber_gasket.id, 'Podlo\u017ena guma 60mm', profileLengthMm, productData.accessories.alu_rubber_gasket.img, `Za ${numJoints} spojev`, numJoints);\r\n                }\r\n             }\r\n        }\r\n        \r\n        if (profiles.type === 'aluminum' && numJoints > 0) {\r\n            const endCap = productData.accessories.alu_l_profile_end_cap;\r\n            const qty = numJoints * 2;\r\n            if (qty > 0) {\r\n                cart.items.push({\r\n                    name: endCap.name, img: endCap.img, details: `Za zaklju\u010dek Alu profilov na spojih`,\r\n                    qty: qty, price: endCap.price, total: qty * endCap.price,\r\n                    id: endCap.id, type: 'accessory'\r\n                });\r\n            }\r\n        }\r\n\r\n        const screwsData = productData.accessories.screws;\r\n        const findNextLongerScrew = (screwList, requiredLength) => {\r\n            if (!screwList || screwList.length === 0) return null;\r\n            const sortedScrews = [...screwList].sort((a, b) => a.length - b.length);\r\n            const screw = sortedScrews.find(s => s.length >= requiredLength);\r\n            return screw || sortedScrews[sortedScrews.length - 1]; \r\n        };\r\n        const addScrewSetToCart = (screw, neededQty, detailsSuffix) => {\r\n            if (!screw || neededQty <= 0) return;\r\n            const setsNeeded = Math.ceil(neededQty \/ screw.perSet);\r\n            if (setsNeeded > 0) {\r\n                cart.items.push({\r\n                    name: screw.name, img: screwsData.img,\r\n                    details: `Pakiranje ${screw.perSet} kos. ${detailsSuffix} (potrebno ~${Math.ceil(neededQty)} vijakov)`,\r\n                    qty: setsNeeded, price: screw.price, total: setsNeeded * screw.price,\r\n                    id: screw.id, type: 'screw', subType: screw.name.includes('fi19') ? 'fi19' : 'fi29',\r\n                    perSet: screw.perSet\r\n                });\r\n            }\r\n        };\r\n\r\n        if (profiles.type === 'polycarbonate') {\r\n            const numScrews = totalAreaM2 * 4.5;\r\n            const screwType = construction.material;\r\n            const requiredLength = panel.thickness + (screwType === 'wood' ? 30 : 15);\r\n            const screwList = screwsData[screwType]?.fi29;\r\n            const chosenScrew = findNextLongerScrew(screwList, requiredLength);\r\n            addScrewSetToCart(chosenScrew, numScrews, 'Za vija\u010denje skozi plo\u0161\u010de.');\r\n        } else if (profiles.type === 'aluminum') {\r\n            const screwType = construction.material;\r\n            const totalProfileLengthM = (finalPanelLengthMm * numJoints) \/ 1000;\r\n            const baseRequiredLength = panel.thickness + (screwType === 'wood' ? 30 : 15);\r\n\r\n            const numProfileScrews = totalProfileLengthM * 3;\r\n            const requiredLengthProfile = baseRequiredLength + 15;\r\n            const screwListProfile = screwsData[screwType]?.fi19;\r\n            const chosenScrewProfile = findNextLongerScrew(screwListProfile, requiredLengthProfile);\r\n            addScrewSetToCart(chosenScrewProfile, numProfileScrews, 'Za vija\u010denje ALU profilov.');\r\n\r\n            const numPanelScrews = totalAreaM2 * 3;\r\n            const requiredLengthPanel = baseRequiredLength;\r\n            const screwListPanel = screwsData[screwType]?.fi29;\r\n            const chosenScrewPanel = findNextLongerScrew(screwListPanel, requiredLengthPanel);\r\n            addScrewSetToCart(chosenScrewPanel, numPanelScrews, 'Za vija\u010denje plo\u0161\u010d (izven profilov).');\r\n        }\r\n        \r\n        baseCart = JSON.parse(JSON.stringify(cart));\r\n        userSelection.cart = JSON.parse(JSON.stringify(cart));\r\n        return true;\r\n    }\r\n    \r\n    function generateSummary(isInitial) {\r\n        if (isInitial) {\r\n            if (!calculateBaseMaterials()) {\r\n                alert(\"Napaka pri pripravi povzetka. Prosimo, preverite izbire.\");\r\n                prevStep();\r\n                return false;\r\n            }\r\n        }\r\n        recalculateAndDisplayFinalCart();\r\n        displayCart(userSelection.cart, summaryTableBody, summaryTableFoot);\r\n        return true;\r\n    }\r\n\r\n    function displayCart(cart, tableBody, tableFoot) {\r\n        tableBody.innerHTML = '';\r\n        tableFoot.innerHTML = '';\r\n        let totalPrice = 0;\r\n\r\n        cart.items.forEach(item => {\r\n            const itemTotal = item.qty * item.price;\r\n            totalPrice += itemTotal;\r\n            const row = document.createElement('tr');\r\n            \r\n            let unitText = 'kos';\r\n            if (item.name.toLowerCase().includes('guma') || item.name.toLowerCase().includes('trak')) {\r\n                if (item.details && item.details.includes('kolut')) {\r\n                    unitText = 'kolut';\r\n                }\r\n            } else if (item.name.toLowerCase().includes('vijak') || item.name.toLowerCase().includes('podlo\u017ek')) {\r\n                 unitText = 'komplet';\r\n            }\r\n\r\n            row.innerHTML = `\r\n                <td>${item.name}<\/td>\r\n                <td><img decoding=\"async\" src=\"${item.img}\" alt=\"${item.name}\" loading=\"lazy\"><\/td>\r\n                <td>${item.details || ''}<\/td>\r\n                <td style=\"text-align: right;\">${item.qty} ${unitText}<\/td>\r\n                <td style=\"text-align: right;\">${formatPrice(item.price)} \u20ac<\/td>\r\n                <td style=\"text-align: right;\"><strong>${formatPrice(itemTotal)} \u20ac<\/strong><\/td>\r\n            `;\r\n            tableBody.appendChild(row);\r\n        });\r\n        \r\n        if(cart.notes && cart.notes.length > 0){\r\n            const notesRow = document.createElement('tr');\r\n            notesRow.innerHTML = `<td colspan=\"6\" style=\"background-color: #f0f8ff; font-style: italic;\"><strong>Opombe k naro\u010dilu:<\/strong><br>${cart.notes.join('<br>')}<\/td>`;\r\n            tableBody.appendChild(notesRow);\r\n        }\r\n\r\n        const totalRow = document.createElement('tr');\r\n        totalRow.innerHTML = `\r\n            <td colspan=\"5\" style=\"text-align: right; font-weight: bold; font-size: 1.1em; border-top: 2px solid var(--secondary-color);\">SKUPAJ brez DDV:<\/td>\r\n            <td style=\"font-weight: bold; font-size: 1.2em; color: var(--button-color); border-top: 2px solid var(--secondary-color); text-align: right;\">${formatPrice(totalPrice)} \u20ac<\/td>\r\n        `;\r\n        tableFoot.appendChild(totalRow);\r\n        userSelection.cart.totalPrice = totalPrice;\r\n    }\r\n    \r\n    function resetConfigurator() {\r\n        document.querySelectorAll('.configurator-step input[type=\"number\"]').forEach(input => input.value = '');\r\n        document.querySelectorAll('.calculation-result, #custom-cut-section, #alu-profile-sub-options, #combination-options, #accessory-options-container').forEach(el => {\r\n            el.classList.add('hidden');\r\n            el.innerHTML = '';\r\n        });\r\n        document.querySelectorAll('.option-button').forEach(btn => btn.classList.remove('selected', 'disabled'));\r\n        initializeConfigurator();\r\n    }\r\n\r\n    function addToCart() {\r\n        console.log(\"--- Dodajanje v Ko\u0161arico ---\");\r\n\r\n        if (!userSelection.cart || !userSelection.cart.items || userSelection.cart.items.length === 0) {\r\n            alert(\"Ni artiklov za dodajanje v ko\u0161arico.\");\r\n            return;\r\n        }\r\n\r\n        \/\/ Button loading state\r\n        const kwAtcBtn = document.getElementById('add-to-cart-btn');\r\n        const kwAtcBtnOriginal = kwAtcBtn ? kwAtcBtn.textContent : '';\r\n        const kwSetLoading = () => {\r\n            if (!kwAtcBtn) return;\r\n            kwAtcBtn.textContent = 'Dodajanje v ko\u0161arico';\r\n            kwAtcBtn.disabled = true;\r\n            kwAtcBtn.classList.add('is-loading');\r\n        };\r\n        const kwClearLoading = () => {\r\n            if (!kwAtcBtn) return;\r\n            kwAtcBtn.textContent = kwAtcBtnOriginal;\r\n            kwAtcBtn.disabled = false;\r\n            kwAtcBtn.classList.remove('is-loading');\r\n        };\r\n        kwSetLoading();\r\n\r\n        \/\/ KW Pomo\u010dnik run logging\r\n        let kwRunId = '';\r\n        const kwStartRun = () => {\r\n            const fd = new FormData();\r\n            fd.append('action', 'kw_pomocnik_log_start');\r\n            fd.append('configurator', 'vpp');\r\n            fd.append('page_url', window.location.href);\r\n            try {\r\n                fd.append('selection', JSON.stringify(userSelection));\r\n                fd.append('items', JSON.stringify(userSelection.cart.items));\r\n            } catch (e) {}\r\n            return fetch('\/wp-admin\/admin-ajax.php', { method: 'POST', credentials: 'same-origin', body: fd })\r\n                .then(r => r.json())\r\n                .then(j => { if (j && j.success && j.data && j.data.run_id) kwRunId = j.data.run_id; })\r\n                .catch(e => console.warn('kw_pomocnik_log_start failed', e));\r\n        };\r\n        const kwFinishRun = () => {\r\n            if (!kwRunId) return Promise.resolve();\r\n            const fd = new FormData();\r\n            fd.append('action', 'kw_pomocnik_log_finish');\r\n            fd.append('run_id', kwRunId);\r\n            return fetch('\/wp-admin\/admin-ajax.php', { method: 'POST', credentials: 'same-origin', body: fd })\r\n                .catch(e => console.warn('kw_pomocnik_log_finish failed', e));\r\n        };\r\n\r\n        const addToCartRequest = (productId, quantity, variationId = null, extraData = {}) => {\r\n            const formData = new FormData();\r\n            formData.append('product_id', productId);\r\n            formData.append('quantity', quantity);\r\n            if (variationId) formData.append('variation_id', variationId);\r\n\r\n            formData.append('from_configurator', '1');\r\n            if (kwRunId) formData.append('kw_run_id', kwRunId);\r\n\r\n            for (const key in extraData) {\r\n                formData.append(key, extraData[key]);\r\n            }\r\n\r\n            console.log(\"Po\u0161iljam AJAX:\", Object.fromEntries(formData));\r\n\r\n            return fetch('\/?wc-ajax=add_to_cart', {\r\n                method: 'POST',\r\n                credentials: 'same-origin',\r\n                body: formData\r\n            }).then(res => res.json());\r\n        };\r\n\r\n        \/\/ Process all items sequentially\r\n        const addItemsSequentially = async (items) => {\r\n            for (const item of items) {\r\n                try {\r\n                    let extraData = {};\r\n\r\n                    \/\/ Handle custom cut notes for panels\r\n                    if (item.type === 'panel' && userSelection.length.customCutCm) {\r\n                        extraData.custom_cut_note = `Odrez na ${userSelection.length.customCutCm} cm`;\r\n                    }\r\n\r\n                    const result = await addToCartRequest(\r\n                        item.variationId || item.id,\r\n                        item.qty,\r\n                        item.variationId,\r\n                        extraData\r\n                    );\r\n                    console.log(`Artikel dodan (${item.name}):`, result);\r\n                } catch (error) {\r\n                    console.error(`Napaka pri dodajanju artikla ${item.name}:`, error);\r\n                }\r\n            }\r\n        };\r\n\r\n        \/\/ Start run -> add items -> finish run -> send email -> redirect\r\n        kwStartRun()\r\n            .then(() => addItemsSequentially(userSelection.cart.items))\r\n            .then(() => kwFinishRun())\r\n            .then(() => {\r\n                \/\/ Send email notification\r\n                return fetch('\/wp-admin\/admin-ajax.php', {\r\n                    method: 'POST',\r\n                    credentials: 'same-origin',\r\n                    headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\r\n                    body: new URLSearchParams({\r\n                        'action': 'send_custom_email',\r\n                        'panel_id': userSelection.panel.selectedProductId || '',\r\n                        'panel_length': userSelection.length.panelLengthMm || '',\r\n                        'num_panels': Object.values(userSelection.width.panelCombination?.counts || {}).reduce((s, c) => s + c, 0),\r\n                        'notes': userSelection.cart.notes.join(' | '),\r\n                        'screw_id': '',\r\n                        'num_screws': ''\r\n                    })\r\n                });\r\n            })\r\n            .then(response => response.json())\r\n            .then(emailResult => {\r\n                console.log(\"E-mail send result:\", emailResult);\r\n                window.location.href='https:\/\/termotom.com\/de\/warenkorb\/'; \/\/ redirect to cart\r\n            })\r\n            .catch(error => {\r\n                console.error(\"Napaka pri dodajanju:\", error);\r\n                kwClearLoading();\r\n                alert(\"Napaka pri dodajanju v ko\u0161arico.\");\r\n            });\r\n    }\r\n\r\n    function finalizeAndAddToCart() {\r\n        addToCart();\r\n    }\r\n\r\n    function formatPrice(price) {\r\n         return parseFloat(price).toFixed(2).replace('.', ',');\r\n    }\r\n\r\n     function drawRoofSketch(canvas, focus) {\r\n         const ctx = canvas.getContext('2d');\r\n         const w = canvas.width;\r\n         const h = canvas.height;\r\n         ctx.clearRect(0, 0, w, h);\r\n         ctx.strokeStyle = '#aaa'; \r\n         ctx.lineWidth = 1;\r\n         ctx.font = 'bold 13px Arial';\r\n         ctx.fillStyle = '#333';\r\n         ctx.textAlign = 'center';\r\n         ctx.textBaseline = 'bottom';\r\n\r\n         const frontHeight = h * 0.6;\r\n         const backHeight = h * 0.35;\r\n         const frontWidth = w * 0.8;\r\n         const backWidth = w * 0.7;\r\n         const depthFactor = 0.4; \r\n\r\n         const xCenter = w \/ 2;\r\n         const yTop = h * 0.15;\r\n         const yFrontBottom = yTop + frontHeight;\r\n         const yBackBottom = yTop + backHeight;\r\n\r\n         const xFrontLeft = xCenter - frontWidth \/ 2;\r\n         const xFrontRight = xCenter + frontWidth \/ 2;\r\n         const xBackLeft = xCenter - backWidth \/ 2;\r\n         const xBackRight = xCenter + backWidth \/ 2;\r\n\r\n         ctx.beginPath();\r\n         ctx.moveTo(xFrontLeft, yFrontBottom); ctx.lineTo(xFrontLeft, yTop + frontHeight * (1-depthFactor*0.8)); \r\n         ctx.moveTo(xFrontRight, yFrontBottom); ctx.lineTo(xFrontRight, yTop + frontHeight * (1-depthFactor*0.8)); \r\n         ctx.moveTo(xBackLeft, yBackBottom); ctx.lineTo(xBackLeft, yTop); \r\n         ctx.moveTo(xBackRight, yBackBottom); ctx.lineTo(xBackRight, yTop); \r\n         ctx.strokeStyle = '#999';\r\n         ctx.lineWidth = 2;\r\n         ctx.stroke();\r\n\r\n         ctx.beginPath();\r\n         ctx.moveTo(xFrontLeft, yTop + frontHeight * (1-depthFactor*0.8));\r\n         ctx.lineTo(xFrontRight, yTop + frontHeight * (1-depthFactor*0.8));\r\n         ctx.moveTo(xBackLeft, yTop);\r\n         ctx.lineTo(xBackRight, yTop);\r\n         ctx.moveTo(xFrontLeft, yTop + frontHeight * (1-depthFactor*0.8));\r\n         ctx.lineTo(xBackLeft, yTop);\r\n         ctx.moveTo(xFrontRight, yTop + frontHeight * (1-depthFactor*0.8));\r\n         ctx.lineTo(xBackRight, yTop);\r\n         ctx.strokeStyle = '#aaa';\r\n         ctx.lineWidth = 1.5;\r\n         ctx.stroke();\r\n\r\n         ctx.strokeStyle = '#d11d55';\r\n         ctx.lineWidth = 1.5;\r\n         ctx.fillStyle = '#d11d55';\r\n         ctx.font = 'bold 14px Arial';\r\n\r\n          function drawDimLine(x1, y1, x2, y2, label, labelOffset = 15, arrowSize = 5) {\r\n              ctx.beginPath();\r\n              ctx.moveTo(x1, y1);\r\n              ctx.lineTo(x2, y2);\r\n\r\n              const angle = Math.atan2(y2 - y1, x2 - x1);\r\n              ctx.moveTo(x1 + arrowSize * Math.cos(angle + Math.PI \/ 6), y1 + arrowSize * Math.sin(angle + Math.PI \/ 6));\r\n              ctx.lineTo(x1, y1);\r\n              ctx.lineTo(x1 + arrowSize * Math.cos(angle - Math.PI \/ 6), y1 + arrowSize * Math.sin(angle - Math.PI \/ 6));\r\n               ctx.moveTo(x2 - arrowSize * Math.cos(angle + Math.PI \/ 6), y2 - arrowSize * Math.sin(angle + Math.PI \/ 6));\r\n               ctx.lineTo(x2, y2);\r\n               ctx.lineTo(x2 - arrowSize * Math.cos(angle - Math.PI \/ 6), y2 - arrowSize * Math.sin(angle - Math.PI \/ 6));\r\n              ctx.stroke();\r\n\r\n               const midX = (x1 + x2) \/ 2;\r\n               const midY = (y1 + y2) \/ 2;\r\n               const labelX = midX + labelOffset * Math.sin(angle);\r\n               const labelY = midY - labelOffset * Math.cos(angle);\r\n\r\n               ctx.save();\r\n               ctx.translate(labelX, labelY);\r\n               ctx.textAlign = 'center';\r\n               ctx.textBaseline = 'middle';\r\n               ctx.fillText(label, 0, 0);\r\n               ctx.restore();\r\n          }\r\n\r\n           if (focus === 'length') {\r\n                ctx.lineWidth = 2.5;\r\n               drawDimLine(xBackRight, yTop, xFrontRight, yTop + frontHeight * (1-depthFactor*0.8) , 'Dol\u017eina', 20);\r\n           } else if (focus === 'width') {\r\n                 ctx.lineWidth = 2.5;\r\n                drawDimLine(xBackLeft, yTop - 20, xBackRight, yTop - 20, '\u0160irina', -20);\r\n            }\r\n      }\r\n      \r\n    function showAccessoryStep() {\r\n        accessoriesChanged = false;\r\n        populateAccessoryOptions();\r\n        showStep(9);\r\n    }\r\n\r\n    function toggleAccessoryOption(button, key, value = null) {\r\n        accessoriesChanged = true;\r\n\r\n        if(value === null) { \r\n            userSelection.accessories[key] = !userSelection.accessories[key];\r\n            button.classList.toggle('selected');\r\n        } else {\r\n            if(userSelection.accessories[key] === value) {\r\n                userSelection.accessories[key] = null;\r\n                button.classList.remove('selected');\r\n            } else {\r\n                userSelection.accessories[key] = value;\r\n                 const group = button.parentElement;\r\n                 group.querySelectorAll('.option-button').forEach(btn => btn.classList.remove('selected'));\r\n                button.classList.add('selected');\r\n            }\r\n        }\r\n        updateFinalizeButton();\r\n        recalculateAndDisplayFinalCart(); \r\n    }\r\n    \r\n    function updateFinalizeButton() {\r\n        const btn = document.getElementById('finalize-accessories-btn');\r\n        if(!btn) return;\r\n        if(accessoriesChanged) {\r\n            btn.textContent = 'Prika\u017ei posodobljen povzetek';\r\n        } else {\r\n            btn.textContent = 'Dodaj v ko\u0161arico';\r\n        }\r\n    }\r\n\r\n    function finalizeAccessories() {\r\n\t  const btn = document.getElementById('finalize-accessories-btn');\r\n\t  if (btn) {\r\n\t\tbtn.textContent = 'Dodajanje v ko\u0161arico';\r\n\t\tbtn.disabled = true;               \/\/ optional: prepre\u010di ve\u010dkratni klik\r\n\t\tbtn.classList.add('is-loading');   \/\/ optional: za CSS spinner\r\n\t  }\r\n        recalculateAndDisplayFinalCart();\r\n        if(accessoriesChanged) {\r\n            showStep(10);\r\n        } else {\r\n            addToCart();\r\n        }\r\n    }\r\n\r\n    function populateAccessoryOptions() {\r\n        const container = accessoryOptionsContainer;\r\n        container.innerHTML = '';\r\n        updateFinalizeButton();\r\n\r\n        const createGroup = (title, description = '') => {\r\n            const group = document.createElement('div');\r\n            group.innerHTML = `<h4>${title}<\/h4>${description ? `<p class=\"explanation-text\" style=\"font-size:0.85em\">${description}<\/p>` : ''}`;\r\n            const optionGroup = document.createElement('div');\r\n            optionGroup.className = 'option-group';\r\n            group.appendChild(optionGroup);\r\n            container.appendChild(group);\r\n            return optionGroup;\r\n        };\r\n        \r\n        const generalOptionGroup = createGroup('Splo\u0161ni dodatki');\r\n        const dmm = productData.accessories.drobni_material;\r\n        const dmmBtn = document.createElement('div');\r\n        dmmBtn.className = `option-button ${userSelection.accessories.drobni_material ? 'selected' : ''}`;\r\n        dmmBtn.onclick = () => toggleAccessoryOption(dmmBtn, 'drobni_material');\r\n        dmmBtn.innerHTML = `<img decoding=\"async\" src=\"${dmm.img}\" alt=\"${dmm.name}\"><span>${dmm.name}<\/span><div class=\"price-info\">+ ${formatPrice(dmm.price)} \u20ac<\/div>`;\r\n        generalOptionGroup.appendChild(dmmBtn);\r\n        \r\n        const tesnjenjeOptionGroup = createGroup('Tesnjenje', 'Silikonski kit je namenjen tesnjenju spojev in detajlov, ki se pojavijo ob monta\u017ei. Silikonski trak se uporablja primarno za spoj med plo\u0161\u010do in odkapnim profilom, kot alternativa obi\u010dajnemu silikoniranju.');\r\n        const sk = productData.accessories.silikonski_kit;\r\n        const skQty = Math.max(1, Math.ceil(userSelection.width.totalAreaM2 \/ 30));\r\n        const skBtn = document.createElement('div');\r\n        skBtn.className = `option-button ${userSelection.accessories.silikonski_kit ? 'selected' : ''}`;\r\n        skBtn.onclick = () => toggleAccessoryOption(skBtn, 'silikonski_kit');\r\n        skBtn.innerHTML = `<img decoding=\"async\" src=\"${sk.img}\" alt=\"${sk.name}\"><span>${sk.name} (${skQty}x)<\/span><div class=\"price-info\">+ ${formatPrice(sk.price * skQty)} \u20ac<\/div>`;\r\n        tesnjenjeOptionGroup.appendChild(skBtn);\r\n        \r\n        const st = productData.accessories.silikonski_trak;\r\n        const stBtn = document.createElement('div');\r\n        stBtn.className = `option-button ${userSelection.accessories.silikonski_trak ? 'selected' : ''}`;\r\n        stBtn.onclick = () => toggleAccessoryOption(stBtn, 'silikonski_trak');\r\n        stBtn.innerHTML = `<img decoding=\"async\" src=\"${st.img}\" alt=\"${st.name}\"><span>${st.name}<\/span><div class=\"price-info\">+ ${formatPrice(st.price)} \u20ac<\/div>`;\r\n        tesnjenjeOptionGroup.appendChild(stBtn);\r\n        \r\n        const sideLengthMm = userSelection.length.customCutCm ? userSelection.length.customCutCm * 10 : userSelection.length.panelLengthMm;\r\n        const aluDripProfileData = productData.accessories.alu_drip_profile[userSelection.panel.thickness];\r\n        if (aluDripProfileData) {\r\n            const bocniOptionGroup = createGroup('Dodatni bo\u010dni profili');\r\n            const { totalCost } = calculateOptimalPieces(aluDripProfileData.id, sideLengthMm * 2, 1);\r\n            const bpBtn = document.createElement('div');\r\n            bpBtn.className = `option-button ${userSelection.accessories.bocni_profili ? 'selected' : ''}`;\r\n            bpBtn.onclick = () => toggleAccessoryOption(bpBtn, 'bocni_profili');\r\n            bpBtn.innerHTML = `<img decoding=\"async\" src=\"${aluDripProfileData.img}\" alt=\"Bo\u010dni profili\"><span>Dodaj odkapne profile za stranice<\/span><div class=\"price-info\">+ ${formatPrice(totalCost)} \u20ac<\/div>`;\r\n            bocniOptionGroup.appendChild(bpBtn);\r\n        }\r\n\r\n        const hasFi29 = baseCart.items.some(item => item.subType === 'fi29');\r\n        const thick = userSelection.panel.thickness;\r\n        if ((thick === 10 || thick === 16) && hasFi29) {\r\n             const podlozkeOptionGroup = createGroup('Dodatne podlo\u017eke fi 50mm', 'Te podlo\u017eke so dodatek za bolj\u0161e tesnenje in se uporabijo namesto standardnih fi29mm podlo\u017ek.');\r\n             const fi29ScrewItem = baseCart.items.find(item => item.subType === 'fi29');\r\n             \r\n            let totalScrewsNeeded = 0;\r\n            if (fi29ScrewItem && fi29ScrewItem.details) {\r\n                const match = fi29ScrewItem.details.match(\/~(\\d+)\/); \r\n                if (match && match[1]) {\r\n                    totalScrewsNeeded = parseInt(match[1], 10);\r\n                }\r\n            }\r\n\r\n             Object.keys(productData.accessories.fi50_washers[thick]).forEach(color => {\r\n                const washer = productData.accessories.fi50_washers[thick][color];\r\n                let neededWasherSets = 0;\r\n                if (totalScrewsNeeded > 0) {\r\n                    neededWasherSets = Math.ceil(totalScrewsNeeded \/ washer.perSet);\r\n                }\r\n                const totalCost = washer.price * neededWasherSets;\r\n\r\n                const wBtn = document.createElement('div');\r\n                wBtn.className = `option-button ${userSelection.accessories.podlozke_upgrade === color ? 'selected' : ''}`;\r\n                wBtn.onclick = () => { toggleAccessoryOption(wBtn, 'podlozke_upgrade', color) };\r\n                wBtn.innerHTML = `<img decoding=\"async\" src=\"${washer.img}\" alt=\"${washer.name}\"><span>${washer.name}<\/span><div class=\"price-info\">+ ${formatPrice(totalCost)} \u20ac<\/div>`;\r\n                podlozkeOptionGroup.appendChild(wBtn);\r\n             });\r\n        }\r\n        \r\n        const coverableProfileIDs = [14071, 14082, 14096, 17802];\r\n        const profilesInBaseCart = baseCart.items.filter(item => coverableProfileIDs.includes(item.id));\r\n        if(profilesInBaseCart.length > 0) {\r\n            const pokroviOptionGroup = createGroup('Nadgradnja profilov z okrasnimi pokrovi', 'Okrasni pokrovi skrijejo vijake na spojnih profilih in estetsko zaklju\u010dijo videz nadstre\u0161ka.');\r\n            let initialCost = 0;\r\n            const coverableProfileIdsMap = { 14071: 14109, 14082: 14120, 14096: 14132, 17802: 14120 };\r\n            const lengthsByCoverType = {};\r\n            profilesInBaseCart.forEach(item => {\r\n                const coverId = coverableProfileIdsMap[item.id];\r\n                const variations = accessoryVariations[item.id];\r\n                const variation = variations.find(v => v.id === item.variationId);\r\n                if (variation) {\r\n                    lengthsByCoverType[coverId] = (lengthsByCoverType[coverId] || 0) + (variation.len * item.qty);\r\n                }\r\n            });\r\n            for (const coverIdStr in lengthsByCoverType) {\r\n                const coverId = parseInt(coverIdStr);\r\n                const totalLengthMm = lengthsByCoverType[coverId];\r\n                initialCost += calculateOptimalPieces(coverId, totalLengthMm, 1).totalCost;\r\n            }\r\n            const coverAccessoryData = productData.accessories.alu_cover_profile_63mm; \r\n            const pkBtn = document.createElement('div');\r\n            pkBtn.className = `option-button ${userSelection.accessories.okrasni_pokrov ? 'selected' : ''}`;\r\n            pkBtn.onclick = () => toggleAccessoryOption(pkBtn, 'okrasni_pokrov');\r\n            pkBtn.innerHTML = `<img decoding=\"async\" src=\"${coverAccessoryData.img}\" alt=\"Okrasni pokrovi\"><span>Dodaj okrasne pokrove<\/span><div class=\"price-info\">+ ${formatPrice(initialCost)} \u20ac<\/div>`;\r\n            pokroviOptionGroup.appendChild(pkBtn);\r\n        }\r\n\r\n        if (userSelection.profiles.type === 'aluminum') {\r\n            let numExtraProfiles = 2; \r\n            const panelCombinationCounts = userSelection.width.panelCombination.counts;\r\n            for (const widthStr in panelCombinationCounts) {\r\n                const width = parseInt(widthStr, 10);\r\n                const count = panelCombinationCounts[widthStr];\r\n                if (width === 2100) {\r\n                    numExtraProfiles += count;\r\n                }\r\n            }\r\n\r\n            const profileLengthMm = userSelection.length.customCutCm ? userSelection.length.customCutCm * 10 : userSelection.length.panelLengthMm;\r\n            let cost = 0;\r\n            if (userSelection.profiles.aluDirection === 'precno') {\r\n                cost = calculateOptimalPieces(productData.accessories.alu_joining_profile.id, profileLengthMm, numExtraProfiles).totalCost;\r\n            } else { \r\n                 cost += calculateOptimalPieces(productData.accessories.alu_top_profile.id, profileLengthMm, numExtraProfiles).totalCost;\r\n                 cost += calculateOptimalPieces(productData.accessories.alu_rubber_gasket.id, profileLengthMm, numExtraProfiles).totalCost;\r\n            }\r\n\r\n            const endCap = productData.accessories.alu_l_profile_end_cap;\r\n            const endCapCost = numExtraProfiles * 2 * endCap.price;\r\n            cost += endCapCost;\r\n            \r\n            const linijskoOptionGroup = createGroup('Dodatni profili za linijsko vija\u010denje', 'Dodajte profile na sredino vsake plo\u0161\u010de \u0161irine 2100mm in na zunanje robove za mo\u010dnej\u0161o pritrditev brez to\u010dkovnega vija\u010denja skozi plo\u0161\u010de.');\r\n            const lvBtn = document.createElement('div');\r\n            lvBtn.className = `option-button ${userSelection.accessories.linijsko_vijacenje ? 'selected' : ''}`;\r\n            lvBtn.onclick = () => toggleAccessoryOption(lvBtn, 'linijsko_vijacenje');\r\n            lvBtn.innerHTML = `<img decoding=\"async\" src=\"${productData.accessories.alu_top_profile.img}\" alt=\"Linijsko vija\u010denje\"><span>Dodaj linijsko vija\u010denje<\/span><div class=\"price-info\">+ ${formatPrice(cost)} \u20ac<\/div>`;\r\n            linijskoOptionGroup.appendChild(lvBtn);\r\n        }\r\n\r\n         if (baseCart.items.some(item => item.id === productData.accessories.alu_top_profile.id)) {\r\n             const profilOptionGroup = createGroup('Nadgradnja\/Sprememba pokrivnih profilov', 'Standardna \u0161irina spojnih in pokrivnih profilov je 60 mm, saj zagotavlja dobro razmerje med pokrivanjem robov plo\u0161\u010d in razmaki za diletacijo. 50mm \u0161irino izberemo obi\u010dajno le, kot so na\u0161i vzdol\u017eni nosilci \u0161irine 50mm. 80mm \u0161irina profila in tesnila pa izbolj\u0161a tesnenje in olaj\u0161a monta\u017eo, \u010de konstrukcija ni popolnoma pravokotna.');\r\n             const profile60Id = productData.accessories.alu_top_profile.id;\r\n             const rubber60Id = productData.accessories.alu_rubber_gasket.id;\r\n             const profile80Id = productData.accessories.alu_top_profile_80mm.id;\r\n             const rubber80Id = productData.accessories.alu_rubber_gasket_80mm.id;\r\n             const profile50Id = productData.accessories.alu_top_profile_50mm.id;\r\n             const rubber50Id = productData.accessories.alu_rubber_gasket_50mm.id;\r\n             \r\n             const numJoints = Object.values(userSelection.width.panelCombination.counts).reduce((s, c) => s + c, 0) - 1;\r\n             const profileLengthMm = userSelection.length.customCutCm ? userSelection.length.customCutCm * 10 : userSelection.length.panelLengthMm;\r\n\r\n             let cost60 = calculateOptimalPieces(profile60Id, profileLengthMm, numJoints).totalCost + calculateOptimalPieces(rubber60Id, profileLengthMm, numJoints).totalCost;\r\n             \r\n             let cost50 = calculateOptimalPieces(profile50Id, profileLengthMm, numJoints).totalCost + calculateOptimalPieces(rubber50Id, profileLengthMm, numJoints).totalCost;\r\n             const priceDiff50 = cost50 - cost60;\r\n             const pBtn50 = document.createElement('div');\r\n             pBtn50.className = `option-button ${userSelection.accessories.profil_upgrade === '50mm' ? 'selected' : ''}`;\r\n             pBtn50.onclick = () => { toggleAccessoryOption(pBtn50, 'profil_upgrade', '50mm') };\r\n             pBtn50.innerHTML = `<img decoding=\"async\" src=\"${productData.accessories.alu_top_profile_50mm.img}\" alt=\"50mm profili\"><span>Zamenjaj s profili 50mm<\/span><div class=\"price-info\">${priceDiff50 >= 0 ? '+' : ''} ${formatPrice(priceDiff50)} \u20ac<\/div>`;\r\n             profilOptionGroup.appendChild(pBtn50);\r\n\r\n             let cost80 = calculateOptimalPieces(profile80Id, profileLengthMm, numJoints).totalCost + calculateOptimalPieces(rubber80Id, profileLengthMm, numJoints).totalCost;\r\n             const priceDiff80 = cost80 - cost60;\r\n             const pBtn80 = document.createElement('div');\r\n             pBtn80.className = `option-button ${userSelection.accessories.profil_upgrade === '80mm' ? 'selected' : ''}`;\r\n             pBtn80.onclick = () => { toggleAccessoryOption(pBtn80, 'profil_upgrade', '80mm') };\r\n             pBtn80.innerHTML = `<img decoding=\"async\" src=\"${productData.accessories.alu_top_profile_80mm.img}\" alt=\"80mm profili\"><span>Zamenjaj s profili 80mm<\/span><div class=\"price-info\">${priceDiff80 >= 0 ? '+' : ''} ${formatPrice(priceDiff80)} \u20ac<\/div>`;\r\n             profilOptionGroup.appendChild(pBtn80);\r\n         }\r\n    }\r\n    \r\n    function recalculateAndDisplayFinalCart() {\r\n        let finalCart = JSON.parse(JSON.stringify(baseCart));\r\n        const accessories = userSelection.accessories;\r\n        \r\n        if (accessories.drobni_material) {\r\n            const dmm = productData.accessories.drobni_material;\r\n            if(!finalCart.items.some(i => i.id === dmm.id)) {\r\n                 addAccessoryByPiece(finalCart, dmm.id, dmm.name, 1, dmm.img, 'Komplet za monta\u017eo');\r\n            }\r\n        }\r\n\r\n        if (accessories.silikonski_kit) {\r\n            const sk = productData.accessories.silikonski_kit;\r\n            if(!finalCart.items.some(i => i.id === sk.id)) {\r\n                const skQty = Math.max(1, Math.ceil(userSelection.width.totalAreaM2 \/ 30));\r\n                addAccessoryByPiece(finalCart, sk.id, sk.name, skQty, sk.img, 'Za tesnenje stikov');\r\n            }\r\n        }\r\n        if (accessories.silikonski_trak) {\r\n             const st = productData.accessories.silikonski_trak;\r\n             if(!finalCart.items.some(i => i.id === st.id)) {\r\n                addAccessoryByPiece(finalCart, st.id, st.name, 1, st.img, 'Za zatesnitev odkapnega profila');\r\n             }\r\n        }\r\n\r\n        if (accessories.bocni_profili) {\r\n            const sideLengthMm = userSelection.length.customCutCm ? userSelection.length.customCutCm * 10 : userSelection.length.panelLengthMm;\r\n            const aluDripProfileData = productData.accessories.alu_drip_profile[userSelection.panel.thickness];\r\n            if (aluDripProfileData) {\r\n                 addOptimalAccessoryByLength(finalCart, aluDripProfileData.id, aluDripProfileData.name, sideLengthMm * 2, aluDripProfileData.img, 'Za bo\u010dne stranice');\r\n            }\r\n        }\r\n        \r\n        if (accessories.podlozke_upgrade) {\r\n            const color = accessories.podlozke_upgrade;\r\n            const thick = userSelection.panel.thickness;\r\n            const washerData = productData.accessories.fi50_washers[thick]?.[color];\r\n            \r\n            if (washerData) {\r\n                let fi29ScrewItemInBase = baseCart.items.find(item => item.subType === 'fi29'); \r\n                \r\n                if (fi29ScrewItemInBase && fi29ScrewItemInBase.details) {\r\n                    let totalScrewsNeeded = 0;\r\n                    const match = fi29ScrewItemInBase.details.match(\/~(\\d+)\/);\r\n                    if (match && match[1]) {\r\n                        totalScrewsNeeded = parseInt(match[1], 10);\r\n                    }\r\n\r\n                    if (totalScrewsNeeded > 0) {\r\n                        const neededWasherSets = Math.ceil(totalScrewsNeeded \/ washerData.perSet);\r\n                        \r\n                        finalCart.items.push({\r\n                            id: washerData.id,\r\n                            name: washerData.name,\r\n                            img: washerData.img,\r\n                            details: `Dodatne podlo\u017eke za ~${totalScrewsNeeded} vijakov (komplet ${washerData.perSet} kos)`,\r\n                            qty: neededWasherSets,\r\n                            price: washerData.price,\r\n                            total: neededWasherSets * washerData.price,\r\n                            type: 'accessory'\r\n                        });\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        \r\n        if(accessories.profil_upgrade) {\r\n            const profile60Id = productData.accessories.alu_top_profile.id;\r\n            const rubber60Id = productData.accessories.alu_rubber_gasket.id;\r\n            \r\n            const profilesToReplace = finalCart.items.filter(item => item.id === profile60Id);\r\n            const rubbersToReplace = finalCart.items.filter(item => item.id === rubber60Id);\r\n            \r\n            if (profilesToReplace.length > 0 || rubbersToReplace.length > 0) {\r\n                finalCart.items = finalCart.items.filter(item => item.id !== profile60Id && item.id !== rubber60Id);\r\n\r\n                let newProfileId, newRubberId, newProfileData, newRubberData;\r\n\r\n                if (accessories.profil_upgrade === '80mm') {\r\n                    newProfileId = productData.accessories.alu_top_profile_80mm.id;\r\n                    newRubberId = productData.accessories.alu_rubber_gasket_80mm.id;\r\n                    newProfileData = productData.accessories.alu_top_profile_80mm;\r\n                    newRubberData = productData.accessories.alu_rubber_gasket_80mm;\r\n                } else if (accessories.profil_upgrade === '50mm') {\r\n                    newProfileId = productData.accessories.alu_top_profile_50mm.id;\r\n                    newRubberId = productData.accessories.alu_rubber_gasket_50mm.id;\r\n                    newProfileData = productData.accessories.alu_top_profile_50mm;\r\n                    newRubberData = productData.accessories.alu_rubber_gasket_50mm;\r\n                }\r\n\r\n                if (newProfileId) {\r\n                    profilesToReplace.forEach(item => {\r\n                        const len = accessoryVariations[profile60Id].find(v => v.id === item.variationId).len;\r\n                        addOptimalAccessoryByLength(finalCart, newProfileId, newProfileData.name, len, newProfileData.img, item.details, item.qty);\r\n                    });\r\n                    rubbersToReplace.forEach(item => {\r\n                        const len = accessoryVariations[rubber60Id].find(v => v.id === item.variationId).len;\r\n                        addOptimalAccessoryByLength(finalCart, newRubberId, newRubberData.name, len, newRubberData.img, item.details, item.qty);\r\n                    });\r\n                }\r\n            }\r\n        }\r\n\r\n        if (accessories.okrasni_pokrov) {\r\n            const coverableProfileIdsMap = { 14071: 14109, 14082: 14120, 14096: 14132, 17802: 14120 };\r\n            const coverDataMap = {\r\n                14109: productData.accessories.alu_cover_profile_53mm,\r\n                14120: productData.accessories.alu_cover_profile_63mm,\r\n                14132: productData.accessories.alu_cover_profile_83mm\r\n            }\r\n            const profilesToCover = finalCart.items.filter(item => Object.keys(coverableProfileIdsMap).includes(String(item.id)));\r\n            const lengthsByCoverType = {};\r\n            profilesToCover.forEach(item => {\r\n                const coverId = coverableProfileIdsMap[item.id];\r\n                const variations = accessoryVariations[item.id];\r\n                const variation = variations.find(v => v.id === item.variationId);\r\n                if (variation) {\r\n                    lengthsByCoverType[coverId] = (lengthsByCoverType[coverId] || 0) + (variation.len * item.qty);\r\n                }\r\n            });\r\n\r\n            for (const coverIdStr in lengthsByCoverType) {\r\n                const coverId = parseInt(coverIdStr);\r\n                const totalLengthMm = lengthsByCoverType[coverId];\r\n                const coverData = coverDataMap[coverId];\r\n                if (coverData) {\r\n                    addOptimalAccessoryByLength(finalCart, coverId, coverData.name, totalLengthMm, coverData.img, 'Za pokritje vijakov na profilih');\r\n                }\r\n            }\r\n        }\r\n        \r\n        if(accessories.linijsko_vijacenje && userSelection.profiles.type === 'aluminum') {\r\n            const washerIds = Object.values(productData.accessories.fi50_washers)\r\n                                  .flatMap(thick => Object.values(thick).map(color => color.id));\r\n            finalCart.items = finalCart.items.filter(item => {\r\n                if (item.subType === 'fi29') return false; \r\n                if (washerIds.includes(item.id)) return false; \r\n                return true;\r\n            });\r\n\r\n            let numExtraProfiles = 2; \r\n            const panelCombinationCounts = userSelection.width.panelCombination.counts;\r\n            for (const widthStr in panelCombinationCounts) {\r\n                const width = parseInt(widthStr, 10);\r\n                const count = panelCombinationCounts[widthStr];\r\n                if (width === 2100) {\r\n                    numExtraProfiles += count;\r\n                }\r\n            }\r\n            \r\n            const profileLengthMm = userSelection.length.customCutCm ? userSelection.length.customCutCm * 10 : userSelection.length.panelLengthMm;\r\n            \r\n            if (numExtraProfiles > 0) {\r\n                 if (userSelection.profiles.aluDirection === 'precno') {\r\n                    addOptimalAccessoryByLength(finalCart, productData.accessories.alu_joining_profile.id, 'Dodatni Alu dvojni vezni profil', profileLengthMm, productData.accessories.alu_joining_profile.img, 'Za linijsko vija\u010denje', numExtraProfiles);\r\n                } else { \r\n                     addOptimalAccessoryByLength(finalCart, productData.accessories.alu_top_profile.id, 'Dodatni Alu pokrivni profil 60mm', profileLengthMm, productData.accessories.alu_top_profile.img, 'Za linijsko vija\u010denje', numExtraProfiles);\r\n                     addOptimalAccessoryByLength(finalCart, productData.accessories.alu_rubber_gasket.id, 'Dodatna podlo\u017ena guma 60mm', profileLengthMm, productData.accessories.alu_rubber_gasket.img, 'Za linijsko vija\u010denje', numExtraProfiles);\r\n                }\r\n                \r\n                const endCap = productData.accessories.alu_l_profile_end_cap;\r\n                const endCapQty = numExtraProfiles * 2;\r\n                finalCart.items.push({\r\n                    name: endCap.name, \r\n                    img: endCap.img, \r\n                    details: `Za zaklju\u010dek dodatnih Alu profilov`,\r\n                    qty: endCapQty, \r\n                    price: endCap.price, \r\n                    total: endCapQty * endCap.price,\r\n                    id: endCap.id, \r\n                    type: 'accessory'\r\n                });\r\n\r\n                const findNextLongerScrew = (screwList, requiredLength) => {\r\n                    if (!screwList || screwList.length === 0) return null;\r\n                    const sortedScrews = [...screwList].sort((a, b) => a.length - b.length);\r\n                    const screw = sortedScrews.find(s => s.length >= requiredLength);\r\n                    return screw || sortedScrews[sortedScrews.length - 1]; \r\n                };\r\n                const addScrewSetToCart = (screw, neededQty, detailsSuffix) => {\r\n                    if (!screw || neededQty <= 0) return;\r\n                    const setsNeeded = Math.ceil(neededQty \/ screw.perSet);\r\n                    if (setsNeeded > 0) {\r\n                        finalCart.items.push({\r\n                            name: screw.name, img: productData.accessories.screws.img,\r\n                            details: `Pakiranje ${screw.perSet} kos. ${detailsSuffix} (potrebno ~${Math.ceil(neededQty)} vijakov)`,\r\n                            qty: setsNeeded, price: screw.price, total: setsNeeded * screw.price,\r\n                            id: screw.id, type: 'screw', subType: 'fi19', perSet: screw.perSet\r\n                        });\r\n                    }\r\n                };\r\n\r\n                const totalNewProfileLengthM = (profileLengthMm * numExtraProfiles) \/ 1000;\r\n                const numProfileScrews = totalNewProfileLengthM * 3;\r\n                const screwType = userSelection.construction.material;\r\n                const requiredLengthProfile = userSelection.panel.thickness + (screwType === 'wood' ? 30 : 15) + 15;\r\n                const screwListProfile = productData.accessories.screws[screwType]?.fi19;\r\n                const chosenScrewProfile = findNextLongerScrew(screwListProfile, requiredLengthProfile);\r\n                addScrewSetToCart(chosenScrewProfile, numProfileScrews, 'Za vija\u010denje dodatnih ALU profilov.');\r\n            }\r\n        }\r\n        \r\n        userSelection.cart = finalCart;\r\n    }\r\n\r\n    document.addEventListener('DOMContentLoaded', initializeConfigurator);\r\n<\/script>\r\n<\/body>\r\n<\/html>\n\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":4,"featured_media":0,"parent":49018,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-49021","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Konfigurator f\u00fcr Polycarbonat-Mehrstegplatten | Termotom<\/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:\/\/termotom.com\/de\/dachkonfigurator\/konfigurator-fuer-polycarbonat-mehrstegplatten\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Konfigurator f\u00fcr Polycarbonat-Mehrstegplatten | Termotom\" \/>\n<meta property=\"og:url\" content=\"https:\/\/termotom.com\/de\/dachkonfigurator\/konfigurator-fuer-polycarbonat-mehrstegplatten\/\" \/>\n<meta property=\"og:site_name\" content=\"Trgovina Termotom\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-24T10:31:20+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:\\\/\\\/termotom.com\\\/de\\\/dachkonfigurator\\\/konfigurator-fuer-polycarbonat-mehrstegplatten\\\/\",\"url\":\"https:\\\/\\\/termotom.com\\\/de\\\/dachkonfigurator\\\/konfigurator-fuer-polycarbonat-mehrstegplatten\\\/\",\"name\":\"Konfigurator f\u00fcr Polycarbonat-Mehrstegplatten - Trgovina Termotom\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/termotom.com\\\/de\\\/#website\"},\"datePublished\":\"2025-10-17T15:37:26+00:00\",\"dateModified\":\"2026-10-24T10:31:20+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/termotom.com\\\/de\\\/dachkonfigurator\\\/konfigurator-fuer-polycarbonat-mehrstegplatten\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/termotom.com\\\/de\\\/dachkonfigurator\\\/konfigurator-fuer-polycarbonat-mehrstegplatten\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/termotom.com\\\/de\\\/dachkonfigurator\\\/konfigurator-fuer-polycarbonat-mehrstegplatten\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/termotom.com\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dachkonfigurator\",\"item\":\"https:\\\/\\\/termotom.com\\\/de\\\/dachkonfigurator\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Konfigurator f\u00fcr Polycarbonat-Mehrstegplatten\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/termotom.com\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/termotom.com\\\/de\\\/\",\"name\":\"Trgovina Termotom\",\"description\":\"Onlineshop f\u00fcr Plexiglas- und Polycarbonatplatten, Bedachungen und Zubeh\u00f6r.\",\"publisher\":{\"@id\":\"https:\\\/\\\/termotom.com\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/termotom.com\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/termotom.com\\\/de\\\/#organization\",\"name\":\"Trgovina Termotom\",\"url\":\"https:\\\/\\\/termotom.com\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/termotom.com\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/termotom.com\\\/wp-content\\\/uploads\\\/logo.png\",\"contentUrl\":\"https:\\\/\\\/termotom.com\\\/wp-content\\\/uploads\\\/logo.png\",\"width\":400,\"height\":60,\"caption\":\"Trgovina Termotom\"},\"image\":{\"@id\":\"https:\\\/\\\/termotom.com\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Konfigurator f\u00fcr Polycarbonat-Mehrstegplatten | Termotom","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:\/\/termotom.com\/de\/dachkonfigurator\/konfigurator-fuer-polycarbonat-mehrstegplatten\/","og_locale":"de_DE","og_type":"article","og_title":"Konfigurator f\u00fcr Polycarbonat-Mehrstegplatten | Termotom","og_url":"https:\/\/termotom.com\/de\/dachkonfigurator\/konfigurator-fuer-polycarbonat-mehrstegplatten\/","og_site_name":"Trgovina Termotom","article_modified_time":"2026-10-24T10:31:20+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/termotom.com\/de\/dachkonfigurator\/konfigurator-fuer-polycarbonat-mehrstegplatten\/","url":"https:\/\/termotom.com\/de\/dachkonfigurator\/konfigurator-fuer-polycarbonat-mehrstegplatten\/","name":"Konfigurator f\u00fcr Polycarbonat-Mehrstegplatten - Trgovina Termotom","isPartOf":{"@id":"https:\/\/termotom.com\/de\/#website"},"datePublished":"2025-10-17T15:37:26+00:00","dateModified":"2026-10-24T10:31:20+00:00","breadcrumb":{"@id":"https:\/\/termotom.com\/de\/dachkonfigurator\/konfigurator-fuer-polycarbonat-mehrstegplatten\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/termotom.com\/de\/dachkonfigurator\/konfigurator-fuer-polycarbonat-mehrstegplatten\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/termotom.com\/de\/dachkonfigurator\/konfigurator-fuer-polycarbonat-mehrstegplatten\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/termotom.com\/de\/"},{"@type":"ListItem","position":2,"name":"Dachkonfigurator","item":"https:\/\/termotom.com\/de\/dachkonfigurator\/"},{"@type":"ListItem","position":3,"name":"Konfigurator f\u00fcr Polycarbonat-Mehrstegplatten"}]},{"@type":"WebSite","@id":"https:\/\/termotom.com\/de\/#website","url":"https:\/\/termotom.com\/de\/","name":"Trgovina Termotom","description":"Onlineshop f\u00fcr Plexiglas- und Polycarbonatplatten, Bedachungen und Zubeh\u00f6r.","publisher":{"@id":"https:\/\/termotom.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/termotom.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/termotom.com\/de\/#organization","name":"Trgovina Termotom","url":"https:\/\/termotom.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/termotom.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/termotom.com\/wp-content\/uploads\/logo.png","contentUrl":"https:\/\/termotom.com\/wp-content\/uploads\/logo.png","width":400,"height":60,"caption":"Trgovina Termotom"},"image":{"@id":"https:\/\/termotom.com\/de\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/termotom.com\/de\/wp-json\/wp\/v2\/pages\/49021","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/termotom.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/termotom.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/termotom.com\/de\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/termotom.com\/de\/wp-json\/wp\/v2\/comments?post=49021"}],"version-history":[{"count":1,"href":"https:\/\/termotom.com\/de\/wp-json\/wp\/v2\/pages\/49021\/revisions"}],"predecessor-version":[{"id":49022,"href":"https:\/\/termotom.com\/de\/wp-json\/wp\/v2\/pages\/49021\/revisions\/49022"}],"up":[{"embeddable":true,"href":"https:\/\/termotom.com\/de\/wp-json\/wp\/v2\/pages\/49018"}],"wp:attachment":[{"href":"https:\/\/termotom.com\/de\/wp-json\/wp\/v2\/media?parent=49021"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}