Google Image Status Reporter (& Direct Images)

By JoeSimmons Last update Aug 18, 2009 — Installed 559 times. Daily Installs: 2, 7, 0, 0, 3, 0, 2, 2, 2, 1, 5, 1, 1, 2, 0, 1, 0, 1, 0, 4, 0, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 0

There are 3 previous versions of this script.

// ==UserScript==
// @name           Google Image Status Reporter (& Direct Images)
// @namespace      http://userscripts.org/users/23652
// @description    Replaces non-existent images with an x
// @include        http://images.google.*/*
// @copyright      JoeSimmons
// @version        1.0.2
// @license        Creative Commons Attribution-Noncommercial 3.0 United States License
// ==/UserScript==

// OPTIONS
var img_404_src = "data:image/png;base64,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";
////////////////////////////////////////


// Create by avg, modified by JoeSimmons
function create(a,b) {
	if(!a || a=="" || !b) return;
	var ret=document.createElement(a);
	for(var prop in b) if(prop.indexOf("on")==0) ret.addEventListener(prop.substring(2),b[prop],false);
		else if(prop=="kids" && (prop=b[prop])) for each(var p in prop) ret.appendChild(p);
		else if(/^(style|accesskey|id|name|src|href|class)$/.test(prop)) ret.setAttribute(prop, b[prop]);
		else ret[prop]=b[prop];
	return ret;
}

// Get ID
function $(ID) {return document.getElementById(ID);}

// Watch for page changes
function process() {
	var content = $("ImgContent");
	if(!$("page_change_listener")) {
	content.appendChild(create("div", {id:"page_change_listener"}));
    content.removeEventListener('DOMNodeInserted', process, false);
    content.addEventListener("DOMNodeInserted", process, false);
	window.setTimeout(pageChanged, 500);
	}
}

function pageChanged() {
var links = document.evaluate(".//a[contains(@href, '?imgurl=')]",$("ImgContent"),null,6,null),
	valid_protocol = /^((https?|ftp):\/\/)/;
for(var i=links.snapshotLength-1,l; ((l=links.snapshotItem(i))&&l.textContent!="Original Image Link"); i--) {
l.parentNode.appendChild(create("a", {href:l.href,textContent:"Original Image Link",style:"display:block;font-size:11px;"}));
l.href=unescape(l.href.split("?imgurl=")[1].split("&")[0].replace("%3Fv%3D0",""));
}

for(var i=links.snapshotLength-1; ((item=links.snapshotItem(i))&&!item.nextSibling); i--) if(valid_protocol.test(item.href))
GM_xmlhttpRequest({
	e: item.firstChild,
    method: "HEAD",
    url: item.href,
    onload: function(res) {
	var img = this.e;
	if(res.status==200) return;
	img.removeAttribute("width");
	img.removeAttribute("height");
	img.setAttribute("style", "border:0!important;");
	img.setAttribute("src", four_o_four);
	}
});
}

// Wait for the page to load before we start listening   
var checker=setInterval(function(){
    if($("ImgContent")) {
        clearInterval(checker);
        process();
    }
}, 100);