You've already forked Atomcms-edit
146 lines
4.9 KiB
JavaScript
Executable File
146 lines
4.9 KiB
JavaScript
Executable File
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";
|