User:Docether/recent2.js

//<nowiki>
// -----------------------------------------------------------------------------
// RC Patrol package for non-admins
// Includes: 2 rollbacks, quick warning tabs, popups and lupin's filter
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// God-like Monobook skin
// (c) 2005 Sam Hocevar <[email protected]>
// $Id: godmode-light.js 1029 2006-01-09 11:05:19Z sam $
// -----------------------------------------------------------------------------

// -----------------------------------------------------------------------------
// Language support, taken from phase3/languages/*
// -----------------------------------------------------------------------------
var nrollbacklink = '<span style="color:black;">[</span>rollback<span style="color:black;">]<span>';
var cantrollback = 'Cannot revert edit; last contributor is only author of this page.';
var alreadyrolled = 'Cannot rollback last edit of [[$1]] by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the page already. Last edit was by [[User:$3|$3]] ([[User talk:$3|Talk]]). ';
var nreverted = 'Reverted edits by [[Special:Contributions/$2|$2]] to last version by $1';

// -----------------------------------------------------------------------------
// Our nice Revert functions
// -----------------------------------------------------------------------------
var gml_vandal, gml_editor, gml_url;

function Revertnorm() {
  var l, token = '', normrevert = false;
  // Look for '&fakeaction=nrollback' in URL
  gml_url = location.pathname;
  l = location.search.substring(1).split('&');
  for (i = 0; i < l.length; i++) {
    var n = l[i].indexOf('=');
    var name = l[i].substring(0, n);
    if (name == 'fakeaction') {
      if (l[i].substring(n + 1) == 'normalrevert')
        normrevert = true;
    } else if (name == 'user') {
      gml_vandal = unescape(l[i].substring(n + 1));
    } else if (name == 'token') {
      token = unescape(l[i].substring(n + 1));
    } else if (name == 'title') {
      gml_url += '?' + l[i];
    }
  }
  if (!normrevert)
    return;
  document.getElementById('bodyContent').innerHTML = 'Please wait, reverting edits by ' + gml_vandal + '...';
  // Avoid XSS kiddies by using a special token
  if (token == '' || token != hex_md5(gml_url + gml_vandal + document.cookie)) {
    document.getElementById('bodyContent').innerHTML += '<br />Bad authentication token!';
    return;
  }

  gml_xmlhttp = HTTPClient();
  if (!gml_xmlhttp)
    return;
  history_url = gml_url + '&action=history&limit=6';
  document.getElementById('bodyContent').innerHTML += '<br />Getting article history (' + history_url + ')...';
  gml_xmlhttp.open("GET", history_url, true);
  gml_xmlhttp.onreadystatechange = RevertStepTwonorm;
  gml_xmlhttp.send(null);
}

function RevertStepTwonorm() {
  if (gml_xmlhttp.readyState != 4)
    return;
  var l;
  var oldid;
  // Get the vandal and new editor names
  gml_vandal = gml_vandal.replace(/_/g, ' ');
  gml_editor = '';
  // Hack for a MediaWiki bug [[category:RC scripted users]]
  xml = gml_xmlhttp.responseText.replace(/<body.*"ns-4">/, '<body class="ns-4">');
  doc = gml_XMLParse(xml);
  if (!doc || !doc.getElementById('pagehistory')) {
    document.getElementById('bodyContent').innerHTML += '<br />Failed to parse XML data returned by the server.';
    document.getElementById('bodyContent').innerHTML += '<br /><b>Hint: try to disable both "Enable section editing by right-clicking on section titles (JavaScript)" and "Edit pages on double click (JavaScript)" in your editing preferences until a proper fix is found</b>.';
    document.getElementById('bodyContent').innerHTML += '<br />Dump of the unparseable page : <br />' + xml.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
    return;
  }
  l = doc.getElementById('pagehistory').getElementsByTagName('li');
  //l = doc.selectSingleNode('//*[@id="pagehistory"]').getElementsByTagName('li');
  for (i = 0; i < l.length; i++) {
    var name = l[i].getElementsByTagName('span')[0].getElementsByTagName('a')[0].innerHTML.replace(/_/g, ' ');
    if (i == 0 && name != gml_vandal) {
      document.getElementById('bodyContent').innerHTML += '<br />Error: Last editor is ' + name + ', not ' + gml_vandal + '!';
      return;
    } else if (i > 0 && name != gml_vandal) {
      oldid = l[i].getElementsByTagName('input')[0].value;
      gml_editor = name;
      break;
    }
  }
  if (gml_editor == '') {
    document.getElementById('bodyContent').innerHTML += '<br />Error: ' + gml_vandal + ' is the only editor!';
    return;
  }

  gml_xmlhttp = HTTPClient();
  if (!gml_xmlhttp)
    return;
  document.getElementById('bodyContent').innerHTML += '<br />Getting article edit form (GET' + gml_url + '&action=edit&oldid=' + oldid + ')...';
  gml_xmlhttp.open('GET', gml_url + '&action=edit&oldid=' + oldid, true);
  gml_xmlhttp.onreadystatechange = RevertStepThreenorm;
  gml_xmlhttp.send(null);
}

