var style_cookie = "weabot_style_txt";
if (style_cookie && localStorage.hasOwnProperty(style_cookie)) {
set_stylesheet(localStorage.getItem(style_cookie));
}
var hiddenposts = Array();
function set_stylesheet(styletitle) {
var css = document.getElementById("css");
if (css) css.href = "/static/css/txt/" + styletitle.toLowerCase() + ".css";
localStorage.setItem(style_cookie, styletitle);
}
function timeMob(timestamp) {
var time = Math.round(Date.now() / 1000);
var el = time - timestamp;
if (el < 60) return el + "s";
else if (el < 3600) return Math.round(el / 60) + "m";
else if (el < 86400) return Math.round(el / 3600) + "h";
else if (el < 2628000) return Math.round(el / 86400) + "d";
else if (el < 31536000) return Math.round(el / 2628000) + "me";
else return Math.round(el / 31557600) + "a";
}
/* IE/Opera fix, because they need to go learn a book on how to use indexOf with arrays */
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(elt /*, from*/) {
var len = this.length;
var from = Number(arguments[1]) || 0;
from = from < 0 ? Math.ceil(from) : Math.floor(from);
if (from < 0) from += len;
for (; from < len; from++) {
if (from in this && this[from] === elt) return from;
}
return -1;
};
}
function getPassword() {
if (weabot.password) return weabot.password;
var pass = "";
var char =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?!-_.";
while (pass.length < 10) {
pass += char[Math.floor(Math.random() * char.length)];
}
weabot.password = pass;
localStorage.setItem("weabot", JSON.stringify(weabot));
return pass;
}
function saveInputs(e) {
var e = e || window.event;
var form = e.target || e.srcElement;
if (typeof form.fielda !== "undefined") weabot.name = form.fielda.value;
if (typeof form.fielda !== "undefined") weabot.email = form.fieldb.value;
localStorage.setItem("weabot", JSON.stringify(weabot));
}
function setInputs(id) {
if (document.getElementById(id)) {
with (document.getElementById(id)) {
if (typeof fielda !== "undefined" && !fielda.value && weabot.name)
fielda.value = weabot.name;
if (typeof fielda !== "undefined" && !fieldb.value && weabot.email)
fieldb.value = weabot.email;
if (!password.value) password.value = getPassword();
if (typeof preview !== "undefined") {
preview.id = id;
preview.addEventListener("click", previewPost);
}
addEventListener("submit", saveInputs);
}
}
}
// Textboard data
function insert(text) {
var textarea = document.forms.postform.message;
if (textarea) {
if (textarea.createTextRange && textarea.caretPos) {
// IE
var caretPos = textarea.caretPos;
caretPos.text =
caretPos.text.charAt(caretPos.text.length - 1) == " "
? text + " "
: text;
} else if (textarea.setSelectionRange) {
// Firefox
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
textarea.value =
textarea.value.substr(0, start) + text + textarea.value.substr(end);
textarea.setSelectionRange(start + text.length, start + text.length);
} else {
textarea.value += text + " ";
}
textarea.focus();
}
return false;
}
function deletePost(e) {
var ids = e.parentElement.firstChild.href.split("/");
var post = ids.pop();
var realid = ids.pop();
if (confirm("¿Seguro que deseas borrar el mensaje " + post + "?")) {
var script = "/cgi/delete";
document.location =
script +
"?board=" +
board +
"&password=" +
weabot.password +
"&delete=" +
realid;
}
}
function postClick(num) {
var sel = window.getSelection().toString();
if (sel) {
sel = sel.replace(/^/gm, ">") + "\n";
sel = "\n" + sel;
}
insert(">>" + num + sel);
}
function previewPost(e) {
var formid = e.target.id;
var thread = "0";
if (formid.startsWith("postform")) thread = formid.substr(8);
var form = document.getElementById(formid);
var preview = document.getElementById("preview" + thread);
var main = document.getElementById("options");
if (!form || !preview || !form.message.value) return;
if (main) main.style.display = "";
preview.removeAttribute("style");
preview.innerHTML = "<em>Cargando...</em>";
var text =
"message=" + encodeURIComponent(form.message.value) + "&board=" + board;
if (thread) text += "&parentid=" + thread;
var xmlhttp = get_xmlhttp();
xmlhttp.open("POST", "/cgi/preview");
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) preview.innerHTML = xmlhttp.responseText;
};
if (is_ie() || xmlhttp.setRequestHeader)
xmlhttp.setRequestHeader(
"Content-Type",
"application/x-www-form-urlencoded"
);
xmlhttp.send(text);
}
function listSort() {
var s = opcs.sort;
var cont = document.getElementById("content");
var elem = document.getElementsByClassName("row");
var arr = Array.prototype.slice.call(elem);
arr.shift();
if (s == "Normal") {
arr.sort(function(a, b) {
return (
parseInt(a.childNodes[1].textContent) -
parseInt(b.childNodes[1].textContent)
);
});
} else if (s == "Edad") {
arr.sort(function(a, b) {
return (
b.children[1].firstChild.href.split("/")[5] -
a.children[1].firstChild.href.split("/")[5]
);
});
} else if (s == "Largo") {
arr.sort(function(a, b) {
return b.children[2].textContent - a.children[2].textContent;
});
} else if (s == "Rapidez") {
var now = Math.round(Date.now() / 1000);
arr.sort(function(a, b) {
return (
b.children[2].textContent /
(now - b.children[1].firstChild.href.split("/")[5]) -
a.children[2].textContent /
(now - a.children[1].firstChild.href.split("/")[5])
);
});
} else if (s == "Aleatorio") {
arr.sort(function(a, b) {
return 0.5 - Math.random();
});
}
for (var j = 0; j < arr.length; j++) cont.appendChild(arr[j]);
localStorage.setItem("threadlist", JSON.stringify(opcs));
}
function listDisplay() {
var d = opcs.disp;
if (d == "Malla") {
document.getElementById("header").style.display = "none";
document.getElementById("content").className = "grid";
var style = document.createElement("style");
style.id = "labels";
style.type = "text/css";
style.textContent =
'#content .row div.date{display:none}#content.grid div.com:before{content:"("}#content.grid .com:after{content:")"}';
document.head.appendChild(style);
} else if (d == "Lista") {
var style = document.getElementById("labels");
if (style) style.parentNode.removeChild(style);
document.getElementById("header").removeAttribute("style");
document.getElementById("content").className = "list";
}
localStorage.setItem("threadlist", JSON.stringify(opcs));
}
function searchSubjects(e) {
var filter = this.value.toLowerCase();
var nodes = document.getElementsByClassName("thread");
for (i = 0; i < nodes.length; i++) {
if (nodes[i].textContent.toLowerCase().includes(filter))
nodes[i].parentNode.removeAttribute("style");
else nodes[i].parentNode.style.display = "none";
}
}
function get_xmlhttp() {
var xmlhttp;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e1) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e1) {
xmlhttp = null;
}
}
if (!xmlhttp && typeof XMLHttpRequest != "undefined")
xmlhttp = new XMLHttpRequest();
return xmlhttp;
}
function is_ie() {
return document.all && !document.opera;
}
function showpost(post) {
post.children[0].classList.remove("hidden");
post.children[1].removeAttribute("style");
}
function hidepost(post) {
post.children[0].classList.add("hidden");
post.children[1].style.display = "none";
}
function togglepost(e) {
e.preventDefault();
var post = this.parentElement;
var postid = board + this.getElementsByClassName("date")[0].dataset.unix;
if (post.children[1].style.display == "none") {
showpost(post);
if (hiddenposts.includes(postid))
hiddenposts.splice(hiddenposts.indexOf(postid), 1);
} else {
hidepost(post);
if (!hiddenposts.includes(postid)) hiddenposts.push(postid);
}
localStorage.setItem("hiddenposts", hiddenposts.join("!"));
}
function applyTheme() {
var newTheme = document.getElementById("styles").value;
set_stylesheet(newTheme);
}
document.addEventListener("DOMContentLoaded", function() {
if (localStorage.hasOwnProperty("weabot"))
weabot = JSON.parse(localStorage.getItem("weabot"));
else weabot = { name: null, email: null, password: null };
board = document.body.dataset.brd;
var head = document.getElementById("main_nav");
if (head) {
var b = head.getElementsByTagName("a");
for (var i = 0; i < b.length; i++) {
if (b[i].getAttribute("href") == "/" + board + "/") {
b[i].className = "cur_brd";
break;
}
}
}
var dt = document.getElementsByClassName("date");
if (screen.width < 720) {
if (head) {
var b = head.getElementsByTagName("a");
var s = document.createElement("select");
for (var i = 1; i < b.length; i++) {
var o = document.createElement("option");
o.value = b[i].href;
o.textContent = b[i].textContent;
if (b[i].className == "cur_brd") o.defaultSelected = true;
s.appendChild(o);
}
s.addEventListener("change", function(e) {
window.location.href = this.value;
});
head.innerHTML = '<a href="/" target="_top">Bienvenido a Internet</a> | ';
head.appendChild(s);
head.removeAttribute("style");
document.body.className += " fix";
var head2 = document.getElementById("thread_nav");
if (head2) head2.removeChild(head2.childNodes[1]);
}
for (var i = 0; i < dt.length; i++) {
t = dt[i].textContent;
if (t.includes("ID:")) var id = t.split(" ")[1];
else id = "";
dt[i].textContent = "Hace " + timeMob(dt[i].dataset.unix) + " " + id;
}
}
var forms = document.getElementsByTagName("form");
for (var i = 0; i < forms.length; i++) {
if (forms[i].id.startsWith("postform")) setInputs(forms[i].id);
}
var styleSelect = document.getElementById("styles");
if (styleSelect) {
styleSelect.addEventListener("change", applyTheme, false);
styleSelect.value = localStorage.getItem(style_cookie);
}
if (document.body.classList.contains("threads")) {
var srt = document.getElementsByClassName("l_s");
for (var i = 0; i < srt.length; i++) {
srt[i].addEventListener("click", function(e) {
e.preventDefault();
opcs.sort = this.textContent;
listSort();
});
}
var dsp = document.getElementsByClassName("l_d");
for (var i = 0; i < dsp.length; i++) {
dsp[i].addEventListener("click", function(e) {
e.preventDefault();
opcs.disp = this.textContent;
listDisplay();
});
}
document.getElementById("l_sr").addEventListener("keyup", searchSubjects);
if (localStorage.hasOwnProperty("threadlist")) {
opcs = JSON.parse(localStorage.getItem("threadlist"));
listSort();
listDisplay();
} else {
opcs = { sort: "Normal", disp: "Lista" };
localStorage.setItem("threadlist", JSON.stringify(opcs));
}
}
if (localStorage.hasOwnProperty("hiddenposts"))
hiddenposts = localStorage.getItem("hiddenposts").split("!");
for (var i = 0; i < dt.length; i++) {
if (hiddenposts.includes(board + dt[i].dataset.unix)) {
console.log(dt[i].dataset.unix);
hidepost(dt[i].parentElement.parentElement);
}
dt[i].parentElement.addEventListener("dblclick", togglepost);
}
});
document.addEventListener(
"click",
function(e) {
var txt = e.target.textContent;
if (e.target.className == "num") {
e.preventDefault();
postClick(txt);
return;
}
if (txt == "del") {
e.preventDefault();
deletePost(e.target);
return;
}
},
false
);