/* Timer Music Selector v12 - Clean names without time */ (function() { var TRACKS = [ { id: 'none', name: 'No Music', icon: '🔇', url: null }, { id: 'relaxing', name: 'Relaxing Meditation', icon: '🎵', url: 'https://l-opus.com/wp-content/uploads/2026/07/meditation-relaxing-15min.mp3' }, { id: 'tibetan', name: 'Tibetan Singing Bowls', icon: '🎵', url: 'https://l-opus.com/wp-content/uploads/2026/07/meditation-tibetan-15min.mp3' }, { id: 'relaxing_10min', name: 'Peaceful Piano', icon: '🎵', url: 'https://l-opus.com/wp-content/uploads/2026/07/meditation_10min.mp3' }, { id: 'relaxing_3min', name: 'Nature Sounds', icon: '🎵', url: 'https://l-opus.com/wp-content/uploads/2026/05/meditation-relaxing-3min.mp3' }, ]; var selectedTrack = TRACKS[0]; var isPlaying = false; var old = document.getElementById('musicModal'); if (old) old.remove(); var oldA = document.getElementById('bgMusicPlayer'); if (oldA) oldA.remove(); var bgAudio = document.createElement('audio'); bgAudio.id = 'bgMusicPlayer'; bgAudio.loop = true; bgAudio.volume = 1.0; document.body.appendChild(bgAudio); var overlay = document.createElement('div'); overlay.id = 'musicModal'; overlay.style.cssText = 'display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(255,255,255,0.15);backdrop-filter:blur(4px);z-index:999999;justify-content:center;align-items:center;'; var modal = document.createElement('div'); modal.style.cssText = 'background:rgba(255,255,255,0.92);backdrop-filter:blur(12px);border-radius:20px;padding:28px;width:340px;max-width:90vw;box-shadow:0 8px 40px rgba(0,0,0,0.12);'; modal.innerHTML = '

Meditation Music

Music loops for the duration of your timer

'; overlay.appendChild(modal); document.body.appendChild(overlay); function renderList() { var list = document.getElementById('musicList'); list.innerHTML = ''; TRACKS.forEach(function(track) { var sel = track.id === selectedTrack.id; var item = document.createElement('div'); item.style.cssText = 'display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:12px;cursor:pointer;background:' + (sel ? '#e8f0fe' : '#f8f9fa') + ';border:1px solid ' + (sel ? '#4fc3f7' : 'transparent') + ';'; item.innerHTML = '' + track.icon + '' + track.name + '' + (sel ? '\u2713' : '') + ''; item.onclick = function() { selectedTrack = track; renderList(); var vb = document.getElementById('voiceBtn'); if (vb) { vb.textContent = track.id === 'none' ? '\u266b' : '\u266a'; vb.style.color = track.id === 'none' ? '' : '#4fc3f7'; } overlay.style.display = 'none'; }; list.appendChild(item); }); } function install() { var btn = document.getElementById('startBtn'); if (!btn) return; var orig = btn.onclick; if (!orig) return; btn.onclick = function(e) { var wasRun = !!window.run; orig.call(this, e); var nowRun = !!window.run; if (nowRun && !wasRun && selectedTrack.url) { isPlaying = true; bgAudio.src = selectedTrack.url; bgAudio.currentTime = 0; bgAudio.volume = 1.0; var p = bgAudio.play(); if (p) p.catch(function() {}); } else if (!nowRun && wasRun) { isPlaying = false; bgAudio.pause(); bgAudio.src = ''; } }; var rb = document.getElementById('resetBtn'); if (rb && rb.onclick) { var origR = rb.onclick; rb.onclick = function(e) { origR.call(this, e); isPlaying = false; bgAudio.pause(); bgAudio.src = ''; }; } var vb = document.getElementById('voiceBtn'); if (vb) { vb.onclick = function(e) { e.stopPropagation(); renderList(); overlay.style.display = 'flex'; }; } document.getElementById('closeMusicModal').onclick = function() { overlay.style.display = 'none'; }; overlay.onclick = function(e) { if (e.target === overlay) overlay.style.display = 'none'; }; setInterval(function() { if (window.total <= 0 && window.run === false && isPlaying) { isPlaying = false; setTimeout(function() { bgAudio.pause(); bgAudio.src = ''; }, 6000); } }, 500); } if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', install); else install(); })();