function RevertStepThreenorm() {
  if (gml_xmlhttp.readyState != 4)
    return
  var form, newform, l;
  // Insert the downloaded form in our current page, using
  // only hidden form inputs.[[category:RC scripted users]]
  doc = gml_XMLParse(gml_xmlhttp.responseText);
  form = doc.getElementById('editform');
  newform = document.createElement('form');
  l = form.getElementsByTagName('textarea');
  for (i = l.length; i--; ) {
    var t = document.createElement('input');
    t.type = 'hidden';
    t.name = l[i].name;
    t.value = l[i].value;
    newform.appendChild(t);
  }
  l = form.getElementsByTagName('input');
  for (i = l.length; i--; ) {
    if (l[i].name == 'wpSummary') {
      l[i].value = nreverted.replace(/\$1/g, gml_editor).replace(/\$2/g, gml_vandal);
    } else if (l[i].name == 'wpMinoredit') {
      l[i].value = '1';
    } else if (l[i].name == 'wpWatchthis') {
      if (!l[i].checked)
        continue; // Don’t touch the "watch" status
      l[i].value = "on";
    } else if (l[i].name == 'wpPreview') {
      continue;
    } else if (l[i].name == 'wpDiff') {
      continue;
    }
    l[i].type = 'hidden';
    newform.appendChild(l[i]);
  }
  newform.name = form.name;
  newform.method = form.method;
  newform.id = form.id;
  newform.action = form.action;
  document.getElementById('bodyContent').innerHTML += '<br />Submitting form...';
  document.getElementById('bodyContent').appendChild(newform);
  // Submit the form
  newform.submit();
  window.open('http://en.wikipedia.org/w/index.php?title=User talk:' + gml_vandal + '&action=edit',
              'targetname',
    'location=no,toolbar=no,status=no,directories=no,scrollbars=yes');
}

// -----------------------------------------------------------------------------
// Add revert buttons to the page
// -----------------------------------------------------------------------------
function AddRevertButtonsnorm() {
  var l, article = '', vandal;
 // Add 'revert' links to a diff page
  l = document.getElementById('bodyContent').getElementsByTagName('td');
  for (i = 0; i < l.length; i++) {
    if (l[i].className == 'diff-otitle') {
      article = l[i].getElementsByTagName('a')[0].href.split('&')[0].replace(/[^\/]*\/\/[^\/]*/, '');
    } else if (l[i].className == 'diff-ntitle') {
      var toplink = l[i].getElementsByTagName('a')[0].href;
      vandalip = l[i].getElementsByTagName('a')[1].href.split(':')[2].split('=')[1];
      vandal = l[i].getElementsByTagName('a')[1].href.split(':')[2].split('&')[0];
      var t = l[i].innerHTML
      n = t.indexOf('</a>) <br') + t.indexOf('</A>) <BR') + 1; // XXX: WOW HACK!!!!
      if (article != '' && toplink.indexOf('oldid=') == -1) {
        if (vandal == 'Contributions')
         {
        l[i].innerHTML = t.substring(0, n + 5) + ' &nbsp;&nbsp;&nbsp;<strong><a href="' + article + '&fakeaction=normalrevert&user=' + vandalip + '&token=' + hex_md5(article + vandalip + document.cookie) + '">' + nrollbacklink + '</a></str ' + t.substring(n + 5, t.length);
         }
        else 
         {
        l[i].innerHTML = t.substring(0, n + 5) + ' &nbsp;&nbsp;&nbsp;<strong><a href="' + article + '&fakeaction=normalrevert&user=' + vandal + '&token=' + hex_md5(article + vandal + document.cookie) + '">' + nrollbacklink + '</a></str ' + t.substring(n + 5, t.length);
         }
      }
    }
  }
}

