{"id":22078,"date":"2026-09-14T16:02:14","date_gmt":"2026-09-14T16:02:14","guid":{"rendered":"https:\/\/marketplace-marketplace.com\/?page_id=22078"},"modified":"2026-09-14T16:06:03","modified_gmt":"2026-09-14T16:06:03","slug":"radio","status":"publish","type":"page","link":"https:\/\/marketplace-marketplace.com\/index.php\/radio\/","title":{"rendered":""},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"22078\" class=\"elementor elementor-22078\" data-elementor-settings=\"[]\">\n\t\t\t\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-96ac268 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"96ac268\" data-element_type=\"section\">\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-0d5215a\" data-id=\"0d5215a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-57d07f9 elementor-widget elementor-widget-html\" data-id=\"57d07f9\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes, viewport-fit=cover\">\r\n<meta name=\"theme-color\" content=\"#0a0a1a\">\r\n<title>Marketplace Internet Radio \u00b7 23 Music Channels \u00b7 16 English Ads \u00b7 LIVE STREAM<\/title>\r\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\">\r\n<script src=\"https:\/\/www.youtube.com\/iframe_api\"><\/script>\r\n<style>\r\n* {\r\nmargin: 0;\r\npadding: 0;\r\nbox-sizing: border-box;\r\nfont-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\r\n}\r\n\r\nbody {\r\nbackground: radial-gradient(circle at 30% 20%, #0a0a1a, #050510);\r\ncolor: #ffffff;\r\nmin-height: 100vh;\r\ndisplay: flex;\r\nflex-direction: column;\r\n}\r\n\r\n::-webkit-scrollbar { width: 8px; }\r\n::-webkit-scrollbar-track { background: #1a1a2a; border-radius: 10px; }\r\n::-webkit-scrollbar-thumb { background: linear-gradient(135deg, #ffd700, #ffaa00); border-radius: 10px; }\r\n\r\n.header {\r\nbackground: rgba(10, 10, 20, 0.98);\r\nbackdrop-filter: blur(20px);\r\nborder-bottom: 3px solid #ffd700;\r\npadding: 12px 20px;\r\ndisplay: flex;\r\nalign-items: center;\r\njustify-content: space-between;\r\nflex-wrap: wrap;\r\ngap: 12px;\r\nposition: sticky;\r\ntop: 0;\r\nz-index: 100;\r\n}\r\n\r\n.amb-logo {\r\ndisplay: flex;\r\nalign-items: center;\r\ngap: 12px;\r\nbackground: #000;\r\npadding: 6px 20px 6px 12px;\r\nborder-radius: 50px;\r\nborder: 2px solid #ffd700;\r\n}\r\n\r\n.amb-icon {\r\nwidth: 45px;\r\nheight: 45px;\r\nbackground: linear-gradient(135deg, #ffd700, #ffaa00);\r\nborder-radius: 50%;\r\ndisplay: flex;\r\nalign-items: center;\r\njustify-content: center;\r\nfont-size: 22px;\r\nfont-weight: 900;\r\ncolor: #000;\r\nborder: 2px solid white;\r\nanimation: pulseRing 2s infinite;\r\n}\r\n\r\n@keyframes pulseRing {\r\n0%, 100% { box-shadow: 0 0 0 0 rgba(255,217,102,0.7); }\r\n50% { box-shadow: 0 0 0 10px rgba(255,217,102,0); }\r\n}\r\n\r\n.amb-text-main {\r\nfont-size: 18px;\r\nfont-weight: 800;\r\ncolor: #ffd700;\r\n}\r\n\r\n.amb-text-sub {\r\nfont-size: 9px;\r\ncolor: #ffaa00;\r\n}\r\n\r\n.stats {\r\ndisplay: flex;\r\ngap: 15px;\r\n}\r\n\r\n.stat-value {\r\nfont-size: 18px;\r\nfont-weight: 800;\r\ncolor: #ffd700;\r\n}\r\n\r\n.stat-label {\r\nfont-size: 9px;\r\ncolor: #a0a0b0;\r\n}\r\n\r\n.container {\r\nmax-width: 1600px;\r\nmargin: 15px auto;\r\npadding: 0 15px;\r\nwidth: 100%;\r\nflex: 1;\r\n}\r\n\r\n\/* LIVE STREAM SECTION *\/\r\n.live-stream-section {\r\nbackground: linear-gradient(135deg, rgba(231, 76, 60, 0.2), rgba(0, 0, 0, 0.8));\r\nborder-radius: 20px;\r\npadding: 20px;\r\nmargin-bottom: 20px;\r\nborder: 2px solid #e74c3c;\r\nposition: relative;\r\noverflow: hidden;\r\n}\r\n\r\n.live-badge {\r\nposition: absolute;\r\ntop: 15px;\r\nright: 15px;\r\nbackground: #e74c3c;\r\ncolor: white;\r\npadding: 5px 12px;\r\nborder-radius: 30px;\r\nfont-size: 12px;\r\nfont-weight: bold;\r\nanimation: pulse 1.5s infinite;\r\n}\r\n\r\n@keyframes pulse {\r\n0% { opacity: 1; }\r\n50% { opacity: 0.5; }\r\n100% { opacity: 1; }\r\n}\r\n\r\n.live-stream-player {\r\nwidth: 100%;\r\naspect-ratio: 16\/9;\r\nbackground: #000;\r\nborder-radius: 15px;\r\noverflow: hidden;\r\nmargin: 10px 0;\r\n}\r\n\r\n.live-stream-player iframe {\r\nwidth: 100%;\r\nheight: 100%;\r\nborder: none;\r\n}\r\n\r\n.live-info {\r\ndisplay: flex;\r\njustify-content: space-between;\r\nalign-items: center;\r\nmargin-top: 15px;\r\nflex-wrap: wrap;\r\ngap: 10px;\r\n}\r\n\r\n.live-title {\r\nfont-size: 16px;\r\nfont-weight: bold;\r\ncolor: #e74c3c;\r\n}\r\n\r\n.live-viewers {\r\nbackground: rgba(0, 0, 0, 0.6);\r\npadding: 5px 12px;\r\nborder-radius: 20px;\r\nfont-size: 12px;\r\n}\r\n\r\n.live-btn {\r\npadding: 8px 16px;\r\nborder-radius: 30px;\r\nborder: none;\r\ncursor: pointer;\r\nfont-weight: bold;\r\ntransition: transform 0.2s;\r\n}\r\n\r\n.live-btn-start {\r\nbackground: linear-gradient(135deg, #e74c3c, #c0392b);\r\ncolor: white;\r\n}\r\n\r\n.live-btn-start:hover {\r\ntransform: scale(1.02);\r\n}\r\n\r\n\/* FULL SCREEN AD TEXT OVERLAY *\/\r\n.ad-overlay-full {\r\nposition: fixed;\r\ntop: 0;\r\nleft: 0;\r\nwidth: 100%;\r\nheight: 100%;\r\nbackground: linear-gradient(135deg, #000000, #1a1a2a);\r\nz-index: 10000;\r\ndisplay: none;\r\nalign-items: center;\r\njustify-content: center;\r\nbackdrop-filter: blur(10px);\r\nanimation: fadeInOverlay 0.3s ease;\r\n}\r\n\r\n@keyframes fadeInOverlay {\r\nfrom { opacity: 0; }\r\nto { opacity: 1; }\r\n}\r\n\r\n.ad-overlay-full.active {\r\ndisplay: flex;\r\n}\r\n\r\n.ad-content {\r\nmax-width: 90%;\r\nwidth: 750px;\r\npadding: 50px;\r\nbackground: linear-gradient(135deg, rgba(255, 215, 0, 0.2), rgba(0, 0, 0, 0.9));\r\nborder: 3px solid #ffd700;\r\nborder-radius: 40px;\r\ntext-align: center;\r\nanimation: slideInUp 0.3s ease;\r\nbox-shadow: 0 0 100px rgba(255, 215, 0, 0.3);\r\n}\r\n\r\n@keyframes slideInUp {\r\nfrom { transform: translateY(50px); opacity: 0; }\r\nto { transform: translateY(0); opacity: 1; }\r\n}\r\n\r\n.ad-logo {\r\nfont-size: 60px;\r\nmargin-bottom: 20px;\r\nanimation: pulseGold 1s infinite;\r\n}\r\n\r\n@keyframes pulseGold {\r\n0% { text-shadow: 0 0 10px #ffd700; }\r\n50% { text-shadow: 0 0 30px #ffd700; }\r\n100% { text-shadow: 0 0 10px #ffd700; }\r\n}\r\n\r\n.ad-title {\r\nfont-size: 28px;\r\nfont-weight: 900;\r\ncolor: #ffd700;\r\nmargin-bottom: 15px;\r\nletter-spacing: 2px;\r\n}\r\n\r\n.ad-message {\r\nfont-size: 16px;\r\nline-height: 1.6;\r\ncolor: #ffffff;\r\nmargin-bottom: 25px;\r\npadding: 20px;\r\nbackground: rgba(0, 0, 0, 0.6);\r\nborder-radius: 20px;\r\ntext-align: left;\r\nfont-family: 'Inter', sans-serif;\r\nmax-height: 400px;\r\noverflow-y: auto;\r\n}\r\n\r\n.ad-timer {\r\nfont-size: 48px;\r\nfont-weight: 800;\r\ncolor: #ffd700;\r\nmargin: 20px 0;\r\nfont-family: monospace;\r\nanimation: pulseTimer 1s infinite;\r\n}\r\n\r\n@keyframes pulseTimer {\r\n0% { transform: scale(1); }\r\n50% { transform: scale(1.05); }\r\n100% { transform: scale(1); }\r\n}\r\n\r\n.ad-footer {\r\nfont-size: 14px;\r\ncolor: #ffaa00;\r\nborder-top: 1px solid rgba(255, 215, 0, 0.3);\r\npadding-top: 20px;\r\nmargin-top: 20px;\r\n}\r\n\r\n.ad-close-btn {\r\nposition: absolute;\r\ntop: 20px;\r\nright: 20px;\r\nbackground: rgba(0, 0, 0, 0.6);\r\nborder: 2px solid #ffd700;\r\ncolor: #ffd700;\r\nwidth: 50px;\r\nheight: 50px;\r\nborder-radius: 50%;\r\nfont-size: 24px;\r\ncursor: pointer;\r\ndisplay: flex;\r\nalign-items: center;\r\njustify-content: center;\r\ntransition: 0.2s;\r\n}\r\n\r\n.ad-close-btn:hover {\r\nbackground: #ffd700;\r\ncolor: #000;\r\ntransform: scale(1.1);\r\n}\r\n\r\n\/* Volume Status *\/\r\n.volume-status {\r\nposition: fixed;\r\ntop: 90px;\r\nright: 15px;\r\nbackground: rgba(0, 0, 0, 0.9);\r\nborder: 2px solid #ffd700;\r\nborder-radius: 40px;\r\npadding: 8px 15px;\r\nz-index: 2000;\r\ndisplay: none;\r\nalign-items: center;\r\ngap: 12px;\r\nfont-size: 11px;\r\n}\r\n\r\n.volume-status.active { display: flex; }\r\n.music-level { color: #ff6b6b; font-weight: 700; }\r\n.ad-level { color: #ffd700; font-weight: 700; animation: pulse 1s infinite; }\r\n\r\n\/* Master Controls *\/\r\n.master-panel {\r\nbackground: linear-gradient(135deg, #111, #1a1a2a);\r\nborder-radius: 50px;\r\npadding: 12px 20px;\r\nmargin: 15px 0;\r\ndisplay: flex;\r\nalign-items: center;\r\njustify-content: space-between;\r\nflex-wrap: wrap;\r\ngap: 10px;\r\nborder: 2px solid #ffd700;\r\n}\r\n\r\n.master-btn {\r\npadding: 8px 16px;\r\nborder-radius: 30px;\r\nbackground: #222;\r\nborder: 2px solid #ffd700;\r\ncolor: white;\r\nfont-weight: 600;\r\ncursor: pointer;\r\nfont-size: 12px;\r\ntransition: 0.2s;\r\n}\r\n\r\n.master-btn:hover {\r\nbackground: #ffd700;\r\ncolor: #000;\r\n}\r\n\r\n.play-ad-btn {\r\nbackground: linear-gradient(135deg, #ffd700, #ffaa00);\r\ncolor: #000;\r\npadding: 10px 24px;\r\nfont-size: 14px;\r\nfont-weight: 800;\r\nborder: none;\r\nanimation: btnPulse 1s infinite;\r\n}\r\n\r\n@keyframes btnPulse {\r\n0% { box-shadow: 0 0 0 0 rgba(255, 215, 0, 0.5); }\r\n70% { box-shadow: 0 0 0 12px rgba(255, 215, 0, 0); }\r\n}\r\n\r\n.master-slider {\r\nwidth: 100px;\r\nheight: 4px;\r\nbackground: #333;\r\nborder-radius: 4px;\r\n}\r\n\r\n.master-slider::-webkit-slider-thumb {\r\nwidth: 14px;\r\nheight: 14px;\r\nbackground: #ffd700;\r\nborder-radius: 50%;\r\n}\r\n\r\n\/* Channel Grid - 23 channels with ULTRA MODERN FRAMES *\/\r\n.channel-grid {\r\ndisplay: grid;\r\ngrid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\r\ngap: 15px;\r\nmargin: 15px 0;\r\n}\r\n\r\n\/* 23 UNIQUE ULTRA MODERN FRAMES *\/\r\n.frame-1 { background: linear-gradient(135deg, #1a1a3a, #0a0a2a); border: 2px solid #ffb347; border-radius: 28px; }\r\n.frame-2 { background: #0d0f1f; border-left: 5px solid #00ffcc; border-right: 2px solid #00ffcc; border-radius: 20px; }\r\n.frame-3 { background: linear-gradient(145deg, #1a1a3a, #0a0a1a); border-radius: 30px 8px 30px 8px; border: 1px solid #9b59b6; }\r\n.frame-4 { background: #121212; border-radius: 16px; border-bottom: 4px solid #ffaa33; }\r\n.frame-5 { background: linear-gradient(125deg, #1e1e3a, #0b0b20); border-radius: 24px; border: 2px solid gold; }\r\n.frame-6 { background: #0f0f2a; border-radius: 40px 8px 40px 8px; border-left: 5px solid #f39c12; border-right: 5px solid #e74c3c; }\r\n.frame-7 { background: repeating-linear-gradient(45deg, #1a1a2a 0px, #1a1a2a 2px, #22223a 2px, #22223a 8px); border-radius: 20px; border-top: 3px solid #2ecc71; }\r\n.frame-8 { background: radial-gradient(ellipse at 30% 40%, #1a1a3a, #030318); border-radius: 35px; border: 1px solid #8e44ad; }\r\n.frame-9 { background: linear-gradient(145deg, #2a2a3a, #101018); border-radius: 20px; border-bottom: 5px solid #3498db; }\r\n.frame-10 { background: #0f0f1f; border-radius: 18px; box-shadow: 5px 5px 0 #ffaa33, -2px -2px 0 #ff6b6b; }\r\n.frame-11 { background: rgba(30,35,55,0.8); backdrop-filter: blur(12px); border-radius: 32px; border: 1px solid rgba(255,215,0,0.5); }\r\n.frame-12 { background: #0b0b1a; border-radius: 20px; border: 2px solid #ff00cc; animation: borderPulse2 2s infinite; }\r\n@keyframes borderPulse2 { 0% { border-color: #ff00cc; } 50% { border-color: #00ffcc; } 100% { border-color: #ff00cc; } }\r\n.frame-13 { background: #14141f; border-radius: 0px 30px 0px 30px; border-top: 4px solid #f1c40f; border-bottom: 4px solid #e67e22; }\r\n.frame-14 { background: #0f0f17; border-radius: 24px; box-shadow: 0 15px 25px -12px #000000aa; border: 1px solid #555; }\r\n.frame-15 { background: linear-gradient(135deg, #1b1b2a, #111120); border-radius: 40px; border-left: 8px solid #ffd700; }\r\n.frame-16 { background: #0a0a1a; border-radius: 30px; background-image: radial-gradient(circle at 10% 20%, rgba(255,215,0,0.1) 2%, transparent 2.5%); border: 1px solid #ffaa33; }\r\n.frame-17 { background: linear-gradient(135deg, #2a2a3e, #151525); border-radius: 28px; border: 2px solid rgba(255,255,255,0.1); }\r\n.frame-18 { background: linear-gradient(145deg, #2d1b69, #0a0a2a); border-radius: 25px; border-bottom: 3px solid #ff71ce; border-right: 3px solid #01cdfe; }\r\n.frame-19 { background: #111122; border-radius: 30px; background-image: repeating-linear-gradient(90deg, transparent, transparent 10px, rgba(0,255,255,0.03) 10px, rgba(0,255,255,0.03) 20px); border: 1px solid #00ffff33; }\r\n.frame-20 { background: linear-gradient(135deg, #1a0a2a, #0a0a1a); border-radius: 35px; border: 2px solid #e74c3c; }\r\n.frame-21 { background: #0a0f1a; border-radius: 22px; border-left: 6px solid #00ff9d; border-right: 2px solid #00ff9d; }\r\n.frame-22 { background: radial-gradient(circle at 70% 20%, #2a1a4a, #0a0a1a); border-radius: 32px; border: 1px solid #c0c0ff; }\r\n.frame-23 { background: linear-gradient(135deg, #ff6b6b20, #f39c1220, #2c3e5020); border-radius: 28px; border: 2px solid rgba(255,107,107,0.5); }\r\n\r\n.channel-card {\r\nbackground: rgba(25, 25, 45, 0.9);\r\nborder-radius: 15px;\r\npadding: 12px;\r\nborder: 2px solid transparent;\r\ntransition: all 0.3s ease;\r\n}\r\n\r\n.channel-card.playing {\r\nborder-color: #ffd700;\r\nbox-shadow: 0 0 20px rgba(255,215,0,0.3);\r\n}\r\n\r\n.channel-header {\r\ndisplay: flex;\r\ngap: 10px;\r\nmargin-bottom: 10px;\r\n}\r\n\r\n.channel-icon {\r\nwidth: 40px;\r\nheight: 40px;\r\nborder-radius: 10px;\r\ndisplay: flex;\r\nalign-items: center;\r\njustify-content: center;\r\nfont-size: 18px;\r\n}\r\n\r\n.channel-name {\r\nfont-weight: 700;\r\nfont-size: 14px;\r\n}\r\n\r\n.channel-listeners {\r\nfont-size: 10px;\r\ncolor: #a0a0b0;\r\n}\r\n\r\n.youtube-player {\r\nwidth: 100%;\r\naspect-ratio: 16\/9;\r\nbackground: #000;\r\nborder-radius: 10px;\r\noverflow: hidden;\r\nmargin: 8px 0;\r\n}\r\n\r\n.youtube-player iframe {\r\nwidth: 100%;\r\nheight: 100%;\r\npointer-events: none;\r\n}\r\n\r\n.channel-controls {\r\ndisplay: flex;\r\nalign-items: center;\r\ngap: 8px;\r\nmargin-top: 8px;\r\n}\r\n\r\n.play-stop-btn {\r\nwidth: 34px;\r\nheight: 34px;\r\nborder-radius: 50%;\r\nbackground: #333;\r\nborder: none;\r\ncolor: white;\r\ncursor: pointer;\r\nfont-size: 12px;\r\n}\r\n\r\n.play-stop-btn.playing {\r\nbackground: #ffd700;\r\ncolor: #000;\r\n}\r\n\r\n.volume-slider {\r\nwidth: 60px;\r\nheight: 4px;\r\nbackground: #444;\r\n}\r\n\r\n.volume-slider::-webkit-slider-thumb {\r\nwidth: 10px;\r\nheight: 10px;\r\nbackground: #ffd700;\r\nborder-radius: 50%;\r\n}\r\n\r\n.volume-percent {\r\nfont-size: 10px;\r\ncolor: #ffd700;\r\nmin-width: 30px;\r\n}\r\n\r\n.mute-btn {\r\nwidth: 30px;\r\nheight: 30px;\r\nborder-radius: 50%;\r\nbackground: #333;\r\nborder: none;\r\ncolor: white;\r\ncursor: pointer;\r\n}\r\n\r\n.mute-btn.muted {\r\nbackground: #ffd700;\r\ncolor: #000;\r\n}\r\n\r\n\/* Company Cards - 16 English Ads *\/\r\n.company-grid {\r\ndisplay: grid;\r\ngrid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\r\ngap: 12px;\r\nmargin: 15px 0;\r\n}\r\n\r\n.company-card {\r\nbackground: #1a1a2a;\r\nborder-radius: 12px;\r\npadding: 12px;\r\nborder-left: 4px solid;\r\nborder: 1px solid #333;\r\ncursor: pointer;\r\ntransition: 0.2s;\r\n}\r\n\r\n.company-card:hover { transform: translateX(5px); }\r\n\r\n.company-name {\r\nfont-size: 14px;\r\nfont-weight: 700;\r\n}\r\n\r\n.company-interval {\r\nfont-size: 10px;\r\ncolor: #aaa;\r\n}\r\n\r\n.voice-badge {\r\ndisplay: inline-block;\r\npadding: 2px 8px;\r\nborder-radius: 20px;\r\nfont-size: 9px;\r\nmargin-left: 5px;\r\n}\r\n\r\n.voice-en { background: #3498db; color: white; }\r\n\r\n\/* Schedule *\/\r\n.schedule-grid {\r\ndisplay: grid;\r\ngrid-template-columns: repeat(auto-fill, minmax(160px, 1fr));\r\ngap: 8px;\r\nmax-height: 320px;\r\noverflow-y: auto;\r\npadding: 5px;\r\n}\r\n\r\n.schedule-card {\r\nbackground: #1a1a2a;\r\nborder-radius: 8px;\r\npadding: 8px;\r\nborder-left: 3px solid;\r\nfont-size: 10px;\r\n}\r\n\r\n.schedule-card.ad-active {\r\nanimation: borderFlash 0.5s infinite;\r\n}\r\n\r\n@keyframes borderFlash {\r\n0% { border-color: #ffd700; }\r\n50% { border-color: #ffaa00; }\r\n}\r\n\r\n\/* Presenters *\/\r\n.presenter-grid {\r\ndisplay: grid;\r\ngrid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\r\ngap: 12px;\r\nmargin: 20px 0;\r\n}\r\n\r\n.presenter-card {\r\nbackground: #1e1e2e;\r\nborder-radius: 15px;\r\npadding: 15px;\r\ntext-align: center;\r\nborder: 2px solid #ffd700;\r\ntransition: 0.3s;\r\n}\r\n\r\n.presenter-card:hover {\r\ntransform: translateY(-3px);\r\nbox-shadow: 0 0 20px rgba(255, 215, 0, 0.3);\r\n}\r\n\r\n.presenter-avatar {\r\nwidth: 60px;\r\nheight: 60px;\r\nborder-radius: 50%;\r\nmargin: 0 auto 10px;\r\ndisplay: flex;\r\nalign-items: center;\r\njustify-content: center;\r\nfont-size: 32px;\r\nborder: 2px solid #ffd700;\r\nbackground: #000;\r\n}\r\n\r\n.presenter-name {\r\nfont-weight: 700;\r\nfont-size: 16px;\r\nmargin-bottom: 5px;\r\ncolor: #ffd700;\r\n}\r\n\r\n.presenter-voice-type {\r\nfont-size: 10px;\r\ncolor: #ffaa00;\r\nmargin-bottom: 8px;\r\n}\r\n\r\n.lang-badge-presenter {\r\ndisplay: inline-block;\r\nbackground: #ffd700;\r\ncolor: #000;\r\npadding: 2px 10px;\r\nborder-radius: 20px;\r\nfont-size: 10px;\r\nfont-weight: bold;\r\nmargin-top: 5px;\r\n}\r\n\r\n.stats-panel {\r\nbackground: #1a1a2a;\r\nborder-radius: 15px;\r\npadding: 12px;\r\nmargin: 15px 0;\r\ndisplay: grid;\r\ngrid-template-columns: repeat(auto-fit, minmax(100px, 1fr));\r\ngap: 8px;\r\nborder: 2px solid #ffd700;\r\n}\r\n\r\n.stat-number {\r\nfont-size: 24px;\r\nfont-weight: 800;\r\ncolor: #ffd700;\r\n}\r\n\r\n.legal-disclaimer {\r\nbackground: rgba(0,0,0,0.5);\r\nborder-radius: 12px;\r\npadding: 10px;\r\nmargin: 10px 0;\r\ntext-align: center;\r\nfont-size: 10px;\r\ncolor: #888;\r\nborder: 1px solid rgba(255,215,0,0.3);\r\n}\r\n\r\n.footer {\r\nbackground: #0a0a12;\r\nborder-top: 2px solid #ffd700;\r\npadding: 15px;\r\ntext-align: center;\r\ncolor: #aaa;\r\nfont-size: 10px;\r\nmargin-top: 20px;\r\n}\r\n\r\n.toast-container {\r\nposition: fixed;\r\nbottom: 15px;\r\nright: 15px;\r\nz-index: 3000;\r\n}\r\n\r\n.toast {\r\nbackground: #000;\r\nborder-left: 4px solid #ffd700;\r\nborder-radius: 8px;\r\npadding: 8px 12px;\r\nmargin-bottom: 5px;\r\ncolor: white;\r\nfont-size: 11px;\r\n}\r\n\r\n@media (max-width: 768px) {\r\n.master-panel { flex-direction: column; }\r\n.play-ad-btn { width: 100%; }\r\n.ad-title { font-size: 20px; }\r\n.ad-message { font-size: 14px; }\r\n.ad-timer { font-size: 36px; }\r\n.ad-content { padding: 25px; }\r\n.channel-grid { grid-template-columns: 1fr; }\r\n.live-title { font-size: 14px; }\r\n.amb-text-main { font-size: 14px; }\r\n.amb-text-sub { font-size: 7px; }\r\n}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n<!-- FULL SCREEN AD TEXT OVERLAY -->\r\n<div class=\"ad-overlay-full\" id=\"adOverlayFull\">\r\n<button class=\"ad-close-btn\" id=\"closeAdBtn\">&times;<\/button>\r\n<div class=\"ad-content\">\r\n<div class=\"ad-logo\"><i class=\"fas fa-microphone-alt\"><\/i><\/div>\r\n<div class=\"ad-title\" id=\"adOverlayTitle\">\ud83c\udf99\ufe0f MARKETPLACE RADIO<\/div>\r\n<div class=\"ad-message\" id=\"adOverlayMessage\">Welcome to Marketplace Radio...<\/div>\r\n<div class=\"ad-timer\" id=\"adOverlayTimer\">20<\/div>\r\n<div class=\"ad-footer\" id=\"adFooter\">\r\n<i class=\"fas fa-language\"><\/i> \ud83c\udf10 ENGLISH VOICE \u00b7 ENGLISH TEXT \u00b7 20 SECONDS\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n<!-- Volume Status -->\r\n<div class=\"volume-status\" id=\"volumeStatus\">\r\n<span>\ud83c\udfb5 MUSIC: <span class=\"music-level\" id=\"musicLevel\">100%<\/span><\/span>\r\n<span>\ud83c\udf99\ufe0f VOICE: <span class=\"ad-level\" id=\"adLevel\">---<\/span><\/span>\r\n<span>\ud83d\udcdd TEXT: <span class=\"ad-level\" id=\"textLevel\">ENGLISH<\/span><\/span>\r\n<\/div>\r\n\r\n<header class=\"header\">\r\n<div class=\"amb-logo\">\r\n<div class=\"amb-icon\">MP<\/div>\r\n<div>\r\n<div class=\"amb-text-main\">MARKETPLACE INTERNET RADIO<\/div>\r\n<div class=\"amb-text-sub\">23 MUSIC CHANNELS \u00b7 16 ENGLISH ADS \u00b7 28 MIN ROTATION \u00b7 LIVE STREAM<\/div>\r\n<\/div>\r\n<\/div>\r\n<div class=\"stats\">\r\n<div class=\"stat-item\"><span class=\"stat-value\" id=\"nextAdTime\">28:00<\/span><div class=\"stat-label\">Next Ad<\/div><\/div>\r\n<div class=\"stat-item\"><span class=\"stat-value\" id=\"activeCompany\">-<\/span><div class=\"stat-label\">Active<\/div><\/div>\r\n<div class=\"stat-item\"><span class=\"stat-value\" id=\"totalChannels\">23<\/span><div class=\"stat-label\">Channels<\/div><\/div>\r\n<\/div>\r\n<\/header>\r\n\r\n<div class=\"container\">\r\n<!-- LIVE STREAM SECTION -->\r\n<div class=\"live-stream-section\">\r\n<div class=\"live-badge\"><i class=\"fas fa-circle\" style=\"color:#e74c3c;font-size:8px;\"><\/i> MARKETPLACE LIVE \u00b7 24\/7<\/div>\r\n<div class=\"live-stream-player\" id=\"liveStreamPlayer\">\r\n<iframe id=\"liveStreamIframe\" src=\"https:\/\/www.youtube.com\/embed\/videoseries?list=PLslOoH5273v-fbcVve2qDCBq4WZEADbDc&autoplay=1&mute=1&controls=1&rel=0&modestbranding=1\" allow=\"autoplay; encrypted-media\" allowfullscreen><\/iframe>\r\n<\/div>\r\n<div class=\"live-info\">\r\n<div class=\"live-title\"><i class=\"fas fa-play-circle\"><\/i> \ud83c\udfb5 MARKETPLACE PLAYLIST \u00b7 24\/7 \u00b7 LIVE STREAM<\/div>\r\n<div class=\"live-viewers\"><i class=\"fas fa-eye\"><\/i> <span id=\"liveViewers\">2,847<\/span> watching<\/div>\r\n<div><button class=\"live-btn live-btn-start\" id=\"refreshLiveBtn\"><i class=\"fas fa-sync-alt\"><\/i> Refresh Live<\/button><\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n<div class=\"stats-panel\">\r\n<div class=\"stat-block\"><div class=\"stat-number\" id=\"statListeners\">0<\/div><div>Listeners<\/div><\/div>\r\n<div class=\"stat-block\"><div class=\"stat-number\" id=\"statActive\">23<\/div><div>Active<\/div><\/div>\r\n<div class=\"stat-block\"><div class=\"stat-number\" id=\"statAds\">0<\/div><div>Ads Today<\/div><\/div>\r\n<div class=\"stat-block\"><div class=\"stat-number\">16<\/div><div>Total Ads<\/div><\/div>\r\n<div class=\"stat-block\"><div class=\"stat-number\">EN<\/div><div>VOICE<\/div><\/div>\r\n<\/div>\r\n\r\n<!-- 16 English Company Ads Cards -->\r\n<div class=\"company-grid\" id=\"companyGrid\"><\/div>\r\n\r\n<!-- Master Controls -->\r\n<div class=\"master-panel\">\r\n<div style=\"display: flex; gap: 6px; flex-wrap: wrap;\">\r\n<button class=\"master-btn\" id=\"playAllBtn\"><i class=\"fas fa-play\"><\/i> Play All<\/button>\r\n<button class=\"master-btn\" id=\"stopAllBtn\"><i class=\"fas fa-stop\"><\/i> Stop All<\/button>\r\n<button class=\"master-btn\" id=\"muteAllBtn\"><i class=\"fas fa-volume-mute\"><\/i> Mute<\/button>\r\n<button class=\"master-btn\" id=\"unmuteAllBtn\"><i class=\"fas fa-volume-up\"><\/i> Unmute<\/button>\r\n<\/div>\r\n<div style=\"display: flex; align-items: center; gap: 8px;\">\r\n<span style=\"color: gold;\">VOL<\/span>\r\n<input type=\"range\" min=\"0\" max=\"100\" value=\"80\" class=\"master-slider\" id=\"masterVolume\">\r\n<span id=\"masterValue\" style=\"color: gold;\">80%<\/span>\r\n<button class=\"master-btn\" id=\"masterMute\">Mute<\/button>\r\n<\/div>\r\n<button class=\"master-btn play-ad-btn\" id=\"playAdBtn\"><i class=\"fas fa-play\"><\/i> \ud83d\udd0a TEST AD (ENGLISH VOICE)<\/button>\r\n<\/div>\r\n\r\n<!-- Countdown Bar - 28 Minutes Rotation -->\r\n<div style=\"background: #111; border-radius: 50px; padding: 10px 15px; margin: 12px 0; display: flex; align-items: center; justify-content: space-between; border: 2px solid gold; flex-wrap: wrap;\">\r\n<span style=\"font-size: 11px;\">\u23f0 NEXT AD (28 min rotation): <span id=\"nextAdName\" style=\"background: gold; color: #000; padding: 3px 10px; border-radius: 30px;\">28 min<\/span><\/span>\r\n<span style=\"font-size: 28px; font-weight: 800; color: gold;\" id=\"countdownTimer\">28:00<\/span>\r\n<span style=\"font-size: 10px;\">\ud83c\udfb5 MUSIC \u00b7 \ud83c\udf99\ufe0f 16 ENGLISH ADS \u00b7 \ud83d\udcdd ENGLISH TEXT \u00b7 20s<\/span>\r\n<\/div>\r\n\r\n<h2 style=\"margin: 8px 0; font-size: 16px;\">\ud83c\udfb5 23 LIVE MUSIC CHANNELS \u00b7 ULTRA MODERN FRAMES \u00b7 24\/7<\/h2>\r\n<div class=\"channel-grid\" id=\"channelGrid\"><\/div>\r\n\r\n<div style=\"background: #111; border-radius: 15px; padding: 15px; margin: 15px 0; border: 2px solid gold;\">\r\n<h2 style=\"margin-bottom: 8px; font-size: 14px;\">\ud83d\udcc5 24\/7 AD SCHEDULE (16 ADS) \u00b7 28 MIN ROTATION<\/h2>\r\n<div class=\"schedule-grid\" id=\"scheduleGrid\"><\/div>\r\n<\/div>\r\n\r\n<!-- 5 FEMALE PRESENTERS -->\r\n<h2 style=\"margin: 12px 0 8px; font-size: 16px;\">\ud83c\udfa4 5 FEMALE PRESENTERS \u00b7 <span style=\"color: #ffd700;\">ENGLISH VOICE<\/span><\/h2>\r\n<div class=\"presenter-grid\" id=\"presenterGrid\"><\/div>\r\n\r\n<!-- Legal Disclaimer -->\r\n<div class=\"legal-disclaimer\">\r\n<i class=\"fas fa-balance-scale\"><\/i> MARKETPLACE INTERNET RADIO \u00b7 23 LIVE MUSIC CHANNELS \u00b7 16 ENGLISH ADS \u00b7 28 MIN ROTATION \u00b7 INTERNET RADIO STATION \u00b7 LIVE STREAM 24\/7\r\n<\/div>\r\n<\/div>\r\n\r\n<footer class=\"footer\">\r\n<p>MARKETPLACE INTERNET RADIO \u00b7 23 LIVE MUSIC CHANNELS \u00b7 16 ENGLISH ADS \u00b7 ENGLISH VOICE \u00b7 ENGLISH TEXT \u00b7 28 min ROTATION \u00b7 LIVE STREAM 24\/7<\/p>\r\n<p style=\"margin-top: 5px;\">\ud83c\udf10 INTERNET RADIO STATION \u00b7 24\/7 LIVE MUSIC \u00b7 16 English Commercials \u00b7 YouTube Playlist<\/p>\r\n<\/footer>\r\n\r\n<div class=\"toast-container\" id=\"toastContainer\"><\/div>\r\n\r\n<script>\r\n\/\/ ==================== 23 MUSIC CHANNELS with ULTRA MODERN FRAMES ====================\r\nconst CHANNELS = [\r\n{ id: 'ch1', name: 'Rock Classics', videoId: 'VbTYnJshTas', icon: 'fa-guitar', color: '#e63946', listeners: 2156, volume: 80, muted: false, playing: true, player: null, frame: 1 },\r\n{ id: 'ch2', name: 'Smooth Jazz', videoId: 'hsHO39PnC1s', icon: 'fa-saxophone', color: '#3498db', listeners: 1842, volume: 80, muted: false, playing: true, player: null, frame: 2 },\r\n{ id: 'ch3', name: 'Pop Hits', videoId: 'b-bK2Vn3D38', icon: 'fa-music', color: '#ff6b6b', listeners: 3241, volume: 80, muted: false, playing: true, player: null, frame: 3 },\r\n{ id: 'ch4', name: 'Electronic Beats', videoId: '5QYB8NJzNRg', icon: 'fa-bolt', color: '#9b59b6', listeners: 2789, volume: 80, muted: false, playing: true, player: null, frame: 4 },\r\n{ id: 'ch5', name: 'Tropical House', videoId: '36YnV9STBqc', icon: 'fa-umbrella-beach', color: '#1abc9c', listeners: 1432, volume: 80, muted: false, playing: true, player: null, frame: 5 },\r\n{ id: 'ch6', name: 'Deep House Mix', videoId: 'SseT6vKqeKk', icon: 'fa-headphones', color: '#9b59b6', listeners: 2987, volume: 80, muted: false, playing: true, player: null, frame: 6 },\r\n{ id: 'ch7', name: 'R&B Soul', videoId: 'Gvyjii-8ILU', icon: 'fa-heart', color: '#e91e63', listeners: 2123, volume: 80, muted: false, playing: true, player: null, frame: 7 },\r\n{ id: 'ch8', name: 'Jazz Lounge', videoId: 'Qdh8zWwX3bg', icon: 'fa-music', color: '#3498db', listeners: 1654, volume: 80, muted: false, playing: true, player: null, frame: 8 },\r\n{ id: 'ch9', name: 'Music Mix', videoId: 'UiugRX6UXu8', icon: 'fa-headphones', color: '#f39c12', listeners: 1893, volume: 80, muted: false, playing: true, player: null, frame: 9 },\r\n{ id: 'ch10', name: 'Top Songs', videoId: 'OVMsbS-sHfQ', icon: 'fa-star', color: '#ff6b6b', listeners: 2345, volume: 80, muted: false, playing: true, player: null, frame: 10 },\r\n{ id: 'ch11', name: 'Dance Hits', videoId: 'I4FclAh5dsg', icon: 'fa-star', color: '#e63946', listeners: 12500, volume: 80, muted: false, playing: true, player: null, frame: 11 },\r\n{ id: 'ch12', name: 'Live Rock', videoId: 'njqkg8o4C84', icon: 'fa-guitar', color: '#e63946', listeners: 10800, volume: 80, muted: false, playing: true, player: null, frame: 12 },\r\n{ id: 'ch13', name: 'Heavy Metal', videoId: 'KrExkKoN9y4', icon: 'fa-guitar', color: '#e63946', listeners: 9500, volume: 80, muted: false, playing: true, player: null, frame: 13 },\r\n{ id: 'ch14', name: 'Top Hits', videoId: 'Zh1_tKjvOOI', icon: 'fa-heart', color: '#e63946', listeners: 8700, volume: 80, muted: false, playing: true, player: null, frame: 14 },\r\n{ id: 'ch15', name: 'Live Rock Music', videoId: '2Sn6nqruOB8', icon: 'fa-guitar', color: '#e63946', listeners: 7800, volume: 80, muted: false, playing: true, player: null, frame: 15 },\r\n{ id: 'ch16', name: 'Dance Mix', videoId: '3MOrgUjiigE', icon: 'fa-music', color: '#e63946', listeners: 9200, volume: 80, muted: false, playing: true, player: null, frame: 16 },\r\n{ id: 'ch17', name: 'Live Music', videoId: 'NgyhZdxBAdU', icon: 'fa-saxophone', color: '#e63946', listeners: 10500, volume: 80, muted: false, playing: true, player: null, frame: 17 },\r\n{ id: 'ch18', name: 'Pop Mix', videoId: 'oEWyLwbtODo', icon: 'fa-heart', color: '#e63946', listeners: 8300, volume: 80, muted: false, playing: true, player: null, frame: 18 },\r\n{ id: 'ch19', name: 'Today\\'s Hits', videoId: 'X2ZJ3Z0SXjo', icon: 'fa-star', color: '#e63946', listeners: 9800, volume: 80, muted: false, playing: true, player: null, frame: 19 },\r\n{ id: 'ch20', name: 'Live Latino', videoId: 'NXfWR33EJQE', icon: 'fa-music', color: '#f1c40f', listeners: 14500, volume: 80, muted: false, playing: true, player: null, frame: 20 },\r\n{ id: 'ch21', name: 'Live Mix', videoId: 'm2BnK_hf2qg', icon: 'fa-headphones', color: '#2ecc71', listeners: 15600, volume: 80, muted: false, playing: true, player: null, frame: 21 },\r\n{ id: 'ch22', name: 'Deep Techno', videoId: 'G-u5OhIeln4', icon: 'fa-headphones', color: '#2ecc71', listeners: 14200, volume: 80, muted: false, playing: true, player: null, frame: 22 },\r\n{ id: 'ch23', name: 'Deep House', videoId: 'Il-ZpBuC8tA', icon: 'fa-headphones', color: '#2ecc71', listeners: 10900, volume: 80, muted: false, playing: true, player: null, frame: 23 }\r\n];\r\n\r\n\/\/ ==================== 16 ENGLISH ADS ====================\r\nconst ADS_EN = [\r\n{ id: 1, name: '\ud83c\udfea Marketplace Platform', voice: 'Welcome to Marketplace Platform. The ultimate destination for buyers and sellers. Discover unparalleled variety, secure transactions, and a community built on trust. Visit www.marketplace-marketplace.com today!', textEn: 'Welcome to Marketplace Platform. The ultimate destination for buyers and sellers. Discover unparalleled variety, secure transactions, and a community built on trust. Visit www.marketplace-marketplace.com today!', interval: 28, color: '#9b59b6', voiceId: 0, lang: 'EN', voiceText: 'ENGLISH' },\r\n{ id: 2, name: '\ud83c\udf10 Metaverse Social Network', voice: 'Welcome to Metaverse Social Network. The next evolution of connection. Join a community where your digital presence is truly immersive. Visit www.metaverse-socialnetwork.com today!', textEn: 'Welcome to Metaverse Social Network. The next evolution of connection. Join a community where your digital presence is truly immersive. Visit www.metaverse-socialnetwork.com today!', interval: 28, color: '#3498db', voiceId: 1, lang: 'EN', voiceText: 'ENGLISH' },\r\n{ id: 3, name: '\ud83d\udcfa Marketplace YouTube', voice: 'Welcome to Marketplace YouTube channel. Watch over 900 videos with expert insights, tutorials, and deep dives. Subscribe today and join our growing community!', textEn: 'Welcome to Marketplace YouTube channel. Watch over 900 videos with expert insights, tutorials, and deep dives. Subscribe today and join our growing community!', interval: 28, color: '#f1c40f', voiceId: 2, lang: 'EN', voiceText: 'ENGLISH' },\r\n{ id: 4, name: '\ud83d\uded2 Buy & Sell Hub', voice: 'Marketplace - Your Ultimate Trading Hub. Buy and sell digital and physical products. Connect with a global community. Visit www.marketplace-marketplace.com today!', textEn: 'Marketplace - Your Ultimate Trading Hub. Buy and sell digital and physical products. Connect with a global community. Visit www.marketplace-marketplace.com today!', interval: 28, color: '#e67e22', voiceId: 3, lang: 'EN', voiceText: 'ENGLISH' },\r\n{ id: 5, name: '\ud83d\udcbb 13M Digital Products', voice: 'Access over 13 million digital products including premium software, professional code, and ready-to-use scripts. Unlock your potential at www.marketplace-marketplace.com!', textEn: 'Access over 13 million digital products including premium software, professional code, and ready-to-use scripts. Unlock your potential at www.marketplace-marketplace.com!', interval: 28, color: '#2ecc71', voiceId: 4, lang: 'EN', voiceText: 'ENGLISH' },\r\n{ id: 6, name: '\ud83d\udce6 Amazon Gateway', voice: 'Buy from Amazon via Marketplace. Direct access to an unparalleled selection of products. Shop smart, shop fast. Visit www.marketplace-marketplace.com today!', textEn: 'Buy from Amazon via Marketplace. Direct access to an unparalleled selection of products. Shop smart, shop fast. Visit www.marketplace-marketplace.com today!', interval: 28, color: '#e74c3c', voiceId: 0, lang: 'EN', voiceText: 'ENGLISH' },\r\n{ id: 7, name: '\ud83d\udcc8 Marketing Plans', voice: 'Scale Your Success. Choose from individual plans 1,2,3 or business plans 1,2,3. Strategic planning for sustainable growth. Visit www.marketplace-marketplace.com today!', textEn: 'Scale Your Success. Choose from individual plans 1,2,3 or business plans 1,2,3. Strategic planning for sustainable growth. Visit www.marketplace-marketplace.com today!', interval: 28, color: '#1abc9c', voiceId: 1, lang: 'EN', voiceText: 'ENGLISH' },\r\n{ id: 8, name: '\u2b50 Sponsored Posts', voice: 'Create sponsored posts on Marketplace. Reach thousands of buyers instantly. Start your campaign in minutes at www.marketplace-marketplace.com!', textEn: 'Create sponsored posts on Marketplace. Reach thousands of buyers instantly. Start your campaign in minutes at www.marketplace-marketplace.com!', interval: 28, color: '#f39c12', voiceId: 2, lang: 'EN', voiceText: 'ENGLISH' },\r\n{ id: 9, name: '\ud83c\udfaf 150 Niches', voice: 'Discover over 150 unique niches and more than 1,500 trusted companies. From specialized tools to rare finds. Visit www.marketplace-marketplace.com!', textEn: 'Discover over 150 unique niches and more than 1,500 trusted companies. From specialized tools to rare finds. Visit www.marketplace-marketplace.com!', interval: 28, color: '#16a085', voiceId: 3, lang: 'EN', voiceText: 'ENGLISH' },\r\n{ id: 10, name: '\u20bf Crypto on Binance', voice: 'Buy and sell Crypto on Binance via Marketplace. Lightning-fast transactions with industry-leading security. Start trading at www.marketplace-marketplace.com!', textEn: 'Buy and sell Crypto on Binance via Marketplace. Lightning-fast transactions with industry-leading security. Start trading at www.marketplace-marketplace.com!', interval: 28, color: '#f4d03f', voiceId: 4, lang: 'EN', voiceText: 'ENGLISH' },\r\n{ id: 11, name: '\u2708\ufe0f Vacation & Cruise', voice: 'Book vacations and cruises with Booking and Priceline. Compare top deals and save big. Start planning at www.marketplace-marketplace.com!', textEn: 'Book vacations and cruises with Booking and Priceline. Compare top deals and save big. Start planning at www.marketplace-marketplace.com!', interval: 28, color: '#48c9b0', voiceId: 0, lang: 'EN', voiceText: 'ENGLISH' },\r\n{ id: 12, name: '\ud83c\udfb2 Betting & Casino', voice: 'Play and win! Premium sports betting and world-class casino. Join the action today at www.marketplace-marketplace.com!', textEn: 'Play and win! Premium sports betting and world-class casino. Join the action today at www.marketplace-marketplace.com!', interval: 28, color: '#e67e22', voiceId: 1, lang: 'EN', voiceText: 'ENGLISH' },\r\n{ id: 13, name: '\ud83c\udfc6 World Brand', voice: 'Buy World Brand products. Premium quality, international standards. Elevate your lifestyle. Visit www.marketplace-marketplace.com today!', textEn: 'Buy World Brand products. Premium quality, international standards. Elevate your lifestyle. Visit www.marketplace-marketplace.com today!', interval: 28, color: '#3498db', voiceId: 2, lang: 'EN', voiceText: 'ENGLISH' },\r\n{ id: 14, name: '\ud83d\udcf1 Decode Mobile', voice: 'Unlock your mobile phone with a secure Decode code. Fast, reliable, and simple. Visit www.marketplace-marketplace.com today!', textEn: 'Unlock your mobile phone with a secure Decode code. Fast, reliable, and simple. Visit www.marketplace-marketplace.com today!', interval: 28, color: '#2ecc71', voiceId: 3, lang: 'EN', voiceText: 'ENGLISH' },\r\n{ id: 15, name: '\ud83d\udecd\ufe0f 9 Web Shops', voice: 'Access 13 million digital products from 9 specialized web shops. Software, codes, and scripts. All in one place at www.marketplace-marketplace.com!', textEn: 'Access 13 million digital products from 9 specialized web shops. Software, codes, and scripts. All in one place at www.marketplace-marketplace.com!', interval: 28, color: '#e84393', voiceId: 4, lang: 'EN', voiceText: 'ENGLISH' },\r\n{ id: 16, name: '\ud83c\udf0d Marketplace .com', voice: 'Welcome to www.marketplace-marketplace.com. Your ultimate destination. Buy, sell, discover. Your world, connected. Join our community today!', textEn: 'Welcome to www.marketplace-marketplace.com. Your ultimate destination. Buy, sell, discover. Your world, connected. Join our community today!', interval: 28, color: '#6c5ce7', voiceId: 0, lang: 'EN', voiceText: 'ENGLISH' }\r\n];\r\n\r\nconst ALL_ADS = ADS_EN;\r\nconst FEMALE_PRESENTERS = [\r\n{ id: 0, name: 'Sophia', avatar: '\ud83d\udc69\u200d\ud83c\udfa4', voiceType: 'Warm & Friendly', pitch: 1.1, rate: 0.95 },\r\n{ id: 1, name: 'Emma', avatar: '\ud83d\udc69\u200d\ud83c\udfeb', voiceType: 'Elegant British', pitch: 1.05, rate: 0.98 },\r\n{ id: 2, name: 'Olivia', avatar: '\ud83d\udc69\u200d\ud83c\udfa8', voiceType: 'Energetic', pitch: 1.15, rate: 1.0 },\r\n{ id: 3, name: 'Ava', avatar: '\ud83d\udc69\u200d\ud83d\ude80', voiceType: 'Calm & Soothing', pitch: 1.0, rate: 0.92 },\r\n{ id: 4, name: 'Mia', avatar: '\ud83d\udc69\u200d\ud83d\udcbc', voiceType: 'Professional', pitch: 1.12, rate: 0.96 }\r\n];\r\n\r\n\/\/ MAIN APPLICATION CLASS (Same architecture as AMB Holding Radio)\r\nclass MarketplaceInternetRadio {\r\nconstructor() {\r\nthis.ads = ALL_ADS;\r\nthis.femalePresenters = FEMALE_PRESENTERS;\r\nthis.channels = CHANNELS.map(ch => ({ ...ch, player: null }));\r\n\r\nthis.adActive = false;\r\nthis.adEndTimer = null;\r\nthis.countdownInterval = null;\r\nthis.synth = window.speechSynthesis;\r\nthis.masterVolume = 80;\r\nthis.masterMuted = false;\r\nthis.adsToday = 0;\r\n\r\nthis.ytPlayers = {};\r\nthis.nextAdSeconds = 28 * 60;\r\nthis.savedVolumes = {};\r\nthis.lastAdTime = null;\r\nthis.currentAd = null;\r\nthis.currentUtterance = null;\r\n\r\nthis.liveViewers = 2847;\r\nthis.liveInterval = null;\r\n\r\nthis.startAd = this.startAd.bind(this);\r\nthis.endAd = this.endAd.bind(this);\r\n\r\nthis.init();\r\n}\r\n\r\ninit() {\r\nthis.renderAds();\r\nthis.renderChannels();\r\nthis.renderPresenters();\r\nthis.generateSchedule();\r\n\r\nwindow.onYouTubeIframeAPIReady = () => this.createPlayers();\r\nif (window.YT && window.YT.Player) this.createPlayers();\r\n\r\nthis.startCountdown();\r\nthis.attachMasterEvents();\r\nthis.initLiveStream();\r\n\r\nsetInterval(() => this.updateStats(), 5000);\r\nsetInterval(() => this.checkAdSchedule(), 1000);\r\n\r\nsetTimeout(() => {\r\nObject.values(this.ytPlayers).forEach(player => {\r\ntry { player.playVideo(); } catch(e) {}\r\n});\r\n}, 2000);\r\n\r\ndocument.getElementById('closeAdBtn').addEventListener('click', () => {\r\nif (this.adActive) this.endAd();\r\n});\r\n\r\nthis.showToast('\ud83c\udf99\ufe0f 16 ENGLISH ADS \u00b7 28 min ROTATION \u00b7 LIVE STREAM 24\/7', 'success');\r\n}\r\n\r\ninitLiveStream() {\r\nthis.liveInterval = setInterval(() => {\r\nthis.liveViewers += Math.floor(Math.random() * 50) - 15;\r\nif (this.liveViewers < 1000) this.liveViewers = 1000;\r\nif (this.liveViewers > 5000) this.liveViewers = 5000;\r\ndocument.getElementById('liveViewers').innerText = this.liveViewers.toLocaleString();\r\n}, 10000);\r\n\r\ndocument.getElementById('refreshLiveBtn').addEventListener('click', () => {\r\nconst iframe = document.getElementById('liveStreamIframe');\r\nconst currentSrc = iframe.src;\r\niframe.src = 'about:blank';\r\nsetTimeout(() => {\r\niframe.src = currentSrc;\r\n}, 100);\r\nthis.showToast('Live stream refreshed', 'info');\r\n});\r\n}\r\n\r\ncreatePlayers() {\r\nthis.channels.forEach(ch => {\r\nif (!this.ytPlayers[ch.id]) {\r\ntry {\r\nconst player = new YT.Player(`player-${ch.id}`, {\r\nvideoId: ch.videoId,\r\nplayerVars: { autoplay: 1, controls: 0, disablekb: 1, modestbranding: 1, loop: 1, playlist: ch.videoId, rel: 0, showinfo: 0 },\r\nevents: {\r\nonReady: (e) => {\r\nthis.ytPlayers[ch.id] = e.target;\r\ne.target.setVolume(this.getTargetVolume(ch));\r\n},\r\nonStateChange: (e) => {\r\nif (e.data === YT.PlayerState.ENDED && ch.playing && !this.adActive) {\r\nthis.ytPlayers[ch.id].playVideo();\r\n}\r\n}\r\n}\r\n});\r\nch.player = player;\r\n} catch (e) { console.log('player error', e); }\r\n}\r\n});\r\n}\r\n\r\ngetTargetVolume(ch) {\r\nif (!ch.playing) return 0;\r\nif (this.masterMuted) return 0;\r\nif (ch.muted) return 0;\r\nif (this.adActive) return 0;\r\nreturn ch.volume;\r\n}\r\n\r\napplyVolumeToAll() {\r\nthis.channels.forEach(ch => {\r\nif (this.ytPlayers[ch.id]) this.ytPlayers[ch.id].setVolume(this.getTargetVolume(ch));\r\n});\r\n}\r\n\r\ngenerateSchedule() {\r\nthis.schedule = [];\r\nfor (let m = 0; m < 1440; m += 28) {\r\nlet adIndex = Math.floor(m \/ 28) % this.ads.length;\r\nlet active = this.ads[adIndex];\r\nif (active) {\r\nthis.schedule.push({ time: this.formatTime(m), ad: active, status: 'scheduled' });\r\n}\r\n}\r\nthis.renderSchedule();\r\n}\r\n\r\nformatTime(m) {\r\nreturn `${Math.floor(m \/ 60).toString().padStart(2, '0')}:${(m % 60).toString().padStart(2, '0')}`;\r\n}\r\n\r\ncheckAdSchedule() {\r\nif (this.adActive) return;\r\n\r\nconst now = new Date();\r\nconst totalMinutes = now.getHours() * 60 + now.getMinutes();\r\nconst currentBlock = Math.floor(totalMinutes \/ 28);\r\nconst adIndex = currentBlock % this.ads.length;\r\nconst selectedAd = this.ads[adIndex];\r\n\r\nif (selectedAd && this.lastAdTime !== currentBlock) {\r\nthis.lastAdTime = currentBlock;\r\nthis.startAd(selectedAd);\r\n}\r\n}\r\n\r\nstartAd(ad) {\r\nif (this.adActive) return;\r\n\r\nthis.adActive = true;\r\nthis.currentAd = ad;\r\nthis.adsToday++;\r\n\r\nif (this.adEndTimer) clearTimeout(this.adEndTimer);\r\nif (this.countdownInterval) clearInterval(this.countdownInterval);\r\nif (this.currentUtterance) this.synth.cancel();\r\n\r\nthis.channels.forEach(ch => {\r\nif (this.ytPlayers[ch.id]) {\r\nthis.savedVolumes[ch.id] = ch.volume;\r\nthis.ytPlayers[ch.id].setVolume(0);\r\n}\r\n});\r\n\r\ndocument.getElementById('volumeStatus').classList.add('active');\r\ndocument.getElementById('musicLevel').innerHTML = '0%';\r\ndocument.getElementById('adLevel').innerHTML = ad.voiceText;\r\ndocument.getElementById('textLevel').innerHTML = 'ENGLISH';\r\n\r\ndocument.getElementById('activeCompany').innerHTML = ad.name.substring(0, 25);\r\ndocument.getElementById('nextAdName').innerHTML = `${ad.name.substring(0, 15)} (${ad.voiceText})`;\r\n\r\nconst overlay = document.getElementById('adOverlayFull');\r\nconst overlayTitle = document.getElementById('adOverlayTitle');\r\nconst overlayMessage = document.getElementById('adOverlayMessage');\r\nconst overlayTimer = document.getElementById('adOverlayTimer');\r\nconst adFooter = document.getElementById('adFooter');\r\n\r\noverlayTitle.innerHTML = `<i class=\"fas fa-microphone-alt\"><\/i> ${ad.name} \u00b7 \ud83c\udf99\ufe0f ${ad.voiceText} VOICE \u00b7 ENGLISH TEXT`;\r\noverlayMessage.innerHTML = ad.textEn;\r\nadFooter.innerHTML = `<i class=\"fas fa-language\"><\/i> \ud83c\udf99\ufe0f ${ad.voiceText} VOICE \u00b7 ENGLISH TEXT \u00b7 20 SECONDS \u00b7 \ud83c\udf10 MARKETPLACE INTERNET RADIO \u00b7 LIVE STREAM 24\/7`;\r\noverlayTimer.innerHTML = '20';\r\noverlay.classList.add('active');\r\n\r\nlet secondsLeft = 20;\r\nthis.countdownInterval = setInterval(() => {\r\nsecondsLeft--;\r\nif (secondsLeft >= 0) {\r\noverlayTimer.innerHTML = secondsLeft;\r\n}\r\nif (secondsLeft <= 0) {\r\nclearInterval(this.countdownInterval);\r\n}\r\n}, 1000);\r\n\r\nthis.schedule.forEach(s => {\r\nif (s.ad.id === ad.id && s.time === this.formatTime(new Date().getHours() * 60 + new Date().getMinutes())) {\r\ns.status = 'playing';\r\n} else {\r\ns.status = 'scheduled';\r\n}\r\n});\r\nthis.renderSchedule();\r\n\r\nconst presenter = this.femalePresenters[ad.voiceId];\r\nconst voiceMessage = ad.voice;\r\n\r\nlet chunks = [];\r\nlet sentences = voiceMessage.split('.');\r\nfor (let s of sentences) {\r\nif (s.trim().length > 0) chunks.push(s.trim() + '.');\r\n}\r\nif (chunks.length === 0) chunks = [voiceMessage];\r\n\r\nlet chunkIndex = 0;\r\n\r\nconst speakNext = () => {\r\nif (chunkIndex >= chunks.length) return;\r\n\r\nlet utterance = new SpeechSynthesisUtterance(chunks[chunkIndex]);\r\nutterance.volume = 1.0;\r\nutterance.pitch = presenter.pitch;\r\nutterance.rate = presenter.rate;\r\n\r\nlet voices = this.synth.getVoices();\r\nlet bestVoice = voices.find(v => v.lang.includes('en') && (v.name.includes('Samantha') || v.name.includes('Google') || v.name.includes('Female')));\r\nif (bestVoice) {\r\nutterance.voice = bestVoice;\r\n}\r\n\r\nutterance.onend = () => {\r\nchunkIndex++;\r\nif (chunkIndex < chunks.length) {\r\nsetTimeout(() => speakNext(), 400);\r\n}\r\n};\r\n\r\nutterance.onerror = (e) => {\r\nconsole.error('Speech error:', e);\r\nchunkIndex++;\r\nif (chunkIndex < chunks.length) {\r\nsetTimeout(() => speakNext(), 400);\r\n}\r\n};\r\n\r\nthis.currentUtterance = utterance;\r\nthis.synth.speak(utterance);\r\n};\r\n\r\nspeakNext();\r\n\r\nthis.showToast(`\ud83d\udd0a ${presenter.name} (${ad.voiceText} VOICE) \u00b7 ENGLISH TEXT \u00b7 20 seconds`, 'success');\r\n\r\nthis.adEndTimer = setTimeout(() => this.endAd(), 25000);\r\n}\r\n\r\nendAd() {\r\nthis.adActive = false;\r\n\r\nif (this.adEndTimer) clearTimeout(this.adEndTimer);\r\nif (this.countdownInterval) clearInterval(this.countdownInterval);\r\n\r\nif (this.currentUtterance) {\r\nthis.synth.cancel();\r\n}\r\n\r\ndocument.getElementById('adOverlayFull').classList.remove('active');\r\n\r\nthis.channels.forEach(ch => {\r\nif (this.ytPlayers[ch.id]) {\r\nlet savedVol = this.savedVolumes[ch.id] !== undefined ? this.savedVolumes[ch.id] : ch.volume;\r\nch.volume = savedVol;\r\nthis.ytPlayers[ch.id].setVolume(this.getTargetVolume(ch));\r\nif (ch.playing) this.ytPlayers[ch.id].playVideo();\r\n}\r\n});\r\n\r\ndocument.getElementById('volumeStatus').classList.remove('active');\r\ndocument.getElementById('musicLevel').innerHTML = '100%';\r\n\r\nthis.schedule.forEach(s => s.status = 'scheduled');\r\nthis.renderSchedule();\r\n\r\nthis.updateCountdownToNextAd();\r\nthis.showToast('\ud83c\udfb5 Music returns to 100% \u00b7 LIVE STREAM continues', 'info');\r\n}\r\n\r\nupdateCountdownToNextAd() {\r\nconst now = new Date();\r\nconst minutes = now.getMinutes();\r\nconst seconds = now.getSeconds();\r\nconst nextBlock = 28 - (minutes % 28);\r\nthis.nextAdSeconds = nextBlock * 60 - seconds;\r\nif (this.nextAdSeconds < 0) this.nextAdSeconds += 28 * 60;\r\n}\r\n\r\ntogglePlay(ch) {\r\nif (!this.ytPlayers[ch.id]) return;\r\nch.playing = !ch.playing;\r\nif (ch.playing) {\r\nthis.ytPlayers[ch.id].playVideo();\r\nthis.ytPlayers[ch.id].setVolume(this.getTargetVolume(ch));\r\n} else {\r\nthis.ytPlayers[ch.id].pauseVideo();\r\n}\r\nthis.updateChannelUI(ch.id);\r\n}\r\n\r\nsetVolume(ch, vol) {\r\nch.volume = vol;\r\nif (ch.playing && !ch.muted && !this.masterMuted && !this.adActive && this.ytPlayers[ch.id]) {\r\nthis.ytPlayers[ch.id].setVolume(vol);\r\n}\r\nthis.updateChannelUI(ch.id);\r\n}\r\n\r\ntoggleMute(ch) {\r\nch.muted = !ch.muted;\r\nif (ch.playing && this.ytPlayers[ch.id]) {\r\nthis.ytPlayers[ch.id].setVolume(this.getTargetVolume(ch));\r\n}\r\nthis.updateChannelUI(ch.id);\r\n}\r\n\r\nrenderChannels() {\r\nconst grid = document.getElementById('channelGrid');\r\ngrid.innerHTML = '';\r\nthis.channels.forEach(ch => {\r\nconst frameClass = `frame-${ch.frame}`;\r\ngrid.innerHTML += `\r\n<div class=\"channel-card ${frameClass} ${ch.playing ? 'playing' : ''}\">\r\n<div class=\"channel-header\">\r\n<div class=\"channel-icon\" style=\"background:${ch.color}20; color:${ch.color}\"><i class=\"fas ${ch.icon}\"><\/i><\/div>\r\n<div>\r\n<div class=\"channel-name\">${ch.name}<\/div>\r\n<div class=\"channel-listeners\"><i class=\"fas fa-headphones\"><\/i> ${ch.listeners}<\/div>\r\n<\/div>\r\n<\/div>\r\n<div class=\"youtube-player\"><div id=\"player-${ch.id}\"><\/div><\/div>\r\n<div class=\"channel-controls\">\r\n<button class=\"play-stop-btn ${ch.playing ? 'playing' : ''}\" data-id=\"${ch.id}\"><i class=\"fas ${ch.playing ? 'fa-stop' : 'fa-play'}\"><\/i><\/button>\r\n<input type=\"range\" min=\"0\" max=\"100\" value=\"${ch.volume}\" class=\"volume-slider\" data-id=\"${ch.id}\">\r\n<span class=\"volume-percent\">${ch.volume}%<\/span>\r\n<button class=\"mute-btn ${ch.muted ? 'muted' : ''}\" data-id=\"${ch.id}\"><i class=\"fas ${ch.muted ? 'fa-volume-mute' : 'fa-volume-up'}\"><\/i><\/button>\r\n<\/div>\r\n<\/div>\r\n`;\r\n});\r\nthis.attachChannelEvents();\r\n}\r\n\r\nattachChannelEvents() {\r\ndocument.querySelectorAll('.play-stop-btn').forEach(btn => {\r\nbtn.addEventListener('click', (e) => {\r\nconst id = btn.dataset.id;\r\nconst ch = this.channels.find(c => c.id === id);\r\nif (ch) this.togglePlay(ch);\r\n});\r\n});\r\ndocument.querySelectorAll('.volume-slider').forEach(sl => {\r\nsl.addEventListener('input', (e) => {\r\nconst id = sl.dataset.id;\r\nconst vol = parseInt(e.target.value);\r\nconst ch = this.channels.find(c => c.id === id);\r\nif (ch) {\r\nthis.setVolume(ch, vol);\r\ne.target.nextElementSibling.innerText = vol + '%';\r\n}\r\n});\r\n});\r\ndocument.querySelectorAll('.mute-btn').forEach(btn => {\r\nbtn.addEventListener('click', (e) => {\r\nconst id = btn.dataset.id;\r\nconst ch = this.channels.find(c => c.id === id);\r\nif (ch) this.toggleMute(ch);\r\n});\r\n});\r\n}\r\n\r\nupdateChannelUI(chId) {\r\nconst ch = this.channels.find(c => c.id === chId);\r\nif (!ch) return;\r\nconst btn = document.querySelector(`.play-stop-btn[data-id=\"${chId}\"]`);\r\nif (btn) {\r\nbtn.innerHTML = ch.playing ? '<i class=\"fas fa-stop\"><\/i>' : '<i class=\"fas fa-play\"><\/i>';\r\nbtn.classList.toggle('playing', ch.playing);\r\n}\r\nconst muteBtn = document.querySelector(`.mute-btn[data-id=\"${chId}\"]`);\r\nif (muteBtn) {\r\nmuteBtn.innerHTML = ch.muted ? '<i class=\"fas fa-volume-mute\"><\/i>' : '<i class=\"fas fa-volume-up\"><\/i>';\r\nmuteBtn.classList.toggle('muted', ch.muted);\r\n}\r\n}\r\n\r\nrenderAds() {\r\nconst g = document.getElementById('companyGrid');\r\ng.innerHTML = this.ads.map(ad => {\r\nconst presenter = this.femalePresenters[ad.voiceId];\r\nreturn `<div class=\"company-card\" style=\"border-left-color:${ad.color}\" onclick=\"window.testAd(${ad.id})\">\r\n<div class=\"company-name\" style=\"color:${ad.color}\">${ad.name}<\/div>\r\n<div class=\"company-interval\">\u23f0 28 min rotation \u00b7 20s<\/div>\r\n<div style=\"font-size: 10px; margin-top: 5px;\">\r\n<i class=\"fas fa-female\"><\/i> \ud83c\udf99\ufe0f ${presenter.name} \u00b7\r\n<span class=\"voice-badge voice-en\">${ad.voiceText} VOICE<\/span>\r\n<span style=\"color: #88ff88;\"> \ud83d\udcdd ENGLISH TEXT<\/span>\r\n<\/div>\r\n<\/div>`;\r\n}).join('');\r\n}\r\n\r\nrenderPresenters() {\r\nconst g = document.getElementById('presenterGrid');\r\ng.innerHTML = this.femalePresenters.map(p => `\r\n<div class=\"presenter-card\">\r\n<div class=\"presenter-avatar\">${p.avatar}<\/div>\r\n<div class=\"presenter-name\">${p.name}<\/div>\r\n<div class=\"presenter-voice-type\">${p.voiceType}<\/div>\r\n<div class=\"lang-badge-presenter\"><i class=\"fas fa-language\"><\/i> ENGLISH VOICE<\/div>\r\n<\/div>\r\n`).join('');\r\n}\r\n\r\nrenderSchedule() {\r\nconst g = document.getElementById('scheduleGrid');\r\ng.innerHTML = '';\r\nconst now = new Date();\r\nconst curM = now.getHours() * 60 + now.getMinutes();\r\nlet displayed = 0;\r\nfor (let m = curM; m < curM + 1440 && displayed < 24; m += 28) {\r\nlet t = this.formatTime(m % 1440);\r\nlet adIndex = (Math.floor(m \/ 28) % this.ads.length);\r\nlet ad = this.ads[adIndex];\r\nif (ad) {\r\nlet isActive = (this.currentAd && this.currentAd.id === ad.id && this.adActive);\r\ng.innerHTML += `<div class=\"schedule-card ${isActive ? 'ad-active' : ''}\" style=\"border-left-color:${ad.color}\">\r\n<div><strong>${t}<\/strong><\/div>\r\n<div>${ad.name.substring(0, 22)}<\/div>\r\n<span style=\"font-size: 8px;\">\ud83c\udf99\ufe0f ${ad.voiceText} \u00b7 \ud83d\udcdd EN \u00b7 20s<\/span>\r\n<\/div>`;\r\ndisplayed++;\r\n}\r\n}\r\n}\r\n\r\nattachMasterEvents() {\r\ndocument.getElementById('playAllBtn').addEventListener('click', () => {\r\nthis.channels.forEach(ch => {\r\nif (!ch.playing && this.ytPlayers[ch.id]) {\r\nch.playing = true;\r\nthis.ytPlayers[ch.id].playVideo();\r\nthis.ytPlayers[ch.id].setVolume(this.getTargetVolume(ch));\r\n}\r\n});\r\nthis.renderChannels();\r\nthis.showToast('All channels started', 'success');\r\n});\r\ndocument.getElementById('stopAllBtn').addEventListener('click', () => {\r\nthis.channels.forEach(ch => {\r\nif (ch.playing && this.ytPlayers[ch.id]) {\r\nch.playing = false;\r\nthis.ytPlayers[ch.id].pauseVideo();\r\n}\r\n});\r\nthis.renderChannels();\r\nthis.showToast('All channels stopped', 'info');\r\n});\r\ndocument.getElementById('muteAllBtn').addEventListener('click', () => {\r\nthis.channels.forEach(ch => { ch.muted = true; if (ch.playing && this.ytPlayers[ch.id]) this.ytPlayers[ch.id].setVolume(0); });\r\nthis.renderChannels();\r\nthis.showToast('All muted', 'info');\r\n});\r\ndocument.getElementById('unmuteAllBtn').addEventListener('click', () => {\r\nthis.channels.forEach(ch => { ch.muted = false; if (ch.playing && this.ytPlayers[ch.id] && !this.masterMuted && !this.adActive) this.ytPlayers[ch.id].setVolume(ch.volume); });\r\nthis.renderChannels();\r\nthis.showToast('All unmuted', 'success');\r\n});\r\ndocument.getElementById('masterVolume').addEventListener('input', (e) => {\r\nthis.masterVolume = parseInt(e.target.value);\r\ndocument.getElementById('masterValue').innerText = this.masterVolume + '%';\r\nif (!this.masterMuted && !this.adActive) {\r\nthis.channels.forEach(ch => {\r\nif (ch.playing && !ch.muted && this.ytPlayers[ch.id]) this.ytPlayers[ch.id].setVolume(this.masterVolume);\r\n});\r\n}\r\n});\r\ndocument.getElementById('masterMute').addEventListener('click', (e) => {\r\nthis.masterMuted = !this.masterMuted;\r\ne.target.innerHTML = this.masterMuted ? '<i class=\"fas fa-volume-mute\"><\/i> Unmute' : '<i class=\"fas fa-volume-up\"><\/i> Mute';\r\nthis.applyVolumeToAll();\r\n});\r\ndocument.getElementById('playAdBtn').addEventListener('click', () => {\r\nif (this.adActive) this.endAd();\r\nsetTimeout(() => this.startAd(this.ads[0]), 100);\r\n});\r\n}\r\n\r\nstartCountdown() {\r\nthis.updateCountdownToNextAd();\r\nsetInterval(() => {\r\nif (!this.adActive) {\r\nthis.nextAdSeconds--;\r\nif (this.nextAdSeconds < 0) this.nextAdSeconds = 0;\r\n}\r\nlet m = Math.floor(this.nextAdSeconds \/ 60);\r\nlet s = this.nextAdSeconds % 60;\r\ndocument.getElementById('countdownTimer').innerText = `${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\r\ndocument.getElementById('nextAdTime').innerText = `${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\r\n}, 1000);\r\n}\r\n\r\nupdateStats() {\r\nlet total = this.channels.reduce((a, c) => a + c.listeners, 0);\r\ndocument.getElementById('statListeners').innerText = total;\r\ndocument.getElementById('statActive').innerText = this.channels.filter(c => c.playing).length;\r\ndocument.getElementById('statAds').innerText = this.adsToday;\r\n}\r\n\r\nshowToast(msg, type) {\r\nlet t = document.createElement('div');\r\nt.className = 'toast';\r\nt.innerHTML = `<i class=\"fas fa-${type === 'success' ? 'check-circle' : 'info-circle'}\" style=\"color: gold;\"><\/i> ${msg}`;\r\ndocument.getElementById('toastContainer').appendChild(t);\r\nsetTimeout(() => t.remove(), 3000);\r\n}\r\n}\r\n\r\nwindow.testAd = (id) => {\r\nif (window.marketplaceRadio) {\r\nif (window.marketplaceRadio.adActive) window.marketplaceRadio.endAd();\r\nsetTimeout(() => {\r\nconst ad = ALL_ADS.find(a => a.id === id);\r\nif (ad) window.marketplaceRadio.startAd(ad);\r\n}, 300);\r\n}\r\n};\r\n\r\nwindow.marketplaceRadio = new MarketplaceInternetRadio();\r\n<\/script>\r\n<\/body>\r\n<\/html>\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\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Marketplace Internet Radio \u00b7 23 Music Channels \u00b7 16 English Ads \u00b7 LIVE STREAM &times; \ud83c\udf99\ufe0f MARKETPLACE RADIO Welcome to Marketplace Radio&#8230; 20 \ud83c\udf10 ENGLISH VOICE \u00b7 ENGLISH TEXT \u00b7 20 SECONDS \ud83c\udfb5 MUSIC: 100% \ud83c\udf99\ufe0f VOICE: &#8212; \ud83d\udcdd TEXT: ENGLISH MP MARKETPLACE INTERNET RADIO 23 MUSIC CHANNELS \u00b7 16 ENGLISH ADS \u00b7 28 MIN [&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-22078","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/marketplace-marketplace.com\/index.php\/wp-json\/wp\/v2\/pages\/22078","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/marketplace-marketplace.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/marketplace-marketplace.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/marketplace-marketplace.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/marketplace-marketplace.com\/index.php\/wp-json\/wp\/v2\/comments?post=22078"}],"version-history":[{"count":5,"href":"https:\/\/marketplace-marketplace.com\/index.php\/wp-json\/wp\/v2\/pages\/22078\/revisions"}],"predecessor-version":[{"id":22084,"href":"https:\/\/marketplace-marketplace.com\/index.php\/wp-json\/wp\/v2\/pages\/22078\/revisions\/22084"}],"wp:attachment":[{"href":"https:\/\/marketplace-marketplace.com\/index.php\/wp-json\/wp\/v2\/media?parent=22078"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}