/* * Youtube Chromeless Video Plugin * http://www.viget.com/ * * Copyright (c) 2010 Trevor Davis * Dual licensed under the MIT and GPL licenses. * Uses the same license as jQuery, see: * http://jquery.org/license * * @version 0.3 * * Modified by Benjamin Rafael F. Intal * Added a few event handlers */ (function($){$.fn.ytchromeless=function(options){var config={videoWidth:'640',videoHeight:'360',videoIdBase:'ytplayer',autoPlay:0,params:{allowScriptAccess:'always',wmode:'transparent'}};return this.each(function(i){var o=$.extend(config,options),$link=$(this),url=$link.attr('href'),videoId=$link.attr('id')||o.videoIdBase+i,ytVideoId=url.substr(31),$video=$link.wrap('
').parent(),$controls=$('').appendTo($video),$toReplace=$('').prependTo($video).attr('id',videoId),$bar,$indicator,$loaded,$mute,$play,$seek,$justFinished=false,player;$video.bind({'togglePlay':function(){$video.togglePlay()},'play':function(){$video.play()},'pause':function(){$video.pause()},'toggleMute':function(){$video.toggleMute()},'mute':function(){$video.mute()},'unMute':function(){$video.unMute()},'seek':function(){$video.seek()},'update':function(){$video.update()},'cue':function(){player.cueVideoById(ytVideoId)},'onReady':function(){},'onPlay':function(){},'onPause':function(){},'onFinish':function(){}});$video.togglePlay=function(){if($play.hasClass('playing')){$video.trigger('pause')}else{$video.trigger('play')}return false};$video.play=function(){player.playVideo();$justFinished=false;$play.removeClass('paused').addClass('playing').attr('title','Pause');$video.trigger('onPlay')};$video.pause=function(){player.pauseVideo();$play.removeClass('playing').addClass('paused').attr('title','Play');$video.trigger('onPause')};$video.toggleMute=function(){if($mute.hasClass('muted')){$video.trigger('unMute')}else{$video.trigger('mute')}return false};$video.mute=function(){player.mute();$mute.addClass('muted').attr('title','Un-Mute')};$video.unMute=function(){player.unMute();$mute.removeClass('muted').attr('title','Mute')};$video.seek=function(seekPosition){var seekToPosition=Math.round(player.getDuration()*seekPosition);player.seekTo(seekToPosition,false)};$video.update=function(){if(player&&player.getDuration){if(player.getPlayerState()===1){$video.play()}else if(player.getPlayerState()===0){$video.pause()}if(player.getVideoBytesLoaded()>-1){var loadedAmount=(player.getVideoBytesLoaded()/player.getVideoBytesTotal())*100;$loaded.css('width',loadedAmount+'%')}if(player.getCurrentTime()>0){var videoPosition=(player.getCurrentTime()/player.getDuration())*100;$indicator.css('left',videoPosition+'%');if(!$justFinished&&videoPosition==100){$justFinished=true;$video.trigger('onFinish')}}}};onYouTubePlayerReady=function(videoId){var $videoRef=$(document.getElementById(videoId)).parent();setInterval(function(){$videoRef.trigger('update')},250);$videoRef.trigger('cue');$videoRef.trigger('onReady')};$video.init=function(){swfobject.embedSWF('http://www.youtube.com/apiplayer?&enablejsapi=1&version=3&playerapiid='+videoId,videoId,o.videoWidth,o.videoHeight,'8',null,null,o.params,{id:videoId},function(){player=document.getElementById(videoId)});$video.addControls()};$video.addControls=function(){$play=$('',{href:'#','class':'play-pause',text:'Play/Pause',title:'Play',click:function(){$video.trigger('togglePlay');return false}}).appendTo($controls);$mute=$('',{href:'#','class':'volume',text:'Volume',title:'Mute',click:function(){$video.trigger('toggleMute');return false}}).appendTo($controls);$link.addClass('view-youtube').attr('title','View on YouTube').html('Play/View on YouTube').appendTo($controls);$seek=$('',{'class':'status',click:function(e){var skipTo=e.pageX-$seek.offset().left,statusWidth=$seek.width();$video.seek(skipTo/statusWidth)}}).appendTo($controls);$bar=$('').appendTo($seek);$loaded=$('').appendTo($bar);$indicator=$('').appendTo($bar)};$video.init()})}})(jQuery);