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