User:Ais523/autotag.js

From Wikipedia, the free encyclopedia
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.
//<pre><nowiki>
//From WP:US/S/Get Tidy Title, a prereq for my AutoTag script
function get_tidy_title()
{
  var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href;
  // cut everything up to "title=" from the start and everything past "&action=edit" from the end
  editlk = editlk.substring(editlk.indexOf('title=') + 6, editlk.lastIndexOf('&action=edit'));

  return editlk;
}

function showatmenu()
{
  if(document.getElementById("atmenu").style.display=="none")
    document.getElementById("atmenu").style.display="block";
  else
    document.getElementById("atmenu").style.display="none";
}

// AutoTag's tagging function. 
function atspeedy(dbplate)
{
  var atmenuhtm="<TABLE CLASS='atmenu' STYLE='background:#FFDDDD; width:100%'><TR><TD>";
  //This 'form' is a bit unusual. The names of some of the hidden inputs are carefully
  //selected so that an edit-page window will come up when the form is submitted;
  //for instance, <INPUT TYPE='hidden' NAME='action' VALUE='edit'> becomes ?action=edit
  //in the bar when the form is submitted! So although the page appears to be submitting
  //to itself, that's actually just so we hit /w/index.php or the /wiki/User talk: page
  //(either works with action=edit). Other inputs are used by AutoTag to finish off the
  //edit and to prompt the user for information (such as sig format). I have no idea how
  //portable all this is, but it seems to work in IE.
  atmenuhtm+="<FORM ACTION='"+location.href+"' METHOD='GET'>";
  atmenuhtm+="<INPUT TYPE='hidden' NAME='action' VALUE='edit'/>";
  atmenuhtm+="<INPUT TYPE='hidden' NAME='withautotag' VALUE='tag'/>";
  var pgTitle=get_tidy_title();
  atmenuhtm+="<INPUT TYPE='hidden' NAME='title' VALUE='"+pgTitle+"'/>";
  var paramneeded;
  if(dbplate.indexOf("!")==0)
  {
    dbplate=dbplate.substr(1);
    paramneeded=true;
  }
  atmenuhtm+="<INPUT TYPE='hidden' NAME='autotagflag' VALUE='"+(paramneeded?1:0)+"'/>";
  atmenuhtm+="<NOBR><B>You have chosen to tag this page with {"+"{"+dbplate+"}}.</B></NOBR><BR/>";
  var edsum="Tagged with {"+"{"+dbplate+"}} using [[WP:US|user scripts]]";
  atmenuhtm+="<NOBR>Edit summary: <INPUT TYPE='text' NAME='autotagsum' "+
    "VALUE=\""+edsum+"\"/></NOBR><BR/>";
  if(paramneeded&&dbplate.indexOf("db-")==0)
    atmenuhtm+="<NOBR>Original location: ";
  else if(paramneeded)
    atmenuhtm+="<NOBR>Reason: ";
  if(paramneeded) //This could be changed to guess which page you want
    atmenuhtm+="<INPUT TYPE='text' NAME='autotag-n' VALUE=''/></NOBR><BR/>";
  atmenuhtm+="<NOBR><INPUT TYPE='radio' NAME='autotagpre' VALUE='0' CHECKED>Do the "+
    "edit</INPUT>";
  atmenuhtm+="<INPUT TYPE='radio' NAME='autotagpre' VALUE='1'>Preview only</INPUT></NOBR><BR/>";
  atmenuhtm+="<INPUT TYPE='hidden' NAME='autotagdp' VALUE='"+dbplate+"'/>";
  atmenuhtm+="<INPUT TYPE='submit' VALUE='Tag with AutoTag'/>";
  atmenuhtm+="</FORM></TD><TD><B><I>Reminder:</I></B><BR/>";
  if(dbplate.indexOf("db-")==0)
    atmenuhtm+="Please only use the reasons given for speedy deletions. In other cases, use PROD or XfD.";
  else if(dbplate.indexOf("prod")==0)
    atmenuhtm+="Please remember to check whether the page has been prodded or XfDd before; each page can only be prodded once.";
  atmenuhtm+="<BR/>If you have not used this tag before, please preview it to check that it's appropriate.</TR></TABLE>";
  document.getElementById("atform").innerHTML=atmenuhtm;
  document.getElementById("atform").scrollIntoView(true);
}

