Bruger:So9q/peerreviewer.js

Fra Wikipedia, den frie encyklopædi
/* 

Semi-automatic javascript peer reviewer - note that this is NOT a [[WP:BOT]] (but it may be a [[WP:SBOTS|semi-bot]]) 

*/ 

/*

 // See talk page for details  

*/

//<pre> start code

var temp_mem;
function review1(){
//wpTxt is the variable for the text of a document
if(document.getElementById('wpTextbox1')){
	wpTxt = document.getElementById('wpTextbox1').value;
	theLength = wpTxt.length;
}
else{
	alert("Error: Could not locate text");
	return;
}

theTitle = document.location.href;

if(theTitle.indexOf("section=")!=-1) theTitle = document.location.href.substring(42,document.location.href.length-22)
else theTitle = document.location.href.substring(42,document.location.href.length-12)

theTitle2 = theTitle.replace(/\_/gi," ")
theTitle = unescape(theTitle).replace(/\_/gi," ")

document.theForm.theResponse.value = "===[["+theTitle+"]]===\n"+document.theForm.theResponse.value

// -------------------- 
//lead stuff
//determine the number of paragraphs in the lead
// -------------------- 

wpTxtlead = wpTxt.substring(0,wpTxt.indexOf("=="))
newLine = /\n[A-Z]/g

if(newLine.test(wpTxtlead)){
	NumPara = wpTxtlead.match(newLine);
	theNumPara = NumPara.length;
	theNumPara++;		//count the first paragraph
}
else theNumPara=1

if(theNumPara==1)
	document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/lead}}"
if((theNumPara==2)&&(theLength>=30000))
	document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/lead}}"
if((theNumPara==3)&&(theLength<=15000))
	document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/leadlong}}"
if((theNumPara==4)&&(theLength<=30000))
	document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/leadlong}}"
if(theNumPara>=5){
	document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/leadlong}}"
	document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/leaddetail}}"
}

// -------------------- 
//checks linking in comparison to # of words
// -------------------- 
words = wpTxt.split(" ");
links = wpTxt.split("[[");
if(.03 * words.length >= links.length)
	document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/underlink}}";
else if(.1* words.length <= links.length)
	document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/overlink}}";

// -------------------- 
//checks if document follows WP:CONTEXT / WP:MOSDATE guidelines
// -------------------- 
var check_contxt = false;	//if it is changed to true, one of the date guidelines has been violated

//looks for year
regex_yr = /[^,\]]\s\[\[\d{4}\]\]/gi;

//array for days of the week
var list_day = new Array(/\[\[Monday\]\]/gi,/\[\[Tuesday\]\]/gi,/\[\[Wednesday\]\]/gi, /\[\[Thursday\]\]/gi,/\[\[Friday\]\]/gi,/\[\[Saturday\]\]/gi,/\[\[Sunday\]\]/gi);

//array for months
var list_month = new Array(/\[\[January\]\]/gi,/\[\[February\]\]/gi,/\[\[March\]\]/gi,/\[\[April\]\]/gi,/\[\[May\]\]/gi,/\[\[June\]\]/gi,/\[\[July\]\]/gi,/\[\[August\]\]/gi,/\[\[September\]\]/gi,/\[\[October\]\]/gi,/\[\[November\]\]/gi,/\[\[December\]\]/gi);

if (regex_yr.test(wpTxt)) check_contxt = true;
for(i=0;i<list_day.length;i++){if(list_day[i].test(wpTxt)) check_contxt = true;}
for(i=0;i<list_month.length;i++){if(list_month[i].test(wpTxt)) check_contxt = true;}

if(check_contxt) document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/contxt}}"

// -------------------- 
//about [[WP:MOS#Time]]
// -------------------- 

var mostime = new Array()
var mostime2 = new Array()
mostimestring = ""
goodmostime = true
mostime[0] = /recently/gi
mostime2[0] = "recently"
mostime[1] = /last month.[^o]/gi
mostime2[1] = "last month"
mostime[2] = /last year.[^o]/gi
mostime2[2] = "last year"
mostime[3] = /yesterday/gi
mostime2[3] = "yesterday"
mostime[4] = /\.\ssoon/gi
mostime2[4] = "soon"
mostime[5] = /last week.[^o]/gi
mostime2[5] = "last week"
mostime[6] = /previous (month|year|day|week)/gi
mostime2[6] = "previous [day/week/month/year]"
mostime[7] = /(\.\s|\n)next (week|month|year)/gi
mostime2[7] = "next [week/month/year]"

for(t=0;t<mostime.length;t++){
if(mostime[t].test(wpTxt)){
goodmostime = false
mostimestring = mostimestring+"|"+mostime2[t]
}
}

if(goodmostime==false){
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/time"+mostimestring+"}}"
}

// -------------------- 
//searches for images
// -------------------- 
regex_img = /\[\[Image:/gi
if(regex_img.test(wpTxt)) document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/noimg}}"

//sees if lead image exists (may not be accurate if template is at front
if(!((wpTxt.substring(0,100).indexOf("[[Image")!=-1)||(wpTxt.substring(0,100).indexOf("[[image")!=-1)||(wpTxt.substring(0,2)=="{{")||(wpTxt.substring(0,2)=="<!")||(wpTxt.substring(0,3)==":''"))){
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/leadimg}} <!--Note that if something is in front of a lead image, it will not render by this javascript suggestion peer reviewer (like a disambig link or a lead comment-->"
}

// -------------------- 
//searches for images without captions
// -------------------- 
var list_cap = new Array(/\d{2}px\]\]/i,/\|none\]\]/i,/\|left\]\]/i,/\|center\]\]/i,/\|right\]\]/i,/\|thumb\]\]/i,/\|thumbnail\]\]/i,/\|frame\]\]/i,/\.jpg\]\]/i,/\.png\]\]/i,/\.svg\]\]/i)
check_cap = false;		//if check_cap == true, then captions are needed

for(i=0;i<list_cap.length;i++){if(list_cap[i].test(wpTxt)) check_cap = true;}

if(check_cap)
	document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/caption}}";

// -------------------- 
// imgtest()
// Above is too inefficient too use
// -------------------- 

