// ==UserScript== // @name Better Board Menu // @namespace dollars-bbs.org // @author Degritone // @description Makes the board menu stick to the screen and have drop-down arrows to expand sub-buards // @match *://*.dollars-bbs.org/* // @grant none // ==/UserScript== function work(loaded){ if(!document.getElementById("boardmenu")){ setTimeout(work,100,false); return; } if(!loaded){ setTimeout(work,1000,true); return; } window.onscroll = ()=>document.getElementById("boardmenu").style.top=""+Math.max(189-window.scrollY,0)+"px"; let boardmenu = document.getElementById("boardmenu"); boardmenu.style.position = "fixed"; boardmenu.style.top = ""+Math.max(189-window.scrollY,0)+"px"; if(document.getElementById("posts")) document.getElementById("posts").style.marginLeft = "180px"; if(document.getElementById("threadbox")) document.getElementById("threadbox").style.marginLeft = "180px"; if(document.getElementById("contentarea")) document.getElementById("contentarea").style.marginLeft = "180px"; if(document.getElementById("threads")) document.getElementById("threads").style.marginLeft = "180px"; removeAllSubBoards(boardmenu); if(document.getElementById("testbutton")) removeAllSubBoards(boardmenu); let brs = boardmenu.getElementsByTagName("br"); for(let i=brs.length-1;i>=0;i--){ if(brs[i].previousElementSibling){ if(brs[i].nextElementSibling){ if(brs[i].previousElementSibling.outerHTML == brs[i].nextElementSibling.outerHTML) boardmenu.removeChild(brs[i]); } } } let styleBase = 'style="border-radius:7px; border:solid 2px #EEEEEE; background-color:#151515; padding:5px; text-decoration:none; font-size:13px; '; let mainsubs = '
Introductions

'+ 'Countries

'+ 'Missions

'+ 'Suggestions'; let gamessubs = '
Visual Novels'; let randomsubs = '
Test'; let ms = document.createElement("div"); let gs = document.createElement("div"); let rs = document.createElement("div"); initializeDiv(ms,mainsubs,"main"); initializeDiv(gs,gamessubs,"games"); initializeDiv(rs,randomsubs,"random"); let md = document.createElement("button"); let gd = document.createElement("button"); let rd = document.createElement("button"); initializeButton(md,20,"main",boardmenu); initializeButton(gd,200,"games",boardmenu); initializeButton(rd,400,"random",boardmenu); } function removeAllSubBoards(boardmenu){ remove("introbutton",boardmenu); remove("countriesbutton",boardmenu); remove("missionsbutton",boardmenu); remove("suggestionsbutton",boardmenu); remove("vnbutton",boardmenu); remove("testbutton",boardmenu); } function remove(name,boardmenu){ let child = document.getElementById(name); if(!child) return; if(child.name) return; boardmenu.removeChild(child); } function isolateBoard(){ return window.location.href.replace(/https:\/\/dollars-bbs\.org\//,"").replace("/","").replace("index.html","").replace(/res[0-9]+.html/,""); } function initializeDiv(d,s,b){ d.innerHTML = s; d.style.display = "none"; document.getElementById(b+"button").after(d); d.id = b+"dropdown"; d.style.marginBottom = "-21px"; } function showBoards(div,b){ let thisLink = document.getElementById(b+"link"); if(div.style.display == "none"){ div.style.display = ""; thisLink.innerHTML = "▲"; thisLink.style.paddingBottom = "5px"; thisLink.style.paddingTop = "3px"; if(div.innerHTML.includes(isolateBoard())){ document.getElementById(isolateBoard()+"button").style.backgroundColor = "#4D4D4D"; } } else { div.style.display = "none"; thisLink.innerHTML = "▼"; thisLink.style.paddingBottom = "3px"; thisLink.style.paddingTop = "5px"; } if(document.getElementById("mainlink") && document.getElementById("gameslink") && document.getElementById("randomlink")){ document.getElementById("mainlink").style.top = document.getElementById("mainbutton").offsetTop+4+"px"; document.getElementById("gameslink").style.top = document.getElementById("gamesbutton").offsetTop+4+"px"; document.getElementById("randomlink").style.top = document.getElementById("randombutton").offsetTop+4+"px"; } } function initializeButton(d,t,b,boardmenu){ boardmenu.appendChild(d); d.innerHTML = "▼"; d.onclick = ()=>showBoards(document.getElementById(b+"dropdown"),b); d.style = "position:absolute; right:25px; border-radius:7px; border:solid 2px #EEEEEE; background-color:#151515; padding:5px; padding-bottom:3px; text-decoration:none; font-size:10px; cursor:pointer; color:#EEEEEE;"; d.style.top = document.getElementById(b+"button").offsetTop+4+"px"; d.id = b+"link"; if(document.getElementById(b+"dropdown").innerHTML.includes(isolateBoard()) || b == isolateBoard()){ showBoards(document.getElementById(b+"dropdown"),b); } removeAllSubBoards(boardmenu); } work(false);