// AutoTag's warning function. warnplate is the template to use (possibly check for
// -n somehow?), blockreq, if true, signifies that instead of a warning a request to
// block should be posted on AIV, AN/I, AN3, or PAIN, or a protection request at RPP.
function atwarn(warnplate,blockreq,edsum,warnlevel)
{
  if(blockreq)
  { //Just link to the appropriate page for the time being; this can be enhanced
    //(especially wrt AIV) later
    location.href="http://en.wikipedia.org/wiki/WP:"+warnplate;
    return;
  }
  var atmenuhtm="<TABLE CLASS='atmenu' STYLE='background:#FFDDDD; width:100%'><TR><TD>";
  //This 'form' is a bit unusual. The names of some of the hidden inputs are carefully
  //selected so that an edit-page window will come up when the form is submitted;
  //for instance, <INPUT TYPE='hidden' NAME='action' VALUE='edit'> becomes ?action=edit
  //in the bar when the form is submitted! So although the page appears to be submitting
  //to itself, that's actually just so we hit /w/index.php or the /wiki/User talk: page
  //(either works with action=edit). Other inputs are used by AutoTag to finish off the
  //edit and to prompt the user for information (such as sig format). I have no idea how
  //portable all this is, but it seems to work in IE.
  atmenuhtm+="<FORM ACTION='"+location.href+"' METHOD='GET'>";
  atmenuhtm+="<INPUT TYPE='hidden' NAME='action' VALUE='edit'/>";
  atmenuhtm+="<INPUT TYPE='hidden' NAME='section' VALUE='new'/>";
  atmenuhtm+="<INPUT TYPE='hidden' NAME='withautotag' VALUE='warn'/>";
  var pgTitle=get_tidy_title();
  atmenuhtm+="<INPUT TYPE='hidden' NAME='title' VALUE='"+pgTitle+"'/>";
  var siginplate;
  var npossible;
  var nneeded;
  if(warnplate.indexOf("~")==0)
  {
    warnplate=warnplate.substr(1);
    siginplate=true;
  }
  if(warnplate.indexOf("!")==0)
  {
    warnplate=warnplate.substr(1);
    nneeded=true;
  }
  if(warnplate.indexOf("|")==0)
  {
    warnplate=warnplate.substr(1);
    npossible=true;
  }
  atmenuhtm+="<INPUT TYPE='hidden' NAME='autotagflag' VALUE='"+((siginplate?1:0)+
(nneeded?2:0)+(npossible?4:0))+"'/>";
  atmenuhtm+="<NOBR><B>You have chosen to tag this page with {"+"{"+warnplate+"}}.</B></NOBR><BR/>";
  atmenuhtm+="<NOBR>Name of section: <INPUT TYPE='text' NAME='autotagsum' "+
    "VALUE=\""+edsum+"\"/></NOBR><BR/>";
  if(nneeded||npossible)
    atmenuhtm+="<NOBR>Pertaining to edits to ";
  if(nneeded)
    atmenuhtm+="(compulsory): ";
  if(npossible)
    atmenuhtm+="(optional): ";
  if(nneeded||npossible) //This could be changed to guess which page you want
    atmenuhtm+="<INPUT TYPE='text' NAME='autotag-n' VALUE=''/></NOBR><BR/>";
  atmenuhtm+="<NOBR>Your signature: <INPUT TYPE='text' NAME='autotagsig' VALUE='~~"+
    "~~'/></NOBR><BR/>";
  atmenuhtm+="<NOBR><INPUT TYPE='radio' NAME='autotagpre' VALUE='0' CHECKED>Do the "+
    "edit</INPUT>";
  atmenuhtm+="<INPUT TYPE='radio' NAME='autotagpre' VALUE='1'>Preview only</INPUT></NOBR><BR/>";
  atmenuhtm+="<INPUT TYPE='hidden' NAME='autotagwp' VALUE='"+warnplate+"'/>";
  atmenuhtm+="<INPUT TYPE='submit' VALUE='Warn this user with AutoTag'/>";
  atmenuhtm+="</FORM></TD><TD><B><I>Level "+warnlevel+" warning:</I></B><BR/>";
  if(warnlevel==0) atmenuhtm+="Rules reminder. For good-faith mistakes or experienced users.";
  if(warnlevel==1) atmenuhtm+="No previous warnings, or teaching new users the rules. Mildly worded.";
  if(warnlevel==2) atmenuhtm+="Simple statement of the situation. Use if a level 1 warning didn't work.";
  if(warnlevel==3) atmenuhtm+="Warning, and threat of a block. For repeat offenses.";
  if(warnlevel==4) atmenuhtm+="Final warning. For serious or repeat offenses.";
  atmenuhtm+="<BR/>If you have not issued this warning before, please preview it to check that it's appropriate.</TR></TABLE>";
  document.getElementById("atform").innerHTML=atmenuhtm;
  document.getElementById("atform").scrollIntoView(true);
}

