// ==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);