diff -r ff11367d4955 -r e9400c80e1e4 web/res/metadataplayer/JwpPlayer.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/res/metadataplayer/JwpPlayer.js Tue Oct 02 14:40:14 2012 +0200 @@ -0,0 +1,123 @@ +IriSP.Widgets.JwpPlayer = function(player, config) { + IriSP.Widgets.Widget.call(this, player, config); +}; + +IriSP.Widgets.JwpPlayer.prototype = new IriSP.Widgets.Widget(); + +IriSP.Widgets.JwpPlayer.prototype.defaults = { +} + +IriSP.Widgets.JwpPlayer.prototype.draw = function() { + + var _opts = {}, + _player = jwplayer(this.$[0]), + _seekPause = false, + _pauseState = true, + _props = [ "live", "provider", "autostart" ]; + + if (typeof this.video === "undefined") { + this.video = this.media.video; + } + + if (typeof this.streamer === "undefined") { + this.streamer = this.media.streamer; + } + + if (typeof this.streamer === "function") { + this.streamer = this.streamer(this.video); + } + + if (typeof this.streamer === "string" && (this.provider === "http" || this.provider === "rtmp")) { + this.video = this.video.replace(this.streamer,""); + _opts.streamer = this.streamer; + } + + _opts.file = this.video; + _opts.flashplayer = IriSP.getLib("jwPlayerSWF"); + _opts["controlbar.position"] = "none"; + _opts.width = this.width; + _opts.height = this.height || Math.floor(.643*this.width); + + for (var i = 0; i < _props.length; i++) { + if (typeof this[_props[i]] !== "undefined") { + _opts[_props[i]] = this[_props[i]]; + } + } + + if (this.autostart) { + _pauseState = false; + this.media.trigger("play"); + } + // Binding functions to jwplayer + + this.media.getCurrentTime = function() { + return new IriSP.Model.Time(1000*_player.getPosition() || 0); + } + this.media.getVolume = function() { + return _player.getVolume() / 100; + } + this.media.getPaused = function() { + return _pauseState; + } + this.media.getMuted = function() { + return _player.getMute(); + } + this.media.setCurrentTime = function(_milliseconds) { + _seekPause = _pauseState; + return _player.seek(_milliseconds / 1000); + } + this.media.setVolume = function(_vol) { + return _player.setVolume(Math.floor(_vol*100)); + } + this.media.mute = function() { + return _player.setMute(true); + } + this.media.unmute = function() { + return _player.setMute(false); + } + this.media.play = function() { + return _player.play(true); + } + this.media.pause = function() { + return _player.pause(true); + } + + // Binding jwplater events to media + + var _media = this.media; + + _opts.events = { + onReady: function() { + _media.trigger("loadedmetadata"); + }, + onTime: function(_progress) { + if (_seekPause) { + _player.pause(true); + _seekPause = false; + } else { + if (_pauseState && _player.getState() === "PLAYING") { + _pauseState = false; + _media.trigger("play"); + } + } + _media.trigger("timeupdate", new IriSP.Model.Time(_progress.position * 1000)); + }, + onPlay: function() { + if (!_seekPause) { + _pauseState = false; + _media.trigger("play"); + } + }, + onPause: function() { + _pauseState = true; + _media.trigger("pause"); + }, + onSeek: function() { + _media.trigger("seeked"); + } + } + _player.setup(_opts); + + this.jwplayer = _player; + +} \ No newline at end of file