{"id":188,"date":"2025-11-05T03:57:35","date_gmt":"2025-11-05T03:57:35","guid":{"rendered":"https:\/\/noticiasatletismopv.com\/?page_id=188"},"modified":"2025-11-20T18:44:03","modified_gmt":"2025-11-20T18:44:03","slug":"eventos","status":"publish","type":"page","link":"https:\/\/noticiasatletismopv.com\/index.php\/eventos\/","title":{"rendered":"Eventos"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"188\" class=\"elementor elementor-188\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"aux-parallax-section elementor-element elementor-element-f2a691f e-flex e-con-boxed e-con e-parent\" data-id=\"f2a691f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-cf45772 e-con-full e-flex e-con e-child\" data-id=\"cf45772\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-81d9f19 elementor-widget elementor-widget-html\" data-id=\"81d9f19\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<input id=\"event-search\" type=\"text\" placeholder=\"Search events (title, date, location)\u2026\" style=\"\r\n    width:100%;\r\n    padding:15px 22px;\r\n    font-size:16px;\r\n    border:2px solid #ddd;\r\n    border-radius:40px;\r\n    margin:10px 0 30px 0;\r\n\">\r\n\r\n<script>\r\ndocument.getElementById(\"event-search\").addEventListener(\"keyup\", function () {\r\n    const keyword = this.value.toLowerCase();\r\n    document.querySelectorAll(\".event-card\").forEach(card => {\r\n        const text = card.innerText.toLowerCase();\r\n        card.style.display = text.includes(keyword) ? \"flex\" : \"none\";\r\n    });\r\n});\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1354a2e elementor-widget elementor-widget-html\" data-id=\"1354a2e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"event-filters\">\r\n  <button class=\"filter-btn active\" data-filter=\"all\">Todos<\/button>\r\n  <button class=\"filter-btn\" data-filter=\"Pista y Campo\">Pista y Campo<\/button>\r\n  <button class=\"filter-btn\" data-filter=\"Infantil\">Infantil<\/button>\r\n  <button class=\"filter-btn\" data-filter=\"Ruta\">Ruta<\/button>\r\n  <button class=\"filter-btn\" data-filter=\"Tem\u00e1tica\">Tem\u00e1tica<\/button>\r\n  <button class=\"filter-btn\" data-filter=\"Trail\">Trail<\/button>\r\n<\/div>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e786737 elementor-widget elementor-widget-html\" data-id=\"e786737\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n    const cards = document.querySelectorAll(\".event-card\");\r\n\r\n    \/\/ STEP 1: Extract categories from text inside card\r\n    cards.forEach(card => {\r\n        const details = card.querySelector(\".event-details\");\r\n        if (details) {\r\n            const text = details.innerText;\r\n            let categories = [];\r\n\r\n            if (text.includes(\"Pista y Campo\")) categories.push(\"Pista y Campo\");\r\n            if (text.includes(\"Infantil\")) categories.push(\"Infantil\");\r\n            if (text.includes(\"Ruta\")) categories.push(\"Ruta\");\r\n            if (text.includes(\"Tem\u00e1tica\")) categories.push(\"Tem\u00e1tica\");\r\n            if (text.includes(\"Trail\")) categories.push(\"Trail\");\r\n\r\n            \/\/ Save categories to element dataset\r\n            card.dataset.categories = categories.join(\",\");\r\n        }\r\n    });\r\n\r\n    \/\/ STEP 2: Filtering logic\r\n    const buttons = document.querySelectorAll(\"#event-filters .filter-btn\");\r\n\r\n    buttons.forEach(btn => {\r\n        btn.addEventListener(\"click\", function () {\r\n            const filter = this.dataset.filter;\r\n\r\n            \/\/ Activate button\r\n            buttons.forEach(b => b.classList.remove(\"active\"));\r\n            this.classList.add(\"active\");\r\n\r\n            \/\/ Show\/hide cards\r\n            cards.forEach(card => {\r\n                const cats = card.dataset.categories || \"\";\r\n\r\n                if (filter === \"all\" || cats.includes(filter)) {\r\n                    card.style.display = \"flex\";\r\n                } else {\r\n                    card.style.display = \"none\";\r\n                }\r\n            });\r\n        });\r\n    });\r\n});\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1ac0f7b elementor-widget elementor-widget-html\" data-id=\"1ac0f7b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\r\n(function() {\r\n    function formatMonthYear(date) {\r\n        const months = [\r\n            \"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\r\n            \"July\",\"August\",\"September\",\"October\",\"November\",\"December\"\r\n        ];\r\n        return months[date.getMonth()] + \" \" + date.getFullYear();\r\n    }\r\n\r\n    function extractEventDate(card) {\r\n        const text = card.innerText;\r\n        const dateMatch = text.match(\/(January|February|March|April|May|June|July|August|September|October|November|December)\\s+\\d{1,2},\\s+20\\d{2}\/i);\r\n        if (!dateMatch) return null;\r\n        return new Date(dateMatch[0]);\r\n    }\r\n\r\n    function addMonthHeaders() {\r\n        const container = document.querySelector(\".events-showcase\");\r\n        if (!container) return;\r\n\r\n        const cards = [...container.querySelectorAll(\".event-card\")];\r\n        let lastMonthYear = \"\";\r\n\r\n        cards.forEach(card => {\r\n            const eventDate = extractEventDate(card);\r\n            if (!eventDate) return;\r\n\r\n            const monthYear = formatMonthYear(eventDate);\r\n\r\n            \/\/ If new month, insert header BEFORE the card\r\n            if (monthYear !== lastMonthYear) {\r\n                const wrapper = document.createElement(\"div\");\r\n                wrapper.className = \"evo-month-wrapper\";\r\n\r\n                wrapper.innerHTML = `\r\n                    <h2 class=\"evo-month-title\">${monthYear}<\/h2>\r\n                    <div class=\"evo-month-line\"><\/div>\r\n                `;\r\n\r\n                container.insertBefore(wrapper, card);\r\n                lastMonthYear = monthYear;\r\n            }\r\n        });\r\n    }\r\n\r\n    \/\/ Give EventON time to load cards\r\n    setTimeout(addMonthHeaders, 600);\r\n})();\r\n<\/script>\r\n\r\n<style>\r\n\/*** MONTH HEADER FIXED STYLE ***\/\r\n.evo-month-wrapper {\r\n    width: 100%;\r\n    margin: 40px 0 10px;\r\n}\r\n\r\n.evo-month-title {\r\n    font-size: 28px;\r\n    font-weight: 600;\r\n    color: #000;\r\n    margin: 0;\r\n}\r\n\r\n.evo-month-line {\r\n    width: 90px;\r\n    height: 4px;\r\n    background: #2c7cff;\r\n    margin-top: 6px;\r\n    border-radius: 4px;\r\n}\r\n\r\n\/*** Remove weird spacing from EventON cards **\/\r\n.events-showcase {\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    gap: 30px;\r\n}\r\n<\/style>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9c2510b elementor-headline--style-highlight elementor-widget elementor-widget-animated-headline\" data-id=\"9c2510b\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;highlighted_text&quot;:&quot;Registrarte aqu\\u00ed&quot;,&quot;headline_style&quot;:&quot;highlight&quot;,&quot;marker&quot;:&quot;circle&quot;,&quot;loop&quot;:&quot;yes&quot;,&quot;highlight_animation_duration&quot;:1200,&quot;highlight_iteration_delay&quot;:8000}\" data-widget_type=\"animated-headline.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h3 class=\"elementor-headline\">\n\t\t\t\t\t<span class=\"elementor-headline-plain-text elementor-headline-text-wrapper\">Pr\u00f3ximamente podr\u00e1s<\/span>\n\t\t\t\t<span class=\"elementor-headline-dynamic-wrapper elementor-headline-text-wrapper\">\n\t\t\t\t\t<span class=\"elementor-headline-dynamic-text elementor-headline-text-active\">Registrarte aqu\u00ed<\/span>\n\t\t\t\t<\/span>\n\t\t\t\t<\/h3>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c562204 elementor-widget elementor-widget-shortcode\" data-id=\"c562204\" data-element_type=\"widget\" data-e-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\"><p style=\"text-align:center;\">No upcoming events found.<\/p>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6f01eea e-con-full e-flex e-con e-child\" data-id=\"6f01eea\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a737c1f elementor-widget elementor-widget-image\" data-id=\"a737c1f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"380\" height=\"600\" src=\"https:\/\/noticiasatletismopv.com\/wp-content\/uploads\/2025\/11\/Atletismo-Halcones-Vallarta-Banner.png\" class=\"attachment-large size-large wp-image-399\" alt=\"\" srcset=\"https:\/\/noticiasatletismopv.com\/wp-content\/uploads\/2025\/11\/Atletismo-Halcones-Vallarta-Banner.png 380w, https:\/\/noticiasatletismopv.com\/wp-content\/uploads\/2025\/11\/Atletismo-Halcones-Vallarta-Banner-200x316.png 200w\" sizes=\"(max-width: 380px) 100vw, 380px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fdd5e47 elementor-widget elementor-widget-image\" data-id=\"fdd5e47\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"380\" height=\"380\" src=\"https:\/\/noticiasatletismopv.com\/wp-content\/uploads\/2025\/11\/Isaac-Gomez-Corona-Terapeuta-Muscular.png\" class=\"attachment-large size-large wp-image-398\" alt=\"\" srcset=\"https:\/\/noticiasatletismopv.com\/wp-content\/uploads\/2025\/11\/Isaac-Gomez-Corona-Terapeuta-Muscular.png 380w, https:\/\/noticiasatletismopv.com\/wp-content\/uploads\/2025\/11\/Isaac-Gomez-Corona-Terapeuta-Muscular-300x300.png 300w, https:\/\/noticiasatletismopv.com\/wp-content\/uploads\/2025\/11\/Isaac-Gomez-Corona-Terapeuta-Muscular-150x150.png 150w, https:\/\/noticiasatletismopv.com\/wp-content\/uploads\/2025\/11\/Isaac-Gomez-Corona-Terapeuta-Muscular-200x200.png 200w\" sizes=\"(max-width: 380px) 100vw, 380px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\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<div class=\"aux-parallax-section elementor-element elementor-element-9db538d e-flex e-con-boxed e-con e-parent\" data-id=\"9db538d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Todos Pista y Campo Infantil Ruta Tem\u00e1tica Trail Pr\u00f3ximamente podr\u00e1s Registrarte aqu\u00ed<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-188","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/noticiasatletismopv.com\/index.php\/wp-json\/wp\/v2\/pages\/188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/noticiasatletismopv.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/noticiasatletismopv.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/noticiasatletismopv.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/noticiasatletismopv.com\/index.php\/wp-json\/wp\/v2\/comments?post=188"}],"version-history":[{"count":165,"href":"https:\/\/noticiasatletismopv.com\/index.php\/wp-json\/wp\/v2\/pages\/188\/revisions"}],"predecessor-version":[{"id":791,"href":"https:\/\/noticiasatletismopv.com\/index.php\/wp-json\/wp\/v2\/pages\/188\/revisions\/791"}],"wp:attachment":[{"href":"https:\/\/noticiasatletismopv.com\/index.php\/wp-json\/wp\/v2\/media?parent=188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}