| | 971 | var FlashDetect = new function(){ |
| | 972 | var self = this; |
| | 973 | self.installed = false; |
| | 974 | self.raw = ""; |
| | 975 | self.major = -1; |
| | 976 | self.minor = -1; |
| | 977 | self.revision = -1; |
| | 978 | self.revisionStr = ""; |
| | 979 | var activeXDetectRules = [ |
| | 980 | { |
| | 981 | "name":"ShockwaveFlash.ShockwaveFlash.7", |
| | 982 | "version":function(obj){ |
| | 983 | return getActiveXVersion(obj); |
| | 984 | } |
| | 985 | }, |
| | 986 | { |
| | 987 | "name":"ShockwaveFlash.ShockwaveFlash.6", |
| | 988 | "version":function(obj){ |
| | 989 | var version = "6,0,21"; |
| | 990 | try{ |
| | 991 | obj.AllowScriptAccess = "always"; |
| | 992 | version = getActiveXVersion(obj); |
| | 993 | }catch(err){} |
| | 994 | return version; |
| | 995 | } |
| | 996 | }, |
| | 997 | { |
| | 998 | "name":"ShockwaveFlash.ShockwaveFlash", |
| | 999 | "version":function(obj){ |
| | 1000 | return getActiveXVersion(obj); |
| | 1001 | } |
| | 1002 | } |
| | 1003 | ]; |
| | 1004 | var getActiveXVersion = function(activeXObj){ |
| | 1005 | var version = -1; |
| | 1006 | try{ |
| | 1007 | version = activeXObj.GetVariable("$version"); |
| | 1008 | }catch(err){} |
| | 1009 | return version; |
| | 1010 | }; |
| | 1011 | var getActiveXObject = function(name){ |
| | 1012 | var obj = -1; |
| | 1013 | try{ |
| | 1014 | obj = new ActiveXObject(name); |
| | 1015 | }catch(err){} |
| | 1016 | return obj; |
| | 1017 | }; |
| | 1018 | var parseActiveXVersion = function(str){ |
| | 1019 | var versionArray = str.split(",");//replace with regex |
| | 1020 | return { |
| | 1021 | "raw":str, |
| | 1022 | "major":parseInt(versionArray[0].split(" ")[1], 10), |
| | 1023 | "minor":parseInt(versionArray[1], 10), |
| | 1024 | "revision":parseInt(versionArray[2], 10), |
| | 1025 | "revisionStr":versionArray[2] |
| | 1026 | }; |
| | 1027 | }; |
| | 1028 | var parseStandardVersion = function(str){ |
| | 1029 | var descParts = str.split(/ +/); |
| | 1030 | var majorMinor = descParts[2].split(/\./); |
| | 1031 | var revisionStr = descParts[3]; |
| | 1032 | return { |
| | 1033 | "raw":str, |
| | 1034 | "major":parseInt(majorMinor[0], 10), |
| | 1035 | "minor":parseInt(majorMinor[1], 10), |
| | 1036 | "revisionStr":revisionStr, |
| | 1037 | "revision":parseRevisionStrToInt(revisionStr) |
| | 1038 | }; |
| | 1039 | }; |
| | 1040 | var parseRevisionStrToInt = function(str){ |
| | 1041 | return parseInt(str.replace(/[a-zA-Z]/g, ""), 10) || self.revision; |
| | 1042 | }; |
| | 1043 | self.majorAtLeast = function(version){ |
| | 1044 | return self.major >= version; |
| | 1045 | }; |
| | 1046 | self.FlashDetect = function(){ |
| | 1047 | if(navigator.plugins && navigator.plugins.length>0){ |
| | 1048 | var type = 'application/x-shockwave-flash'; |
| | 1049 | var mimeTypes = navigator.mimeTypes; |
| | 1050 | if(mimeTypes && mimeTypes[type] && mimeTypes[type].enabledPlugin && mimeTypes[type].enabledPlugin.description){ |
| | 1051 | var version = mimeTypes[type].enabledPlugin.description; |
| | 1052 | var versionObj = parseStandardVersion(version); |
| | 1053 | self.raw = versionObj.raw; |
| | 1054 | self.major = versionObj.major; |
| | 1055 | self.minor = versionObj.minor; |
| | 1056 | self.revisionStr = versionObj.revisionStr; |
| | 1057 | self.revision = versionObj.revision; |
| | 1058 | self.installed = true; |
| | 1059 | } |
| | 1060 | }else if(navigator.appVersion.indexOf("Mac")==-1 && window.execScript){ |
| | 1061 | var version = -1; |
| | 1062 | for(var i=0; i<activeXDetectRules.length && version==-1; i++){ |
| | 1063 | var obj = getActiveXObject(activeXDetectRules[i].name); |
| | 1064 | if(typeof obj == "object"){ |
| | 1065 | self.installed = true; |
| | 1066 | version = activeXDetectRules[i].version(obj); |
| | 1067 | if(version!=-1){ |
| | 1068 | var versionObj = parseActiveXVersion(version); |
| | 1069 | self.raw = versionObj.raw; |
| | 1070 | self.major = versionObj.major; |
| | 1071 | self.minor = versionObj.minor; |
| | 1072 | self.revision = versionObj.revision; |
| | 1073 | self.revisionStr = versionObj.revisionStr; |
| | 1074 | } |
| | 1075 | } |
| | 1076 | } |
| | 1077 | } |
| | 1078 | }(); |
| | 1079 | }; |
| | 1080 | FlashDetect.release = "1.0.3"; |
| | 1081 | |
| | 1082 | |
| | 1083 | |
| | 1084 | if( FlashDetect.installed && FlashDetect.major < 10 ) { |
| | 1085 | |