diff options
| author | Pepper <pepper@scannerjammer.com> | 2015-05-20 11:16:13 -0400 |
|---|---|---|
| committer | Pepper <pepper@scannerjammer.com> | 2015-05-20 11:16:13 -0400 |
| commit | a4916103efb2d97896c456ff0e83064b21e85d25 (patch) | |
| tree | b3eb529e4b96375109626bbeada35d4f8a2667ee /frontend/static/js/src/youtube.js | |
| parent | 3790eedc2f48c725c586b8c7b924875fedbeb7b4 (diff) | |
first commit in a while
Diffstat (limited to 'frontend/static/js/src/youtube.js')
| -rw-r--r-- | frontend/static/js/src/youtube.js | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/frontend/static/js/src/youtube.js b/frontend/static/js/src/youtube.js new file mode 100644 index 0000000..23d0089 --- /dev/null +++ b/frontend/static/js/src/youtube.js @@ -0,0 +1,176 @@ +var Youtube = + { + type: "youtube", + loaded: false, + pending: false, + playing: false, + player: null, + playerId: null, + timeout: null, + video: null, + width: "100%", + height: "100%", + getYtid: function (url) + { + if (! url) return + var ytid = url.substr(url.indexOf("v=")+2,11) + if (ytid.indexOf("&") !== -1) + ytid = ytid.substr(0, ytid.indexOf("&")) + if (ytid.indexOf("#") !== -1) + ytid = ytid.substr(0, ytid.indexOf("#")) + return ytid + }, + play: function (video) + { + d.warn("YOUTUBE PLAY "+video.key) + if (video.error) + return Youtube.error() + if (Youtube.playing) + Youtube.stop() + Youtube.video = video + Youtube.playing = true + if (Youtube.ready) + { + d.warn("ORDERING VIDEO LOAD "+video.name) + Youtube.player.loadVideoById(video.name) + Youtube.pending = false + } + else + { + d.error("YOUTUBE PLAYER NOT READY") + Youtube.pending = true + } + }, + toggle: function () + { + if (Youtube.playing) + return Youtube.pause() + else + return Youtube.resume() + }, + error: function (s) + { + Player.error("YOUTUBE "+s) + $("li#queue_"+Youtube.video.idx+" span.title").html("<i>This video cannot be embedded</i>") + setTimeout(Youtube.finish, 1000) + }, + onStateChange: function (state) + { + Youtube.state = state + if (state === -1) + { + d.warn("YOUTUBE: UNSTARTED") + Youtube.playing = false + } + else if (state === 0) + { + d.warn("YOUTUBE: ENDED") + Youtube.playing = false + return Youtube.finish() + } + else if (state === 1) + { + d.warn("YOUTUBE: PLAYING") + Youtube.playing = true + if (! Youtube.loaded) + return Youtube.unload() + } + else if (state === 2) + { + d.warn("YOUTUBE: PAUSED") + Youtube.playing = false + } + else if (state === 3) + { + d.warn("YOUTUBE: BUFFERING") + } + else if (state === 5) + { + d.warn("YOUTUBE: CUED") + } + else + { + d.error("YOUTUBE: UNKNOWN") + } + }, + onError: function (error) + { + var errorStr = 'UNKNOWN' + if (error === 2) + errorStr = "INVALID PARAMETER" + if (error === 100) + errorStr = "NOT FOUND" + if (error === 101 || error === 150) + errorStr = "EMBED FORBIDDEN" + Youtube.error(errorStr) + }, + setVolume: function (vol) + { + Youtube.player.setVolume(vol) + }, + pause: function () + { + d.warn("PAUSED PLAYBACK") + Youtube.playing = false + Youtube.player.pauseVideo() + return true + }, + resume: function () + { + d.warn("RESUME PLAYBACK") + Youtube.playing = true + Youtube.player.playVideo() + return false + }, + stop: function () + { + d.warn("YOUTUBE STOP") + Youtube.player.stopVideo() + Youtube.playing = false + }, + finish: function () + { + d.warn("YOUTUBE FINISH") + Youtube.playing = false + Player.finish() + }, + load: function () + { + d.warn("LOADING YOUTUBE") + $("#ytscreen").css("z-index", 19) + Youtube.loaded = true + }, + unload: function () + { + d.warn("YOUTUBE UNLOADED") + $("#ytscreen").css("z-index", -3) + if (Youtube.player) + Youtube.player.stopVideo() + Youtube.playing = false + Youtube.loaded = false + Youtube.pending = false + }, + init: function () + { + d.warn("YOUTUBE INIT") + var params = { allowScriptAccess: "always", wmode: "opaque" } + var atts = { id: "ytscreen" } + swfobject.embedSWF("http://www.youtube.com/apiplayer?enablejsapi=1&version=3&playerapiid=ytscreen", + "ytscreen", Player.width, Player.height, "8", null, null, params, atts) + } + } +function onYouTubePlayerReady (playerId) + { + d.warn("YOUTUBE READY") + Youtube.player = document.getElementById(playerId) + Youtube.playerId = playerId + Youtube.player.addEventListener("onStateChange", "Youtube.onStateChange") + Youtube.player.addEventListener("onError", "Youtube.onError") + Youtube.ready = true + if (! Youtube.loaded) + return Youtube.unload() + if (Youtube.pending) + Youtube.player.loadVideoById(Youtube.video.name) + Youtube.pending = false + } +Player.register(Youtube) |