// -------------------- 
//searches for infobox
// -------------------- 
var list_ibox = new Array(/\{\{infobox/gi,/\{\{taxobox/gi,/\{\{.{1,}infobox(\s|)\|/gi,/\{\{[^or]/i)
check_ibox = false; 

for(i=0;i<list_ibox.length;i++){
	if(list_ibox[i].test(wpTxt)) check_ibox = true;
}

if(!check_ibox)
	document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/infobox}} (Note that there might not be an applicable infobox; remember that these suggestions are not generated manually)"

// -------------------- 
//searches for <nowiki> {{persondata}} </nowiki>
// -------------------- 
catbirth = /\[\[Category\:\d{1,}\s(BC\s|)births/gi							//category:xxxx births
catdeath = /\[\[Category\:\d{1,}\s(BC\s|)deaths/gi							//category:xxxx deaths
infobio = /\{\{Infobox(\_|\s)(biography|philosopher|Military\sPerson)/gi	//major person infoboxes
persondata = /\{\{persondata/gi												//persondata template

if((catbirth.test(wpTxt) || catdeath.test(wpTxt) || infobio.test(wpTxt)) && (!persondata.test(wpTxt)))
	document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/persondata}}"

// --------------------
//[[WP:MOSNUM]] and [[WP:MOSDATE]]:
// --------------------

// --------------------
//nbsp checker: distances
// --------------------

km = /\d(\s|)(km|kilometer|kilometre)/gi
mi = /\d(\s|)(mi[\s\)]|mile)/gi
ft = /\d(\s|)(ft|foot|feet)/gi
yd = /\d(\s|)(yd|yard)/gi
//in = /\d(\s|)in/gi
inch = /\d(\s|)in(ch|ches|\s)/gi
cm = /\d(\s|)(cm|centi)/gi
dm = /\d(\s|)(dm|decim)/gi
nm = /\d(\s|)(nm|nano)/gi

//weights/mass
lb = /\d(\s|)(lb|pound)/gi
ton = /\d(\s|)ton[s\s]/gi
mton = /\d(\s|)(metric ton)/gi
gram = /\d(\s|)(g\s|gram|g\))/gi

//area
sqin = /\d(\s|)(in<sup>2<\/sup>|squared inches)/gi
sqft = /\d(\s|)(ft<sup>2<\/sup>|squared feet)/gi
sqmt = /\d(\s|)(m<sup>2<\/sup>|squared meter)/gi
sqkm = /\d(\s|)(km<sup>2<\/sup>|squared kilo)/gi
sqcm = /\d(\s|)(cm<sup>2<\/sup>|squared centi)/gi
sqmi = /\d(\s|)(mi<sup>2<\/sup>|squared mile)/gi

//volume
cuin = /\d(\s|)(in<sup>3<\/sup>|cubic inch)/gi
cuft = /\d(\s|)(ft<sup>3<\/sup>|cubic feet)/gi
cumt = /\d(\s|)(m<sup>3<\/sup>|cubic meter)/gi
cukm = /\d(\s|)(km<sup>3<\/sup>|cubic kilo)/gi
cucm = /\d(\s|)(cm<sup>3<\/sup>|cubic centi)/gi
cumi = /\d(\s|)(mi<sup>3<\/sup>|cubic mile)/gi

if(km.test(wpTxt) || mi.test(wpTxt) || ft.test(wpTxt) || yd.test(wpTxt) || cm.test(wpTxt) || nm.test(wpTxt) || inch.test(wpTxt) || dm.test(wpTxt) || lb.test(wpTxt) || ton.test(wpTxt) || gram.test(wpTxt) || mton.test(wpTxt) || sqin.test(wpTxt) || sqft.test(wpTxt) || sqmt.test(wpTxt) || sqkm.test(wpTxt) || sqcm.test(wpTxt) || sqmi.test(wpTxt) || cuin.test(wpTxt) || cuft.test(wpTxt) || cumt.test(wpTxt) || cukm.test(wpTxt) || cucm.test(wpTxt) || cumi.test(wpTxt)){
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/nbsp}}"
}

// --------------------
//checks for usage of standard abbreviations in parentheses (for conversions)
// --------------------
kmSA = /(kilometer|kilometer|kilometers|kilometres)\)/gi
miSA = /mile(s|)\)/gi
ftSA = /(foot|feet)\)/gi
ydSA = /yard(s|)\)/gi
inchSA = /(inch|inches)\)/gi
cmSA = /centimeter(s|)\)/gi
dmSA = /decimeter(s|)\)/gi
nmSA = /nanometer(s|)\)/gi

//weights/mass
lbSA = /(pound|pounds)\)/gi
gramSA = /(gram|grams)\)/gi
kgSA = /(kilogram|kilograms)\)/gi

//area
sqinSA = /squared inch(es|)\)/gi
sqftSA = /squared feet\)/gi
sqmtSA = /squared meter(s|)\)/gi
sqkmSA = /squared (kilometer|kilometer|kilometers|kilometres)\)/gi
sqcmSA = /squared centimeter(s|)\)/gi
sqmiSA = /squared mile(s|)\)/gi

//volume
cuinSA = /cubic inch(es|)\)/gi
cuftSA = /cubic (foot|feet)\)/gi
cumtSA = /cubic meter(s|)\)/gi
cukmSA = /cubic kilometer(s|)\)/gi
cucmSA = /cubic centimeter(s|)\)/gi
cumiSA = /cubic mile(s|)\)/gi

if(kmSA.test(wpTxt) || miSA.test(wpTxt) || ftSA.test(wpTxt) || ydSA.test(wpTxt) || cmSA.test(wpTxt) || nmSA.test(wpTxt) || inchSA.test(wpTxt) || dmSA.test(wpTxt) || lbSA.test(wpTxt) || gramSA.test(wpTxt) || kgSA.test(wpTxt) || sqinSA.test(wpTxt) || sqftSA.test(wpTxt) || sqmtSA.test(wpTxt) || sqkmSA.test(wpTxt) || sqcmSA.test(wpTxt) || sqmiSA.test(wpTxt) || cuinSA.test(wpTxt) || cuftSA.test(wpTxt) || cumtSA.test(wpTxt) || cukmSA.test(wpTxt) || cucmSA.test(wpTxt) || cumiSA.test(wpTxt)){
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/abbrev}}"
}

