User:Nichalp/monobook.js

// Useful stuff from WikiProject_User_scripts

function addToolboxLink(url, name, id){ var tb = document.getElementById('p-tb').getElementsByTagName('ul')[0]; addlilink(tb, url, name, id); }

function addlilink(tabs, url, name, id, title, key){ var na = document.createElement('a'); na.href = url; na.appendChild(document.createTextNode(name)); var li = document.createElement('li'); if(id) li.id = id; li.appendChild(na); tabs.appendChild(li); if(id) { if(key && title) ta[id] = [key, title]; else if(key)    ta[id] = [key, '']; else if(title)  ta[id] = ['', title]; } // re-render the title and accesskeys from existing code in wikibits.js  akeytt; return li; }

function addTab(url, name, id, title, key){ var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0]; addlilink(tabs, url, name, id, title, key); }

function addPurge{ ta['ca-purge'] = ['g', 'Purge the internal cache for this page']; var x = document.getElementById('ca-history'); if(!x) return; if(x.children) x = x.children[0].href; else x = x.childNodes[0].href; addTab(x.replace(/=history/, "=purge"), 'purge', 'ca-purge'); akeytt; }

// culled from User:Lupin/popups.js

function nichalp_articleFromURL(h) { if (typeof h != 'String') h=String(h); h=decodeURI(h); var m=RegExp('[^:]*://en\\.wikipedia\\.org/(wiki/|w/index\\.php\\?title=)([^&?]*)').exec(h); if(m===null) return null; return m[2]; }

function nichalp_isIpUser(user) { return RegExp('(User:)?' +                '((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}' +                 '(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])') .test(user); }

function nichalp_removeAnchor(article) { // is there a #? if not, we're done var i=article.indexOf('#'); if (i == -1) return article; return article.substring(0,i); }

function nichalp_userName(article) { var i=article.indexOf('User'); var j=article.indexOf(':'); if (i != 0 || j == -1) return null; var k=article.indexOf('/'); if (k==-1) return article.substring(j+1); else return article.substring(j+1,k); }

// do it

function nichalp_customLinks { addPurge; var article=nichalp_articleFromURL(document.location.href); if (!article) return; var user=nichalp_userName(article); if(!user) return; user=nichalp_removeAnchor(user); if (!nichalp_isIpUser(user)) { addToolboxLink('http://tools.wikimedia.de/~interiot/cgi-bin/Tool1/wannabe_kate?username='+user+'&site=en.wikipedia.org', user+"'s edit count", 'toolbox_katestool'); } var special='http://en.wikipedia.org/w/index.php?title=Special:'; addToolboxLink(special + 'Log&user='+user, user+"'s log", 'toolbox_userlog'); addToolboxLink(special + 'Blockip&ip='+user, 'Block '+user, 'toolbox_blockuser'); addToolboxLink(special + 'Special:Ipblocklist&action=unblock&ip='+user, 'Unblock '+user, 'toolbox_unblockuser'); addToolboxLine(special + 'Special:PrefixIndex'); }

// make it all happen on page load

if (window.addEventListener) window.addEventListener("load",nichalp_customLinks,false); else if (window.attachEvent) window.attachEvent("onload",nichalp_customLinks); else { window._old_nichalp_onload = window.onload; window.onload = function { window._old_nichalp_onload; nichalp_customLinks; } }

// This will add an [edit] link at the top of all pages except preview pages and the main page // by User:Pile0nades

// Add an [edit] link to pages $(function {  // if this is preview page or generated page, stop  if( document.getElementById("wikiPreview") || document.getElementById("histlegend‎") || document.getElementById("difference‎") || document.getElementById("watchdetails") || document.getElementById("ca-viewsource") || window.location.href.indexOf("/wiki/Special:") != -1 ) {   if(window.location.href.indexOf("&action=edit&section=0") != -1) {      document.getElementById("wpSummary").value = "/* Intro */ ";    }    return;  };

// get the page title var pageTitle = wgPageName;

// create div and set innerHTML to link var divContainer = document.createElement("div"); divContainer.innerHTML = ' [edit intro] ';

// insert divContainer into the DOM below the h1 if(window.location.href.indexOf("&action=edit") == -1) { document.getElementById("content").insertBefore(divContainer, document.getElementsByTagName("h1")[0]); }

});

