src/js/libs/popcorn.youtube.js
branchnew-model
changeset 883 d35ad8111c5e
parent 882 61c384dda19e
child 884 10233337f6da
--- a/src/js/libs/popcorn.youtube.js	Thu May 03 17:52:52 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,220 +0,0 @@
-// A global callback for youtube... that makes me angry
-var onYouTubePlayerReady = function( containerId ) {
-
-  onYouTubePlayerReady[ containerId ] && onYouTubePlayerReady[ containerId ]();
-};
-onYouTubePlayerReady.stateChangeEventHandler = {};
-
-Popcorn.player( "youtube", {
-  _setup: function( options ) {
-
-    var media = this,
-        youtubeObject,
-        container = document.createElement( "div" ),
-        currentTime = 0,
-        seekTime = 0,
-        seeking = false,
-
-        // state code for volume changed polling
-        volumeChanged = false,
-        lastMuted = false,
-        lastVolume = 0;
-
-    container.id = media.id + Popcorn.guid();
-
-    media.appendChild( container );
-
-    var youtubeInit = function() {
-
-      var flashvars,
-          params,
-          attributes,
-          src;
-
-      // expose a callback to this scope, that is called from the global callback youtube calls
-      onYouTubePlayerReady[ container.id ] = function() {
-
-        youtubeObject = document.getElementById( container.id );
-
-        // more youtube callback nonsense
-        onYouTubePlayerReady.stateChangeEventHandler[ container.id ] = function( state ) {
-
-          // playing is state 1
-          // paused is state 2
-          if ( state === 1 ) {
-
-            media.paused && media.play();
-          // youtube fires paused events while seeking
-          // this is the only way to get seeking events
-          } else if ( state === 2 ) {
-
-            // silly logic forced on me by the youtube API
-            // calling youtube.seekTo triggers multiple events
-            // with the second events getCurrentTime being the old time
-            if ( seeking && seekTime === currentTime && seekTime !== youtubeObject.getCurrentTime() ) {
-
-              seeking = false;
-              youtubeObject.seekTo( currentTime );
-              return;
-            }
-
-            currentTime = youtubeObject.getCurrentTime();
-            media.dispatchEvent( "timeupdate" );
-            !media.paused && media.pause();
-          }
-        };
-
-        // youtube requires callbacks to be a string to a function path from the global scope
-        youtubeObject.addEventListener( "onStateChange", "onYouTubePlayerReady.stateChangeEventHandler." + container.id );
-
-        var timeupdate = function() {
-
-          if ( !media.paused ) {
-
-            currentTime = youtubeObject.getCurrentTime();
-            media.dispatchEvent( "timeupdate" );
-            setTimeout( timeupdate, 10 );
-          }
-        };
-
-        var volumeupdate = function() {
-
-          if ( lastMuted !== youtubeObject.isMuted() ) {
-
-            lastMuted = youtubeObject.isMuted();
-            media.dispatchEvent( "volumechange" );
-          }
-
-          if ( lastVolume !== youtubeObject.getVolume() ) {
-
-            lastVolume = youtubeObject.getVolume();
-            media.dispatchEvent( "volumechange" );
-          }
-
-          setTimeout( volumeupdate, 250 );
-        };
-
-        media.play = function() {
-
-          media.paused = false;
-          media.dispatchEvent( "play" );
-
-          media.dispatchEvent( "playing" );
-          timeupdate();
-          youtubeObject.playVideo();
-        };
-
-        media.pause = function() {
-
-          if ( !media.paused ) {
-
-            media.paused = true;
-            media.dispatchEvent( "pause" );
-            youtubeObject.pauseVideo();
-          }
-        };
-
-        Popcorn.player.defineProperty( media, "currentTime", {
-          set: function( val ) {
-
-            // make sure val is a number
-            currentTime = seekTime = +val;
-            seeking = true;
-            media.dispatchEvent( "seeked" );
-            media.dispatchEvent( "timeupdate" );
-            youtubeObject.seekTo( currentTime );
-            return currentTime;
-          },
-          get: function() {
-
-            return currentTime;
-          }
-        });
-
-        Popcorn.player.defineProperty( media, "muted", {
-          set: function( val ) {
-
-            if ( youtubeObject.isMuted() !== val ) {
-
-              if ( val ) {
-
-                youtubeObject.mute();
-              } else {
-
-                youtubeObject.unMute();
-              }
-
-              lastMuted = youtubeObject.isMuted();
-              media.dispatchEvent( "volumechange" );
-            }
-
-            return youtubeObject.isMuted();
-          },
-          get: function() {
-
-            return youtubeObject.isMuted();
-          }
-        });
-
-        Popcorn.player.defineProperty( media, "volume", {
-          set: function( val ) {
-
-            if ( youtubeObject.getVolume() !== val ) {
-
-              youtubeObject.setVolume( val );
-              lastVolume = youtubeObject.getVolume();
-              media.dispatchEvent( "volumechange" );
-            }
-
-            return youtubeObject.getVolume();
-          },
-          get: function() {
-
-            return youtubeObject.getVolume();
-          }
-        });
-
-        media.readyState = 4;
-        media.dispatchEvent( "load" );
-        media.duration = youtubeObject.getDuration();
-        media.dispatchEvent( "durationchange" );
-        volumeupdate();
-
-        media.dispatchEvent( "loadeddata" );
-      };
-
-      options.controls = +options.controls === 0 || +options.controls === 1 ? options.controls : 1;
-      options.annotations = +options.annotations === 1 || +options.annotations === 3 ? options.annotations : 1;
-
-      flashvars = {
-        playerapiid: container.id,
-        controls: options.controls,
-        iv_load_policy: options.annotations
-      };
-
-      params = {
-        wmode: "transparent",
-        allowScriptAccess: "always"
-      };
-
-      attributes = {
-        id: container.id
-      };
-
-      src = /^.*[\/=](.{11})/.exec( media.src )[ 1 ];
-
-      swfobject.embedSWF( "http://www.youtube.com/e/" + src + "?enablejsapi=1&playerapiid=" + container.id + "&version=3",
-                          container.id, media.offsetWidth, media.offsetHeight, "8", null,
-                          flashvars, params, attributes );
-    };
-
-    if ( !window.swfobject ) {
-
-      Popcorn.getScript( "http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js", youtubeInit );
-    } else {
-
-      youtubeInit();
-    }
-  }
-});
-