// -----------------------------------------------------------------------------
// Language support, taken from phase3/languages/*
// -----------------------------------------------------------------------------
var rollbacklink = '<span style="color:black;">[</span><span style="color:red;">revert as vandalism</span><span style="color:black;">]<br></span>';
var cantrollback = 'Cannot revert edit; last contributor is only author of this page.';
var alreadyrolled = 'Cannot rollback last edit of [[$1]] by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the page already. Last edit was by [[User:$3|$3]] ([[User talk:$3|Talk]]). ';
var revertpage = 'Reverted [[Wikipedia:Vandalism|vandalism]] by [[Special:Contributions/$2|$2]] to last version by $1.';

// -----------------------------------------------------------------------------
// XMLHttpRequest support
// -----------------------------------------------------------------------------
if (document.implementation.createDocument) {
  var gml_xmlparser = new DOMParser();
}

function gml_XMLParse(string) {
  if (document.implementation.createDocument) {
    return gml_xmlparser.parseFromString(string, "text/xml");
  } else if (window.ActiveXObject) {
    var gml_xmldoc = new ActiveXObject("Microsoft.XMLDOM");
    gml_xmldoc.async = "false";
    ret = gml_xmldoc.loadXML(string);      
    if (!ret)
      return null;
    return gml_xmldoc.documentElement;
  }
  return null;
}

var gml_xmlhttp;

function HTTPClient() {
  var gml_http;
  if(window.XMLHttpRequest) {
    gml_http = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    try {
      gml_http = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        gml_http = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        gml_http = false;
      }
    }
  }
  return gml_http;
}

// -----------------------------------------------------------------------------
// MD5 hash calculator
// -----------------------------------------------------------------------------
// Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
// Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
// Distributed under the BSD License
// See http://pajhome.org.uk/crypt/md5 for more info.
// -----------------------------------------------------------------------------
var hexcase = 0;
var b64pad  = "";
var chrsz   = 8;

function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}

function core_md5(x, len)
{
  x[len >> 5] |= 0x80 << ((len) % 32);
  x[(((len + 64) >>> 9) << 4) + 14] = len;

  var a =  1732584193;
  var b = -271733879;
  var c = -1732584194;
  var d =  271733878;

  for(var i = 0; i < x.length; i += 16)
  {
    var olda = a;
    var oldb = b;
    var oldc = c;
    var oldd = d;

    a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819); b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426); c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416); d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); c = md5_ff(c, d, a, b, x[i+10], 17, -42063); b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682); d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);

    a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); c = md5_gg(c, d, a, b, x[i+11], 14,  643717713); b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083); c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438); d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501); a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473); b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);

    a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562); b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353); c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174); d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189); a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); c = md5_hh(c, d, a, b, x[i+15], 16,  530742520); b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);

    a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415); c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571); d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359); d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649); a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259); b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);

    a = safe_add(a, olda);
    b = safe_add(b, oldb);
    c = safe_add(c, oldc);
    d = safe_add(d, oldd);
  }
  return Array(a, b, c, d);

}

