Advertisement
Degritone

BBS Home

Oct 22nd, 2021 (edited)
864
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name             BBS Home page
  3. // @namespace        dollars-bbs.org
  4. // @author           Degritone
  5. // @description      Makes a Home page for the dollars BBS
  6. // @match            *://*.dollars-bbs.org/*
  7. // @grant            none
  8. // ==/UserScript==
  9.  
  10. let preferences = [];
  11.  
  12. function request(url){
  13.   let xmlHttp = new XMLHttpRequest();
  14.   xmlHttp.open("GET",url,false);
  15.   xmlHttp.send(null);
  16.   return xmlHttp.responseText;
  17. }
  18.  
  19. function getThreads(){
  20.   let htmls = document.createElement("div");
  21.   let baseURL = "https://dollars-bbs.org/";
  22.   htmls.innerHTML = "";
  23.   if(preferences[0][1] == "false")
  24.     htmls.innerHTML+=request(baseURL+"main/index.html");
  25.   if(preferences[1][1] == "false")
  26.     htmls.innerHTML+=request(baseURL+"intro/index.html");
  27.   if(preferences[2][1] == "false")
  28.     htmls.innerHTML+=request(baseURL+"countries/index.html");
  29.   if(preferences[3][1] == "false")
  30.     htmls.innerHTML+=request(baseURL+"missions/index.html");
  31.   if(preferences[4][1] == "false")
  32.     htmls.innerHTML+=request(baseURL+"suggestions/index.html");
  33.   if(preferences[5][1] == "false")
  34.     htmls.innerHTML+=request(baseURL+"news/index.html");
  35.   if(preferences[6][1] == "false")
  36.     htmls.innerHTML+=request(baseURL+"animation/index.html");
  37.   if(preferences[7][1] == "false")
  38.     htmls.innerHTML+=request(baseURL+"art/index.html");
  39.   if(preferences[8][1] == "false")
  40.     htmls.innerHTML+=request(baseURL+"comics/index.html");
  41.   if(preferences[9][1] == "false")
  42.     htmls.innerHTML+=request(baseURL+"films/index.html");
  43.   if(preferences[10][1] == "false")
  44.     htmls.innerHTML+=request(baseURL+"food/index.html");
  45.   if(preferences[11][1] == "false")
  46.     htmls.innerHTML+=request(baseURL+"games/index.html");
  47.   if(preferences[12][1] == "false")
  48.     htmls.innerHTML+=request(baseURL+"vn/index.html");
  49.   if(preferences[13][1] == "false")
  50.     htmls.innerHTML+=request(baseURL+"literature/index.html");
  51.   if(preferences[14][1] == "false")
  52.     htmls.innerHTML+=request(baseURL+"music/index.html");
  53.   if(preferences[15][1] == "false")
  54.     htmls.innerHTML+=request(baseURL+"personal/index.html");
  55.   if(preferences[16][1] == "false")
  56.     htmls.innerHTML+=request(baseURL+"sports/index.html");
  57.   if(preferences[17][1] == "false")
  58.     htmls.innerHTML+=request(baseURL+"tech/index.html");
  59.   if(preferences[18][1] == "false")
  60.     htmls.innerHTML+=request(baseURL+"random/index.html");
  61.   if(preferences[19][1] == "false")
  62.     htmls.innerHTML+=request(baseURL+"test/index.html");
  63.   return htmls.getElementsByClassName("thread");
  64. }
  65.  
  66. function makeHome(){
  67.   let doc = document.createElement("html");
  68.   doc.innerHTML = request("https://dollars-bbs.org/news/index.html");
  69.   document.getElementsByTagName("html")[0].innerHTML = doc.innerHTML;
  70.   document.title = "Dollars BBS | Home";
  71.   let meta = document.createElement("meta");
  72.   meta.httpEquiv = "Access-Control-Allow-Origin";
  73.   meta.content = "https://www.gstatic.com";
  74.   document.head.appendChild(meta);
  75.   [...document.head.childNodes].forEach((child)=>{
  76.                                         if(child.outerHTML){
  77.                                           if(child.outerHTML.includes("script")){
  78.                                             let c = document.createElement("script");
  79.                                             c.innerHTML = child.innerHTML;
  80.                                             c.src = child.src;
  81.                                             c.type = "text/javascript";
  82.                                             document.head.appendChild(c);
  83.                                           }
  84.                                         }
  85.                                        });
  86.  
  87.   let RSS = document.getElementsByClassName("threadnavigation")[0];
  88.   RSS.parentNode.removeChild(RSS);
  89.  
  90.   let posts = document.getElementById("posts");
  91.   posts.innerHTML = "LOADING POSTS<br><br>";
  92.  
  93.   let sideBar = document.getElementById("sidebar");
  94.   sideBar.innerHTML = "<b>Home</b><br><p><b>IRC Channel:</b><br><a href='https://kiwiirc.com/client/irc.rizon.net/dollars-bbs' target="+
  95.     "'_blank'>#dollars-bbs@rizon.net</a></p><img src='https://dollars-bbs.org/news/img/dollars-bbs_qrcode.png' alt='https://dollars-bbs.org/'><p><b>Comments, Suggestions, Reports/Concerns:</b><br>admin[at]dollars-bbs.org</p>";
  96.   boardToggles(sideBar);
  97.  
  98.   document.getElementById("newsbutton").id = "musicbutton";
  99.  
  100.   let threadList = document.getElementById("threadlist");
  101.   threadList.innerHTML = "Loading...";
  102.  
  103.   let boardTitle = document.getElementById("threadbox").getElementsByClassName("innerbox")[0];
  104.   boardTitle.innerHTML = "<b>Home</b><br>The user-made home page containing recent posts from all the boards in one place.<br><br>"+threadList.outerHTML;
  105.  
  106.   let threads = getThreads();
  107.   posts.innerHTML = "";
  108.  
  109.   let threadOrder = getSortedThreads(threads);
  110.   let activeThreads = [];
  111.   for(let i=0;i<threadOrder.length;i++)
  112.     activeThreads[i] = threads[threadOrder[i]];
  113.  
  114.   for(let i=0;i<threadOrder.length;i++)
  115.     posts.appendChild(activeThreads[i]);
  116.  
  117.   let threadURLs = [];
  118.   for(let i=0;i<threadOrder.length;i++){
  119.     let origin = getThreadOrigin(activeThreads[i]);
  120.     let as = activeThreads[i].getElementsByTagName("a");
  121.     threadURLs[i] = "https://dollars-bbs.org"+origin+"res/"+as[0].href.split(/\/.+\/(?=[0-9])/)[1];
  122.     as[0].innerHTML = as[0].innerHTML+" <small>("+origin+")</small>";
  123.     for(let j=0;j<as.length;j++){
  124.       if(as[j].href.match(/res\/[0-9]+\.html$/)){
  125.         as[j].href = threadURLs[i];
  126.       }
  127.     }
  128.   }
  129.  
  130.   threadList.innerHTML = "";
  131.   for(let i=0;i<5;i++){
  132.     threadList.innerHTML+="<span class='threadlink'><a href='"+threadURLs[i]+"' rel='nofollow'>"+(i+1)+": </a>"+
  133.     "<a href='#"+threadURLs[i].match(/[0-9]+/)[0]+"'>"+activeThreads[i].getElementsByTagName("a")[0].innerHTML.replace(/<\/*small>/g,"")+"</a></span>"
  134.   }
  135.   boardTitle.innerHTML = "<b>Home</b><br>The user-made home page containing recent posts from all the boards in one place.<br><br>"+threadList.outerHTML;
  136.  
  137.   setTimeout(modifyNewPosts,100,activeThreads);
  138. }
  139.  
  140. function boardToggles(sideBar){
  141.   let toggles = document.createElement("div");
  142.   toggles.id = "boardTogglePreferences";
  143.   toggles.style.textAlign = "right";
  144.   toggles.style.marginRight = "30px";
  145.   for(let i=0;i<21;i++){
  146.     toggles.appendChild(document.createElement("input"));
  147.     toggles.childNodes[i].type = "checkbox";
  148.   }
  149.  
  150.   toggles.childNodes[0].name = "Main";
  151.   toggles.childNodes[1].name = "Intro";
  152.   toggles.childNodes[2].name = "Countries";
  153.   toggles.childNodes[3].name = "Missions";
  154.   toggles.childNodes[4].name = "Suggestions";
  155.   toggles.childNodes[5].name = "News";
  156.   toggles.childNodes[6].name = "Animations";
  157.   toggles.childNodes[7].name = "Art";
  158.   toggles.childNodes[8].name = "Comics";
  159.   toggles.childNodes[9].name = "Films";
  160.   toggles.childNodes[10].name = "Food";
  161.   toggles.childNodes[11].name = "Games";
  162.   toggles.childNodes[12].name = "VN";
  163.   toggles.childNodes[13].name = "Literature";
  164.   toggles.childNodes[14].name = "Music";
  165.   toggles.childNodes[15].name = "Personal";
  166.   toggles.childNodes[16].name = "Sports";
  167.   toggles.childNodes[17].name = "Tech";
  168.   toggles.childNodes[18].name = "Random";
  169.   toggles.childNodes[19].name = "Test";
  170.   toggles.childNodes[20].name = "allPosts";
  171.  
  172.   for(let i=20;i>=0;i--){
  173.     if(i!=20){
  174.         toggles.childNodes[i].outerHTML = "Ignore the "+toggles.childNodes[i].name+" board: "+toggles.childNodes[i].outerHTML+"<br>";
  175.       continue;
  176.     }
  177.     toggles.childNodes[20].outerHTML = "Show all 200 posts: "+toggles.childNodes[20].outerHTML+"<br>";
  178.   }
  179.  
  180.   let cookies = document.cookie.split("; ");
  181.   for(let i=0;i<cookies.length;i++){
  182.     if(!cookies[i].startsWith("degBoardTogglePreferences=")) continue;
  183.     let pairs = cookies[i].split("=")[1].split("_");
  184.     for(let j=0;j<pairs.length;j++){
  185.       preferences[j] = [];
  186.       let pair = pairs[j].split("-");
  187.       preferences[j][0] = pair[0];
  188.       preferences[j][1] = pair[1];
  189.     }
  190.   }
  191.  
  192.   if(preferences.length>0){
  193.     for(let i=1;i<toggles.childNodes.length;i+=3){
  194.       toggles.childNodes[i].checked = ((preferences[(i-1)/3][1]=="true")?true:false);
  195.     }
  196.   } else {
  197.     for(let i=0;i<(toggles.childNodes.length-1)/3;i++){
  198.       preferences[i] = [];
  199.       preferences[i][1] = "false";
  200.     }
  201.   }
  202.  
  203.   let d = document.createElement("button");
  204.   toggles.appendChild(d);
  205.   d.innerHTML = "Apply";
  206.   d.onclick = ()=>saveCookie();
  207.   d.style = "position:relative; margin:auto; border-radius:7px; border:solid 2px #EEEEEE; background-color:#151515; padding:5px; padding-top:3px; text-decoration:none; font-size:14px; cursor:pointer; color:#EEEEEE;";
  208.  
  209.   sideBar.appendChild(toggles);
  210. }
  211.  
  212. function saveCookie(){
  213.   let cookie = "degBoardTogglePreferences=";
  214.   let toggles = document.getElementById("boardTogglePreferences").childNodes;
  215.   for(let i=0;i<toggles.length-1;i++){
  216.     if(!toggles[i].outerHTML) continue;
  217.     if(!toggles[i].outerHTML.includes("<input")) continue;
  218.     cookie+=encodeURIComponent(toggles[i].name+"-"+toggles[i].checked+"_");
  219.   }
  220.   cookie = cookie.replace(/_$/,"");
  221.   cookie+="; expires=";
  222.   let date = new Date();
  223.   date.setTime(date.getTime()+(1000*60*60*24*365));
  224.   cookie+=encodeURIComponent(date.toUTCString());
  225.   cookie+=";";
  226.  
  227.   document.cookie = cookie;
  228.  
  229.   window.location.reload();
  230. }
  231.  
  232. function getSortedThreads(threads){
  233.   let times = [];
  234.   for(let i=0;i<threads.length;i++){
  235.     let replies = threads[i].getElementsByClassName("reply");
  236.     let time = replies[replies.length-1].innerHTML.match(/[0-9]+-[0-9]+-[0-9]+ [0-9]+:[0-9][0-9]/)[0].replace(/[ :]/g,"-").split("-");
  237.     times[i] = time;
  238.   }
  239.   let sortedTimes = JSON.parse(JSON.stringify(times));
  240.   for(let i=sortedTimes[0].length;i>=0;i--){
  241.     sortedTimes.sort(function(a,b){
  242.       return b[i]-a[i];
  243.     });
  244.   }
  245.   let values = [];
  246.   for(let i=0;i<((preferences[20][1]=="false")?10:times.length);i++){
  247.     let th = indexOf(times,sortedTimes[i]);
  248.     values[i] = th;
  249.     times[th] = "";
  250.   }
  251.   return values;
  252. }
  253.  
  254. function indexOf(arr,obj) {
  255.   for(let i=0;i<arr.length;i++){
  256.     let same = true;
  257.     for(let j=0;j<obj.length;j++){
  258.       if(arr[i][j]!=obj[j]){
  259.         same = false;
  260.         break;
  261.       }
  262.     }
  263.     if(same)
  264.       return i;
  265.   }
  266.   return -1;
  267. }
  268.  
  269. function getThreadOrigin(thread){
  270.   let action = thread.getElementsByTagName("form")[0].getAttribute("action");
  271.   return action.match(/\/[a-z]+\//)[0];
  272. }
  273.  
  274. function modifyNewPosts(activeThreads){
  275.   let threadlinks = document.getElementsByClassName("threadlinks");
  276.   let newposts = [];
  277.   let entirethreads = [];
  278.   let previewposts = [];
  279.   let replies = [];
  280.   let passwords = [];
  281.   for(let i=0;i<threadlinks.length;i++){
  282.     newposts[i] = threadlinks[i].getElementsByTagName("a")[0];
  283.     entirethreads[i] = threadlinks[i].getElementsByTagName("a")[1];
  284.     previewposts[i] = threadlinks[i].parentNode.parentNode.parentNode.getElementsByTagName("input")[6];
  285.     replies[i] = threadlinks[i].parentNode.parentNode.parentNode.getElementsByTagName("input")[1];
  286.     passwords[i] = threadlinks[i].parentNode.parentNode.parentNode.parentNode.parentNode.getElementsByTagName("input")[2];
  287.   }
  288.  
  289.   setTimeout(modifyNewThread,1100);
  290.  
  291.   for(let i=0;i<newposts.length;i++){
  292.     if(newposts[i]){
  293.       let threadNumber = newposts[i].href.match(/reply[0-9]+/)[0].replace("reply","");
  294.       let captchaCode = " "+
  295.         "if(!window.loadedRecaptcha)"+
  296.         "  window.loadedRecaptcha = [];"+
  297.         "if(window.loadedRecaptcha.indexOf("+threadNumber+") === -1) {"+
  298.               "window.loadedRecaptcha.push("+threadNumber+");"+
  299.           "  grecaptcha.render('recaptcha-input"+threadNumber+"', {"+
  300.           "    'sitekey' : '6LeDgBITAAAAAAt12EPCyU9Ezdg8JGmKPnO-zjOx',"+
  301.           "    'theme' : 'dark'"+
  302.           "  });"+
  303.             "};"+
  304.       ""
  305.       newposts[i].href = "javascript:"+captchaCode+newposts[i].href.replace(/javascript:/g,"");
  306.       newposts[i].href = newposts[i].href.replace("loadRecaptcha("+threadNumber+");","");
  307.       previewposts[i].onclick = "";
  308.       previewposts[i].onclick = function onclick(){previewPost("postform"+threadNumber,""+threadNumber,getThreadOrigin(activeThreads[i]));};
  309.       replies[i].onclick = "";
  310.       replies[i].onclick = function onclick(){postPost("postform"+threadNumber,""+threadNumber,getThreadOrigin(activeThreads[i]),replies[i]);};
  311.       passwords[i].value = getPassword("password");
  312.       passwords[i].parentNode.field_a.value=getCookie("name");
  313.     }
  314.   }
  315.  
  316.   if(window.location.href.includes("/home")){
  317.     let warning = document.createElement("div");
  318.     document.getElementById("threadlist").after(warning);
  319.     warning.innerHTML = "<br>ATTENTION!<br>You must wait a few seconds for the reCaptcha scripts to load before you post on the Home board.<br>Once this warning disappears, it is almost definitely safe to post.";
  320.     warning.id = "captchaWarning";
  321.     setTimeout(removeCaptchaWarning,5000,newposts);
  322.   }
  323. }
  324.  
  325. function modifyNewThread(){
  326.   let newThread = document.getElementsByTagName("a");
  327.   newThread = newThread[newThread.length-2];
  328.   newThread.href = newThread.href.replace("loadRecaptcha();","");
  329.   newThread.href = "javascript:"+
  330.         "if(!window.loadedRecaptcha)"+
  331.         "  window.loadedRecaptcha = [];"+
  332.         "if(window.loadedRecaptcha.indexOf('new-thread') === -1) {"+
  333.               "window.loadedRecaptcha.push('new-thread');"+
  334.           "  grecaptcha.render('recaptcha-input-new-thread', {"+
  335.           "    'sitekey' : '6LeDgBITAAAAAAt12EPCyU9Ezdg8JGmKPnO-zjOx',"+
  336.           "    'theme' : 'dark'"+
  337.           "  });"+
  338.             "};"+
  339.       ""+newThread.href.replace(/javascript:/g,"")+" show('boardChoice');";
  340.   newThread.parentNode.getElementsByTagName("input")[1].value = getPassword("password");
  341.   newThread.parentNode.getElementsByTagName("input")[3].onclick = "";
  342.   newThread.parentNode.getElementsByTagName("input")[3].onclick = function onclick(){createThread(newThread.parentNode.getElementsByTagName("input")[3]);};
  343.   let boardDDTR = document.createElement("tr");
  344.   boardDDTR.id = "boardChoice";
  345.   boardDDTR.style.display = "none";
  346.   document.getElementById("post").after(boardDDTR);
  347.   let boardDDTD0 = document.createElement("td");
  348.   boardDDTD0.innerHTML = "Choose Board:";
  349.   boardDDTR.appendChild(boardDDTD0);
  350.   let boardDDTD1 = document.createElement("td");
  351.   let boardDD = document.createElement("select");
  352.   boardDDTD1.appendChild(boardDD);
  353.   boardDDTR.appendChild(boardDDTD1);
  354.   boardDD.required = true;
  355.   boardDD.size = 1;
  356.   boardDD.name = "boardTarget";
  357.   initializeBoardDD(boardDD);
  358. }
  359.  
  360. function createThread(button){
  361.   let form=document.getElementById("threadform");
  362.   if(!form) return;
  363.    
  364.   let iframe = document.createElement("iframe");
  365.   iframe.src = "https://dollars-bbs.org"+form.boardTarget.value+"kareha.pl";
  366.   iframe.width = "0px";
  367.   iframe.height = "0px";
  368.   iframe.name = form.boardTarget.value+"frame";
  369.   iframe.id = form.boardTarget.value+"frame";
  370.   document.body.appendChild(iframe);
  371.   form.target = form.boardTarget.value+"frame";
  372.  
  373.   form.action = "https://dollars-bbs.org/"+form.boardTarget.value+"/kareha.pl";
  374.   button.disabled = true;
  375.   button.value = "Please wait...";
  376.   form.submit();
  377.   setTimeout(reload,1000);
  378. }
  379.  
  380. function initializeBoardDD(boardDD){
  381.   let options = [];
  382.   for(let i=0;i<20;i++){
  383.     options[i] = document.createElement("option");
  384.     boardDD.appendChild(options[i]);
  385.   }
  386.  
  387.   options[0].value = "main";
  388.   options[1].value = "intro";
  389.   options[2].value = "countries";
  390.   options[3].value = "missions";
  391.   options[4].value = "suggestions";
  392.   options[5].value = "news";
  393.   options[6].value = "animations";
  394.   options[7].value = "art";
  395.   options[8].value = "comics";
  396.   options[9].value = "films";
  397.   options[10].value = "food";
  398.   options[11].value = "games";
  399.   options[12].value = "vn";
  400.   options[13].value = "literature";
  401.   options[14].value = "music";
  402.   options[15].value = "personal";
  403.   options[16].value = "sports";
  404.   options[17].value = "tech";
  405.   options[18].value = "random";
  406.   options[19].value = "test";
  407.  
  408.   options[0].innerHTML = "Main";
  409.   options[1].innerHTML = "Intro";
  410.   options[2].innerHTML = "Countries";
  411.   options[3].innerHTML = "Missions";
  412.   options[4].innerHTML = "Suggestions";
  413.   options[5].innerHTML = "News";
  414.   options[6].innerHTML = "Animations";
  415.   options[7].innerHTML = "Art";
  416.   options[8].innerHTML = "Comics";
  417.   options[9].innerHTML = "Films";
  418.   options[10].innerHTML = "Food";
  419.   options[11].innerHTML = "Games";
  420.   options[12].innerHTML = "VN";
  421.   options[13].innerHTML = "Literature";
  422.   options[14].innerHTML = "Music";
  423.   options[15].innerHTML = "Personal";
  424.   options[16].innerHTML = "Sports";
  425.   options[17].innerHTML = "Tech";
  426.   options[18].innerHTML = "Random";
  427.   options[19].innerHTML = "Test";
  428. }
  429.  
  430. function previewPost(formid,thread,originBoard){
  431.   let form=document.getElementById(formid);
  432.   let preview=document.getElementById("preview"+thread);
  433.  
  434.   if(!form||!preview) return;
  435.  
  436.   preview.style.display="";
  437.   preview.innerHTML="<em>Loading...</em>";
  438.  
  439.   let text;
  440.   text="task=preview";
  441.   text+="&comment="+encodeURIComponent(form.comment.value);
  442.   text+="&markup="+encodeURIComponent(form.markup.value);
  443.   if(thread) text+="&thread="+thread;
  444.  
  445.   let xmlhttp = new XMLHttpRequest();
  446.   xmlhttp.open("GET","https://dollars-bbs.org/"+originBoard+"/kareha.pl?"+text,true);
  447.   xmlhttp.onreadystatechange=function() {
  448.     if(xmlhttp.readyState==4)
  449.       preview.innerHTML=xmlhttp.responseText;
  450.     }
  451.   xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  452.   xmlhttp.send(null);
  453. }
  454.  
  455. function postPost(formid,thread,originBoard,button){
  456.   let form=document.getElementById(formid);
  457.  
  458.   if(!form) return;
  459.    
  460.   let iframe = document.createElement("iframe");
  461.   iframe.src = "https://dollars-bbs.org"+originBoard+"kareha.pl";
  462.   iframe.width = "0px";
  463.   iframe.height = "0px";
  464.   iframe.name = originBoard+"frame";
  465.   iframe.id = originBoard+"frame";
  466.   document.body.appendChild(iframe);
  467.   form.target = originBoard+"frame";
  468.  
  469.   form.action = "https://dollars-bbs.org"+originBoard+"kareha.pl";
  470.   button.disabled = true;
  471.   button.value = "Please wait...";
  472.   form.submit();
  473.   setTimeout(reload,1000);
  474. }
  475.  
  476. function reload(){
  477.   window.location.reload();
  478. }
  479.  
  480. function getPassword(name){
  481.   let pass=getCookie(name);
  482.   if(pass) return pass;
  483.   return makePassword();
  484. }
  485.  
  486. function getCookie(name){
  487.   with(document.cookie){
  488.     let regexp=new RegExp("(^|;\\s+)"+name+"=(.*?)(;|$)");
  489.     let hit=regexp.exec(document.cookie);
  490.     if(hit&&hit.length>2) return unescape(hit[2]);
  491.     else return '';
  492.   }
  493. }
  494.  
  495. function makePassword(){
  496.   let chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  497.   let pass='';
  498.  
  499.   for(let i=0;i<8;i++)  {
  500.     let rnd=Math.floor(Math.random()*chars.length);
  501.     pass+=chars.substring(rnd,rnd+1);
  502.   }
  503.   return(pass);
  504. }
  505.  
  506. function removeCaptchaWarning(newPosts){
  507.   document.getElementsByClassName("innerbox")[1].removeChild(document.getElementById("captchaWarning"));
  508. }
  509.  
  510. if(window.location.href.startsWith("https://dollars-bbs.org/home"))
  511.   makeHome();
  512. redirect();
  513.  
  514. function redirect(){
  515.   let pmenu = document.getElementById("pagemenu");
  516.   if(!pmenu){
  517.     setTimeout(redirect,1000);
  518.     return;
  519.   }
  520.   pmenu.getElementsByTagName("a")[0].href = "https://dollars-bbs.org/home/";
  521. }
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.  
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement