PageSourceSearch

https://reggaejah.com/

html reggaejah.com collected 2026-10-08 12:18:12 UTC 21,818 bytes, 479 lines download raw bytes

1<!DOCTYPE html>
2<html lang="pt-BR">
3  <head>
4    <meta charset="UTF-8" />
5    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6    <title>Rádio Reggae Jah</title>
7    <meta
8      name="description"
9      content="Rádio Reggae Jah: reggae roots, dub e cultura com programação contínua, notícias, equipe e comunidade conectada."
10    />
11    <meta property="og:type" content="website" />
12    <meta property="og:title" content="Rádio Reggae Jah" />
13    <meta
14      property="og:description"
15      content="Reggae roots, dub e cultura com programação contínua, notícias e comunidade conectada."
16    />
17    <meta property="og:image" content="img/logo.png" />
18    <meta property="og:url" content="https://www.reggaejah.com/" />
19    <meta name="twitter:card" content="summary_large_image" />
20    <meta name="twitter:title" content="Rádio Reggae Jah" />
21    <meta
22      name="twitter:description"
23      content="Reggae roots, dub e cultura com programação contínua, notícias e comunidade conectada."
24    />
25    <meta name="twitter:image" content="img/logo.png" />
26    <link rel="icon" type="image/png" href="img/logo.png" />
27    <link rel="preconnect" href="https://fonts.googleapis.com" />
28    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
29    <link
30      href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap"
31      rel="stylesheet"
32    />
33    <!-- CSS do player -->
34    <link rel="stylesheet" href="Player_topo/css/font-awesome.min.css" />
35    <link rel="stylesheet" href="Player_topo/css/animate.css" />
36    <link rel="stylesheet" href="Player_topo/css/style.css" />
37    <link rel="stylesheet" href="style.css?v=11" />
38  </head>
39  <body>
40    <!-- Skip Links para Navegação por Teclado -->
41    <a href="#main-content" class="skip-link">Pular para o conteúdo principal</a>
42    <a href="#player" class="skip-link">Pular para o player</a>
43    <a href="#nav" class="skip-link">Pular para o menu de navegação</a>
44
45    <!-- Player topo -->
46    <div class="top-player">
47      <section id="player" class="player-bar">
48        <div class="cover-album">
49          <div id="currentCoverArt"></div>
50          <div class="watermark"></div>
51        </div>
52        <div class="info-current-song">
53          <h2 id="currentSong" class="current-song text-uppercase">Música</h2>
54          <h3 id="currentArtist" class="current-artist text-captalize">Artista</h3>
55        </div>
56        <div class="live-info-wrapper">
57          <div class="live-info" id="liveInfo"></div>
58          <div id="playerStatus" class="player-status status-connecting" aria-live="polite">Conectando...</div>
59          <div class="floating-notes" aria-hidden="true">
60            <span>♫</span>
61            <span>♪</span>
62            <span>♫</span>
63            <span>♪</span>
64          </div>
65        </div>
66        <div class="controls">
67          <button type="button" class="btn-play" onclick="togglePlay()" aria-label="Tocar ou pausar a rádio">
68            <i id="playerButton" class="fa fa-play"></i> <span id="buttonPlay">PLAY</span>
69          </button>
70          <button type="button" class="btn-lyrics" onclick="openLyricsModal()" aria-label="Ver letra da música">
71            <i class="fa fa-music"></i>
72          </button>
73          <button type="button" id="activateAudioButton" class="btn-activate-sound hidden" aria-label="Ativar som da rádio">
74            <i class="fa fa-volume-up"></i> ATIVAR SOM
75          </button>
76          <div class="volume-control">
77            <i class="fa fa-volume-up"></i>
78            <input type="range" id="volume" step="1" min="0" max="100" value="70" aria-label="Controle de volume">
79            <span class="volume-tooltip" id="volumeTooltip">70%</span>
80          </div>
81        </div>
82        <div class="recent-box">
83          <h4>Próxima Música</h4>
84          <div class="recent-item">
85            <div class="cover-historic" id="nextCover"></div>
86            <div class="music-info">
87              <div class="song" id="nextSong">Carregando...</div>
88              <div class="artist" id="nextArtist">-</div>
89            </div>
90          </div>
91        </div>
92      </section>
93    </div>
94
95    <!-- Modal de Letra -->
96    <div id="lyricsModal" class="lyrics-modal hidden">
97      <div class="lyrics-modal-content">
98        <div class="lyrics-modal-header">
99          <h3 id="lyricsTitle">Letra da Música</h3>
100          <button class="btn-close" onclick="closeLyricsModal()" aria-label="Fechar modal">
101            <i class="fa fa-times"></i>
102          </button>
103        </div>
104        <div class="lyrics-modal-body">
105          <div id="lyricsContent" class="lyrics-content">
106            <div class="lyrics-loading">
107              <i class="fa fa-spinner fa-spin"></i>
108              <p>Carregando letra...</p>
109            </div>
110          </div>
111        </div>
112      </div>
113    </div>
114
115    <!-- Menu fixo -->
116    <header class="header" role="banner">
117      <div class="container nav-container" id="nav">
118        <div class="brand">
119          <span class="brand-mark" role="img" aria-label="Rádio Reggae Jah">RRJ</span>
120          <span class="brand-name">Rádio Reggae Jah</span>
121        </div>
122        <nav class="nav" role="navigation" aria-label="Menu principal">
123          <a href="#inicial">INICIAL</a>
124          <a href="#programacao">PROGRAMAÇÃO</a>
125          <a href="#equipe">EQUIPE</a>
126          <a href="noticias.html">NOTÍCIAS</a>
127          <a href="#sobre">SOBRE NÓS</a>
128        </nav>
129        <div class="header-actions">
130          <a
131            class="header-app-btn"
132            href="https://www.reggaejah.com/radio-reggae-jah/index.html"
133            target="_blank"
134            rel="noopener"
135            aria-label="Baixe nosso APP"
136          >
137            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
138              <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
139              <polyline points="7 10 12 15 17 10"></polyline>
140              <line x1="12" y1="15" x2="12" y2="3"></line>
141            </svg>
142            <span>Baixe nosso APP</span>
143          </a>
144          <button class="theme-toggle" id="themeToggle" aria-label="Alternar tema claro/escuro">
145            <svg class="sun-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
146              <circle cx="12" cy="12" r="5"></circle>
147              <line x1="12" y1="1" x2="12" y2="3"></line>
148              <line x1="12" y1="21" x2="12" y2="23"></line>
149              <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
150              <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
151              <line x1="1" y1="12" x2="3" y2="12"></line>
152              <line x1="21" y1="12" x2="23" y2="12"></line>
153              <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
154              <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
155            </svg>
156            <svg class="moon-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
157              <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
158            </svg>
159          </button>
160          <button class="menu-toggle" aria-label="Abrir menu">
161            <span></span><span></span><span></span>
162          </button>
163        </div>
164      </div>
165    </header>
166
167    <main id="main-content" role="main">
168      <!-- Página inicial -->
169      <section id="inicial" class="hero" aria-labelledby="hero-title">
170        <div class="slider" id="slider">
171          <!-- Slides carregados via API -->
172        </div>
173      </section>
174
175      <!-- Chat -->
176      <section class="chat" aria-labelledby="chat-title">
177        <div class="container">
178          <h2 id="chat-title">Chat ao vivo</h2>
179          <p>Participe da comunidade e compartilhe sua vibe.</p>
180          <div class="chat-stack">
181            <!-- Código do chat (exatamente como solicitado) -->
182            <iframe
183              class="chat-frame"
184              src="https://minnit.chat/c/ReggaeJah?embed&nickname="
185              style="border:none; height:500px; max-height:90vh;"
186              data-minnitchatembed="1"
187            ></iframe>
188            <div class="chat-weather">
189              <div
190                id="ww_0f8eaff82d673"
191                v="1.3"
192                loc="auto"
193                a='{"t":"ticker","lang":"pt","sl_lpl":1,"ids":[],"font":"Arial","sl_ics":"one_a","sl_sot":"celsius","cl_bkg":"image","cl_font":"#FFFFFF","cl_cloud":"#FFFFFF","cl_persp":"#81D4FA","cl_sun":"#FFC107","cl_moon":"#FFC107","cl_thund":"#FF5722"}'
194              >
195                Mais previsões:
196                <a
197                  href="https://tempolongo.com/lisboa_tempo_25_dias/"
198                  id="ww_0f8eaff82d673_u"
199                  target="_blank"
200                  rel="noopener"
201                >
202                  Lisboa tempo por hora
203                </a>
204              </div>
205            </div>
206          </div>
207          
207<script async src="https://app3.weatherwidget.org/js/?id=ww_0f8eaff82d673"></script>
207
208        </div>
209      </section>
210
211      <!-- Programação -->
212      <section id="programacao" class="section" aria-labelledby="programacao-title">
213        <div class="container">
214          <h2 id="programacao-title">Programação</h2>
215          <p class="section-subtitle">
216            Seleção de programas com energia positiva durante toda a semana.
217          </p>
218          <div class="schedule-wrapper">
219            <div class="schedule-tabs" id="scheduleTabs"></div>
220            <div class="schedule-table">
221              <div class="schedule-header">
222                <span>Horário</span>
223                <span>Programa</span>
224                <span>Apresentador</span>
225              </div>
226              <div class="schedule-rows" id="scheduleRows"></div>
227            </div>
228          </div>
229        </div>
230      </section>
231
232      <!-- Equipe -->
233      <section id="equipe" class="section alt" aria-labelledby="equipe-title">
234        <div class="container">
235          <h2 id="equipe-title">Equipe</h2>
236          <p class="section-subtitle">
237            Profissionais apaixonados por música e cultura.
238          </p>
239          <div class="team-carousel" id="teamCarousel">
240            <div class="team-track" id="teamTrack"></div>
241          </div>
242        </div>
243      </section>
244
245      <!-- Notícias -->
246      <section id="noticias" class="section alt" aria-labelledby="noticias-title">
247        <div class="container">
248          <h2 id="noticias-title">Notícias</h2>
249          <p class="section-subtitle">
250            Atualizações sobre lançamentos, eventos e entrevistas.
251          </p>
252          <div class="news-grid" id="newsGrid"></div>
253        </div>
254      </section>
255
256
257      <!-- Sobre nós -->
258      <section id="sobre" class="section" aria-labelledby="sobre-title">
259        <div class="container about">
260          <div>
261            <h2 id="sobre-title">Sobre nós</h2>
262            <p>
263              A Rádio Reggae Jah é uma plataforma digital dedicada à difusão da
264              música reggae e à valorização de sua cultura, princípios e mensagens.
265              Com foco na promoção da paz, da consciência social e da liberdade,
266              a rádio atua como um canal de conexão entre ouvintes, artistas e
267              movimentos ligados ao reggae no Brasil e no mundo.
268            </p>
269            <p>
270              Fundada em 2020 pelos amigos e entusiastas da música e da cultura
271              reggae Fabio Capixaba, Silnovan e Fabio Koala, a Rádio Reggae Jah
272              nasceu com o propósito de fortalecer a cena independente e ampliar
273              o alcance das expressões culturais oriundas das ilhas, da diáspora
274              africana e do reggae brasileiro.
275            </p>
276            <p>
277              Por meio de uma programação musical criteriosa, conteúdos informativos
278              e iniciativas de interação ao vivo, a Rádio Reggae Jah trabalha
279              continuamente para fomentar a comunidade reggae, promover novos
280              talentos e contribuir para a preservação e expansão desse importante
281              movimento cultural.
282            </p>
283          </div>
284          <div class="values">
285            <div class="value-card">
286              <h3>Missão</h3>
287              <p>
288                Ser um canal de referência do reggae contemporâneo, promovendo
289                artistas, difundindo informação de qualidade e transmitindo
290                mensagens de positividade, consciência e transformação social.
291              </p>
292            </div>
293            <div class="value-card">
294              <h3>Visão</h3>
295              <p>
296                Inspirar pessoas por meio da música reggae e consolidar uma
297                comunidade global de ouvintes engajada, diversa e conectada pelos
298                valores da cultura reggae.
299              </p>
300            </div>
301            <div class="value-card">
302              <h3>Valores</h3>
303              <ul>
304                <li>Respeito às pessoas, às culturas e às diferenças</li>
305                <li>Valorização da diversidade cultural e artística</li>
306                <li>Espiritualidade como base de consciência e equilíbrio</li>
307                <li>Responsabilidade social e compromisso com a comunidade</li>
308                <li>Paixão, autenticidade e dedicação à cultura reggae</li>
309              </ul>
310            </div>
311          </div>
312        </div>
313      </section>
314      <section id="contato" class="section alt" aria-labelledby="contato-title">
315        <div class="container">
316          <h2 id="contato-title">Contato</h2>
317          <div class="contact-card">
318            <div class="contact-column">
319              <p class="contact-email">
320                Email:
321                <a href="mailto:[email protected]">[email protected]</a>
322              </p>
323            </div>
324            <div class="contact-column contact-icons">
325              <a
326                class="contact-link"
327                href="https://www.instagram.com/reggaejah2"
328                target="_blank"
329                rel="noopener"
330                aria-label="Instagram Rádio Reggae Jah"
331              >
332                <svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
333                  <path
334                    fill="#E1306C"
335                    d="M12 7.1A4.9 4.9 0 1 0 12 17a4.9 4.9 0 0 0 0-9.9Zm0 8A3.1 3.1 0 1 1 12 8a3.1 3.1 0 0 1 0 7.1Zm6.2-9.1a1.2 1.2 0 1 1-2.4 0 1.2 1.2 0 0 1 2.4 0Z"
336                  />
337                  <path
338                    fill="#F77737"
339                    d="M16.9 2H7.1A5.1 5.1 0 0 0 2 7.1v9.8A5.1 5.1 0 0 0 7.1 22h9.8a5.1 5.1 0 0 0 5.1-5.1V7.1A5.1 5.1 0 0 0 16.9 2Zm3.3 14.9a3.3 3.3 0 0 1-3.3 3.3H7.1a3.3 3.3 0 0 1-3.3-3.3V7.1a3.3 3.3 0 0 1 3.3-3.3h9.8a3.3 3.3 0 0 1 3.3 3.3Z"
340                  />
341                </svg>
342              </a>
343              <a
344                class="contact-link"
345                href="https://chat.whatsapp.com/L9Fips6CS801WguOwRG4M2"
346                target="_blank"
347                rel="noopener"
348                aria-label="Grupo de ouvintes no WhatsApp"
349              >
350                <svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
351                  <path
352                    fill="#25D366"
353                    d="M12.04 2C6.58 2 2.11 6.47 2.11 11.93c0 1.94.55 3.83 1.6 5.46L2 22l4.78-1.56a9.9 9.9 0 0 0 5.26 1.51h.01c5.46 0 9.93-4.47 9.93-9.93A9.94 9.94 0 0 0 12.04 2Zm0 18.08h-.01a8.1 8.1 0 0 1-4.13-1.12l-.3-.18-2.84.93.94-2.77-.2-.29a8.1 8.1 0 1 1 6.54 3.43Zm4.45-6.1c-.24-.12-1.42-.7-1.
35364-.78-.22-.08-.39-.12-.55.12-.16.24-.63.78-.77.94-.14.16-.29.18-.53.06-.24-.12-1.02-.37-1.94-1.18-.71-.63-1.19-1.4-1.33-1.64-.14-.24-.02-.37.1-.49.11-.11.24-.29.36-.43.12-.14.16-.24.24-.39.08-.16.04-.29-.02-.41-.06-.12-.55-1.32-.75-1.81-.2-.48-.41-.41-.55-.42h-.47c-.16 0-.41.06-.63.29-.22.24-.82.8-.82 1.95 0 1.15.84 2.26.96 2.42.12.16 1.65 2.52 4 3.53.56.24 1 .38 1.34.49.56.18 1.07.16 1.47.1.45-.07 1.42-.58 1.62-1.14.2-.56.2-1.04.14-1.14-.06-.1-.22-.16-.47-.28Z"
354                  />
355                </svg>
356              </a>
357            </div>
358          </div>
359        </div>
360      </section>
361    </main>
362
363    <footer class="footer" role="contentinfo">
364      <div class="container">
365        <p>© 2026 Rádio Reggae Jah. Todos os direitos reservados.</p>
366        <div class="footer-links">
367          <a class="footer-admin-link" href="adm.html" target="_blank" rel="noopener" aria-label="Painel administrativo">
368            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
369              <path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path>
370              <path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path>
371            </svg>
372          </a>
373        </div>
374      </div>
375    </footer>
376
377    <!-- Widget de Pedidos de Música -->
378    <button id="btn-pedido"><span class="icon">🎵</span> PEDIR MÚSICA</button>
379
380    <!-- Overlay e Modal -->
381    <div id="iframe-overlay"></div>
382    <div id="iframe-modal" role="dialog" aria-modal="true">
383      <div class="modal-header" id="modal-drag">
384        <h3 id="modal-title">🦁 Pedido Musical</h3>
385        <button id="iframe-close">&times;</button>
386      </div>
387      <div class="form-container">
388        <form id="pedidoForm">
389          <input type="text" name="nome" placeholder="👤 Seu nome" required>
390          <input type="text" name="cidade" placeholder="🌆 Cidade" required>
391          <input type="text" name="musica" placeholder="🎶 Nome da música" required>
392          <textarea name="mensagem" placeholder="📝 Mensagem extra (opcional)"></textarea>
393          <button type="submit">✌️ ENVIAR PEDIDO</button>
394        </form>
395      </div>
396    </div>
397
398    
398<script src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js"></script>
398
399    
399<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
399
400    
400<script src="Player_topo/js/script.js"></script>
400
401    
401<script src="script.js?v=10"></script>
401
402
403    
403<script>
404      // Modal
405      const btn = document.getElementById('btn-pedido'),
406            modal = document.getElementById('iframe-modal'),
407            overlay = document.getElementById('iframe-overlay'),
408            close = document.getElementById('iframe-close'),
409            dragArea = document.getElementById('modal-drag'),
410            form = document.getElementById('pedidoForm');
411      btn.onclick = () => { modal.style.display = 'block'; overlay.style.display = 'block'; overlay.classList.add('show'); modal.classList.add('show'); };
412      const closeModal = () => { modal.classList.remove('show'); overlay.classList.remove('show'); setTimeout(() => { modal.style.display = 'none'; overlay.style.display = 'none'; }, 300); };
413      close.onclick = overlay.onclick = closeModal;
414      let dragging = false, offX, offY;
415      dragArea.onmousedown = e => { dragging = true; offX = e.clientX - modal.offsetLeft; offY = e.clientY - modal.offsetTop; modal.style.transition = 'none'; };
416      document.onmousemove = e => { if (dragging) { modal.style.left = e.clientX - offX + 'px'; modal.style.top = e.clientY - offY + 'px'; modal.style.transform = 'none'; } };
417      document.onmouseup = () => dragging = false;
418
419      // Verificar status do DJ ao vivo
420      let djAoVivo = false;
421
422      function verificarStatusDJ() {
423        fetch('pedido/api/check_live.php')
424          .then(res => res.json())
425          .then(data => {
426            if (data.status === 'sucesso') {
427              const novoStatus = data.ao_vivo;
428
429              // Se mudou o status
430              if (novoStatus !== djAoVivo) {
431                djAoVivo = novoStatus;
432
433                if (djAoVivo) {
434                  // DJ entrou ao vivo - mostrar botão
435                  btn.style.display = 'flex';
436                  btn.innerHTML = '<span class="icon">🎵</span> PEDIR MÚSICA<br>' + data.dj_nome;
437                  btn.style.background = 'linear-gradient(135deg, #e74c3c, #c0392b)';
438                } else {
439                  // DJ saiu do ar - esconder botão
440                  btn.style.display = 'none';
441                }
442              }
443            }
444          })
445          .catch(err => {
446            console.error('Erro ao verificar status:', err);
447          });
448      }
449
450      // Verificar status inicial e a cada 15 segundos
451      verificarStatusDJ();
452      setInterval(verificarStatusDJ, 15000);
453
454      // Envio via AJAX para backend PHP
455      form.onsubmit = e => {
456        e.preventDefault();
457        const formData = new FormData(form);
458
459        fetch('pedido/api/save_pedido.php', {
460          method: 'POST',
461          body: formData
462        })
463          .then(res => res.json())
464          .then(data => {
465            if (data.status === 'sucesso') {
466              alert('✅ Pedido enviado!');
467              form.reset();
468              closeModal();
469            } else {
470              alert('❌ Erro: ' + data.mensagem);
471            }
472          })
473          .catch(err => {
474            alert('❌ Erro ao enviar pedido');
475          });
476      };
477    </script>
477
478  </body>
479</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.