src/widgets/DailymotionPlayer.js
author veltr
Mon, 05 Nov 2012 19:02:48 +0100
branchplatform-restapi
changeset 976 4b9ec475026a
parent 959 ee11ed1b739e
child 1013 392ddcd212d7
permissions -rw-r--r--
Modified AutoPlayer for the platform

IriSP.Widgets.DailymotionPlayer = function(player, config) {
    IriSP.Widgets.Widget.call(this, player, config);
};

IriSP.Widgets.DailymotionPlayer.prototype = new IriSP.Widgets.Widget();

IriSP.Widgets.DailymotionPlayer.prototype.defaults = {
    aspect_ratio: 14/9
}

IriSP.Widgets.DailymotionPlayer.prototype.draw = function() {
    
    if (typeof this.video === "undefined") {
        this.video = this.media.video;
    }

    this.height = this.height || Math.floor(this.width / this.aspect_ratio);
    
    var _media = this.media,
        _this = this,
        _pauseState = true;
    
    /* Dailymotion utilise un système de fonctions référencées dans
     * des variables globales pour la gestion des événements.
     */
    
    window.onDailymotionPlayerReady = function() {

        var _player = document.getElementById(_this.container);
        
        _media.getCurrentTime = function() {
            return new IriSP.Model.Time(1000*_player.getCurrentTime());
        }
        _media.getVolume = function() {
            return _player.getVolume() / 100;
        }
        _media.getPaused = function() {
            return _pauseState;
        }
        _media.getMuted = function() {
            return _player.isMuted();
        }
        _media.setCurrentTime = function(_milliseconds) {
            _seekPause = _pauseState;
            return _player.seekTo(_milliseconds / 1000);
        }
        _media.setVolume = function(_vol) {
            return _player.setVolume(Math.floor(_vol*100));
        }
        _media.mute = function() {
            return _player.mute();
        }
        _media.unmute = function() {
            return _player.unMute();
        }
        _media.play = function() {
            return _player.playVideo();
        }
        _media.pause = function() {
            return _player.pauseVideo();
        }
        
        _player.addEventListener("onStateChange", "onDailymotionStateChange");
        _player.addEventListener("onVideoProgress", "onDailymotionVideoProgress");
        
        _player.cueVideoByUrl(_this.video);
        
        _media.trigger("loadedmetadata");
    }
    
    window.onDailymotionStateChange = function(_state) {
        switch(_state) {
            case 1:
                _media.trigger("play");
                _pauseState = false;
                break;
    
            case 2:
                _media.trigger("pause");
                _pauseState = true;
                break;
    
            case 3:
                _media.trigger("seeked");
                break;
        }
    }
    
    window.onDailymotionVideoProgress = function(_progress) {
        _media.trigger("timeupdate", new IriSP.Model.Time(_progress.mediaTime * 1000));
    }
    
    var params = {
        "allowScriptAccess" : "always",
        "wmode": "opaque"
    };
    
    var atts = {
        id : this.container
    };

    swfobject.embedSWF("http://www.dailymotion.com/swf?chromeless=1&enableApi=1", this.container, this.width, this.height, "8", null, null, params, atts);
    
}