{"id":23,"date":"2025-03-16T17:46:38","date_gmt":"2025-03-16T17:46:38","guid":{"rendered":"https:\/\/player.radio105.mt\/?page_id=23"},"modified":"2025-05-12T14:31:10","modified_gmt":"2025-05-12T14:31:10","slug":"radio-105-player","status":"publish","type":"page","link":"https:\/\/player.radio105.mt\/","title":{"rendered":"Radio 105 Player"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Vibrant Radio Player<\/title>\n  <link href=\"https:\/\/cdn.jsdelivr.net\/npm\/tailwindcss@2.2.19\/dist\/tailwind.min.css\" rel=\"stylesheet\">\n  <link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/@fortawesome\/fontawesome-free@6.0.0\/css\/all.min.css\">\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@300;400;500;600;700&#038;display=swap\" rel=\"stylesheet\">\n  <style>\n    :root {\n      --primary-color: #6366f1;\n      --secondary-color: #8b5cf6;\n      --accent-color: #ec4899;\n      --dark-color: #1e1b4b;\n      --light-color: #f3f4f6;\n      --success-color: #10b981;\n      --warning-color: #f59e0b;\n      --error-color: #ef4444;\n      --text-light: #f9fafb;\n      --text-dark: #111827;\n      --gradient-start: #6366f1;\n      --gradient-mid: #8b5cf6;\n      --gradient-end: #ec4899;\n    }\n\n    body {\n      font-family: 'Poppins', sans-serif;\n      transition: background-color 0.3s, color 0.3s;\n    }\n\n    .dark-mode {\n      --primary-color: #818cf8;\n      --secondary-color: #a78bfa;\n      --accent-color: #f472b6;\n      --dark-color: #0f172a;\n      --light-color: #1e293b;\n      --text-light: #f9fafb;\n      --text-dark: #f3f4f6;\n    }\n\n    \/* Vibrant Container Styles *\/\n    .radio-container {\n      background: linear-gradient(135deg, var(--light-color) 0%, #ffffff 100%);\n      transition: all 0.3s ease;\n    }\n\n    .dark .radio-container {\n      background: linear-gradient(135deg, var(--dark-color) 0%, #111827 100%);\n    }\n\n    \/* Left Section Styles *\/\n    .player-section {\n      background: linear-gradient(135deg, var(--gradient-start), var(--gradient-end));\n      transition: all 0.3s ease;\n    }\n\n    .dark .player-section {\n      background: linear-gradient(135deg, #2d3748, #1a202c);\n    }\n\n    \/* Custom Button Styles *\/\n    .control-btn {\n      backdrop-filter: blur(8px);\n      transition: all 0.3s ease;\n    }\n\n    .control-btn:hover {\n      transform: translateY(-2px);\n      box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n    }\n\n    .control-btn:active {\n      transform: translateY(0);\n    }\n\n    \/* Custom Volume Slider *\/\n    .volume-slider {\n      -webkit-appearance: none;\n      height: 6px;\n      border-radius: 5px;\n      background: rgba(255, 255, 255, 0.3);\n      outline: none;\n    }\n\n    .volume-slider::-webkit-slider-thumb {\n      -webkit-appearance: none;\n      width: 16px;\n      height: 16px;\n      border-radius: 50%;\n      background: white;\n      cursor: pointer;\n      box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);\n    }\n\n    .volume-slider::-moz-range-thumb {\n      width: 16px;\n      height: 16px;\n      border-radius: 50%;\n      background: white;\n      cursor: pointer;\n      border: none;\n      box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);\n    }\n\n    \/* Channel List Item Hover Effects *\/\n    .channel-item {\n      transition: all 0.2s ease;\n      border-left: 0px solid var(--accent-color);\n    }\n\n    .channel-item:hover {\n      border-left: 4px solid var(--accent-color);\n      background-color: rgba(99, 102, 241, 0.1);\n    }\n\n    .channel-item.active {\n      border-left: 4px solid var(--accent-color);\n      background-color: rgba(99, 102, 241, 0.2);\n    }\n\n    .dark .channel-item:hover {\n      background-color: rgba(165, 180, 252, 0.1);\n    }\n\n    .dark .channel-item.active {\n      background-color: rgba(165, 180, 252, 0.2);\n    }\n\n    \/* Network Format Info *\/\n    .network-info {\n      height: 0;\n      overflow: hidden;\n      transition: height 0.5s ease;\n    }\n\n    .network-info.active {\n      height: auto;\n      padding: 1rem;\n      border-top: 1px solid rgba(156, 163, 175, 0.2);\n    }\n\n    \/* Skin Variations *\/\n    .player-section.skin-green {\n      background: linear-gradient(135deg, #10b981, #059669);\n    }\n\n    .player-section.skin-purple {\n      background: linear-gradient(135deg, #8b5cf6, #6d28d9);\n    }\n\n    .player-section.skin-pink {\n      background: linear-gradient(135deg, #ec4899, #db2777);\n    }\n\n    .player-section.skin-blue {\n      background: linear-gradient(135deg, #3b82f6, #2563eb);\n    }\n\n    \/* Animations *\/\n    @keyframes pulse {\n      0% { transform: scale(1); }\n      50% { transform: scale(1.05); }\n      100% { transform: scale(1); }\n    }\n\n    .pulse-animation {\n      animation: pulse 2s infinite;\n    }\n\n    \/* Fancy Scroller *\/\n    .channel-list::-webkit-scrollbar {\n      width: 6px;\n    }\n\n    .channel-list::-webkit-scrollbar-track {\n      background: rgba(0, 0, 0, 0.1);\n      border-radius: 10px;\n    }\n\n    .channel-list::-webkit-scrollbar-thumb {\n      background: rgba(99, 102, 241, 0.5);\n      border-radius: 10px;\n    }\n\n    .dark .channel-list::-webkit-scrollbar-thumb {\n      background: rgba(165, 180, 252, 0.5);\n    }\n\n    \/* Responsive Adjustments *\/\n    @media (max-width: 768px) {\n      .radio-container {\n        flex-direction: column;\n      }\n\n      .player-section {\n        border-radius: 0;\n        border-bottom-left-radius: 30px;\n        border-bottom-right-radius: 30px;\n      }\n    }\n  <\/style>\n<\/head>\n<body class=\"bg-gray-100 min-h-screen transition-colors duration-300\">\n  <button id=\"themeToggle\" class=\"fixed top-4 right-4 z-50 p-2 rounded-full bg-white dark:bg-gray-800 shadow-md text-xl focus:outline-none\">\n    <i class=\"fas fa-sun text-yellow-500 dark:hidden\"><\/i>\n    <i class=\"fas fa-moon text-indigo-300 hidden dark:block\"><\/i>\n  <\/button>\n\n  <div class=\"radio-container flex flex-col md:flex-row max-w-7xl mx-auto my-6 rounded-xl overflow-hidden shadow-2xl\">\n    <div class=\"player-section w-full md:w-96 p-8 text-white flex flex-col items-center\">\n      <div class=\"channel-info w-full text-center mb-8\">\n        <div class=\"logo-container mb-4 relative\">\n          <img decoding=\"async\" id=\"channelLogo\" src=\"\" alt=\"Channel Logo\" class=\"mx-auto max-w-[200px] max-h-[200px] rounded-lg shadow-lg object-contain bg-white\/10 p-2\">\n          <div class=\"absolute -bottom-2 -right-2 h-6 w-6 bg-green-500 rounded-full pulse-animation hidden\" id=\"liveIndicator\"><\/div>\n        <\/div>\n        <h2 id=\"channelName\" class=\"text-2xl font-bold mt-4 mb-1 text-white\"><\/h2>\n        <div id=\"presenterName\" class=\"text-sm opacity-80\"><\/div>\n        <div id=\"programName\" class=\"text-base font-medium\"><\/div>\n      <\/div>\n\n      <div class=\"audio-controls w-full\">\n        <audio id=\"audioPlayer\" src=\"\" preload=\"none\"><\/audio>\n\n        <div class=\"flex justify-center space-x-4 mb-6\">\n          <button id=\"prevBtn\" class=\"control-btn w-12 h-12 rounded-full bg-white\/20 flex items-center justify-center\" title=\"Previous Channel\">\n            <i class=\"fas fa-backward text-white\"><\/i>\n          <\/button>\n          <button id=\"playPauseBtn\" class=\"control-btn w-16 h-16 rounded-full bg-white\/30 flex items-center justify-center\" title=\"Play\/Pause\">\n            <i class=\"fas fa-play text-white text-xl\"><\/i>\n            <i class=\"fas fa-pause text-white text-xl hidden\"><\/i>\n          <\/button>\n          <button id=\"stopBtn\" class=\"control-btn w-12 h-12 rounded-full bg-white\/20 flex items-center justify-center\" title=\"Stop\">\n            <i class=\"fas fa-stop text-white\"><\/i>\n          <\/button>\n          <button id=\"nextBtn\" class=\"control-btn w-12 h-12 rounded-full bg-white\/20 flex items-center justify-center\" title=\"Next Channel\">\n            <i class=\"fas fa-forward text-white\"><\/i>\n          <\/button>\n        <\/div>\n\n        <div class=\"volume-control mb-8\">\n          <label for=\"volumeSlider\" class=\"text-sm font-medium text-white\/80 mb-2 block\">Volume<\/label>\n          <input type=\"range\" id=\"volumeSlider\" min=\"0\" max=\"1\" step=\"0.1\" value=\"1\" class=\"volume-slider w-full\">\n        <\/div>\n\n        <div class=\"social-buttons flex justify-center space-x-3 mb-6\">\n          <button id=\"websiteBtn\" class=\"control-btn h-10 w-10 rounded-full bg-white\/20 flex items-center justify-center\" title=\"Website\">\n            <i class=\"fas fa-globe\"><\/i>\n          <\/button>\n          <button id=\"facebookBtn\" class=\"control-btn h-10 w-10 rounded-full bg-white\/20 flex items-center justify-center\" title=\"Facebook\">\n            <i class=\"fab fa-facebook-f\"><\/i>\n          <\/button>\n          <button id=\"instagramBtn\" class=\"control-btn h-10 w-10 rounded-full bg-white\/20 flex items-center justify-center\" title=\"Instagram\">\n            <i class=\"fab fa-instagram\"><\/i>\n          <\/button>\n          <button id=\"youtubeBtn\" class=\"control-btn h-10 w-10 rounded-full bg-white\/20 flex items-center justify-center\" title=\"YouTube\">\n            <i class=\"fab fa-youtube\"><\/i>\n          <\/button>\n        <\/div>\n\n        <div class=\"other-buttons flex justify-center space-x-3\">\n          <button id=\"embedBtn\" class=\"control-btn h-10 w-10 rounded-full bg-white\/20 flex items-center justify-center\" title=\"Embed Code\">\n            <i class=\"fas fa-code\"><\/i>\n          <\/button>\n          <button id=\"popupBtn\" class=\"control-btn h-10 w-10 rounded-full bg-white\/20 flex items-center justify-center\" title=\"Open in Popup\">\n            <i class=\"fas fa-external-link-alt\"><\/i>\n          <\/button>\n        <\/div>\n      <\/div>\n\n      <button id=\"networkFormatBtn\" class=\"mt-6 w-full py-2 px-4 bg-white\/20 hover:bg-white\/30 rounded-lg text-white font-medium transition-all duration-200\">\n        Network Format\n      <\/button>\n\n      <div class=\"skin-selector mt-6 w-full\">\n        <label for=\"skinSelect\" class=\"text-sm font-medium text-white\/80 mb-2 block\">Player Skin<\/label>\n        <select id=\"skinSelect\" class=\"w-full p-2 rounded-lg bg-white\/20 text-white border-0 focus:ring-2 focus:ring-white\">\n          <option value=\"default\">Indigo Gradient<\/option>\n          <option value=\"purple\">Purple Delight<\/option>\n          <option value=\"green\">Green Energy<\/option>\n          <option value=\"pink\">Pink Passion<\/option>\n          <option value=\"blue\">Blue Ocean<\/option>\n        <\/select>\n      <\/div>\n    <\/div>\n\n    <div class=\"channels-section w-full p-6 bg-white dark:bg-gray-800 transition-colors duration-300\">\n      <div class=\"flex items-center mb-2\">\n        <h3 class=\"text-xl font-bold text-gray-800 dark:text-white\">Channels<\/h3>\n        <span class=\"ml-2 text-xs font-bold text-gray-600 dark:text-gray-300 bg-gray-200 dark:bg-gray-700 px-2 py-1 rounded\">Version 2.0<\/span>\n      <\/div>\n      <p class=\"text-sm text-gray-600 dark:text-gray-300 mb-4\">Radio 105 Network (Malta)<\/p>\n\n      <div class=\"channel-list h-[450px] overflow-y-auto pr-2\">\n        <ul id=\"channelList\" class=\"space-y-1\"><\/ul>\n      <\/div>\n\n      <div id=\"networkInfo\" class=\"network-info mt-4 text-sm text-gray-700 dark:text-gray-300 bg-gray-50 dark:bg-gray-700 rounded-lg\">\n        <h4 class=\"font-bold mb-2\">Station Format: Radio 105 Network (Malta)<\/h4>\n        <p class=\"mb-3\">\n          Radio 105 Network is Malta&#8217;s leading independent radio network, offering a diverse range of audio content through its streaming platform, 105 Player. Our Main Channel, Radio 105 (FM), is licensed by the Malta Broadcasting Authority since 2001 and the Malta Communications Authority and was previously known as Radio Galaxy.\n        <\/p>\n        <p class=\"mb-3\">\n          Beyond its flagship FM station, Radio 105 Network boasts an expanding portfolio of 11+ web digital channels, each with its own distinct format. All channels are readily accessible through the 105 Player platform and website, as well as on smart speakers and popular third-party streaming platforms such as:\n        <\/p>\n        <ul class=\"list-disc pl-5 mb-3\">\n          <li>Online Radio Box<\/li>\n          <li>My Tuner App<\/li>\n          <li>Streema<\/li>\n          <li>Get Me Radio<\/li>\n          <li>And more.<\/li>\n        <\/ul>\n        <p class=\"mb-3\">\n          Broadcasting from its studios in Hamrun, Malta, while utilizing our own streaming servers located in Germany, Radio 105 Network prides itself on being an independent entity, unaffiliated with any other local or international media group. The network&#8217;s music playlists are updated regularly, ensuring a fresh listening experience tailored to the specific format of each channel.\n        <\/p>\n        <h5 class=\"font-bold mb-1\">Key Highlights:<\/h5>\n        <ul class=\"list-disc pl-5 mb-3\">\n          <li>Main Channel (FM): Radio 105 (FM) (licensed by the Malta Broadcasting Authority and Malta Communications Authority, previously known as Radio Galaxy)<\/li>\n          <li>Digital Channels: 11+ web-based digital channels with varying formats.<\/li>\n          <li>Platform: 105 Player (independent streaming platform)<\/li>\n          <li>Reach: Available in Malta and globally via streaming.<\/li>\n          <li>Accessibility: 105 Player platform\/website, smart speakers, and multiple third-party radio platforms.<\/li>\n          <li>Music: Regularly updated playlists, format-specific.<\/li>\n          <li>Independence: Malta&#8217;s largest independent radio network.<\/li>\n          <li>Location: Studios in Hamrun, Malta; own streaming servers in Germany.<\/li>\n        <\/ul>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div id=\"embedCodeContainer\" class=\"max-w-xl mx-auto mt-6 p-4 bg-white dark:bg-gray-800 rounded-lg shadow-md hidden\">\n    <h3 class=\"text-lg font-medium text-gray-900 dark:text-white mb-3\">Embed This Player<\/h3>\n    <textarea id=\"embedCode\" rows=\"4\" class=\"w-full p-3 rounded-md bg-gray-50 dark:bg-gray-700 text-gray-900 dark:text-white border border-gray-300 dark:border-gray-600 focus:ring-indigo-500 focus:border-indigo-500\" readonly><\/textarea>\n    <button onclick=\"copyEmbedCode()\" class=\"mt-3 px-4 py-2 bg-indigo-600 text-white rounded-md hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500\">\n      Copy Code\n    <\/button>\n  <\/div>\n\n  <template id=\"popupTemplate\">\n<!DOCTYPE html>\n<html>\n<head>\n  <title>Radio Player Popup<\/title>\n  <link href=\"https:\/\/cdn.jsdelivr.net\/npm\/@fortawesome\/fontawesome-free@6.0.0\/css\/all.min.css\" rel=\"stylesheet\">\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@300;400;500;600;700&#038;display=swap\" rel=\"stylesheet\">\n  <style>\n    body {\n      font-family: 'Poppins', sans-serif;\n      margin: 0;\n      padding: 0;\n      background-color: #f3f4f6;\n      color: #1f2937;\n    }\n\n    .container {\n      max-width: 400px;\n      padding: 20px;\n      background-color: #fff;\n      border-radius: 10px;\n      box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);\n      text-align: center;\n      margin: 20px auto;\n    }\n\n    h1 {\n      font-size: 1.8rem;\n      margin-bottom: 1rem;\n      color: #6366f1;\n    }\n\n    #channelName {\n      font-size: 1.2rem;\n      font-weight: 600;\n      margin-bottom: 0.5rem;\n    }\n\n    #channelLogo {\n      max-width: 150px;\n      max-height: 150px;\n      border-radius: 8px;\n      margin: 0 auto 1rem;\n      object-fit: contain;\n      background-color: #f9fafb;\n      padding: 5px;\n    }\n\n    .audio-controls {\n      margin-bottom: 1rem;\n    }\n\n    .controls {\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      gap: 1rem;\n      margin-bottom: 1rem;\n    }\n\n    .control-btn {\n      width: 40px;\n      height: 40px;\n      border-radius: 50%;\n      background-color: #6366f1;\n      color: white;\n      border: none;\n      cursor: pointer;\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      font-size: 1rem;\n      transition: background-color 0.2s ease;\n    }\n\n    .control-btn:hover {\n      background-color: #4f46e5;\n    }\n\n    .volume-control {\n      margin-bottom: 1rem;\n    }\n\n    input[type=\"range\"] {\n      width: 100%;\n      -webkit-appearance: none;\n      height: 6px;\n      border-radius: 5px;\n      background: #e5e7eb;\n      outline: none;\n      margin-top: 10px;\n    }\n\n    input[type=\"range\"]::-webkit-slider-thumb {\n      -webkit-appearance: none;\n      appearance: none;\n      width: 16px;\n      height: 16px;\n      border-radius: 50%;\n      background: #6366f1;\n      cursor: pointer;\n    }\n\n    input[type=\"range\"]::-moz-range-thumb {\n      width: 16px;\n      height: 16px;\n      border-radius: 50%;\n      background: #6366f1;\n      cursor: pointer;\n      border: none;\n    }\n\n    .hidden {\n      display: none;\n    }\n\n    @media (max-width: 450px) {\n      .container {\n        padding: 15px;\n      }\n      h1 {\n        font-size: 1.5rem;\n      }\n      #channelName {\n        font-size: 1rem;\n      }\n      .controls {\n        gap: 0.5rem;\n      }\n    }\n  <\/style>\n<\/head>\n<body>\n  <div class=\"container\">\n    <h1>Radio Player<\/h1>\n    <div class=\"channel-info\">\n      <img decoding=\"async\" id=\"channelLogo\" src=\"\" alt=\"Channel Logo\">\n      <h2 id=\"channelName\"><\/h2>\n    <\/div>\n    <div class=\"audio-controls\">\n      <audio id=\"audioPlayer\" src=\"\" preload=\"auto\"><\/audio>\n      <div class=\"controls\">\n        <button id=\"prevBtn\" class=\"control-btn\" title=\"Previous\"><i class=\"fas fa-backward\"><\/i><\/button>\n        <button id=\"playPauseBtn\" class=\"control-btn\" title=\"Play\/Pause\">\n          <i class=\"fas fa-play\" id=\"playIcon\"><\/i>\n          <i class=\"fas fa-pause hidden\" id=\"pauseIcon\"><\/i>\n        <\/button>\n        <button id=\"nextBtn\" class=\"control-btn\" title=\"Next\"><i class=\"fas fa-forward\"><\/i><\/button>\n      <\/div>\n      <div class=\"volume-control\">\n        <label for=\"volumeSlider\">Volume<\/label>\n        <input type=\"range\" id=\"volumeSlider\" min=\"0\" max=\"1\" step=\"0.1\" value=\"1\">\n      <\/div>\n    <\/div>\n  <\/div>\n  <script>\n    \/\/ Elements\n    const audioPlayer = document.getElementById('audioPlayer');\n    const playPauseBtn = document.getElementById('playPauseBtn');\n    const playIcon = document.getElementById('playIcon');\n    const pauseIcon = document.getElementById('pauseIcon');\n    const prevBtn = document.getElementById('prevBtn');\n    const nextBtn = document.getElementById('nextBtn');\n    const volumeSlider = document.getElementById('volumeSlider');\n    const channelNameDisplay = document.getElementById('channelName');\n    const channelLogoDisplay = document.getElementById('channelLogo');\n\n    \/\/ State\n    let isPlaying = false;\n    let currentChannelIndex = 0;\n    let isWindowOpenerAvailable = true;\n\n    \/\/ Fallback channel data (in case window.opener is unavailable)\n    let channels = [\n      {\n        name: \"Radio 105\",\n        logo: \"https:\/\/radio105.mt\/wp-content\/uploads\/2024\/05\/Radio-105.png\",\n        streamUrl: \"https:\/\/radio105-radio105network.radioca.st\/;\"\n      },\n      {\n        name: \"Radio 105 Retro\",\n        logo: \"https:\/\/radio105.mt\/wp-content\/uploads\/2024\/05\/Retro-768x432.png\",\n        streamUrl: \"https:\/\/retro-radio105network.radioca.st\/;\"\n      }\n    ];\n\n    \/\/ Check if we received data from parent within 500ms\n    let dataReceived = false;\n    const dataTimeout = setTimeout(() => {\n      if (!dataReceived) {\n        console.log(\"No data received from parent window, using fallback data\");\n        loadChannel(0);\n      }\n    }, 500);\n\n    \/\/ Functions\n    function updatePlayPauseButtonIcon() {\n      if (isPlaying) {\n        playIcon.classList.add('hidden');\n        pauseIcon.classList.remove('hidden');\n      } else {\n        playIcon.classList.remove('hidden');\n        pauseIcon.classList.add('hidden');\n      }\n    }\n\n    function loadChannel(index) {\n      const channel = channels[index];\n      if (!channel) return;\n\n      channelNameDisplay.textContent = channel.name;\n      channelLogoDisplay.src = channel.logo || 'https:\/\/radio105.mt\/wp-content\/uploads\/2024\/05\/Radio-105.png';\n      audioPlayer.src = channel.streamUrl;\n      currentChannelIndex = index;\n\n      if (isPlaying) {\n        audioPlayer.play().catch(error => {\n          console.error(\"Playback failed:\", error);\n          isPlaying = false;\n          updatePlayPauseButtonIcon();\n        });\n      }\n\n      \/\/ Optionally notify parent window if it's available\n      notifyParentWindow('popupChannelChanged', { channelIndex: index });\n    }\n\n    function playPause() {\n      if (isPlaying) {\n        audioPlayer.pause();\n      } else {\n        audioPlayer.play().catch(error => {\n          console.error(\"Playback failed:\", error);\n        });\n      }\n    }\n\n    function nextChannel() {\n      let newIndex = (currentChannelIndex + 1) % channels.length;\n      while (!channels[newIndex].streamUrl && newIndex !== currentChannelIndex) {\n        newIndex = (newIndex + 1) % channels.length;\n      }\n      \n      if (newIndex !== currentChannelIndex) {\n        loadChannel(newIndex);\n      }\n    }\n\n    function prevChannel() {\n      let newIndex = (currentChannelIndex - 1 + channels.length) % channels.length;\n      while (!channels[newIndex].streamUrl && newIndex !== currentChannelIndex) {\n        newIndex = (newIndex - 1 + channels.length) % channels.length;\n      }\n      \n      if (newIndex !== currentChannelIndex) {\n        loadChannel(newIndex);\n      }\n    }\n\n    function notifyParentWindow(type, data) {\n      if (window.opener && !window.opener.closed && isWindowOpenerAvailable) {\n        try {\n          window.opener.postMessage({\n            type: type,\n            ...data\n          }, '*');\n        } catch (e) {\n          console.log('Failed to communicate with parent window', e);\n          isWindowOpenerAvailable = false;\n        }\n      }\n    }\n\n    \/\/ Event Listeners\n    playPauseBtn.addEventListener('click', playPause);\n    nextBtn.addEventListener('click', nextChannel);\n    prevBtn.addEventListener('click', prevChannel);\n    \n    volumeSlider.addEventListener('input', () => {\n      audioPlayer.volume = volumeSlider.value;\n    });\n\n    audioPlayer.addEventListener('play', () => {\n      isPlaying = true;\n      updatePlayPauseButtonIcon();\n    });\n\n    audioPlayer.addEventListener('pause', () => {\n      isPlaying = false;\n      updatePlayPauseButtonIcon();\n    });\n\n    audioPlayer.addEventListener('error', () => {\n      isPlaying = false;\n      updatePlayPauseButtonIcon();\n      console.error(\"Audio error:\", audioPlayer.error);\n    });\n\n    \/\/ Message from main window\n    window.addEventListener('message', (event) => {\n      dataReceived = true;\n      clearTimeout(dataTimeout);\n\n      if (event.data.type === 'channelData') {\n        \/\/ Single channel mode\n        if (event.data.channel) {\n          channels = [event.data.channel];\n          loadChannel(0);\n        }\n      } else if (event.data.type === 'allChannels') {\n        \/\/ Multiple channels mode\n        channels = event.data.channels;\n        currentChannelIndex = event.data.currentIndex;\n        loadChannel(currentChannelIndex);\n      } else if (event.data.type === 'playerState') {\n        \/\/ Only set initial player state from parent, then operate independently\n        isPlaying = event.data.isPlaying;\n        updatePlayPauseButtonIcon();\n        \n        if (isPlaying && audioPlayer.paused) {\n          audioPlayer.play().catch(error => {\n            console.error(\"Playback failed:\", error);\n            isPlaying = false;\n            updatePlayPauseButtonIcon();\n          });\n        } else if (!isPlaying && !audioPlayer.paused) {\n          audioPlayer.pause();\n        }\n      }\n    });\n\n    \/\/ When the window is fully loaded, request data from parent\n    window.onload = function() {\n      if (window.opener) {\n        try {\n          window.opener.postMessage({\n            type: 'requestData'\n          }, '*');\n        } catch (e) {\n          console.log('Unable to communicate with parent window', e);\n          isWindowOpenerAvailable = false;\n          loadChannel(0); \/\/ Use fallback data\n        }\n      } else {\n        isWindowOpenerAvailable = false;\n        loadChannel(0); \/\/ Use fallback data\n      }\n    };\n  <\/script>\n<\/body>\n<\/html>\n<\/template>\n\n  <script>\n    \/\/ Elements\n    const body = document.body;\n    const radioPlayerContainer = document.querySelector('.radio-container');\n    const playerSection = document.querySelector('.player-section');\n    const prevBtnMain = document.getElementById('prevBtn');\n    const playPauseBtnMain = document.getElementById('playPauseBtn');\n    const nextBtnMain = document.getElementById('nextBtn');\n    const stopBtn = document.getElementById('stopBtn');\n    const volumeSliderMain = document.getElementById('volumeSlider');\n    const channelList = document.getElementById('channelList');\n    const channelNameDisplayMain = document.getElementById('channelName');\n    const channelLogoDisplayMain = document.getElementById('channelLogo');\n    const audioPlayerMain = document.getElementById('audioPlayer');\n    const themeToggle = document.getElementById('themeToggle');\n    const popupBtn = document.getElementById('popupBtn');\n    const embedBtn = document.getElementById('embedBtn');\n    const websiteBtn = document.getElementById('websiteBtn');\n    const facebookBtn = document.getElementById('facebookBtn');\n    const instagramBtn = document.getElementById('instagramBtn');\n    const youtubeBtn = document.getElementById('youtubeBtn');\n    const presenterNameDisplay = document.getElementById('presenterName');\n    const programNameDisplay = document.getElementById('programName');\n    const audioControlsDiv = document.querySelector('.audio-controls');\n    const liveIndicator = document.getElementById('liveIndicator');\n    const skinSelect = document.getElementById('skinSelect');\n    const networkFormatBtn = document.getElementById('networkFormatBtn');\n    const networkInfo = document.getElementById('networkInfo');\n    let popupWindow = null;\n    let currentChannelIndex = 0;\n    let isPlaying = false;\n    let isDarkMode = false;\n\n    \/\/ Channel Data\n    const channels = [{\n      name: \"Radio 105\",\n      logo: \"https:\/\/radio105.mt\/wp-content\/uploads\/2024\/05\/Radio-105.png\",\n      streamUrl: \"https:\/\/radio105-radio105network.radioca.st\/;\",\n      website: \"https:\/\/radio105.mt\/\",\n      facebook: \"https:\/\/www.facebook.com\/radio105malta\/\",\n      instagram: \"https:\/\/www.instagram.com\/radiogalaxy105\/\",\n      youtube: \"https:\/\/www.youtube.com\/channel\/UCD8FtIHq8TO0SuG-lpcEcew\"\n    }, {\n      name: \"Radio 105 Retro\",\n      logo: \"https:\/\/radio105.mt\/wp-content\/uploads\/2024\/05\/Retro-768x432.png\",\n      streamUrl: \"https:\/\/retro-radio105network.radioca.st\/;\",\n      website: \"https:\/\/radio105.mt\/\",\n      facebook: \"https:\/\/www.facebook.com\/radio105malta\/\",\n      instagram: \"https:\/\/www.instagram.com\/radiogalaxy105\/\",\n      youtube: \"https:\/\/www.youtube.com\/channel\/UCD8FtIHq8TO0SuG-lpcEcew\"\n    }, {\n      name: \"Radio 105 Cuore\",\n      logo: \"https:\/\/radio105.mt\/wp-content\/uploads\/2024\/05\/Cuore-768x432.png\",\n      streamUrl: \"https:\/\/cuore-radio105network.radioca.st\/;\",\n      website: \"https:\/\/radio105.mt\/\",\n      facebook: \"https:\/\/www.facebook.com\/radio105malta\/\",\n      instagram: \"https:\/\/www.instagram.com\/radiogalaxy105\/\",\n      youtube: \"https:\/\/www.youtube.com\/channel\/UCD8FtIHq8TO0SuG-lpcEcew\"\n    }, {\n      name: \"Radio 105 Rock\",\n      logo: \"https:\/\/radio105.mt\/wp-content\/uploads\/2024\/05\/Rock-768x432.png\",\n      streamUrl: \"https:\/\/rock-radio105network.radioca.st\/;\",\n      website: \"https:\/\/radio105.mt\/\",\n      facebook: \"https:\/\/www.facebook.com\/radio105malta\/\",\n      instagram: \"https:\/\/www.instagram.com\/radiogalaxy105\/\",\n      youtube: \"https:\/\/www.youtube.com\/channel\/UCD8FtIHq8TO0SuG-lpcEcew\"\n    }, {\n      name: \"Radio 105 Sixties\",\n      logo: \"https:\/\/radio105.mt\/wp-content\/uploads\/2024\/05\/Sixties-768x432.png\",\n      streamUrl: \"https:\/\/sixties-radio105network.radioca.st\/;\",\n      website: \"https:\/\/radio105.mt\/\",\n      facebook: \"https:\/\/www.facebook.com\/radio105malta\/\",\n      instagram: \"https:\/\/www.instagram.com\/radiogalaxy105\/\",\n      youtube: \"https:\/\/www.youtube.com\/channel\/UCD8FtIHq8TO0SuG-lpcEcew\"\n    }, {\n      name: \"Radio 105 Christmas\",\n      logo: \"https:\/\/radio105.mt\/wp-content\/uploads\/2024\/05\/Christmas-1-768x432.png\",\n      streamUrl: \"https:\/\/xmas-radio105network.radioca.st\/;\",\n      website: \"https:\/\/radio105.mt\/\",\n      facebook: \"https:\/\/www.facebook.com\/radio105malta\/\",\n      instagram: \"https:\/\/www.instagram.com\/radiogalaxy105\/\",\n      youtube: \"https:\/\/www.youtube.com\/channel\/UCD8FtIHq8TO0SuG-lpcEcew\"\n    }, {\n      name: \"Radio 105 Mellow\",\n      logo: \"https:\/\/radio105.mt\/wp-content\/uploads\/2024\/05\/Mellow-768x432.png\",\n      streamUrl: \"https:\/\/mellow-radio105network.radioca.st\/;\",\n      website: \"https:\/\/radio105.mt\/\",\n      facebook: \"https:\/\/www.facebook.com\/radio105malta\/\",\n      instagram: \"https:\/\/www.instagram.com\/radiogalaxy105\/\",\n      youtube: \"https:\/\/www.youtube.com\/channel\/UCD8FtIHq8TO0SuG-lpcEcew\"\n    }, {\n      name: \"Radio 105 Country\",\n      logo: \"https:\/\/radio105.mt\/wp-content\/uploads\/2024\/05\/Country-768x432.png\",\n      streamUrl: \"https:\/\/country-radio105network.radioca.st\/;\",\n      website: \"https:\/\/radio105.mt\/\",\n      facebook: \"https:\/\/www.facebook.com\/radio105malta\/\",\n      instagram: \"https:\/\/www.instagram.com\/radiogalaxy105\/\",\n      youtube: \"https:\/\/www.youtube.com\/channel\/UCD8FtIHq8TO0SuG-lpcEcew\"\n    }, {\n      name: \"Radio 105 Nineties\",\n      logo: \"https:\/\/radio105.mt\/wp-content\/uploads\/2024\/05\/Nineties-768x432.png\",\n      streamUrl: \"https:\/\/nineties-radio105network.radioca.st\/;\",\n      website: \"https:\/\/radio105.mt\/\",\n      facebook: \"https:\/\/www.facebook.com\/radio105malta\/\",\n      instagram: \"https:\/\/www.instagram.com\/radiogalaxy105\/\",\n      youtube: \"https:\/\/www.youtube.com\/channel\/UCD8FtIHq8TO0SuG-lpcEcew\"\n    }, {\n      name: \"Radio 105 Urban\",\n      logo: \"https:\/\/radio105.mt\/wp-content\/uploads\/2024\/10\/14-1-768x432.png\",\n      streamUrl: \"https:\/\/urban-radio105network.radioca.st\/;\",\n      website: \"https:\/\/radio105.mt\/\",\n      facebook: \"https:\/\/www.facebook.com\/radio105malta\/\",\n      instagram: \"https:\/\/www.instagram.com\/radiogalaxy105\/\",\n      youtube: \"https:\/\/www.youtube.com\/channel\/UCD8FtIHq8TO0SuG-lpcEcew\"\n    }, {\n      name: \"Radio 105 Reggae\",\n      logo: \"https:\/\/radio105.mt\/wp-content\/uploads\/2024\/10\/13-1-768x432.png\",\n      streamUrl: \"https:\/\/reggae-radio105network.radioca.st\/;\",\n      website: \"https:\/\/radio105.mt\/\",\n      facebook: \"https:\/\/www.facebook.com\/radio105malta\/\",\n      instagram: \"https:\/\/www.instagram.com\/radiogalaxy105\/\",\n      youtube: \"https:\/\/www.youtube.com\/channel\/UCD8FtIHq8TO0SuG-lpcEcew\"\n     }, {\n      name: \"Radio 105 Maltin\",\n      logo: \"https:\/\/radio105.mt\/wp-content\/uploads\/2025\/03\/Copy-of-Radio-105-network-New-Logo-1366-x-768-px-768x432.png\",\n      streamUrl: \"https:\/\/maltin-radio105network.radioca.st\/;\",\n      website: \"https:\/\/radio105.mt\/\",\n      facebook: \"https:\/\/www.facebook.com\/radio105malta\/\",\n      instagram: \"https:\/\/www.instagram.com\/radiogalaxy105\/\",\n      youtube: \"https:\/\/www.youtube.com\/channel\/UCD8FtIHq8TO0SuG-lpcEcew\"\n    }, {\n      name: \"Radio 105 Eurovision\",\n      logo: \"https:\/\/radio105.mt\/wp-content\/uploads\/2025\/05\/Radio-105-Eurovision.png\",\n      streamUrl: \"https:\/\/eurovision-radio105network.radioca.st\/;\",\n      website: \"https:\/\/radio105.mt\/\",\n      facebook: \"https:\/\/www.facebook.com\/radio105malta\/\",\n      instagram: \"https:\/\/www.instagram.com\/radiogalaxy105\/\",\n      youtube: \"https:\/\/www.youtube.com\/channel\/UCD8FtIHq8TO0SuG-lpcEcew\"\n    }, {\n      name: \"Channel Coming Soon\",\n      logo: \"\",\n      streamUrl: \"\",\n      website: \"\",\n      facebook: \"\",\n      instagram: \"\",\n      youtube: \"\"\n    }];\n\n    \/\/ Functions\n    function loadChannel(index) {\n      const channel = channels[index];\n      if (!channel) return;\n\n      channelNameDisplayMain.textContent = channel.name;\n      channelLogoDisplayMain.src = channel.logo || 'https:\/\/radio105.mt\/wp-content\/uploads\/2024\/05\/Radio-105.png';\n      audioPlayerMain.src = channel.streamUrl;\n      currentChannelIndex = index;\n      updateActiveChannel();\n\n      \/\/ Clear presenter and program info\n      presenterNameDisplay.textContent = \"\";\n      programNameDisplay.textContent = \"\";\n\n      \/\/ Show live indicator for active channels\n      liveIndicator.classList.toggle('hidden', !channel.streamUrl);\n\n      \/\/ Update social media buttons\n      updateSocialButtons(channel);\n\n      \/\/ Play if was previously playing\n      if (isPlaying) {\n        audioPlayerMain.play().catch(error => {\n          console.error(\"Playback failed:\", error);\n          isPlaying = false;\n          updatePlayPauseButtonIcon();\n        });\n      }\n      \n      \/\/ Update popup window if it exists\n      if (popupWindow && !popupWindow.closed) {\n        popupWindow.postMessage({\n          type: 'channelData',\n          channel: channel\n        }, '*');\n        \n        popupWindow.postMessage({\n          type: 'playerState',\n          isPlaying: isPlaying\n        }, '*');\n      }\n    }\n\n    function updateActiveChannel() {\n      document.querySelectorAll('#channelList li').forEach((li, index) => {\n        if (index === currentChannelIndex) {\n          li.classList.add('active');\n        } else {\n          li.classList.remove('active');\n        }\n      });\n    }\n\n    function toggleDarkMode() {\n      isDarkMode = !isDarkMode;\n      if (isDarkMode) {\n        document.documentElement.classList.add('dark');\n      } else {\n        document.documentElement.classList.remove('dark');\n      }\n    }\n\n    function updatePlayPauseButtonIcon() {\n      const playIcon = playPauseBtnMain.querySelector('.fa-play');\n      const pauseIcon = playPauseBtnMain.querySelector('.fa-pause');\n\n      if (isPlaying) {\n        playIcon.classList.add('hidden');\n        pauseIcon.classList.remove('hidden');\n        playPauseBtnMain.classList.add('bg-white\/50');\n        playPauseBtnMain.classList.remove('bg-white\/30');\n      } else {\n        playIcon.classList.remove('hidden');\n        pauseIcon.classList.add('hidden');\n        playPauseBtnMain.classList.remove('bg-white\/50');\n        playPauseBtnMain.classList.add('bg-white\/30');\n      }\n    }\n\n    function updateSocialButtons(channel) {\n      \/\/ Update social media button links\n      websiteBtn.onclick = () => window.open(channel.website || 'https:\/\/radio105.mt\/', '_blank');\n      facebookBtn.onclick = () => window.open(channel.facebook || 'https:\/\/www.facebook.com\/radio105malta\/', '_blank');\n      instagramBtn.onclick = () => window.open(channel.instagram || 'https:\/\/www.instagram.com\/radiogalaxy105\/', '_blank');\n      youtubeBtn.onclick = () => window.open(channel.youtube || 'https:\/\/www.youtube.com\/channel\/UCD8FtIHq8TO0SuG-lpcEcew', '_blank');\n    }\n\n    function applySkin(skin) {\n      \/\/ Remove existing skin classes\n      playerSection.classList.remove(\n        'skin-default',\n        'skin-purple',\n        'skin-green',\n        'skin-pink',\n        'skin-blue'\n      );\n\n      \/\/ Apply selected skin\n      if (skin !== 'default') {\n        playerSection.classList.add(`skin-${skin}`);\n      }\n    }\n\n    function generateEmbedCode() {\n      const playerURL = window.location.href;\n      const embedHTML = `<iframe loading=\"lazy\" src=\"${playerURL}\" width=\"380\" height=\"650\" frameborder=\"0\" scrolling=\"no\" allow=\"autoplay\"><\/iframe>`;\n      document.getElementById('embedCode').value = embedHTML;\n    }\n\n    function copyEmbedCode() {\n      const embedCodeTextarea = document.getElementById('embedCode');\n      embedCodeTextarea.select();\n      document.execCommand('copy');\n\n      \/\/ Show copy feedback\n      const btn = document.querySelector('#embedCodeContainer button');\n      const originalText = btn.textContent;\n      btn.textContent = 'Copied!';\n      btn.classList.add('bg-green-600');\n\n      setTimeout(() => {\n        btn.textContent = originalText;\n        btn.classList.remove('bg-green-600');\n      }, 2000);\n    }\n\n    function toggleNetworkInfo() {\n      networkInfo.classList.toggle('active');\n    }\n\n    function createPopupWindow() {\n      \/\/ Close existing popup if it exists\n      if (popupWindow && !popupWindow.closed) {\n        popupWindow.close();\n      }\n      \n      const popupTemplate = document.getElementById('popupTemplate').innerHTML;\n      const blob = new Blob([popupTemplate], { type: 'text\/html' });\n      const popupUrl = URL.createObjectURL(blob);\n\n      \/\/ Open the popup window\n      popupWindow = window.open(popupUrl, 'radioPlayerPopup', 'width=400,height=600');\n      \n      \/\/ Handle message requests from the popup\n      window.addEventListener('message', function(event) {\n        if (!popupWindow || popupWindow.closed) return;\n        \n        if (event.data.type === 'requestData') {\n          \/\/ Send all channels and current index\n          popupWindow.postMessage({\n            type: 'allChannels',\n            channels: channels,\n            currentIndex: currentChannelIndex\n          }, '*');\n          \n          \/\/ Send player state\n          popupWindow.postMessage({\n            type: 'playerState',\n            isPlaying: isPlaying\n          }, '*');\n        } else if (event.data.type === 'channelChanged') {\n          \/\/ Update main player when popup changes channel\n          loadChannel(event.data.channelIndex);\n        } else if (event.data.type === 'playerState') {\n          \/\/ Sync play\/pause state\n          isPlaying = event.data.isPlaying;\n          \n          if (isPlaying && audioPlayerMain.paused) {\n            audioPlayerMain.play().catch(e => {\n              console.error(\"Playback failed:\", e);\n              isPlaying = false;\n              updatePlayPauseButtonIcon();\n            });\n          } else if (!isPlaying && !audioPlayerMain.paused) {\n            audioPlayerMain.pause();\n          }\n          \n          updatePlayPauseButtonIcon();\n        }\n      });\n    }\n\n    \/\/ Populate channel list\n    channels.forEach((channel, index) => {\n      if (channel.name === \"Channel Coming Soon\") {\n        const listItem = document.createElement('li');\n        listItem.textContent = channel.name;\n        listItem.classList.add('channel-item', 'py-3', 'px-4', 'text-gray-500', 'dark:text-gray-400', 'italic', 'opacity-70');\n        channelList.appendChild(listItem);\n      } else {\n        const listItem = document.createElement('li');\n        listItem.classList.add('channel-item', 'py-3', 'px-4', 'text-gray-800', 'dark:text-gray-200', 'hover:bg-gray-100', 'dark:hover:bg-gray-700', 'rounded-md', 'transition-all', 'duration-200', 'cursor-pointer');\n\n        \/\/ Create a flex container\n        const flexContainer = document.createElement('div');\n        flexContainer.classList.add('flex', 'items-center');\n\n        \/\/ Add mini logo if available\n        if (channel.logo) {\n          const miniLogo = document.createElement('img');\n          miniLogo.src = channel.logo;\n          miniLogo.alt = channel.name;\n          miniLogo.classList.add('w-8', 'h-8', 'mr-3', 'rounded');\n          miniLogo.style.objectFit = 'cover';\n          flexContainer.appendChild(miniLogo);\n        }\n\n        \/\/ Add channel name\n        const nameSpan = document.createElement('span');\n        nameSpan.textContent = channel.name;\n        flexContainer.appendChild(nameSpan);\n\n        \/\/ Append the flex container to the list item\n        listItem.appendChild(flexContainer);\n\n        \/\/ Add click event\n        listItem.addEventListener('click', () => {\n          loadChannel(index);\n        });\n\n        channelList.appendChild(listItem);\n      }\n    });\n\n    \/\/ Add footer to channel list\n    const footerItem = document.createElement('li');\n    footerItem.textContent = \" Radio 105 Network, all rights reserved\";\n    footerItem.classList.add('text-xs', 'text-center', 'text-gray-500', 'dark:text-gray-400', 'mt-4', 'pt-4', 'border-t', 'border-gray-200', 'dark:border-gray-700');\n    channelList.appendChild(footerItem);\n\n    \/\/ Event Listeners\n    prevBtnMain.addEventListener('click', () => {\n      \/\/ Find previous valid channel (skip \"Coming Soon\" channels)\n      let newIndex = currentChannelIndex;\n      do {\n        newIndex = (newIndex - 1 + channels.length) % channels.length;\n      } while (!channels[newIndex].streamUrl && newIndex !== currentChannelIndex);\n\n      if (newIndex !== currentChannelIndex) {\n        loadChannel(newIndex);\n      }\n    });\n\n    nextBtnMain.addEventListener('click', () => {\n      \/\/ Find next valid channel (skip \"Coming Soon\" channels)\n      let newIndex = currentChannelIndex;\n      do {\n        newIndex = (newIndex + 1) % channels.length;\n      } while (!channels[newIndex].streamUrl && newIndex !== currentChannelIndex);\n\n      if (newIndex !== currentChannelIndex) {\n        loadChannel(newIndex);\n      }\n    });\n\n    playPauseBtnMain.addEventListener('click', () => {\n      if (isPlaying) {\n        audioPlayerMain.pause();\n      } else {\n        audioPlayerMain.play().catch(error => {\n          console.error(\"Playback failed:\", error);\n        });\n      }\n    });\n\n    stopBtn.addEventListener('click', () => {\n      audioPlayerMain.pause();\n      audioPlayerMain.currentTime = 0;\n    });\n\n    volumeSliderMain.addEventListener('input', () => {\n      audioPlayerMain.volume = volumeSliderMain.value;\n    });\n\n    audioPlayerMain.addEventListener('play', () => {\n      isPlaying = true;\n      updatePlayPauseButtonIcon();\n      liveIndicator.classList.remove('hidden');\n    });\n\n    audioPlayerMain.addEventListener('pause', () => {\n      isPlaying = false;\n      updatePlayPauseButtonIcon();\n    });\n\n    themeToggle.addEventListener('click', toggleDarkMode);\n\n    skinSelect.addEventListener('change', () => {\n      applySkin(skinSelect.value);\n    });\n\n    embedBtn.addEventListener('click', () => {\n      const embedCodeContainer = document.getElementById('embedCodeContainer');\n      if (embedCodeContainer.classList.contains('hidden')) {\n        generateEmbedCode();\n        embedCodeContainer.classList.remove('hidden');\n      } else {\n        embedCodeContainer.classList.add('hidden');\n      }\n    });\n\n    popupBtn.addEventListener('click', createPopupWindow);\n\n    networkFormatBtn.addEventListener('click', toggleNetworkInfo);\n\n    \/\/ Initialize\n    loadChannel(0);\n    updatePlayPauseButtonIcon();\n    updateActiveChannel();\n\n    \/\/ Global function for embedCode\n    window.copyEmbedCode = copyEmbedCode;\n  <\/script>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>Vibrant Radio Player Volume Network Format Player Skin Indigo GradientPurple DelightGreen EnergyPink PassionBlue Ocean Channels Version 2.0 Radio 105 Network (Malta) Station Format: Radio 105 Network (Malta) Radio 105 Network is Malta&#8217;s leading independent radio network, offering a diverse range of audio content through its streaming platform, 105 Player. Our Main Channel, Radio 105 (FM), [&hellip;]<\/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-23","page","type-page","status-publish","hentry"],"rankMath":{"parentDomain":"radio105.mt","noFollowDomains":[],"noFollowExcludeDomains":[],"noFollowExternalLinks":false,"featuredImageNotice":"The featured image should be at least 200 by 200 pixels to be picked up by Facebook and other social media sites.","pluginReviewed":false,"postSettings":{"linkSuggestions":true,"useFocusKeyword":false},"frontEndScore":false,"postName":"radio-105-player","permalinkFormat":"https:\/\/player.radio105.mt\/","showLockModifiedDate":true,"assessor":{"focusKeywordLink":"https:\/\/player.radio105.mt\/wp-admin\/edit.php?focus_keyword=%focus_keyword%&post_type=%post_type%","hasTOCPlugin":false,"primaryTaxonomy":false,"serpData":{"title":"","description":"","focusKeywords":"Radio 105 Malta - Listen Live Online, Radio Malta,, How to listen to Radio 105 online, Malta radio station. Radio Malta, Radio 105 Malta streaming,,Radio 105,Radio Galaxy,Radio Live Malta,Radio Live","pillarContent":false,"canonicalUrl":"","breadcrumbTitle":"","advancedRobots":{"max-snippet":"-1","max-video-preview":"-1","max-image-preview":"large"},"facebookTitle":"","facebookDescription":"","facebookImage":"","facebookImageID":"","facebookHasOverlay":false,"facebookImageOverlay":"","facebookAuthor":"","twitterCardType":"","twitterUseFacebook":true,"twitterTitle":"","twitterDescription":"","twitterImage":"","twitterImageID":"","twitterHasOverlay":false,"twitterImageOverlay":"","twitterPlayerUrl":"","twitterPlayerSize":"","twitterPlayerStream":"","twitterPlayerStreamCtype":"","twitterAppDescription":"","twitterAppIphoneName":"","twitterAppIphoneID":"","twitterAppIphoneUrl":"","twitterAppIpadName":"","twitterAppIpadID":"","twitterAppIpadUrl":"","twitterAppGoogleplayName":"","twitterAppGoogleplayID":"","twitterAppGoogleplayUrl":"","twitterAppCountry":"","robots":{"index":true},"twitterAuthor":"username","primaryTerm":0,"authorName":"admin","titleTemplate":"%title% %sep% %sitename%","descriptionTemplate":"%excerpt%","showScoreFrontend":true,"lockModifiedDate":false},"powerWords":["a cut above","absolute","absolutely","absolutely lowest","absurd","abuse","accurate","accuse","achieve","actionable","adaptable","adequate","admit","adorable","advantage","advice","affordable","aggravate","aggressive","agitated","agonizing","agony","alarmed","alarming","alienated","aligned","alive","all-inclusive","alluring","always","amazing","amp","animated","annihilate","announcing","anonymous","antagonistic","anxious","apocalypse","appalled","approved","approving","argumentative","armageddon","arrogant","ass kicking","assault","assured","astonishing","astounded","astounding","at ease","atrocious","attack","attractive","audacity","authentic","authoritative","authority","avoid","aware","awe-inspiring","awesome","awkward","backbone","backdoor","backed","backlash","backstabbing","badass","balanced","banned","bargain","barrage","basic","battle","beaming","beat down","beating","beautiful","beauty","begging","behind the scenes","belief","belong","best","best-selling","better","beware","big","billion","black market","blacklisted","blast","blessed","blinded","blissful","blood","bloodbath","bloodcurdling","bloody","blunder","blushing","bold","bomb","bona","bona fide","bonanza","bonus","bootleg","bottom line","bountiful","brave","bravery","brazen","break","breaking","breakthrough","breathtaking","bright","brilliant","broke","brutal","budget","buffoon","bullshit","bully","bumbling","buy","cadaver","calm","cancel anytime","capable","captivate","captivating","carefree","case study","cash","cataclysmic","catapult","catastrophe","caution","censored","centered","certain","certainly","certified","challenge","charming","cheap","cheat","cheat-sheet","cheer","cheerful","child-like","clarity","classified","clear","clueless","collapse","colorful","colossal","comfortable","compare","competitive","complete","completely","completeness","comprehensive","compromise","compulsive","concealed","conclusive","condemning","condescending","confess","confession","confessions","confident","confidential","conquer","conscientious","constructive","content","contrary","controlling","controversial","convenient","convert","cool","cooperative","copy","corpse","corrupt","corrupting","courage","courageous","cover-up","covert","coward","cowardly","crammed","crave","crazy","create","creative","cringeworthy","cripple","crisis","critical","crooked","crush","crushing","damaging","danger","dangerous","daring","dazzling","dead","deadline","deadly","death","decadent","deceived","deceptive","deep","defiance","definitely","definitive","defying","dejected","delicious","delight","delighted","delightful","delirious","delivered","demoralizing","deplorable","depraved","desire","desperate","despicable","destiny","destroy","detailed","devastating","devoted","diagnosed","direct","dirty","disadvantages","disastrous","discount","discover","disdainful","disempowered","disgusted","disgusting","dishonest","disillusioned","disoriented","distracted","distraught","distressed","distrustful","divulge","document","dollar","dominate","doomed","double","doubtful","download","dreadful","dreamy","drive","drowning","dumb","dynamic","eager","earnest","easily","easy","economical","ecstatic","edge","effective","efficient","effortless","elated","eliminate","elite","embarrass","embarrassed","embarrassing","emergency","emerging","emphasize","empowered","enchant","encouraged","endorsed","energetic","energy","enormous","enraged","enthusiastic","envy","epic","epidemic","essential","ethical","euphoric","evil","exactly","exasperated","excellent","excited","excitement","exciting","exclusive","exclusivity","excruciating","exhilarated","expensive","expert","explode","exploit","explosive","exposed","exquisite","extra","extraordinary","extremely","exuberant","eye-opening","fail","fail-proof","failure","faith","famous","fantasy","fascinating","fatigued","faux","faux pas","fearless","feast","feeble","festive","fide","fierce","fight","final","fine","fired","first","first ever","flirt","fluid","focus","focused","fool","fooled","foolish","forbidden","force-fed","forever","forgiving","forgotten","formula","fortune","foul","frantic","free","freebie","freedom","frenzied","frenzy","frightening","frisky","frugal","frustrated","fulfill","fulfilled","full","fully","fun","fun-loving","fundamentals","funniest","funny","furious","gambling","gargantuan","genius","genuine","gift","gigantic","giveaway","glamorous","gleeful","glorious","glowing","goddamn","gorgeous","graceful","grateful","gratified","gravity","great","greatest","greatness","greed","greedy","gripping","grit","grounded","growth","guaranteed","guilt","guilt-free","gullible","guts","hack","happiness","happy","harmful","harsh","hate","have you heard","havoc","hazardous","healthy","heart","heartbreaking","heartwarming","heavenly","hell","helpful","helplessness","hero","hesitant","hidden","high tech","highest","highly effective","hilarious","hoak","hoax","honest","honored","hope","hopeful","horribly","horrific","horrifying","horror","hostile","how to","huge","humility","humor","hurricane","hurry","hypnotic","idiot","ignite","illegal","illusive","imagination","immediately","imminently","impatience","impatient","impenetrable","important","impressive","improved","in the zone","incapable","incapacitated","incompetent","inconsiderate","increase","incredible","indecisive","indulgence","indulgent","inexpensive","inferior","informative","infuriated","ingredients","innocent","innovative","insane","insecure","insider","insidious","inspired","inspiring","instant savings","instantly","instructive","insult","intel","intelligent","intense","interesting","intriguing","introducing","invasion","investment","iron-clad","ironclad","irresistible","irs","is here","jackpot","jail","jaw-dropping","jealous","jeopardy","jittery","jovial","joyous","jubilant","judgmental","jumpstart","just arrived","keen","kickass","kickstart","kill","killed","killing","kills","know it all","lame","largest","lascivious","last","last chance","last minute","latest","laugh","laughing","launch","launching","lavishly","lawsuit","lazy","left behind","legendary","legitimate","liberal","liberated","lick","lies","life-changing","lifetime","light","lighthearted","likely","limited","literally","little-known","loathsome","lonely","looming","loser","lost","love","lucrative","lunatic","lurking","lust","luxurious","luxury","lying","magic","magical","magnificent","mainstream","malicious","mammoth","manipulative","marked down","massive","master","masterclass","maul","mediocre","meditative","meltdown","memorability","memorable","menacing","mesmerizing","meticulous","mind-blowing","minimalist","miracle","mired","mischievous","misgiving","missing out","mistake","monetize","money","moneyback","moneygrubbing","monumental","most important","motivated","mouth-watering","murder","mystery","nail","naked","natural","naughty","nazi","nest egg","never","new","nightmare","no good","no obligation","no one talks about","no questions asked","no risk","no strings attached","non-controlling","noted","novelty","now","obnoxious","obsessed","obsession","obvious","odd","off-kilter","off-limits","off-the record","offensive","official","okay","on-demand","open-minded","opportunities","optimistic","ordeal","outlawed","outrageousness","outstanding","overcome","overjoyed","overnight","overwhelmed","packed","painful","painless","painstaking","pale","panic","panicked","paralyzed","pas","passionate","pathetic","pay zero","payback","perfect","peril","perplexed","perspective","pessimistic","pioneering","piranha","pitfall","pitiful","placid","plague","played","playful","pleased","pluck","plummet","plunge","poison","poisonous","polarizing","poor","popular","portfolio","pound","powerful","powerless","practical","preposterous","prestige","price","priceless","pride","prison","privacy","private","privileged","prize","problem","productive","professional","profit","profitable","profound","promiscuous","promising","promote","protect","protected","proven","provocative","provoke","psychological","pummel","punch","punish","pus","quadruple","quality","quarrelsome","quick","quick-start","quickly","quiet","radiant","rare","ravenous","rebellious","recession-proof","reckoning","recognized","recommend","recreate","reduced","reflective","refugee","refund","refundable","reject","relaxed","release","relentless","reliable","remarkable","replicate","report","reprimanding","repulsed","repulsive","research","resentful","resourceful","responsible","responsive","rested","restricted","results","retaliating","reveal","revealing","revenge","revengeful","revisited","revolting","revolutionary","reward","rich","ridiculous","risky","riveting","rookie","rowdy","ruin","rules","ruthless","sabotaging","sacred","sadistic","sadly","sadness","safe","safety","sale","sampler","sarcastic","satisfied","savage","savagery","save","savings","savvy","scam","scandal","scandalous","scarce","scared","scary","scornful","scream","searing","secret","secret agenda","secret plot","secrets","secure","security","seductive","seething","seize","selected","self-hating","self-sufficient","sensational","senseless","sensual","serene","seriously","severe","sex","sexy","shaking","shameful","shameless","shaming","shatter","shellacking","shocking","should","shrewd","sick and tired","signs","silly","simple","simplicity","simplified","simplistic","sincere","sinful","sins","six-figure","sizable","sizzle","sizzled","sizzles","sizzling","sizzlingly","skill","skyrocket","slaughter","slave","sleazy","sleeping","sly","smash","smiling","smug","smuggle","smuggled","sneak-peek","sneaky","sniveling","snob","snooty","snotty","soar","soaring","solid","solution","spank","special","spectacular","speedy","spell-binding","spine","spirit","spirited","spiteful","spoiler","spontaneous","spotlight","spunky","squirming","stable","staggering","startling","steady","steal","stealthy","steamy","step-by-step","still","stoic","stop","strange","strangle","strategy","stressed","strong","strongly suggest","struggle","stuck up","studies","stunning","stupid","stupid-simple","sturdy","sublime","succeed","success","successful","suck","suddenly","suffer","sunny","super","super-human","superb","supercharge","superior","supported","supportive","sure","sure fire","surefire","surge","surging","surprise","surprised","surprising","survival","survive","suspicious","sweaty","swoon","swoon-worthy","tailspin","tank","tantalizing","targeted","tawdry","tease","technology","teetering","tempting","tenacious","tense","terrible","terrific","terrified","terrifying","terror","terrorist","tested","thankful","the truth","threaten","threatened","thrilled","thrilling","thug","ticked off","tickled","timely","today","torture","toxic","track record","trade secret","tragedy","tragic","transform","transparency","trap","trapped","trauma","traumatized","treacherous","treasure","tremendous","trend","tricks","triggers","triple","triumph","truly","trusting","trustworthy","truth","truthful","turbo-charge","turbocharges","tweaks","twitching","ultimate","unadulterated","unassuming","unauthorized","unbelievable","unburdened","uncaring","uncensored","uncertain","uncomfortable","unconditional","uncontrollable","unconventional","uncovered","undeniable","under priced","undercover","underground","underhanded","underused","unexpected","unforgettable","unheard of","unhurried","uninterested","unique","unjustified","unknowingly","unleashed","unlimited","unlock","unparalleled","unpopular","unreliable","unresponsive","unseen","unstable","unstoppable","unsure","unsurpassed","untapped","unusual","up-sell","upbeat","uplifted","uplifting","urge","urgent","useful","useless","validate","valor","valuable","value","vanquish","vaporize","venomous","verify","vibrant","vicious","victim","victory","vigorous","vilified","vindictive","violated","violent","volatile","vulnerable","waiting","wanted","wanton","warning","waste","weak","wealth","weird","what no one tells you","whip","whopping","wicked","wild","willpower","withheld","wonderful","wondrous","woozy","world","worry","worst","worthwhile","wounded","wreaking","youthful","zen","zinger"],"diacritics":{"A":"[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]","AA":"[\\uA732]","AE":"[\\u00C6\\u01FC\\u01E2]","AO":"[\\uA734]","AU":"[\\uA736]","AV":"[\\uA738\\uA73A]","AY":"[\\uA73C]","B":"[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]","C":"[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]","D":"[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]","DZ":"[\\u01F1\\u01C4]","Dz":"[\\u01F2\\u01C5]","E":"[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]","F":"[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]","G":"[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]","H":"[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]","I":"[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]","J":"[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]","K":"[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]","L":"[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]","LJ":"[\\u01C7]","Lj":"[\\u01C8]","M":"[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]","N":"[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]","NJ":"[\\u01CA]","Nj":"[\\u01CB]","O":"[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]","OI":"[\\u01A2]","OO":"[\\uA74E]","OU":"[\\u0222]","P":"[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]","Q":"[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]","R":"[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]","S":"[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]","T":"[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]","TZ":"[\\uA728]","U":"[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]","V":"[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]","VY":"[\\uA760]","W":"[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]","X":"[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]","Y":"[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]","Z":"[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]","a":"[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]","aa":"[\\uA733]","ae":"[\\u00E6\\u01FD\\u01E3]","ao":"[\\uA735]","au":"[\\uA737]","av":"[\\uA739\\uA73B]","ay":"[\\uA73D]","b":"[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]","c":"[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]","d":"[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]","dz":"[\\u01F3\\u01C6]","e":"[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]","f":"[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]","g":"[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]","h":"[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]","hv":"[\\u0195]","i":"[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]","j":"[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]","k":"[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]","l":"[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]","lj":"[\\u01C9]","m":"[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]","n":"[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]","nj":"[\\u01CC]","o":"[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]","oi":"[\\u01A3]","ou":"[\\u0223]","oo":"[\\uA74F]","p":"[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]","q":"[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]","r":"[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]","s":"[\\u0073\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]","ss":"[\\u00DF]","t":"[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]","tz":"[\\uA729]","u":"[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]","v":"[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]","vy":"[\\uA761]","w":"[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]","x":"[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]","y":"[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]","z":"[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]"},"researchesTests":["contentHasTOC","contentHasShortParagraphs","contentHasAssets","keywordInTitle","keywordInMetaDescription","keywordInPermalink","keywordIn10Percent","keywordInContent","keywordInSubheadings","keywordInImageAlt","keywordDensity","keywordNotUsed","lengthContent","lengthPermalink","linksHasInternal","linksHasExternals","linksNotAllExternals","titleStartWithKeyword","titleSentiment","titleHasPowerWords","titleHasNumber","hasContentAI"],"hasRedirection":false,"hasBreadcrumb":false},"homeUrl":"https:\/\/player.radio105.mt","objectID":23,"objectType":"post","locale":"en","localeFull":"en_US","overlayImages":{"play":{"name":"Play icon","url":"https:\/\/player.radio105.mt\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-play.png","path":"\/home\/zvhgawfm\/public_html\/player.radio105.mt\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-play.png","position":"middle_center"},"gif":{"name":"GIF icon","url":"https:\/\/player.radio105.mt\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-gif.png","path":"\/home\/zvhgawfm\/public_html\/player.radio105.mt\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-gif.png","position":"middle_center"}},"defautOgImage":"https:\/\/player.radio105.mt\/wp-content\/uploads\/2025\/03\/105-Player-Image.png","customPermalinks":true,"isUserRegistered":true,"autoSuggestKeywords":true,"connectSiteUrl":"https:\/\/rankmath.com\/auth?site=https%3A%2F%2Fplayer.radio105.mt&r=https%3A%2F%2Fplayer.radio105.mt%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fpages%2F23%3Fnonce%3D9a9dd0aac5","maxTags":5,"trendsIcon":"<svg viewBox=\"0 0 610 610\"><path d=\"M18.85,446,174.32,290.48l58.08,58.08L76.93,504a14.54,14.54,0,0,1-20.55,0L18.83,466.48a14.54,14.54,0,0,1,0-20.55Z\" style=\"fill:#4285f4\"\/><path d=\"M242.65,242.66,377.59,377.6l-47.75,47.75a14.54,14.54,0,0,1-20.55,0L174.37,290.43l47.75-47.75A14.52,14.52,0,0,1,242.65,242.66Z\" style=\"fill:#ea4335\"\/><polygon points=\"319.53 319.53 479.26 159.8 537.34 217.88 377.61 377.62 319.53 319.53\" style=\"fill:#fabb05\"\/><path d=\"M594.26,262.73V118.61h0a16.94,16.94,0,0,0-16.94-16.94H433.2a16.94,16.94,0,0,0-12,28.92L565.34,274.71h0a16.94,16.94,0,0,0,28.92-12Z\" style=\"fill:#34a853\"\/><rect width=\"610\" height=\"610\" style=\"fill:none\"\/><\/svg>","showScore":true,"siteFavIcon":"https:\/\/player.radio105.mt\/wp-content\/uploads\/2025\/03\/cropped-105-PLAyer-32x32.png","canUser":{"general":false,"advanced":false,"snippet":false,"social":false,"analysis":false,"analytics":false,"content_ai":false},"showKeywordIntent":true,"isPro":false,"is_front_page":false,"trendsUpgradeLink":"https:\/\/rankmath.com\/pricing\/?utm_source=Plugin&utm_medium=CE%20General%20Tab%20Trends&utm_campaign=WP","trendsUpgradeLabel":"Upgrade","trendsPreviewImage":"https:\/\/player.radio105.mt\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/trends-preview.jpg","currentEditor":false,"homepageData":{"assessor":{"powerWords":["a cut above","absolute","absolutely","absolutely lowest","absurd","abuse","accurate","accuse","achieve","actionable","adaptable","adequate","admit","adorable","advantage","advice","affordable","aggravate","aggressive","agitated","agonizing","agony","alarmed","alarming","alienated","aligned","alive","all-inclusive","alluring","always","amazing","amp","animated","annihilate","announcing","anonymous","antagonistic","anxious","apocalypse","appalled","approved","approving","argumentative","armageddon","arrogant","ass kicking","assault","assured","astonishing","astounded","astounding","at ease","atrocious","attack","attractive","audacity","authentic","authoritative","authority","avoid","aware","awe-inspiring","awesome","awkward","backbone","backdoor","backed","backlash","backstabbing","badass","balanced","banned","bargain","barrage","basic","battle","beaming","beat down","beating","beautiful","beauty","begging","behind the scenes","belief","belong","best","best-selling","better","beware","big","billion","black market","blacklisted","blast","blessed","blinded","blissful","blood","bloodbath","bloodcurdling","bloody","blunder","blushing","bold","bomb","bona","bona fide","bonanza","bonus","bootleg","bottom line","bountiful","brave","bravery","brazen","break","breaking","breakthrough","breathtaking","bright","brilliant","broke","brutal","budget","buffoon","bullshit","bully","bumbling","buy","cadaver","calm","cancel anytime","capable","captivate","captivating","carefree","case study","cash","cataclysmic","catapult","catastrophe","caution","censored","centered","certain","certainly","certified","challenge","charming","cheap","cheat","cheat-sheet","cheer","cheerful","child-like","clarity","classified","clear","clueless","collapse","colorful","colossal","comfortable","compare","competitive","complete","completely","completeness","comprehensive","compromise","compulsive","concealed","conclusive","condemning","condescending","confess","confession","confessions","confident","confidential","conquer","conscientious","constructive","content","contrary","controlling","controversial","convenient","convert","cool","cooperative","copy","corpse","corrupt","corrupting","courage","courageous","cover-up","covert","coward","cowardly","crammed","crave","crazy","create","creative","cringeworthy","cripple","crisis","critical","crooked","crush","crushing","damaging","danger","dangerous","daring","dazzling","dead","deadline","deadly","death","decadent","deceived","deceptive","deep","defiance","definitely","definitive","defying","dejected","delicious","delight","delighted","delightful","delirious","delivered","demoralizing","deplorable","depraved","desire","desperate","despicable","destiny","destroy","detailed","devastating","devoted","diagnosed","direct","dirty","disadvantages","disastrous","discount","discover","disdainful","disempowered","disgusted","disgusting","dishonest","disillusioned","disoriented","distracted","distraught","distressed","distrustful","divulge","document","dollar","dominate","doomed","double","doubtful","download","dreadful","dreamy","drive","drowning","dumb","dynamic","eager","earnest","easily","easy","economical","ecstatic","edge","effective","efficient","effortless","elated","eliminate","elite","embarrass","embarrassed","embarrassing","emergency","emerging","emphasize","empowered","enchant","encouraged","endorsed","energetic","energy","enormous","enraged","enthusiastic","envy","epic","epidemic","essential","ethical","euphoric","evil","exactly","exasperated","excellent","excited","excitement","exciting","exclusive","exclusivity","excruciating","exhilarated","expensive","expert","explode","exploit","explosive","exposed","exquisite","extra","extraordinary","extremely","exuberant","eye-opening","fail","fail-proof","failure","faith","famous","fantasy","fascinating","fatigued","faux","faux pas","fearless","feast","feeble","festive","fide","fierce","fight","final","fine","fired","first","first ever","flirt","fluid","focus","focused","fool","fooled","foolish","forbidden","force-fed","forever","forgiving","forgotten","formula","fortune","foul","frantic","free","freebie","freedom","frenzied","frenzy","frightening","frisky","frugal","frustrated","fulfill","fulfilled","full","fully","fun","fun-loving","fundamentals","funniest","funny","furious","gambling","gargantuan","genius","genuine","gift","gigantic","giveaway","glamorous","gleeful","glorious","glowing","goddamn","gorgeous","graceful","grateful","gratified","gravity","great","greatest","greatness","greed","greedy","gripping","grit","grounded","growth","guaranteed","guilt","guilt-free","gullible","guts","hack","happiness","happy","harmful","harsh","hate","have you heard","havoc","hazardous","healthy","heart","heartbreaking","heartwarming","heavenly","hell","helpful","helplessness","hero","hesitant","hidden","high tech","highest","highly effective","hilarious","hoak","hoax","honest","honored","hope","hopeful","horribly","horrific","horrifying","horror","hostile","how to","huge","humility","humor","hurricane","hurry","hypnotic","idiot","ignite","illegal","illusive","imagination","immediately","imminently","impatience","impatient","impenetrable","important","impressive","improved","in the zone","incapable","incapacitated","incompetent","inconsiderate","increase","incredible","indecisive","indulgence","indulgent","inexpensive","inferior","informative","infuriated","ingredients","innocent","innovative","insane","insecure","insider","insidious","inspired","inspiring","instant savings","instantly","instructive","insult","intel","intelligent","intense","interesting","intriguing","introducing","invasion","investment","iron-clad","ironclad","irresistible","irs","is here","jackpot","jail","jaw-dropping","jealous","jeopardy","jittery","jovial","joyous","jubilant","judgmental","jumpstart","just arrived","keen","kickass","kickstart","kill","killed","killing","kills","know it all","lame","largest","lascivious","last","last chance","last minute","latest","laugh","laughing","launch","launching","lavishly","lawsuit","lazy","left behind","legendary","legitimate","liberal","liberated","lick","lies","life-changing","lifetime","light","lighthearted","likely","limited","literally","little-known","loathsome","lonely","looming","loser","lost","love","lucrative","lunatic","lurking","lust","luxurious","luxury","lying","magic","magical","magnificent","mainstream","malicious","mammoth","manipulative","marked down","massive","master","masterclass","maul","mediocre","meditative","meltdown","memorability","memorable","menacing","mesmerizing","meticulous","mind-blowing","minimalist","miracle","mired","mischievous","misgiving","missing out","mistake","monetize","money","moneyback","moneygrubbing","monumental","most important","motivated","mouth-watering","murder","mystery","nail","naked","natural","naughty","nazi","nest egg","never","new","nightmare","no good","no obligation","no one talks about","no questions asked","no risk","no strings attached","non-controlling","noted","novelty","now","obnoxious","obsessed","obsession","obvious","odd","off-kilter","off-limits","off-the record","offensive","official","okay","on-demand","open-minded","opportunities","optimistic","ordeal","outlawed","outrageousness","outstanding","overcome","overjoyed","overnight","overwhelmed","packed","painful","painless","painstaking","pale","panic","panicked","paralyzed","pas","passionate","pathetic","pay zero","payback","perfect","peril","perplexed","perspective","pessimistic","pioneering","piranha","pitfall","pitiful","placid","plague","played","playful","pleased","pluck","plummet","plunge","poison","poisonous","polarizing","poor","popular","portfolio","pound","powerful","powerless","practical","preposterous","prestige","price","priceless","pride","prison","privacy","private","privileged","prize","problem","productive","professional","profit","profitable","profound","promiscuous","promising","promote","protect","protected","proven","provocative","provoke","psychological","pummel","punch","punish","pus","quadruple","quality","quarrelsome","quick","quick-start","quickly","quiet","radiant","rare","ravenous","rebellious","recession-proof","reckoning","recognized","recommend","recreate","reduced","reflective","refugee","refund","refundable","reject","relaxed","release","relentless","reliable","remarkable","replicate","report","reprimanding","repulsed","repulsive","research","resentful","resourceful","responsible","responsive","rested","restricted","results","retaliating","reveal","revealing","revenge","revengeful","revisited","revolting","revolutionary","reward","rich","ridiculous","risky","riveting","rookie","rowdy","ruin","rules","ruthless","sabotaging","sacred","sadistic","sadly","sadness","safe","safety","sale","sampler","sarcastic","satisfied","savage","savagery","save","savings","savvy","scam","scandal","scandalous","scarce","scared","scary","scornful","scream","searing","secret","secret agenda","secret plot","secrets","secure","security","seductive","seething","seize","selected","self-hating","self-sufficient","sensational","senseless","sensual","serene","seriously","severe","sex","sexy","shaking","shameful","shameless","shaming","shatter","shellacking","shocking","should","shrewd","sick and tired","signs","silly","simple","simplicity","simplified","simplistic","sincere","sinful","sins","six-figure","sizable","sizzle","sizzled","sizzles","sizzling","sizzlingly","skill","skyrocket","slaughter","slave","sleazy","sleeping","sly","smash","smiling","smug","smuggle","smuggled","sneak-peek","sneaky","sniveling","snob","snooty","snotty","soar","soaring","solid","solution","spank","special","spectacular","speedy","spell-binding","spine","spirit","spirited","spiteful","spoiler","spontaneous","spotlight","spunky","squirming","stable","staggering","startling","steady","steal","stealthy","steamy","step-by-step","still","stoic","stop","strange","strangle","strategy","stressed","strong","strongly suggest","struggle","stuck up","studies","stunning","stupid","stupid-simple","sturdy","sublime","succeed","success","successful","suck","suddenly","suffer","sunny","super","super-human","superb","supercharge","superior","supported","supportive","sure","sure fire","surefire","surge","surging","surprise","surprised","surprising","survival","survive","suspicious","sweaty","swoon","swoon-worthy","tailspin","tank","tantalizing","targeted","tawdry","tease","technology","teetering","tempting","tenacious","tense","terrible","terrific","terrified","terrifying","terror","terrorist","tested","thankful","the truth","threaten","threatened","thrilled","thrilling","thug","ticked off","tickled","timely","today","torture","toxic","track record","trade secret","tragedy","tragic","transform","transparency","trap","trapped","trauma","traumatized","treacherous","treasure","tremendous","trend","tricks","triggers","triple","triumph","truly","trusting","trustworthy","truth","truthful","turbo-charge","turbocharges","tweaks","twitching","ultimate","unadulterated","unassuming","unauthorized","unbelievable","unburdened","uncaring","uncensored","uncertain","uncomfortable","unconditional","uncontrollable","unconventional","uncovered","undeniable","under priced","undercover","underground","underhanded","underused","unexpected","unforgettable","unheard of","unhurried","uninterested","unique","unjustified","unknowingly","unleashed","unlimited","unlock","unparalleled","unpopular","unreliable","unresponsive","unseen","unstable","unstoppable","unsure","unsurpassed","untapped","unusual","up-sell","upbeat","uplifted","uplifting","urge","urgent","useful","useless","validate","valor","valuable","value","vanquish","vaporize","venomous","verify","vibrant","vicious","victim","victory","vigorous","vilified","vindictive","violated","violent","volatile","vulnerable","waiting","wanted","wanton","warning","waste","weak","wealth","weird","what no one tells you","whip","whopping","wicked","wild","willpower","withheld","wonderful","wondrous","woozy","world","worry","worst","worthwhile","wounded","wreaking","youthful","zen","zinger"],"diacritics":true,"researchesTests":["contentHasTOC","contentHasShortParagraphs","contentHasAssets","keywordInTitle","keywordInMetaDescription","keywordInPermalink","keywordIn10Percent","keywordInContent","keywordInSubheadings","keywordInImageAlt","keywordDensity","keywordNotUsed","lengthContent","lengthPermalink","linksHasInternal","linksHasExternals","linksNotAllExternals","titleStartWithKeyword","titleSentiment","titleHasPowerWords","titleHasNumber","hasContentAI"],"hasBreadcrumb":false,"serpData":{"title":"%sitename% %page% %sep% %sitedesc%","description":"","titleTemplate":"%sitename% %page% %sep% %sitedesc%","descriptionTemplate":"","focusKeywords":"","breadcrumbTitle":"Home","robots":{"index":true},"advancedRobots":{"max-snippet":"-1","max-video-preview":"-1","max-image-preview":"large"},"facebookTitle":"","facebookDescription":"","facebookImage":"","facebookImageID":""}}},"tocTitle":"Table of Contents","tocExcludeHeadings":[],"listStyle":"ul"},"_links":{"self":[{"href":"https:\/\/player.radio105.mt\/index.php\/wp-json\/wp\/v2\/pages\/23","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/player.radio105.mt\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/player.radio105.mt\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/player.radio105.mt\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/player.radio105.mt\/index.php\/wp-json\/wp\/v2\/comments?post=23"}],"version-history":[{"count":16,"href":"https:\/\/player.radio105.mt\/index.php\/wp-json\/wp\/v2\/pages\/23\/revisions"}],"predecessor-version":[{"id":52,"href":"https:\/\/player.radio105.mt\/index.php\/wp-json\/wp\/v2\/pages\/23\/revisions\/52"}],"wp:attachment":[{"href":"https:\/\/player.radio105.mt\/index.php\/wp-json\/wp\/v2\/media?parent=23"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}