//From [[User:Lupin/autoedit.js]]. Renamed because I know many users use popups,
//and I don't want to cause a naming conflict. Edited to decode + to space as well,
//and to use a decoding function that handles more characters.
function atGetParamValue(paramName) {
  var cmdRe=RegExp('[&?]'+paramName+'=([^&]*)');
  var h=document.location;
  var m;
  if (m=cmdRe.exec(h)) {
    try { 
      while(m[1].indexOf('+')!=-1)
      {
        m[1]=m[1].substr(0,m[1].indexOf('+'))+" "+m[1].substr(m[1].indexOf('+')+1);
      }
      return decodeURIComponent(m[1]);
    } catch (someError) {}
  }
  return null;
};

//AutoTag's automatic editing function: for user warnings and tags
$(function() {
  if(location.href.indexOf("withautotag=warn")!=-1)
  {
    document.editform.wpSummary.value=atGetParamValue('autotagsum')+
      '<!--using [[WP:US|user scripts]]-->';
    document.editform.wpTextbox1.value='{'+'{subst:'+atGetParamValue('autotagwp');
    var atf=atGetParamValue('autotagflag');
    //Only 0, 1, 2, 4 supported for the time being
    if(atf=='4'&&atGetParamValue('autotag-n')=='') atf='0';
    if(atf=='2'&&atGetParamValue('autotag-n')=='')
    {
      alert("You didn't enter a page, although this is required.");
      return; //Leave the user in edit mode
    }
    if(atf=='0') document.editform.wpTextbox1.value+='}} '+atGetParamValue('autotagsig');
    if(atf=='1') document.editform.wpTextbox1.value+='|sig='+
      atGetParamValue('autotagsig')+'}}';
    if(atf=='2') document.editform.wpTextbox1.value+='|'+atGetParamValue('autotag-n')+
      '}} '+atGetParamValue('autotagsig');
    if(atf=='4') document.editform.wpTextbox1.value+='-n|'+atGetParamValue('autotag-n')+
      '}} '+atGetParamValue('autotagsig');
    if(atGetParamValue('autotagpre')=='1')
      document.editform['wpPreview'].click();
    else
      document.editform['wpSave'].click(); //commented during testing to avoid accidents
  }
  if(location.href.indexOf("withautotag=tag")!=-1)
  {
    var oldcontents=document.editform.wpTextbox1.value;
    document.editform.wpSummary.value=atGetParamValue('autotagsum');
    document.editform.wpTextbox1.value='{'+'{'+atGetParamValue('autotagdp');
    var atf=atGetParamValue('autotagflag');
    //Don't newline after the tag, to prevent potential newline problems
    if(atf=='0') document.editform.wpTextbox1.value+='}}'+oldcontents;
    if(atf=='1') document.editform.wpTextbox1.value+='|'+atGetParamValue('autotag-n')+'}}'+oldcontents;
    if(atGetParamValue('autotagpre')=='1')
      document.editform['wpPreview'].click();
    else
     document.editform['wpSave'].click(); //commented during testing to avoid accidents
  }
})

