Hide Homepage Elements

By KWierso Last update May 3, 2009 — Installed 139 times. Daily Installs: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0

There are 7 previous versions of this script.

// ==UserScript==

// @name           Hide Homepage Elements

// @namespace      CHP@kwierso.com

// @include        http://*.roosterteeth.com/members/

// @include        http://*.roosterteeth.com/members/index.php
// @include        http://roosterteeth.com/members/

// @include        http://roosterteeth.com/members/index.php

// ==/UserScript==



//register a couple GM commands. ("Make all elements visible", for one)



(function() {

    //list of collapsable elements:

    //(ID)

    //    (OTHER IDENTIFIER)

    //myAlertHolder

    //Make a Journal Entry

    //Watching

    //My Friends

    //Groups

    //Mod Summary

    //Recent Topics

    //    TagName(p) = Recent Topics.nextSibling

    //Awards

    //    TagName(table) class(hlines)

    

    //basic idea: put above elements into array, run through loop calling "addToggle()" for each item

    //in the array. Also have a Fx preference for each item, so changes are persistant.

    

    var allHPprefs = getHPprefs();

    setHPprefs(allHPprefs);

    try {

        addToggle(returnElement("id", "myAlertHolder"), allHPprefs[0], "alerts");

    } catch(e) {}

    try {

        addToggle(returnElement("id", "Make a Journal Entry"), allHPprefs[1], "journal");

    } catch(e) {

        addToggle(returnElement("id", "Latest Journal"), allHPprefs[1], "journal");

    }

    try {

        addToggle(returnElement("id", "Watching"), allHPprefs[2], "watchlist");

    } catch(e) {}

    try {

        addToggle(returnElement("id", "My Friends"), allHPprefs[3], "friends");

    } catch(e) {

        addToggle(returnElement("id", " Friends"), allHPprefs[3], "friends");

    }

    try {

        addToggle(returnElement("id", "Groups"), allHPprefs[4], "groups");

    } catch(e) {}

    try {

        addToggle(returnElement("id", "Mod Summary"), allHPprefs[5], "summary");

    } catch(e) {}

    try {

        addToggle(returnElement("id", "Recent Topics"), allHPprefs[6], "topics");

    } catch(e) {}

    try {

        addToggle(returnElement("id", "Awards"), allHPprefs[7], "awards");

    } catch(e) {}
    try {

        addToggle(returnElement("id", "Tournaments"), allHPprefs[7], "awards");

    } catch(e) {}

    try {

        addToggle(returnElement("sibling", "Recent Topics"), allHPprefs[8], "xbl");

    } catch(e) {}

    try {

        addToggle(returnElement("class", "hlines"), allHPprefs[9], "breakdown");

    } catch(e) {}

    try {

        addToggle(returnElement("id", "Games I"), allHPprefs[10], "games");

    } catch(e) {}

    try {

        addToggle(returnElement("id", "The Goods"), allHPprefs[11], "goods");

    } catch(e) {}

    

})();



function addToggle(element, initial, val) {

    //basic idea: for the given element, add a button which allows the user to hide the element

    //button has onclick event to "toggleItem", which actually controls the element's visibility.

    

    var toggleLink = document.createElement("a");



    if(!initial) {

        toggleLink.innerHTML = "Hide";

        if(val == "alerts")

            toggleLink.innerHTML = "Hide Alerts";

        if(val == "breakdown")

            toggleLink.innerHTML = "Hide Breakdown";

        if(element.id == "GamerTag")

            toggleLink.innerHTML = "Hide GamerCard";

    }

    else {

        toggleLink.innerHTML = "Show";

        if(val == "alerts")

            toggleLink.innerHTML = "Show Alerts";

        if(val == "breakdown")

            toggleLink.innerHTML = "Show Breakdown";

        if(element.className != "hlines") {

            if(element.id != "GamerTag") {

                if(element.id != "myAlertHolder") {

                    element.style.display = "none";

                } else {

                    element.getElementsByTagName("td")[0].style.display = "none";

                }

            }

            else {

                element.getElementsByTagName("p")[0].style.display = "none";

                toggleLink.innerHTML = "Show GamerCard";

            }

        }

        else {

            element.parentNode.getElementsByTagName("table")[0].style.display = "none";

        }

    }



    toggleLink.className = "small";

    toggleLink.addEventListener("click", function() { toggleItem(this, val); }, false);



    if(element.className != "hlines") {

        if(element.id == "myAlertHolder"){

            var div = document.createElement("div");

            div.style.background = "#FFFFFF";

            div.style.padding = "5px";

            div.appendChild(document.createTextNode(" [ "));

            div.appendChild(toggleLink);

            div.appendChild(document.createTextNode(" ] "));

            element.insertBefore(div, element.firstChild);

        }

        else {

            if(element.id == "Make a Journal Entry" || element.id == "Latest Journal" || element.id == "Watching" || 

                    element.id == "My Friends" || element.id == " Friends" || element.id == "Groups" || 

                    element.id == "Mod Summary" || element.id == "Recent Topics" || element.id == "Awards" || 
                    element.id == "Tournaments" || element.id == "Games I" || element.id == "The Goods"){

                var td = document.createElement("td");

                td.style.width = "45px";

                td.style.padding = "5px";

                td.appendChild(document.createTextNode(" [ "));

                td.appendChild(toggleLink);

                td.appendChild(document.createTextNode(" ] "));

                element.previousSibling.getElementsByTagName("tr")[1].insertBefore(td, element.previousSibling.getElementsByTagName("tr")[1].childNodes[1]);

            } else {

                element.insertBefore(document.createTextNode(" ] "), element.firstChild);

                element.insertBefore(toggleLink, element.firstChild);

                element.insertBefore(document.createTextNode(" [ "), element.firstChild);

                if(element.id == "GamerTag") {

                    element.insertBefore(document.createElement("br"), element.firstChild);

                }

            }

        }

    }

    else {

        element.parentNode.id = "breakdown";

        element.parentNode.insertBefore(document.createTextNode(" [ "), element);

        element.parentNode.insertBefore(toggleLink, element);

        element.parentNode.insertBefore(document.createTextNode(" ] "), element);

    }

}



