jQuery.fn.audioPlayer = function(settings) {
	return this.each(function(i) {
		if(!settings)
		{
			settings = {
				width: 350,
				customClass: ""
			}
		}

		global_lp = 0;
		player = $(this);		

		// Set up the player controls
		var playerHtml = 
			'<div class="audioPlayer ' + (settings.customClass ?  settings.customClass : "") + '">' +
				'<div class="controlsWrapper">' +
					'<ul class="controls" class="ui-widget ui-helper-clearfix">'
						+ '<li class="play"></li>'
						+ '<li class="pause"></li>'
						+ '<li class="playbackScrubber"><div class="scrubberWrapper"><div class="sliderPlayback"></div></div></li>'
						+ '<li class="time"></li>'
						+ '<li class="volume-min"></li>'
						+ '<li class="volumeScrubber"><div class="scrubberWrapper"><div class="sliderVolume"></div></div></li>' +
					'</ul>' +
				'</div>' +
			'</div><div id="jplayer"></div>';
		player.after(playerHtml);
		player.hide();
		
		$(".audioPlayer").width(settings['width']);
		var seconds = parseInt(player.attr("rel"));
		var minutes = Math.floor(seconds / 60);
		seconds = Math.floor(((seconds / 60) - minutes) * 60);
		var ttMin = (minutes < 10) ? "0" + minutes : minutes;
		var ttSec = (seconds < 10) ? "0" + seconds : seconds;
		totalTime = ttMin + ":" + ttSec;

		setTime("0:00", totalTime);

		// Set up the player
		player.jPlayer({
			swfPath: getBaseURL() + 'lib/jplayer',
			ready: function ()
			{
				$(this).setFile(player.attr('href'));
			}
		})
		.onProgressChange( function(lp,ppr,ppa,pt,tt) {
			var lpInt = parseInt(lp);
			var ppaInt = parseInt(ppa);
			global_lp = lpInt;

			seconds = parseInt(pt) / 60;
			minutes = parseInt(seconds) / 60;
			playTime = minutes + ":" + seconds;

			myPlayedTime = new Date(pt);
			var ptMin = (myPlayedTime.getMinutes() < 10) ? "0" + myPlayedTime.getMinutes() : myPlayedTime.getMinutes();
			var ptSec = (myPlayedTime.getSeconds() < 10) ? "0" + myPlayedTime.getSeconds() : myPlayedTime.getSeconds();
			playTime = ptMin + ":" + ptSec;
			
			$('.sliderPlayback:eq(' + i + ')').slider('option', 'value', ppaInt);
			setTime(playTime, totalTime);
		})
		.onSoundComplete( function() {
			$(this).play();
		});

		$(".pause:eq(" + i + ")").hide();

		function setTime(elapsed, total)
		{
			$(".time:eq(" + i + ")").text(elapsed + " / " + total);
		}
		
		function showPauseBtn()
		{
			$(".play:eq(" + i + ")").fadeOut(function(){
				$(".pause:eq(" + i + ")").fadeIn();
			});
		}

		function showPlayBtn()
		{
			$(".pause:eq(" + i + ")").fadeOut(function(){
				$(".play:eq(" + i + ")").fadeIn();
			});
		}

		function playTrack(t,n)
		{
			player.setFile(t).play();

			showPauseBtn();

			return false;
		}

		$(".play:eq(" + i + ")").click(function() {
			player.play();
			showPauseBtn();
			return false;
		});

		$(".pause:eq(" + i + ")").click(function() {
			player.pause();
			showPlayBtn();
			return false;
		});

		$(".volume-min:eq(" + i + ")").click( function() {
			player.volume(0);
			$(".sliderVolume:eq(" + i + ")").slider('option', 'value', 0);
			return false;
		});
		
		$(".sliderPlayback:eq(" + i + ")").click(function() {
			if($(".play:eq(" + i + ")").css("display") != "none")
			{
				showPauseBtn();
			}
			return false;
		});

		// Sliders
		$(".sliderPlayback:eq(" + i + ")").slider({
			max: 100,
			range: 'min',
			animate: true,
			slide: function(event, ui)
			{
				player.playHead(ui.value*(100.0/global_lp));
				showPlayButton();
			}
		});

		$(".sliderVolume:eq(" + i + ")").slider({
			value : 50,
			max: 100,
			range: 'min',
			animate: true,
			slide: function(event, ui)
			{
				player.volume(ui.value);
			}
		});
	});
};
