diff -r 7b55777486c3 -r 75ba66457232 src/js/players/player.allocine.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/js/players/player.allocine.js Fri Apr 06 16:55:34 2012 +0200 @@ -0,0 +1,130 @@ +/* To wrap a player the develop should create a new class derived from +the IriSP.PopcornReplacement.player and defining the correct functions */ + +/** allocine player wrapper */ +IriSP.PopcornReplacement.allocine = function(container, options) { +// console.log("Calling allocine player"); + /* appel du parent pour initialiser les structures communes à tous les players */ + IriSP.PopcornReplacement.player.call(this, container, options); + + var _this = this; + + /* Définition des fonctions de l'API - */ + + this.playerFns = { + play : function() { + return _this.apiCall("play"); + }, + pause : function() { + return _this.apiCall("pause"); + }, + getPosition : function() { + return _this.apiCall("getSeek","return") || 0; + }, + seek : function(pos) { + return _this.apiCall("seek",pos); + }, + getMute : function() { + return _this.apiCall("getMute","return"); + }, + setMute : function(p) { + return _this.apiCall("setMute", p); + } + } + + window.onReady = IriSP.wrap(this, this.ready); + window.onAllocineStateChange = IriSP.wrap(this, this.stateHandler); + window.onTime = IriSP.wrap(this, this.progressHandler); + + var _videoUrl = ( + typeof options.directVideoPath == "string" + ? options.directVideoPath + : IriSP.get_aliased(IriSP.__jsonMetadata["medias"][0], ["href","url"]) + ); + var _flashVars = { + "streamFMS" : true, + "adVast" : false, + "lg" : "fr_cinecast", + "autoPlay" : options.autoPlay, + "directVideoTitle" : "", + "urlAcData" : options.urlAcData, + "directVideoPath" : _videoUrl, + "host" : "http://allocine.fr" + } + + if (typeof IriSP.__jsonMetadata["medias"][0].meta == "object" && typeof IriSP.__jsonMetadata["medias"][0].meta.subtitles == "string") { + _flashVars.subTitlePath = IriSP.__jsonMetadata["medias"][0].meta.subtitles; + } + + + var params = { + "allowScriptAccess" : "always", + "wmode": "opaque", + "flashvars" : IriSP.jQuery.param(_flashVars), + "allowfullscreen" : true + }; + var atts = { + id : this.container + }; + swfobject.embedSWF(options.acPlayerUrl, this.container, options.width, options.height, "10", null, null, params, atts); + +}; + +IriSP.PopcornReplacement.allocine.prototype = new IriSP.PopcornReplacement.player("", {}); + +IriSP.PopcornReplacement.allocine.prototype.ready = function() { + this.player = document.getElementById(this.container); + this.player.addEventListener("onStateChange", "onAllocineStateChange"); + this.player.cueVideoByUrl(this._options.video); + this.callbacks.onReady(); +}; + +IriSP.PopcornReplacement.allocine.prototype.progressHandler = function(progressInfo) { + this.callbacks.onTime({ + position: progressInfo.mediaTime + }); +} + + +IriSP.PopcornReplacement.allocine.prototype.apiCall = function(_method, _arg) { + if (this.player) { + try { + if (typeof _arg == "undefined") { + return this.player.sendToActionScript(_method); + } else { + return this.player.sendToActionScript(_method, _arg); + } + } catch(e) { + console.error('Exception while requesting AcPlayer for "' + _method + (typeof _arg == "undefined" ? '' : '" with argument "' + _arg ) + '"\n', e); + return false; + } + } else { + return false; + } +} + +IriSP.PopcornReplacement.allocine.prototype.stateHandler = function(state) { + console.log("stateHandler"); + switch(state) { + case 1: + this.callbacks.onPlay(); + break; + + case 2: + this.callbacks.onPause(); + break; + + case 3: + this.callbacks.onSeek({ + position: this.player.getCurrentTime() + }); + break; + + /* + case 5: + this.callbacks.onReady(); + break; + */ + } + +}; \ No newline at end of file