// --------------------
//checks that units are spelled out in text
// --------------------
kmSN = /km\s/gi
miSN = /\smi\s/gi
ftSN = /\sft\s/gi
ydSN = /yd\s/gi
cmSN = /cm\s/gi
dmSN = /dm\s/gi
nmSN = /nm\s/gi

//weights/mass
lbSN = /\slb\s/gi
gramSN = /\d\sg\s/gi
kgSN = /kg\s/gi

//area
sqinSN = /in<sup>2<\/sup>\s/gi
sqftSN = /ft<sup>2<\/sup>\s/gi
sqmtSN = /m<sup>2<\/sup>\s/gi
sqkmSN = /km<sup>2<\/sup>\s/gi
sqcmSN = /cm<sup>2<\/sup>\s/gi
sqmiSN = /mi<sup>2<\/sup>\s/gi

//volume
cuinSN = /in<sup>3<\/sup>\s/gi
cuftSN = /ft<sup>3<\/sup>\s/gi
cumtSN = /mt<sup>3<\/sup>\s/gi
cukmSN = /km<sup>3<\/sup>\s/gi
cucmSN = /cm<sup>3<\/sup>\s/gi
cumiSN = /mi<sup>3<\/sup>\s/gi

if(kmSN.test(wpTxt) || miSN.test(wpTxt) || ftSN.test(wpTxt) || ydSN.test(wpTxt) || cmSN.test(wpTxt) || nmSN.test(wpTxt) || dmSN.test(wpTxt) || lbSN.test(wpTxt) || gramSN.test(wpTxt) || kgSN.test(wpTxt) || sqinSN.test(wpTxt) || sqftSN.test(wpTxt) || sqmtSN.test(wpTxt) || sqkmSN.test(wpTxt) || sqcmSN.test(wpTxt) || sqmiSN.test(wpTxt) || cuinSN.test(wpTxt) || cuftSN.test(wpTxt) || cumtSN.test(wpTxt) || cukmSN.test(wpTxt) || cucmSN.test(wpTxt) || cumiSN.test(wpTxt)){
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/spellnum}}"
}

// --------------------
//checks for usage of standard abbreviations in parentheses (for conversions)
// --------------------
kmSN2 = /kms(\s|\))/gi
miSN2 = /mis(\s|\))/gi
ftSN2 = /\sfts(\s|\))/gi
ydSN2 = /yds(\s|\))/gi
inchSN2 = /\sins(\s|\))/gi
cmSN2 = /cms(\s|\))/gi
dmSN2 = /dms(\s|\))/gi
nmSN2 = /nms(\s|\))/gi

//weights/mass
lbSN2 = /lbs(\s|\))/gi
gramSN2 = /\sgs(\s|\))/gi
kgSN2 = /kgs(\s|\))/gi

if(kmSN2.test(wpTxt) || miSN2.test(wpTxt) || ftSN2.test(wpTxt) || ydSN2.test(wpTxt) || cmSN2.test(wpTxt) || nmSN2.test(wpTxt) || inchSN2.test(wpTxt) || dmSN2.test(wpTxt) || lbSN2.test(wpTxt) || gramSN2.test(wpTxt) || kgSN2.test(wpTxt)){
document.theForm.theResponse.value+="\n*When writing standard abbreviations, the abbreviations should not have a 's' to demark plurality (change kms to km and lbs to lb)."
}

// --------------------
// does not work; currently fixing
// --------------------
/*
km2 = /\d(\s|)(km|kilometer|kilometre)[^\}\s][^\(]/gi
mi2 = /\d(\s|)(mi|mile)[^\}\s][^\(]/gi
ft2 = /\d(\s|)(ft|foot|feet)[^\}\s][^\(]/gi
yd2 = /\d(\s|)(yd|yard)[^\}\s][^\(]/gi
//in2 = /\d(\s|)in[^\}\s][^\(]/gi
inch2 = /\d(\s|)in[^\}\s][^\(]/gi
cm2 = /\d(\s|)(cm|centi)[^\}\s][^\(]/gi
dm2 = /\d(\s|)(dm|decim)[^\}\s][^\(]/gi
nm2 = /\d(\s|)(nm|nano)[^\}\s][^\(]/gi

//weights/mass
lb2 = /\d(\s|)(lb|pound)[^\}\s][^\(]/gi
ton2 = /\d(\s|)(ton)[^\}\s][^\(]/gi
mton2 = /\d(\s|)(metric ton)[^\}\s][^\(]/gi
gram2 = /\d(\s|)(g\s|gram|g\))[^\}\s][^\(]/gi

//area
sqin2 = /\d(\s|)(in<sup>2<\/sup>|squared inches)[^\}\s][^\(]/gi
sqft2 = /\d(\s|)(ft<sup>2<\/sup>|squared feet)[^\}\s][^\(]/gi
sqmt2 = /\d(\s|)(m<sup>2<\/sup>|squared meter)[^\}\s][^\(]/gi
sqkm2 = /\d(\s|)(km<sup>2<\/sup>|squared kilo)[^\}\s][^\(]/gi
sqcm2 = /\d(\s|)(cm<sup>2<\/sup>|squared centi)[^\}\s][^\(]/gi
sqmi2 = /\d(\s|)(mi<sup>2<\/sup>|squared mile)[^\}\s][^\(]/gi

//volume
cuin2 = /\d(\s|)(in<sup>3<\/sup>|cubic inch)[^\}\s][^\(]/gi
cuft2 = /\d(\s|)(ft<sup>3<\/sup>|cubic feet)[^\}\s][^\(]/gi
cumt2 = /\d(\s|)(m<sup>3<\/sup>|cubic meter)[^\}\s][^\(]/gi
cukm2 = /\d(\s|)(km<sup>3<\/sup>|cubic kilo)[^\}\s][^\(]/gi
cucm2 = /\d(\s|)(cm<sup>3<\/sup>|cubic centi)[^\}\s][^\(]/gi
cumi2 = /\d(\s|)(mi<sup>3<\/sup>|cubic mile)[^\}\s][^\(]/gi

if(km2.test(wpTxt) || mi2.test(wpTxt) || ft2.test(wpTxt) || yd2.test(wpTxt) || cm2.test(wpTxt) || nm2.test(wpTxt) || inch2.test(wpTxt) || dm2.test(wpTxt) || lb2.test(wpTxt) || ton2.test(wpTxt) || gram2.test(wpTxt) || mton2.test(wpTxt) || sqin2.test(wpTxt) || sqft2.test(wpTxt) || sqmt2.test(wpTxt) || sqkm2.test(wpTxt) || sqcm2.test(wpTxt) || sqmi2.test(wpTxt) || cuin2.test(wpTxt) || cuft2.test(wpTxt) || cumt2.test(wpTxt) || cukm2.test(wpTxt) || cucm2.test(wpTxt) || cumi2.test(wpTxt)){
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/convert}}"
}
*/

