/** * jQuery swfObject plugin (http://jquery.thewikies.com/swfobject/) * @example * $('#flash').flash({ swf: 'test_flashvars.swf', flashvars: { name1: 'jQuery' } }); * * @version 1.0.9 */ (function ($, flash) { var createAttrs = function (obj) { var aEach, aArray = []; for (aEach in obj) { if (/string|number/.test(typeof obj[aEach]) && obj[aEach] !== '') { aArray.push(aEach + '="' + obj[aEach] + '"'); } } return aArray[j](''); }, createParams = function (obj) { var aEach, bEach, aArray = [], bArray; if (typeof obj == 'object') { for (aEach in obj) { if (typeof obj[aEach] == 'object') { bArray = []; for (bEach in obj[aEach]) { bArray.push([bEach, '=', encodeURIComponent(obj[aEach][bEach])][j]('')); } obj[aEach] = bArray[j]('&'); } if (obj[aEach]) { aArray.push([''][j]('')); } } obj = aArray[j](''); } return obj; }, expressInstallIsActive = false, j = 'join'; $[flash] = (function () { try { var flashVersion = '0,0,0', Plugin = navigator.plugins['Shockwave Flash'] || ActiveXObject; flashVersion = Plugin.description || (function () { try { return (new Plugin('ShockwaveFlash.ShockwaveFlash')).GetVariable('$version'); } catch (eIE) {} }()); } catch(e) {} flashVersion = flashVersion.match(/^[A-Za-z\s]*?(\d+)[\.|,](\d+)(?:\s+[d|r]|,)(\d+)/); return { available: flashVersion[1] > 0, activeX: Plugin && !Plugin.name, version: { major: flashVersion[1] * 1, minor: flashVersion[2] * 1, release: flashVersion[3] * 1 }, hasVersion: function (version) { var versionCompare = this.version, major = 'major', minor = 'minor', release = 'release'; version = (/string|number/.test(typeof version)) ? version.toString().split('.') : version || [0, 0, 0]; version = [ version[major] || version[0] || versionCompare[major], version[minor] || version[1] || versionCompare[minor], version[release] || version[2] || versionCompare[release] ]; return (version[0] < versionCompare[major]) || (version[0] == versionCompare[major] && version[1] < versionCompare[minor]) || (version[0] == versionCompare[major] && version[1] == versionCompare[minor] && version[2] <= versionCompare[release]); }, expressInstall: 'expressInstall.swf', create: function (obj) { if (!$[flash].available || expressInstallIsActive || !typeof obj == 'object' || !obj.swf) { return false; } if (obj.hasVersion && !$[flash].hasVersion(obj.hasVersion)) { obj = { swf: obj.expressInstall || $[flash].expressInstall, attrs: { id: obj.id || 'SWFObjectExprInst', name: obj.name, height: Math.max(obj.height || 137), width: Math.max(obj.width || 214) }, params: { flashvars: { MMredirectURL: location.href, MMplayerType: ($[flash].activeX) ? 'ActiveX': 'PlugIn', MMdoctitle: document.title.slice(0, 47) + ' - Flash Player Installation' } } }; expressInstallIsActive = true; } else { obj = $.extend( true, { attrs: { id: obj.id, name: obj.name, height: obj.height || 180, width: obj.width || 320 }, params: { wmode: obj.wmode || 'opaque', flashvars: obj.flashvars } }, obj ); } if ($[flash].activeX) { obj.attrs.classid = obj.attrs.classid || 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'; obj.params.movie = obj.params.movie || obj.swf; } else { obj.attrs.type = obj.attrs.classid || 'application/x-shockwave-flash'; obj.attrs.data = obj.attrs.data || obj.swf; } return ['', createParams(obj.params), ''][j](''); } }; }()); $.fn[flash] = function (args) { if (typeof args == 'object') { this.each( function () { var test = document.createElement(flash); var newFlash = $[flash].create(args); if (newFlash) { test.innerHTML = newFlash; if (test.childNodes[0]) { this.appendChild(test.childNodes[0]); } }; } ); } else if (typeof args == 'function') { this.find('object').andSelf().filter('object').each( function () { var elem = this, jsInteractionTimeoutMs = 'jsInteractionTimeoutMs'; elem[jsInteractionTimeoutMs] = elem[jsInteractionTimeoutMs] || 0; if (elem[jsInteractionTimeoutMs] < 660) { if (elem.clientWidth || elem.clientHeight) { args.call(this); } else { setTimeout( function () { $(elem)[flash](args); }, elem[jsInteractionTimeoutMs] + 66 ); } } } ); } return this; }; }(jQuery, 'flash'));