// ==UserScript==
// @name           MP3 Play
// @namespace      http://altblue.com/
// @description    Play MP3 files using a Flash Audio Player
// @include        http://*
// ==/UserScript==

//var playerURL = 'https://www.google.com/reader/ui/3247397568-audio-player.swf?audioUrl=';
var playerURL = 'http://people.fits.ro/altblue/n0i/musicplayer/xspf_player.swf?autoload=true&autoplay=true&song_url=';
// "autoplay=true" makes play/stop button unusable :((
var playerButtonURL = 'http://people.fits.ro/altblue/n0i/musicplayer/musicplayer.swf?song_url=';
var noFlashImg = 'http://people.fits.ro/altblue/n0i/musicplayer/noflash.gif';

function playButtonListener(event) {
	var trigger = event.currentTarget;
	event.preventDefault();
	event.stopPropagation();
	var purl = trigger.getAttribute('playurl');
	trigger.style.display = 'none';
	var obj = document.createElement('object');
	obj.setAttribute('type', 'application/x-shockwave-flash');
	obj.setAttribute('data', purl);
	obj.setAttribute('width', 17);
	obj.setAttribute('height', 17);
	var param = document.createElement('param');
	param.setAttribute('name', 'movie');
	param.setAttribute('value', purl);
	obj.appendChild(param);
	var img = document.createElement('img');
	img.setAttribute('width', 17);
	img.setAttribute('height', 17);
	img.setAttribute('src', noFlashImg);
	obj.appendChild(img);
	trigger.parentNode.insertBefore(obj, trigger);
}

var elements = document.evaluate(
  ".//a[substring(@href, (string-length(@href) - string-length('.mp3') + 1))='.mp3']",
  document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null
);

for (var i = 0, len = elements.snapshotLength; i < len; i++) {
    var el = elements.snapshotItem(i);
	var a  = document.createElement("a");
	a.href = playerURL + encodeURIComponent(el.href) + '&song_title=' + encodeURIComponent(el.textContent.replace(/^\s+/,'').replace(/\s+$/,''));
	a.innerHTML = "♫";
	a.style.cssText = "font-weight: bold; text-decoration: none; margin-right: .5em; outline: 1px dotted blue;";
	a.setAttribute('playurl', playerButtonURL + encodeURIComponent(el.href));
	a.addEventListener('click', playButtonListener, false);
	el.parentNode.insertBefore(a, el);
}