// --------------------
//looks for unlinked dates
// --------------------
jan2= /\sJanuary\s(\d)(\d|)\D/gi
feb2= /\sFebruary\s(\d)(\d|)\D/gi
mar2= /\sMarch\s(\d)(\d|)\D/gi
apr2= /\sApril\s(\d)(\d|)\D/gi
may2= /\sMay\s(\d)(\d|)\D/gi
jun2= /\sJune\s(\d)(\d|)\D/gi
jul2= /\sJuly\s(\d)(\d|)\D/gi
aug2= /\sAugust\s(\d)(\d|)\D/gi
sep2= /\sSeptember\s(\d)(\d|)\D/gi
oct2= /\sOctober\s(\d)(\d|)\D/gi
nov2= /\sNovember\s(\d)(\d|)\D/gi
dec2= /\sDecember\s(\d)(\d|)\D/gi
if(jan2.test(wpTxt) || feb2.test(wpTxt) || mar2.test(wpTxt) || apr2.test(wpTxt) || may2.test(wpTxt) || jun2.test(wpTxt) || jul2.test(wpTxt) || aug2.test(wpTxt) || sep2.test(wpTxt) || oct2.test(wpTxt) || nov2.test(wpTxt) || dec2.test(wpTxt)){
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/linkdate}}"
}

// --------------------
//date-th
// --------------------
dateth = /(january|february|march|april|may|june|july|august|september|october|november|december)\s\d(\d|)(th|st|nd|rd)/gi
dateth1 = /\[\[(january|february|march|april|may|june|july|august|september|october|november|december)\s\d(\d|)\]\](th|st|nd|rd)/gi
dateth2 = /(january|february|march|april|may|june|july|august|september|october|november|december)\s\d(\d|)<sup>(th|st|nd|rd)<\/sup>/gi
dateth3 = /\[\[(january|february|march|april|may|june|july|august|september|october|november|december)\s\d(\d|)\]\]<sup>(th|st|nd|rd)<\/sup>/gi
dateth4 = /\d(\d|)<sup>(th|st|nd|rd)<\/sup>\s(of\s|)(january|february|march|april|may|june|july|august|september|october|november|december)/gi
dateth5 = /\d(\d|)(th|st|nd|rd)\s(january|february|march|april|may|june|july|august|september|october|november|december)/gi
		
if(dateth.test(wpTxt) || dateth1.test(wpTxt) || dateth2.test(wpTxt) || dateth3.test(wpTxt) || dateth4.test(wpTxt) || dateth5.test(wpTxt))
	document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/dateth}}";

// --------------------
//checks for correct MOS heading styles
// --------------------

// --------------------
//occurence of "the" at beginning
// --------------------
if(wpTxt.indexOf("==The ")!= -1 || wpTxt.indexOf("== The ")!= -1) document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/headingthe}}";

// --------------------
//existence of link in heading
// --------------------
regex_headlink = /==.{0,}\[\[.{1,}\]\].{0,}==/gi
if(regex_headlink.test(wpTxt))
	document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/headinglink}}";

// --------------------
//checks if title is repeated in headings
// --------------------
var regex_headre = new RegExp("==.{0,}"+wgTitle+".{0,}==","gi")			//wgTitle is defined already as title of page
if(regex_headre.test(wpTxt))
	document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/headingre}}"

// --------------------
//looks for ==trivia==, ==other facts==, ==miscellaneous==, etc.
// --------------------
var list_triv = new Array(/==(\s|)Trivia==/gi,/==(\s|)Other f/gi,/==(\s|)Miscellaneous/gi,/==(\s|)Interesting\s/gi);
var check_triv = false;

for(i=0;i<list_triv.length;i++){if(list_triv[i].test(wpTxt)) check_triv = true;}

if(check_triv)
	document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/trivia}}";

// --------------------
//double checks if last sections follow WP:GTL in terms of order (see also - references - external links)
// --------------------

isgtl = true 

extlink = "External link"

var Refsection = new Array()		//array to hold different possible names of the "references" section
Refsection[0] = "==Reference"
Refsection[1] = "==Source"
Refsection[2] = "==Footnote"
Refsection[3] = "==Cit"
Refsection[4] = "==Note"

Refsection[5] = "==Reference"
Refsection[6] = "==Source"
Refsection[7] = "==Footnote"
Refsection[8] = "==Cit"
Refsection[9] = "==Note"

Refsection[10] = "== Reference"
Refsection[11] = "== Source"
Refsection[12] = "== Footnote"
Refsection[13] = "== Cit"
Refsection[14] = "== Note"

Refsection[15] = "== Reference"
Refsection[16] = "== Source"
Refsection[17] = "== Footnote"
Refsection[18] = "== Cit"
Refsection[19] = "== Note"

seealso = "==See also"			//name for "see also" section
if(wpTxt.indexOf(seealso)==-1){
if(wpTxt.indexOf("== See also")!=-1)
	seealso = "== See also";
}

