obskyr / Explain XKCD Button

// ==UserScript==
// @id             Explain XKCD Button
// @name           Explain XKCD Button
// @icon           http://i.imgur.com/bktNyTc.png
// @version        1.2
// @namespace      http://obskyr.io/
// @homepageURL    http://obskyr.io/
// @author         Samuel (@obskyr)
// @description    Add a link to explainxkcd to each and every XKCD page.
// @include        /^https?://(www.)?xkcd.com/([0-9]+/)?$/
// @exclude        /^https?://(www.)?xkcd.com/404/?$/
// @run-at         document-end
// ==/UserScript==

var comicNumberRe = new RegExp("Permanent link to this comic: https?://xkcd.com/([0-9]+)", "g");
var middleContainer = document.getElementById("middleContainer");
var pageText = middleContainer.textContent || middleContainer.innerText;
var comicNumber = comicNumberRe.exec(pageText)[1];
var titleDiv = document.getElementById("ctitle");
var comicTitle = titleDiv.textContent || middleContainer.innerText;

var comicNavs = document.getElementsByClassName("comicNav");
var explainUrl = "http://www.explainxkcd.com/wiki/index.php/" + comicNumber.toString() + ":_" + encodeURIComponent(comicTitle.split(" ").join("_"));

for (var i = 0; i < comicNavs.length; i++) {
    var nav = comicNavs[i];
    var li = document.createElement("li");
    var button = document.createElement("a");
    var buttonText = document.createTextNode("Explain");
    button.appendChild(buttonText);
    button.setAttribute("href", explainUrl);
    li.appendChild(button);
    nav.insertBefore(li, nav.children[3]);
}