function crEl() {
	function cE(el) {
		if (typeof(document.createElementNS) != "undefined") {
			return document.createElementNS("http://www.w3.org/1999/xhtml", el);
		}
		if (typeof(document.createElement) != "undefined") {
			return document.createElement(el);
		}
		return false;
	}
	function crTN(sumtxt) {
		return document.createTextNode(sumtxt);
	}
	var a = arguments;
	var nN = a[0].toLowerCase();
	if(nN == "tn") {
		var tN = crTN(a[1]);
		return tN;
	} else if(a.length >= 1 && typeof(a[0]) == "string") {
		var tE = cE(nN);
		var strs = new Array();
		for(var b = 0; b < a.length; ++b) {
			var tst = a[b];
			if(typeof(tst) == "object") {
				tE.appendChild(tst);
			} else {
				strs.push(tst);
			}
		}
		a = strs;
	} else {
		return a[0];
	}
	var al = a.length;
	if(nN == "param") {
		tE.setAttribute("name", a[1]);
		tE.setAttribute("value", a[2]);
	} else {
		var s = 0;
		var l = 1;
		while(l<al) {
			var m = a[l].toLowerCase();
			if(m == "tn"){
				var txN = crTN(a[l+1]);
				tE.appendChild(txN);
				s=2;
			} else if(m == "param" && (a[l+2])) {
				var tpm = cE(m);
				tpm.setAttribute("name", a[l+1]);
				tpm.setAttribute("value",a[l+2]);
				tE.appendChild(tpm);
				s=3;
			} else if(m == "onclick") {
				tE.onclick = a[l+1];
				s=2;
			} else {
				tE.setAttribute(a[l], a[l+1]);
				s=2;
			}
			l+=s;
		}
	}
	return tE;
}

var Delicious;
if(typeof(Delicious) == "undefined") {Delicious = {};}
Delicious.Mp3 = {
	playimg: null,
	player: null,
	go: function() {
		var all = document.getElementsByTagName("a");
		for (var i = 0; i < all.length; ++i) {
			var o = all[i];
			if(o.href.match(/\.mp3$/i)) {
				var img = crEl("img","src","http://del.icio.us/static/img/mp3/play.gif","title","listen","alt",".","width","12","height","12","style","margin-right:0.5em;cursor:pointer;");
				img.onclick = Delicious.Mp3.makeToggle(img,o.href);
				o.parentNode.insertBefore(img, o);
	}}},
	toggle: function(img, url) {
		if (Delicious.Mp3.playimg == img) {Delicious.Mp3.destroy();}
		else {
			if (Delicious.Mp3.playimg) {Delicious.Mp3.destroy();}
			img.src = "http://del.icio.us/static/img/mp3/stop.gif"; Delicious.Mp3.playimg = img;
			Delicious.Mp3.player = crEl("span");
			var p0 = crEl("param","allowScriptAccess","sameDomain");
			var p1 = crEl("param","flashVars","theLink="+url);
			var p2 = crEl("param","movie","http://del.icio.us/static/swf/playtagger.swf");
			var p3 = crEl("param","quality","high");
			var p4 = crEl("param","bgcolor","#ffffff");
			var p5 = crEl("param","wmode","transparent");
			var tempobj	= crEl("object","type","application/x-shockwave-flash","data","http://del.icio.us/static/swf/playtagger.swf","style","vertical-align:bottom;","width","100","height","14","id","player",p0,p1,p2,p3,p4,p5);
			Delicious.Mp3.player.appendChild(tempobj);
			img.parentNode.insertBefore(Delicious.Mp3.player, img.nextSibling);
	}},
	destroy: function() {
		Delicious.Mp3.playimg.src = 'http://del.icio.us/static/img/mp3/play.gif'; Delicious.Mp3.playimg = null;
		Delicious.Mp3.player.removeChild(Delicious.Mp3.player.firstChild); Delicious.Mp3.player.parentNode.removeChild(Delicious.Mp3.player); Delicious.Mp3.player = null;
	},
	makeToggle: function(img, url) { return function(){ Delicious.Mp3.toggle(img, url); };}
};

Delicious.addLoadEvent = function(f) { var old = window.onload;
	if (typeof old != 'function') {window.onload = f;}
	else { window.onload = function() { old(); f(); };}
};

Delicious.addLoadEvent(Delicious.Mp3.go);