if((wpTxt.indexOf(seealso)>wpTxt.indexOf(extlink)) && (wpTxt.indexOf(extlink)!=-1)){
isgtl = false
}
for(i=0;i<Refsection.length;i++){
if((wpTxt.indexOf(seealso)>wpTxt.indexOf(Refsection[i])) && (wpTxt.indexOf(Refsection[i])!=-1)){
isgtl = false
}
if((wpTxt.indexOf(extlink)<wpTxt.indexOf(Refsection[i])) && (wpTxt.indexOf(extlink)!=-1)){
isgtl = false
}
}

if(isgtl==false){
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/gtl}}"
}

// --------------------
//looks for section named "List of..."					//not in use due to inaccuracy
// --------------------	
/*
list = /==(\s|)List/gi
if(list.test(wpTxt)){
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/list}}"
}*/

// --------------------	
//Checks if categories are in alphabetical order
// --------------------	
cat1 = /\[\[Category:.{1,}\]\]/gi
alphed = true
if(cat1.test(wpTxt)){
theCats = wpTxt.match(cat1)
//moves categories to lower case
for(i=0;i<theCats.length;i++){
theCats[i]=theCats[i].toLowerCase()
}
//compares all cats to see if in alphabetical order
for(i=0;i<theCats.length-1;i++){
if(theCats[i+1]>theCats[i]){}
else{
alphed = false
}
}
}
else{
document.theForm.theResponse.value+="\n*This article does not have any [[WP:CAT|categories]]. Please categorize it with relevant <code><nowiki>[[Category:Categories]]</nowiki></code>."
}

alphed2 = true
il1 = /\[\[(.{2}|als|ang|frp|ast|zh-min-nan|pdc|ilo|jbo|nah|nrm|nds|sco|scn|simple|tpi|chr|vec|zh-yue):.{1,}\]\]/gi

if(il1.test(wpTxt)){
theIL = wpTxt.match(il1)
for(i=0;i<theIL.length-1;i++){
if(theIL[i+1]>theIL[i]){}
else{
alphed2 = false
}
}
}

if((!alphed)&&(alphed2)){
//document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/alpha|[[WP:CAT|categories]]}}"
}
if((!alphed2)&&(alphed)){
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/alpha|[[WP:IL|interlanguage links]]}}"
}
if((!alphed)&&(!alphed2)){
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/alpha}}"
}

// --------------------	
//looks at length of article:
// --------------------	

// --------------------	
//summary style -ToC and entire article-
// --------------------	
theLength = wpTxt.length
newHeading = /\n==/g
if(newHeading.test(wpTxt)){
theSections = document.editform.wpTextbox1.value.match(/\n==/g)
if(theSections.length<=5){
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/expand}}"
}
if(theSections.length>=24){
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/toc}}"
}

if((theLength<=7500)&&(theSections.length>5)){
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/expand}}"
}
}
else{
theSections = "none"
}

if((theLength<=7500)&&(theSections=="none")){
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/expand}}"
}

if(theLength>=50000){
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/SS}}"
}
awtstring = ""

// --------------------	
//looks for section-stub template
// --------------------	
//Template:sectstub, section stub, section-stub, sect-stub, stub-section
nosectstub = true
var tempsectstub = new Array()
tempsectstub[0] = /\{\{sectstub\}\}/gi
tempsectstub[1] = /\{\{sect-stub\}\}/gi
tempsectstub[2] = /\{\{section stub\}\}/gi
tempsectstub[3] = /\{\{section-stub\}\}/gi
tempsectstub[4] = /\{\{stub-section\}\}/gi
for(s=0;s<tempsectstub.length;s++){
if(tempsectstub[s].test(wpTxt)){
nosectstub = false
}
}

if(nosectstub==false){
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/sectexpand}}"
}

// --------------------	
//looks for weasel words
// --------------------	
var ww = new Array()
isww = false
ww[0] = /some people sa/gi
ww[1] = /it has been/gi
ww[2] = /many people have/gi
ww[3] = /many scientists believe/gi
ww[4] = /allege/gi
ww[5] = /many people sa/gi
ww[6] = /many people believe/gi
ww[7] = /arguably/gi
ww[8] = /it is claimed/gi
ww[9] = /correctly/gi
ww[10] = /apparently/gi
ww[11] = /people considered/gi
ww[12] = /many considered/gi
ww[13] = /is considered/gi
ww[14] = /are considered/gi

var ww2 = new Array()
ww2[0] = "some people sa"
ww2[1] = "it has been"
ww2[2] = "many people have"
ww2[3] = "many scientists believe"
ww2[4] = "allege"
ww2[5] = "many people sa"
ww2[6] = "many people believe"
ww2[7] = "arguably"
ww2[8] = "it is claimed"
ww2[9] = "correctly"
ww2[10] = "apparently"
ww2[11] = "people considered"
ww2[12] = "many considered"
ww2[13] = "is considered"
ww2[14] = "are considered"

