/**
 * @requires jQuery 1.3.x, swfObject 2.x
 */
(function($j){
	
	var defaults = {
		expressInstall: 'expressinstall.swf',
		audioPlayerSWF: 'player.swf',
		forceDownloadScript: null,
		forceDownloadParam: 'file',
		downloadLink: true,
		playerOptions: {}
	};
	
	var so = swfobject || window['swfobject'] || undefined;
	
	$j.inlineMp3FPlayer = function(options)
	{
		this.options = $j.extend(defaults, options || {});
		var self = this;
		
		// Match correct extension case
		var mp3Extensions = ['mp3','MP3','Mp3','mP3'];
	
		var elements = [];
		for(var i = 0; i < mp3Extensions.length; i++)
		{
			var ext = String(mp3Extensions[i]);
			var links = $j("a[href$='"+ext+"']");
			if(links.size() >= 1)
			{
				elements.push(links);
			}
		}
		
		var $ic = 0;
		var $apc = 1; // Audio Player Count
		$j(elements).each(function()
		{
			var $ij = 0;
			
			this.each(function(){
				var link = $j(this);
				var linkText = link.text();
				var mp3Location = link.attr('href');
				var wid = 'imp3-fplayer-'+String($ic) + '-' + String($ij);
				
				var swfContainerID = 'imp3-fplayer-'+ String($apc);
				var audioPlayerID = 'audioplayer' + String($apc);
				
				var html = '<div class="imp3-fplayer" id="'+wid+'">';
				html += '<div class="imp3-fplayer-swf-container">';
				html += '<div id="'+swfContainerID+'"></div>';
				html += '</div>';
				
				if(self.options.downloadLink)
				{
					var downloadText = true === self.options.downloadLink ? linkText  : String(self.options.downloadLink);
										
					if(String(downloadText).indexOf('%linkText%'))
					{
						downloadText = downloadText.replace(/%linkText%/, linkText);
					}
					
					// TODO: Include a force-download script support
					html += '<div class="imp3-fplayer-meta">';
					html += '<a href="'+mp3Location+
								'" class="imp3-fplayer-download-link" rel="mp3 audio media" title="'+linkText+'">'+downloadText+'</a>';
					html += '</div>';
				}
				
				html +='</div>'; // main wrapper
				
				link.replaceWith(html);
				
				var flashVars = $j.extend(self.options.playerOptions, 
				{
					playerID: audioPlayerID,
					soundFile: mp3Location
				});
				
				var flashParams = {
					wmode: 'transparent',
					quality: 'hight'
				};
				
				var _flashVars = [];
				for(var prop in flashVars)
				{
					_flashVars.push(prop + '=' + flashVars[prop]);
				}
				
				flashParams.movie = self.options.audioPlayerSWF;
				flashParams.FlashVars = _flashVars.join('&amp;');
				var _params = '';
				for(var prop in flashParams)
				{
					_params += '<param name="'+prop+'" value="'+flashParams[prop]+'" />';
				}
				
				var obj = '<object id="'+audioPlayerID+'" data="'+self.options.audioPlayerSWF+'" type="application/x-shockwave-flash" width="290" height="24">';
				obj += _params;
				obj += '</object>';
				
				
				$j('#'+swfContainerID).replaceWith(obj);
				
				$apc++;
				$ij++;
			});
			
			$ic++;
		});
		
	};
	
})(jQuery);