(function($){
	
	$.fn.youTubeEmbed = function(settings){
		
		if(typeof settings == 'string'){
			settings = {'video' : settings}
		}
		
		var def = {
			width		: 640,
			progressBar	: false
		};
		
		settings = $.extend(def,settings);
		
		var elements = {
			originalDIV	: this,	// The "this" of the plugin
			container	: null,	// A container div, inserted by the plugin
			control		: null,	// The control play/pause button
			player		: null,	// The flash player
			progress	: null,	// Progress bar
			elapsed		: null	// The light blue elapsed bar
		};
		

		try{	
			settings.videoID = settings.video.match(/v=(.{11})/)[1];
			settings.safeID = settings.videoID.replace(/[^a-z0-9]/ig,'');
		} catch (e){
			return elements.originalDIV;
		}

		var youtubeAPI = 'http://gdata.youtube.com/feeds/api/videos?v=2&alt=jsonc';

		$.get(youtubeAPI,{'q':settings.videoID},function(response){
			
			var data = response.data;
			if(!data.totalItems || data.items[0].accessControl.embed!="allowed"){
				return elements.originalDIV;
			}

			data = data.items[0];
			settings.ratio = 3/4;
			if(data.aspectRatio == "widescreen"){
				settings.ratio = 9/16;
			}
			settings.height = Math.round(settings.width*settings.ratio);

elements.container = $('<div class="flashContainer" style="width: '+settings.width+'px; height: '+settings.height+'px;"><iframe id="player" type="text/html" width="'+settings.width+'" height="'+settings.height+'" src="http://www.youtube.com/embed/'+settings.videoID+'?enablejsapi=1&autoplay=0&controls=0&origin=http://www.chauvetlighting.com" frameborder="0"></div>').appendTo(elements.originalDIV);

			var initialized = false;
			
			// Creating a global event listening function for the video
			// (required by YouTube's player API):
			
			window['eventListener_'+settings.safeID] = function(status){

				var interval;
				
				if(status==-1)	// video is loaded
				{
					if(!initialized)
					{
						// Listen for a click on the control button:
						
						elements.control.click(function(){
							if(!elements.container.hasClass('playing')){
								
								// If the video is not currently playing, start it:

								elements.control.removeClass('play replay').addClass('pause');
								elements.container.addClass('playing');
								elements.player.playVideo();
								
								if(settings.progressBar){
									interval = window.setInterval(function(){
										elements.elapsed.width(
											((elements.player.getCurrentTime()/data.duration)*100)+'%'
										);
									},1000);
								}
								
							} else {
								
								// If the video is currently playing, pause it:
								
								elements.control.removeClass('pause').addClass('play');
								elements.container.removeClass('playing');
								elements.player.pauseVideo();
								
								if(settings.progressBar){
									window.clearInterval(interval);
								}
							}
						});
						
						initialized = true;
					}
					else{
						// This will happen if the user has clicked on the
						// YouTube logo and has been redirected to youtube.com

						if(elements.container.hasClass('playing'))
						{
							elements.control.click();
						}
					}
				}
				
				if(status==0){ // video has ended
					elements.control.removeClass('pause').addClass('replay');
					elements.container.removeClass('playing');
				}
			}
			
			// This global function is called when the player is loaded.
			// It is shared by all the videos on the page:
			
			if(!window.onYouTubePlayerReady)
			{				
				window.onYouTubePlayerReady = function(playerID){
					document.getElementById('video_'+playerID).addEventListener('onStateChange','eventListener_'+playerID);
				}
			}
		},'jsonp');

		return elements.originalDIV;
	}

})(jQuery);
