eBay Forum Ignore List

By thorbenhauer Last update May 15, 2008 — Installed 1,492 times.
// eBay Forum Ignore List user script
// version 0.4.4
// 2008-05-13
// Copyright 2006-2008, thorbenhauer
// Released under the GPL license
// http://www.gnu.org/copyleft/gpl.html
//
// -----------------------------------------------------------------------------
//
// Icon: Humility Icon Set
// by Andrew Fitzsimon and Chad 'gonZo' Rodrigue
// http://art.gnome.org/themes/icon/1136
// Released under the GPL license
//
// -----------------------------------------------------------------------------
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
//
// -----------------------------------------------------------------------------
//
// ==UserScript==
// @name          eBay Forum Ignore List
// @namespace     http://userscripts.org/users/9022
// @description   http://userscripts.org/scripts/show/5107
// @include       http://forums*.ebay.tld/*thread.jspa?*
// @include       http://community.ebay.de/forum/ebay/thread.jspa?*
// ==/UserScript==
//
// -----------------------------------------------------------------------------

const ADDPNG = "data:image/png;base64," +
"iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI" +
"WXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1ggMFQYHoMbyVQAAATpJREFUKM+dkrFOwlAUhv/TXguk" +
"SZM21HLBMOnQGHdfwImFnecwTr6CD0PiyO5ujEwMxDbSJkBSCLT09rpoK3KHxjOd3Pt/9/z57yEo" +
"yuFO4N/63UxkmL5MwyRKen81TAXyK07D+yE26QbRQ0RJlJxoNBUopcQhPSBPc0gpVRI1WKf+DTLT" +
"NYPOZYcIVB7aPdsTuUAhCrT7bc9gRvhzR0SIZ7Ek/86Xo8cR9EIvwUIUYN+55TKHxipjzGAYP43B" +
"VtsVJu8TiFxU4YjjQEiv3OhnOmafM5DhGIF5YdLv9FrnLa8/6GsAMH+eF7totygfAWH7sZUsW2a9" +
"bJkdT7ihkBhxANhH+8X6dd2ttQAEQpM1y772dxARuMXBLQ4iNaicqGkabMsue7UrRTWcRuBeu10A" +
"iN/iMF2mJ0v+BTdAbTHWdiw9AAAAAElFTkSuQmCC";

const REMPNG = "data:image/png;base64," +
"iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI" +
"WXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1ggMFQYm7K/iCwAAANxJREFUKM/lkT1OAzEQhd94zJiw" +
"VVZCSlCUBg6wfY4SrpAj5Aq0FNwifU6RYiWKrRKE5MKRYNNge+jWRfYCiK988/+GMQZBRESZmVJK" +
"ir8Nj4nzxzlt3jZm9byanr/Pxr/7nysbqvvqNHuaEYEG0d05M3ET8C1z8CHnmNNQQATfebXLZvmw" +
"3q7BuQzPKcPCAgCiRhhrhpgVi93LDjb0Aft2jxRT2UOv3lNuu2F0nx1IajlVi4pUS7axxkgtkKkg" +
"fkVcPi659CD0x15pzBxXO2q2jbJjtK8twiHgP/ILeNlIABwUZR4AAAAASUVORK5CYII=";
               
