var style_cookie = "weabot_style_ib"; if (localStorage.hasOwnProperty(style_cookie)) { setTheme(localStorage.getItem(style_cookie)); } function setTheme(styletitle) { var css = document.getElementById("css"); if (css) { css.href = "/static/css/" + styletitle.toLowerCase() + ".css"; localStorage.setItem(style_cookie, styletitle); } } /* 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 postClick(num) { var sel = window.getSelection().toString(); if (sel) sel = sel.replace(/^/gm, ">") + "\n"; insert(">>" + num + "\n" + sel); } function insert(text) { var textarea = document.forms.postform.message; if (textarea) { if (textarea.setSelectionRange) { 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 checkhighlight() { var match; if ((match = /#i([0-9]+)/.exec(document.location.toString()))) { if (!document.forms.postform.message.value) insert(">>" + match[1] + "\r\n"); } else if ((match = /#([0-9]+)/.exec(document.location.toString()))) { highlight(match[1]); } } function highlight(post) { var hl = document.getElementsByClassName("reply highlight"); if (hl.length) { hl[0].className = "reply"; } var reply = document.getElementById("p" + post); if (reply) { reply.className = "reply highlight"; var match = /^([^#]*)/.exec(document.location.toString()); document.location = match[1] + "#" + post; } } function expandimg(e) { var imgw = parseInt(e.dataset.w); var imgh = parseInt(e.dataset.h); var pid = e.dataset.id; var cont = document.getElementById('thumb'+pid); var thumb = cont.firstElementChild; if (e.dataset.expanded == 'true') { cont.removeChild(cont.lastElementChild); thumb.removeAttribute('style'); cont.removeAttribute('style'); e.dataset.expanded = ''; if (e.parentNode.parentNode.className != "thread") { var bq = cont.nextElementSibling; bq.style.marginLeft = (thumb.width + 40) + 'px'; } } else { var imgurl = e.href; var format = imgurl.split('.').pop(); var clientw = document.body.clientWidth; if (clientw > 600) { var marginr = 40; } else { var marginr = 15; } var maxw = clientw - thumb.getBoundingClientRect().left - marginr; if (imgw > maxw) { var ratio = maxw / imgw; imgw = maxw; imgh = imgh * ratio; } if (format.toLowerCase() == 'webm' || format.toLowerCase() == 'mp4') { var exp = document.createElement('video'); exp.autoplay = true; exp.loop = true; exp.controls = true; exp.poster = thumb.src; } else { var exp = document.createElement('img'); } exp.className = 'thumb'; exp.alt = pid; exp.src = imgurl; exp.style.maxWidth = imgw + 'px'; exp.style.maxHeight = imgh + 'px'; cont.appendChild(exp); cont.style.display = 'table'; thumb.style.display = 'none'; e.dataset.expanded = 'true'; if (e.parentNode.parentNode.className != "thread") { var bq = cont.nextElementSibling; bq.style.marginLeft = ''; } } } function filePreview(e) { var file = postform.file.files[0]; var inpt = document.getElementById("file"); var prev = document.getElementById("filepreview"); var noimg = document.getElementById("noimage"); if (noimg) noimg = document.getElementById("noimage").parentNode; var read = new FileReader(); read.readAsDataURL(file); read.onload = function() { inpt.style.display = "none"; if (noimg) noimg.style.display = "none"; prev.removeAttribute("style"); var fname = file.name.length < 20 ? file.name : file.name.substr(0, 19) + "…"; if (file.type.startsWith("image")) { prev.insertAdjacentHTML("beforeend", ' ' + fname); } else { prev.insertAdjacentHTML("beforeend", fname); } prev.appendChild(document.createTextNode(" [")); var btn = document.createElement("a"); btn.href = "#"; btn.innerText = "Quitar"; btn.addEventListener("click", function(e) { e.preventDefault(); prev.innerHTML = ""; prev.style.display = "none"; inpt.removeAttribute("style"); if (noimg) noimg.removeAttribute("style"); inpt.value = ""; }); prev.appendChild(btn); prev.appendChild(document.createTextNode("] ")); }; } 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(); addEventListener("submit", saveInputs); } } } function getPassword() { if (weabot.password) return weabot.password; var pass = ""; var char = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?!-_."; for (var i=0; i<10; i++) { pass += char[Math.floor(Math.random() * char.length)]; } weabot.password = pass; localStorage.setItem("weabot", JSON.stringify(weabot)); return pass; } function catSearch() { var filter = this.value.toLowerCase(); var nodes = document.getElementsByTagName("p"); for (var i = 0; i < nodes.length; i++) { if (nodes[i].innerText.toLowerCase().includes(filter)) nodes[i].parentNode.removeAttribute("style"); else nodes[i].parentNode.style.display = "none"; } } function togglePost(e) { if (e.tagName == "DIV") { var post = e.parentElement; } else { var post = e.parentElement.parentElement; } var pid = post.id.slice(1); var typ = post.id.charAt(0); var itm = "hid-" + typ + "-" + document.body.dataset.brd; var hidp = localStorage.getItem(itm); var hid = Array(); if (hidp) hid = hidp.split("!"); if (post.classList.contains("hidden")) { if (hid.includes(pid)) hid.splice(hid.indexOf(pid), 1); } else { if (!hid.includes(pid)) hid.push(pid); } post.classList.toggle("hidden"); localStorage.setItem(itm, hid.join("!")); } document.addEventListener("DOMContentLoaded", function(e) { var board = document.body.dataset.brd; checkhighlight(); if (localStorage.hasOwnProperty("weabot")) { weabot = JSON.parse(localStorage.getItem("weabot")); } else { weabot = { name: null, email: null, password: null }; } var head = document.getElementById("main_nav"); var a = head.getElementsByTagName("a"); for (var i = 0; i < a.length; i++) { if (a[i].getAttribute("href") == "/" + board + "/") { a[i].className = "cur_brd"; break; } } if (document.body.clientWidth < 600) { var navlink = head.getElementsByTagName("a"); var sel = document.createElement("select"); sel.id = head.id + "_sel"; sel.addEventListener("change", function(e){ window.location.href = this.value; }); for (var i=1; i0) { document.getElementById("hid-label").removeAttribute("style"); document.getElementById("hid-num").innerText = j; } document.getElementById("cat-size").addEventListener("click", function(e) { e.preventDefault(); var thumb = cat.getElementsByTagName("img"); if (cat.classList.contains("enlarged")) { for (var i = 0; i < thumb.length; i++) { thumb[i].src = thumb[i].src.replace("/thumb/", "/cat/"); } } else { for (var i = 0; i < thumb.length; i++) { thumb[i].src = thumb[i].src.replace("/cat/", "/thumb/"); } } cat.classList.toggle("enlarged"); this.innerText = (this.innerText == "Pequeño") ? "Grande" : "Pequeño"; }); document.getElementById("cat-srch").addEventListener("keyup", catSearch); document.getElementById("hid-num").addEventListener("click", function(e) { e.preventDefault(); cat.classList.toggle("showhid"); }); } else { window.addEventListener("hashchange", checkhighlight); } }); document.addEventListener("click", function(e) { var cn = e.target.className; if (cn == "num") { e.preventDefault(); postClick(e.target.textContent); return; } if (cn == "expimg") { e.preventDefault(); expandimg(e.target); return; } if (cn == "tt") { e.preventDefault(); togglePost(e.target); return; } }, false); document.addEventListener("dblclick", function(e) { if (e.target.closest(".info")) { e.preventDefault(); togglePost(e.target.closest(".info")); return; } }, false);