function md5_cmn(q, a, b, x, s, t) { return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); }
function md5_ff(a, b, c, d, x, s, t) { return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); }
function md5_gg(a, b, c, d, x, s, t) { return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); }
function md5_hh(a, b, c, d, x, s, t) { return md5_cmn(b ^ c ^ d, a, b, x, s, t); }
function md5_ii(a, b, c, d, x, s, t) { return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); }

function safe_add(x, y)
{
  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  return (msw << 16) | (lsw & 0xFFFF);
}

function bit_rol(num, cnt)
{
  return (num << cnt) | (num >>> (32 - cnt));
}

function str2binl(str)
{
  var bin = Array();
  var mask = (1 << chrsz) - 1;
  for(var i = 0; i < str.length * chrsz; i += chrsz)
    bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
  return bin;
}

function binl2hex(binarray)
{
  var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
  var str = "";
  for(var i = 0; i < binarray.length * 4; i++)
  {
    str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
           hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
  }
  return str;
}
// -----------------------------------------------------------------------------
// Add revert buttons to the page
// -----------------------------------------------------------------------------
function AddRevertButtons() {
  var l, article = '', vandal;
 // Add 'revert' links to a diff page[[category:RC scripted users]]
  l = document.getElementById('bodyContent').getElementsByTagName('td');
  for (i = 0; i < l.length; i++) {
    if (l[i].className == 'diff-otitle') {
      article = l[i].getElementsByTagName('a')[0].href.split('&')[0].replace(/[^\/]*\/\/[^\/]*/, '');
    } else if (l[i].className == 'diff-ntitle') {
      var toplink = l[i].getElementsByTagName('a')[0].href;
      vandalip = l[i].getElementsByTagName('a')[1].href.split(':')[2].split('=')[1];
      vandal = l[i].getElementsByTagName('a')[1].href.split(':')[2].split('&')[0];
      var t = l[i].innerHTML
      n = t.indexOf('</a>) <br') + t.indexOf('</A>) <BR') + 1; // XXX: WOW HACK!!!!
      if (article != '' && toplink.indexOf('oldid=') == -1) {
        if (vandal == 'Contributions')
         {
        l[i].innerHTML = t.substring(0, n + 5) + ' &nbsp;&nbsp;&nbsp;<strong><a href="' + article + '&fakeaction=rollback&vandal=' + vandalip + '&token=' + hex_md5(article + vandalip + document.cookie) + '">' + rollbacklink + '</a></str ' + t.substring(n + 5, t.length);
         }
        else 
         {
        l[i].innerHTML = t.substring(0, n + 5) + ' &nbsp;&nbsp;&nbsp;<strong><a href="' + article + '&fakeaction=rollback&vandal=' + vandal + '&token=' + hex_md5(article + vandal + document.cookie) + '">' + rollbacklink + '</a></str ' + t.substring(n + 5, t.length);
         }
      }
    }
  }
}

// -----------------------------------------------------------------------------
// Our nice Revert functions
// -----------------------------------------------------------------------------
function PerformRevert() {
  var l, token = '', revert = false;
  // Look for '&fakeaction=rollback' in URL
  gml_url = location.pathname;
  l = location.search.substring(1).split('&');
  for (i = 0; i < l.length; i++) {
    var n = l[i].indexOf('=');
    var name = l[i].substring(0, n);
    if (name == 'fakeaction') {
      if (l[i].substring(n + 1) == 'rollback')
        revert = true;
    } else if (name == 'vandal') {
      gml_vandal = unescape(l[i].substring(n + 1));
    } else if (name == 'token') {
      token = unescape(l[i].substring(n + 1));
    } else if (name == 'title') {
      gml_url += '?' + l[i];
    }
  }
  if (!revert)
    return;
  document.getElementById('bodyContent').innerHTML = '<strong>Please wait, reverting edits by ' + gml_vandal + '...</strong>';
  // Avoid XSS kiddies by using a special token
  if (token == '' || token != hex_md5(gml_url + gml_vandal + document.cookie)) {
    document.getElementById('bodyContent').innerHTML += '<br />Error<span style="color:red;">Bad authentication token</font>';
    return;
  }

  gml_xmlhttp = HTTPClient();
  if (!gml_xmlhttp)
    return;
  history_url = gml_url + '&action=history&limit=6';
  document.getElementById('bodyContent').innerHTML += '<br /><span style="color:blue;">Getting article history (' + history_url + ')...</span>';
  gml_xmlhttp.open("GET", history_url, true);
  gml_xmlhttp.onreadystatechange = RevertStepTwo;
  gml_xmlhttp.send(null);
}

