summaryrefslogtreecommitdiff
path: root/frontend/static/js/src/youtube.js
diff options
context:
space:
mode:
authorPepper <pepper@scannerjammer.com>2015-05-20 11:16:13 -0400
committerPepper <pepper@scannerjammer.com>2015-05-20 11:16:13 -0400
commita4916103efb2d97896c456ff0e83064b21e85d25 (patch)
treeb3eb529e4b96375109626bbeada35d4f8a2667ee /frontend/static/js/src/youtube.js
parent3790eedc2f48c725c586b8c7b924875fedbeb7b4 (diff)
first commit in a while
Diffstat (limited to 'frontend/static/js/src/youtube.js')
-rw-r--r--frontend/static/js/src/youtube.js176
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)