User:HorsePunchKid/monobook.js

From Wikipedia, the free encyclopedia

If a message on your talk page led you here, please be wary of who left it. The code below could contain malicious content capable of compromising your account; if your account appears to be compromised, it will be blocked. If you are unsure whether the code is safe, you can ask at the appropriate village pump.
Note: After saving, you have to bypass your browser's cache to see the changes. In Internet Explorer and Firefox, hold down the Ctrl key and click the Refresh or Reload button. Opera users have to clear their caches through Tools→Preferences, see the instructions for Opera. Konqueror and Safari users can just click the Reload button.
/////////////////////////////////////////////////////////////////////////////////
// [[User:Lupin/popups.js]] - please include this line 
 
document.write('<script type="text/javascript" src="' 
             + 'http://en.wikipedia.org/w/index.php?title=User:Lupin/popups.js' 
             + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
popupDelay=2.0;
simplePopups=true;
popupAdminLinks=true;
 
window.onload = Main;
function Main() {
    //changelinks();
    //addtoolboxlinks()
    //addpurge();
    morelinks();
    //LivePreviewInstall();
    addPipesToHistory();
 
    document.getElementById("ca-talk").removeAttribute("acccesskey");
    document.getElementById("ca-unwatch").removeAttribute("acccesskey");
}
 
// Add a pipe to make using Template:Unsigned2 easier.
function addPipesToHistory()
{
    if(document.title.indexOf("- History -") > 0)
    {
        var items=getElementsByClass(document, "history-user", "span");
        for(i=0;i<items.length;i++)
        {
            var hidden=document.createElement("span");
            hidden.appendChild(document.createTextNode("|"));
            hidden.setAttribute("style", "color: white;");
            items[i].childNodes[0].insertBefore(hidden,
                    items[i].childNodes[0].childNodes[0]);
        }
    }
}
 
function replace() {
    var s = prompt("Search regexp?");
    if(s) {
        var r = prompt("Replace regexp?");
        if(!r && r != '') return;
        var txt = document.editform.wpTextbox1;
        txt.value = txt.value.replace(new RegExp(s, "g"), r);
    }
}
//<nowiki>
function morelinks() {
    var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
    if(document.title.indexOf("Editing ") == 0)
    {
        addlilink(tabs, 'javascript:replace()', 'replace', '');
        addlilink(tabs, "javascript:insertTags(' <span class=\"user-sig user-horsepunchkid\">~~~ <span class=\"user-sig-date\">"+getISO8601Date()+"&nbsp;"+getISO8601Time()+"[[ISO 8601|Z]]</span></span>','','')", 'sign', 's');
        document.getElementById("wpSave").removeAttribute("acccesskey");
    }
}
//</nowiki>
function getISO8601Date() {
    var d=new Date();
    return(""+d.getUTCFullYear()+"-"+(d.getUTCMonth()<9?"0":"")+(d.getUTCMonth()+1)+"-"+(d.getUTCDate()<10?"0":"")+d.getUTCDate());
}
 
function getISO8601Time() {
    var d=new Date();
    return(""+(d.getUTCHours()<10?"0":"")+d.getUTCHours()+":"+(d.getUTCMinutes()<10?"0":"")+d.getUTCMinutes()+":"+(d.getUTCSeconds()<10?"0":"")+d.getUTCSeconds());
}
 
/////////////////////////////////////////////////////////////////////////////////
// Wikipedia:WikiProject User scripts/Scripts/Changes since I last edited
function addSinceTab()
{
    var tabs=document.getElementById('p-cactions').getElementsByTagName('ul')[0];
    if (window.location.href.indexOf("&action=history&gotosince=true")!=-1)
       do_since_I_last_edited();
    else if (!/wiki\/Special:|w\/index.php?title=Special:/.test(window.location.href))
    {
       var pageTitle=document.title.slice(0, String(document.title).indexOf(" - "));
       var l=addlilink(tabs, "/w/index.php?title="+pageTitle+"&action=history&gotosince=true", 'since', '');
       l.lastChild.title="Changes since I last edited";
    }
}
function do_since_I_last_edited()
{
        var csub=document.getElementById("contentSub");
        var msg=document.createElement("p");
        msg.appendChild(document.createTextNode("Parsing history, please wait..."));
        msg.className="error";
        csub.insertBefore(msg, csub.firstChild);
 
        var username=document.getElementById("pt-userpage").textContent;
        var users=getElementsByClass(document, "history-user", "span");
 
        for(i=0;i<users.length;i++)
        {
            if(users[i].textContent==username)
            {
                document.location=users[i].parentNode.childNodes[1].href;
                return;
            }
        }
 
        msg.replaceChild(document.createTextNode("You have not edited this page recently."), msg.firstChild);
}
 
if (window.addEventListener) window.addEventListener("load", addSinceTab, false);
else if (window.attachEvent) window.attachEvent("onload", addSinceTab);
 
 
 
/////////////////////////////////////////////////////////////////////////////////
// Helper function; see Wikipedia:WikiProject User scripts/Scripts/Add LI link
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);
}
 
 
 
/////////////////////////////////////////////////////////////////////////////////
// http://www.dustindiaz.com/getelementsbyclass
function getElementsByClass(node,searchClass,tag) {
 var classElements = new Array();
 var els = node.getElementsByTagName(tag);
 var elsLen = els.length;
 var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
 for (i = 0, j = 0; i < elsLen; i++) {
    if ( pattern.test(els[i].className) ) {
      classElements[j] = els[i];
      j++;
    }
  }
  return classElements;
}