function RevertStepTwo() {
  if (gml_xmlhttp.readyState != 4)
    return;
  var l;
  var oldid;
  // Get the vandal and new editor names [[category:RC scripted users]]
  gml_vandal = gml_vandal.replace(/_/g, ' ');
  gml_editor = '';
  // Hack for a MediaWiki bug
  xml = gml_xmlhttp.responseText.replace(/<body.*"ns-4">/, '<body class="ns-4">');
  doc = gml_XMLParse(xml);
  if (!doc || !doc.getElementById('pagehistory')) {
    document.getElementById('bodyContent').innerHTML += '<br />Failed to parse XML data returned by the server.';
    document.getElementById('bodyContent').innerHTML += '<br /><b>Hint: try to disable both "Enable section editing by right-clicking on section titles (JavaScript)" and "Edit pages on double click (JavaScript)" in your editing preferences until a proper fix is found</b>.';
    document.getElementById('bodyContent').innerHTML += '<br />Dump of the unparseable page : <br />' + xml.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
    return;
  }
  l = doc.getElementById('pagehistory').getElementsByTagName('li');
  //l = doc.selectSingleNode('//*[@id="pagehistory"]').getElementsByTagName('li');
  for (i = 0; i < l.length; i++) {
    var name = l[i].getElementsByTagName('span')[0].getElementsByTagName('a')[0].innerHTML.replace(/_/g, ' ');
    if (i == 0 && name != gml_vandal) {
      document.getElementById('bodyContent').innerHTML += '<br />Error: Last editor is ' + name + ', not ' + gml_vandal + '. The vandal may have already been reverted.';
      return;
    } else if (i > 0 && name != gml_vandal) {
      oldid = l[i].getElementsByTagName('input')[0].value;
      gml_editor = name;
      break;
    }
  }
  if (gml_editor == '') {
    document.getElementById('bodyContent').innerHTML += '<br />Error: ' + gml_vandal + ' is the only editor!';
    return;
  }

  gml_xmlhttp = HTTPClient();
  if (!gml_xmlhttp)
    return;
  document.getElementById('bodyContent').innerHTML += '<br /><span style="color:blue;">Getting article edit form (GET' + gml_url + '&action=edit&oldid=' + oldid + ')...</span>';
  gml_xmlhttp.open('GET', gml_url + '&action=edit&oldid=' + oldid, true);
  gml_xmlhttp.onreadystatechange = RevertStepThree;
  gml_xmlhttp.send(null);
}

