// ==UserScript==
// @name 4chan+
// @namespace http://tampermonkey.net/
// @version 2.4
// @description Adds some kool features to 4chan!
// @author MrSkeletal
// @match http://boards.4chan.org/*
// @match https://boards.4chan.org/*
// @grant none
// @run-at document-end
// ==/UserScript==
(function() {
'use strict';
// Your code here...
var Names = ['Wizard','Professional ShitPoster','Hiding In The Closet','A White Guy','Redpilled','A Black Guy','Faggot','Grill','Full Time Neet','Lurker','Jewd','Chad','Stacy','Basement Dweller','1337_H@x0r','Underage','EdgeLord','NORMIE','Nazi','Pesant','FAG','Suicidal','Weeb','I <3 Hentai','Woke','FBI','Mod In Disguise','Not A Cop'];
var ValidNameColors = ['#ff66ff','#ff3300','#b3ffb3','#669999','#3399ff'];
var HTMLNames = document.getElementsByClassName('name');
var HTMLGET = document.getElementsByClassName('postNum desktop');
var theme = document.getElementById('styleSelector');
var TModernOn = false;
var nav = document.getElementsByClassName('navLinks desktop')[0];
var board = window.location.pathname.match(/\/[^\/]+\//)[0];
//ToolBar
//
function Update(){
//underline subjects
//Add NickNames
function ChangeNames(list){
for (var i=0;i<HTMLNames.length;i++){
if (HTMLNames[i].id != 'colored'){
HTMLNames[i].style.color = ValidNameColors[Math.floor((Math.random() * ValidNameColors.length) + 0)];
HTMLNames[i].id = 'colored';
}
if (HTMLNames[i].innerHTML == 'Anonymous'){
HTMLNames[i].title = "Username was originally Anonymous";
HTMLNames[i].innerHTML = list[Math.floor((Math.random() * list.length) + 0)];
}
}
}
//
var nsfwNames = ['Currently Masterbaiting','NSA','Tits man','Ass man','Lurker','Kinky','Embassidor of porn','Porn merchant'];
switch(board){
default:
ChangeNames(Names);
break;
case "/b/":
case "/pol/":
ChangeNames(Names);
break;
case "/bant/":
ChangeNames(Names);
break;
case "/aco/":
case "/r/":
case "/gif/":
case "/hr/":
case "/t/":
case "/y/":
case "/d/":
case "/e/":
case "/s/":
case "/hc/":
case "/h/":
ChangeNames(nsfwNames);
break;
}
//GetHighlighter
for (var i2=0;i2<HTMLGET.length;i2++){
var GET = HTMLGET[i2].childNodes[1].text;
var Len = GET.length - 1;
var Dupes = 0;
for (var l = Len; GET[l] == GET[l - 1]; l--){
Dupes++;
}
if (GET[Len] == GET[Len - 1] & HTMLGET[i2].childNodes[1].id != 'Checked'){
HTMLGET[i2].childNodes[1].style.backgroundColor = ValidNameColors[Math.floor((Math.random() * ValidNameColors.length) + 0)];
HTMLGET[i2].childNodes[1].style.color = "black";
HTMLGET[i2].childNodes[1].id = 'Checked';
switch(Dupes){
default:
var saying = "GET ";
HTMLGET[i2].childNodes[1].title = saying;
HTMLGET[i2].childNodes[0].innerHTML = saying + HTMLGET[i2].childNodes[0].innerHTML;
break;
case 1:
saying = "Dubs ";
HTMLGET[i2].childNodes[1].title = saying;
HTMLGET[i2].childNodes[0].innerHTML = saying + HTMLGET[i2].childNodes[0].innerHTML;
break;
case 2:
saying = "Trips ";
HTMLGET[i2].childNodes[1].title = saying;
HTMLGET[i2].childNodes[0].innerHTML = saying + HTMLGET[i2].childNodes[0].innerHTML;
break;
case 3:
saying = "Quads ";
HTMLGET[i2].childNodes[1].title = saying;
HTMLGET[i2].childNodes[0].innerHTML = saying + HTMLGET[i2].childNodes[0].innerHTML;
break;
}
}
}
//TestTheme
if (theme.options[theme.selectedIndex].value == 'Test'){
//BG
document.body.style.backgroundColor = '#cccccc';
document.getElementById('header-bar').style.backgroundColor = '#9BAEC8';
//Post Form
document.getElementById('postForm').style.backgroundColor = '#444b5d';
document.getElementById('postForm').style.border = '3px solid #282c37';
document.getElementById('postForm').style.marginLeft = '35%';
document.getElementById('postForm').style.borderRadius = '4px';
//
var PR = document.getElementsByClassName('post reply');
var OP = document.getElementsByClassName('post op');
for (i=0;i<PR.length;i++){
PR[i].style.backgroundColor = '#444b5d';
PR[i].style.color = '#e6e6e6';
PR[i].style.border = '3px solid #282c37';
PR[i].style.borderRadius = '4px';
PR[i].style.margin = '14px';
}
for (i=0;i<OP.length;i++){
OP[i].style.backgroundColor = '#444b5d';
OP[i].style.color = '#e6e6e6';
OP[i].style.border = '3px solid #282c37';
OP[i].style.borderRadius = '4px';
OP[i].style.margin = '14px';
}
}
//loop
setTimeout(Update,500);
}
function OneTimeUpdate(){
//add tools
var toolMenu = document.createElement('div');
toolMenu.setAttribute("style","background-Color: #5f92ca; top: 50%; position: fixed; zIndex: 99999999; border: 3px solid #6699ff; padding: 5px; left: 50%; transform: translate(-50%, -50%)");
toolMenu.style.display = 'none';
document.body.appendChild(toolMenu);
//Header
var TMText = document.createElement('h1');
TMText.innerHTML = 'Tools Menu';
toolMenu.appendChild(TMText);
//Features
//Highlighter
var TMText2 = document.createElement('h4');
TMText2.innerHTML = 'Features Undone';
toolMenu.appendChild(TMText2);
var TMAH = document.createElement('div');
TMAH.id = 'TMHLDiv';
//exit
var TMExit = document.createElement('button');
TMExit.innerHTML = 'Exit';
toolMenu.appendChild(TMExit);
TMExit.addEventListener('click',function(){
toolMenu.style.display = 'none';
});
//Add Theme (TEST)
var TModern = document.createElement('option');
TModern.value = 'Test';
TModern.innerHTML = 'Test';
theme.appendChild(TModern);
//add some tools
if(nav !== undefined){
nav.innerHTML += " [";
var Settings = document.createElement('a');
Settings.id = 'SID';
Settings.innerHTML = 'Tools';
Settings.style.cursor = 'pointer';
nav.appendChild(Settings);
nav.innerHTML += "]";
document.getElementById('SID').addEventListener("click",function(){
toolMenu.style.display = 'inline';
});
}
//Add message for board
var message = document.createElement('div');
message.className = 'boardSubtitle';
document.getElementsByClassName("boardBanner")[0].appendChild(message);
console.log(board);
var bantMSG = ["anime","Reminder that the animal of /bant/ is the blobfish","/b/ With flags","Death to frogposters",">coke without peanuts"];
var animeMSG = ["Dubs > Subs","Dubs < Subs","Your waifu is shit"];
var bMSG = ["NORMIES GET OUT REEEEEE","Not your personal army","Where porn is more common than memes","Dont be a gullible idiot","Home of Anonymous"];
var nsfwMSG = ['Got some alone time eh ;)','The NSA is gonna love watching this','If you get caught, just blame it on ghosts','Kinky','2d > 3d','2d < 3d','Got a fine taste'];
var r9kMSG = ['No chads allowed','NORMIES GET OUT REEEEEE','<p style="color:#B5BD67;"> >Feels Bad Man </p>'];
var travelMSG = ['When you need a destination who are you gonna call ' + board + '!','More likly to get out than most people'];
switch(board){
case "/bant/":
message.innerHTML = bantMSG[Math.floor((Math.random() * bantMSG.length) + 0)];
break;
case "/r9k/":
message.innerHTML = r9kMSG[Math.floor((Math.random() * r9kMSG.length) + 0)];
break;
case "/n/":
case "/o/":
case "/out/":
message.innerHTML = travelMSG[Math.floor((Math.random() * travelMSG.length) + 0)];
break;
case "/a/":
case "/c/":
case "/w/":
case "/m/":
case "/cgl/":
case "/jp/":
case "/cm/":
message.innerHTML = animeMSG[Math.floor((Math.random() * animeMSG.length) + 0)];
break;
case "/b/":
message.innerHTML = bMSG[Math.floor((Math.random() * bMSG.length) + 0)];
document.getElementsByClassName("boardSubtitle")[0].remove();
break;
case "/aco/":
case "/r/":
case "/gif/":
case "/hr/":
case "/t/":
case "/y/":
case "/d/":
case "/e/":
case "/s/":
case "/hc/":
case "/h/":
message.innerHTML = nsfwMSG[Math.floor((Math.random() * nsfwMSG.length) + 0)];
break;
default:
message.innerHTML = "This Board Doesnt Have Messages Yet!";
}
}
//
new OneTimeUpdate();
new Update();
console.log('Started 4chan+ With No Errors!');
//EVENTS
//
})();