Dashboard sipadu mbip
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

aui-swf.js 5.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. AUI.add('aui-swf', function(A) {
  2. var Lang = A.Lang,
  3. UA = A.UA,
  4. getClassName = A.getClassName,
  5. NAME = 'swf',
  6. ATTR_VERSION = '10.22',
  7. ATTR_EXPRESS_INSTALL_URL = 'http://fpdownload.macromedia.com/pub/flashplayer/update/current/swf/autoUpdater.swf?' + (+ new Date),
  8. ATTR_TYPE = 'application/x-shockwave-flash',
  9. ATTR_CLSID = 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000',
  10. ATTR_EVENT_HANDLER = 'YUI.AUI.SWF.eventHandler',
  11. SF = 'ShockwaveFlash',
  12. VERSION = 0,
  13. SWF_INSTANCES = YUI.AUI.namespace('SWF.instances'),
  14. CSS_SWF = getClassName(NAME);
  15. YUI.AUI.SWF.eventHandler = function(id, event) {
  16. SWF_INSTANCES[id]._eventHandler(event);
  17. };
  18. if (UA.gecko || UA.webkit || UA.opera) {
  19. var flashMimeType = navigator.mimeTypes[ATTR_TYPE];
  20. if (flashMimeType) {
  21. var enabledPlugin = flashMimeType.enabledPlugin;
  22. var versions = [];
  23. versions = enabledPlugin.description.replace(/\s[rd]/g, '.');
  24. versions = versions.replace(/[A-Za-z\s]+/g, '');
  25. versions = versions.split('.');
  26. VERSION = versions[0] + '.';
  27. switch ((versions[2].toString()).length) {
  28. case 1:
  29. VERSION += '00';
  30. break;
  31. case 2:
  32. VERSION += '0';
  33. break;
  34. }
  35. VERSION += versions[2];
  36. VERSION = parseFloat(VERSION);
  37. }
  38. }
  39. else if (UA.ie) {
  40. try {
  41. var activeX6 = new ActiveXObject(SF + '.' + '6');
  42. activeX6.AllowScriptAccess = 'always';
  43. }
  44. catch (e) {
  45. if (activeX6 != null) {
  46. VERSION = 6.0;
  47. }
  48. }
  49. if (VERSION == 0) {
  50. try {
  51. var activeX = new ActiveXObject(SF + '.' + SF);
  52. var versions = [];
  53. versions = activeX.GetVariable('$version');
  54. versions = versions.replace(/[A-Za-z\s]+/g, '');
  55. versions = versions.split(',');
  56. VERSION = versions[0] + '.';
  57. switch ((versions[2].toString()).length) {
  58. case 1:
  59. VERSION += '00';
  60. break;
  61. case 2:
  62. VERSION += '0';
  63. break;
  64. }
  65. }
  66. catch (e) {
  67. }
  68. }
  69. }
  70. UA.flash = VERSION;
  71. var SWF = A.Component.create(
  72. {
  73. NAME: NAME,
  74. ATTRS: {
  75. url: {
  76. value: ''
  77. },
  78. version: {
  79. value: VERSION
  80. },
  81. useExpressInstall: {
  82. value: false
  83. },
  84. fixedAttributes: {
  85. value: {}
  86. },
  87. flashVars: {
  88. setter: '_setFlashVars',
  89. value: {}
  90. },
  91. render: {
  92. value: true
  93. }
  94. },
  95. constructor: function(config) {
  96. var instance = this;
  97. if (arguments.length > 1) {
  98. var boundingBox = arguments[0];
  99. var url = arguments[1];
  100. var params = arguments[2] || {};
  101. config = {
  102. boundingBox: boundingBox,
  103. url: url,
  104. fixedAttributes: params.fixedAttributes,
  105. flashVars: params.flashVars
  106. };
  107. }
  108. SWF.superclass.constructor.call(this, config);
  109. },
  110. getFlashVersion: function() {
  111. return VERSION;
  112. },
  113. isFlashVersionAtLeast: function(ver) {
  114. return VERSION >= ver;
  115. },
  116. prototype: {
  117. CONTENT_TEMPLATE: null,
  118. renderUI: function() {
  119. var instance = this;
  120. var properFlashVersion = SWF.isFlashVersionAtLeast(instance.get('version'));
  121. var canExpressInstall = (UA.flash >= 8.0);
  122. var shouldExpressInstall = canExpressInstall && !properFlashVersion && instance.get('useExpressInstall');
  123. var flashURL = instance.get('url');
  124. if (shouldExpressInstall) {
  125. flashURL = ATTR_EXPRESS_INSTALL_URL;
  126. }
  127. var swfId = A.guid();
  128. SWF_INSTANCES[swfId] = this;
  129. instance._swfId = swfId;
  130. var contentBox = instance.get('contentBox');
  131. var flashVars = instance.get('flashVars');
  132. A.mix(
  133. flashVars,
  134. {
  135. YUISwfId: swfId,
  136. YUIBridgeCallback: ATTR_EVENT_HANDLER
  137. }
  138. );
  139. var flashVarString = A.QueryString.stringify(flashVars);
  140. var tplObj = '<object ';
  141. if ((properFlashVersion || shouldExpressInstall) && flashURL) {
  142. tplObj += 'id="' + swfId + '" ';
  143. if (UA.ie) {
  144. tplObj += 'classid="' + ATTR_CLSID + '" ';
  145. }
  146. else {
  147. tplObj += 'type="' + ATTR_TYPE + '" data="' + flashURL + '" ';
  148. }
  149. tplObj += 'height="100%" width="100%">';
  150. if (UA.ie) {
  151. tplObj += '<param name="movie" value="' + flashURL + '"/>';
  152. }
  153. var fixedAttributes = instance.get('fixedAttributes');
  154. for (var i in fixedAttributes) {
  155. tplObj += '<param name="' + i + '" value="' + fixedAttributes[i] + '" />';
  156. }
  157. if (flashVarString) {
  158. tplObj += '<param name="flashVars" value="' + flashVarString + '" />';
  159. }
  160. tplObj += '</object>';
  161. contentBox.set('innerHTML', tplObj);
  162. }
  163. instance._swf = A.one('#' + swfId);
  164. },
  165. bindUI: function() {
  166. var instance = this;
  167. instance.publish(
  168. 'swfReady',
  169. {
  170. fireOnce: true
  171. }
  172. );
  173. },
  174. callSWF: function(fn, args) {
  175. var instance = this;
  176. args = args || [];
  177. var swf = instance._swf.getDOM();
  178. if (swf[fn]) {
  179. return swf[fn].apply(swf, args);
  180. }
  181. return null;
  182. },
  183. toString: function() {
  184. var instance = this;
  185. return 'SWF' + instance._swfId;
  186. },
  187. _eventHandler: function(event) {
  188. var instance = this;
  189. var eventType = event.type.replace(/Event$/, '');
  190. if (eventType != 'log') {
  191. instance.fire(eventType, event);
  192. }
  193. },
  194. _setFlashVars: function(value) {
  195. var instance = this;
  196. if (Lang.isString(value)) {
  197. value = A.QueryString.parse(value);
  198. }
  199. return value;
  200. }
  201. }
  202. }
  203. );
  204. A.SWF = SWF;
  205. }, '@VERSION@' ,{skinnable:false, requires:['aui-base','querystring-parse-simple','querystring-stringify-simple']});