web/lib/metadataplayer/JwpPlayer.js
changeset 0 7f8907368bd5
equal deleted inserted replaced
-1:000000000000 0:7f8907368bd5
       
     1 IriSP.Widgets.JwpPlayer = function(player, config) {
       
     2     IriSP.Widgets.Widget.call(this, player, config);
       
     3 };
       
     4 
       
     5 IriSP.Widgets.JwpPlayer.prototype = new IriSP.Widgets.Widget();
       
     6 
       
     7 IriSP.Widgets.JwpPlayer.prototype.defaults = {
       
     8 };
       
     9 
       
    10 IriSP.Widgets.JwpPlayer.prototype.draw = function() {
       
    11     
       
    12     var _opts = {},
       
    13         _player = jwplayer(this.$[0]),
       
    14         _seekPause = false,
       
    15         _pauseState = true;
       
    16     
       
    17     if (typeof this.video === "undefined") {
       
    18         this.video = this.media.video;
       
    19     }
       
    20         
       
    21     _opts.file = this.video;
       
    22     _opts.flashplayer = IriSP.getLib("jwPlayerSWF");
       
    23     _opts.primary = "flash";
       
    24     _opts.fallback = false;
       
    25     _opts.controls = false;
       
    26     _opts.width = this.width;
       
    27     if (this.height) {
       
    28         _opts.height = this.height;
       
    29     }
       
    30     
       
    31     if (this.autostart) { // There seems to be an autostart bug
       
    32         //_opts.autostart = true;
       
    33         //_pauseState = false;
       
    34         //this.media.trigger("play");
       
    35     }
       
    36     
       
    37     if (this.url_transform) {
       
    38         _opts.file = this.url_transform(_opts.file);
       
    39     }
       
    40 
       
    41     // Binding functions to jwplayer
       
    42 
       
    43     var _media = this.media;
       
    44     
       
    45     _media.on("setcurrenttime", function(_milliseconds) {
       
    46         _seekPause = _pauseState;
       
    47         _player.seek(_milliseconds / 1000);
       
    48     });
       
    49     
       
    50     _media.on("setvolume", function(_vol) {
       
    51         _player.setVolume(Math.floor(_vol*100));
       
    52         _media.volume = _vol;
       
    53     });
       
    54     
       
    55     _media.on("setmuted", function(_muted) {
       
    56         _player.setMute(_muted);
       
    57         _media.muted = _muted;
       
    58     });
       
    59     
       
    60     _media.on("setplay", function() {
       
    61         _player.play(true);
       
    62         _media.paused = false;
       
    63     });
       
    64     
       
    65     _media.on("setpause", function() {
       
    66         _player.pause(true);
       
    67         _media.paused = true;
       
    68     });
       
    69     
       
    70     // Binding jwplater events to media
       
    71     
       
    72     function getVolume() {
       
    73         _media.muted = _player.getMute();
       
    74         _media.volume = _player.getVolume() / 100;
       
    75     }
       
    76     
       
    77     _opts.events = {
       
    78         onReady: function() {
       
    79             getVolume();
       
    80             _media.currentTime = new IriSP.Model.Time(1000*_player.getPosition() || 0);
       
    81             _media.trigger("loadedmetadata");
       
    82         },
       
    83         onTime: function(_progress) {
       
    84             if (_seekPause) {
       
    85                 _player.pause(true);
       
    86                 _seekPause = false;
       
    87             } else {
       
    88                 if (_pauseState && _player.getState() === "PLAYING") {
       
    89                     _pauseState = false;
       
    90                     _media.trigger("play");
       
    91                 }
       
    92             }
       
    93             _media.trigger("timeupdate", new IriSP.Model.Time(_progress.position * 1000));
       
    94         },
       
    95         onPlay: function() {
       
    96             if (!_seekPause) {
       
    97                 _pauseState = false;
       
    98                 _media.trigger("play");
       
    99             }
       
   100         },
       
   101         onPause: function() {
       
   102             _pauseState = true;
       
   103             _media.trigger("pause");
       
   104         },
       
   105         onSeek: function() {
       
   106             _media.trigger("seeked");
       
   107         },
       
   108         onMute: function(_event) {
       
   109             _media.muted = _event.mute;
       
   110             _media.trigger("volumechange");
       
   111         },
       
   112         onVolume: function(_event) {
       
   113             _media.volume = _event.volume / 100;
       
   114             _media.trigger("volumechange");
       
   115         }
       
   116     };
       
   117     
       
   118     _player = _player.setup(_opts);
       
   119     
       
   120     this.jwplayer = _player;
       
   121     
       
   122 };