Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
// See [[w:en:User:Mr.Z-man/closeAFD]] for documentation
if (wgPageName.indexOf('Commons:Deletion_requests/') != -1) {
var closeDR_PageName = wgPageName.replace(/_/g, ' ');
var closeDR_isAdmin = (wgUserGroups.toString().indexOf('sysop') != -1);
var closeDR_AJAXnumber = 0;

function closeDR_init() {
  if (!wfSupportsAjax()) {
    jsMsg('<span style="color:red; font-size:120%">Your browser does not seem to support AJAX, which is required for the closeDR script.</span>');
    return;
  }
  form = '<div id="closeDR_initialform">'+
    '<h3>Closing '+closeDR_PageName+'</h3>'+
    '<label for="closeDR_reason">Additional closing rationale (optional):</label><input type="text" id="closeDR_reason" name="closeDR_reason" />'+
    '<label for="closeDR_speedy">Speedy:</label><input type="checkbox" id="closeDR_speedy" name="closeDR_speedy" /><br /><br />'+
    '<input type="button" id="closeDR_delete_button" name="closeDR_delete_button" value="Deleted" onclick="closeDR_close(\'Deleted\')" />'+
    '<input type="button" id="closeDR_keep_button" name="closeDR_keep_button" value="Keep" onclick="closeDR_close(\'Kept\')" />'+
    '<input type="button" id="closeDR_other_button" name="closeDR_other_button" value="Other" onclick="closeDR_other()" /><br />'+
    '<input type="hidden" value="0" id="closeDR_dodelete" name="closeDR_dodelete" /></div><div id="closeDR_extra"></div>';
  jsMsg(form);
  if (!closeDR_isAdmin) {
    document.getElementById('closeDR_delete_button').disabled = true;
    document.getElementById('closeDR_deleteredir').disabled = true;
  }
}
function closeDR_other() {
  document.getElementById('closeDR_extra').innerHTML += '<br /><br /><label for="closeDR_otherclose">Other: </label><input type="text" id="closeDR_otherclose" name="closeDR_otherclose" />'+
    '<input type="button" id="closeDR_other_delete_button" name="closeDR_other_delete_button" value="Delete article" onclick="closeDR_otherdelete()" />'+
    '<input type="button" id="closeDR_other_nodelete_button" name="closeDR_other_nodelete_button" value="Don\'t delete" onclick="closeDR_otherkeep()" />';
  if (!closeDR_isAdmin) {
    document.getElementById('closeDR_other_delete_button').disabled = true;
  }
}
function closeDR_otherdelete() {
  document.getElementById('closeDR_dodelete').value = 1;
  close = document.getElementById('closeDR_otherclose').value;
  closeDR_close(close);
}
function closeDR_otherkeep() {
  close = document.getElementById('closeDR_otherclose').value;
  closeDR_close(close);
}
function closeDR_close(close) {
  closetype = close;
  var dodelete = false;
  if (closetype == "delete" || document.getElementById('closeDR_dodelete').value == 1) {
    dodelete = true;
  }
  var reason = document.getElementById('closeDR_reason').value;
  if (reason != '') {
    reason = ' '+reason;
  }
  if (document.getElementById('closeDR_speedy').checked == true) {
    close = "speedy "+close;
  }
  jsMsg('<ul id="closeDR_status"></ul><ul id="closeDR_finish"></ul>');
  document.getElementById('closeDR_finish').innerHTML += '<span id="closeDR_finished_wrapper"><span id="closeDR_finished_main" style="display:none"><li id="closeDR_done"><b>Done (<a href="/wiki/'+encodeURI(closeDR_PageName)+'?action=purge" title="'+closeDR_PageName+'">Reload page</a>)</b></li></span></span>';
  var DRpage = closeDR_getPageText(closeDR_PageName);
  DRpage = "{"+"{delh}}"+ DRpage + "\n ---- '''"+close+"'''."+reason+' ~~'+'~~\n' + '{'+'{delf}}';
  token = closeDR_getToken(true);
  pagetitle = wgTitle.substring(wgTitle.indexOf('/')+1);
  debatename = pagetitle;

  closeDR_editPage(closeDR_PageName, DRpage, token, "Closing debate, result was " + close);
  var DRlink = '[['+closeDR_PageName+']]';
  if (dodelete) {
    closeDR_deletePage(pagetitle, encodeURIComponent(token), DRlink, false, false);
    closeDR_deletePage("Talk:"+pagetitle, encodeURIComponent(token), DRlink, false, false);
  }
  var articlepage = ''
  if (closetype != "delete" && !dodelete ) {
    articlepage = closeDR_getPageText(pagetitle);
    articlepage = articlepage.replace(/\{\{\s*delete\s*\|\s*[^(}})]*\}\}/ig, '');
  }
  if (!dodelete) {
    closeDR_editPage(pagetitle, articlepage, token, DRlink + " closed as " + close);
  }
  document.getElementById('closeDR_finished_main').style.display = '';
}

