(function($){
	
	$.fn.youTubeEmbed = function(settings){
		
		// Settings can be either a URL string,
		// or an object
		
		if(typeof settings == 'string'){
			settings = {'video' : settings}
		}
		
		// Default values
		
		var def = {
			width		: 640,
			progressBar	: true
		};
		
		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
			muteToggle  :null,
			volume      :null,
			volumeTitle :null,
            volumeAdjust:null,
            vUp         :null,
            vDown       :null
		};
	
		$("<img />").attr("src", "../../images/gptv/main/mute.png");

		try{	

			settings.videoID = settings.video.match(/v=(.{11})/)[1];
			
			// The safeID is a stripped version of the
			// videoID, ready for use as a function name

			settings.safeID = settings.videoID.replace(/[^a-z0-9]/ig,'');
		
		} catch (e){
			// If the url was invalid, just return the "this"
			return elements.originalDIV;
		}

		// Fetch data about the video from YouTube's API

		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"){
				
				// If the video was not found, or embedding is not allowed;
				
				return elements.originalDIV;
			}

			// data holds API info about the video:
			
			data = data.items[0];
			
			settings.ratio = 3/4;
			if(data.aspectRatio == "widescreen"){
				settings.ratio = 9/16;
			}
			
			settings.height = Math.round(settings.width*settings.ratio);
            
            
            //add by GPTV Wedding MineS
            settings.height = 330;
            settings.width = 600;

            

			// Creating a container inside the original div, which will
			// hold the object/embed code of the video

			elements.container = $('<div>',{className:'flashContainer',css:{
				width	: settings.width,
				height	: settings.height
			}}).appendTo(elements.originalDIV);

			// Embedding the YouTube chromeless player
			// and loading the video inside it:

			elements.container.flash({
				swf			: 'http://www.youtube.com/apiplayer?enablejsapi=1&version=3',
				id			: 'video_'+settings.safeID,
				height		: settings.height,
				width		: settings.width,
				allowScriptAccess:'always',
				wmode		: 'transparent',
				flashvars	: {
					"video_id"		: settings.videoID,
					"playerapiid"	: settings.safeID
				}
			});

			// We use get, because we need the DOM element
			// itself, and not a jquery object:
			
			elements.player = elements.container.flash().get(0);

			// Creating the control Div. It will act as a ply/pause button

			elements.control = $('<div>',{className:'controlDiv play'})
							   .appendTo(elements.container);
							   
			//Volume control bar add by SphinxIT MineS Chan
			elements.volume         = $('<div>', {className:'volumeControlWrapper'}).appendTo(elements.container);
			elements.muteToggle     = $('<div>', {className:'muteToggle mute'}).appendTo(elements.volume);
            elements.volumeTitle    = $('<div>', {className:'volumeTitle'}).appendTo(elements.volume);
            elements.volumeAdjust   = $('<div>', {className:'volumeAdjust'}).appendTo(elements.volume);
            elements.vDown          = $('<span>', {className:'vDown'}).appendTo(elements.volumeAdjust);
			elements.vUp            = $('<span>', {className:'vUp mouseover'}).appendTo(elements.volumeAdjust);
            
            
            elements.volumeTitle.text("Sound: 50");
            elements.vUp.html("<img src='/public/images/gptv/main/up.png' height='15' width='15' alt='' style='margin-left:14px;' title='Volume Up'/>");
            elements.vDown.html("<img src='/public/images/gptv/main/down.png' height='15' width='15' alt='' title='Volume Down' />");
//
123

			// If the user wants to show the progress bar:123123

			if(settings.progressBar){
				elements.progress =	$('<div>',{className:'progressBar'})
									.appendTo(elements.container);

				elements.elapsed =	$('<div>',{className:'elapsed'})
									.appendTo(elements.progress);
				
				elements.progress.click(function(e){
					
					// When a click occurs on the progress bar, seek to the
					// appropriate moment of the video.
					
					var ratio = (e.pageX-elements.progress.offset().left)/elements.progress.outerWidth();
					
					elements.elapsed.width(ratio*100+'%');
					elements.player.seekTo(Math.round(data.duration*ratio), true);
					return false;
				});

			}

			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
				{
                  elements.player.setVolume(60);

                
					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);
								}
							}
							
							//Make the Volume!
							
							elements.muteToggle.click(function(){		

									if(elements.muteToggle.hasClass('mute'))
									{
										elements.muteToggle.removeClass('mute').addClass('unmute');
										elements.player.mute();
										$('')
									}else{
										elements.muteToggle.removeClass('unmute').addClass('mute');
										elements.player.unMute();			
									}
							});
                            
                            elements.vUp.click(function(){
                                var newVolume = elements.player.getVolume()+15;
                                elements.player.setVolume(newVolume);
                                var vLabel = "Sound: " + newVolume; 
                                elements.volumeTitle.Text(vLabel);
                            
                            });
                            
                            elements.volumeAdjust.mousedown(function(){
                                elements.volumeAdjust.css("margin-top","2px")
                                });
                                
                              elements.volumeAdjust.mouseup(function(){
                                elements.volumeAdjust.css("margin-top","0px")
                                });
                            
                            
                            elements.vDown.click(function(){
                                var newVolume = elements.player.getVolume()-15;
                                elements.player.setVolume(newVolume);
                                var vLabel = "Sound: " + newVolume; 
                                elements.volumeTitle.Text(vLabel);
                            });                            
							
							
						});
						
						initialized = true;
					}
					else{
						// This will happen if the user has clicked on the
						// YouTube logo and has been redirected to youtube.com
                        
                        return false;

						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);
