From 0a00d059e833b0e81411e89b8842c2ea5a5ac86a Mon Sep 17 00:00:00 2001 From: calzoneman Date: Sun, 4 Aug 2013 12:16:19 -0400 Subject: [PATCH] Start refactoring clientside player init --- www/assets/js/player.js | 165 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) diff --git a/www/assets/js/player.js b/www/assets/js/player.js index 0f735824..650299b9 100644 --- a/www/assets/js/player.js +++ b/www/assets/js/player.js @@ -75,6 +75,171 @@ var Player = function(data) { } } +function removeOld(replace) { + replace = replace || $("
"); + var old = $("#ytapiplayer"); + replace.insertBefore(old); + old.remove(); + replace.attr("id", "ytapiplayer"); +} + +var YouTubePlayer = function (data) { + var self = this; + waitUntilDefined(window, "YT", function () { + removeOld(); + self.paused = false; + self.videoId = data.id; + self.player = new YT.Player("ytapiplayer", { + height: VHEIGHT, + width: VWIDTH, + videoId: data.id, + playerVars: { + autohide: 1, // Autohide controls + autoplay: 1, // Autoplay video + controls: 1, // Show controls + iv_load_policy: 3, // No annotations + modestbranding: 1, // No logo + rel: 0 // No related videos + }, + events: { + onReady: function() { + //socket.emit("playerReady"); + }, + onStateChange: function(ev) { + if(PLAYER.paused && ev.data != YT.PlayerState.PAUSED + || !PLAYER.paused && ev.data == YT.PlayerState.PAUSED) { + self.paused = (ev.data == YT.PlayerState.PAUSED); + if(CLIENT.leader) + sendVideoUpdate(); + } + else { + self.paused = (ev.data == YT.PlayerState.PAUSED); + } + if(CLIENT.leader && ev.data == YT.PlayerState.ENDED) { + socket.emit("playNext"); + } + } + } + }); + $("#ytapiplayer").css("border", "none"); + + self.load = function (data) { + if(self.player.loadVideoById) { + self.player.loadVideoById(data.id, data.currentTime); + if(VIDEOQUALITY) + self.player.setPlaybackQuality(VIDEOQUALITY); + self.videoId = data.id; + } + } + + self.pause = function() { + if(self.player.pauseVideo) + self.player.pauseVideo(); + } + + self.play = function() { + if(self.player.playVideo) + self.player.playVideo(); + } + + self.isPaused = function(callback) { + if(self.player.getPlayerState) { + var state = self.player.getPlayerState(); + callback(state != YT.PlayerState.PLAYING); + } else { + callback(false); + } + } + + self.getTime = function(callback) { + if(self.player.getCurrentTime) + callback(self.player.getCurrentTime()); + } + + self.seek = function(time) { + if(self.player.seekTo) + self.player.seekTo(time, true); + } + }); +} + +var VimeoPlayer = function (data) { + var self = this; + waitUntilDefined(window, "$f", function () { + self.videoId = data.id; + self.init = function () { + var iframe = $("