document.addEventListener('DOMContentLoaded', function () {
// Smooth scroll for anchor links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
document.querySelector(this.getAttribute('href')).scrollIntoView({
behavior: 'smooth'
});
});
});
// --- Add Song Modal Logic ---
const addSongFab = document.getElementById('add-song-fab');
const modalOverlay = document.getElementById('add-song-modal-overlay');
const modalContainer = document.getElementById('add-song-modal-container');
const closeModalBtn = document.getElementById('close-modal-btn');
const searchResultsContainer = document.getElementById('search-results');
const queueList = document.getElementById('queue-list');
const emptyQueueMessage = document.getElementById('empty-queue-message');
if (addSongFab) {
addSongFab.addEventListener('click', () => {
modalOverlay.classList.add('visible');
});
}
if (closeModalBtn) {
closeModalBtn.addEventListener('click', closeModal);
}
if (modalOverlay) {
modalOverlay.addEventListener('click', (e) => {
if (e.target === modalOverlay) {
closeModal();
}
});
}
function closeModal() {
modalContainer.style.transform = 'translateY(100%)';
modalOverlay.classList.remove('visible');
}
// --- Add Song to Queue Logic ---
searchResultsContainer.addEventListener('click', (e) => {
const resultItem = e.target.closest('.search-result-item');
if (!resultItem) return;
const song = {
title: resultItem.dataset.title,
artist: resultItem.dataset.artist,
albumArt: resultItem.dataset.albumArt,
source: resultItem.dataset.source,
sessionCode: window.currentSessionCode
};
addSongToQueue(song);
});
async function addSongToQueue(song) {
try {
const response = await fetch('add_song.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(song),
});
const result = await response.json();
if (result.status === 'success') {
addSongToDOM(result.data);
closeModal();
} else {
alert(result.message || 'Failed to add song.');
}
} catch (error) {
console.error('Error adding song:', error);
alert('An error occurred. Please try again.');
}
}
function addSongToDOM(song) {
if (emptyQueueMessage) {
emptyQueueMessage.remove();
}
const queueItem = document.createElement('div');
queueItem.className = 'queue-item new-item';
queueItem.innerHTML = `