var FlashDetect = new (function () { var self = this; self.installed = false; self.raw = ""; self.major = -1; self.minor = -1; self.revision = -1; self.revisionStr = ""; var activeXDetectRules = [ { name: "ShockwaveFlash.ShockwaveFlash.7", version: function (obj) { return getActiveXVersion(obj); }, }, { name: "ShockwaveFlash.ShockwaveFlash.6", version: function (obj) { var version = "6,0,21"; try { obj.AllowScriptAccess = "always"; version = getActiveXVersion(obj); } catch (err) {} return version; }, }, { name: "ShockwaveFlash.ShockwaveFlash", version: function (obj) { return getActiveXVersion(obj); }, }, ]; var getActiveXVersion = function (activeXObj) { var version = -1; try { version = activeXObj.GetVariable("$version"); } catch (err) {} return version; }; var getActiveXObject = function (name) { var obj = -1; try { obj = new ActiveXObject(name); } catch (err) { obj = { activeXError: true }; } return obj; }; var parseActiveXVersion = function (str) { var versionArray = str.split(","); return { raw: str, major: parseInt(versionArray[0].split(" ")[1], 10), minor: parseInt(versionArray[1], 10), revision: parseInt(versionArray[2], 10), revisionStr: versionArray[2], }; }; var parseStandardVersion = function (str) { var descParts = str.split(/ +/); var majorMinor = descParts[2].split(/\./); var revisionStr = descParts[3]; return { raw: str, major: parseInt(majorMinor[0], 10), minor: parseInt(majorMinor[1], 10), revisionStr: revisionStr, revision: parseRevisionStrToInt(revisionStr), }; }; var parseRevisionStrToInt = function (str) { return parseInt(str.replace(/[a-zA-Z]/g, ""), 10) || self.revision; }; self.majorAtLeast = function (version) { return self.major >= version; }; self.minorAtLeast = function (version) { return self.minor >= version; }; self.revisionAtLeast = function (version) { return self.revision >= version; }; self.versionAtLeast = function (major) { var properties = [self.major, self.minor, self.revision]; var len = Math.min(properties.length, arguments.length); for (i = 0; i < len; i++) { if (properties[i] >= arguments[i]) { if (i + 1 < len && properties[i] == arguments[i]) { continue; } else { return true; } } else { return false; } } }; self.FlashDetect = (function () { if (navigator.plugins && navigator.plugins.length > 0) { var type = "application/x-shockwave-flash"; var mimeTypes = navigator.mimeTypes; if ( mimeTypes && mimeTypes[type] && mimeTypes[type].enabledPlugin && mimeTypes[type].enabledPlugin.description ) { var version = mimeTypes[type].enabledPlugin.description; var versionObj = parseStandardVersion(version); self.raw = versionObj.raw; self.major = versionObj.major; self.minor = versionObj.minor; self.revisionStr = versionObj.revisionStr; self.revision = versionObj.revision; self.installed = true; } } else if ( navigator.appVersion.indexOf("Mac") == -1 && window.execScript ) { var version = -1; for ( var i = 0; i < activeXDetectRules.length && version == -1; i++ ) { var obj = getActiveXObject(activeXDetectRules[i].name); if (!obj.activeXError) { self.installed = true; version = activeXDetectRules[i].version(obj); if (version != -1) { var versionObj = parseActiveXVersion(version); self.raw = versionObj.raw; self.major = versionObj.major; self.minor = versionObj.minor; self.revision = versionObj.revision; self.revisionStr = versionObj.revisionStr; } } } } })(); })(); FlashDetect.JS_RELEASE = "1.0.4";