{"id":2802,"date":"2026-01-30T12:18:39","date_gmt":"2026-01-30T15:18:39","guid":{"rendered":"https:\/\/conurbaniaparque.com\/?page_id=2802"},"modified":"2026-01-30T12:33:23","modified_gmt":"2026-01-30T15:33:23","slug":"radioestaciones","status":"publish","type":"page","link":"https:\/\/conurbaniaparque.com\/index.php\/radioestaciones\/","title":{"rendered":"Landing-Estaciones"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2802\" class=\"elementor elementor-2802\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-c72e92f elementor-section-stretched elementor-section-full_width elementor-section-height-min-height stretch-section elementor-section-height-default elementor-section-items-middle\" data-id=\"c72e92f\" data-element_type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;,&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9d1053c content-wrapper\" data-id=\"9d1053c\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5b9d828 video-background-container elementor-widget elementor-widget-html\" data-id=\"5b9d828\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- VIDEOS DE FONDO (ocultos inicialmente) -->\r\n<div class=\"youtube-video-bg\" id=\"video-raices\" data-video-id=\"5HXOpp24Juc\"><\/div>\r\n<div class=\"youtube-video-bg\" id=\"video-alternativa\" data-video-id=\"jgtcAEUtgF4\"><\/div>\r\n<div class=\"youtube-video-bg\" id=\"video-bailable\" data-video-id=\"V9H0F0pfLNM\"><\/div>\r\n<div class=\"youtube-video-bg\" id=\"video-electronica\" data-video-id=\"IUaL7-xEepo\"><\/div>\r\n\r\n<!-- Overlay oscuro -->\r\n<div class=\"video-overlay\"><\/div>\r\n\r\n<script>\r\n\/\/ ============================================\r\n\/\/ CONFIGURACI\u00d3N CON TUS VIDEOS ESPEC\u00cdFICOS\r\n\/\/ ============================================\r\n\r\nconst horariosConfig = [\r\n    {\r\n        id: 'raices',\r\n        nombre: 'Ra\u00edces',\r\n        icon: '\ud83c\udf05',\r\n        horaInicio: 6,   \/\/ 6:00 AM\r\n        horaFin: 12,     \/\/ 12:00 PM\r\n        videoId: '5HXOpp24Juc',\r\n        descripcion: 'M\u00fasica de ra\u00edces y tradici\u00f3n'\r\n    },\r\n    {\r\n        id: 'alternativa',\r\n        nombre: 'Alternativa',\r\n        icon: '\ud83c\udfb8',\r\n        horaInicio: 12,  \/\/ 12:00 PM\r\n        horaFin: 18,     \/\/ 6:00 PM\r\n        videoId: 'jgtcAEUtgF4',\r\n        descripcion: 'Rock alternativo e indie'\r\n    },\r\n    {\r\n        id: 'bailable',\r\n        nombre: 'Bailable',\r\n        icon: '\ud83d\udc83',\r\n        horaInicio: 18,  \/\/ 6:00 PM\r\n        horaFin: 22,     \/\/ 10:00 PM\r\n        videoId: 'V9H0F0pfLNM',\r\n        descripcion: 'M\u00fasica para bailar'\r\n    },\r\n    {\r\n        id: 'electronica',\r\n        nombre: 'Electr\u00f3nica',\r\n        icon: '\ud83c\udfa7',\r\n        horaInicio: 22,  \/\/ 10:00 PM\r\n        horaFin: 6,      \/\/ 6:00 AM\r\n        videoId: 'IUaL7-xEepo',\r\n        descripcion: 'Electr\u00f3nica y house'\r\n    }\r\n];\r\n\r\n\/\/ Variables globales\r\nlet currentVideoId = null;\r\nlet youtubeAPIReady = false;\r\nconst videoPlayers = {};\r\n\r\n\/\/ Funci\u00f3n para obtener horario actual\r\nfunction getCurrentHorario() {\r\n    const now = new Date();\r\n    const currentHour = now.getHours();\r\n    \r\n    for (const horario of horariosConfig) {\r\n        if (horario.horaFin < horario.horaInicio) {\r\n            \/\/ Cruza medianoche (22-6)\r\n            if (currentHour >= horario.horaInicio || currentHour < horario.horaFin) {\r\n                return horario;\r\n            }\r\n        } else {\r\n            \/\/ Horario normal\r\n            if (currentHour >= horario.horaInicio && currentHour < horario.horaFin) {\r\n                return horario;\r\n            }\r\n        }\r\n    }\r\n    return horariosConfig[0]; \/\/ Fallback\r\n}\r\n\r\n\/\/ Cargar YouTube API\r\nfunction loadYouTubeAPI() {\r\n    if (window.YT) {\r\n        initYouTubePlayers();\r\n        return;\r\n    }\r\n    \r\n    const tag = document.createElement('script');\r\n    tag.src = 'https:\/\/www.youtube.com\/iframe_api';\r\n    const firstScriptTag = document.getElementsByTagName('script')[0];\r\n    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\r\n}\r\n\r\n\/\/ Callback cuando YouTube API est\u00e1 lista\r\nwindow.onYouTubeIframeAPIReady = function() {\r\n    youtubeAPIReady = true;\r\n    initYouTubePlayers();\r\n};\r\n\r\n\/\/ Inicializar todos los reproductores\r\nfunction initYouTubePlayers() {\r\n    horariosConfig.forEach(horario => {\r\n        const container = document.getElementById(`video-${horario.id}`);\r\n        if (!container) return;\r\n        \r\n        videoPlayers[horario.id] = new YT.Player(container, {\r\n            videoId: horario.videoId,\r\n            playerVars: {\r\n                'autoplay': 0,\r\n                'mute': 1,\r\n                'controls': 0,\r\n                'loop': 1,\r\n                'playlist': horario.videoId,\r\n                'enablejsapi': 1,\r\n                'modestbranding': 1,\r\n                'rel': 0,\r\n                'showinfo': 0,\r\n                'iv_load_policy': 3,\r\n                'playsinline': 1\r\n            },\r\n            events: {\r\n                'onReady': (event) => onPlayerReady(event, horario.id),\r\n                'onStateChange': onPlayerStateChange\r\n            }\r\n        });\r\n    });\r\n    \r\n    \/\/ Una vez cargados, activar el horario actual\r\n    setTimeout(() => {\r\n        updateHorario();\r\n        setInterval(updateHorario, 60000); \/\/ Verificar cada minuto\r\n    }, 2000);\r\n}\r\n\r\nfunction onPlayerReady(event, horarioId) {\r\n    console.log(`Reproductor ${horarioId} listo`);\r\n}\r\n\r\nfunction onPlayerStateChange(event) {\r\n    \/\/ Loop autom\u00e1tico cuando termina\r\n    if (event.data === YT.PlayerState.ENDED) {\r\n        event.target.playVideo();\r\n    }\r\n}\r\n\r\n\/\/ Cambiar video activo\r\nfunction switchVideo(newHorarioId) {\r\n    \/\/ Si es el mismo video, no hacer nada\r\n    if (currentVideoId === newHorarioId) return;\r\n    \r\n    \/\/ Pausar video actual\r\n    if (currentVideoId && videoPlayers[currentVideoId]) {\r\n        videoPlayers[currentVideoId].pauseVideo();\r\n        document.getElementById(`video-${currentVideoId}`).classList.remove('active');\r\n    }\r\n    \r\n    \/\/ Reproducir nuevo video\r\n    if (videoPlayers[newHorarioId]) {\r\n        videoPlayers[newHorarioId].playVideo();\r\n        document.getElementById(`video-${newHorarioId}`).classList.add('active');\r\n        currentVideoId = newHorarioId;\r\n    }\r\n}\r\n\r\n\/\/ Actualizar toda la interfaz seg\u00fan horario\r\nfunction updateHorario() {\r\n    const horario = getCurrentHorario();\r\n    \r\n    \/\/ Cambiar video\r\n    switchVideo(horario.id);\r\n    \r\n    \/\/ Actualizar indicador visual\r\n    updateHorarioIndicator(horario);\r\n    \r\n    \/\/ Actualizar clase en body para CSS\r\n    updateBodyClass(horario.id);\r\n    \r\n    \/\/ Actualizar t\u00edtulo de p\u00e1gina\r\n    document.title = `${horario.nombre} - Tu Radio`;\r\n    \r\n    \/\/ Actualizar contador de siguiente cambio\r\n    updateNextChangeCountdown();\r\n}\r\n\r\n\/\/ Actualizar indicador visual\r\nfunction updateHorarioIndicator(horario) {\r\n    let indicator = document.getElementById('horario-indicator');\r\n    \r\n    if (!indicator) {\r\n        \/\/ Crear indicador si no existe\r\n        indicator = document.createElement('div');\r\n        indicator.id = 'horario-indicator';\r\n        indicator.className = 'horario-indicator';\r\n        \r\n        \/\/ Buscar d\u00f3nde insertarlo\r\n        const logo = document.querySelector('.radio-logo');\r\n        if (logo && logo.parentNode) {\r\n            \/\/ Insertar despu\u00e9s del logo\r\n            logo.parentNode.insertBefore(indicator, logo.nextSibling);\r\n        } else {\r\n            \/\/ Insertar al principio del contenido\r\n            const contentBox = document.querySelector('.main-content-box');\r\n            if (contentBox) {\r\n                contentBox.prepend(indicator);\r\n            }\r\n        }\r\n    }\r\n    \r\n    \/\/ Actualizar contenido\r\n    indicator.className = `horario-indicator ${horario.id}`;\r\n    indicator.innerHTML = `\r\n        ${horario.icon} \r\n        <strong>${horario.nombre}<\/strong><br>\r\n        <small>${horario.descripcion} (${formatHour(horario.horaInicio)} - ${formatHour(horario.horaFin)})<\/small>\r\n    `;\r\n}\r\n\r\nfunction formatHour(hour) {\r\n    const period = hour >= 12 ? 'PM' : 'AM';\r\n    const displayHour = hour > 12 ? hour - 12 : hour;\r\n    if (displayHour === 0) return '12:00 AM';\r\n    return `${displayHour}:00 ${period}`;\r\n}\r\n\r\n\/\/ Actualizar clase en body\r\nfunction updateBodyClass(horarioId) {\r\n    document.body.classList.remove('horario-raices', 'horario-alternativa', \r\n                                   'horario-bailable', 'horario-electronica');\r\n    document.body.classList.add(`horario-${horarioId}`);\r\n}\r\n\r\n\/\/ Calcular pr\u00f3ximo cambio\r\nfunction updateNextChangeCountdown() {\r\n    const now = new Date();\r\n    const currentHour = now.getHours();\r\n    const currentMinute = now.getMinutes();\r\n    \r\n    let nextHorario = null;\r\n    let minutesLeft = Infinity;\r\n    \r\n    horariosConfig.forEach(horario => {\r\n        let nextHour = horario.horaInicio;\r\n        \r\n        \/\/ Si ya pas\u00f3 hoy, calcular para ma\u00f1ana\r\n        if (currentHour > nextHour || (currentHour === nextHour && currentMinute >= 0)) {\r\n            nextHour += 24;\r\n        }\r\n        \r\n        const totalMinutes = (nextHour * 60) - (currentHour * 60 + currentMinute);\r\n        \r\n        if (totalMinutes < minutesLeft && totalMinutes > 0) {\r\n            minutesLeft = totalMinutes;\r\n            nextHorario = horario;\r\n        }\r\n    });\r\n    \r\n    \/\/ Mostrar contador\r\n    const countdownElement = document.getElementById('next-change-countdown') || \r\n                           createCountdownElement();\r\n    \r\n    if (nextHorario && countdownElement) {\r\n        const hours = Math.floor(minutesLeft \/ 60);\r\n        const minutes = minutesLeft % 60;\r\n        countdownElement.innerHTML = \r\n            `Pr\u00f3ximo: <strong>${nextHorario.nombre}<\/strong> en ${hours}h ${minutes}m`;\r\n    }\r\n}\r\n\r\nfunction createCountdownElement() {\r\n    const element = document.createElement('div');\r\n    element.id = 'next-change-countdown';\r\n    element.className = 'next-change';\r\n    \r\n    \/\/ Insertar al final del contenido\r\n    const contentBox = document.querySelector('.main-content-box');\r\n    if (contentBox) {\r\n        contentBox.appendChild(element);\r\n    }\r\n    \r\n    return element;\r\n}\r\n\r\n\/\/ Inicializar cuando el DOM est\u00e9 listo\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n    \/\/ Cargar YouTube API\r\n    loadYouTubeAPI();\r\n    \r\n    \/\/ Actualizar inmediatamente\r\n    updateHorario();\r\n    \r\n    \/\/ Actualizar cada minuto\r\n    setInterval(updateHorario, 60000);\r\n    \r\n    \/\/ Actualizar cuando la pesta\u00f1a se vuelve visible\r\n    document.addEventListener('visibilitychange', function() {\r\n        if (!document.hidden) {\r\n            updateHorario();\r\n        }\r\n    });\r\n    \r\n    \/\/ Tambi\u00e9n actualizar al hacer foco en la ventana\r\n    window.addEventListener('focus', updateHorario);\r\n});\r\n\r\n\/\/ Manejar errores de YouTube\r\nwindow.onYouTubePlayerError = function(errorCode) {\r\n    console.error('Error en reproductor YouTube:', errorCode);\r\n    \/\/ Si hay error, mostrar imagen de fallback\r\n    document.querySelectorAll('.youtube-video-bg').forEach(el => {\r\n        el.style.background = '#000';\r\n    });\r\n};\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-818a071 elementor-widget__width-inherit elementor-widget elementor-widget-image\" data-id=\"818a071\" data-element_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=\"300\" height=\"77\" src=\"https:\/\/conurbaniaparque.com\/wp-content\/uploads\/2021\/09\/cropped-Logo-Conurbania-300x77.png\" class=\"attachment-medium size-medium wp-image-45\" alt=\"\" srcset=\"https:\/\/conurbaniaparque.com\/wp-content\/uploads\/2021\/09\/cropped-Logo-Conurbania-300x77.png 300w, https:\/\/conurbaniaparque.com\/wp-content\/uploads\/2021\/09\/cropped-Logo-Conurbania-1024x264.png 1024w, https:\/\/conurbaniaparque.com\/wp-content\/uploads\/2021\/09\/cropped-Logo-Conurbania-768x198.png 768w, https:\/\/conurbaniaparque.com\/wp-content\/uploads\/2021\/09\/cropped-Logo-Conurbania-1536x396.png 1536w, https:\/\/conurbaniaparque.com\/wp-content\/uploads\/2021\/09\/cropped-Logo-Conurbania-2048x528.png 2048w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\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-f36922c elementor-widget elementor-widget-html\" data-id=\"f36922c\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<iframe src=\"https:\/\/radio.conurbaniaparque.com\/public\/conurbania_prueba\/embed?layout=vertical\" frameborder=\"0\" allowtransparency=\"true\" style=\"width: 100%; height: 250px; border: 0;\"><\/iframe>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d9d436a elementor-widget elementor-widget-heading\" data-id=\"d9d436a\" 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<h3 class=\"elementor-heading-title elementor-size-medium\"><div style=\"text-align: center;margin: 20px 0\">\n    <h3>\ud83c\udfb5 Programaci\u00f3n Diaria<\/h3>\n    <div style=\"display: grid;grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));gap: 15px;margin-top: 15px\">\n        <div style=\"padding: 15px;border-radius: 10px\">\n            <strong>\ud83c\udf05 6:00 AM - 12:00 PM<\/strong><br>\n            <small>Ra\u00edces<\/small>\n        <\/div>\n        <div style=\"padding: 15px;border-radius: 10px\">\n            <strong>\ud83c\udfb8 12:00 PM - 6:00 PM<\/strong><br>\n            <small>Alternativa<\/small>\n        <\/div>\n        <div style=\"padding: 15px;border-radius: 10px\">\n            <strong>\ud83d\udc83 6:00 PM - 10:00 PM<\/strong><br>\n            <small>Bailable<\/small>\n        <\/div>\n        <div style=\"padding: 15px;border-radius: 10px\">\n            <strong>\ud83c\udfa7 10:00 PM - 6:00 AM<\/strong><br>\n            <small>Electr\u00f3nica<\/small>\n        <\/div>\n    <\/div>\n<\/div><\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cd819e4 elementor-widget elementor-widget-html\" data-id=\"cd819e4\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"redesreproductor\">\r\n    <ul>\r\n    <li><p>Seguinos en nuestras redes<\/p>\r\n    <\/li>\r\n    <li>\r\n<a href=\"https:\/\/www.instagram.com\/conurbaniaradio\/\" target=\"blank\"><i class=\"fab fa-instagram\"><\/i><\/a>\r\n<\/li>\r\n<li>\r\n<a href=\"https:\/\/twitter.com\/conurbaniaradio\" target=\"blank\"><i class=\"fab fa-twitter\"><\/i><\/a>\r\n<\/div>\r\n<\/li>\r\n<\/ul>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\ud83c\udfb5 Programaci\u00f3n Diaria \ud83c\udf05 6:00 AM &#8211; 12:00 PM Ra\u00edces \ud83c\udfb8 12:00 PM &#8211; 6:00 PM Alternativa \ud83d\udc83 6:00 PM &#8211; 10:00 PM Bailable \ud83c\udfa7 10:00 PM &#8211; 6:00 AM Electr\u00f3nica Seguinos en nuestras redes<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"on","neve_meta_content_width":100,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"on","neve_meta_disable_footer":"on","neve_meta_disable_title":"on","footnotes":""},"class_list":["post-2802","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/conurbaniaparque.com\/index.php\/wp-json\/wp\/v2\/pages\/2802","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/conurbaniaparque.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/conurbaniaparque.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/conurbaniaparque.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/conurbaniaparque.com\/index.php\/wp-json\/wp\/v2\/comments?post=2802"}],"version-history":[{"count":14,"href":"https:\/\/conurbaniaparque.com\/index.php\/wp-json\/wp\/v2\/pages\/2802\/revisions"}],"predecessor-version":[{"id":2819,"href":"https:\/\/conurbaniaparque.com\/index.php\/wp-json\/wp\/v2\/pages\/2802\/revisions\/2819"}],"wp:attachment":[{"href":"https:\/\/conurbaniaparque.com\/index.php\/wp-json\/wp\/v2\/media?parent=2802"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}