User:VasilievVV/fixCrosswikiLinks

From Meta, a Wikimedia project coordination wiki
function fixCrosswikiLinks() {
  function host(id) {
    var wikimedia = /^(advisory|commons|incubator|me(t|di)a|quality|species|wikimania200[5-9])wiki$/
    if (wikimedia.test(id)) {
      return id.replace("wiki", ".wikimedia.org")
    }
    return id.replace(/_/, ".")
             .replace(/(wiki([mp]edia|quote|source|books|news|versity)|wiktionary)/, ".$1.org")
             .replace(/wiki$/, ".wikipedia.org")
  }

  links = (document.getElementById('content') || document.body).getElementsByTagName("a")
  for (var i = 0; i < links.length; i++) {
    link = links[i]
    if (link.innerHTML.match(/@/)) {
      bits = link.innerHTML.split("@", 2)
      wiki = bits[1]
      user = encodeURIComponent(bits[0].replace(/^\s*User:(.+)\s*$/g, "$1"))
      
      link.className = wiki=='metawiki' ? '' : 'extiw'
      link.title = link.innerHTML  // elimnating (page does not exist)
      if (wiki == "global")
        link.href = "http://toolserver.org/~vvv/sulutil.php?user=" + user
      else
        link.href = "http://" + host(wiki) + "/wiki/User:" + user
      link.innerHTML = link.title  // IE6?!
    }
  }
}

if (wgNamespaceNumber == -1)
  addOnloadHook(fixCrosswikiLinks)