const SHOPNG = "data:image/png;base64," +
"iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABmJLR0QA/wD/AP+gvaeTAAAACXBI" +
"WXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1QgXEhwgsSIJUAAAA2hJREFUOMu1lElsW1UUhr/n954z" +
"2JmcgZBWTSBDGwpikNhUrAIIVaIsmq5KpQIroJuKRRdIWbEgDGJDWQASqEKNA1IJgSiQRoVFUVOU" +
"pilRlZQkzlA3g2rHdux6eLbvPSwKgog4w4KzPff/dO45/zmGiLBZtL7w1u8i0s4WYRjG1MzQR49v" +
"lrMKiWZvztsnXuu0W5sfRilFIpVlaHSRYrcFLhf5RJiJK5ftQvqCYPJ5LNtN8946Mo5DMJRAsDAt" +
"G8NloUw3iC4odxX+qKCUxjQNTAN0XqG1QrRGREOBFu4ADCICIgiwNWaX4F3Tdgzm/wB7S7cV296S" +
"gjmr7fCZrpmZO/VoAZUHEUxvKXaxWZdXedRmkxcQ0XhL3HXWo698ohIpMAwwXWAYtLbuXbKAsZpq" +
"b399fY3l8/lwnCxKwHFylJd5ySu1yVA1ecOkpr6huqWs+M2GmnKC4SSJeJxoJJYT0Ues6R/fHzRa" +
"jncpePfk8WPUVVdRXmIRT2ZIpR0M/Zc7/hVaa0pKK3n+0GM893QTvooyXu8eILLwK2uh+Nuhq58O" +
"uQBktqd7PZHpPfvZOVbCazzZ7OOZg7U80liJp9jcYFkBcjlF4wMeGms8eItcvPHeANHFaySSqfMS" +
"8H+4YfP08srJSIm77VzPd08VuYt49okGtBaUlg1gpQVvqZvmPVXsb/LRfX6caHCCTCp1LfvH1Kv/" +
"cYXEhrOJWOrFxdt3VvoHLnF1KoRtW5gu458WyP1qW/ZUcvChWvqvLHDr5hjJ9fByeCl0RLKjuU3t" +
"JoGelVQ82zkyOpb5ZeQ6geUEbtvEMP6uVvNgtYf2Rh/zq/e4eHmM2Op8OrKWPirBvtUtfSxzPSNO" +
"Mn/q2+8HZWL6NusZjWW6EBGyOcX+Rh+228Z/cZzowoSsxzKnJOD/bUcLInP+L/LiPvv1hR8IrkYQ" +
"w4XWwoF9PvbVVeAfniQbnsGh6GOZ6/1yV5unbg6djqecn7/y95F0FJ7iIg401TJ8Pcjawg1S6eyl" +
"zPjnp3e90iJLOh5LHw0u3w180zdIZVU5wVCa+clx7sWjs3eDS50ihW+nIdvcVaPlRLvHa450dHRU" +
"3ApGCM1PrMeimUMS8E9uqdsOfB/+8ku+6tILAJFQ4pjM9fZvq9kJGKDt8JkuRJj+6YN3dvL+T00s" +
"shp1PIrrAAAAAElFTkSuQmCC";

const HIDPNG = "data:image/png;base64," +
"iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABmJLR0QA/wD/AP+gvaeTAAAACXBI" +
"WXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1QgXEiExsXphHAAAAyxJREFUOMul1E1sVFUUB/D/ue/O" +
"e2/evDdv5r0p89EPmpmhdASqdGiwJDVBYlAUpEiAKZpGEtgAOzRuXLnTDRs2bgwujMaUpMFEV8RF" +
"F+zUBFkUJJEFJpQOVYZp38e91wViYvo59W7PPb+ce8/JIaUUNnIG3vjwYyiF2R8++2Qj92kjMFVP" +
"H/F8awoAmnNPjqt7X0+vl8PWR9+t2Tb/cmzsFd7Vv4N7vnWVKo0X/hdMA5Oundav13fvdMf2voSE" +
"U0S+u9/NddnT1H/c3RRM1M3SmeS13tKWyonxN7G0uIg4DGCXash6fjXf2z1FRNQxrO08eDltGa++" +
"1xiHZTCEUQwlBSAF3J4hpB3zgLn77OWOYCo3znAKL5x85zB6Cx5ISjxvslISpGlwCjWktOgilU+9" +
"vyGYyhOjRopfOXbkEA0N9ME1GWIh8e/sKAUlBbiZQmn7MHl+8gpVGnvXhKkyUbTS+tToSN3cPzqM" +
"SslBGAksm0iloESMZLqIYt+2ZC5nXaPe8cKKMGVe052M9d3Wvp7i228dwMu1LkRRDCFXnnOlJJSM" +
"YOUH4HflS7meLddJH0ksg1mpeNXLpIYnJ45ifF8ZKUMDYwSNEVbrvZISkDGc7heRce09+vbaF/+B" +
"qTrxkeuYpy6cm0Qx5+On35qY+XUOt39fwNMlsRwmAjEOxnWQlgDXDWT79yBtW6ep0rgEALTt9Q8O" +
"PW4uTBcKOe55HoIghFBAEEQYHRnCvvogZCxx78ECvv1xFo6lgxhD2P4T7fn7IMafVahxyLCNZvNx" +
"lMk4hzmA+qP51ueP5p4A4g6gFDTbAqPo5I7Bss81DWEsl/dcRGg+/GO+FdI3QasNgPD8admsW+ez" +
"33+64raiyon9XOO+RiuMOj3D/3oaPAxvf3W+s13Raq+79aLW4ua322YPXyuoAAipIIRCHEuEsUQQ" +
"CXDFIKX650ansAI4Y8hnTbR0hVZgYbAvi1SSwzQM/Hxrfi137YoNPQE/Y0PnDCCOXZUlJHUOO2Xi" +
"l1t3N/kVnEOJCHG4BCViWAZQzCaQ4AxGgkEjATCtc7i6qxzdmLkZ3Zi5uWpydXBrtFrsb7UnCaas" +
"GvS7AAAAAElFTkSuQmCC";

