Eternity Tower User Mute

User muting for Eternity Tower. Must refresh after altering list.

// ==UserScript==
// @name         Eternity Tower User Mute
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  User muting for Eternity Tower. Must refresh after altering list.
// @author       Aes Sedai
// @match        http*://*.eternitytower.net/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    window.usermute = {};
    window.usermute.users = JSON.parse(localStorage.getItem('usermute_users')) || [];

    var muteInterval = setInterval(function() {
        if (document.querySelector("#navbarSupportedContent > form > ul") !== null) {
            var shopNav = document.querySelector("#navbarSupportedContent > form > ul");
            var muteButtonLi = document.createElement("li");
            muteButtonLi.className = "nav-item";
            var muteButton = document.createElement("a");
            muteButton.className = "nav-link";
            muteButton.href = "#";
            muteButton.id = "muteButton";
            muteButton.innerHTML = "Muted Users";
            muteButton.onclick = function() {
                var users = prompt("Please enter a lowercased, comma-separated list of users", window.usermute.users.join(','));
                if (users !== null) {
                    window.usermute.users = users.split(',');
                    console.log("usernames: ", window.usermute.users);
                }
            };
            muteButtonLi.appendChild(muteButton);
            shopNav.insertBefore(muteButtonLi, shopNav.childNodes[0]);
            clearInterval(muteInterval); // here muteInterval is undefined, but when we call this function it will be defined in this context
        }
    }, 100);

    Meteor.connection._stream.on('message', function(sMeteorRawData){
        try {
            var oMeteorData = JSON.parse(sMeteorRawData);
            if (oMeteorData.collection == "simpleChats") {
                if (window.usermute.users.indexOf(oMeteorData.fields.username) > -1) {
                    var interval = setInterval(function() {
                        if (document.getElementById(oMeteorData.id) !== null) {
                            var elem = document.getElementById(oMeteorData.id);
                            elem.setAttribute("style", "display:none;");
                            clearInterval(interval); // here interval is undefined, but when we call this function it will be defined in this context
                        }
                    }, 50);
                }
            }
        }
        catch (err) { }
    });

    window.onbeforeunload = function() {
        localStorage.setItem('usermute_users', JSON.stringify(window.usermute.users));
    };
})();