//The new AutoTag: Place an AutoTag tab on the tab bar
$(function() {
//Don't show on history, special, diff, or old revisions pages
if (location.href.indexOf("action=history") == -1 && location.href.indexOf("action=raw") == -1 && location.href.indexOf("oldid=") == -1 && location.href.indexOf("action=submit") == -1 && location.href.indexOf("Special:") == -1 && location.href.indexOf("Special%3A") == -1)
{
  var atmenu;
  atmenu=document.createElement("DIV");
  addTab("javascript:showatmenu()","AutoTag","ca-autotag","AutoTag","");
  atmenu.id="atmenu";
  //This may need to change if siteSub's location is changed; it locates the correct
  //position for the AutoTag menu to appear (just after the page title, where a tag
  //would appear).
  document.getElementById("siteSub").insertBefore(atmenu);
  atmenu.style.display="none";
  if(location.href.indexOf("showatmenu=true") != -1) atmenu.style.display="block";
  var atmenuhtm="<B>No AutoTag available for this sort of page.</B>";
  if(location.href.indexOf("User_talk:") != -1 || location.href.indexOf("User_talk%3A") != -1)
  {
    //User Talk namespace
    var rownum=1;
    var userwarnmatrix=
//Format
// Title0|Title1|Title2-3|Title4
// Description: template0 template1 |template2 ~template3 template4 blockingpage\n
// Precede a template with | if a -n version is available and ~ if it automatically
// includes a sig. If the template is itself -n, precede with !. If no template is
// available, use X.
"Please discuss your changes|Please use the sandbox|Warning|Final warning|"+
"Testing / Generic vandalism (additions): |test0 |test1 |test2 |test3 |test4 AIV\n"+
"Please discuss your changes|Please use the sandbox|Warning|Final warning|"+
"Testing / Generic vandalism (removals): X |test1a |test2a |test3a test4a AIV\n"+
"Please discuss your changes|Please use the sandbox|Warning|Final warning|"+
"Testing / Generic vandalism (page creation): X |test1article |test2article |test3article |test4article AIV\n"+
"X|Please use the sandbox|X|X|"+
"Self-reverted testing: X |test-self X X X X\n"+
"X|Please use the sandbox|Vandalism|Only warning|"+
"Obvious vandalism: X |vw X |bv |test4im AIV\n"+
"X|Please use the sandbox|Warning|Final warning|"+
"Blanking entire pages: X |blank1 |blank2 |blank3 |blank4 AIV\n"+
"Please discuss your page-moves|X|Page-move warning|Final warning|"+
"Renaming pages: |mp0 X |mp2 |mp3 |mp4 AIV\n"+
"X|Please don\\'t add commercial links|Spam warning|Final spam warning|"+
"Spamming: X |spam1 |spam2 |spam3 |spam4 AN/I\n"+
"Be careful with other user's userpages|Be careful with other user's userpages|Userpage vandalism warning|Final userpage vandalism warning|"+
"Userpage vandalism: |tpv0 |tpv1 |tpv2 |tpv3 |tpv4 AIV\n"+
"Please don\\'t remove warnings|Please don\\'t remove warnings|Warning removal|Final warning removal warning|"+
"Removing warnings: wr0 wr1 X wr3 wr4 RPP\n"+
"Neutral point of view|X|Adding personal analysis|Final NPOV warning|"+
"Non-neutral point of view: |NPOV0 X |comment2 |comment3 |comment4 AN/I\n"+
"X|Notability problems; this article may be deleted|X|X|"+
"Notability problems: X !nn-warn X X X X\n"+
"X|Please be careful with copyright|Copyright violations|X|"+
"Copyvio: X !nothanks X !usrcvtext X AN/I\n"+
"X|X|3RR warning|3RR warning|"+
"3RR violations: X X X |3RR 3RR4 AN3\n"+
"About censorship|X|Censorship warning|X|"+
"Censoring: Not_censored X X Not_censored_2 X AN/I\n"+
"X|X|Factual error warning|Final factual error warning|"+
"Adding factual errors: X X |verror2 verror3 verror4 AN/I\n"+
"X|X|Please stay on-topic|X|"+
"Adding off-topic content: X X mess2 X X X\n"+
"X|Humour|Humour warning|Final humour warning|"+
"Inappropriate humour: X |behave X ~funnybut seriously AN/I\n"+
"The Manual of Style|X|Manual of Style warning|X|"+
"Contravening the MOS: mos0 X mos2 mos3 X AN/I\n"+
"X|X|Please don\\'t reformat dates|X|"+
"Reformatting dates: X X dates2 dates3 X AN/I\n"+
"About US/UK English|X|US/UK English warning|Final US/UK English warning|"+
"US/UK English changes: lang0 X lang2 lang3 lang4 AN/I\n"+
"X|X|Articles about royalty|Final warning about royalty|"+
"Royalty stylistic problems: X X rn2 rn3 rn4 AN/I\n"+
"Please use your userpage|Article moved to your userspace|X|X|"+
"Userpage in article space: vanity userfy_warning X X X X\n"+
"X|Please use edit summaries|X|X|"+
"Missing edit summaries: X summary X X X X\n"+
"X|Sign your posts on talk pages|Sign your posts on talk pages|X|"+
"No talk-page signature: X talk_sign sign X X X\n"+
"X|Adding images to articles|Image use warning|Final image use warning|"+
"Adding inappropriate images to pages: X image1 image2 image3 image4 AIV\n"+
"X|X|Overwriting images|X|"+
"Overwriting images inappropriately: X X X imageow3 X AIV\n"+
"Image copyright|X|X|Final image copyright warning|"+
"Image copyright problems: image_copyright X X X insertimage4 AN/I\n"+
"X|X|Personal attack warning|Final personal attack warning|"+
"Personal attacks: X X |npa2 |npa3 |npa4 PAIN\n"+
"X|X|X|Defamation: only warning|"+
"Defamation: X X X X defwarn PAIN\n"+
"X|Please assume good faith|Assuming good faith warning|X|"+
"Assuming bad faith: X agf1 X agf3 X AN/I\n"+
"X|Please try to stay civil|Incivility warning|X|"+
"Incivility: X |civil1 |civil2 X X X\n"+
"X|X|X|X|"+
"Inappropriate username: X X X X X AIV\n"+
"X|X|X|Posting other user\\'s personal info: only warning|"+
"Posting other users' personal info: X X X X pinfo4 PAIN\n"+
"X|X|Don\\'t make legal threats|Legal threats:final warning|"+
"Legal threats: X X threat2 X threat4 AN/I\n"+
"X|Don\\'t remove AfD templates|AfD template removal warning|Final AfD template removal warning|"+
"Removing AfD templates: X drmafd drmafd2 drmafd3 drmafd4 AIV\n"+
"X|Don\\'t remove speedy-delete templates|Speedy-delete template removal warning|Final speedy-delete template removal warning|"+
"Removing speedy templates: X drmspeedy drmspeedy2 drmspeedy3 drmspeedy4 AIV\n"+
"X|Don\\'t remove maintenance notices|X|X|"+
"Removing maintenance notices: X drmmt X X X X\n"+
"X|Don\\'t recreate deleted articles|X|X|"+
"Recreating deleted articles: X recreated X X X X\n"+
"";
    atmenuhtm="<DIV ID='atform'></DIV><TABLE CLASS='atmenu' STYLE='background:#EEFFFF;font-size:x-small'>";
    while(userwarnmatrix!="")
    {
      var sum0, sum1, sum23, sum4;
      if(rownum%2) atmenuhtm+="<TR>";
      sum0=userwarnmatrix.substr(0,userwarnmatrix.indexOf("|"));
      userwarnmatrix=userwarnmatrix.substr(userwarnmatrix.indexOf("|")+1);
      sum1=userwarnmatrix.substr(0,userwarnmatrix.indexOf("|"));
      userwarnmatrix=userwarnmatrix.substr(userwarnmatrix.indexOf("|")+1);
      sum23=userwarnmatrix.substr(0,userwarnmatrix.indexOf("|"));
      userwarnmatrix=userwarnmatrix.substr(userwarnmatrix.indexOf("|")+1);
      sum4=userwarnmatrix.substr(0,userwarnmatrix.indexOf("|"));
      userwarnmatrix=userwarnmatrix.substr(userwarnmatrix.indexOf("|")+1);
      atmenuhtm+="<TD STYLE='text-align:right'><B>"+userwarnmatrix.substr(0,userwarnmatrix.indexOf(":"));
      atmenuhtm+="</B></TD>";
      userwarnmatrix=userwarnmatrix.substr(userwarnmatrix.indexOf(":")+2);
      var testnum=0;
      while(testnum<6)
      {
        var ttlt;
        if(testnum==5)
          ttlt=userwarnmatrix.substr(0,userwarnmatrix.indexOf("\n"));
        else
          ttlt=userwarnmatrix.substr(0,userwarnmatrix.indexOf(" "));
        var tnas=""+testnum;
        if(tnas=="5")
          tnas=ttlt;
        else
          userwarnmatrix=userwarnmatrix.substr(userwarnmatrix.indexOf(" ")+1);
        if(tnas=="X") tnas="---";
        if(ttlt=="X")
          atmenuhtm+="<TD STYLE='color:#AADDDD'>"+tnas+"</TD>";
        else
          atmenuhtm+="<TD><A HREF=\"javascript:atwarn('"+ttlt+"',"+(testnum==5?true:false)+",'"+(testnum==0?sum0:testnum==1?sum1:testnum==4?sum4:sum23)+"',"+testnum+");\" STYLE='color:#0000FF'>"+tnas+"</A></TD>";
        testnum++;
      }
      userwarnmatrix=userwarnmatrix.substr(userwarnmatrix.indexOf("\n")+1);
      rownum++;
      if(rownum%2) atmenuhtm+="</TR>";
    }
    if(!(rownum%2)) atmenuhtm+="</TR>";
    atmenuhtm+="</TABLE>"
  }
  else
  { //not the User Talk namespace
    atmenuhtm="<DIV ID='atform'></DIV><TABLE CLASS='atmenu' STYLE='background:#EEFFFF;font-size:x-small'>";
    var speedyg=
//G-type speedy deletions, except G8 (which is talkpage only), and G9 (WP:OFFICE actions
//surely can't be done by non-admins!)
//Format: Code%Tag%Name%Description\n
//Note that a code might be listed more than once if there's more than one
//reason for giving it (e.g. G6). Reasons preceded with ! require a parameter
//referring to the original (wikipage for G6 or website/other source for A8).
"G1%db-nonsense%Patent nonsense%No sense can be made of the page's content.\n"+
"G2%db-test%Test pages%Pages created purely for testing purposes.\n"+
"G3%db-vand%Pure vandalism%Pages created for the purposes of vandalism.\n"+
"G4%db-repost%Recreation%Recreations of previously AfDd, etc. pages.\n"+
"G5%db-ban%Banned user contrib%Page created by a user whilst banned.\n"+
"G6%!db-histmerge%History merge%<U>Destination</U> of a cut-and-paste page move.\n"+
"G6%!db-move%Blocks a move%Page is in the way of a noncontroversial move.\n"+
"G6%db-disambig%1-link dab%Disambiguation page with one link.\n"+
"G6%db-afd%AfD decision%Not deleted after an AfD closed as <I>delete</I>\n"+
"G7%db-author%Mistaken creation%Only one contributor, who created the page by mistake.\n"+
"G10%db-attack%Attack page%Page created purely to attack or disparage its subject.\n"+
"G11%db-spam%Spam%Page is pure spam.\n";
//G8 is a talk page, G9 is WP:OFFICE and therefore likely to be admin-only
    var speedyo=
//Same format. Set up as A-space by default, then modified for other spaces if needed.
"A1%db-context%No context%Very short, doesn't provide enough context to expand.\n"+
"A2%db-foreign%Not English%Not in English, and exists on the relevant non-English Wikipedia.\n"+
"A3%db-a3%No content%Consists only of links and rephrasings of the title.\n"+
"A3%db-contact%Attempt to contact%Purely an attempt to contact the subject of the article.\n"+
"A3%db-blankcsd%Blanked CSD%Page is blank, and all revisions were speediable.\n"+
//A4 no longer exists.
"A5%db-transwiki%Transwikied%Pages transwikied after an AfD debate.\n"+
//A6 no longer exists.
"A7%db-bio%Non-notable person%Article about 1+ people with no notability assertion.\n"+
"A7%db-web%Non-notable website%Article about a website with no assertion of importance or significance.\n"+
"A8%!db-copyvio%Speedy copyvio%Copyvio from commercial material within past 48 hours.\n"+
"R1%db-redirnone%Broken redirect%Redirect with a redlinked target.\n"+
"R2%db-rediruser%Userspace redirect%Redirect from article-space to userspace.\n"+
"R3%db-redirtypo%Implausible typo%Redirect from an implausible typo.\n";

    //Don't check Image-space yet; that's somewhat complicated.
    if(location.href.indexOf("Category:")!=-1)
    speedyo=
"C1%db-catempty%Empty category%Empty category for 4 days, with no content.\n"+
//C2 has no speedy tag, as it requires extra action.
"C3%db-catfd%Template category%Category populated only through deleted-template transclusions.\n";
    if(location.href.indexOf("User:")!=-1)
    speedyo=
"U1%db-userreq%User request%User subpage deletion request by its 'owner'.\n"+
"U2%db-nouser%No such user%Userpage of a non-existent user.\n";
    if(location.href.indexOf("Template:")!=-1)
    speedyo=
"T1%db-disparage%Divisive template%Divisive and inflammatory template.\n";
    if(location.href.indexOf("Portal:")!=-1)
    speedyo=
//P1 subreasons are A1 speedy reasons.
"P1:A1%db-context%No context%Very short, doesn't provide enough context to expand.\n"+
"P1:A2%db-foreign%Not English%Not in English, and exists on the relevant non-English Wikipedia.\n"+
"P1:A3%db-a3%No content%Consists only of links and rephrasings of the title.\n"+
"P1:A3%db-contact%Attempt to contact%Purely an attempt to contact the subject of the portal.\n"+
"P1:A3%db-blankcsd%Blanked CSD%Portal is blank, and all revisions were speediable.\n"+
//A4 no longer exists.
"P1:A5%db-transwiki%Transwikied%Portal transwikied after an AfD debate.\n"+
"P1:A6%db-attack%Attack page%Portal created purely to disparage its subject.\n"+
"P1:A7%db-bio%Non-notable person%Portal about 1+ people with no notability assertion.\n"+
"P1:A8%!db-copyvio%Speedy copyvio%Copyvio from commercial material within past 48 hours.\n"+
"P2%db-emptyportal%Empty portal%Portal with no header article or less than 3 subarticles.\n";
    if(location.href.indexOf("talk:")!=-1||location.href.indexOf("Talk:")!=-1)
    speedyo=
//Talk pages
"G8%db-talk%Broken talk page%Non-user, non-subpage Talk page of non-existent page.\n";
    speedyo+=
//Allow prodding for any reason.
"PROD%!subst:prod%Propose deletion%Any other reason, for a not-previously-prodded page.\n";
    var dbplate;
    while(speedyg!="")
    {
      atmenuhtm+="<TR>";
      if(speedyg!="")
      {
        atmenuhtm+="<TD>"+speedyg.substr(0,speedyg.indexOf("%"))+"</TD>";
        speedyg=speedyg.substr(speedyg.indexOf("%")+1);
        dbplate=speedyg.substr(0,speedyg.indexOf("%"));
        speedyg=speedyg.substr(speedyg.indexOf("%")+1);
        atmenuhtm+="<TD><B><A HREF='javascript:atspeedy(\""+dbplate+"\");'>";
        atmenuhtm+="<FONT COLOR='#0000FF'>";
        atmenuhtm+=speedyg.substr(0,speedyg.indexOf("%"))+"</FONT>";
        speedyg=speedyg.substr(speedyg.indexOf("%")+1);
        atmenuhtm+="</A></B></TD><TD>"+speedyg.substr(0,speedyg.indexOf("\n"))+"</TD>";
        speedyg=speedyg.substr(speedyg.indexOf("\n")+1);
      }
      atmenuhtm+="</TR>";
    }
    while(speedyo!="")
    {
      atmenuhtm+="<TR>";
      if(speedyo!="")
      {
        atmenuhtm+="<TD>"+speedyo.substr(0,speedyo.indexOf("%"))+"</TD>";
        speedyo=speedyo.substr(speedyo.indexOf("%")+1);
        dbplate=speedyo.substr(0,speedyo.indexOf("%"));
        speedyo=speedyo.substr(speedyo.indexOf("%")+1);
        atmenuhtm+="<TD><B><A HREF='javascript:atspeedy(\""+dbplate+"\");'>";
        atmenuhtm+="<FONT COLOR='#0000FF'>";
        atmenuhtm+=speedyo.substr(0,speedyo.indexOf("%"))+"</FONT>";
        speedyo=speedyo.substr(speedyo.indexOf("%")+1);
        atmenuhtm+="</A></B></TD><TD>"+speedyo.substr(0,speedyo.indexOf("\n"))+"</TD>";
        speedyo=speedyo.substr(speedyo.indexOf("\n")+1);
      }
      atmenuhtm+="</TR>";
    }
    atmenuhtm+="</TABLE>";
  }
  atmenu.innerHTML=atmenuhtm;
}
});
//</nowiki></pre>