GM_registerMenuCommand("Edit blacklist", editList);
var userIDs, postings, anchors, header;
if (document.domain == "community.ebay.de") {
    userIDs = document.evaluate("//div[contains(@class, 'idm-postinfo')]" +
        "//td[position()=2]//a[starts-with(@href, " +
        "'javascript:idm_showIdCard') or starts-with(@href, " +
        "'javascript: idm_showIdCard') or contains(@href, " +
        "'http://community.ebay.de/profile.htm?nickname=')][position() = 1]" +
        "/ancestor::span/@title", document.body, null,
        XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);    
    postings = document.evaluate("//div[contains(@class, 'idm-postcontent')]",
        document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    anchors = document.evaluate("//div[contains(@class, 'idm-postinfo')]" +
        "//tr", document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
        null);
} else {
    userIDs = document.evaluate("//tr[@class = 'ebayUserRow' or @class = " +
        "'ebayRootUserRow' or @class = 'pinkliner']//a[@name]/" +
        "following-sibling::a[1]/text()", document.body, null,
        XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    postings = document.evaluate("//td[@class='jive-description']",
        document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    anchors = document.evaluate("//tr[@class = 'ebayUserRow' or @class = " +
        "'ebayRootUserRow' or @class = 'pinkliner']//a[@name]//ancestor::tr[1]",
        document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    header = document.evaluate("//td[@class = 'jive-subject']/" + 
        "ancestor::tr[@class = 'pinkliner']", document.body, null,
        XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0);
    if (header != null) {
        header.appendChild(document.createElement("td"));
    }
    header = document.evaluate("//tr[@class = 'ebayThreadHeader']",
        document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
        null).snapshotItem(0);
    if (header != null) {
        header.appendChild(document.createElement("th"));
    }
}

init();

function init() {
    var blacklist = getBlacklist();
    var userID;
    for (var i = 0; i < userIDs.snapshotLength; i++) {
        var panel = document.createElement("td");
        panel.id = "panel" + i;
        if (document.domain == "community.ebay.de") {
            panel.setAttribute("class", "idm-ar dummy");
            panel.setAttribute("style", "padding-right: 2px; cursor: pointer;" +
            "width: 45px; white-space: nowrap");
        } else {
            panel.setAttribute("style", "padding-right: 2px; cursor: pointer;");
        }
        tempPanel = document.createElement("span");
        tempPanel.id = "temppanel" + i;
        blackPanel = document.createElement("span");
        blackPanel.id = "blackpanel" + i;
        if (document.domain == "community.ebay.de") {
            userID = userIDs.snapshotItem(i).value.split("#")[0];
        } else {
            userID = userIDs.snapshotItem(i).data;
        }
        if (checkList(blacklist, userID) >= 0) {
            postings.snapshotItem(i).style.display = "none";
            tempPanel.appendChild(createImg("show", i));
            blackPanel.appendChild(createImg("rem", i));
        } else {
            tempPanel.appendChild(createImg("hide", i));
            blackPanel.appendChild(createImg("add", i));
        }
        panel.appendChild(tempPanel);
        panel.appendChild(blackPanel);
        anchors.snapshotItem(i).appendChild(panel);
    }
}

function createImg(type, ID) {
    var img =  document.createElement("img");
    switch (type) {
        case "add":
            img.src = ADDPNG;
            img.title = "Add to blacklist";
            img.id = "add" + ID;
            img.setAttribute("style", "vertical-align: middle; " +
                "padding-left: 2px");
            img.addEventListener('click',
                function(event) {
                    add(event);
                }, true
            );
            return img;
        case "rem":
            img.src = REMPNG;
            img.title = "Remove from blacklist";
            img.id = "rem" + ID;
            img.setAttribute("style", "vertical-align: middle; " +
                "padding-left: 2px");
            img.addEventListener('click',
                function(event) {
                    remove(event);
                }, true
            );
            return img;
        case "show":
            img.src = SHOPNG;
            img.title = "Show posting";
            img.id = "sho" + ID;
            img.setAttribute("style", "vertical-align: middle; " +
                "padding-left: 0px");
            img.addEventListener('click',
                function(event) {
                    show(event);
                }, true
            );
            return img;
        case "hide":
            img.src = HIDPNG;
            img.title = "Hide posting";
            img.id = "hid" + ID;
            img.setAttribute("style", "vertical-align: middle; " +
                "padding-left: 0px");
            img.addEventListener('click',
                function(event) {
                    hide(event);
                }, true
            );
            return img;
        default:
            return null;
    }
}

function show(event) {
    var ID = event.target.id.slice(3, event.target.id.length);
    postings.snapshotItem(ID).style.display = "";
    var temp = document.getElementById("temppanel" + ID);
    temp.replaceChild(createImg("hide", ID), temp.firstChild);
}

function hide(event) {
    var ID = event.target.id.slice(3, event.target.id.length);
    postings.snapshotItem(ID).style.display = "none";
    var temp = document.getElementById("temppanel" + ID);
    temp.replaceChild(createImg("show", ID), temp.firstChild);
}

function add(event) {
    var ID = event.target.id.slice(3, event.target.id.length);
    var userID;
    if (document.domain == "community.ebay.de") {
        userID = userIDs.snapshotItem(ID).value.split("#")[0];
    } else {
        userID = userIDs.snapshotItem(ID).data;
    }
    var blacklist = getBlacklist();
    if (checkList(blacklist, userID) < 0) {
        blacklist.push(userID);
        setBlacklist(blacklist);
        update(userID, "add");
    }
}

function remove(event) {
    var ID = event.target.id.slice(3, event.target.id.length);
    var userID;
    if (document.domain == "community.ebay.de") {
        userID = userIDs.snapshotItem(ID).value.split("#")[0];
    } else {
        userID = userIDs.snapshotItem(ID).data;
    }
    var blacklist = getBlacklist();
    var index = checkList(blacklist, userID)
    if (index >= 0) {
        var newBlacklist = new Array();
        for (var i = 0; i < blacklist.length; i++) {
            if (i != index) {
                newBlacklist.push(blacklist[i]);
            }
        }
        setBlacklist(newBlacklist);
        update(userID, "rem");
    }
}

function update(userID, status) {
    var tempUserID;
    switch(status) {
        case "add":
            for (var i = 0; i < userIDs.snapshotLength; i++) {
                if (document.domain == "community.ebay.de") {
                    tempUserID = userIDs.snapshotItem(i).value.split("#")[0];
                } else {
                    tempUserID = userIDs.snapshotItem(i).data;
                }
                if (tempUserID == userID) {
                    postings.snapshotItem(i).style.display = "none";
                    var temp = document.getElementById("temppanel" + i);
                    temp.replaceChild(createImg("show", i), temp.firstChild);
                    temp = document.getElementById("blackpanel" + i);
                    temp.replaceChild(createImg("rem", i), temp.firstChild);    
                }
            }
            break;
        case "rem":
            for (var i = 0; i < userIDs.snapshotLength; i++) {
                if (document.domain == "community.ebay.de") {
                    tempUserID = userIDs.snapshotItem(i).value.split("#")[0];
                } else {
                    tempUserID = userIDs.snapshotItem(i).data;
                }
                if (tempUserID == userID) {
                    postings.snapshotItem(i).style.display = "";
                    var temp = document.getElementById("temppanel" + i);
                    temp.replaceChild(createImg("hide", i), temp.firstChild);
                    temp = document.getElementById("blackpanel" + i);
                    temp.replaceChild(createImg("add", i), temp.firstChild);    
                }
            }
            break;
        default:
            return;
    }
}

function editList() {
    var oldBlacklistString = GM_getValue("blacklist");
    if (oldBlacklistString == null) {
        oldBlacklistString = "";
    }
    var newBlacklistString = prompt("Edit your blacklist manually:",
        oldBlacklistString);
    if (newBlacklistString != null) {
        var newBlacklist = newBlacklistString.split("|");
        for (var i = newBlacklist.length - 1; i >= 0; i--) {
            if(newBlacklist[i].length == 0) {
                newBlacklist.splice(i, 1);
            }
        }
        setBlacklist(newBlacklist);
        var removed = new Array();
        var added = new Array();
        var oldBlacklist = oldBlacklistString.split("|");
        for (var i = 0; i < oldBlacklist.length; i++) {
            if (checkList(newBlacklist, oldBlacklist[i]) < 0) {
                removed.push(oldBlacklist[i]);
            }
        }
        for (var i = 0; i < newBlacklist.length; i++) {
            if (checkList(oldBlacklist, newBlacklist[i]) < 0) {
                added.push(newBlacklist[i]);
            }
        }
        for (var i = 0; i < removed.length; i++) {
            update(removed[i], "rem");
        }
        for (var i = 0; i < added.length; i++) {
            update(added[i], "add");
        }
    }
}

function getBlacklist() {
    var blacklistString = GM_getValue("blacklist");
    if (blacklistString != undefined && blacklistString.length > 0) {
        return blacklistString.split("|");
    } else {
        return new Array();
    }
}

function setBlacklist(list) {
    if (list != undefined && list.length > 0) {
        GM_setValue("blacklist", list.join("|"));
    } else {
        GM_setValue("blacklist", "");
    }
}

function checkList(list, ID) {
    for (var i = 0; i < list.length; i++) {
        if (list[i] == ID) {
            return i;
        }
    }
    return -1;
}