<script>
(function() {
'use strict';
let currentAudio = null;
let currentGroup = null;
function setPlayingState(group, isPlaying) {
var playBtn = group.querySelector('.sound-play');
var stopBtn = group.querySelector('.sound-stop');
if (isPlaying) {
if (playBtn) {
playBtn.style.opacity = '0';
playBtn.style.pointerEvents = 'none';
}
if (stopBtn) {
stopBtn.style.opacity = '1';
stopBtn.style.pointerEvents = 'auto';
}
} else {
if (playBtn) {
playBtn.style.opacity = '1';
playBtn.style.pointerEvents = 'auto';
}
if (stopBtn) {
stopBtn.style.opacity = '0';
stopBtn.style.pointerEvents = 'none';
}
}
}
function stopCurrent() {
if (currentAudio) {
currentAudio.pause();
currentAudio.currentTime = 0;
currentAudio = null;
}
if (currentGroup) {
setPlayingState(currentGroup, false);
currentGroup = null;
}
}
function initGroup(group) {
var href = group.getAttribute('href');
if (!href) return;
var playBtn = group.querySelector('.sound-play');
var stopBtn = group.querySelector('.sound-stop');
if (!playBtn || !stopBtn) return;
stopBtn.style.opacity = '0';
stopBtn.style.pointerEvents = 'none';
playBtn.addEventListener('click', function(e) {
e.preventDefault();
e.stopPropagation();
if (currentGroup === group && currentAudio && !currentAudio.paused) {
return;
}
stopCurrent();
currentAudio = new Audio(href);
currentGroup = group;
currentAudio.addEventListener('ended', function() {
setPlayingState(group, false);
currentAudio = null;
currentGroup = null;
});
currentAudio.play().catch(function(err) {
console.log('Audio play error:', err);
setPlayingState(group, false);
currentAudio = null;
currentGroup = null;
});
setPlayingState(group, true);
});
stopBtn.addEventListener('click', function(e) {
e.preventDefault();
e.stopPropagation();
if (currentGroup === group) {
stopCurrent();
}
});
}
function init() {
var groups = document.querySelectorAll('a.tn-group');
groups.forEach(function(group) {
if (group.querySelector('.sound-play') && group.querySelector('.sound-stop')) {
initGroup(group);
}
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();
</script>