// //Helper tools mw.loader.load(            'https://en.wikipedia.org/w/index.php?title=User:Voice_of_All/Addtabs/monobook.js'             + '&action=raw&ctype=text/javascript&dontcountme=s'); //END

// RfAshowlinks = 'true'; //

function jssubmitclose { var form = document.getElementById('editform'); form.submit; }

//archive recent promotions function cratfinish { if (location.href.search(/&jsaction=[SF]RFAunlist&target=/) !=-1) {  var name = unescape(location.href.split('&target=')[1].split('&target2=')[0]); var user = unescape(location.href.split('&target2=')[1]); var listing = "\n"; var txt=document.editform.wpTextbox1; if (txt.value.indexOf(listing) == -1){alert('RfA already removed.'); return;} txt.value = txt.value.replace(listing,''); alert(name + ' unlisted.'); if (location.href.indexOf('&jsaction=SRFAunlist') !=-1) {  document.editform.wpSummary.value = "RfA closed, " + user + " promoted."; }   else if (location.href.indexOf('&jsaction=FRFAunlist') !=-1) {  document.editform.wpSummary.value = "RfA closed, no consensus to promote " + user + "."; }  } //add to recent promotion list else if (location.href.indexOf('&jsaction=RFAsucadd&target') != -1) {  var target = unescape(location.href.split('&target=')[1].split('&')[0]); var name =  + '\n' + ; var txt = document.editform.wpTextbox1; if (txt.value.indexOf('==Most recent successful nominations==') == -1) return; var RFA_list = txt.value.split('==Most recent successful nominations==')[1]; var RFAs = RFA_list.match(/\{\{Wikipedia:Requests for adminship\/.+\}\}\n/ig); var lastRfA = RFAs[RFAs.length-1]; //remove last RfA RFA_list=RFA_list.replace(lastRfA,''); //add new one txt.value = '==Most recent successful nominations==' + '\n' + name + RFA_list; document.editform.wpSummary.value += 'Adding "' + target + '".'; //jssubmitclose; } //add to recent failure list else if (location.href.indexOf('&jsaction=RFAfailadd&target=') != -1) {  addTab("javascript:Alpha_userwait2", "(Add)", "ca-add", "Add", ""); alert('Add "[NEW]" to the proper alphabetical location and press (add).'); var to_add = unescape(location.href.split('&target=')[1].split('&')[0]); var name = to_add.split()[1].split()[0]; document.editform.wpSummary.value += 'Adding "' + name + '".'; } }

// var Alpha_user_done = 0; function Alpha_userwait2 {  var to_add = unescape(location.href.split('&target=')[1].split('&')[0]) + '\n'; var name = to_add.split()[1].split()[0]; if (Alpha_user_done == 1){alert('Already added.'); return;} if (document.editform.wpTextbox1.value.indexOf('[NEW]') != -1){Alpha_user_done=1;} document.editform.wpTextbox1.value = document.editform.wpTextbox1.value.replace('[NEW]',to_add); }

