User:Bradv/AjaxPatrolLinks.js

function ajaxPatrolLinks(callback) {    var a = document.evaluate('//div[@class="patrollink"]/a', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue;    if (a && typeof sajax_init_object !== 'undefined') {        var div = a.parentNode;        var url = a.href;        a.onclick = function (event) {            var aj = sajax_init_object();            if (aj) {                while (div.firstChild) { div.removeChild(div.firstChild) };                div.appendChild(document.createTextNode('[Marking as patrolled...]'));                aj.onreadystatechange = function () {                    if (aj.readyState == 4 && aj.status == 200) {                        while (div.firstChild) { div.removeChild(div.firstChild) };                        div.appendChild(document.createTextNode('[Marked as patrolled]'));                        aj.onreadystatechange = null;                        if (callback) {                            callback();                        }                    }                }                                aj.open("GET", url, true);                aj.send(null);                return false;            }        }    }}addOnloadHook(ajaxPatrolLinks);