// Flashmp3alizer 0.4 by vst from varal.org
// Released under the MIT License: http://www.opensource.org/licenses/mit-license.php

var FMr = 
{
	all : new Array(),
	
	playlist : new Array(),
	current : 0,

	playerId : false,
	playlistId : false,	
	
	isPopup : false,
	popupIsLoaded : false,
	popupWindow : false,

	run : function() 
	{
		var c = window.FMrConf;
		var id = (c && c.playerId)? c.playerId : "FMrPlayer";
		var plid = (c && c.playlistId)? c.playlistId : "FMrPlaylist";
						
		FMr.playerId = id;
		FMr.playlistId = plid;

		var a = document.getElementsByTagName("a");
		var all = FMr.all; // all = old all from FMr

		for (i = 0; i < a.length; i++)
		{
			if (a[i].href.indexOf(".mp3") == a[i].href.length - 4) 
			{
				all[all.length] = a[i].href; // add new a.href at end of all
				
				a[i].onclick = function () 
				{
				
					// open popup if needed
					if (!FMr.popupIsLoaded || FMr.popupWindow.closed) {
						FMr.playlist = new Array(); // opening popup = makes a new playlist
						FMr.playlist[0] = this; // add this a as the 1st element in the new playlist
					
						FMr.openPopup(); // open popup
						return false;
						}
						
					FMr.popupWindow.FMr.enqueue(this); // didn't need to open popup so enqueue this
					return false;
				};
			}
		}
		
	},

	enqueue : function (link,checker)
	{		
		var p = FMr.playlist;	
		var n = niftyplayer(FMr.playerId);
		var s = n.getPlayingState();
		var l = document.createElement('a');
		var l2 = document.createElement('a');
		var l3 = document.createElement('a');
		var l4 = document.createElement('a');
		var l5 = document.createElement('a');
		var li = document.createElement('li');
		var i = p.length;
		
		if (checker == "first")
			i = 0 ;
		
		n.registerEvent("onSongOver", "window.FMr.next()");
		
		document.getElementById(FMr.playlistId).appendChild(li); // FMr.playlistId gets li
		li.appendChild(l5); // download
		li.appendChild(l4); // move up
		li.appendChild(l3); // move dn
		li.appendChild(l2); // delete
		li.appendChild(l); // main

		p[i] = l; // add new a to end of FMr.playlist
		l.className = 'notplaying';

		//l.innerHTML = link.innerHTML; // for ie, since clonenode and appendchild aren't working wtf
		l.innerHTML = link.name;
		l.href = link.href;
		l.playlistIndex = i;
		l.onclick = function ()
		{
			if (l.playlistIndex != FMr.current) FMr.skipTo(l.playlistIndex);
			return false;
		};
		
		l2.href = "#" ;
		l2.innerHTML = "<img src=\"images\\delete.jpg\" alt=\"Delete\" />" ;
		l2.onclick = function ()
		{
			FMr.remove(l.playlistIndex);
			return false;
		};

		l3.href = "#" ;
		l3.innerHTML = "<img src=\"images\\movedn.jpg\" alt=\"Move Down\" />" ;
		l3.onclick = function ()
		{
			FMr.movedn(l.playlistIndex);
			return false;
		};

		l4.href = "#" ;
		l4.innerHTML = "<img src=\"images\\moveup.jpg\" alt=\"Move Up\" />" ;
		l4.onclick = function ()
		{
			FMr.movedn(l.playlistIndex-1);
			return false;
		};
		
		var linky = link.href ;
		linky = linky.split("mp3s/")[1] ;
		linky = "http://www.mumineenaudio.com/force-download.php?file=%2Fvar%2Fwww%2Fhtml%2Fmp3s%2F"+linky ;
		l5.href = linky ;
		l5.innerHTML = "<img src=\"images\\download.jpg\" alt=\"Download\" />" ;
		
		if (s == "finished" || s == "stopped") FMr.skipTo(i); // if enquequing to a stopped or finished window, skip to playing this
	},
	
	remove : function(i) // so sexy...
	{
		var p = FMr.playlist;	
		var n = niftyplayer(FMr.playerId);
		var s = n.getPlayingState();
		
		if (i >= p.length || i < 0) return; // i actually exists in the playlist
		
		if (i == FMr.current) {
			n.stop() ;
		}
		
		var j ;
		for (j=i+1; j<p.length; j++) {
			p[j-1] = p[j] ;

			var y = document.getElementById(FMr.playlistId).getElementsByTagName("li")[j].getElementsByTagName("a")[2] ;
			y.playlistIndex = j-1 ;
		}
		
		p.splice(p.length-1, 1) ;
		
		var x = document.getElementById(FMr.playlistId).getElementsByTagName("li")[i] ; 
		document.getElementById(FMr.playlistId).removeChild(x);
		
		if (p.length == 0) window.close() ;
		
		if (i == FMr.current && i < p.length)
		{
			FMr.skipTo(i) ;
		}
		else if (i == FMr.current && i == p.length)
		{
			// FMr.current = 0 ;
		}
		else if (i < FMr.current) // only do this if deleting one is above playing one.. freak!!!!!
		{
			FMr.current = FMr.current - 1;
		}

	},
	
	movedn : function(i) // sexier
	{
	
		var p = FMr.playlist;	
		
		if (i >= p.length-1 || i < 0) return; // i actually exists in the playlist and is not the last element
		
		if (i == FMr.current)
		{
			FMr.current = FMr.current+1 ;
		}

		else if (i+1 == FMr.current)
		{
			FMr.current = FMr.current-1 ;
		}

		var a = p[i] ;
		p[i] = p[i+1] ;
		p[i+1] = a ;
		
		var b0 = document.getElementById(FMr.playlistId).getElementsByTagName("li")[i].getElementsByTagName("a")[0] ;
		var b1 = document.getElementById(FMr.playlistId).getElementsByTagName("li")[i].getElementsByTagName("a")[1] ;
		var b2 = document.getElementById(FMr.playlistId).getElementsByTagName("li")[i].getElementsByTagName("a")[2] ;
		var b3 = document.getElementById(FMr.playlistId).getElementsByTagName("li")[i].getElementsByTagName("a")[3] ;
		var b4 = document.getElementById(FMr.playlistId).getElementsByTagName("li")[i].getElementsByTagName("a")[4] ;
		b4.playlistIndex = b4.playlistIndex + 1 ;
		
		var c0 = document.getElementById(FMr.playlistId).getElementsByTagName("li")[i+1].getElementsByTagName("a")[0] ;
		var c1 = document.getElementById(FMr.playlistId).getElementsByTagName("li")[i+1].getElementsByTagName("a")[1] ;
		var c2 = document.getElementById(FMr.playlistId).getElementsByTagName("li")[i+1].getElementsByTagName("a")[2] ;
		var c3 = document.getElementById(FMr.playlistId).getElementsByTagName("li")[i+1].getElementsByTagName("a")[3] ;
		var c4 = document.getElementById(FMr.playlistId).getElementsByTagName("li")[i+1].getElementsByTagName("a")[4] ;
		c4.playlistIndex = c4.playlistIndex - 1 ;
		var d = document.getElementById(FMr.playlistId).getElementsByTagName("li")[i] ;
		d.appendChild(c0) ;
		d.appendChild(c1) ;
		d.appendChild(c2) ;	
		d.appendChild(c3) ;	
		d.appendChild(c4) ;	
		
		var d = document.getElementById(FMr.playlistId).getElementsByTagName("li")[i+1] ;
		d.appendChild(b0) ;
		d.appendChild(b1) ;
		d.appendChild(b2) ;
		d.appendChild(b3) ;
		d.appendChild(b4) ;
		
	},

		
	next : function ()
	{
		if (FMr.popupIsLoaded && !FMr.popupWindow.closed) 
			if (FMr.isPopup) FMr.skipTo(FMr.current+1);
			else FMr.popupWindow.FMr.skipTo(FMr.current+1);
	},
	
	prev : function ()
	{
		if (FMr.popupIsLoaded && !FMr.popupWindow.closed) 
			if (FMr.isPopup) FMr.skipTo(FMr.current-1);
			else FMr.popupWindow.FMr.skipTo(FMr.current-1);
	},
	
	skipTo : function (i)
	{
		var c = FMr.current;		
		var p = FMr.playlist;
		var n = niftyplayer(FMr.playerId);

		if (i >= p.length || i < 0) return;

		if (c >= 0 && c < p.length) p[c].className = 'notplaying';
		
		if (window.opener && window.opener.FMr) FMr.syncOpener();		
	
		p[i].className = 'playing';
		FMr.current = i;
		n.loadAndPlay(p[i]);
	},
	
	openPopup : function ()
	{
		var c = window.FMrConf;
		var url = (c && c.playlistFile)? c.playlistFile : "playlist.html";
		var w = (c && c.popupWidth)? c.popupWidth : "250";
		var h = (c && c.popupHeight)? c.popupHeight : "400";
		var opt = "width="+w+", height="+h+", locationbar=no, directories=no, menubar=no, toobar=no, resizable";
		
		FMr.popupWindow = window.open("", "FMr_playWin", opt);
		
		if (FMr.popupWindow.FMr && FMr.popupWindow.FMr.playlist.length > 0)
		{
			FMr.popupWindow.FMr.enqueue(FMr.playlist[FMr.playlist.length-1]);
			return;
		}
		
		FMr.popupWindow = window.open(url, "FMr_playWin", opt);
	},
	
	syncPopup : function()
	{
		var f = FMr.popupWindow.FMr;
		f.playlist = FMr.playlist;
		f.current = FMr.current;
		f.playerId = FMr.playerId;
		f.playlistId = FMr.playlistId;		
	},
	
	syncOpener : function()
	{
		var f = window.opener.FMr;
		f.playlist = FMr.playlist;
		f.current = FMr.current;	
	},
	
	popupOnLoad : function ()
	{
		FMr.popupIsLoaded = true;
		FMr.syncPopup();
		FMr.popupWindow.FMr.enqueue(FMr.playlist[FMr.playlist.length-1],"first");
	},
	
	save : function ()
	{
		var p = FMr.playlist;
		var c = window.FMrConf;
		var linky = "http://www.mumineenaudio.com/" + c.playlistFile + "?" ;
		var filename ;
		for (i = 0; i < p.length; i++)
		{
		filename = p[i].href.split("mp3s/")[1] ;
		linky = linky + "l" + i + "=" + filename + "&" ;
		}
		return linky;
	},
	
	errorMsg : function (str)
	{
		alert("FlashMp3alizer Error: " + str);
	}
	
};


