/* ===== ВЫБОР ТРЕКОВ НА КАНАЛЕ «ФОРМУЛЫ» (вставка) ===== */
try{
const FORMULA_NAMES=[
'Формулы для самоутверждения и повышения самооценки',
'Запретная Психофизика. Техника Безопасности Раскрытия Экстрасенсорных Сверхспособностей. Базидная Гипнорецитация.',
'Базидные Практики. Пробуждение. Гипнорецитация и Активация Шишковидной Железы.',
'Медитация от психосоматических расстройств',
'Релаксация оздоровления во сне',
'Медитация для накопления силы',
'Здоровье',
'Формулы для накачки силы. Измени себя и свою жизнь к лучшему',
'Формулы перед сном, расслабься, успокойся, отпусти уходящий день',
'Интеллект',
'Формулы на уверенность в себе',
'Формулы мотиваторы на активность',
'Формулы на богатство, изобилие и процветание',
'Формулы на сопутствующий успех',
'Формулы на открытие денежного потока',
'Интуиция',
'Формулы для повышения самооценки',
'Лидер',
'Формулы для хорошего сна',
'Формулы на позитивное мышление. Весеннее настроение',
'Формулы для поднятия хорошего настроения',
'Формулы против курения 0001',
'Самооценка',
'Формулы на позитивное мышление. Усиленная техника',
'Успех',
'Гипноз для похудения и сна. Визуализация стройности перед сном',
'Гипноз. Похудение во сне. Новые полезные пищевые привычки',
'Гипноз для похудения и снижения веса'
];
FORMULA_NAMES.forEach(function(name,i){
if(FORMULA_TRACKS[i])FORMULA_TRACKS[i].title=name;
});
let pickedIndex=0;
let pickFresh=true;
/* Канал «Формулы»: играет выбранный трек с начала, а не «эфир» */
const origGetLive=getLivePosition;
getLivePosition=function(){
if(currentChannel===0){
return{
index:pickedIndex,
offset:pickFresh?0:(audio.currentTime||0)
};
}
return origGetLive();
};
audio.addEventListener('playing',function(){
pickFresh=false;
});
/* Когда трек закончился — просто останавливаемся */
const origConnect=connectToLive;
connectToLive=function(autoPlay){
if(currentChannel===0 && audio.ended){
isPlaying=false;
playBtn.textContent='▶';
playBtn.classList.remove('playing');
pickFresh=true;
statusEl.textContent='Трек закончился. Выберите следующий';
return;
}
origConnect(autoPlay);
};
/* Тексты статуса для канала «Формулы» */
const STATUS_MAP={
'Подключение к текущей позиции эфира…':'Загрузка трека…',
'Подключение к эфиру…':'Загрузка трека…',
'Повторное подключение…':'Загрузка трека, ещё попытка…',
'● Эфир синхронизирован':'● Играет',
'Готово к подключению':'Выберите трек и нажмите Play',
'Нажми Play для подключения':'Нажмите Play',
'Не удалось подключить эфир':'Не удалось загрузить трек',
'Буферизация эфира…':'Загрузка…'
};
new MutationObserver(function(){
if(currentChannel!==0)return;
const t=statusEl.textContent;
if(STATUS_MAP[t])statusEl.textContent=STATUS_MAP[t];
}).observe(statusEl,{childList:true,characterData:true,subtree:true});
/* Оформление списка */
const style=document.createElement('style');
style.textContent=
'#razidar-radio-v10 #rzv10-picklist{position:relative;z-index:2;width:min(1080px,94%);margin:0 auto;padding:14px 0 8px}'+
'#razidar-radio-v10 .rzv10-pl-title{margin-bottom:10px;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}'+
'#razidar-radio-v10 .rzv10-pl-box{max-height:320px;overflow-y:auto;padding-right:4px}'+
'#razidar-radio-v10 .rzv10-pick{appearance:none;-webkit-appearance:none;display:flex;align-items:center;gap:10px;width:100%;margin:0 0 5px;padding:10px 12px;border:1px solid rgba(255,255,255,.06);border-radius:11px;background:rgba(255,255,255,.035);color:#d8d1df;font:12px/1.35 Arial,sans-serif;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}'+
'#razidar-radio-v10 .rzv10-pick:hover{background:rgba(139,92,246,.12)}'+
'#razidar-radio-v10 .rzv10-pick.active{border-color:rgba(168,85,247,.55);background:rgba(139,92,246,.22);color:#fff}'+
'#razidar-radio-v10 .rzv10-pick .n{flex:none;width:22px;color:#a78bfa;font-weight:700}'+
'#razidar-radio-v10 .rzv10-pick .t{flex:1;min-width:0;word-break:break-word}'+
'#razidar-radio-v10 .rzv10-pick .d{flex:none;color:#8f849a;font-size:11px}';
root.appendChild(style);
const list=document.createElement('div');
list.id='rzv10-picklist';
const listTitle=document.createElement('div');
listTitle.className='rzv10-pl-title';
listTitle.textContent='Выберите трек';
const box=document.createElement('div');
box.className='rzv10-pl-box';
const items=[];
FORMULA_TRACKS.forEach(function(track,i){
const b=document.createElement('button');
b.type='button';
b.className='rzv10-pick';
const n=document.createElement('span');
n.className='n';
n.textContent=String(i+1);
const t=document.createElement('span');
t.className='t';
t.textContent=track.title;
const d=document.createElement('span');
d.className='d';
d.textContent=formatTime(track.duration);
b.appendChild(n);
b.appendChild(t);
b.appendChild(d);
b.addEventListener('click',function(){
pickTrack(i);
});
box.appendChild(b);
items.push(b);
});
list.appendChild(listTitle);
list.appendChild(box);
const chatEl=root.querySelector('.chat');
chatEl.parentNode.insertBefore(list,chatEl);
function markActive(){
items.forEach(function(b,i){
b.classList.toggle('active',i===pickedIndex);
});
}
function pickTrack(i){
pickedIndex=i;
pickFresh=true;
stopCurrentLoad();
try{
audio.pause();
audio.removeAttribute('src');
audio.load();
}catch(e){}
isPlaying=false;
playBtn.textContent='▶';
playBtn.classList.remove('playing');
progressEl.style.width='0%';
currentEl.textContent='0:00';
displayTrack(i);
markActive();
connectToLive(true);
}
/* Надписи и список зависят от канала */
const liveEl=root.querySelector('.live');
const eyebrowEl=root.querySelector('.eyebrow');
const hintEl=root.querySelector('.hint');
function applyMode(){
const pick=currentChannel===0;
list.style.display=pick?'block':'none';
liveEl.textContent=pick?'● ТРЕКИ':'● LIVE';
eyebrowEl.textContent=pick?'Выбранный трек':'Сейчас в эфире';
hintEl.innerHTML=pick
?'Выбери трек из списка ниже
и нажми Play.'
:'Нажми Play —
и подключись к текущей позиции эфира.';
markActive();
}
const origSwitch=switchChannel;
switchChannel=function(i){
origSwitch(i);
applyMode();
};
/* Начальное состояние */
displayTrack(pickedIndex);
statusEl.textContent='Выберите трек и нажмите Play';
applyMode();
}catch(error){
console.log('Radio pick-mode error:',error);
}