User:Neo-Jay/monobook.js

//  function MyaddLoadEvent(func) {   if (window.addEventListener) window.addEventListener("load", func, false); else if (window.attachEvent) window.attachEvent("onload", func); }

function checkpath(url) { var reg=/^\/w(\/|iki\/).*/; if(reg.test(url))return true;

}

function getpathfromurl(url) { var ret=new String(url); var path3=/^([A-Za-z0-9_]+):\/\/([^\/]*)\/(.*)/; return ret.replace(path3,"$3"); }

function getpath(olink){ if(is_gecko){ return olink.pathname; }   var reg=/^.*href="([^"]+)".*$/;    return getpathfromurl(olink.outerHTML.replace(reg,"$1")); }

function getpath1(url) { var ret=new String(url); var path1=/^([A-Za-z0-9_]+):\/\/([^\/]*)\/([^\/]*)\/(.*)/; var tmp=new String(url); ret=ret.replace(path1,"$3"); if(ret==tmp) { return ret.replace(/^([A-Za-z0-9_]+):\/\/([^\/]*)\/(.*)/,"$3"); }   return ret; }

function getpath2(url) { var ret=new String(url); var path2=/^([A-Za-z0-9_]+):\/\/([^\/]*)\/([^\/]*)\/([^\/]*)\/(.*)/; var tmp=new String(url); ret=ret.replace(path2,"$4"); if(ret==tmp){ return ret.replace(/^([A-Za-z0-9_]+):\/\/([^\/]*)\/([^\/]*)\/(.*)/,"$4"); };   return ret; }

function update(url) { var ret=new String(url); var ud=/^http:\/\/([^\.\/]*).(wikimedia|wikipedia|wiktionary|wikibooks|wikiquote|wikisource|wikinews).org\/(.*)/; return ret.replace(ud,"https://secure.wikimedia.org/$2/$1/$3"); }

function updateurl(olink) { if(is_gecko) { return update(olink.href); }   var reg=/^.*href="([^"]+)".*$/;    return update(olink.outerHTML.replace(reg,"$1")); }

function fixup(obj) { var path=getpath(obj); if(obj.protocol=="https:" && checkpath(path)) obj.href="/"+getpath1(location)+"/"+getpath2(location)+path; else obj.href=updateurl(obj); obj.onmouseover=obj.oldfun; } function checklink(olink) { if(olink.hostname=="upload.wikimedia.org")return; if(olink.hostname=="mail.wikipedia.org")return; if(olink.protocol=="https:") { if(olink.hostname=="secure.wikimedia.org") { if(!checkpath(olink.pathname))return; }   }    olink.oldfun=olink.onmouseover; if(olink.oldfun) { olink.onmouseover=function{this.oldfun;fixup(this);} }   else olink.onmouseover=function{fixup(this);} }

function updatehook { for(i=0;i+document.links.length;++i) { checklink(document.links[i]); } }

if(location.protocol=="https:") { MyaddLoadEvent(updatehook); }//