Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
importScript ('User:Henrik/js/afc-helper.js');
//importScript('User:^demon/csd.js'); new version below.
importScript('User:Kwsn/csd.js');
//importScript('User:DerHexer/rollback.js');
//importScript('User:AzaToth/morebits.js');
//importScript('User:AzaToth/twinklefluff.js');
//importScript('User:AzaToth/twinklewarn.js');
//importScript('User:AzaToth/twinklediff.js');
//importScript('User:AzaToth/twinklexfd.js');
//importScript('User:AzaToth/twinklesalt.js');
//importScript('User:AzaToth/twinkledelimages.js');
//importScript('User:AzaToth/twinkleimage.js');
//importScript('User:AzaToth/twinklebatchdelete.js');
//importScript('User:AzaToth/twinkledeprod.js')

TwinkleConfig = {
        revertMaxRevisions              :       50,
        userTalkPageMode                :       'window',
        showSharedIPNotice              :       true,
        openTalkPage                    :       [ 'norm', 'vand' ],
        openTalkPageOnAutoRevert        :       false,
        openAOLAnonTalkPage             :       false,
        summaryAd                       :       " using [[WP:TWINKLE|TW]]",
        deletionSummaryAd               :       " using [[WP:TWINKLE|TW]]",
        protectionSummaryAd             :       " using [[WP:TWINKLE|TW]]",
        watchSpeedyPages                :       [ 'g3', 'g5', 'g10', 'g11', 'g12' ],
        watchProdPages                  :       true,
        openUserTalkPageOnSpeedyDelete  :       [ ],
        watchRevertedPages              :       [ ],
        markRevertedPagesAsMinor        :       [ 'agf', 'norm', 'vand', 'torev' ],
        deleteTalkPageOnDelete          :       false,
        markWarningsAsMinor             :       true,
        markAIVReportAsMinor            :       true,
        markSpeedyPagesAsMinor          :       true,
        markProdPagesAsMinor            :       true,
        confirmUsernameToAIV            :       true,
        watchWarnings                   :       false,
        toolboxButtons                  :       [ ]
};

$(function () {
	var url = unescape(document.location.toString()).replace('_', ' ');
 
	if (url.indexOf('&diff=') > -1) {
		var otitle1 = document.getElementById('mw-diff-otitle1');
 
		if (otitle1) {
			var oldlink = otitle1.getElementsByTagName('a')[0];
 
			if (oldlink) {
				var oldid = oldlink.href.substring(oldlink.href.indexOf('oldid=') + 6)
				var title;
 
				if (url.indexOf('http://en.wikipedia.org/wiki/') >= 0) {
					title = url.substring(url.indexOf('http://en.wikipedia.org/wiki/') + 29);
					if (title.indexOf('?') >= 0) title = title.substring(0, title.indexOf('?'));
 
				} else if (url.indexOf('title=') >= 0) {
					title = url.substring(url.indexOf('title=') + 6);
					if (title.indexOf('&') >= 0) title = title.substring(0, title.indexOf('&'));
				}
 
				if (title) {
					var rvSpan = document.createElement('span');
					rvSpan.id = 'mw-diff-orevertto';
					rvSpan.style.fontWeight = 'bold';
					otitle1.insertBefore(rvSpan, otitle1.lastChild.nextSibling);
 
					var rvLink = document.createElement('a');
					rvLink.href = 'http://en.wikipedia.org/w/index.php?title=' + title 
						+ '&action=edit&oldid=' + oldid + '&script=rv';
					rvLink.innerHTML = 'revert-to';
					rvLink.title = 'revert';
					rvLink.accessKey = 'r';
					rvSpan.insertBefore(rvLink, rvSpan.lastChild);
					rvSpan.innerHTML = ' [' + rvSpan.innerHTML + ']';
				}
			}
 
			var prevLink = document.getElementById('differences-prevlink');
			if (prevLink) prevLink.accessKey = 'z';
 
			var nextLink = document.getElementById('differences-nextlink');
			if (nextLink) nextLink.accessKey = 'x';
		}
	}
 
	if (url.indexOf('&script=rv') > -1) {
		var wpSummary = document.getElementById('wpSummary');
 
		if (wpSummary) {
			wpSummary.value = 'revert';
			var editForm = document.getElementById('editform');
			if (editForm) editForm.submit();
		}
	}
 
	if (url.indexOf('Special:Recentchanges') > -1) {
		var rcOptionsQuery = document.evaluate('//div[@class="rcoptions"]',
			document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
 
		if (rcOptionsQuery.snapshotItem(0)) {
			var rcOptions = rcOptionsQuery.snapshotItem(0);
 
			if (url.indexOf('&script=rcopenall') > -1) {
				var newChangesFrom = rcOptions.getElementsByTagName('a')[14];
 
				if (newChangesFrom) {
					var newChangesFromHref = newChangesFrom.href;
 
					var openAllDiv = document.createElement('div');
					openAllDiv.id = 'mw-openall';
					openAllDiv.style.fontWeight = 'bold';
					rcOptions.insertBefore(openAllDiv, rcOptions.lastChild.nextSibling);
 
					var openAllLink = document.createElement('a');
					openAllLink.href = newChangesFromHref + '&namespace=0&script=rcopenall';
					openAllLink.innerHTML = 'Open next batch in tabs';
					openAllLink.accessKey = 'q';
					openAllDiv.insertBefore(openAllLink, openAllDiv.lastChild);
				}
 
				var rcListQuery = document.evaluate('//ul[@class="special"]',
					document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
 
				if (rcListQuery.snapshotItem(0)) {
					var rcList = rcListQuery.snapshotItem(0);
 
					for (var i = 0; i < rcList.childNodes.length; i++) {
						var rcLink = rcList.childNodes[i].childNodes[1];
						if (rcLink) window.open(rcLink.href);
					}
				}
 
			} else {
				var openAllLink = document.createElement('a');
				openAllLink.href = 'http://en.wikipedia.org/wiki/Special:Recentchanges?limit=10&namespace=0&hideliu=1&script=rcopenall';
				openAllLink.innerHTML = 'Open next batch in tabs';
				rcOptions.insertBefore(openAllLink, rcOptions.lastChild.nextSibling);
			}
		}
	}
});

$(function(){
    var fix=function(id, text){
        var el=document.getElementById(id);
        if(!el) return;
        for(el=el.firstChild; el && el.nodeName!='A'; el=el.nextSibling);
        if(!el) return;
        while(el.firstChild) el.removeChild(el.firstChild);
        el.appendChild(document.createTextNode(text));
    }
 
    /* Add lines as necessary. Use the Firefox DOM inspector or some such to determine
     * the appropriate IDs.
     */
//(disabled via commenting)    fix('ca-talk', 'discussion');
//    fix('ca-delete', 'nuke this page');
});