// JavaScript Document

// ==UserScript==
// @name        Insert images
// @namespace   http://elvery.net/drzax
// @author		Dr. ZAx
// @description	Inserts images linked to in the ABC forum Scribblygum
// @version		0.6
// @include     http://www2b.abc.net.au/*
// ==/UserScript==

/* ------------------------------------------------------------------ */
/* -          C H A N G E   L O G                                   - */
/* ------------------------------------------------------------------ */

/*

Version 0.5 

	The very first version

Version 0.6

	Updated to automatically apply to all ABC Forums.

*/

// Function adapted ever so slightly from Linkify: http://ftp.rz.tu-bs.de/pub/mirror/downloads.mozdev.org/greasemonkey/linkify.user.js
(function () {
    const urlRegex = /\b(https?:\/\/[^\s+\"\<\>]+)/ig;

    // tags we will scan looking for un-hyperlinked urls
    var allowedParents = [ "td" ];
    
    var xpath = "//text()[(parent::" + allowedParents.join(" or parent::") + ") and " +
                "contains(translate(., 'HTTP', 'http'), 'http')]";

    var candidates = document.evaluate(xpath, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

    var t0 = new Date().getTime();
    for (var cand = null, i = 0; (cand = candidates.snapshotItem(i)); i++) {
        if (urlRegex.test(cand.nodeValue)) {
            var span = document.createElement("span");
            var source = cand.nodeValue;
            
            cand.parentNode.replaceChild(span, cand);

            urlRegex.lastIndex = 0;
            for (var match = null, lastLastIndex = 0; (match = urlRegex.exec(source)); ) {
                span.appendChild(document.createTextNode(source.substring(lastLastIndex, match.index)));
                
                var a = document.createElement("a");
                a.setAttribute("href", match[0]);
                a.appendChild(document.createTextNode(match[0]));
                span.appendChild(a);

                lastLastIndex = urlRegex.lastIndex;
            }

            span.appendChild(document.createTextNode(source.substring(lastLastIndex)));
            span.normalize();
        }
    }
    var t1 = new Date().getTime();
    //alert((t1 - t0) / 1000);

})();

var links = document.getElementsByTagName("a");
for (i=0; i<links.length; i++){
	var currentLink = links[i];
	var linkHref = currentLink.href;
	var linkHrefParts = linkHref.split(".");
	var extension = linkHrefParts[linkHrefParts.length - 1];
	extension = extension.replace("/","");
	if( extension in { jpeg:1, jpg:1, gif:1 } ){
		var img = document.createElement('img');
		var br = document.createElement('br');
		currentLink.parentNode.insertBefore(img,currentLink.nextSibling);
		currentLink.parentNode.insertBefore(br,currentLink.nextSibling);
		img.src = linkHref;
	}
	
	
}
