4chan/js/mod.js
2025-04-17 14:46:47 -05:00

2 lines
No EOL
39 KiB
JavaScript

!function(){var e={isCatalog:!1,colours:{},posterids:{},nextChunkIndex:0,nextChunk:null,chunkSize:100,sameIDActive:!1,parserEventBound:!1,autoReloadCatInterval:null,autoReloadCatDelay:3e4,samePostersMap:{},xhrs:{},reportsSubDomain:"reports",teamSubDomain:"team",flags:[]};e.bin2hex=function(e){var t,n,a,o;for(a="",n=e.length,t=0;t<n;++t)a+=((o=e.charCodeAt(t))>>4).toString(16),a+=(15&o).toString(16);return a},e.getFileMD5FromPid=function(t){var n,a;return!!(n=$.id("f"+t))&&(!!(n=$.qs("img[data-md5]",n))&&(a=window.atob(n.getAttribute("data-md5")),e.bin2hex(a)))},e.onGetMD5Click=function(t){var n,a=t.getAttribute("data-id");!1===(n=e.getFileMD5FromPid(a))?alert("Post or file not found"):prompt("",n)},e.apiUrlFilter=function(e){return e+"?"+Math.round(Date.now()/1e3/3)},e.openDeletePrompt=function(t){var n,a;n='<div class="extPanel reply"><div class="panelHeader">Delete Post No.'+(t=t.getAttribute("data-id"))+'<span class="panelCtrl"><img alt="Close" title="Close" class="pointer" data-cmd="close-delete-prompt" src="'+Main.icons.cross+'"></a></span></div><span id="delete-prompt-inner"><input type="button" value="Delete Post" tabindex="-1" data-cmd="delete-post" data-id="'+t+'"> <input type="button" value="Delete Image Only" data-cmd="delete-image" data-id="'+t+'">',$.id((e.isCatalog?"thread-":"t")+t)&&!window.thread_archived&&(n+=' <input type="button" value="Archive Thread" data-cmd="force-archive" data-id="'+t+'">'),window.thread_archived||e.isCatalog||(n+='<br>[<input type="checkbox" id="delete-all-by-ip"><label for="delete-all-by-ip">Delete all by IP?</label>]'),n+="</span></div>",(a=document.createElement("div")).className="UIPanel",a.id="delete-prompt",a.innerHTML=n,document.addEventListener("keydown",e.onKeyDown,!1),a.addEventListener("click",e.closeDeletePrompt,!1),document.body.appendChild(a),$.id("delete-prompt-inner").firstElementChild.focus()},e.addPosterIds=function(e,t,n){var a,o,i,r,s,d;if(a=n?$.id("pim"+e):$.id("pi"+e),!window.user_ids||!(i=$.cls("posteruid",a)[0])){if(i=$.el("span"),o=$.cls("nameBlock",a)[0],(r=$.cls("name",o)[0]).classList.contains("capcode"))return;o.insertBefore(i,r.nextSibling),n||o.insertBefore(document.createTextNode(" "),r.nextSibling)}i.innerHTML='(ID: <span class="hand" title="Highlight posts by this ID">'+t+"</span>)",i.className="posteruid id_"+t,s=i.firstElementChild,IDColor.apply(s),i.addEventListener("click",window.idClick,!1),window.currentHighlighted&&-1!=i.className.indexOf("id_"+window.currentHighlighted)&&((d=i.parentNode.parentNode.parentNode).className="highlight "+d.className)},e.onSamePostersLoaded=function(){var t,n,a,o,i;if((200==this.status||304==this.status)&&(t=JSON.parse(this.responseText))){i=Main.hasMobileLayout,IDColor.enabled||(o=window.user_ids,window.user_ids=!0,IDColor.init(),window.user_ids=o),e.sameIDActive||(e.sameIDActive=!0);for(a in t)e.samePostersMap[a]||(n=t[a],e.samePostersMap[a]=!0,e.addPosterIds(a,n,i))}},e.loadSamePosters=function(t){var n,a;e.parserEventBound||document.addEventListener("4chanParsingDone",e.onParsingDone,!1),n="https://sys."+$L.d(Main.board)+"/"+Main.board+"/admin?admin=adminext&thread="+Main.tid,t&&(n+="&from="+t),(a=new XMLHttpRequest).open("GET",n),a.withCredentials=!0,a.onload=e.onSamePostersLoaded,a.send(null)},e.closeDeletePrompt=function(t){var n;t&&"delete-prompt"!=t.target.id||(n=$.id("delete-prompt"))&&(document.removeEventListener("keydown",e.onKeyDown,!1),n.removeEventListener("click",e.closeDeletePrompt,!1),document.body.removeChild(n))},e.checkDeletedPosts=function(){var e,t;Main.tid&&(e="//a.4cdn.org/"+Main.board+"/res/"+Main.tid+".json",(t=new XMLHttpRequest).open("GET",e),t.onload=function(){200!=this.status&&304!=this.status||ThreadUpdater.markDeletedReplies(Parser.parseThreadJSON(this.responseText))},t.send(null))},e.get_random_light_color=function(){for(var e="ABCDE".split(""),t="#",n=0;n<3;n++)t+=e[Math.floor(Math.random()*e.length)];return t},e.deletePost=function(t,n){var a,o,i,r,s,d,l,p,c,m;a=t.getAttribute("data-id"),c=!e.isCatalog&&$.id("t"+a),i=new FormData,s="https://sys."+$L.d(Main.board)+"/"+Main.board,window.thread_archived?d="arcdel":(d="usrdel",l=!e.isCatalog&&$.id("delete-all-by-ip").checked),l&&(d="admin.php",i.append("admin","delall"),i.append("id",a)),s+=l?"/admin":"/post",n&&("Delete Image No.",i.append("onlyimgdel","on")),i.append(a,"delete"),i.append("mode",d),i.append("pwd","janitorise"),(p=$.id("delete-prompt-inner")).textContent="Deleting...",(o=new XMLHttpRequest).open("POST",s),o.withCredentials=!0,o.onload=function(){var o;if(t.src=Main.icons.cross,200==this.status)if(!l&&-1!=this.responseText.indexOf("Updating")||l&&-1!=this.responseText.indexOf("deleted")){if(e.isCatalog)(r=$.id("thread-"+a))&&$.addClass(r,"disabled");else if(n)(r=$.id("f"+a)).innerHTML='<span class="fileThumb"><img alt="File deleted." src="//s.4cdn.org/image/filedeleted'+(c?"":"-res")+'.gif"></span>',l&&((o=document.createElement("span")).innerHTML='<br><br><strong style="font-color: red;">(YOU HAVE DELETED ALL IMAGES BY THIS IP)</strong>',(r=$.id("m"+a)).appendChild(o));else{if(a==Main.tid)return void(location.href="//boards."+$L.d(Main.board)+"/"+Main.board+"/");l?((o=document.createElement("span")).innerHTML='<br><br><strong style="font-color: red;">(YOU HAVE DELETED ALL POSTS BY THIS IP)</strong>',(r=$.id("m"+a)).appendChild(o),e.checkDeletedPosts()):c?((r=c.parentNode).removeChild(c.nextSibling),r.removeChild(c)):(r=$.id("pc"+a)).parentNode.removeChild(r)}e.closeDeletePrompt()}else(m=this.responseText.match(/"errmsg"[^>]*>(.*?)<\/span/))?p.textContent=m[1]:p.textContent="Error: Something went wrong.";else p.textContent="Error: Wrong status while deleting No."+a+" (Status: "+this.status+")."},o.onerror=function(){p.textContent="Error: Error while deleting No."+a+" (Status: "+this.status+")."},o.send(i)},e.forceArchive=function(t){var n,a,o,i,r,s;n=t.getAttribute("data-id"),o=new FormData,i="https://sys."+$L.d(Main.board)+"/"+Main.board+"/post",o.append("id",n),o.append("mode","forcearchive"),(r=$.id("delete-prompt-inner")).textContent="Archiving...",(a=new XMLHttpRequest).open("POST",i),a.withCredentials=!0,a.onload=function(){var a;t.src&&(t.src=Main.icons.cross),200==this.status?-1!=this.responseText.indexOf("Updating")?(e.isCatalog&&(a=$.id("thread-"+n))&&$.addClass(a,"disabled"),e.closeDeletePrompt()):(s=this.responseText.match(/"errmsg"[^>]*>(.*?)<\/span/))?r.textContent=s[1]:r.textContent="Error: Something went wrong.":r.textContent="Error: Wrong status while archiving No."+n+" (Status: "+this.status+")."},a.onerror=function(){r.textContent="Error: Error while archiving No."+n+" (Status: "+this.status+")."},a.send(o)},e.openBanWindow=function(e){var t;t=e.getAttribute("data-id"),window.open("https://sys."+$L.d(Main.board)+"/"+Main.board+"/admin?mode=admin&admin=ban&id="+t,"_blank","scrollBars=yes,resizable=no,toolbar=no,menubar=no,location=no,directories=no,width=400,height=470")},e.openBanFrame=function(t){var n;this.banReqCnt&&this.closeBanFrame(),n=t.getAttribute("data-id"),this.banReqCnt=document.createElement("div"),this.banReqCnt.id="banReq",this.banReqCnt.className="extPanel reply",this.banReqCnt.setAttribute("data-trackpos","banReq-position"),Config["banReq-position"]?this.banReqCnt.style.cssText=Config["banReq-position"]:(this.banReqCnt.style.right="0px",this.banReqCnt.style.top="50px"),this.banReqCnt.innerHTML='<div id="banReqHeader" class="drag postblock">Ban No.'+n+'<img alt="X" src="'+Main.icons.cross+'" id="banReqClose" class="extButton" title="Close Window"></div><iframe src="https://sys.'+$L.d(Main.board)+"/"+Main.board+"/admin?mode=admin&admin=ban&id="+n+'&noheader=true" width="400" height="470" frameborder="0"></iframe>',document.body.appendChild(this.banReqCnt),window.addEventListener("message",e.onMessage,!1),document.addEventListener("keydown",e.onKeyDown,!1),$.id("banReqClose").addEventListener("click",e.closeBanFrame,!1),Draggable.set($.id("banReqHeader"))},e.closeBanFrame=function(){window.removeEventListener("message",e.onMessage,!1),document.removeEventListener("keydown",e.onKeyDown,!1),Draggable.unset($.id("banReqHeader")),$.id("banReqClose").removeEventListener("click",e.closeBanFrame,!1),document.body.removeChild(e.banReqCnt),e.banReqCnt=null},e.processMessage=function(e){return e?{cmd:(e=e.split("-"))[0],type:e[1],id:e.slice(2).join("-")}:{}},e.onKeyDown=function(t){27!=t.keyCode||t.ctrlKey||t.altKey||t.shiftKey||t.metaKey||(e.banReqCnt&&e.closeBanFrame(),e.threadOptsCnt&&e.closeThreadOptionsFrame(),$.id("delete-prompt")&&e.closeDeletePrompt())},e.onCatalogKeyDown=function(t){82==t.keyCode&&t.shiftKey&&e.initCatAutoReload()},e.onMessage=function(t){var n;t.origin==="https://sys."+$L.d(Main.board)&&"ban"===(n=e.processMessage(t.data)).type&&("done"!==n.cmd&&"cancel"!==n.cmd||e.closeBanFrame())},e.initCatAutoReload=function(t){var n;if(n=sessionStorage.getItem("4chan-c-ar"))t?(window.scrollTo(0,+n),e.toggleCatAutoReload(!0)):e.toggleCatAutoReload(!1);else{if(t)return;e.toggleCatAutoReload(!0)}},e.toggleCatAutoReload=function(t){t?(sessionStorage.setItem("4chan-c-ar",document.documentElement.scrollTop),e.autoReloadCatInterval=setInterval(e.autoRefreshWindow,e.autoReloadCatDelay),$.addClass($.id("refresh-btn"),"active-btn")):(sessionStorage.removeItem("4chan-c-ar"),clearInterval(e.autoReloadCatInterval),$.removeClass($.id("refresh-btn"),"active-btn"))},e.autoRefreshWindow=function(){var e=$.id("ctrl");document.documentElement.scrollTop<=e.offsetTop+e.offsetHeight&&(sessionStorage.setItem("4chan-c-ar",document.documentElement.scrollTop),location.href=location.href)},e.openThreadOptions=function(e){var t=e.getAttribute("data-id");window.open("https://sys."+$L.d(Main.board)+"/"+Main.board+"/admin?mode=admin&admin=opt&id="+t,"_blank","scrollBars=yes,resizable=no,toolbar=no,menubar=no,location=no,directories=no,width=400,height=290")},e.openThreadOptionsFrame=function(t){var n;this.threadOptsCnt&&this.closeThreadOptionsFrame(),n=t.getAttribute("data-id"),this.threadOptsCnt=document.createElement("div"),this.threadOptsCnt.id="threadOpts",this.threadOptsCnt.className="extPanel reply",this.threadOptsCnt.setAttribute("data-trackpos","threadOpts-position"),Config["threadOpts-position"]?this.threadOptsCnt.style.cssText=Config["threadOpts-position"]:(this.threadOptsCnt.style.right="0px",this.threadOptsCnt.style.top="50px"),this.threadOptsCnt.innerHTML='<div id="threadOptsHeader" class="drag postblock">Thread Options No.'+n+'<img alt="X" src="'+Main.icons.cross+'" id="threadOptsClose" class="extButton" title="Close Window"></div><iframe src="https://sys.'+$L.d(Main.board)+"/"+Main.board+"/admin?mode=admin&admin=opt&id="+n+'&noheader=true" width="400" height="175" frameborder="0"></iframe>',document.body.appendChild(this.threadOptsCnt),window.addEventListener("message",e.onThreadOptsDone,!1),document.addEventListener("keydown",e.onKeyDown,!1),$.id("threadOptsClose").addEventListener("click",e.closeThreadOptionsFrame,!1),Draggable.set($.id("threadOptsHeader"))},e.closeThreadOptionsFrame=function(){window.removeEventListener("message",e.onThreadOptsDone,!1),document.removeEventListener("keydown",e.onKeyDown,!1),Draggable.unset($.id("threadOptsHeader")),$.id("threadOptsClose").removeEventListener("click",e.closeThreadOptionsFrame,!1),document.body.removeChild(e.threadOptsCnt),e.threadOptsCnt=null},e.onThreadOptsDone=function(t){e.threadOptsCnt&&t.origin==="https://sys."+$L.d(Main.board)&&"done-threadopt"===t.data&&e.closeThreadOptionsFrame()},e.setFileSpoiler=function(t){var n,a,o,i;a=t.getAttribute("data-id"),o=t.getAttribute("data-flag"),a&&(i=$.id("f"+a),o||(o=$.cls("imgspoiler",i.parentNode)[0]?0:1),i&&!i.hasAttribute("data-processing")&&((n=new XMLHttpRequest).open("GET","https://sys."+$L.d(Main.board)+"/"+Main.board+"/admin.php?admin=spoiler&pid="+a+"&flag="+o,!0),n.withCredentials=!0,n.onload=e.onFileSpoilerLoad,n.onerror=e.onFileSpoilerError,n._pid=+a,n._flag=+o,Feedback.notify("Processing...",null),i.setAttribute("data-processing","1"),n.send(null)))},e.onFileSpoilerLoad=function(){var e,t;Feedback.hideMessage(),"1"===this.responseText?(e=$.id("f"+this._pid))&&(e.removeAttribute("data-processing"),(e=$.cls("fileThumb",e)[0])&&(this._flag?($.addClass(e,"imgspoiler"),(t=e.previousElementSibling).setAttribute("title",t.firstElementChild.textContent),Config.revealSpoilers||((e=$.tag("img",e)[0]).style.width=e.style.height="100px",e.src="//s.4cdn.org/image/spoiler-"+Main.board+".png")):(Config.revealSpoilers||Parser.revealImageSpoiler(e),$.removeClass(e,"imgspoiler")))):"-1"===this.responseText?Feedback.error("You are not logged in"):Feedback.error("Couldn't set spoiler flag for post No."+this._pid)},e.onFileSpoilerError=function(){var e;(e=$.id("f"+this._pid))&&(e.removeAttribute("data-processing"),Feedback.error("Couldn't update the spoiler flag for post No."+this.pid))};var t={};t.exec=function(t){var n,a;UA.isOpera&&"string"==typeof(a=document.getSelection())||(a=window.getSelection().toString()),a?window.open("https://"+e.teamSubDomain+'.4chan.org/search#{"comment":"'+a.replace(/[\r\n]+/g," ")+'"}'):(n=t.getAttribute("data-id"),window.open("https://team.4chan.org/search?action=from_pid&board="+Main.board+"&pid="+n))},t.prompt=function(t,n){var a,o,i;a=$.id("pi"+n),o=$.cls("postMenuBtn",a)[0],(i=document.createElement("a")).href="https://"+e.teamSubDomain+'.4chan.org/search#{"ip":"'+t+'"}',i.setAttribute("target","_blank"),i.className="post-ip",i.textContent=t,a.insertBefore(i,o)};var n={cacheTTL:6e4,autoRefreshDelay:12e4,autoRefreshTimeout:null};n.initVisibilityAPI=function(){this.hidden="hidden",this.visibilitychange="visibilitychange","undefined"==typeof document.hidden&&("mozHidden"in document?(this.hidden="mozHidden",this.visibilitychange="mozvisibilitychange"):"webkitHidden"in document?(this.hidden="webkitHidden",this.visibilitychange="webkitvisibilitychange"):"msHidden"in document&&(this.hidden="msHidden",this.visibilitychange="msvisibilitychange")),document.addEventListener(this.visibilitychange,this.onVisibilityChange,!1)},e.initIconsCatalog=function(){var e,t,n;if(Main.icons={up:"arrow_up.png",down:"arrow_down.png",right:"arrow_right.png",download:"arrow_down2.png",refresh:"refresh.png",cross:"cross.png",gis:"gis.png",iqdb:"iqdb.png",minus:"post_expand_minus.png",plus:"post_expand_plus.png",rotate:"post_expand_rotate.gif",quote:"quote.png",report:"report.png",notwatched:"watch_thread_off.png",watched:"watch_thread_on.png",help:"question.png"},t={yotsuba_new:"futaba/",futaba_new:"futaba/",yotsuba_b_new:"burichan/",burichan_new:"burichan/",tomorrow:"tomorrow/",photon:"photon/"},n="//s.4cdn.org/image/",window.devicePixelRatio>=2)for(e in Main.icons)Main.icons[e]=Main.icons[e].replace(".","@2x.");n+="buttons/"+t[Main.stylesheet];for(e in Main.icons)Main.icons[e]=n+Main.icons[e]},n.init=function(){var t,a;n.initVisibilityAPI(),(t=document.createElement("div")).className="extPanel reply",t.id="adminToolbox",t.setAttribute("data-trackpos","AT-position"),Config["AT-position"]?t.style.cssText=Config["AT-position"]:(t.style.right="10px",t.style.top="380px"),t.style.position=Config.fixedAdminToolbox?"fixed":"",a='<div class="drag" id="atHeader">Moderator Tools<img alt="Refresh" title="Refresh" src="'+Main.icons.refresh+'" id="atRefresh" data-cmd="at-refresh" class="pointer right"></div><h4><a href="https://'+e.reportsSubDomain+'.4chan.org/" target="_blank">Reports</a>: <span title="Total" id="at-total">?</span> (<span title="Illegal" id="at-illegal">?</span>)</h4><h4><a href="https://'+e.reportsSubDomain+'.4chan.org/?action=ban_requests" target="_blank">Ban Requests</a>: <span id="at-banreqs">?</span> (<span title="Illegal" id="at-illegal-br">?</span>)</h4><h4><a href="https://'+e.teamSubDomain+'.4chan.org/appeals" target="_blank">Appeals</a>: <span id="at-appeals">?</span> (<span title="4chan Pass Users" id="at-prio-appeals">?</span>)</h4><h4 id="at-msg-cnt"><a data-cmd="at-msg" href="https://'+e.reportsSubDomain+'.4chan.org/?action=staffmessages" target="_blank">Messages</a>: <span id="at-msg">?</span></h4>',Main.tid&&(a+='<hr><h4><a href="javascript:void(0);" data-cmd="poster-id">Same Poster ID</a></h4>'),t.innerHTML=a,document.body.appendChild(t),n.refreshReportCount(),Draggable.set($.id("atHeader"))},n.onVisibilityChange=function(){var e;e=n,document[n.hidden]?(clearInterval(e.autoRefreshTimeout),e.autoRefreshTimeout=null):(e.refreshReportCount(),e.autoRefreshTimeout=setInterval(e.refreshReportCount,e.autoRefreshDelay))},n.refreshReportCount=function(t){var a,o,i;if(!0!==t&&(o=localStorage.getItem("4chan-cache-rc"))&&(o=JSON.parse(o)).ts>Date.now()-n.cacheTTL)return $.id("at-total").textContent=o.data[0],$.id("at-illegal").textContent=o.data[1],$.id("at-banreqs").textContent=o.data[2],$.id("at-appeals").textContent=o.data[3],$.id("at-illegal-br").textContent=o.data[4]||0,$.id("at-prio-appeals").textContent=o.data[5]||0,$.id("at-msg-cnt").style.display=o.data[6]?"block":"",void($.id("at-msg").textContent=o.data[6]||0);(a=new XMLHttpRequest).open("GET","https://"+e.reportsSubDomain+".4chan.org/H429f6uIsUqU.php",!0),a.withCredentials=!0,a.onload=function(){var e,t,n;if(200==this.status){try{t=JSON.parse(this.responseText)}catch(a){return void console.log(a)}if("success"!==t.status)return void console.log(t.message);n=t.data,i=n.msg||0,$.id("at-msg-cnt").style.display=i?"block":"",$.id("at-msg").textContent=i,$.id("at-total").textContent=n.total,$.id("at-illegal").textContent=n.illegal,$.id("at-banreqs").textContent=n.banreqs,$.id("at-illegal-br").textContent=n.illegal_banreqs,$.id("at-appeals").textContent=n.appeals,$.id("at-prio-appeals").textContent=n.prio_appeals,e={ts:Date.now(),data:[n.total,n.illegal,n.banreqs,n.appeals,n.illegal_banreqs,n.prio_appeals,n.msg]},e=JSON.stringify(e),localStorage.setItem("4chan-cache-rc",e),document.dispatchEvent(new CustomEvent("4chanATUpdated"))}else this.onerror()},a.onerror=function(){console.log("Error while refreshing the report count (Status: "+this.status+").")},a.onloadend=function(){$.id("atRefresh").src=Main.icons.refresh},$.id("atRefresh").src=Main.icons.rotate,a.send(null)},n.resetMsgCount=function(){var e;$.id("at-msg").textContent=0,(e=localStorage.getItem("4chan-cache-rc"))&&((e=JSON.parse(e)).data[6]=0,e=JSON.stringify(e),localStorage.setItem("4chan-cache-rc",e))},e.onClick=function(a){var o,i;if((o=a.target)!=document&&(i=o.getAttribute("data-cmd")))switch(i){case"at-refresh":n.refreshReportCount(!0);break;case"delete-post":case"delete-image":e.deletePost(o,"delete-image"===i);break;case"force-archive":e.forceArchive(o);break;case"open-delete-prompt":e.openDeletePrompt(o);break;case"close-delete-prompt":e.closeDeletePrompt();break;case"at-msg":n.resetMsgCount();break;case"toggle-file-spoiler":e.setFileSpoiler(o);break;case"prompt-spoiler":confirm("Toggle spoiler?")&&e.setFileSpoiler(o);break;case"thread-options":Config.inlinePopups?e.openThreadOptionsFrame(o):e.openThreadOptions(o);break;case"multi":a.preventDefault(),t.exec(o);break;case"get-md5":e.onGetMD5Click(o);break;case"html-toggle":e.onHTMLToggle(o);break;case"preview-html":a.preventDefault(),e.onPreviewHTMLClick(o);break;case"close-html-preview":e.closeHTMLPreview();break;case"poster-id":e.loadSamePosters();break;case"ban":Config.inlinePopups?e.openBanFrame(o):e.openBanWindow(o)}},e.onScroll=function(){for(var t;e.nextChunk.offsetTop<document.documentElement.clientHeight+window.scrollY;){if((t=e.nextChunkIndex+e.chunkSize)>=e.postCount)return e.parseRange(e.nextChunkIndex,e.postCount),window.removeEventListener("scroll",e.onScroll,!1),!1;e.parseRange(e.nextChunkIndex,t)}return!0},e.parseRange=function(t,n){var a,o,i;for(i=document.getElementById("t"+Main.tid).getElementsByClassName("postInfo"),a=t;a<n&&(o=i[a]);++a)e.parsePost(o);e.nextChunkIndex=a,e.nextChunk=i[a]},e.onParsingDone=function(t){var n,a,o,i,r;if(t?(a=t.detail.threadId,o=t.detail.offset,i=t.detail.limit,r=document.getElementById("t"+a).getElementsByClassName("postInfo"),e.sameIDActive&&e.loadSamePosters(r[o].id.slice(2))):(o=0,i=(r=document.getElementsByClassName("postInfo")).length),Config.useIconButtons)for(n=o;n<i;++n)e.parsePost(r[n])},e.onPostMenuReady=function(e){var t,n,a,o,i;a=e.detail.postId,o=e.detail.node,window.thread_archived&&$.id("f"+a)&&((t=document.createElement("li")).className="dd-admin",(n=document.createElement("a")).href="#",n.setAttribute("data-cmd","get-md5"),n.setAttribute("data-id",a),n.textContent="File MD5",t.appendChild(n),o.appendChild(t)),window.spoilers&&(n=$.id("fT"+a))&&(i=$.cls("imgspoiler",n.parentNode)[0]?0:1,(t=document.createElement("li")).className="dd-admin",(n=document.createElement("a")).setAttribute("data-cmd","toggle-file-spoiler"),n.setAttribute("data-id",a),n.setAttribute("data-flag",i),n.textContent=(i?"Set":"Unset")+" Spoiler",t.appendChild(n),o.appendChild(t)),Config.useIconButtons&&!Main.hasMobileLayout||((t=document.createElement("li")).className="dd-admin",(n=document.createElement("a")).setAttribute("data-cmd","open-delete-prompt"),n.setAttribute("data-id",a),n.textContent="Delete",t.appendChild(n),o.appendChild(t),window.thread_archived||((t=document.createElement("li")).className="dd-admin",(n=document.createElement("a")).setAttribute("data-cmd","ban"),n.setAttribute("data-id",a),n.textContent="Ban",t.appendChild(n),o.appendChild(t),(t=document.createElement("li")).className="dd-admin",(n=document.createElement("a")).setAttribute("data-cmd","multi"),n.setAttribute("data-id",a),n.textContent="Search",t.appendChild(n),o.appendChild(t),e.detail.isOP&&((t=document.createElement("li")).className="dd-admin",(n=document.createElement("a")).setAttribute("data-cmd","thread-options"),n.setAttribute("data-id",a),n.textContent="Thread options",t.appendChild(n),o.appendChild(t))))},e.parsePost=function(t){var n,a,o,i;a='<img class="extButton" alt="X" data-cmd="open-delete-prompt" data-id="'+(n=t.id.slice(2))+'" src="'+Main.icons.cross+'" title="Delete">',window.spoilers&&(el=$.id("fT"+n))&&(a+='<img class="extButton" alt="S" data-cmd="prompt-spoiler" data-id="'+n+'" src="'+e.icons.spoiler+'" title="Toggle Spoiler">'),window.thread_archived||(a+='<img class="extButton" alt="M" data-cmd="multi" data-id="'+n+'" src="'+e.icons.multi+'" title="Display posts by this IP"><img class="extButton" alt="B" data-cmd="ban" data-id="'+n+'" src="'+e.icons.ban+'" title="Ban">',$.id("t"+n)&&(a+='<img class="extButton" alt="&gt;" data-cmd="thread-options" data-id="'+n+'" src="'+e.icons.arrow_right+'" title="Thread Options">')),(o=document.createElement("div")).className="extControls",o.innerHTML=a,i=t.getElementsByClassName("postMenuBtn")[0],t.insertBefore(o,i)},e.displayJCount=function(e,t,n,a){var o;$.addClass(e,"j-newposts"),$.addClass(t,"j-newposts"),e.setAttribute("data-no",n),t.setAttribute("data-no",n),e.textContent=t.textContent="j +"+a,o=a+" new post"+(a>1?"s":""),Main.addTooltip(e,o,"j-tooltip"),Main.addTooltip(t,o,"j-tooltip-bot")},e.refreshJCount=function(){var t,n,a,o;n=$.id("j-link"),a=$.id("j-link-bot"),n&&a&&(n=n.firstElementChild,a=a.firstElementChild,(t=localStorage.getItem("4chan-j-count"))&&(t=JSON.parse(t)),!t||Date.now()-t.time>=1e4?((o=new XMLHttpRequest).open("GET","https://sys.4chan.org/j/1mcQTXbjW5WO.php?&"+Date.now()),o.withCredentials=!0,o.onloadend=function(){var o,i,r;200==this.status||304==this.status?(o=JSON.parse(this.responseText),t&&"j"!=Main.board?o.no>t.no&&(r=o.no-t.no,e.displayJCount(n,a,o.no,r),i={time:Date.now(),no:t.no,delta:r}):i={time:Date.now(),no:o.no},i&&localStorage.setItem("4chan-j-count",JSON.stringify(i))):console.log("Error: Could not load /j/ post count (Status: "+this.status+").")},o.send(null)):t.delta&&e.displayJCount(n,a,t.no,t.delta))},e.clearJCount=function(){var e,t,n,a;n=$.id("j-tooltip"),a=$.id("j-tooltip-bot"),n&&(t=this.getAttribute("data-no"),e={time:Date.now(),no:t},localStorage.setItem("4chan-j-count",JSON.stringify(e)),n.parentNode.removeChild(n),a.parentNode.removeChild(a),setTimeout(function(){var e=$.cls("j-newposts");e[0]&&(e[0].textContent="j",$.removeClass(e[0],"j-newposts"),e[0].textContent="j",$.removeClass(e[0],"j-newposts"))},10))},e.hasFlag=function(e){return-1!=this.flags.indexOf(e)},e.icons={multi:"multi.png",ban:"ban.png",arrow_right:"arrow_right.png",spoiler:"s.png"},e.initIcons=function(){var t,n;if(n="//s.4cdn.org/image/buttons/"+{yotsuba_new:"futaba/",futaba_new:"futaba/",yotsuba_b_new:"burichan/",burichan_new:"burichan/",tomorrow:"tomorrow/",photon:"photon/"}[Main.stylesheet],window.devicePixelRatio>=2)for(t in e.icons)e.icons[t]=e.icons[t].replace(".","@2x.");for(t in e.icons)e.icons[t]=n+e.icons[t]},e.initNavLinks=function(){var t,n,a,o,i,r;i=$.id("navtopright"),r=$.id("navbotright"),(t=document.createElement("span")).id="j-link",t.innerHTML='[<a href="https://sys.4chan.org/j/" title="Janitor &amp; Moderator Discussion">j</a>]',t.firstElementChild.addEventListener("mouseup",e.clearJCount,!1),i.parentNode.insertBefore(t,i),(t=t.cloneNode(!0)).id="j-link-bot",t.firstElementChild.addEventListener("mouseup",e.clearJCount,!1),r.parentNode.insertBefore(t,r),e.refreshJCount(),n=i.lastElementChild.previousSibling,(a=document.createDocumentFragment()).appendChild(document.createTextNode("] [")),(t=document.createElement("a")).textContent="Team",t.href="https://"+e.teamSubDomain+".4chan.org/",t.setAttribute("target","_blank"),a.appendChild(t),a.appendChild(document.createTextNode("] [")),o=a.cloneNode(!0),i.replaceChild(a,n),n=r.lastElementChild.previousSibling,r.replaceChild(o,n),Main.tid&&Main.hasMobileLayout&&((t=document.createElement("span")).className="mobileib button redButton",t.innerHTML='<label data-cmd="poster-id">Same Poster ID</label>',(i=$.cls("navLinks")[0])&&i.appendChild(t))},e.initPostForm=function(){var t,n,a,o,i;!(t=$.id("postForm"))&&Main.tid&&(o=$.cls("closed")[0])&&((n=document.createElement("form")).name="post",n.method="POST",n.enctype="multipart/form-data",n.action="https://sys."+$L.d(Main.board)+"/"+Main.board+"/post",n.innerHTML=e.postFormHTML+'<input type="hidden" name="mode" value="regist"><input type="hidden" name="resto" value="'+Main.tid+'">',o.parentNode.insertBefore(n,o),t=n.firstElementChild,QR.enabled=!0),t&&("hidden"==(n=document.forms.post.name).type&&e.hasFlag("forcedanonname")&&((a=document.createElement("tr")).setAttribute("data-type","Name"),a.innerHTML='<td>Name</td><td><input name="name" type="text"></td>',(i=Main.getCookie("4chan_name"))&&(a.lastChild.firstChild.value=i),(o=$.id("postForm").firstElementChild).insertBefore(a,o.firstElementChild),n.parentNode.removeChild(n)),e.hasFlag("html")&&((n=document.createElement("tr")).innerHTML='<tr><td style="height: 20px;">Extra</td><td>[<label><input type="checkbox" data-cmd="html-toggle" name="html" value="1">HTML</label>] <span class="html-otp">[<label data-tip="2FA One-Time Password">OTP</label> <input type="text" autocomplete="off" name="otp" maxlength="6">] <a href="#" class="preview-html-btn" data-cmd="preview-html">Preview</a></span></td></tr>',(t=t.firstElementChild).insertBefore(n,t.lastElementChild)))},e.onHTMLToggle=function(e){var t=$.cls("html-otp",e.parentNode.parentNode)[0];t&&(t.style.display=e.checked?"inline":"")},e.onPreviewHTMLClick=function(t){var n,a,o;e.xhrs.html||""!==(a=document.forms.qrPost?document.forms.qrPost:document.forms.post).com.value&&((n=new FormData).append("com",a.com.value),(o=new XMLHttpRequest).open("post",a.action+"?mode=preview_html",!0),o.withCredentials=!0,o.onload=e.onHTMLPReviewLoaded,o.onerror=e.onHTMLPReviewError,e.xhrs.html=o,$.addClass(t,"disabled"),o.send(n),Feedback.notify("Processing...",null))},e.resetHTMLPreviewBtn=function(){var e=$.cls("preview-html-btn");$.removeClass(e[0],"disabled"),e[1]&&$.removeClass(e[1],"disabled")},e.onHTMLPReviewLoaded=function(){var t;e.xhrs.html=null,Feedback.hideMessage(),e.resetHTMLPreviewBtn();try{"error"==(t=JSON.parse(this.responseText)).status&&Feedback.error(t.message)}catch(n){Feedback.error("Something went wrong.")}e.buildHTMLPreview(t.data)},e.onHTMLPReviewError=function(){e.xhrs.html=null,Feedback.hideMessage(),e.resetHTMLPreviewBtn(),console.log(this)},e.closeHTMLPreview=function(){var t;(t=$.id("html-preview-cnt"))&&t.parentNode.removeChild(t),e.resetHTMLPreviewBtn()},e.buildHTMLPreview=function(t){var n;e.closeHTMLPreview(),(n=document.createElement("div")).id="html-preview-cnt",n.setAttribute("data-cmd","close-html-preview"),n.innerHTML='<div class="extPanel reply"><div class="panelHeader">Preview HTML Post<span class="panelCtrl"><img alt="Close" title="Close" class="pointer" data-cmd="close-html-preview" src="'+Main.icons.cross+'"></span></div>'+t+"</div>",document.body.appendChild(n)},e.onThreadMouseOver=function(t){var n=t.target;$.hasClass(n,"thumb")&&(e.hasCatalogControls&&e.hideCatalogControls(),$.hasClass(n.parentNode.parentNode,"disabled")||e.showCatalogControls(n))},e.showCatalogControls=function(t){var n,a,o;a=t.getAttribute("data-id"),(n=document.createElement("div")).id="cat-ctrl",n.className=e.stylesheet,n.innerHTML='<span class="threadIcon deleteIcon" data-cmd="open-delete-prompt" data-id="'+a+'"></span><span class="threadIcon multiIcon" data-cmd="multi" data-id="'+a+'"></span><span class="threadIcon banIcon" data-cmd="ban" data-id="'+a+'"></span>',(o=$.cls("threadIcons",t.parentNode.parentNode)[0])?o.insertBefore(n,o.firstElementChild):((o=document.createElement("div")).className="threadIcons",o.appendChild(n),t.parentNode.parentNode.insertBefore(o,t.parentNode.nextElementSibling)),e.hasCatalogControls=!0},e.hideCatalogControls=function(){var t=$.id("cat-ctrl");t&&t.parentNode.removeChild(t),e.hasCatalogControls=!1},e.initCatalog=function(){window.Main={board:location.pathname.split(/\//)[1]},Main.addTooltip=function(e,t,n){var a,o;return(a=document.createElement("div")).className="click-me",n&&(a.id=n),a.innerHTML=t||"Change your settings",e.parentNode.appendChild(a),o=(e.offsetWidth-a.offsetWidth+e.offsetLeft-a.offsetLeft)/2,a.style.marginLeft=o+"px",a},(e.stylesheet=e.getCookie(window.style_group))?e.stylesheet=e.stylesheet.toLowerCase().replace(/ /g,"_"):e.stylesheet="nws_style"==style_group?"yotsuba_new":"yotsuba_b_new",Main.stylesheet=e.stylesheet,e.initIconsCatalog(),e.addCss(),document.addEventListener("click",e.onClick,!1),e.runCatalog()},e.runCatalog=function(){var t;e.initNavLinks(),FC.hasMobileLayout||n.init(),t=$.id("threads"),e.initCatAutoReload(!0),document.addEventListener("keydown",e.onCatalogKeyDown,!1),$.on(t,"mouseover",e.onThreadMouseOver),window.text_only&&document.addEventListener("4chanPostMenuReady",e.onPostMenuReady,!1)},e.init=function(){var t;SettingsMenu.options.Moderator={useIconButtons:["Use icon buttons","Display old-style buttons instead of using drop-down"],changeUpdateDelay:["Reduce auto-update delay","Reduce the thread updater delay",!0],fixedAdminToolbox:["Pin Moderator Tools to the page","Moderator Tools will scroll with you"],inlinePopups:["Inline admin panels","Open admin panels in browser window, instead of a popup"],disableMngExt:["Disable moderator extension","Completely disable the moderator extension (overrides any checked boxes)",!0]},Config.disableMngExt||((t=Main.getCookie("4chan_aflags"))&&(e.flags=t.split(",")),e.addCss(),Config.useIconButtons&&e.initIcons(),QR.noCooldown=QR.noCaptcha=!0,document.addEventListener("click",e.onClick,!1),document.addEventListener("DOMContentLoaded",e.run,!1))},e.run=function(){var t,a,o;document.removeEventListener("DOMContentLoaded",e.run,!1),e.initNavLinks(),e.initPostForm(),Main.hasMobileLayout||n.init(),Config.revealSpoilers&&$.addClass(document.body,"reveal-img-spoilers"),Config.threadUpdater&&Main.tid&&Config.changeUpdateDelay&&(ThreadUpdater.delayIdHidden=3,ThreadUpdater.delayRange=[5,10,15,20,30,60],ThreadUpdater.apiUrlFilter=e.apiUrlFilter),Config.useIconButtons&&!Main.hasMobileLayout&&(Main.tid?(t=document.getElementById("t"+Main.tid).getElementsByClassName("postInfo"),e.postCount=t.length,e.postCount>e.chunkSize?(e.nextChunk=t[0],window.addEventListener("scroll",e.onScroll,!1),e.onScroll()):e.onParsingDone(),o=$.cls("navLinksBot")[0],(a=document.createElement("span")).id="threadOptsButtom",a.innerHTML='[<a href="javascript:;" data-id="'+Main.tid+'" data-cmd="thread-options">Thread Options</a>]',o.appendChild(a)):e.onParsingDone(),document.addEventListener("4chanParsingDone",e.onParsingDone,!1),e.parserEventBound=!0),document.addEventListener("4chanPostMenuReady",e.onPostMenuReady,!1),(o=$.id("boardSelectMobile"))&&((a=document.createElement("option")).value="j",a.textContent="/j/ - Janitors & Moderators",o.insertBefore(a,o.firstElementChild))},e.getCookie=function(e){var t,n,a,o;for(o=e+"=",a=document.cookie.split(";"),t=0;n=a[t];++t){for(;" "==n.charAt(0);)n=n.substring(1,n.length)
;if(0===n.indexOf(o))return decodeURIComponent(n.substring(o.length,n.length))}return null},e.postFormHTML='<table class="postForm" id="postForm"><tbody><tr data-type="Name"><td>Name</td><td><input name="name" type="text" tabindex="1" placeholder="Anonymous"></td></tr><tr data-type="Options"><td>Options</td><td><input name="email" type="text" tabindex="2"><input type="submit" value="Post" tabindex="6"></td></tr><tr data-type="Comment"><td>Comment</td><td><textarea name="com" cols="48" rows="4" tabindex="4" wrap="soft"></textarea></td></tr><tr data-type="File"><td>File</td><td><input id="postFile" name="upfile" type="file" tabindex="7"><span class="desktop">[<label><input type="checkbox" name="spoiler" value="on" tabindex="8">Spoiler?</label>]</span></td></tr><tr><td></td></tr></tbody></table>',e.addCss=function(){var t,n;n='#adminToolbox { max-width: 256px; display: block; position: absolute; padding: 3px;}#adminToolbox h4 { font-size: 12px; margin: 2px 0 0; padding: 0; font-weight: normal;}#adminToolbox li { list-style: none;}#adminToolbox ul { padding: 0; margin: 2px 0 0 10px;}#atHeader { height: 17px; font-weight: bold; padding-bottom: 2px;}#atRefresh { margin: -1px 0 0 3px;}.post-ip { margin-left: 5px;}#delete-prompt > div { text-align: center;}#watchList li:first-child { margin-top: 3px; padding-top: 2px; border-top: 1px solid rgba(0, 0, 0, 0.20);}.photon #atHeader { border-bottom: 1px solid #ccc;}.yotsuba_new #atHeader { border-bottom: 1px solid #d9bfb7;}.yotsuba_b_new #atHeader { border-bottom: 1px solid #b7c5d9;}.tomorrow #atHeader { border-bottom: 1px solid #111;}#captchaFormPart { display: none;}#at-prio-appeals { color: blue;}#at-illegal-br,#at-illegal { color: red;}#at-msg-cnt { display: none;}.j-newposts { font-weight: bold !important;}#j-link,#j-link-bot { margin-right: 3px; display: inline-block; margin-left: 3px;}#adminToolbox hr { margin: 2px 0;}#threadOptsClose,#banReqClose { float: right;}#threadOpts iframe,#banReq iframe { overflow: hidden;}#threadOpts,#banReq { display: block; position: fixed; padding: 2px; font-size: 10pt;}#banReq { height: 490px;}#threadOpts { height: 194px;}#threadOptsHeader,#banReqHeader { text-align: center; margin-bottom: 1px; padding: 0; height: 18px; line-height: 18px;}#threadOptsButtom { float: right; margin-right: 4px;}.mobileExtControls { float: right; font-size: 11px; margin-bottom: 3px;}.ws .mobileExtControls { color: #34345C;}.nws .mobileExtControls { color: #0000EE;}.reply .mobileExtControls { margin-right: 5px;}.mobileExtControls span { margin-left: 10px;}.mobileExtControls span:after { content: "]";}.mobileExtControls span:before { content: "[";}.nws .mobileExtControls span:after { color: #800000;}.nws .mobileExtControls span:before { color: #800000;}.ws .mobileExtControls span:after { color: #000;}.ws .mobileExtControls span:before { color: #000;}.m-dark .mobileExtControls { color: #81a2be !important;}.m-dark .mobileExtControls span:after,.m-dark .mobileExtControls span:before { color: #1d1f21 !important;}#cat-ctrl { display: inline-block; margin-right: 2px; margin-top: -1px;}#cat-ctrl .threadIcon { cursor: pointer;}.disabled { opacity: 0.5;}.burichan_new .deleteIcon,.yotsuba_b_new .deleteIcon { background-image: url("//s.4cdn.org/image/buttons/burichan/cross.png");}.burichan_new .banIcon,.yotsuba_b_new .banIcon { background-image: url("//s.4cdn.org/image/buttons/burichan/ban.png");}.burichan_new .fileIcon,.yotsuba_b_new .fileIcon { background-image: url("//s.4cdn.org/image/buttons/burichan/f.png");}.burichan_new .multiIcon,.yotsuba_b_new .multiIcon { background-image: url("//s.4cdn.org/image/buttons/burichan/multi.png");}.futaba_new .deleteIcon,.yotsuba_new .deleteIcon { background-image: url("//s.4cdn.org/image/buttons/futaba/cross.png");}.futaba_new .banIcon,.yotsuba_new .banIcon { background-image: url("//s.4cdn.org/image/buttons/futaba/ban.png");}.futaba_new .fileIcon,.yotsuba_new .fileIcon { background-image: url("//s.4cdn.org/image/buttons/futaba/f.png");}.futaba_new .multiIcon,.yotsuba_new .multiIcon { background-image: url("//s.4cdn.org/image/buttons/futaba/multi.png");}.photon .deleteIcon { background-image: url("//s.4cdn.org/image/buttons/photon/cross.png");}.photon .banIcon { background-image: url("//s.4cdn.org/image/buttons/photon/ban.png");}.photon .fileIcon { background-image: url("//s.4cdn.org/image/buttons/photon/f.png");}.photon .multiIcon { background-image: url("//s.4cdn.org/image/buttons/photon/multi.png");}.tomorrow .deleteIcon { background-image: url("//s.4cdn.org/image/buttons/tomorrow/cross.png");}.tomorrow .banIcon { background-image: url("//s.4cdn.org/image/buttons/tomorrow/ban.png");}.tomorrow .fileIcon { background-image: url("//s.4cdn.org/image/buttons/tomorrow/f.png");}.tomorrow .multiIcon { background-image: url("//s.4cdn.org/image/buttons/tomorrow/multi.png");}.dd-admin { text-indent: 5px;}.dd-admin:before { color: #FF0000; content: "\u2022"; left: -3px; position: absolute;}.extPanel { border: 1px solid rgba(0, 0, 0, 0.2);}.extPanel img.pointer { width: 18px; height: 18px }.preview-html-btn { font-size: 11px; }#html-preview-cnt .extPanel { width: 800px; margin-left: -400px; }#html-preview-cnt { position: fixed; width: 100%; height: 100%; z-index: 9002; top: 0; left: 0;}#html-preview-cnt { line-height: 14px; font-size: 14px; background-color: rgba(0, 0, 0, 0.25);}#html-preview-cnt:after { display: inline-block; height: 100%; vertical-align: middle; content: "";}#html-preview-cnt > div { -moz-box-sizing: border-box; box-sizing: border-box; display: inline-block; height: auto; max-height: 100%; position: relative; width: 400px; left: 50%; margin-left: -200px; overflow: auto; box-shadow: 0 0 5px rgba(0, 0, 0, 0.25); vertical-align: middle;}.reveal-img-spoilers .imgspoiler::before { content: " "; width:0.75em; height:0.75em; border-radius: 0.5em; position: absolute; display: block; background: red; margin-top: 1px; margin-left: 1px; pointer-events: none;}.reveal-img-spoilers.is_catalog .imgspoiler::before { margin-top: 4px; margin-left: 12px;}.reveal-img-spoilers .imgspoiler:hover::before { background: #fff; }.html-otp { display: none; width: 50px; }.html-otp input { width: 50px !important; height: 12px; }.drag { -moz-user-select: none !important; cursor: move !important;}'+(e.isCatalog?'.panelHeader .panelCtrl { position: absolute; right: 5px; top: 5px;}.active-btn { border-bottom: 3px double; }.UIPanel { position: fixed; width: 100%; height: 100%; top: 0; left: 0; z-index: 9000 !important;}.UIPanel { line-height: 14px; font-size: 14px; background-color: rgba(0, 0, 0, 0.25);}.UIPanel:after { display: inline-block; height: 100%; vertical-align: middle; content: "";}.UIPanel > div { -moz-box-sizing: border-box; box-sizing: border-box; display: inline-block; height: auto; max-height: 100%; position: relative; width: 400px; left: 50%; margin-left: -200px; overflow: auto; box-shadow: 0 0 5px rgba(0, 0, 0, 0.25); vertical-align: middle;}.UIPanel .extPanel { padding: 2px;}':""),(t=document.createElement("style")).setAttribute("type","text/css"),t.textContent=n,document.head.appendChild(t)},/https?:\/\/boards\.(?:4chan|4channel)\.org\/[a-z0-9]+\/catalog($|#.*$)/.test(location.href)?(e.isCatalog=!0,e.initCatalog()):e.init()}();