(function($){
	$.fn.mtYouTubePlayer = function(settings){
		
		var playButton = $('.' + settings.playButtonClass);
		var progressBar = $('#' + settings.progressId);
		var elapsedBarId = $('#' + settings.elapsedBarId);
		var timerElement = $('.' + settings.timerClass);
		var videoID = settings.videoId;
		var playerWidth = settings.playerWidth;
		var playerHeight = settings.playerHeight;
		
		var start = 0;
		var maxProgress = 1;
		var ytplayer;
		
		
		
		window.onYouTubePlayerReady = function (playerId) {
		  	  ytplayer = document.getElementById("video_div");
			  ytplayer.addEventListener("onStateChange", "onPlayerStateChange");
			  ytplayer.addEventListener("onError", "onPlayerError");
			  ytplayer.cueVideoById(videoID);
			  window.setInterval(updatePlayerInfo, 250);
			  
			  
		};
		
		 function loadPlayer() {
			 playButton.addClass('pause');
			 var params = { allowScriptAccess: "always" };
			  // The element id of the Flash embed
			  var atts = { id: "video_div" };
			  // All of the magic handled by SWFObject (http://code.google.com/p/swfobject/)
			  swfobject.embedSWF("http://www.youtube.com/apiplayer?" +
			                     "version=3&enablejsapi=1&playerapiid=video_div",
			                     "video_div", playerWidth, playerHeight, "9", null, null, params, atts);
			
			
			 $('object#video_div').css({'visibility' : 'hidden'});
			
		 } 
		
		playButton.click(function (){
			$('.start_image').css({'visibility' : 'hidden'});
			$('#video_div').css({'visibility' : 'visible'});
			
			if (playButton.hasClass('pause')){
				ytplayer.playVideo();
				playButton.removeClass('pause').addClass('playing');
			} else {
				ytplayer.pauseVideo();
				playButton.removeClass('playing').addClass('pause');
			}
		});
		
		function updatePlayerInfo() {
				if (start == 0) {
					$('object#video_div').css({'visibility' : 'hidden'});
					start = 1;
				}
				currTime = ytplayer.getCurrentTime();
				timerElement.text(toTime(currTime) + '/' + toTime(ytplayer.getDuration()));
				pos = ((currTime/ytplayer.getDuration()) * 100) + '%';
				elapsedBarId.width(pos);
				
				if (currTime == ytplayer.getDuration() && ytplayer.getDuration() !=0) {
					elapsedBarId.width(100 + "%");
					playButton.removeClass('playing').addClass('pause');
				}
		}
		
		progressBar.click(function(e){
			var ratio = (e.pageX-progressBar.offset().left)/ progressBar.outerWidth();
			elapsedBarId.width(ratio*100+'%');
			ytplayer.seekTo(Math.round(ytplayer.getDuration() * ratio), true);			
		});
		
		$('.volume_element').click(function(e){
			volume = parseInt($(this).attr('id').substr(1,3));
			ytplayer.setVolume(volume);
			if(volume == 0){
				$('.volume_element').each(function(){
					$(this).css('background-image','url(../images/mt_youtube_player/volume_inactive.png)');
				});
			} else {
				$('.volume_element').each(function(){
					volume = parseInt($(this).attr('id').substr(1,3));
					if(volume > ytplayer.getVolume()){
						$(this).css('background-image','url(../images/mt_youtube_player/volume_inactive.png)');
					} else{
						$(this).css('background-image','url(../images/mt_youtube_player/volume.png)');
					}
					
				});	
			}
		});
		
		function toTime(seconds){
			minutes = parseInt(seconds / 60);
			newSeconds = parseInt(seconds - minutes * 60);
			if(minutes < 10){
				minutes = "0" + minutes;
			}
			if(newSeconds < 10){
				newSeconds = "0" + newSeconds;
			}
			return minutes + ":" + newSeconds;
		}
		
		loadPlayer();
	};
	
})(jQuery);
