Spacehey Superscript

All my previous userscripts for Spacehey rolled into one.

// ==UserScript==
// @name         Spacehey Superscript
// @namespace    http://tampermonkey.net/
// @version      1.4
// @description  All my previous userscripts for Spacehey rolled into one.
// @author       sudofry
// @match        https://spacehey.com/*
// @match        https://forum.spacehey.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=spacehey.com
// @grant        none
// @require      https://code.jquery.com/jquery-3.7.0.min.js
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    var $ = window.jQuery;
    var css = document.createElement('style');
    css.innerHTML = `

    #showAlert {
        background-color: #ffffff;
        color: #ff0000;
        font-weight: bold;
        text-align: center;
        display: none;
    }

    .online-box {
        display: block!important;
        height: 90px!important;
        overflow-y: scroll!important;
    }

    .online-box a {
        line-height: 28px;
    }

    #showDetails {
        position: fixed;
        top: 10px;
        left: 10px;
        background-color: #434343!important;
        background-image: none!important;
        color: #cbcbcb!important;
        width: auto;
        height: auto;
        padding: 10px;
        margin: 0;
        border-radius: 8px;
        border: 2px solid #252525!important;
        text-align: center!important;
        font-family: "Segoe UI", Arial, sans-serif!important;
        font-weight: normal!important;
        font-style: normal!important;
        font-size: 13px!important;
        text-shadow: none!important;
        text-decoration: none!important;
        letter-spacing: 0!important;
        z-index: 100000!important;
        display: none;
    }

    #showDetails p {
        color: #cbcbcb!important;
        background-color: transparent!important;
        font-family: "Segoe UI", Arial, sans-serif!important;
        font-weight: normal!important;
        font-style: normal!important;
        font-size: 13px!important;
        text-shadow: none!important;
        text-decoration: none!important;
        letter-spacing: 0!important;
    }

    #showDetails p:first-child {
        display: inline;
    }

    #showDetails a {
        color: #00c08a!important;
        font-family: sans!important;
        font-weight: normal!important;
        font-style: normal!important;
        font-size: 13px!important;
        text-shadow: none!important;
        text-decoration: none!important;
        letter-spacing: 0!important;
    }

    #showDetails .online img {
        vertical-align: middle;
        content: url('https://static.spacehey.net/img/green_person.svg');
        width: 20px;
    }

    #showDetails b {
        color: #00c08a!important;
        letter-spacing: 0!important;
    }

    #showDetails .awards {
        display: none;
    }

    #notification {
        background-color: #ffffff!important;
        color: #0000ff!important;
        font-weight: bold!important;
        padding-left: 10px;
    }

    #notification button {
        position: relative;
        top: 28px;
        left: -14px;
        float: right;
        padding-top: 4px;
    }

    #notification a:hover {
        cursor: pointer;
    }

    .message {
        color: #d2691e;
    }

    #divStripper {
        width:auto;
        height:auto;
    }

    #removeStyle {
        color: #343536!important;
        -webkit-text-fill-color: #343536!important;
        position: fixed!important;
        top: 20px!important;
        right: 20px!important;
        background-color: #99ffcc!important;
        background-image: none!important;
        border: 1px solid #343536!important;
        border-radius: 6px!important;
        width: 23px!important;
        height: 23px!important;
        min-width:23px!important;
        min-height:23px!important;
        max-width:23px!important;
        max-height:23px!important;
        padding: 0!important;
        z-index: 100000!important;
    }

    `;

    document.head.appendChild(css);

    var topics = [];
    var storedTopicId = '';
    var storedReplyId = '';
    var newestReplyId = '';
    var title = '';
    var groupName = '';
    var list = '';
    var checkTopicId = '';
    var storedTopics = '';
    var userId = '';
    var postCreator = '';
    var url = $('.right .m-col p a').attr('href');
    var onlineId = "";
    var friendIds = [];
    var display = [];
    var name = "";
    var names = [];
    var listPageCount = 1;
    var statusPageCount = 1;
    var storedIds = JSON.parse(localStorage.getItem('friendIds'));
    var storedNames = JSON.parse(localStorage.getItem('names'));
    var link = "";
    var newList = "";
    var firstCheck = 1;

    var showAlertBox = document.createElement('div');
    showAlertBox.id = 'showAlert';
    $('nav').append(showAlertBox);

    var divPop = document.createElement("div");
    divPop.id = "showDetails";
    $("body").append(divPop);

    var notificationBox = document.createElement('div');
    notificationBox.id = 'notification';
    $('nav').append(notificationBox);

    var showButton = document.createElement("button");
    showButton.id = 'add';

    var divStripper = document.createElement("div");
    divStripper.id = "divStripper";
    $("body").append(divStripper);

    if ($('#code').length) {
        var removeStyle = document.createElement("button");
        removeStyle.id = "removeStyle";
        $("#divStripper").append(removeStyle);
        $('#removeStyle').html('-');
    }

    $("#removeStyle").on("click", function(e) {
        e.preventDefault();
        $("#divStripper").remove();
        $('link[rel="stylesheet"], style').remove();
        $('*').removeAttr('style');
        $('head').append('<link rel="stylesheet" type="text/css" \ href="https://spacehey.com/css/normalize.css" />');
        $('head').append('<link rel="stylesheet" type="text/css" \ href="https://spacehey.com/css/my.css" />');
    });

    if (window.location == 'https://spacehey.com/home') {
        $('.new-people .inner').addClass('online-box');
        runHomeChecks();
        setInterval(function() {
            runHomeChecks();
        }, 60000)
    }

    if (window.location == 'https://forum.spacehey.com/') {
        runForumGroupChecks();
        setInterval(function() {
            runForumGroupChecks();
        }, 60000)
    }

    $(".person a, .comments-table td:first-child a, .comments-table td small a:first-child").hover(function () {
        var getUrl = $(this).attr("href");
        var userId = getUrl.split('=')[1];
        $(document).keydown(function(e) {
            var code = e.keyCode || e.which;
            if (code == 16) {
                $("#showDetails").html("Loading...").show();
                $.get('https://spacehey.com/profile?id=' + userId, function(getDetails) {
                    var code = $(getDetails).find('.private-profile').html();
                    if (code) {
                        $("#showDetails").html('Private Profile');
                    }
                    else {
                        var details = $(getDetails).find('.details').html();
                        var mood = $(getDetails).find('.mood p:first-child').html();
                        var checkMood = mood.split('<b>Mood:</b>')[1];
                        if (checkMood.trim()) {
                            details += mood;
                        }
                        $("#showDetails").html(details);
                        var last = $("#showDetails time.ago").text();
                        if (last != "") {
                            var date = new Date(last * 1000);
                            var active = (date.getMonth() + 1) + "/" + date.getDate() + "/" + date.getFullYear() + " at " + (date.getHours() % 12 || 12) + ":" + ((date.getMinutes() < 10 ? '0' : '') + date.getMinutes()) + " " + ((date.getHours() >= 12) ? 'pm' : 'am');
                            $("#showDetails time.ago").prev().remove()
                            $("#showDetails time.ago").replaceWith(active);
                        }
                    }
                });
            }
        });
    }, function() {
           $(document).unbind("keydown");
           $("#showDetails").hide();
    });

    if (window.location.href.indexOf('https://forum.spacehey.com/topic?id=') > -1) {
        storedTopics = JSON.parse(localStorage.getItem('topics'));

        postCreator = $('.profile-pic a').first().attr('href');
        postCreator = postCreator.split('=')[1];

        $('#notification').append(showButton);

        $.get('https://forum.spacehey.com', function(getUserId) {
            userId = $(getUserId).find('.blog-preview a:last-child').attr('href');
            userId = userId.split('=')[1];

            if (userId == postCreator) {
                $('#notification').hide();
            }
        });

        checkTopicId = window.location.href.split('https://forum.spacehey.com/topic?id=')[1];
        checkTopicId = checkTopicId.split('&')[0];

        $('#notification').html('<button id="add">Enable Notifications</button>');

        if (storedTopics != null) {
            for (var x = 0; x < storedTopics.length; x++) {
                storedTopicId = storedTopics[x].split('_')[0];
                if (storedTopicId == checkTopicId) {
                    $('#notification').html('<button id="remove">Disable Notifications</button>');
                }
            }
        }

        $('#notification').on('click', 'button', function() {
            storedTopics = JSON.parse(localStorage.getItem('topics'));

            if ($('#notification').html() == '<button id="add">Enable Notifications</button>') {
                $.get('https://forum.spacehey.com/topic?id=' + checkTopicId + '&sort=new#replies', function(getLatestReply) {
                    newestReplyId = $(getLatestReply).find('.reply-box').first().attr('id');

                    if (newestReplyId == undefined) {
                        newestReplyId = 0;
                    }
                    else {
                        newestReplyId = newestReplyId.split('reply')[1];
                    }

                    if (storedTopics != null) {
                        topics = [];
                        for (var i = 0; i < storedTopics.length; i++) {
                            topics.push(storedTopics[i]);
                        }
                    }

                    topics.push(checkTopicId + '_' + newestReplyId);
                    localStorage.setItem('topics', JSON.stringify(topics));
                    $('#notification').html('<button id="remove">Disable Notifications</button>');
                });
            }

            if ($('#notification').html() == '<button id="remove">Disable Notifications</button>') {
                $.get('https://forum.spacehey.com/topic?id=' + checkTopicId + '&sort=new#replies', function(getLatestReply) {
                    newestReplyId = $(getLatestReply).find('.reply-box').first().attr('id');

                    if (newestReplyId == undefined) {
                        newestReplyId = 0;
                    }
                    else {
                        newestReplyId = newestReplyId.split('reply')[1];
                    }

                    if (storedTopics != null) {
                        topics = [];
                        for (var i = 0; i < storedTopics.length; i++) {
                            if (storedTopics[i].split('_')[0] != checkTopicId) {
                                topics.push(storedTopics[i]);
                            }
                        }
                    }

                    localStorage.setItem('topics', JSON.stringify(topics));
                    location.reload();
                });
            }
        });
    }

    function runHomeChecks() {
        $('.profile .contact .inner').load(location.href + ' .profile .contact .inner>*','');
        $('.profile .bulletin-table').load(location.href + ' .profile .bulletin-table>*','');
        $('.profile .blog-entries').load(location.href + ' .profile .blog-entries>*','');
        $('.profile .friends .inner').load(location.href + ' .profile .friends .inner>*','');
        $('.new-people .top').html('<h4>Online Friends</h4><span style="float: right;">Loading...</span>');
        $('.new-people .inner').html('...');
        updateList();
    }

    function runForumGroupChecks() {
        $('#notification').html('<br><span class="message">There are no new notifications to display.</span><br>');
        storedTopics = JSON.parse(localStorage.getItem('topics'));

        if (storedTopics != null) {
            for (var i = 0; i < storedTopics.length; i++) {
                storedTopicId = storedTopics[i].split('_')[0];
                storedReplyId = storedTopics[i].split('_')[1];
                check(storedTopicId, storedReplyId);
            }
        }

        $('#notification').on('click', 'a', function() {
            storedTopics = JSON.parse(localStorage.getItem('topics'));
            storedTopicId = $(this).attr('id').split('_')[0];
            $.get('https://forum.spacehey.com/topic?id=' + storedTopicId + '&sort=new#replies', function(getLatestReply) {
                newestReplyId = $(getLatestReply).find('.reply-box').first().attr('id').split('reply')[1];
                if (storedTopics != null) {
                    topics = [];
                    for (var i = 0; i < storedTopics.length; i++) {
                        if (storedTopics[i].split('_')[0] != storedTopicId) {
                            topics.push(storedTopics[i]);
                        }
                    }
                }
                topics.push(storedTopicId + '_' + newestReplyId);
                localStorage.setItem('topics', JSON.stringify(topics));
                window.location.href = 'https://forum.spacehey.com/topic?id=' + storedTopicId + '&sort=new#replies';
            });
        });
    }

    function updateList() {
        var id = url.split('/friends?id=')[1];
        $.get('https://spacehey.com/friends?id=' + id + '&page=' + listPageCount, function(updateFriendList) {
            $(updateFriendList).find('.person a:first-child').each(function (i) {
                names.push($(this).text().trim());
                friendIds.push($(this).attr('href').split('=')[1]);
            });
            if ($(updateFriendList).find('.next').length) {
                listPageCount++;
                updateList();
            }
            else {
                if (storedIds != null && storedNames != null) {
                    var idDiff = $(storedIds).not(friendIds).get();
                    var nameDiff = $(storedNames).not(names).get();
                    if (idDiff != "") {
                        $('#showAlert').html('<br />THE FOLLOWING USERS ARE NO LONGER IN YOUR FRIEND LIST!<br /><br />' + nameDiff).show();
                    }
                }
                localStorage.setItem('friendIds', JSON.stringify(friendIds));
                localStorage.setItem('names', JSON.stringify(names));
                storedIds = JSON.parse(localStorage.getItem('friendIds'));
                storedNames = JSON.parse(localStorage.getItem('names'));
                listPageCount = 1;
                checkStatus();
            }
        });
    }

    function checkStatus() {
        $.get('https://spacehey.com/browse?page=' + statusPageCount + '&view=online', function(getOnlineUsers) {
            $(getOnlineUsers).find('.person a:first-child').each(function (i) {
                onlineId = $(this).attr('href').split('=')[1];
                name = $(this).text().trim();
                link = '<a href="https://spacehey.com/profile?id=' + onlineId + '">' + name + '</a><br />';
                if ($.inArray(onlineId, storedIds) != -1) {
                    if (firstCheck == 1) {
                        newList = link;
                        $('.new-people .inner').html(newList);
                        firstCheck++;
                        display.push(link);
                    }
                    else {
                        if ($.inArray(link, display) == -1) {
                            newList = newList + link;
                            $('.new-people .inner').html(newList);
                        }
                        display.push(link);
                    }
                }
            });
            if ($(getOnlineUsers).find('.next').length) {
                $('.new-people .top').html('<h4>Online Friends</h4><span style="float: right;">Loading...</span>');
                statusPageCount++;
                checkStatus();
            }
            else {
                $('.new-people .top').html('<h4>Online Friends</h4>');
                if (display === undefined || display.length == 0) {
                    $('.new-people .inner').html('No Friends Online');
                }
                statusPageCount = 1;
                firstCheck = 1;
            }
        });
    }

    function check(storedTopicId, storedReplyId) {
        $.get('https://forum.spacehey.com/topic?id=' + storedTopicId + '&sort=new#replies', function(getLatestReply) {
            newestReplyId = $(getLatestReply).find('.reply-box').first().attr('id').split('reply')[1];
            title = $(getLatestReply).find('.title').first().text();
            groupName = $(getLatestReply).find('.category a').text().split(' Group')[0];

            if (newestReplyId > storedReplyId) {
                if ($('#notification').html() == '<br><span class="message">There are no new notifications to display.</span><br>') {
                    $('#notification').html('');
                }
                list = $('#notification').html();
                $('#notification').html('<br /><a id="' + storedTopicId + '_' + newestReplyId + '">' + groupName + ' - ' + title + '</a><br />' + list);
            }
        });
    }

})();