function RevertStepThree() {
  if (gml_xmlhttp.readyState != 4)
    return
  var form, newform, l;
  // Insert the downloaded form in our current page, using
  // only hidden form inputs.
  doc = gml_XMLParse(gml_xmlhttp.responseText);
  form = doc.getElementById('editform');
  newform = document.createElement('form');
  l = form.getElementsByTagName('textarea');
  for (i = l.length; i--; ) {
    var t = document.createElement('input');
    t.type = 'hidden';
    t.name = l[i].name;
    t.value = l[i].value;
    newform.appendChild(t);
  }
  l = form.getElementsByTagName('input');
  for (i = l.length; i--; ) {
    if (l[i].name == 'wpSummary') {
      l[i].value = revertpage.replace(/\$1/g, gml_editor).replace(/\$2/g, gml_vandal);
    } else if (l[i].name == 'wpMinoredit') {
      l[i].value = '1';
    } else if (l[i].name == 'wpWatchthis') {
      if (!l[i].checked)
        continue; // Don’t touch the "watch" status
      l[i].value = "on";
    } else if (l[i].name == 'wpPreview') {
      continue;
    } else if (l[i].name == 'wpDiff') {
      continue;
    }
    l[i].type = 'hidden';
    newform.appendChild(l[i]);
  }
  newform.name = form.name;
  newform.method = form.method;
  newform.id = form.id;
  newform.action = form.action;
  document.getElementById('bodyContent').innerHTML += '<br /><strong>Submitting form...</strong>';
  document.getElementById('bodyContent').appendChild(newform);
  // Submit the form [[category:RC scripted users]]
  newform.submit();
  window.open('http://en.wikipedia.org/w/index.php?title=User talk:' + gml_vandal + '&action=edit',
              'targetname',
    'location=no,toolbar=no,status=no,directories=no,scrollbars=yes');
}
// -----------------------------------------------------------------------------
// Modify the page once it is loaded
// -----------------------------------------------------------------------------
if (window.addEventListener) {
  window.addEventListener("load", Revertnorm, false);
  window.addEventListener("load", AddRevertButtonsnorm, false);
  window.addEventListener("load", PerformRevert, false);
  window.addEventListener("load", AddRevertButtons, false);
} else if (window.attachEvent) {
  window.attachEvent("onload", Revertnorm);
  window.attachEvent("onload", AddRevertButtonsnorm);
  window.attachEvent("onload", PerformRevert);
  window.attachEvent("onload", AddRevertButtons);
}

// ============= test-n.js ==============
function tnaddlilink(url, name)
{
  var na = document.createElement('a');
  na.setAttribute('href', url);

  var txt = document.createTextNode(name);
  na.appendChild(txt);

  var li = document.createElement('li');
  li.appendChild(na);
  return li;
}

function testn(number)
{
  var f = document.editform, t = f.wpTextbox1;
  if (t.value.length > 0)
    t.value += '\n';
  t.value +="====" + "Regarding edits made during [[{{subst:CURRENTMONTHNAME}} {{subst:CURRENTDAY}}]] [[{{subst:CURRENTYEAR}}]] ([[UTC]])" + "====" + " {{subst:" + "test" + number + "}} " + "''If this is an [[IP address]], and it is shared by multiple users, ignore this warning if you did not make any [[Wikipedia:vandalism|unconstructive]] edits.'' " + "~" + "~" + "~" + "~";
  f.wpSummary.value = "User notice:" + " test" + number;
}

function warningn()
{
  var f = document.editform, t = f.wpTextbox1;
  if (t.value.length > 0)
    t.value += '\n';
  t.value +="====" + "Regarding edits made during [[{{subst:CURRENTMONTHNAME}} {{subst:CURRENTDAY}}]] [[{{subst:CURRENTYEAR}}]] ([[UTC]])" + "====" + " {{subst:" + "bv" + "}} " + "''If this is an [[IP address]], and it is shared by multiple users, ignore this warning if you did not make any [[Wikipedia:vandalism|malicious]] edits.'' " + "~" + "~" + "~" + "~";
  f.wpSummary.value = "User notice:" + " bv";
}

function testbl(number)
{
  var f = document.editform, t = f.wpTextbox1;
  if (t.value.length > 0)
    t.value += '\n';
  t.value +="====" + "Regarding edits made during [[{{subst:CURRENTMONTHNAME}} {{subst:CURRENTDAY}}]] [[{{subst:CURRENTYEAR}}]] ([[UTC]])" + "====" + " {{subst:" + "Blank" + number + "}} " + "''If this is an [[IP address]], and it is shared by multiple users, ignore this warning if you did not make any [[Wikipedia:vandalism|malicious]] edits.'' " + "~" + "~" + "~" + "~";
  f.wpSummary.value = "User notice:" + " Blank" + number;
}

