Track AR links

By Lukáš Lalinský Last update Nov 26, 2006 — Installed 242 times. Daily Installs: 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0
// ==UserScript==
// @name           Track AR links
// @description    Display track AR links on a release page
// @include        http://musicbrainz.org/release/*
// @include        http://musicbrainz.org/album/*
// @include        http://musicbrainz.org/show/release/*
// ==/UserScript==

/*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com
*/
function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}

var relbox = getElementsByClassName(document, "div", "RelationshipBox")[0];
var links = relbox.getElementsByTagName("a");
var entity = undefined;
for (var i in links) {
    if (links[i].href) {
        if (links[i].href.match(/http:\/\/musicbrainz.org\/edit\/relationship\/add.html/)) {
            entity = links[i].href.match(/link1=([a-z]+=[0-9]+)/)[1];
        }
    }
}

var tracks = getElementsByClassName(document, "tr", "track");
for (var i in tracks) {
    var links = getElementsByClassName(tracks[i], "td", "links")[0];
    var trackid = links.getElementsByTagName("a")[0].href.match(/trackid=(\d+)/)[1];
    var link = document.createElement("span");
    link.innerHTML = '<a href="/show/track/?trackid=' + trackid + '&addrel=1">Use in rel.</a> | ';
    if (entity) {
        var url = "http://musicbrainz.org/edit/relationship/add.html?link0=";
        if (entity.split("=")[0] < "track")
            url += entity + "&link1=track=" + trackid;
        else
            url += "track=" + trackid + "&link1=" + entity;
        link.innerHTML += '<a href="' + url +'">Create rel.</a> | ';
    }
    links.insertBefore(link, links.firstChild);
}