Yahoo Mail Extras

By deleted user Last update Jun 19, 2005 — Installed 3,499 times.
// ==UserScript==
// @name Yahoo Mail Extras
// @namespace http://benschmaus.com/greasemonkey
// @description Undisplays advertisements in Yahoo mail and adds an 'extras' toolbar.
// @include http://*.mail.yahoo.com/*
// ==/UserScript==

(
function() {
    // We only want to run this script in the main frame
    // (the window named 'ymailman').
    if ((self.name == 'ymailmain') || (top.frames.length == 0)) {
        //alert('Current window name is ymailmain');
        var topBannerDiv = document.getElementById('northbanner');
        if (topBannerDiv != null) {
            //alert('Top ad banner div is not null, undisplaying ad. . .');
            //alert(topBannerDiv);
            topBannerDiv.style.display = 'none';
        }
        var leftBannerAdContainer = document.getElementById('leftnavad');
        //alert('Left banner ad container: ' + leftBannerAdContainer);
        if (leftBannerAdContainer != null) {
            //alert('Left banner div not null, undisplaying ad. . .');
            leftBannerAdContainer.style.display = 'none';
        } else {
            //alert('Left banner div is null.');
        }
        var bottomBannerAdContainer = document.getElementById('swads');
        //alert('Bottom banner ad container: ' + bottomBannerAdContainer);
        if (bottomBannerAdContainer != null) {
            //alert('Bottom banner div not null, undisplaying ad. . .');
            bottomBannerAdContainer.style.display = 'none';
        } else {
            //alert('Bottom banner div is null.');
        }
        var fontElements = document.getElementsByTagName('font');
        for (var i = 0; i < fontElements.length; i++) {
            var fontEl = fontElements[i];
            //alert(fontEl.firstChild.data);
            if (fontEl.firstChild.data == 'ADVERTISEMENT') {
                // The table element that contains the ad.
                var adContainer = fontEl.parentNode.parentNode.parentNode;
                //alert("Ad container element: " + adContainer);
                adContainer.style.display = 'none';
            }
        }
        var centerAd = document.getElementsByTagName("center").item(0);
        if (centerAd != null) {
            centerAd.style.display = 'none';
        }

        // Adds "Check Unread" and "Clear Unread" links in a toolbar.
        // These buttons select and unselect only messages that are unread.
        window.addEventListener(
            'load',
            function(e) {
                var folderNameContainer = document.getElementsByTagName("h2").item(0);
                if (folderNameContainer != null &&
                    // don't put toolbar on the welcome screen
                    folderNameContainer.firstChild.data.indexOf('Welcome, ') == -1
                ) {
                    //alert(folderNameContainer.innerHTML);
                    var extrasContainer = folderNameContainer.parentNode;
                    var curHtml = extrasContainer.innerHTML;
                    extrasContainer.innerHTML =
                        "<div style='width:400px;margin-top:5px;margin-bottom:5px;" +
                        "padding:2px;border:1px solid #999;text-align:left;" +
                        "background:#ccc'>" +
                        "<b>Yahoo Mail Extras:</b> " +
                        "<a href='javascript:schmausb_toggleReadMsgs(true);" +
                        "'>Check Unread</a> - " +
                        "<a href='javascript:schmausb_toggleReadMsgs(false);'>" +
                        "Clear Unread</a></div>" + curHtml;
                }
            },
            false
        );
        window.schmausb_toggleReadMsgs = function(checkState) {
            //alert('Running schmausb_checkReadMsgs()');
            var trs = document.getElementsByTagName("tr");
            for (var i = 0; i < trs.length; i++) {
                var tr = trs[i];
                // New messages are contained inside a table
                // row with a class of 'msgnew'.
                if (tr.getAttribute('class') == 'msgnew') {
                    // We get all the form inputs contained inside
                    // of the row, and we check the first checkbox we
                    // find.
                    var inputs = tr.getElementsByTagName('input');
                    //alert(inputs[0]);
                    if (inputs[0].type == 'checkbox') {
                        inputs[0].checked = checkState;
                    }
                }
            }
        }
    }
}
)();