{"id":154,"date":"2024-04-16T02:37:11","date_gmt":"2024-04-16T02:37:11","guid":{"rendered":"https:\/\/demo.bravisthemes.com\/herrington\/?page_id=154"},"modified":"2025-03-26T12:18:18","modified_gmt":"2025-03-26T12:18:18","slug":"invest-news","status":"publish","type":"page","link":"https:\/\/www.invest2030.pt\/pt\/invest-news\/","title":{"rendered":"Invest NEWS"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"154\" class=\"elementor elementor-154\" data-elementor-post-type=\"page\">\n\t\t\t\t        <section class=\"elementor-section elementor-top-section elementor-element elementor-element-f2b94eb elementor-section-boxed elementor-section-height-default elementor-section-height-default pxl-row-scroll-none pxl-zoom-point-false pxl-section-overflow-visible\" data-id=\"f2b94eb\" data-element_type=\"section\">\n\n                \n                <div class=\"elementor-container elementor-column-gap-extended \">\n                <div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4948512 pxl-column-none pxl-column-overflow-hidden-no\" data-id=\"4948512\" data-element_type=\"column\">\r\n        <div class=\"elementor-widget-wrap elementor-element-populated\">\r\n                     \r\n        \t\t<div class=\"elementor-element elementor-element-edbd4c2 elementor-widget elementor-widget-pxl_heading\" data-id=\"edbd4c2\" data-element_type=\"widget\" data-widget_type=\"pxl_heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<div id=\"pxl-pxl_heading-edbd4c2-2731\" class=\"pxl-heading px-sub-title-default-style \">\n\t<div class=\"pxl-heading--inner\">\n\t\t\n\t\t<h3 class=\"pxl-item--title style-default  highlight-default \" data-wow-delay=\"ms\">\n\t\t\t\t\t\t\tWebinars We.Invest\t\n\t\t\t\t\n\t\t<\/h3>\n\t\t\n\t<\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b1d5fad elementor-widget elementor-widget-heading\" data-id=\"b1d5fad\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Participe gratuitamente nos webinars da Invest2030<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0c9f1da elementor-widget elementor-widget-shortcode\" data-id=\"0c9f1da\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <div id=\"webinar-container\">\n        <p>Carregando webinars...<\/p>\n    <\/div>\n\n    <div id=\"webinar-modal\" class=\"invest2030-webinar-modal\" aria-hidden=\"true\">\n        <div class=\"invest2030-webinar-modal-content\">\n            <button type=\"button\" class=\"invest2030-webinar-modal-close\" aria-label=\"Fechar\">&times;<\/button>\n\n            <h5 id=\"modal-webinar-title\"><\/h5>\n            <p id=\"modal-webinar-date\" class=\"webinar-date\"><\/p>\n\n            <p class=\"webinar-description\">\n                Participe Gratuitamente numa das sess\u00f5es do Webinar da Invest2030.<br>\n                Inscreva-se e receber\u00e1 no seu e-mail a informa\u00e7\u00e3o para assistir \u00e0 confer\u00eancia <strong id=\"modal-webinar-name\"><\/strong>.\n            <\/p>\n\n            <p class=\"webinar-note\">\n                *O webinar ser\u00e1 gravado. Ao participar, est\u00e1 a concordar com a grava\u00e7\u00e3o da sess\u00e3o escolhida.\n            <\/p>\n\n            <form id=\"webinar-form\">\n                <input type=\"hidden\" name=\"webinar_id\" id=\"webinar_id\">\n                <input type=\"hidden\" name=\"webinarsession_id\" id=\"webinarsession_id\">\n                <input type=\"text\" name=\"nome\" placeholder=\"Nome Completo\" required>\n                <input type=\"email\" name=\"email\" placeholder=\"E-mail\" required>\n                <input type=\"text\" name=\"empresa\" placeholder=\"Empresa (Opcional)\">\n                <input type=\"text\" name=\"telefone\" placeholder=\"Telefone (Opcional)\">\n                <button type=\"submit\">Inscrever-se Gratuitamente<\/button>\n            <\/form>\n\n            <p id=\"response-message\"><\/p>\n        <\/div>\n    <\/div>\n\n    <style>\n        #webinar-container .webinar-grid {\n            display: grid;\n            grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n            gap: 24px;\n        }\n\n        #webinar-container .webinar-card {\n            background: #fff;\n            border-radius: 8px;\n            overflow: hidden;\n            box-shadow: 0 4px 16px rgba(0,0,0,0.08);\n        }\n\n        #webinar-container .webinar-image {\n            min-height: 190px;\n            background-size: cover;\n            background-position: center;\n        }\n\n        #webinar-container .webinar-content {\n            padding: 18px;\n        }\n\n        #webinar-container .webinar-orador {\n            display: flex;\n            align-items: center;\n            gap: 10px;\n            margin-bottom: 14px;\n        }\n\n        #webinar-container .webinar-orador img {\n            width: 42px;\n            height: 42px;\n            object-fit: cover;\n            border-radius: 50%;\n        }\n\n        #webinar-container .webinar-title {\n            margin: 0 0 10px 0;\n        }\n\n        #webinar-container .webinar-desc,\n        #webinar-container .webinar-meta {\n            margin-bottom: 12px;\n        }\n\n        #webinar-container .webinar-fechado {\n            display: none;\n        }\n\n        .invest2030-webinar-modal {\n            display: none;\n            position: fixed;\n            inset: 0;\n            z-index: 999999;\n            background: rgba(0,0,0,0.65);\n            align-items: center;\n            justify-content: center;\n            padding: 20px;\n        }\n\n        .invest2030-webinar-modal.is-open {\n            display: flex;\n        }\n\n        .invest2030-webinar-modal-content {\n            position: relative;\n            width: 100%;\n            max-width: 620px;\n            max-height: 90vh;\n            overflow-y: auto;\n            background: #fff;\n            border-radius: 10px;\n            padding: 30px;\n            box-shadow: 0 15px 40px rgba(0,0,0,0.3);\n        }\n\n        .invest2030-webinar-modal-close {\n            position: absolute;\n            top: 12px;\n            right: 16px;\n            background: transparent;\n            border: 0;\n            font-size: 30px;\n            line-height: 1;\n            cursor: pointer;\n        }\n\n        #webinar-form input {\n            width: 100%;\n            margin-bottom: 12px;\n        }\n\n        #webinar-form button {\n            width: 100%;\n        }\n    <\/style>\n\n    <script>\n    document.addEventListener(\"DOMContentLoaded\", function () {\n        const ajaxUrl = \"https:\\\/\\\/www.invest2030.pt\\\/pt\\\/wp-admin\\\/admin-ajax.php\";\n        const signupNonce = \"fac7bb4f55\";\n\n        const container = document.getElementById(\"webinar-container\");\n        const modal = document.getElementById(\"webinar-modal\");\n        const closeBtn = modal ? modal.querySelector(\".invest2030-webinar-modal-close\") : null;\n        const form = document.getElementById(\"webinar-form\");\n        const responseMessage = document.getElementById(\"response-message\");\n\n        function escapeHtml(value) {\n            return String(value ?? \"\")\n                .replace(\/&\/g, \"&amp;\")\n                .replace(\/<\/g, \"&lt;\")\n                .replace(\/>\/g, \"&gt;\")\n                .replace(\/\"\/g, \"&quot;\")\n                .replace(\/'\/g, \"&#039;\");\n        }\n\n        function safeUrl(value, fallback) {\n            const url = String(value || \"\").trim();\n\n            if (url.startsWith(\"http:\/\/\") || url.startsWith(\"https:\/\/\") || url.startsWith(\"\/\")) {\n                return url.replace(\/\"\/g, \"%22\").replace(\/'\/g, \"%27\");\n            }\n\n            return fallback;\n        }\n\n        function normalizarListaWebinars(payload) {\n            if (!payload || !payload.success) {\n                return [];\n            }\n\n            if (Array.isArray(payload.data)) {\n                return payload.data;\n            }\n\n            if (payload.data && Array.isArray(payload.data.data)) {\n                return payload.data.data;\n            }\n\n            return [];\n        }\n\n        function abrirModal(button) {\n            if (!modal || !button) {\n                return;\n            }\n\n            const webinarId = button.dataset.webinarId || \"\";\n            const sessionId = button.dataset.sessionId || \"\";\n            const webinarTitle = button.dataset.webinarTitle || \"\";\n            const webinarDate = button.dataset.webinarDate || \"\";\n\n            if (responseMessage) {\n                responseMessage.innerText = \"\";\n                responseMessage.style.color = \"\";\n            }\n\n            document.getElementById(\"webinar_id\").value = webinarId;\n            document.getElementById(\"webinarsession_id\").value = sessionId;\n            document.getElementById(\"modal-webinar-title\").innerText = webinarTitle;\n            document.getElementById(\"modal-webinar-date\").innerText = webinarDate;\n            document.getElementById(\"modal-webinar-name\").innerText = webinarTitle;\n\n            modal.classList.add(\"is-open\");\n            modal.setAttribute(\"aria-hidden\", \"false\");\n\n            const url = new URL(window.location);\n            url.searchParams.set(\"webinar_id\", webinarId);\n            url.searchParams.set(\"session_id\", sessionId);\n            window.history.replaceState({}, \"\", url);\n        }\n\n        function fecharModal() {\n            if (!modal) {\n                return;\n            }\n\n            modal.classList.remove(\"is-open\");\n            modal.setAttribute(\"aria-hidden\", \"true\");\n\n            const url = new URL(window.location);\n            url.searchParams.delete(\"webinar_id\");\n            url.searchParams.delete(\"session_id\");\n            window.history.replaceState({}, \"\", url);\n        }\n\n        window.invest2030ToggleTexto = function (el) {\n            const desc = el.closest(\".webinar-desc\");\n            const restante = desc ? desc.querySelector(\".webinar-restante\") : null;\n            const mais = desc ? desc.querySelector(\".webinar-mais\") : null;\n\n            if (!restante) {\n                return;\n            }\n\n            if (restante.style.display === \"none\" || restante.style.display === \"\") {\n                restante.style.display = \"inline\";\n                el.style.display = \"none\";\n            } else {\n                restante.style.display = \"none\";\n                if (mais) {\n                    mais.style.display = \"inline\";\n                }\n            }\n        };\n\n        function mostrarWebinars(webinars) {\n            if (!container) {\n                return;\n            }\n\n            container.innerHTML = \"\";\n\n            if (!Array.isArray(webinars) || webinars.length === 0) {\n                container.innerHTML = \"<p>Nenhum webinar dispon\u00edvel neste momento.<\/p>\";\n                return;\n            }\n\n            const grid = document.createElement(\"div\");\n            grid.className = \"webinar-grid\";\n\n            webinars.forEach(function (webinar) {\n                const div = document.createElement(\"div\");\n                div.className = \"webinar-card\";\n\n                if (Number(webinar.closed) === 2) {\n                    div.classList.add(\"webinar-fechado\");\n                }\n\n                const imagem = safeUrl(webinar.webinarcapa, \"https:\/\/www.invest2030.pt\/pt\/wp-content\/uploads\/2025\/03\/webplace.jpg\");\n                const oradorImagem = safeUrl(webinar.oradorpic, \"https:\/\/www.invest2030.pt\/pt\/wp-content\/uploads\/2025\/03\/cropped-Frame-8.png\");\n                const titulo = escapeHtml(webinar.titulo || \"Webinar\");\n                const subtitulo = String(webinar.subtitulo || \"\");\n                const subtituloSeguro = escapeHtml(subtitulo);\n                const dataFormatada = escapeHtml(webinar.data_formatada || \"\");\n                const orador = escapeHtml(webinar.orador || \"Por anunciar\");\n                const webinarId = escapeHtml(webinar.id || \"\");\n                const sessionId = escapeHtml(webinar.session_id || \"\");\n                const slots = Number(webinar.slots || 0);\n\n                let subtituloHtml = subtituloSeguro;\n\n                if (subtitulo.length > 100) {\n                    subtituloHtml =\n                        escapeHtml(subtitulo.substring(0, 100)) +\n                        '... <span class=\"webinar-mais\" style=\"color:#0073aa; cursor:pointer;\" onclick=\"invest2030ToggleTexto(this)\">[+]<\/span>' +\n                        '<span class=\"webinar-restante\" style=\"display:none;\">' +\n                        escapeHtml(subtitulo.substring(100)) +\n                        ' <span class=\"webinar-menos\" style=\"color:#0073aa; cursor:pointer;\" onclick=\"invest2030ToggleTexto(this)\">[-]<\/span>' +\n                        '<\/span>';\n                }\n\n                let acaoHtml = '<p class=\"webinar-esgotado\">Sem sess\u00f5es dispon\u00edveis.<\/p>';\n\n                if (sessionId) {\n                    if (slots > 0) {\n                        acaoHtml =\n                            '<div class=\"pxl-button pxl-atc-link\" data-wow-delay=\"ms\">' +\n                            '<a href=\"#\" class=\"webinar-button btn pxl-icon-active btn-text-nina btn-default inline pxl-icon--right open-modal\" ' +\n                            'data-webinar-id=\"' + webinarId + '\" ' +\n                            'data-session-id=\"' + sessionId + '\" ' +\n                            'data-webinar-title=\"' + titulo + '\" ' +\n                            'data-webinar-date=\"' + dataFormatada + '\">' +\n                            'Inscreva-se' +\n                            '<\/a>' +\n                            '<\/div>';\n                    } else {\n                        acaoHtml = '<p class=\"webinar-esgotado\">Esgotado<\/p>';\n                    }\n                }\n\n                div.innerHTML =\n                    '<div class=\"webinar-image\" style=\"background-image: url(\\'' + imagem + '\\');\"><\/div>' +\n                    '<div class=\"webinar-content\">' +\n                    '<div class=\"webinar-orador\">' +\n                    '<img decoding=\"async\" src=\"' + oradorImagem + '\" alt=\"Orador\">' +\n                    '<span>' + orador + '<\/span>' +\n                    '<\/div>' +\n                    '<div>' +\n                    '<h4 class=\"webinar-title\">' + titulo + '<\/h4>' +\n                    '<p class=\"webinar-desc\">' + subtituloHtml + '<\/p>' +\n                    '<p class=\"webinar-meta\">' + dataFormatada + '<\/p>' +\n                    '<\/div>' +\n                    acaoHtml +\n                    '<\/div>';\n\n                grid.appendChild(div);\n            });\n\n            container.appendChild(grid);\n\n            const params = new URLSearchParams(window.location.search);\n            const webinarId = params.get(\"webinar_id\");\n            const sessionId = params.get(\"session_id\");\n\n            if (webinarId && sessionId) {\n                const button = document.querySelector('.open-modal[data-webinar-id=\"' + CSS.escape(webinarId) + '\"][data-session-id=\"' + CSS.escape(sessionId) + '\"]');\n\n                if (button) {\n                    abrirModal(button);\n                }\n            }\n        }\n\n        if (container) {\n            container.addEventListener(\"click\", function (event) {\n                const button = event.target.closest(\".open-modal\");\n\n                if (!button) {\n                    return;\n                }\n\n                event.preventDefault();\n                abrirModal(button);\n            });\n        }\n\n        if (closeBtn) {\n            closeBtn.addEventListener(\"click\", fecharModal);\n        }\n\n        if (modal) {\n            modal.addEventListener(\"click\", function (event) {\n                if (event.target === modal) {\n                    fecharModal();\n                }\n            });\n        }\n\n        if (form) {\n            form.addEventListener(\"submit\", function (event) {\n                event.preventDefault();\n\n                const submitButton = form.querySelector(\"button[type='submit']\");\n                const formData = new FormData(form);\n\n                formData.append(\"action\", \"inscrever_webinar\");\n                formData.append(\"nonce\", signupNonce);\n\n                if (submitButton) {\n                    submitButton.disabled = true;\n                    submitButton.innerText = \"A enviar...\";\n                }\n\n                fetch(ajaxUrl, {\n                    method: \"POST\",\n                    credentials: \"same-origin\",\n                    body: formData\n                })\n                .then(function (response) {\n                    return response.json();\n                })\n                .then(function (payload) {\n                    const ok = payload && payload.success && payload.data && payload.data.success;\n                    const messageBox = document.getElementById(\"response-message\");\n\n                    if (!messageBox) {\n                        return;\n                    }\n\n                    if (ok) {\n                        messageBox.style.color = \"green\";\n                        messageBox.innerText = \"Inscri\u00e7\u00e3o realizada com sucesso!\";\n                        form.reset();\n\n                        setTimeout(function () {\n                            fecharModal();\n                            messageBox.innerText = \"\";\n                        }, 2000);\n                    } else {\n                        const msg =\n                            (payload && payload.data && (payload.data.error || payload.data.message)) ||\n                            \"Erro ao processar inscri\u00e7\u00e3o.\";\n\n                        messageBox.style.color = \"red\";\n                        messageBox.innerText = msg;\n                    }\n                })\n                .catch(function (error) {\n                    console.error(\"Erro:\", error);\n\n                    const messageBox = document.getElementById(\"response-message\");\n                    if (messageBox) {\n                        messageBox.style.color = \"red\";\n                        messageBox.innerText = \"Erro ao conectar com o servidor.\";\n                    }\n                })\n                .finally(function () {\n                    if (submitButton) {\n                        submitButton.disabled = false;\n                        submitButton.innerText = \"Inscrever-se Gratuitamente\";\n                    }\n                });\n            });\n        }\n\n        fetch(ajaxUrl + \"?action=buscar_webinars\", {\n            credentials: \"same-origin\"\n        })\n        .then(function (response) {\n            return response.json();\n        })\n        .then(function (payload) {\n            const webinars = normalizarListaWebinars(payload);\n\n            if (webinars.length > 0) {\n                mostrarWebinars(webinars);\n            } else if (container) {\n                container.innerHTML = \"<p>N\u00e3o existem webinars dispon\u00edveis neste momento.<\/p>\";\n            }\n        })\n        .catch(function (error) {\n            console.error(\"Erro AJAX:\", error);\n\n            if (container) {\n                container.innerHTML = \"<p>Erro ao carregar webinars.<\/p>\";\n            }\n        });\n    });\n    <\/script>\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t            <\/div>\r\n        <\/div>\r\n        \t\t\t<\/div>\n\t\t<\/section>\n\t\t        <section class=\"elementor-section elementor-top-section elementor-element elementor-element-e717fa3 elementor-section-boxed elementor-section-height-default elementor-section-height-default pxl-row-scroll-none pxl-zoom-point-false pxl-section-overflow-visible\" data-id=\"e717fa3\" data-element_type=\"section\">\n\n                \n                <div class=\"elementor-container elementor-column-gap-extended \">\n                <div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1d9d400 pxl-column-none pxl-column-overflow-hidden-no\" data-id=\"1d9d400\" data-element_type=\"column\">\r\n        <div class=\"elementor-widget-wrap elementor-element-populated\">\r\n                     \r\n        \t\t<div class=\"elementor-element elementor-element-efd8852 elementor-widget elementor-widget-pxl_heading\" data-id=\"efd8852\" data-element_type=\"widget\" data-widget_type=\"pxl_heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<div id=\"pxl-pxl_heading-efd8852-2811\" class=\"pxl-heading px-sub-title-default-style \">\n\t<div class=\"pxl-heading--inner\">\n\t\t\n\t\t<h3 class=\"pxl-item--title style-default  highlight-default \" data-wow-delay=\"ms\">\n\t\t\t\t\t\t\tWebinares Passados\t\n\t\t\t\t\n\t\t<\/h3>\n\t\t\n\t<\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9ab29cd elementor-widget elementor-widget-heading\" data-id=\"9ab29cd\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Lista de alguns dos webinars promovidos pela Invest2030<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-94bacdc elementor-widget elementor-widget-shortcode\" data-id=\"94bacdc\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <div id=\"webinar-passados-container\">\n        <div id=\"webinar-grid\" class=\"webinar-grid\"><\/div>\n    <\/div>\n\n    <div id=\"webinar-extra-controls\" style=\"text-align: center;\">\n        <div id=\"indicador-carregamento\" style=\"display: none; margin: 20px;\">\n            <div class=\"spinner\"><\/div>\n        <\/div>\n\n        <button id=\"carregar-mais-btn\" type=\"button\" style=\"display: none;\">Carregar mais<\/button>\n    <\/div>\n\n    <style>\n        #webinar-passados-container .webinar-grid {\n            display: grid;\n            grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n            gap: 24px;\n        }\n\n        #webinar-passados-container .webinar-card {\n            opacity: 0;\n            transform: translateY(10px);\n            animation: invest2030FadeInUp 0.4s ease-out forwards;\n        }\n\n        .spinner {\n            border: 4px solid #f3f3f3;\n            border-top: 4px solid #333;\n            border-radius: 50%;\n            width: 30px;\n            height: 30px;\n            animation: invest2030Spin 1s linear infinite;\n            margin: 0 auto;\n        }\n\n        @keyframes invest2030Spin {\n            0% { transform: rotate(0deg); }\n            100% { transform: rotate(360deg); }\n        }\n\n        @keyframes invest2030FadeInUp {\n            to {\n                opacity: 1;\n                transform: translateY(0);\n            }\n        }\n\n        #carregar-mais-btn {\n            display: block;\n            margin: 10px auto 30px auto;\n            padding: 10px 20px;\n            font-size: 16px;\n            background-color: #333;\n            color: white;\n            border: none;\n            border-radius: 6px;\n            cursor: pointer;\n        }\n\n        #carregar-mais-btn:hover {\n            background-color: #555;\n        }\n    <\/style>\n\n    <script>\n    document.addEventListener(\"DOMContentLoaded\", function () {\n        const ajaxUrl = \"https:\\\/\\\/www.invest2030.pt\\\/pt\\\/wp-admin\\\/admin-ajax.php\";\n        const grid = document.getElementById(\"webinar-grid\");\n        const carregarMaisBtn = document.getElementById(\"carregar-mais-btn\");\n        const indicador = document.getElementById(\"indicador-carregamento\");\n\n        let paginaAtual = 1;\n        let carregando = false;\n        let fimDosWebinars = false;\n\n        function escapeHtml(value) {\n            return String(value ?? \"\")\n                .replace(\/&\/g, \"&amp;\")\n                .replace(\/<\/g, \"&lt;\")\n                .replace(\/>\/g, \"&gt;\")\n                .replace(\/\"\/g, \"&quot;\")\n                .replace(\/'\/g, \"&#039;\");\n        }\n\n        function safeUrl(value, fallback) {\n            const url = String(value || \"\").trim();\n\n            if (url.startsWith(\"http:\/\/\") || url.startsWith(\"https:\/\/\") || url.startsWith(\"\/\")) {\n                return url.replace(\/\"\/g, \"%22\").replace(\/'\/g, \"%27\");\n            }\n\n            return fallback;\n        }\n\n        function mostrarIndicadorCarregamento(mostrar) {\n            if (indicador) {\n                indicador.style.display = mostrar ? \"block\" : \"none\";\n            }\n        }\n\n        function mostrarWebinarsPassados(webinars) {\n            if (!grid || !Array.isArray(webinars)) {\n                return;\n            }\n\n            webinars.forEach(function (webinar) {\n                const div = document.createElement(\"div\");\n                div.className = \"webinar-card\";\n\n                const imagem = safeUrl(webinar.webinarcapa, \"https:\/\/www.invest2030.pt\/pt\/wp-content\/uploads\/2025\/03\/webplace.jpg\");\n                const oradorImagem = safeUrl(webinar.oradorpic, \"https:\/\/www.invest2030.pt\/pt\/wp-content\/uploads\/2025\/03\/cropped-Frame-8.png\");\n                const titulo = escapeHtml(webinar.titulo || \"Webinar\");\n                const orador = escapeHtml(webinar.orador || \"Invest2030\");\n                const dataFormatada = escapeHtml(webinar.data_formatada || \"\");\n\n                div.innerHTML =\n                    '<div class=\"webinar-image\" style=\"background-image: url(\\'' + imagem + '\\');\"><\/div>' +\n                    '<div class=\"webinar-content\">' +\n                    '<div class=\"webinar-orador\">' +\n                    '<img decoding=\"async\" src=\"' + oradorImagem + '\" alt=\"Orador\">' +\n                    '<span>' + orador + '<\/span>' +\n                    '<\/div>' +\n                    '<div>' +\n                    '<h4 class=\"webinar-title\">' + titulo + '<\/h4>' +\n                    '<p class=\"webinar-desc\">\u00daltima sess\u00e3o<\/p>' +\n                    '<p class=\"webinar-meta\">' + dataFormatada + '<\/p>' +\n                    '<\/div>' +\n                    '<\/div>';\n\n                grid.appendChild(div);\n            });\n        }\n\n        function carregarMaisWebinars() {\n            if (carregando || fimDosWebinars) {\n                return;\n            }\n\n            carregando = true;\n            mostrarIndicadorCarregamento(true);\n\n            fetch(ajaxUrl + \"?action=buscar_webinars_passados&page=\" + paginaAtual, {\n                credentials: \"same-origin\"\n            })\n            .then(function (response) {\n                return response.json();\n            })\n            .then(function (payload) {\n                const webinars = payload && payload.success && Array.isArray(payload.data) ? payload.data : [];\n\n                if (webinars.length > 0) {\n                    mostrarWebinarsPassados(webinars);\n                    paginaAtual++;\n\n                    if (carregarMaisBtn) {\n                        carregarMaisBtn.style.display = \"block\";\n                    }\n                } else {\n                    fimDosWebinars = true;\n\n                    if (carregarMaisBtn) {\n                        carregarMaisBtn.style.display = \"none\";\n                    }\n\n                    if (indicador) {\n                        indicador.innerHTML = \"<p style='text-align:center;'>Sem mais webinars.<\/p>\";\n                    }\n                }\n            })\n            .catch(function (error) {\n                console.error(\"Erro AJAX:\", error);\n            })\n            .finally(function () {\n                carregando = false;\n                mostrarIndicadorCarregamento(false);\n            });\n        }\n\n        function scrollHandler() {\n            if (window.innerWidth > 768 && (window.innerHeight + window.scrollY) >= document.body.offsetHeight - 100) {\n                carregarMaisWebinars();\n            }\n        }\n\n        if (carregarMaisBtn) {\n            carregarMaisBtn.addEventListener(\"click\", carregarMaisWebinars);\n        }\n\n        carregarMaisWebinars();\n        window.addEventListener(\"scroll\", scrollHandler);\n    });\n    <\/script>\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t            <\/div>\r\n        <\/div>\r\n        \t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Webinars We.Invest Participe gratuitamente nos webinars da Invest2030 Webinares Passados Lista de alguns dos webinars promovidos pela Invest2030<\/p>\n","protected":false},"author":1,"featured_media":18020,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-154","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.invest2030.pt\/pt\/wp-json\/wp\/v2\/pages\/154","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.invest2030.pt\/pt\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.invest2030.pt\/pt\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.invest2030.pt\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.invest2030.pt\/pt\/wp-json\/wp\/v2\/comments?post=154"}],"version-history":[{"count":346,"href":"https:\/\/www.invest2030.pt\/pt\/wp-json\/wp\/v2\/pages\/154\/revisions"}],"predecessor-version":[{"id":18023,"href":"https:\/\/www.invest2030.pt\/pt\/wp-json\/wp\/v2\/pages\/154\/revisions\/18023"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.invest2030.pt\/pt\/wp-json\/wp\/v2\/media\/18020"}],"wp:attachment":[{"href":"https:\/\/www.invest2030.pt\/pt\/wp-json\/wp\/v2\/media?parent=154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}