function closeDR_getPageText(title) {
  document.getElementById('closeDR_status').innerHTML += '<li id="closeDR_get'+escape(title)+'">Getting <a href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a></li>';
  var req = sajax_init_object();
  req.open("GET", wgScriptPath + "/api.php?action=query&prop=revisions&rvprop=content&format=json&indexpageids=1&titles="+encodeURIComponent(title), false);
  req.send(null);
  var response = eval('(' + req.responseText + ')');
  pageid = response['query']['pageids'][0];
  if (pageid == "-1") {
    document.getElementById('closeDR_get'+escape(title)).innerHTML = '<a class="new" href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a> does not exist';
    delete req;
    return '';
  }
  pagetext = response['query']['pages'][pageid]['revisions'][0]['*'];
  delete req;
  document.getElementById('closeDR_get'+escape(title)).innerHTML = 'Got <a href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a>';
  return pagetext;
}
function closeDR_getToken(show) {
  if (show) {
    document.getElementById('closeDR_status').innerHTML += '<li id="closeDR_gettoken">Getting token</li>';
  }
  var req = sajax_init_object();
  req.open("GET", wgScriptPath + "/api.php?action=query&prop=info&indexpageids=1&intoken=edit&format=json&titles="+encodeURIComponent(closeDR_PageName), false);
  req.send(null);
  var response = eval('(' + req.responseText + ')');
  pageid = response['query']['pageids'][0];
  token = response['query']['pages'][pageid]['edittoken'];
  delete req;
  if (show) {
    document.getElementById('closeDR_gettoken').innerHTML = 'Got token';
  }
  return token;
}
function closeDR_editPage(title, newtext, token, summary) {
  document.getElementById('closeDR_finished_wrapper').innerHTML = '<span id="closeDR_AJAX_finished_'+closeDR_AJAXnumber+'" style="display:none">' + document.getElementById('closeDR_finished_wrapper').innerHTML + '</span>';
  var func_id = closeDR_AJAXnumber;
  closeDR_AJAXnumber++;
  document.getElementById('closeDR_status').innerHTML += '<li id="closeDR_edit'+escape(title)+'">Editing <a href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a></li>';
  var req = sajax_init_object();
  var params = "action=edit&format=json&token="+encodeURIComponent(token)+"&title="+encodeURIComponent(title)+"&text="+encodeURIComponent(newtext)+"&notminor=1&unwatch=1&summary="+encodeURIComponent(summary);
  url = wgScriptPath + "/api.php";
  req.open("POST", url, true);
  req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  req.setRequestHeader("Content-length", params.length);
  req.setRequestHeader("Connection", "close");
  req.onreadystatechange = function() {
    if(req.readyState == 4 && req.status == 200) {
      response = eval('(' + req.responseText + ')');
      try {
        if (response['edit']['result'] == "Success") {
          document.getElementById('closeDR_edit'+escape(title)).innerHTML = 'Saved <a href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a>';
        } else {
          document.getElementById('closeDR_edit'+escape(title)).innerHTML = '<div style="color:red"><b>Edit failed on <a href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a></b></div>. Error info:' +response['error']['code'] + ' : ' + response['error']['info'];
        }
      }
      catch(err) {
          document.getElementById('closeDR_edit'+escape(title)).innerHTML = '<div style="color:red"><b>Edit failed on <a href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a></b></div>';
      }
      document.getElementById('closeDR_AJAX_finished_'+func_id).style.display = '';
      delete req;
    }
  }
  req.send(params)
}
function closeDR_deletePage(title, token, summary, isredirect, retry) {
  document.getElementById('closeDR_finished_wrapper').innerHTML = '<span id="closeDR_AJAX_finished_'+closeDR_AJAXnumber+'" style="display:none">' + document.getElementById('closeDR_finished_wrapper').innerHTML + '</span>';
  var func_id = closeDR_AJAXnumber;
  closeDR_AJAXnumber++;
  if (!retry) {
    document.getElementById('closeDR_status').innerHTML += '<li id="closeDR_delete'+escape(title)+'">Deleting <a href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a></li>';
  }
  var req = sajax_init_object();
  var params = "action=delete&format=json&token="+token+"&title="+encodeURIComponent(title)+"&reason="+encodeURIComponent(summary);
  url = wgScriptPath + "/api.php";
  req.open("POST", url, true);
  req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  req.setRequestHeader("Content-length", params.length);
  req.setRequestHeader("Connection", "close");
  req.onreadystatechange = function() {
    if(req.readyState == 4 && req.status == 200) {
      response = eval('(' + req.responseText + ')');
      try {
        if (response['delete']['title']) {
          document.getElementById('closeDR_delete'+escape(title)).innerHTML = 'Deleted <a class="new" href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a>';
        }
      }
      catch(err) {
        if (response['error']['code'] == "missingtitle") {
          document.getElementById('closeDR_delete'+escape(title)).innerHTML = '<a class="new" href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a> does not exist';
        } else {
          if (retry) {
            document.getElementById('closeDR_delete'+escape(title)).innerHTML = '<span style="color:red"><b>Deletion error on <a href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a>. Error info:' +response['error']['code'] + ' : ' + response['error']['info'] + '</b></span>';
          }
        }
      }
      document.getElementById('closeDR_AJAX_finished_'+func_id).style.display = '';
      delete req;
    }
  }
  req.send(params)
}

function closeDR_addLink() {
  mw.util.addPortletLink("p-cactions", "javascript:closeDR_init()", "Close", "ca-closeDR", "Close DR");
}

$(closeDR_addLink);
}