Ref = /\<ref/gi
Refa = /<ref/gi
Ref2 = /\{\{ref/gi
Ref3 = /\{\{fn/gi
Ref4 = /\{\{harv/gi
Ref5 = /\{\{Harv/gi

wpTxtawt = wpTxt;

for(i=0;i<ww.length;i++){
	while(ww[i].test(wpTxtawt)){
		wpTxtawt = wpTxtawt.substring(wpTxtawt.indexOf(ww[i]),wpTxtawt.length);
		if(!(Ref.test(wpTxtawt.substring(0,100)) || Ref.test(wpTxtawt.substring(0,100)) || Ref.test(wpTxtawt.substring(0,100)) || Ref.test(wpTxtawt.substring(0,100)) || Ref.test(wpTxtawt.substring(0,100)))){
			isww = true;
			if(awtstring.indexOf(ww2[i]) == -1) awtstring=awtstring+"|''"+ww2[i]+"''"
		}
	}
}

if(isww==true){
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/awt"+awtstring+"}} <!--This javascript cannot determine if a citation is provided; if all weasel terms are covered by citations, please strike this-->"
}

// --------------------	
//checks for redundancies - based on [[User:Tony1/How_to_satisfy_Criterion_2a#Redundancy]]
// --------------------	

redun1 = new Array()
redun1[0] = ""
redun1[1] = ""
redun1[2] = ""
redun1[3] = ""

additive = /(also|in\saddition|additionally|moreover|furthermore)/gi
if(additive.test(wpTxt)){
theaddnum = wpTxt.match(additive)
if((theaddnum.length>=8)&&(theaddnum.length>=wpTxt.length/2500)){
redun1[0] = "1"	
}
}

vaguesize = /(some\s|a\svariety\sof|a\snumber\sof|a\smajority\sof|several|a\sfew|\smany|\sany\s|\sall\s)/gi
if(vaguesize.test(wpTxt)){
thevsnum = wpTxt.match(vaguesize)
if((thevsnum.length>=8)&&(thevsnum.length>=wpTxt.length/2500)){
redun1[1] = "1"	
}
}

temporal = /(over\sthe\syears|currently|\snow\s|from\stime\sto\stime)/gi
if(temporal.test(wpTxt)){
thetempnum = wpTxt.match(temporal)
if(thetempnum.length>=5){
redun1[2] = "1"	
}
}

intheyear = /(in\sthe\syear|in\sthe\syear\sof)\s(\[\[|)(\d\d\d\d)/gi
if(intheyear.test(wpTxt)){
//exyear = RegExp.$3
redun1[3] = "1"		
}

if((redun1[0]=="1") || (redun1[1]=="1") || (redun1[2]=="1") || (redun1[3]=="1")){
document.theForm.theResponse.value+="\n*Watch for [[User:Tony1/How_to_satisfy_Criterion_2a#Redundancy|redundancies]] that make the article too wordy instead of being crisp and concise. (You may wish to try Tony1's [[User:Tony1/How to satisfy Criterion 2a: redundancy exercises|redundancy exercises]].)"	
	
if(redun1[0]=="1"){
	document.theForm.theResponse.value+="\n**While additive terms like “also”, “in addition”, “additionally”, “moreover”, and “furthermore” may sometimes be useful, overusing them when they aren't necessary can instead detract from the brilliancy of the article. This article has "+theaddnum.length+" additive terms, a bit too much."
}
if(redun1[1]=="1"){
	document.theForm.theResponse.value+="\n**Vague terms of size often are unnecessary and redundant -  “some”, “a variety/number/majority of”, “several”, “a few”, “many”, “any”, and “all”. For example, “<font color='red'><s>All</s></font> pigs are pink, so we thought of <font color='red'><s>a number of</s></font> ways to turn them green.”"
}
if(redun1[2]=="1"){
	document.theForm.theResponse.value+="\n**Temporal terms like “over the years”, “currently”, “now”, and “from time to time” often are too vague to be useful, but occasionally may be helpful. “I am <font color='red'><s>now</s></font> using a semi-bot to generate your peer review.”"
}
if(redun1[3]=="1"){
	document.theForm.theResponse.value+="\n**“In <font color='red'><s>the year [of]</s></font> 1990”"
}
}

// --------------------	
//searches for footnotes
// --------------------	
var list_ref=new Array(/\<ref/gi,/\<ref/gi,/<ref/gi,/\{\{ref/gi,/\{\{fn/gi,/\{\{harv/gi,/\{\{Harv/gi);
var check_ref=0;

if(list_ref[0].test(wpTxt)||list_ref[1].test(wpTxt)) check_ref=1;
else if(list_ref[2].test(wpTxt) || list_ref[3].test(wpTxt) || list_ref[4].test(wpTxt) || list_ref[5].test(wpTxt)) check_ref=2;
else check_ref=0

if(!check_ref)						// no footnotes
	document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/foot}}"
else if(check_ref==2)				//a method outside of the cite.php
	document.theForm.theResponse.value+="\n*You may wish to convert your form of references to the cite.php footnote system that [[WP:WIAFA]] 2(c) highly recommends."


// --------------------	
//checks footnote spacing following a period
// --------------------	
var list_sref = new Array(/<\/ref>\./gi,/\.\s<ref>/gi,/\{\{ref\|.{1,}\}\}\./gi,/\.\s\{\{ref\|.{1,}\}\}/gi,/\.\s\{\{fn\|.{1,}\}\}/gi,/\{\{fn\|.{1,}\}\}\./gi);
var check_sref = false;

for(i=0;i<list_sref.length;i++){
	if(list_sref[i].test(wpTxt)){check_sref=true; break;}
}

if(check_sref)
	document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/footspace}}"

// --------------------	
//searches for reference section
// --------------------	
var list_refsect = new Array(/==(\s|)Reference/gi,/==(\s|)Source/gi,/==(\s|)Footnote/gi,/==(\s|)Cit/gi,/==(\s|)Note/gi);
var check_refsect = false;		//if check_refsect == true, then a reference section exists

for(i=0;i<list_refsect.length;i++){
	if(list_refsect[i].test(wpTxt)){check_refsect = true; break;}
}

if(!check_refsect)
	document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/ref}}"

// --------------------	
// looks for <nowiki>{{fact}} and {{citation needed}} </nowiki>	
// --------------------	
var list_fact = new Array(/\{\{fact\}\}/gi,/\{\{citation needed\}\}/gi);
var check_fact = false;

for(i=0;i<list_fact.length;i++){
	if(list_fact[i].test(wpTxt)){check_fact = true; break;}	
}

if(check_fact)
	document.theForm.theResponse.value += "\n*Please provide citations for all of the <code><nowiki>{{fact}}</nowiki></code>s.";

//all articles can always use copyediting:
document.theForm.theResponse.value+="\n{{subst:User:AndyZ/PR/copyedit}}"

//closing + signature
document.theForm.theResponse.value+="\nYou may wish to browse through [[User:AndyZ/Suggestions]] for further ideas. Thanks, ~~~~\n\n\n"

// --------------------
// replacing template format with actual words; still in progress.
temp_mem = document.theForm.theResponse.value;	
replaceTemp();
// --------------------	

//show feedback
document.getElementById("theFeedback").style.visibility = "visible";

//if(!doSelect) doSelect = false;
//if(doSelect) document.theForm.theResponse.select();

//current date variables
    var current_date = new Date();
    var cur_month = current_date.getMonth();
    var cur_year = current_date.getFullYear();
    var y_abbrev = cur_year.toString().substring(2,4);
    var m_abbrev = new Array("J","F","M","A","MY","JN","JL","AU","S","O","N","D");
    var m_full = new Array("January","February","March","April","May","June","July","August","September","October","November","December");

// --------------------	
//<nowiki> Summary on WP:PR/ 
// --------------------	

if((theTitle.indexOf("Wikipedia:Peer review")!=-1)&&(document.location.href.indexOf("/Automated")==-1)&&(document.editform.wpTextbox1.value.indexOf("*Please see [[User:AndyZ/peerreviewer.js|automated]] peer review")==-1))
{
document.editform.wpTextbox1.value += "\n*Please see [[User:AndyZ/peerreviewer.js|automated]] peer review suggestions [[Wikipedia:Peer review/Automated/"+m_full[cur_month]+" "+cur_year+"#"+theTitle2.substring(22,theTitle2.length)+"|here]]. Thanks, ~~~~"

// Add a tag to the summary box - ''stolen'' from [[User:Bobblewik]] 
    var txt = document.editform.wpSummary;
    var summary = "Automated peer review at [[WP:PRA/"+m_abbrev[cur_month]+y_abbrev+"#"+theTitle2.substring(22,theTitle2.length)+"]]";
	if (txt.value.indexOf(summary) == -1) {
		if (txt.value.match(/[^\*\/\s][^\/\s]?\s*$/)) {
			txt.value += " | ";
		}
		txt.value += summary;
	}

thehide();
}

//</nowiki>

PRheader = /\{\{PR\-/gi
theArchive = ""

//<nowiki> - archiving of [[WP:PR/A|automated peer reviews]]
if(document.location.href=="http://en.wikipedia.org/w/index.php?title=Wikipedia:Peer_review/Automated&action=edit"){
	if(PRheader.test(document.theForm.theResponse.value)){
		thePRarticle = wpTxt.match(/===\[\[(.{1,})\]\]===/gi)
		for(i=0;i<thePRarticle.length;i++){
			if(document.theForm.theResponse.value.indexOf(thePRarticle[i].substring(5,thePRarticle[i].length-5))==-1){
				loc1 = wpTxt.indexOf(thePRarticle[i])
				wpTxt2 = wpTxt.substring(loc1+5,wpTxt.length)
				loc2 = ((wpTxt2.indexOf("===[[") < wpTxt2.indexOf("==Requests")) || (wpTxt2.indexOf("==Requests")==-1)) ? wpTxt2.indexOf("===[[") : wpTxt2.indexOf("==Requests")
				theArchive+="\n===[["
				theArchive+=wpTxt2.substring(0,loc2)
				document.editform.wpTextbox1.value = wpTxt.substring(0,loc1) + wpTxt2.substring(loc2,wpTxt2.length)
 				wpTxt = document.editform.wpTextbox1.value
			}
	}
	document.theForm.theResponse.value = theArchive
		
	// Add a tag to the summary box - ''stolen'' from [[User:Bobblewik]] 
    var txt = document.editform.wpSummary;
    var summary = "JS - [[Wikipedia:Peer review/Automated/Archive 1|archiving]] closed [[WP:PR|peer reviews]]";
	if (txt.value.indexOf(summary) == -1) {
		if (txt.value.match(/[^\*\/\s][^\/\s]?\s*$/)) {
			txt.value += " | ";
		}
		txt.value += summary;
	}
}			
}


//</nowiki>

//ending brace for first function
}
//

function replaceTemp(){
//<nowiki>format: 
//document.theForm.theResponse.value = document.theForm.theResponse.value.replace(new RegExp("{{sub"+"st:User:AndyZ/PR/}}","g"),"{{subst:User:AndyZ/PR/}}"); </nowiki>
document.theForm.theResponse.value = document.theForm.theResponse.value.replace(new RegExp("{{sub"+"st:User:AndyZ/PR/lead}}","g"),"*Please expand the lead to conform with guidelines at [[WP:LEAD]]. The article should have an appropriate number of paragraphs as is shown on [[WP:LEAD]], and should adequately summarize the article.");
document.theForm.theResponse.value = document.theForm.theResponse.value.replace(new RegExp("{{sub"+"st:User:AndyZ/PR/leadlong}}","g"),"*The lead of this article may be too long, or may contain too many paragraphs. Please follow guidelines at [[WP:LEAD]]; be aware that the lead should adequately summarize the article.");
document.theForm.theResponse.value = document.theForm.theResponse.value.replace(new RegExp("{{sub"+"st:User:AndyZ/PR/leaddetail}}","g"),"*The lead is for summarizing the rest of the article, and should not introduce new topics not discussed in the rest of the article, as per [[WP:LEAD]]. Please ensure that the lead adequately summarizes the article.");
document.theForm.theResponse.value = document.theForm.theResponse.value.replace(new RegExp("{{sub"+"st:User:AndyZ/PR/infobox}}","g"),"*There may be an applicable [[WP:INFOBOX|infobox]] for this article. For example, see [[Template:Infobox Biography]], [[Template:Infobox School]], or [[Template:Infobox City]].");
document.theForm.theResponse.value = document.theForm.theResponse.value.replace(new RegExp("{{sub"+"st:User:AndyZ/PR/contxt}}","g"),"*Per [[WP:CONTEXT]] and [[WP:MOSDATE]], months and days of the week generally should not be linked. Years, decades, and centuries can be linked if they provide [[WP:CONTEXT|context]] for the article.");
document.theForm.theResponse.value = document.theForm.theResponse.value.replace(new RegExp("{{sub"+"st:User:AndyZ/PR/linkdate}}","g"),"*Per [[WP:CONTEXT]] and [[WP:BTW]], years with full dates should be linked; for example, link [[January 15]], [[2006]], but do not link January 2006.");
document.theForm.switch_temp.value = "Template form";
}

function replaceProse(){
document.theForm.theResponse.value = temp_mem;
document.theForm.switch_temp.value = "Prose form";
}

function thehide(){
document.getElementById("theFeedback").style.visibility = "hidden"
document.getElementById("restore").style.visibility = "visible"
}

function theshow(){
document.getElementById("theFeedback").style.visibility = "visible"
document.getElementById("restore").style.visibility = "hidden"
}

document.write('<div id="theFeedback" style="position:absolute; margin-top:150px; margin-left:40px; border:2px solid #000000; background:55ff55; visibility:hidden; z-index:20"><div id="close" style="background:red; text-align:right" onclick="thehide()">[ X ]</div><form name="theForm"><textarea cols="50" rows="20" name="theResponse">The following suggestions were generated by a semi-automatic [[User:AndyZ/peerreviewer.js|javascript program]], and might not be applicable for the article in question.</textarea>'+
	'<div style="background:#cccccc"><input type="button" value="Template form" name="switch_temp" onclick="replaceProse()"> <a href="http://en.wikipedia.org/wiki/User talk:AndyZ" target="_blank">Questions/comments?</a><br></div>'
	+'</form></div>'
	+'<div id="restore" style="z-index:19; background:yellow; margin-top:120px; visibility:hidden; position:absolute; margin-left:5px" onclick="theshow()">[restore]</div>')

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

//adds peer review link to top bar (with your username, talk page, preferences, watchlist, etc.)
$(function () {
    if(document.forms.editform) {
        addLink('p-personal', 'javascript:review1()', 'peer review', 'ca-peerreviewer', 'Semi-automatic peer reviewer by javascript', '', '');
    }
});

//these functions auto-submit articles for WP:PR, modified from AutoVFD script 

function pr()
{
  var pagename = document.editform.action;
  pagename = pagename.substring(pagename.indexOf('title=') + 6,pagename.lastIndexOf('&action=submit'));

  window.open('http://en.wikipedia.org/w/index.php?title=Talk:' + unescape(pagename) + '&action=edit&fakeaction=prtemp','Talk', 'status,toolbar,location,menubar,directories,resizeable,scrollbars');          
  window.open('/w/index.php?title=Wikipedia:Peer_review/' + unescape(pagename) + '&action=edit&fakeaction=prsub&faketarget=' + unescape(pagename),'PRnom', 'status,toolbar,location,menubar,directories,resizeable,scrollbars');
  window.open('/w/index.php?title=Wikipedia:Peer_review&action=edit&fakeaction=prlist&faketarget=' + unescape(pagename), 'PRlisting', 'status,toolbar,location,menubar,directories,resizeable,scrollbars');
}

function autopr()
{
  if (document.title.indexOf('Editing ') == 0)
    {
      var theaction = '';
      var target = '';
      if (location.search)
        {
          var l = location.search.substring(1).split('&');
          for (var i = 0; i < l.length; ++i)
            {
              var eq = l[i].indexOf('=');
              var name = l[i].substring(0, eq);
              if (name == 'fakeaction')
                theaction = l[i].substring(eq + 1);
              else if (name == 'faketarget')
                target = unescape(l[i].substring(eq + 1)).replace(/_/g, ' ');
            }
        }
      if (theaction == 'prlist')
        {
          req = document.editform.wpTextbox1.value.indexOf("{{Wikipedia:Peer review/");
          document.editform.wpTextbox1.value = document.editform.wpTextbox1.value.substring(0,req) + '{{Wikipedia:Peer review/' + target + '}}\n' + document.editform.wpTextbox1.value.substring(req,document.editform.wpTextbox1.value.length);
          document.editform.wpSummary.value = '[[Wikipedia:Peer review/' + target + ']]';
        }
      else if (theaction == 'prsub')
        {
          if (document.editform.wpTextbox1.value.length > 0)
            {
              window.alert("There's an old peer review at the default location already.\n\n" +
                           'Please either move it out of the way (and update existing links to it), or file the PR by hand in another location (such as [[Wikipedia:Peer review/' + wgTitle.split("/")[1] + ' 2]]).');
            }
          else
            document.editform.wpTextbox1.value += '===[[' + target + ']]===\n' +
              '<!--Reason for nomination.--> ~~' + '~~';
        }
      else if (theaction == 'prtemp')
        {
          if (document.editform.wpTextbox1.value.indexOf('{{peerreview}}') != -1)     
              window.alert("There has already been a peer review.");
          else{
              document.editform.wpTextbox1.value = '{{peerreview}}\n\n' + document.editform.wpTextbox1.value;
              document.editform.wpSummary.value = 'peer reviewing - [[Wikipedia:Peer review/' + target + ']]';
            }
        }
      else
        pr();
    }
}

$(function () {
    if(document.forms.editform) {
        addLink('p-cactions', 'javascript:autopr()', 'send to WP:PR', 'ca-peerreview', 'Submits article for peer review', '', '');
    }
});

if(document.location.href.indexOf("fakeaction") != -1)
{
	addOnloadHook(autopr);
}

//</pre> end

////////////////////////////////////////
/*List of things to do:
 // Determine the usage of commas with dates
 // <s>Determine the length of a lead (number of paragraphs)</s>
 // <s>Figure out if the lead is too short (1 paragraph) or too long (>=4 paragraphs), depending upon size of article</s>
 // <s>Determine if no-break spaces (&nbsp;) are used </s>
 // Determine if conversions are included
 // <s>Determine if standard abbreviations are used for conversions</s>
 // <s>Determine if units are spelled out in text</s>
 // <s>Determine if last few sections (see also, references, notes, external links) follow [[WP:GTL]]</s>
 // Determine if extraneous bolding is used
 // <s>Determine if categories and interlanguage links are alphabetized</s>
 // Determine if quotes have sources
 // Prove that images have proper image copyright tags
 // Show that all fair use images have proper fair use rationales
 // <s>Determine if all images have captions</s>
 // <s>Find out the number of sections</s>
 // Determine if sections or paragraphs are too short 
 // Determine if a list is used
 // <s>Determine if footnote spacing standards are used (as in [[WP:FOOTNOTE]])</s>
 // Determine if words in headings are capitalized
 // Find common [[User:Tony1/How to satisfy Criterion 2a|redunancies]]
 // <s>Time/future issues</s>
 // Check w/ U:SUGG to see if any other things are missing
 // Automatic archiving
 // Improving efficiency

Second priority issues:
 // Add to list of units (for units, conversions, and standard abbreviations)
 // Add to list of weasel words
 // Improve the headingre function to exclude "the" and words in parentheses
 // infoboxes...
*/