function CHUlinks { if(document.title.indexOf("Editing Wikipedia:Changing username (section)") == 0) {       var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0]; addlimenu(tabs, 'Rename results', 'chclosefunc'); var chclosefunc = document.getElementById('chclosefunc').getElementsByTagName('ul')[0]; //Rename results addlilink(chclosefunc, 'javascript:Cng_UName(1)', 'done', ''); addlilink(chclosefunc, 'javascript:Cng_UName(2)', 'not done', ''); } }

// var Cng_UNamealready = 0; function Cng_UName(type) { if (type == 1 && Cng_UNamealready != 1) { Cng_UNamealready=1; document.editform.wpTextbox1.value += "\n" + ":✅ Done. ~"; document.editform.wpSummary.value += "Complete."; } else if (type == 2 && Cng_UNamealready != 1) { Cng_UNamealready=1; document.editform.wpTextbox1.value += "\n" + ":That username already exists. Please follow the instructions at the top of the page to select an unregistered username. ~"; document.editform.wpSummary.value += ":❌ Username already exists."; } }

//navdivs var hide_rfa_div = ' '; var hide_rfa_div2 = ' '; function crathide { if (location.href.search(/&oldid=|&diff=|&action=[^p]/) !=-1) return; if (!RfAshowlinks){RfAshowlinks = 'false'} if (wgTitle != "Requests for adminship" || wgNamespaceNumber != 4 || RfAshowlinks != 'true') return; //kill table of contents //if (document.getElementById('toc')) document.getElementById('toc').innerHTML = ''; var rawhtml = document.getElementById('bodyContent').innerHTML; newhtml = rawhtml.replace(/( <\/a><\/p>[\n\r]) /igm,'  $1' + hide_rfa_div + ' '); newhtml = newhtml.replace(/( <\/a><\/p>[\n\r] )/igm,' $1'); newhtml = newhtml.replace(/( <\/a><\/p>[\n\r] )/igm,' $1'); newhtml = newhtml.replace(/(\(\d+\/\d+\/\d+\)).+ \d\d:\d\d.+ \(UTC\)( |)(<\/b>|)/ig,rfaTally); document.getElementById('bodyContent').innerHTML = newhtml; }

function rfaTally(match,tally) { var S = 1*tally.match(/\d+/g)[0]; var O = 1*tally.match(/\d+/g)[1]; var N = 1*tally.match(/\d+/g)[2]; perc = Math.round((100)*100*S/(S+O))/100; tperc = Math.round((100)*100*S/(S+O+N))/100; var color = 'red'; if (perc > 90) color = 'green'; else if (perc > 80) color = 'darkgreen'; else if (perc > 70) color = 'darkorange'; else if (perc > 60) color = 'darkred'; poll = ' [' + perc + '% ] (Confident: ' + tperc + '% )'; var string = match + ' ' + poll + ' ' + hide_rfa_div2 + '  '; return string; }

//Get text in between two heading tag (eventually, h1, h3, ect...) //the first input is the raw parent xml //this assumes unique titles! function getSectionBodytext(html,firstheading,nextheading,level) { var htag = '<' + level + '>'; var ehtag = '<\/' + level + '>'; var first_id = '  '; var next_id = '  '; var body_html = html.split(first_id)[1].split(next_id)[0]; var first_header = body_html.match(new RegExp(htag + '.+' + ehtag,''))[0]; var body_html = body_html.substr(body_html.indexOf(first_header)); return body_html; }

function crattools { if(document.getElementById('ca-talk') && document.title.indexOf('Wikipedia:') != -1) {document.getElementById('ca-talk').firstChild.innerHTML = 'Talk';} if (document.title.indexOf('Editing Wikipedia:Requests for adminship/') != -1) {    addTab("javascript:cratClose(1)", "(✓)", "ca-cratS", "Close as success", ""); addTab("javascript:cratClose(-1)", "(X)", "ca-cratF", "Close as failure", ""); }  else if (document.title.indexOf('Editing ') == -1 && document.title.indexOf('Wikipedia:Requests for adminship/') != -1 && location.href.indexOf('=history') == -1) {    addTab("javascript:cratcomment", "mess", "ca-cratI", "Leave user a new message", ""); } }

function cratClose(type) { var txt = document.editform.wpTextbox1; var RfAName = document.title.split(' (section)')[0].split(' - ')[0].split('Editing ')[1]; var user_name = RfAName; if (txt.value.indexOf('{{User|') != -1) {user_name = txt.value.split('{{User|')[1].split('}}')[0].split('}')[0]} else if (txt.value.indexOf('{{user|') !=-1) {user_name = txt.value.split('{{user|')[1].split('}}')[0].split('}')[0]} var message = 'Closing ' + RfAName + '.'; var return_value = confirm(message); if (return_value != true){return;} if (document.editform.wpTextbox1.value.indexOf('The following discussion is preserved as an archive of') != -1) {alert('Already closed!'); return;} if (txt.value.indexOf('{{subst:rfab}') != -1){alert('Already closed!'); return;} //both var timeValue = new Date.toUTCString.replace(/GMT/, "(UTC)"); txt.value = txt.value.replace(/(ending|Scheduled to end) \d\d:\d\d, .+ \(UTC\)/i,'Ended ' + timeValue); txt.value = txt.value.replace(/\}\}( |)Voice your opinion/ig,"}} Final"); txt.value = txt.value.replace(/\|action=edit\}\} (voice|vote|discuss|comment) .{1,20}\]/ig,"|action=edit}} Final]"); //passed if (type == 1) { var deadlink = 'NOT_FOUND_LINK_YET'; txt.value = "" + "\n" + txt.value + ""; document.editform.wpSummary.value += "Closing successful nomination."; window.open('http://en.wikipedia.org/w/index.php?title=Wikipedia:Requests_for_adminship&action=edit&jsaction=SRFAunlist&target=' + escape(RfAName) + '&target2=' + escape(user_name),'BCratcloseRFA:' + RfAName,'location=no,toolbar=no,status=no,directories=no,scrollbars=yes'); window.open('http://en.wikipedia.org/w/index.php?title=Wikipedia:Successful_adminship_candidacies&action=edit&section=1&jsaction=RFAsucadd&target=' + escape(RfAName),'BCratcloserecentRFA:' + RfAName,'location=no,toolbar=no,status=no,directories=no,scrollbars=yes'); cratpromote; } //failed if (type == -1) { var deadlink = 'NOT_FOUND_LINK_YET'; if (txt.value.indexOf('{{subst:rfab}') != -1){alert('Already closed!'); return;} document.editform.wpTextbox1.value = "" + "\n" + document.editform.wpTextbox1.value + ""; document.editform.wpSummary.value += "Closing unsuccessful nomination."; var tally = ''; if (txt.value.search(/\(\d+\/\d+\/\d+\)/) != -1) {tally = txt.value.match(/\(\d+\/\d+\/\d+\)/)[0];} var RfA_data = '*' + user_name + ', ' + timeValue + ' - consensus not reached at ' + tally; var first_let = user_name.substring(0,1).toUpperCase; window.open('http://en.wikipedia.org/w/index.php?title=Wikipedia:Requests_for_adminship&action=edit&jsaction=FRFAunlist&target=' + escape(RfAName) + '&target2=' + escape(user_name),'BCratcloseRFA:m' + RfAName,'location=no,toolbar=no,status=no,directories=no,scrollbars=yes'); window.open('http://en.wikipedia.org/w/index.php?title=Wikipedia:Unsuccessful_adminship_candidacies/' + first_let + '&action=edit&section=&jsaction=RFAfailadd&target=' + escape(RfA_data),'BCratcloserecentRFA:' + RfAName,'location=no,toolbar=no,status=no,directories=no,scrollbars=yes'); } }

function alpha_sec(string) { var letter = string.substring(0,1).toLowerCase; if (letter == 'a'){sec=1;} else if (letter == 'b'){sec=2;} else if (letter == 'c'){sec=3;} else if (letter == 'd'){sec=4;} else if (letter == 'e'){sec=5;} else if (letter == 'f'){sec=6;} else if (letter == 'g'){sec=7;} else if (letter == 'h'){sec=8;} else if (letter == 'i'){sec=9;} else if (letter == 'j'){sec=10;} else if (letter == 'k'){sec=11;} else if (letter == 'l'){sec=12;} else if (letter == 'm'){sec=13;} else if (letter == 'n'){sec=14;} else if (letter == 'o'){sec=15;} else if (letter == 'p'){sec=16;} else if (letter == 'q'){sec=17;} else if (letter == 'r'){sec=18;} else if (letter == 's'){sec=19;} else if (letter == 't'){sec=20;} else if (letter == 'u'){sec=21;} else if (letter == 'v'){sec=22;} else if (letter == 'w'){sec=23;} else if (letter == 'x'){sec=24;} else if (letter == 'y'){sec=25;} else if (letter == 'z'){sec=26;} else {sec=0;} return sec; }

function cratcomment { var user_name = document.title.split('Wikipedia:Requests for adminship/')[1].split(' - ')[0]; if (document.getElementsByTagName('h3')[1]) { if (document.getElementsByTagName('h3')[1].getElementsByTagName('strong')[0]) {user_name = document.getElementsByTagName('h3')[1].getElementsByTagName('strong')[0].innerHTML;} else {user_name = document.getElementsByTagName('h3')[1].innerHTML;} } window.open('http://en.wikipedia.org/w/index.php?title=User_talk:' + user_name + '&action=edit&section=new',             'targetnameBCratclose', 'location=no,toolbar=no,status=no,directories=no,scrollbars=yes'); }

function cratpromote { var user_name = document.title.split('Wikipedia:Requests for adminship/')[1].split(' - ')[0]; if (document.editform.wpTextbox1.value.match(/\{\{user\|.+\}\}/ig)) {user_name = document.editform.wpTextbox1.value.split(/\{\{user\|/i)[1].split(/\}\}/)[0];} window.open('http://en.wikipedia.org/w/index.php?title=Special%3AMakesysop&wpMakesysopUser=' + escape(user_name),             'BCratPromote:' + user_name, 'location=no,toolbar=no,status=no,directories=no,scrollbars=yes'); }

function cratstats_add { if (location.href.indexOf('&action=history') ==-1 || document.title.search(/Wikipedia:Requests for (adminship|bureaucratship)\/|Wikipedia:Arbitration Committee Elections [^ ]+ \d\d\d\d\/Vote\//) !=0){return;} var name = document.title.split(' - ')[0]; var url = 'http://en.wikipedia.org/w/index.php?title=' + name + '&action=history&limit=5000&jsaction=validate'; addTab(url, "✓?", "ca-vstats", "Voter statistics", ""); }

function crat_stats { if (location.href.indexOf('&limit=5000&jsaction=validate') ==-1){return;} //monobook if (document.getElementById('bodyContent')) {var body = document.getElementById('bodyContent');} //cologneblue else {var body = document.getElementById('content');} var l = body.getElementsByTagName('li'); var html = ' List of participants on this page: '; var thenamelist = '|'; for (var i=l.length-1; i >= 0; i--) { if (l[i].innerHTML.indexOf('>) (last)') !=-1)    {var name = l[i].getElementsByTagName('a')[2].innerHTML; var date = l[i].getElementsByTagName('a')[1].innerHTML;}  else if (l[i].innerHTML.indexOf('(cur) (<') !=-1) {var name = l[i].getElementsByTagName('a')[2].innerHTML; var date = l[i].getElementsByTagName('a')[1].innerHTML;} else {var name = l[i].getElementsByTagName('a')[3].innerHTML; var date = l[i].getElementsByTagName('a')[2].innerHTML;} if (thenamelist.indexOf('|' + name + '|') ==-1) {   thenamelist += name + '|'; var name_link = '' + name + ''; html += '\n' + '' + name_link + ' -- ' + date + ''; } } body.innerHTML = body.innerHTML.split()[0] +  + ' ' + html + ''; //number our voters var l = body.getElementsByTagName('li'); for (var i=0; i<l.length; i++) { var num = i+1; l[i].innerHTML = ' #' + num + ' ' + l[i].innerHTML; } consec_votercheck(0); }

// var voter_index = 0; var name_user_vote = ''; function consec_votercheck(voter_index) { if (document.getElementById('voterstats').getElementsByTagName('li')[voter_index]) { current_user_name = document.getElementById('voterstats').getElementsByTagName('li')[voter_index].getElementsByTagName('a')[0].innerHTML; var URL = '/w/index.php?title=Special%3ALog&type=newusers&page=User:' + current_user_name + '&useskin=standard'; xml_http = HTTPClient; xml_http.open("GET", URL, true); xml_http.onreadystatechange = consec_votercheck_last; xml_http.send(null); } else {return;} }

function consec_votercheck_last { if (xml_http.readyState != 4) return; var doc = xml_http.responseText.split(" ")[1]; var date = '(older account)'; if (!doc) date = '(error)'; else if (doc.indexOf('<ul>') !=-1) {   doc = doc.split('<ul>')[1].split('</ul>')[0]; if (doc.indexOf('<li>') !=-1) {date = ' ' + doc.split('<li>')[1].split('</li>')[0].split('<a href=')[0].split('(')[0] + ' ';} }  date = ' Created: ' + date;  document.getElementById('voterstats').getElementsByTagName('li')[voter_index].innerHTML += date; // var URL = '/w/index.php?title=Special:Contributions&go=first&limit=1&target=' + current_user_name + '&useskin=standard';  xml_http = HTTPClient;  xml_http.open("GET", URL, true);  xml_http.onreadystatechange = consec_votercheck_edits;  xml_http.send(null); }

function consec_votercheck_edits { if (xml_http.readyState != 4) return; var doc = xml_http.responseText.split(' ')[1]; var first = '(error)'; if (doc && doc.indexOf('<ul>') !=-1) {   doc = doc.split('<ul>')[1].split('</ul>')[0]; if (doc.indexOf('<li>') !=-1) {first = doc.split('<li>')[1].split('</li>')[0].split('<a href=')[0].split('(')[0];} }  first = ' 1st edit: ' + first;  document.getElementById('voterstats').getElementsByTagName('li')[voter_index].innerHTML += first; // var URL = '/w/index.php?title=Special:Contributions&limit=250&target=' + current_user_name + '&useskin=standard';  xml_http = HTTPClient;  xml_http.open("GET", URL, true);  xml_http.onreadystatechange = consec_votercheck_blocks;  xml_http.send(null); }

function consec_votercheck_blocks { if (xml_http.readyState != 4) return; var doc = xml_http.responseText.split(" ")[1]; var edits=0; if (!doc) edits = '(error)'; else if (doc.indexOf('<ul>') !=-1) {   doc = doc.split('<ul>')[1].split('</ul>')[0]; if (doc.search(/<li>.+<\/li>/g) !=-1) edits = doc.match(/<li>.+<\/li>/g).length; } if (edits >= 250){edits = ' 250+ ';} else if (edits <= 100){edits = '<a href="/w/index.php?title=Special:Contributions/' + current_user_name + '"> ' + edits + ' </a>';} else {edits = '<a href="/w/index.php?title=Special:Contributions/' + current_user_name + '"> ' + edits + ' </a>';} edits = ' #E: ' + edits; document.getElementById('voterstats').getElementsByTagName('li')[voter_index].innerHTML += edits; // var URL = '/w/index.php?title=Special:Log&type=block&limit=5000&page=User:' + current_user_name + '&useskin=standard'; xml_http = HTTPClient; xml_http.open("GET", URL, true); xml_http.onreadystatechange = consec_votercheck_next; xml_http.send(null); }

function consec_votercheck_next { if (xml_http.readyState != 4) return; var doc = xml_http.responseText.split(" ")[1]; var blocks = 0; if (!doc) blocks = '(error)'; else if (doc.indexOf('<ul>') !=-1) {   doc = doc.split('<ul>')[1].split('</ul>')[0]; if (doc.match(/<li>.+<\/a>\) blocked "<a href=.+<\/li>/g))     {blocks = doc.match(/<li>.+<\/a>\) blocked "<a href=.+<\/li>/g).length;} } if (blocks > 0){blocks = '<a href="/w/index.php?title=Special:Log&type=block&limit=5000&page=User:' + current_user_name + '"> ' + blocks + ' </a>';} blocks = ' #B: ' + blocks; document.getElementById('voterstats').getElementsByTagName('li')[voter_index].innerHTML += blocks; //re-iterate voter_index += 1; consec_votercheck(voter_index); }

$(crat_main) function crat_main { crattools; cratfinish; CHUlinks; crathide; cratstats_add; crat_stats; }

//

// //This function adds a link to the toolbox which, when clicked, displays the size of the page //and the size of the prose. See the talk page for more details. // //To use this function add User:Dr pda/prosesize.js to your monobook.js // function loadXMLDocPassingTemplate(url,handler, page) {   // branch for native XMLHttpRequest object if (window.XMLHttpRequest) { var req = new XMLHttpRequest; }   // branch for IE/Windows ActiveX version else if (window.ActiveXObject) { var req = new ActiveXObject("Microsoft.XMLHTTP"); }  if (req) { req.onreadystatechange = function {handler(req, page)}; req.open("GET", url, true); req.send(""); } } function getWikiText(req, page) { // only if req shows "loaded" if (req.readyState == 4) { // only if "OK" if (req.status == 200) { // ...processing statements go here... response = req.responseText; var startindex = response.indexOf('mw-search-results'); startindex = response.indexOf('title="'+page+'"',startindex); var endindex = response.indexOf('</li>',startindex); if(startindex > -1){ searchresult = response.substr(startindex,endindex-startindex); result = searchresult.match(/\d+ [Kk]?i?B \(\d+ words\)/); wiki_value = document.createElement("li"); wiki_value.id = "wiki-size"; wiki_value.innerHTML = 'Wiki text: '+result; var output = document.getElementById("document-size-stats"); prose_value = document.getElementById("prose-size"); output.insertBefore(wiki_value,prose_value); }	 else{ //alert("There was a problem using the Wikipedia Search to find the wiki text size\nEither the search is not working or the correct article did not appear on the first page of results"); wiki_value = document.createElement("li"); wiki_value.id = "wiki-size"; wiki_value.innerHTML = 'Wiki text: Problem with search'; var output = document.getElementById("document-size-stats"); prose_value = document.getElementById("prose-size"); output.insertBefore(wiki_value,prose_value); }       } else { alert("There was a problem retrieving the XML data:\n" +               req.statusText); }   } } function getFileSize(req, page) { // only if req shows "loaded" if (req.readyState == 4) { // only if "OK" if (req.status == 200) { // ...processing statements go here... var fsize = req.responseText.length; window.status = fsize; var total_value = document.createElement("li"); total_value.id = "total-size"; total_value.innerHTML='File size: '+(fsize/1024).toFixed(0)+' kB'; var output = document.getElementById("document-size-stats"); var prose_html_value = document.getElementById("prose-size-html"); output.insertBefore(total_value,prose_html_value); } else { alert("There was a problem retrieving the XML data:\n" +               req.statusText + "\n(" + url + ")"); }   } } function getLength(id){ var textLength = 0; for(var i=0;i<id.childNodes.length; i++){ if(id.childNodes[i].nodeName == '#text'){ textLength += id.childNodes[i].nodeValue.length; } else{ textLength += getLength(id.childNodes[i]); } } return textLength; } function getDocumentSize{ var bodyContent = document.getElementById("bodyContent"); if(document.getElementById("document-size-stats")){ //if statistics already exist, turn them off and remove highlighting var output = document.getElementById("document-size-stats"); var oldStyle = output.className; var pList = bodyContent.getElementsByTagName("p"); for(var i=0;i<pList.length; i++){ if(pList[i].parentNode.id == 'bodyContent') pList[i].style.cssText = oldStyle; }  output.parentNode.removeChild(output); var header = document.getElementById("document-size-header"); header.parentNode.removeChild(header); } else{ var output = document.createElement("ul"); output.id = "document-size-stats"; var prose_html_value = document.createElement("li"); prose_html_value.id = "prose-size-html"; output.appendChild(prose_html_value); var ref_html_value = document.createElement("li"); ref_html_value.id = "ref-size-html"; output.appendChild(ref_html_value); var prose_value = document.createElement("li"); prose_value.id = "prose-size"; output.appendChild(prose_value); output.className = bodyContent.getElementsByTagName("p").item(0).style.cssText; var ref_value = document.createElement("li"); ref_value.id = "ref-size"; output.appendChild(ref_value); var dummy = document.getElementById("siteSub"); dummy.parentNode.insertBefore(output, dummy.nextSibling); var header = document.createElement("span"); header.id = "document-size-header"; header.innerHTML = ' Document statistics: <i>(See <a href="http://en.wikipedia.org/wiki/User_talk:Dr_pda/prosesize.js">here</a> for details.)<i> '; dummy.parentNode.insertBefore(header,output); //If browser supports document.fileSize property (IE) if(document.fileSize){ var total_value = document.createElement("li"); total_value.id = "total-size"; total_value.innerHTML='File size: '+(document.fileSize/1024).toFixed(0)+' kB'; output.insertBefore(total_value,prose_html_value); } else{ loadXMLDocPassingTemplate(location.pathname,getFileSize,'') } //Get size of images only if browser supports filesize property (IE) var iList = bodyContent.getElementsByTagName("img"); if(iList.length >0 && iList[0].fileSize){ //Get size of images included in document var image_size = 0; var first_magnify = true; for (var i=0;i<iList.length; i++){ var im = iList[i]; if(im.getAttribute("src").indexOf("magnify-clip.png") != -1){ if(first_magnify){ image_size += im.fileSize*1; first_magnify = false; }   }    else{ image_size += im.fileSize*1; }  }   var image_value = document.createElement("li"); image_value.id = "image-size"; image_value.innerHTML='Images: '+(image_size/1024).toFixed(0)+' kB'; output.appendChild(image_value); } //Calculate prose size var pList = bodyContent.getElementsByTagName("p"); prose_size = 0; prose_size_html = 0; word_count = 0; for(var i=0;i<pList.length; i++){ var para = pList[i]; if(para.parentNode.id == 'bodyContent'){ prose_size += getLength(para); prose_size_html += para.innerHTML.length; word_count += para.innerHTML.replace(/(<([^>]+)>)/ig,"").split(' ').length para.style.cssText = "background-color:yellow"; } } //Calculate size of reference markers ([1] etc) var rmList = bodyContent.getElementsByTagName("sup"); refmark_size = 0; refmark_size_html = 0; for(var i=0;i<rmList.length; i++){ var refmark = rmList[i]; if(refmark.className == "reference"){ refmark_size += getLength(refmark); refmark_size_html += refmark.innerHTML.length; } } if((prose_size-refmark_size)>10240){ prose_value.innerHTML='Prose size (text only): '+((prose_size-refmark_size)/1024).toFixed(0)+' kB ('+word_count+' words) "readable prose size"'; } else{ prose_value.innerHTML='Prose size (text only): '+(prose_size-refmark_size)+' B ('+word_count+' words) "readable prose size"'; } if((prose_size_html-refmark_size_html)>10240){ prose_html_value.innerHTML='Prose size (including all HTML code): '+((prose_size_html-refmark_size_html)/1024).toFixed(0)+' kB'; } else{ prose_html_value.innerHTML='Prose size (including all HTML code): '+(prose_size_html-refmark_size_html)+' B'; } //Calculate size of references (i.e. output of ) var rList = bodyContent.getElementsByTagName("ol"); var ref_size = 0; var ref_size_html = 0; for (var i=0; i<rList.length; i++){ if(rList[i].className == "references"){ ref_size = getLength(rList[i]); ref_size_html = rList[i].innerHTML.length; } } if((ref_size+refmark_size)>10240){ ref_value.innerHTML='References (text only): '+((ref_size+refmark_size)/1024).toFixed(0)+' kB'; } else{ ref_value.innerHTML='References (text only): '+(ref_size+refmark_size)+' B'; } if((ref_size_html+refmark_size_html)>10240){ ref_html_value.innerHTML='References (including all HTML code): '+((ref_size_html+refmark_size_html)/1024).toFixed(0)+' kB'; } else{ ref_html_value.innerHTML='References (including all HTML code): '+(ref_size_html+refmark_size_html)+' B'; } //get correct name of article from wikipedia-defined global variables var pageNameUnderscores = wgPageName; var pageNameSpaces = pageNameUnderscores.replace(/_/g,' ') //if page is a permalink, diff, etc don't try to search if(!location.pathname.match('/w/index.php')){ //Get size as returned by Wikipedia search var searchURL = '/wiki/Special:Search?search=' + pageNameUnderscores + '&fulltext=Search'; loadXMLDocPassingTemplate(searchURL,getWikiText,pageNameSpaces); } } } $(function {  if(!document.forms.editform){    mw.util.addPortletLink('p-tb', 'javascript:getDocumentSize', 'Page size', 't-page-size', 'Calculate page and prose size', , );  } }); // importScript('User:Gimmetrow/fixRefs.js'); // User:Gimmetrow/fixRefs.js importScript('User:Dr pda/articlehistory.js'); // User:Dr pda/articlehistory.js importScript('User:Dr_pda/editrefs.js'); // User:Dr_pda/editrefs.js importScript('User:Lupin/recent2.js');