|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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"; |