// "onparse" setup code - should go before any window.onloads! - what the freak does this do? .. sight whatever too complicated
if (document.getElementsByTagName && !window.ParseCtl)
{
	window.appendHandler = function(eventStr, f) {var f0 = eval("window."+eventStr); eval("window."+eventStr+" = function () {f0(); f();}");};
	window.onparse = function() {};

	window.ParseCtl =
	{
		complete : false, timer : null,
		
		callOnParse : function () 
		{
			if (this.complete || !document.body || !document.getElementsByTagName('body')) return;
			clearInterval(this.timer);
			this.complete = true; 
			window.onparse();
		}
	};

	if 	(navigator.appName.indexOf('Netscape') != -1 
		&& eval(navigator.appVersion.substring(0,navigator.appVersion.indexOf('('))) >= 5 
		&& navigator.userAgent.indexOf('KHTML') == -1) 
		document.addEventListener("DOMContentLoaded", window.ParseCtl.callOnParse, null);

	else ParseCtl.timer = setInterval('ParseCtl.callOnParse()', 1);
	window.onload = ParseCtl.callOnParse;
};

// run
if (document.getElementsByTagName) 
{
	if (!window.opener || !window.opener.FMr) // if this is the window with the .mp3 links
	{
		// optionally use window.onload for compatibility
		var c = window.FMrConf;
		if (c && c.useOnLoad) window.onload = FMr.run; // window.onload = run FMr.run when the window has loaded - you're using this case of the if
		else window.appendHandler("onparse", FMr.run);
	}
	else // if this is the popup window itself
	{
		FMr.isPopup = true;
		FMr.popupIsLoaded = true;
		FMr.popupWindow = window;
		
		// use timeout because of onload bugs! niftyplayer isn't recognized otherwise!
		window.onload = function () {window.opener.setTimeout("FMr.popupOnLoad()", 500);};
	}
}