function toggleItem(that, val) {

    //basic idea:  for "this" given element, determine its state of visibility.

    //if visible, set display to 'none'. If not visible, set display to ''.

    //Set or unset Fx preferences in here as well.



    var gt = false;

    if(that.parentNode.id != "GamerTag") {

        if(that.parentNode.parentNode.id != "myAlertHolder") {

            if(that.parentNode.id != "breakdown") {

                var element = that.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.nextSibling;

            }

            else {

                var element = that.parentNode.getElementsByTagName("table")[0];

            }

        } else {

                var element = that.parentNode.parentNode.childNodes[2].getElementsByTagName("td")[0];

            }

    }

    else {

        var element = that.parentNode.getElementsByTagName("p")[0];

        gt = true;

    }

    if(element.style.display == "none") {

        element.style.display = "";

        that.innerHTML = that.innerHTML.replace(/Show/, "Hide");

    }

    else {

        element.style.display = "none";

        that.innerHTML = that.innerHTML.replace(/Hide/, "Show");

    }

    GM_setValue("roosterteeth.HHE." + val, !GM_getValue("roosterteeth.HHE."+val));

}



function returnElement(type, identifyer) {

    if(type == "id") {

        var element = document.getElementById(identifyer);

    }

    if(type == "class") {

        var element = getElementsByClass(document, identifyer)[0];

    }

    if(type == "sibling") {

        var newdiv = document.createElement("div");

        newdiv.id = "GamerTag";

        newdiv.appendChild(document.getElementById(identifyer).nextSibling);

        document.getElementById(identifyer).insertBefore(newdiv, document.getElementById(identifyer).nextSibling);

        var element = newdiv;

    }

    return element;

}



function getElementsByClass(element, theClass) {

// EFFECT: Returns all of 'element's children that match theClass. 

    //Create Array of All HTML Tags

	var allHTMLTags=element.getElementsByTagName('*');

    var classTags = new Array();

    //Loop through all tags using a for loop

    for (i=0; i<allHTMLTags.length; i++) 

    {

        //Get all tags with the specified class name.

        if (allHTMLTags[i].className==theClass) 

        {

            classTags.push(allHTMLTags[i]);

        }

    }

    return classTags;

}



function getHPprefs() {

    var allHPprefs = [];

    

    allHPprefs.push(GM_getValue("roosterteeth.HHE.alerts", false));

    allHPprefs.push(GM_getValue("roosterteeth.HHE.journal", false));

    allHPprefs.push(GM_getValue("roosterteeth.HHE.watchlist", false));

    allHPprefs.push(GM_getValue("roosterteeth.HHE.friends", false));

    allHPprefs.push(GM_getValue("roosterteeth.HHE.groups", false));

    allHPprefs.push(GM_getValue("roosterteeth.HHE.summary", false));

    allHPprefs.push(GM_getValue("roosterteeth.HHE.topics", false));

    allHPprefs.push(GM_getValue("roosterteeth.HHE.awards", false));
    allHPprefs.push(GM_getValue("roosterteeth.HHE.tournaments", false));

    allHPprefs.push(GM_getValue("roosterteeth.HHE.xbl", false));

    allHPprefs.push(GM_getValue("roosterteeth.HHE.breakdown", false));

    allHPprefs.push(GM_getValue("roosterteeth.HHE.games", false));

    allHPprefs.push(GM_getValue("roosterteeth.HHE.goods", false));

    return allHPprefs;

}



function setHPprefs(allHPprefs) {

    GM_setValue("roosterteeth.HHE.alerts", allHPprefs[0]);

    GM_setValue("roosterteeth.HHE.journal", allHPprefs[1]);

    GM_setValue("roosterteeth.HHE.watchlist", allHPprefs[2]);

    GM_setValue("roosterteeth.HHE.friends", allHPprefs[3]);

    GM_setValue("roosterteeth.HHE.groups", allHPprefs[4]);

    GM_setValue("roosterteeth.HHE.summary", allHPprefs[5]);

    GM_setValue("roosterteeth.HHE.topics", allHPprefs[6]);

    GM_setValue("roosterteeth.HHE.awards", allHPprefs[7]);
    GM_setValue("roosterteeth.HHE.tournaments", allHPprefs[7]);

    GM_setValue("roosterteeth.HHE.xbl", allHPprefs[8]);

    GM_setValue("roosterteeth.HHE.breakdown", allHPprefs[9]);

    GM_setValue("roosterteeth.HHE.games", allHPprefs[10]);

    GM_setValue("roosterteeth.HHE.goods", allHPprefs[11]);

    return true;

}