function spam()
{
  var f = document.editform, t = f.wpTextbox1;
  if (t.value.length > 0)
    t.value += '\n';
  t.value +="====" + "Regarding edits made during [[{{subst:CURRENTMONTHNAME}} {{subst:CURRENTDAY}}]] [[{{subst:CURRENTYEAR}}]] ([[UTC]])" + "====" + " {{subst:" + "spam}} " + "''If this is an [[IP address]], and it is shared by multiple users, ignore this warning if you were not the one who added [[Wikipedia:spam|spam]] links.'' " + "~" + "~" + "~" + "~";
  f.wpSummary.value = "User notice:" + " spam";
}

function spamn(number)
{
  var f = document.editform, t = f.wpTextbox1;
  if (t.value.length > 0)
    t.value += '\n';
  t.value +="====" + "Regarding edits made during [[{{subst:CURRENTMONTHNAME}} {{subst:CURRENTDAY}}]] [[{{subst:CURRENTYEAR}}]] ([[UTC]])" + "====" + " {{subst:" + "spam" + number + "}} " + "''If this is an [[IP address]], and it is shared by multiple users, ignore this warning if you were not the one who added [[Wikipedia:spam|spam]] links.'' " + "~" + "~" + "~" + "~";
  f.wpSummary.value = "User notice:" + " spam" + number;
}

//Quick warning tabs
$(add_testn_tabs);
function add_testn_tabs() 
{ 
var c1 = document.getElementById('column-one'); 
var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0];
if (document.title.indexOf("Editing User talk:") != -1)
    {
      tabs.appendChild(tnaddlilink('javascript:testn(1)',"t"));
      tabs.appendChild(tnaddlilink('javascript:testn(2)',"t2"));
      tabs.appendChild(tnaddlilink('javascript:testn(3)',"t3"));
      tabs.appendChild(tnaddlilink('javascript:warningn()',"v"));
      tabs.appendChild(tnaddlilink('javascript:testbl(2)',"b"));
      tabs.appendChild(tnaddlilink('javascript:testbl(3)',"b2"));
      tabs.appendChild(tnaddlilink('javascript:spam()',"s"));
      tabs.appendChild(tnaddlilink('javascript:spamn(2)',"s1"));
      tabs.appendChild(tnaddlilink('javascript:testn(3)',"w"));
      if(document.getElementById('ca-delete'))
      {
        document.getElementById('ca-delete').firstChild.innerHTML = '[d]';
      }  
      if(document.getElementById('ca-move'))
      {
      document.getElementById('ca-move').firstChild.innerHTML = '[m]';
      }  
      if(document.getElementById('ca-watch'))
      {
      document.getElementById('ca-watch').firstChild.innerHTML = '[w]';
       }  
      if(document.getElementById('ca-unwatch'))
      {
      document.getElementById('ca-unwatch').firstChild.innerHTML = '[uw]';
      }
      if(document.getElementById('ca-edit'))
      {
        document.getElementById('ca-edit').firstChild.innerHTML = 'Edit';
      }
      if(document.getElementById('ca-talk'))
      {
        document.getElementById('ca-talk').firstChild.innerHTML = 'Talk';
      }
      if(document.getElementById('ca-protect'))
      {
        document.getElementById('ca-protect').firstChild.innerHTML = 'P (off)';
      }
      if(document.getElementById('ca-unprotect'))
      {
        document.getElementById('ca-unprotect').firstChild.innerHTML = 'P (on)';
      }
    }
}
//END

// [[User:Lupin/popupsdev.js]] - please include this line 

document.write('<script type="text/javascript" src="' 
             + 'http://en.wikipedia.org/w/index.php?title=User:Lupin/popupsdev.js' 
             + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');

// [[User:Lupin/recent2.js]] - please include this line
mw.loader.load(
             'https://en.wikipedia.org/w/index.php?title=User:Lupin/recent2.js'
             + '&action=raw&ctype=text/javascript&dontcountme=s');
//</nowiki>

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.