console.log("%c¡Es calidad BaI!", "font-size:25px; font-weight:bold; text-decoration:underline; font-style:italic; text-decoration-line:underline overline;"); function check_news() { var last_t = opcs.last; var items = document.getElementsByClassName("ni"); var dates = document.getElementsByClassName("ni-d"); for (var i = 0; i < items.length; i++) if (parseInt(items[i].dataset.t) > last_t) { items[i].className += " urgent"; dates[i].innerHTML = '
' + dates[i].innerHTML; } else { break; } opcs.last = (Date.now() / 1000) | 0; parse(); } function zeropad(n, w) { var n = String(n); if (n.length >= w) { return n; } else { return (String(0).repeat(w) + n).slice(n.length); } } var lastTime = 0; var refreshInterval; var refreshMaxTime = 10; var refreshTime; var unread = {}; var last_threads = 0; var last_serverTime = 0; var http_request = new XMLHttpRequest(); function loadJSON() { stopCounter("..."); var data_file = "/cgi/api/lastage?time=" + lastTime + "&limit=" + document.getElementById("limit").value; http_request.open("GET", data_file, true); http_request.send(); } function setRead(threadId) { if (threadId in unread) { unread[threadId] = false; updatePostList(last_threads, last_serverTime); } } function updatePostList(threads, serverTime) { if (refreshMaxTime >= 120 && refreshMaxTime <= 270) { refreshMaxTime += 30; } else if (refreshMaxTime >= 60 && refreshMaxTime < 120) { refreshMaxTime += 10; } else if (refreshMaxTime < 60) { refreshMaxTime += 5; } var arrayLength = threads.length; if (!arrayLength) return; divbbs = ""; divib = ""; last_threads = threads; last_serverTime = serverTime; var newposts = 0; var newTitle = "Bienvenido a Internet BBS/IB"; var new_unread = false; var news = []; for (var i = 0; i < arrayLength; i++) { thread = threads[i]; if (thread.bumped >= lastTime) { unread[thread.id] = true; news.push(thread.board_name + ": " + thread.content); new_unread = true; } html = '' + '[' + thread.board_abr + ':' + zeropad(thread.length, 3) + '] ' + thread.content + '' if (unread[thread.id]) { html = '' + html + ""; newposts++; } if (thread.board_type == 1) { divbbs += html; } else { divib += html; } } if (newposts) { newTitle = "(" + newposts + ") " + newTitle; } if (new_unread) { notif( "Bienvenido a Internet BBS/IB", "Hay nuevos mensajes en:\n" + news.join("\n") ); refreshMaxTime = 10; if (document.getElementById("autosound").checked) { document.getElementById("machina").volume = 0.6; document.getElementById("machina").play(); } } document.title = newTitle; window.addEventListener('focus', markRead); document.getElementById("postlistbbs").innerHTML = divbbs; document.getElementById("postlistib").innerHTML = divib; } function markRead() { document.title = bainame; window.removeEventListener('focus', markRead); } function notif(title, msg) { if (Notification.permission === "granted") { var n = new Notification(title, { body: msg, icon: 'https://bienvenidoainternet.org/favicon.ico', }); setTimeout(n.close.bind(n), 5000); } } function counter() { if (refreshTime < 1) { loadJSON(); } else { refreshTime--; document.getElementById("counter").textContent = "(" + (refreshTime + 1) + ")"; } } function startCounter() { refreshTime = refreshMaxTime; counter(); refreshInterval = setInterval(counter, 1000); } function stopCounter(str) { clearInterval(refreshInterval); document.getElementById("counter").textContent = str; } function autoRefresh(e) { if (chk.checked) { if (chk_snd) chk_snd.disabled = false; if (!("Notification" in window)) { console.log("Alerta: Este navegador no soporta notificaciones."); } else { Notification.requestPermission(); } lastTime = Math.floor(Date.now() / 1000); refreshTime = refreshMaxTime; startCounter(); } else { if (chk_snd) { chk_snd.disabled = true; } stopCounter(""); } } http_request.onreadystatechange = function() { if (http_request.readyState == 4) { var jsonObj = JSON.parse(http_request.responseText); if (jsonObj.state == "success") { updatePostList(jsonObj.threads, jsonObj.time); lastTime = jsonObj.time; if (chk.checked) { startCounter(); } } } }; function parse() { localStorage.setItem("home", JSON.stringify(opcs)); } document.addEventListener("DOMContentLoaded", function() { var bainame = "Bienvenido a Internet BBS/IB"; if (localStorage.hasOwnProperty("home")) opcs = JSON.parse(localStorage.getItem("home")); else { opcs = { auto: false, sound: false, last: 0 }; parse(); } check_news(); document.getElementById("autorefresh").addEventListener("click", function(e) { opcs.auto = !opcs.auto; autoRefresh(); parse(); }); document.getElementById("autosound").addEventListener("click", function(e) { opcs.sound = !opcs.sound; parse(); }); chk = document.getElementById("autorefresh"); chk_snd = document.getElementById("autosound"); if (opcs.auto) { chk.checked = true; autoRefresh(); } else { chk.checked = false; } if (opcs.sound) { chk_snd.checked = true; } else { chk_snd.checked = false; } });