function startNewPost(){ var el = document.getElementById("newpostbtn"); el.style="display:none;"; el.setAttribute("state", "1"); document.getElementById("newpost").style = "display: block;"; } function stopNewPost(){ var el = document.getElementById("newpostbtn"); el.style="display:block;"; el.setAttribute("state", "0"); document.getElementById("newpost").style = "display: hidden;"; } function newpost() { var state = document.getElementById("newpostbtn").getAttribute("state"); if(state === "0") { startNewPost(); sessionStorage.setItem("newpostState", true); } else { stopNewPost(); sessionStorage.setItem("newpostState", false); } } function shortURL(actorName, url) { re = /.+\//g; temp = re.exec(url); var output; if(stripTransferProtocol(temp[0]) == stripTransferProtocol(actorName) + "/") { var short = url.replace("https://", ""); short = short.replace("http://", ""); short = short.replace("www.", ""); var re = /^.{3}/g; var u = re.exec(short); re = /\w+$/g; output = re.exec(short); }else{ var short = url.replace("https://", ""); short = short.replace("http://", ""); short = short.replace("www.", ""); var re = /^.{3}/g; var u = re.exec(short); re = /\w+$/g; u = re.exec(short); str = short.replace(/\/+/g, " "); str = str.replace(u, " ").trim(); re = /(\w|[!@#$%^&*<>])+$/; v = re.exec(str); output = "f" + v[0] + "-" + u } return output; } function getBoardId(url) { var re = /\/([^/\n]+)(.+)?/gm; var matches = re.exec(url); return matches[1]; } function convertContent(actorName, content, opid) { var re = /(>>)(https?:\/\/)?(www\.)?.+\/\w+/gm; var match = content.match(re); var newContent = content; if(match) { match.forEach(function(quote, i){ var link = quote.replace('>>', ''); var isOP = ""; if(link == opid) { isOP = " (OP)"; } var q = link; if(document.getElementById(link + "-content") != null) { q = document.getElementById(link + "-content").innerText; q = q.replaceAll('>', '/\>'); q = q.replaceAll('"', ''); q = q.replaceAll("'", ""); } newContent = newContent.replace(quote, '>>' + shortURL(actorName, link) + isOP + ''); }); } re = /^(\s+)?>.+/gm; match = newContent.match(re); if(match) { match.forEach(function(quote, i) { newContent = newContent.replace(quote, '' + quote + ''); }); } return newContent.replaceAll('/\>', '>'); } function convertContentNoLink(actorName, content, opid) { var re = /(>>)(https?:\/\/)?(www\.)?.+\/\w+/gm; var match = content.match(re); var newContent = content; if(match) { match.forEach(function(quote, i){ var link = quote.replace('>>', ''); var isOP = ""; if(link == opid) { isOP = " (OP)"; } var q = link; if(document.getElementById(link + "-content") != null) { q = document.getElementById(link + "-content").innerText; } newContent = newContent.replace(quote, '>>' + shortURL(actorName, link) + isOP); }); } newContent = newContent.replaceAll("'", ""); return newContent.replaceAll('"', ''); } function closeReply() { document.getElementById("reply-box").style.display = "none"; document.getElementById("reply-comment").value = ""; sessionStorage.setItem("element-closed-reply", true); } function closeReport() { document.getElementById("report-box").style.display = "none"; document.getElementById("report-comment").value = ""; sessionStorage.setItem("element-closed-report", true); } function quote(actorName, opid, id) { sessionStorage.setItem("element-closed-reply", false); var box = document.getElementById("reply-box"); var header = document.getElementById("reply-header"); var comment = document.getElementById("reply-comment"); var inReplyTo = document.getElementById("inReplyTo-box"); var w = window.innerWidth / 2 - 200; if(id == "reply") { var h = document.getElementById(id + "-content").offsetTop - 548; } else { var h = document.getElementById(id + "-content").offsetTop - 348; } const boxStyle = "display: block; position: absolute; width: 400px; height: 600px; z-index: 9; top: " + h + "px; left: " + w + "px; padding: 5px;"; box.setAttribute("style", boxStyle); sessionStorage.setItem("element-reply-style", boxStyle); sessionStorage.setItem("reply-top", h); sessionStorage.setItem("reply-left", w); if (inReplyTo.value != opid) comment.value = ""; header.innerText = "Replying to Thread No. " + shortURL(actorName, opid); inReplyTo.value = opid; sessionStorage.setItem("element-reply-actor", actorName); sessionStorage.setItem("element-reply-id", inReplyTo.value); if(id != "reply") comment.value += ">>" + id + "\n"; sessionStorage.setItem("element-reply-comment", comment.value); dragElement(header); } function report(actorName, id) { sessionStorage.setItem("element-closed-report", false); var box = document.getElementById("report-box"); var header = document.getElementById("report-header"); var comment = document.getElementById("report-comment"); var inReplyTo = document.getElementById("report-inReplyTo-box"); var w = window.innerWidth / 2 - 200; var h = document.getElementById(id + "-content").offsetTop - 348; const boxStyle = "display: block; position: absolute; width: 400px; height: 480px; z-index: 9; top: " + h + "px; left: " + w + "px; padding: 5px;"; box.setAttribute("style", boxStyle); sessionStorage.setItem("element-report-style", boxStyle); sessionStorage.setItem("report-top", h); sessionStorage.setItem("report-left", w); header.innerText = "Report Post No. " + shortURL(actorName, id); inReplyTo.value = id; sessionStorage.setItem("element-report-actor", actorName); sessionStorage.setItem("element-report-id", id); dragElement(header); } var pos1, pos2, pos3, pos4; var elmnt; function closeDragElement(e) { // stop moving when mouse button is released: document.onmouseup = null; document.onmousemove = null; sessionStorage.setItem("eventhandler", false); } function elementDrag(e) { e = e || window.event; e.preventDefault(); // calculate the new cursor position: pos1 = pos3 - e.clientX; pos2 = pos4 - e.clientY; pos3 = e.clientX; pos4 = e.clientY; sessionStorage.setItem("pos1", pos1); sessionStorage.setItem("pos2", pos2); sessionStorage.setItem("pos3", pos3); sessionStorage.setItem("pos4", pos4); // set the element's new position: elmnt.parentElement.style.top = (elmnt.parentElement.offsetTop - pos2) + "px"; elmnt.parentElement.style.left = (elmnt.parentElement.offsetLeft - pos1) + "px"; if(elmnt.id.startsWith("report")){ sessionStorage.setItem("report-top", elmnt.parentElement.style.top); sessionStorage.setItem("report-left", elmnt.parentElement.style.left); }else if(elmnt.id.startsWith("reply")){ sessionStorage.setItem("reply-top", elmnt.parentElement.style.top); sessionStorage.setItem("reply-left", elmnt.parentElement.style.left); } } function dragMouseDown(e) { e = e || window.event; e.preventDefault(); // get the mouse cursor position at startup: pos3 = e.clientX; pos4 = e.clientY; sessionStorage.setItem("pos3", pos3); sessionStorage.setItem("pos4", pos4); elmnt = e.currentTarget; // call a function whenever the cursor moves: document.onmouseup = closeDragElement; document.onmousemove = elementDrag; sessionStorage.setItem("eventhandler", true); } function dragElement(elmnt) { elmnt.onmousedown = dragMouseDown; } const stateLoadHandler = function(event){ pos1 = parseInt(sessionStorage.getItem("pos1")); pos2 = parseInt(sessionStorage.getItem("pos2")); pos3 = parseInt(sessionStorage.getItem("pos3")); pos4 = parseInt(sessionStorage.getItem("pos4")); if(sessionStorage.getItem("element-closed-report") === "false"){ var box = document.getElementById("report-box"); var header = document.getElementById("report-header"); var comment = document.getElementById("report-comment"); var inReplyTo = document.getElementById("report-inReplyTo-box"); header.onmousedown = dragMouseDown; inReplyTo.value = parseInt(sessionStorage.getItem("element-report-id")); header.innerText = "Report Post No. " + shortURL(sessionStorage.getItem("element-report-actor"), sessionStorage.getItem("element-report-id")); comment.value = sessionStorage.getItem("element-report-comment"); box.setAttribute("style", sessionStorage.getItem("element-report-style")); box.style.top = sessionStorage.getItem("report-top"); box.style.left = sessionStorage.getItem("report-left"); if(sessionStorage.getItem("eventhandler") === "true"){ elmnt = header; document.onmouseup = closeDragElement; document.onmousemove = elementDrag; }else{ document.onmouseup = null; document.onmousemove = null; } } if(sessionStorage.getItem("element-closed-reply") === "false"){ var box = document.getElementById("reply-box"); var header = document.getElementById("reply-header"); var comment = document.getElementById("reply-comment"); var inReplyTo = document.getElementById("inReplyTo-box"); header.onmousedown = dragMouseDown; inReplyTo.value = parseInt(sessionStorage.getItem("element-reply-id")); header.innerText = "Replying to Thread No. " + shortURL(sessionStorage.getItem("element-reply-actor"), sessionStorage.getItem("element-reply-id")); comment.value = sessionStorage.getItem("element-reply-comment"); pos1 = parseInt(sessionStorage.getItem("pos1")); pos2 = parseInt(sessionStorage.getItem("pos2")); pos3 = parseInt(sessionStorage.getItem("pos3")); pos4 = parseInt(sessionStorage.getItem("pos4")); box.setAttribute("style", sessionStorage.getItem("element-reply-style")); box.style.top = sessionStorage.getItem("reply-top"); box.style.left = sessionStorage.getItem("reply-left"); if(sessionStorage.getItem("eventhandler") === "true"){ elmnt = header; document.onmouseup = closeDragElement; document.onmousemove = elementDrag; }else{ document.onmouseup = null; document.onmousemove = null; } } }; document.addEventListener("DOMContentLoaded", stateLoadHandler, false); function stripTransferProtocol(value){ var re = /(https:\/\/|http:\/\/)?(www.)?/; return value.replace(re, ""); }