1 /** The minplayer namespace. */ 2 var minplayer = minplayer || {}; 3 4 /** All the media player implementations */ 5 minplayer.players = minplayer.players || {}; 6 7 /** 8 * @constructor 9 * @extends minplayer.display 10 * @class The Flash media player class to control the flash fallback. 11 * 12 * @param {object} context The jQuery context. 13 * @param {object} options This components options. 14 * @param {object} queue The event queue to pass events around. 15 */ 16 minplayer.players.flash = function(context, options, queue) { 17 18 // Derive from players base. 19 minplayer.players.base.call(this, context, options, queue); 20 }; 21 22 /** Derive from minplayer.players.base. */ 23 minplayer.players.flash.prototype = new minplayer.players.base(); 24 25 /** Reset the constructor. */ 26 minplayer.players.flash.prototype.constructor = minplayer.players.flash; 27 28 /** 29 * @see minplayer.plugin.construct 30 * @this minplayer.players.flash 31 */ 32 minplayer.players.flash.prototype.construct = function() { 33 34 // Call the players.base constructor. 35 minplayer.players.base.prototype.construct.call(this); 36 37 // Set the plugin name within the options. 38 this.options.pluginName = 'flash'; 39 }; 40 41 /** 42 * @see minplayer.players.base#getPriority 43 * @param {object} file A {@link minplayer.file} object. 44 * @return {number} The priority of this media player. 45 */ 46 minplayer.players.flash.getPriority = function(file) { 47 return 0; 48 }; 49 50 /** 51 * @see minplayer.players.base#canPlay 52 * @return {boolean} If this player can play this media type. 53 */ 54 minplayer.players.flash.canPlay = function(file) { 55 return false; 56 }; 57 58 /** 59 * API to return the Flash player code provided params. 60 * 61 * @param {object} params The params used to populate the Flash code. 62 * @return {object} A Flash DOM element. 63 */ 64 minplayer.players.flash.prototype.getFlash = function(params) { 65 // Get the protocol. 66 var protocol = window.location.protocol; 67 if (protocol.charAt(protocol.length - 1) == ':') { 68 protocol = protocol.substring(0, protocol.length - 1); 69 } 70 71 // Insert the swfobject javascript. 72 var tag = document.createElement('script'); 73 var src = protocol; 74 src += '://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js'; 75 tag.src = src; 76 var firstScriptTag = document.getElementsByTagName('script')[0]; 77 firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 78 79 // Create the swfobject. 80 setTimeout((function(player) { 81 return function tryAgain() { 82 if (typeof swfobject !== 'undefined') { 83 swfobject.embedSWF( 84 params.swf, 85 params.id, 86 params.width, 87 params.height, 88 '9.0.0', 89 false, 90 params.flashvars, 91 { 92 allowscriptaccess: 'always', 93 allowfullscreen: 'true', 94 wmode: params.wmode, 95 quality: 'high' 96 }, 97 { 98 id: params.id, 99 name: params.id, 100 playerType: 'flash' 101 }, 102 function(e) { 103 player.player = e.ref; 104 } 105 ); 106 } 107 else { 108 109 // Try again after 200 ms. 110 setTimeout(tryAgain, 200); 111 } 112 }; 113 })(this), 200); 114 115 // Return the div tag... 116 return '<div id="' + params.id + '"></div>'; 117 }; 118 119 /** 120 * @see minplayer.players.base#playerFound 121 * @return {boolean} TRUE - if the player is in the DOM, FALSE otherwise. 122 */ 123 minplayer.players.flash.prototype.playerFound = function() { 124 return (this.display.find('object[playerType="flash"]').length > 0); 125 }; 126