function $(selector) { return document.querySelector(selector); } function $$(selector) { return document.querySelectorAll(selector); } if(localStorage["player"]) { var player = JSON.parse(localStorage["player"]); if(player.nickname) { $("#nick").value = player.nickname; } } if(localStorage["customname"]) { $("#customname").value = localStorage["customname"]; } var lastRefreshResponse; function refresh(callback) { try { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if(xhr.readyState == 4) { if(xhr.status == 200) { var response = xhr.responseText; if(response != lastRefreshResponse) { lastRefreshResponse = response; populate(JSON.parse(response).success); } document.body.className = ""; if(typeof callback == 'function') { callback(JSON.parse(response).success) } } else { console.error("Ajax error: " + xhr.status + " " + xhr.responseText) $("#list").innerHTML = ""; document.body.className = "offline"; } } } xhr.open("POST", "/api", true); xhr.send(JSON.stringify({command:"getChannels"})); } catch(e) { console.error(e) } return false; } function populate(list) { var html = ""; if(list.length > 0) { for (var i = 0; i < list.length; i++) { var channel = list[i]; html += "