| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- AUI.add('aui-swf', function(A) {
- var Lang = A.Lang,
- UA = A.UA,
- getClassName = A.getClassName,
-
- NAME = 'swf',
-
- ATTR_VERSION = '10.22',
- ATTR_EXPRESS_INSTALL_URL = 'http://fpdownload.macromedia.com/pub/flashplayer/update/current/swf/autoUpdater.swf?' + (+ new Date),
- ATTR_TYPE = 'application/x-shockwave-flash',
- ATTR_CLSID = 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000',
- ATTR_EVENT_HANDLER = 'YUI.AUI.SWF.eventHandler',
-
- SF = 'ShockwaveFlash',
- VERSION = 0,
-
- SWF_INSTANCES = YUI.AUI.namespace('SWF.instances'),
-
- CSS_SWF = getClassName(NAME);
-
- YUI.AUI.SWF.eventHandler = function(id, event) {
- SWF_INSTANCES[id]._eventHandler(event);
- };
-
- if (UA.gecko || UA.webkit || UA.opera) {
- var flashMimeType = navigator.mimeTypes[ATTR_TYPE];
-
- if (flashMimeType) {
- var enabledPlugin = flashMimeType.enabledPlugin;
-
- var versions = [];
- versions = enabledPlugin.description.replace(/\s[rd]/g, '.');
- versions = versions.replace(/[A-Za-z\s]+/g, '');
- versions = versions.split('.');
-
- VERSION = versions[0] + '.';
-
- switch ((versions[2].toString()).length) {
- case 1:
- VERSION += '00';
- break;
-
- case 2:
- VERSION += '0';
- break;
- }
-
- VERSION += versions[2];
- VERSION = parseFloat(VERSION);
- }
- }
- else if (UA.ie) {
- try {
- var activeX6 = new ActiveXObject(SF + '.' + '6');
- activeX6.AllowScriptAccess = 'always';
- }
- catch (e) {
- if (activeX6 != null) {
- VERSION = 6.0;
- }
- }
-
- if (VERSION == 0) {
- try {
- var activeX = new ActiveXObject(SF + '.' + SF);
- var versions = [];
-
- versions = activeX.GetVariable('$version');
- versions = versions.replace(/[A-Za-z\s]+/g, '');
- versions = versions.split(',');
-
- VERSION = versions[0] + '.';
-
- switch ((versions[2].toString()).length) {
- case 1:
- VERSION += '00';
- break;
-
- case 2:
- VERSION += '0';
- break;
- }
- }
- catch (e) {
- }
- }
- }
-
- UA.flash = VERSION;
-
- var SWF = A.Component.create(
- {
- NAME: NAME,
-
- ATTRS: {
- url: {
- value: ''
- },
- version: {
- value: VERSION
- },
- useExpressInstall: {
- value: false
- },
- fixedAttributes: {
- value: {}
- },
- flashVars: {
- setter: '_setFlashVars',
- value: {}
- },
- render: {
- value: true
- }
- },
-
- constructor: function(config) {
- var instance = this;
-
- if (arguments.length > 1) {
- var boundingBox = arguments[0];
- var url = arguments[1];
- var params = arguments[2] || {};
-
- config = {
- boundingBox: boundingBox,
- url: url,
- fixedAttributes: params.fixedAttributes,
- flashVars: params.flashVars
- };
- }
-
- SWF.superclass.constructor.call(this, config);
- },
-
- getFlashVersion: function() {
- return VERSION;
- },
-
- isFlashVersionAtLeast: function(ver) {
- return VERSION >= ver;
- },
-
- prototype: {
- CONTENT_TEMPLATE: null,
-
- renderUI: function() {
- var instance = this;
-
- var properFlashVersion = SWF.isFlashVersionAtLeast(instance.get('version'));
- var canExpressInstall = (UA.flash >= 8.0);
-
- var shouldExpressInstall = canExpressInstall && !properFlashVersion && instance.get('useExpressInstall');
-
- var flashURL = instance.get('url');
-
- if (shouldExpressInstall) {
- flashURL = ATTR_EXPRESS_INSTALL_URL;
- }
-
- var swfId = A.guid();
-
- SWF_INSTANCES[swfId] = this;
-
- instance._swfId = swfId;
-
- var contentBox = instance.get('contentBox');
- var flashVars = instance.get('flashVars');
-
- A.mix(
- flashVars,
- {
- YUISwfId: swfId,
- YUIBridgeCallback: ATTR_EVENT_HANDLER
- }
- );
-
- var flashVarString = A.QueryString.stringify(flashVars);
-
- var tplObj = '<object ';
-
- if ((properFlashVersion || shouldExpressInstall) && flashURL) {
- tplObj += 'id="' + swfId + '" ';
-
- if (UA.ie) {
- tplObj += 'classid="' + ATTR_CLSID + '" ';
- }
- else {
- tplObj += 'type="' + ATTR_TYPE + '" data="' + flashURL + '" ';
- }
-
- tplObj += 'height="100%" width="100%">';
-
- if (UA.ie) {
- tplObj += '<param name="movie" value="' + flashURL + '"/>';
- }
-
- var fixedAttributes = instance.get('fixedAttributes');
-
- for (var i in fixedAttributes) {
- tplObj += '<param name="' + i + '" value="' + fixedAttributes[i] + '" />';
- }
-
- if (flashVarString) {
- tplObj += '<param name="flashVars" value="' + flashVarString + '" />';
- }
-
- tplObj += '</object>';
-
- contentBox.set('innerHTML', tplObj);
- }
-
- instance._swf = A.one('#' + swfId);
- },
-
- bindUI: function() {
- var instance = this;
-
- instance.publish(
- 'swfReady',
- {
- fireOnce: true
- }
- );
- },
-
- callSWF: function(fn, args) {
- var instance = this;
-
- args = args || [];
-
- var swf = instance._swf.getDOM();
-
- if (swf[fn]) {
- return swf[fn].apply(swf, args);
- }
-
- return null;
- },
-
- toString: function() {
- var instance = this;
-
- return 'SWF' + instance._swfId;
- },
-
- _eventHandler: function(event) {
- var instance = this;
-
- var eventType = event.type.replace(/Event$/, '');
-
- if (eventType != 'log') {
- instance.fire(eventType, event);
- }
- },
-
- _setFlashVars: function(value) {
- var instance = this;
-
- if (Lang.isString(value)) {
- value = A.QueryString.parse(value);
- }
-
- return value;
- }
- }
- }
- );
-
- A.SWF = SWF;
-
- }, '@VERSION@' ,{skinnable:false, requires:['aui-base','querystring-parse-simple','querystring-stringify-simple']});
|