var songEndpoint = "https://stream.services.nez-cf.net.eu.org:1965/ntv_nowplaying.php"; function fetchSong() { return new Promise((resolve, reject) => { var xhr = new XMLHttpRequest(); xhr.addEventListener("load", function() { if (this.status == 200) resolve(this.responseText); else reject(this); }); xhr.open("GET", songEndpoint); xhr.send(); }); } function spacePad(i, c = " ", a = 32) { var l = 32 - i.length; if (l < 0) l = 0; return i + c.repeat(l); } var scrollIndex = -1; var scrollText = ""; var scrollElement = "null"; var skipTurns = 0; var skipTurnsBegin = 5; function scroller() { if (scrollElement == "null") return; if (skipTurns > 0) return skipTurns--; if (skipTurnsBegin > 0) skipTurnsBegin--; scrollIndex++; if (scrollIndex > scrollText.length) { scrollIndex = -1; skipTurnsBegin = 5; return skipTurns = 5; } if (scrollText.length > 32) scrollElement.innerHTML = spacePad(scrollText.substr(skipTurnsBegin > 0 ? 0 : scrollIndex, 32).replace(/ /g, " ")); else scrollElement.innerHTML = spacePad(scrollText.replace(/ /g, " ")); } async function updateSongs() { var song = await fetchSong(); song = "now playing: " + song; if (scrollText != song) { scrollText = song; scrollIndex = -1; } } document.addEventListener("DOMContentLoaded", function() { scrollElement = document.getElementById("song-display"); setInterval(scroller, 200); updateSongs(); setInterval(updateSongs, 20 * 1000); });