var Player = function($){
	 //default settings for the carousel
    var config = {
		
    }; 
	
	var priv = {
		playerType : null,
		playing	   : false,
		curMediaUrl : '',
		playerObject : null,
				
		getMediaPlayerHTML : function(mediaUrl){
			Log.Debug("getting : " + mediaUrl);
			var html = '';
			//MediaPlayer
			try {
				html += '<object id="player" width="100" height="100" style="position:absolute; left:0;bottom:0;visibility:visible;" CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" type="application/x-oleobject">';
				html += '	<param name="URL" value="' + mediaUrl + '" />';
				html += '	<param name="SendPlayStateChangeEvents" value="true" />';
				html += '	<param name="AutoStart" value="False" />';
				html += '	<param name="uiMode" value="full" />';
				html += '	<param name="PlayCount" value="1" />';
				html += '	<embed src="' + mediaUrl + '" width="100" height="100" style="position:absolute; left:0;bottom:0;visibility:visible;" autostart="0" loop="0" type="application/x-mplayer2" pluginspage="http://www.microsoft.com/Windows/MediaPlayer/download/default.asp" showcontrols="0" uimode="full"></embed>';
				html += '</object>';
			}
			catch(exp){
				//no media player
				Log.Debug("Initiating MediaPlayer failed");
			}
			
			return html;
		},
		
		getITunesHTML : function(mediaUrl){
			Log.Debug("getting : " + mediaUrl);
			var html = '';
			//iTunes
			try {
				html += '<OBJECT id="player" CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" height="100" width="100" style="position:absolute; left:0;bottom:0;visibility:visible;" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">';
				html += '	<param name="src" value="' + mediaUrl + '">';
				html += '	<param name="autohref" value="true">';
				//html += '	<param name="controller" value="false">';
				html += '	<param name="target" value="quicktimeplayer">';
				html += '	<embed src="' + mediaUrl + '" width="100" height="100" autohref="true" target="quicktimeplayer" pluginspage="http://www.apple.com/quicktime/download/" enablejavascript="true">';
				html += '</OBJECT>';
			}
			catch(exp){
				//no media player
				Log.Debug("Initiating iTunes failed");
			}
			
			return html;
		}
	};
	
	return {
		Ready : function(){
			//try the different players
			
			//MediaPlayer
			//attach the mediaplayer to the DOM
			var tmp = document.createElement("DIV");
			$(tmp).html(priv.getMediaPlayerHTML(config.mediaUrl));
			$("body").append(tmp);
			
			priv.playerObject = $("#player");
			try {
				//test if MediaPlayer is working
				if(priv.playerObject.get(0).controls){
					Log.Info("MediaPlayer is running");
					priv.playerType = 'mediaplayer';
				}
				else {
					//media player failed, remove it from the DOM
					Log.Info("media player failed, remove it from the DOM");
					$(tmp).remove();
					priv.playerObject = null;
					
					//try with iTunes
					var tmp = document.createElement("DIV");
					$(tmp).html(priv.getITunesHTML(config.mediaUrl));
					$("body").append(tmp);
					
					priv.playerObject = $("#player");
					Log.Info(priv.playerObject);
					if(typeof(priv.playerObject.get(0).Play) != "undefined"){
						Log.Info("iTunes is running");
						priv.playerType = 'itunes';
					}
					else {
						Log.Info("iTunes failed, remove it from the DOM");
						//$(tmp).remove();
						priv.playerObject = null;
					}
				}
			}
			catch(exp){
				Log.Error("error : " + exp.toString());
			}
			
			Log.Debug($("a[rel='play']"));
			//if we have a playerType activate the controls
			if(priv.playerType != null){
				$("a[rel='play']").each(
					function(){
						Log.Info("Binding player controls to : " + $(this));
						var mediaUrl = $(this).attr("href");
						$(this).attr("href", "javascript:void(0);").attr("target", "_self").bind("click",
							function(){
								Player.Play(mediaUrl);
							}
						);
					}
				);
			}
		},
		
		Play : function(mediaUrl){
			//if the mediaUrl is the same, and already playing, assume a stop
			if(mediaUrl == priv.curMediaUrl && priv.playing){
				Player.Stop();
				return;
			}
			
			if(priv.playerType == 'mediaplayer'){
				Log.Info("Playing MediaPlayer : " + mediaUrl);
				priv.playerObject.get(0).URL = mediaUrl;
				priv.playerObject.get(0).controls.Play();
				priv.curMediaUrl = mediaUrl;
				priv.playing = true;
			}
			else if(priv.playerType == 'itunes'){
				Log.Info("Playing iTunes : " + mediaUrl);
				priv.playerObject.get(0).URL = mediaUrl;
				priv.playerObject.get(0).controls.Play();
				priv.curMediaUrl = mediaUrl;
				priv.playing = true;
			}
		},
		
		Stop : function(){
			if(priv.playerType == 'mediaplayer'){
				Log.Info("Stopping MediaPlayer: " + priv.curMediaUrl);
				priv.playerObject.get(0).controls.Stop();
				priv.playing = false;
			}
			else if(priv.playerType == 'itunes'){
				Log.Info("Stopping iTunes: " + priv.curMediaUrl);
				priv.playerObject.get(0).controls.Stop();
				priv.playing = false;
			}
		},
		
		Pause : function(){
		
		}
	}
}(jQuery);