{"id":3628,"date":"2025-03-03T08:54:50","date_gmt":"2025-03-03T08:54:50","guid":{"rendered":"http:\/\/sw-themes.com\/porto_dummy\/?post_type=porto_builder&#038;p=3628"},"modified":"2026-03-26T11:01:12","modified_gmt":"2026-03-26T11:01:12","slug":"single-product","status":"publish","type":"porto_builder","link":"https:\/\/expovero.com\/en\/?porto_builder=single-product","title":{"rendered":"Single Product"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"3628\" class=\"elementor elementor-3628\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a6c92cd e-flex e-con-boxed e-con e-parent\" data-id=\"a6c92cd\" data-element_type=\"container\" data-e-type=\"container\">\r\n\t\t\t\t\t<div class=\"e-con-inner\">\r\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e9a6f47 e-flex e-con-boxed e-con e-parent\" data-id=\"e9a6f47\" data-element_type=\"container\" data-e-type=\"container\">\r\n\t\t\t\t\t<div class=\"e-con-inner\">\r\n\t\t<div class=\"elementor-element elementor-element-88b5bac e-con-full e-flex e-con e-child\" data-id=\"88b5bac\" data-element_type=\"container\" data-e-type=\"container\">\r\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d1c1c36 e-con-full e-flex e-con e-child\" data-id=\"d1c1c36\" data-element_type=\"container\" data-e-type=\"container\">\r\n\t\t<div class=\"elementor-element elementor-element-d4404fe e-con-full e-flex e-con e-child\" data-id=\"d4404fe\" data-element_type=\"container\" data-e-type=\"container\">\r\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8aefb65 elementor-widget elementor-widget-shortcode\" data-id=\"8aefb65\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <form id=\"messen-selection-form\" method=\"get\" style=\"position:relative;\" action=\"\">\r\n        <input\r\n            type=\"text\"\r\n            id=\"messe-search\"\r\n            placeholder=\"Search trade fair...\"\r\n            autocomplete=\"off\"\r\n            value=\"\"\r\n        >\r\n\r\n        <select name=\"selected_messe\" id=\"selected_messe\" style=\"display:none;\">\r\n            <option value=\"\">Choose a fair...<\/option>\r\n                                            <option value=\"33950\">\r\n                    Interpack - 05\/07\/2026 - 05\/13\/2026 - D\u00fcsseldorf                <\/option>\r\n                                            <option value=\"33815\">\r\n                    Techtextil 2026 - 04\/21\/2026 - 04\/24\/2026 - Frankfurt                <\/option>\r\n                                            <option value=\"33807\">\r\n                    IFH Interm - 04\/14\/2026 - 04\/17\/2026 - Nuremberg                <\/option>\r\n                                            <option value=\"33810\">\r\n                    Hannover Messe 2026 - 04\/20\/2026 - 04\/24\/2026 - Hannover                <\/option>\r\n                                            <option value=\"33804\">\r\n                    Tube + Wire 2026 - April 13-17, 2026 - D\u00fcsseldorf                <\/option>\r\n                                            <option value=\"33801\">\r\n                    Pro Light + Sound - 03\/08\/2026 - 03\/13\/2026 - Frankfurt                <\/option>\r\n                                            <option value=\"33798\">\r\n                    Prowein 2026 - 03\/15\/2026 - 03\/17\/2026 - D\u00fcsseldorf                <\/option>\r\n                                            <option value=\"33795\">\r\n                    Didacta 2026 - March 10, 2026 - March 14, 2026 - Cologne                <\/option>\r\n                                            <option value=\"33792\">\r\n                    Light + Building - 03\/08\/2026 - 03\/13\/2026 - Frankfurt                <\/option>\r\n                                            <option value=\"33789\">\r\n                    Tire Technology - March 3, 2026 - March 5, 2026 - Hannover                <\/option>\r\n                                            <option value=\"33786\">\r\n                    EuroShop 2026 - 02\/22\/2026 - 02\/26\/2026 - D\u00fcsseldorf                <\/option>\r\n                                            <option value=\"33783\">\r\n                    Empack 2026 - 02\/25\/2026 - 02\/26\/2026 - Dortmund                <\/option>\r\n                                            <option value=\"33888\">\r\n                    Interschutz 2026 - 01\/06\/2026 - 06\/06\/2026 - Hannover                <\/option>\r\n                    <\/select>\r\n\r\n        <p\r\n            id=\"expo-selected-fair-info\"\r\n            class=\"expo-selected-fair-info\"\r\n            style=\"margin-top:10px;display:none;\"\r\n        ><\/p>\r\n    <input type=\"hidden\" name=\"trp-form-language\" value=\"en\"\/><\/form>\r\n\r\n    <div\r\n        id=\"suggestion-box\"\r\n        style=\"display:none;border:1px solid #ccc;max-height:220px;overflow-y:auto;position:absolute;background:#fff;width:100%;z-index:9999;\"\r\n    ><\/div>\r\n\r\n    <script>\r\n    document.addEventListener('DOMContentLoaded', function() {\r\n        const searchInput = document.getElementById('messe-search');\r\n        const select = document.getElementById('selected_messe');\r\n        const suggestionBox = document.getElementById('suggestion-box');\r\n        const form = document.getElementById('messen-selection-form');\r\n        const info = document.getElementById('expo-selected-fair-info');\r\n\r\n        if (!searchInput || !select || !suggestionBox || !form || !info) return;\r\n\r\n        function getCookie(name) {\r\n            const value = '; ' + document.cookie;\r\n            const parts = value.split('; ' + name + '=');\r\n            if (parts.length === 2) {\r\n                return decodeURIComponent(parts.pop().split(';').shift());\r\n            }\r\n            return '';\r\n        }\r\n\r\n        function saveSelectedFair(id, label) {\r\n            try {\r\n                localStorage.setItem('expoaffair_selected_messe_id', String(id));\r\n                localStorage.setItem('expoaffair_selected_messe_label', String(label));\r\n            } catch (e) {}\r\n        }\r\n\r\n        function readSelectedFair() {\r\n            const cookieId = getCookie('expoaffair_selected_messe_id');\r\n            let localId = '';\r\n            let localLabel = '';\r\n\r\n            try {\r\n                localId = localStorage.getItem('expoaffair_selected_messe_id') || '';\r\n                localLabel = localStorage.getItem('expoaffair_selected_messe_label') || '';\r\n            } catch (e) {}\r\n\r\n            return {\r\n                id: cookieId || localId || '',\r\n                label: localLabel || ''\r\n            };\r\n        }\r\n\r\n        function setVisualSelectedFair(id, fallbackLabel) {\r\n            if (!id) return false;\r\n\r\n            const option = Array.from(select.options).find(function(opt) {\r\n                return opt.value === String(id);\r\n            });\r\n\r\n            if (option) {\r\n                select.value = option.value;\r\n                searchInput.value = option.text;\r\n                info.style.display = 'block';\r\n                info.innerHTML = 'Ausgew\u00e4hlte Messe: <strong>' + option.text + '<\/strong>';\r\n                saveSelectedFair(option.value, option.text);\r\n                return true;\r\n            }\r\n\r\n            if (fallbackLabel) {\r\n                searchInput.value = fallbackLabel;\r\n                info.style.display = 'block';\r\n                info.innerHTML = 'Ausgew\u00e4hlte Messe: <strong>' + fallbackLabel + '<\/strong>';\r\n                return true;\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        \/\/ Always restore visually from current visitor storage, never from cached PHP HTML.\r\n        const restored = readSelectedFair();\r\n        setVisualSelectedFair(restored.id, restored.label);\r\n\r\n        searchInput.addEventListener('input', function() {\r\n            const query = this.value.toLowerCase().trim();\r\n            suggestionBox.innerHTML = '';\r\n\r\n            if (!query) {\r\n                suggestionBox.style.display = 'none';\r\n                return;\r\n            }\r\n\r\n            Array.from(select.options).forEach(function(option) {\r\n                if (!option.value) return;\r\n\r\n                if (option.text.toLowerCase().includes(query)) {\r\n                    const item = document.createElement('div');\r\n                    item.textContent = option.text;\r\n                    item.style.padding = '10px';\r\n                    item.style.cursor = 'pointer';\r\n\r\n                    item.addEventListener('click', function() {\r\n                        saveSelectedFair(option.value, option.text);\r\n\r\n                        const nextUrl = new URL(window.location.href);\r\n                        nextUrl.searchParams.set('selected_messe', option.value);\r\n                        window.location.href = nextUrl.toString();\r\n                    });\r\n\r\n                    item.addEventListener('mouseenter', function() {\r\n                        item.style.backgroundColor = '#f3f3f3';\r\n                    });\r\n\r\n                    item.addEventListener('mouseleave', function() {\r\n                        item.style.backgroundColor = '#fff';\r\n                    });\r\n\r\n                    suggestionBox.appendChild(item);\r\n                }\r\n            });\r\n\r\n            suggestionBox.style.display = suggestionBox.children.length ? 'block' : 'none';\r\n        });\r\n\r\n        document.addEventListener('click', function(e) {\r\n            if (!form.contains(e.target)) {\r\n                suggestionBox.style.display = 'none';\r\n            }\r\n        });\r\n    });\r\n    <\/script>\r\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f2461f4 e-con-full e-flex e-con e-child\" data-id=\"f2461f4\" data-element_type=\"container\" data-e-type=\"container\">\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"author":1,"featured_media":0,"template":"","porto_builder_type":[32],"class_list":["post-3628","porto_builder","type-porto_builder","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/expovero.com\/en\/wp-json\/wp\/v2\/porto_builder\/3628","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/expovero.com\/en\/wp-json\/wp\/v2\/porto_builder"}],"about":[{"href":"https:\/\/expovero.com\/en\/wp-json\/wp\/v2\/types\/porto_builder"}],"author":[{"embeddable":true,"href":"https:\/\/expovero.com\/en\/wp-json\/wp\/v2\/users\/1"}],"version-history":[{"count":19,"href":"https:\/\/expovero.com\/en\/wp-json\/wp\/v2\/porto_builder\/3628\/revisions"}],"predecessor-version":[{"id":5438,"href":"https:\/\/expovero.com\/en\/wp-json\/wp\/v2\/porto_builder\/3628\/revisions\/5438"}],"wp:attachment":[{"href":"https:\/\/expovero.com\/en\/wp-json\/wp\/v2\/media?parent=3628"}],"wp:term":[{"taxonomy":"porto_builder_type","embeddable":true,"href":"https:\/\/expovero.com\/en\/wp-json\/wp\/v2\/porto_builder_type?post=3628"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}