[1227] | 1 | // Flash Player Version Detection - Rev 1.6
|
---|
| 2 | // Detect Client Browser type
|
---|
| 3 | // Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved.
|
---|
| 4 | var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
|
---|
| 5 | var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
|
---|
| 6 | var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
|
---|
| 7 |
|
---|
| 8 | function ControlVersion()
|
---|
| 9 | {
|
---|
| 10 | var version;
|
---|
| 11 | var axo;
|
---|
| 12 | var e;
|
---|
| 13 |
|
---|
| 14 | // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
|
---|
| 15 |
|
---|
| 16 | try {
|
---|
| 17 | // version will be set for 7.X or greater players
|
---|
| 18 | axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
|
---|
| 19 | version = axo.GetVariable("$version");
|
---|
| 20 | } catch (e) {
|
---|
| 21 | }
|
---|
| 22 |
|
---|
| 23 | if (!version)
|
---|
| 24 | {
|
---|
| 25 | try {
|
---|
| 26 | // version will be set for 6.X players only
|
---|
| 27 | axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
|
---|
| 28 |
|
---|
| 29 | // installed player is some revision of 6.0
|
---|
| 30 | // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
|
---|
| 31 | // so we have to be careful.
|
---|
| 32 |
|
---|
| 33 | // default to the first public version
|
---|
| 34 | version = "WIN 6,0,21,0";
|
---|
| 35 |
|
---|
| 36 | // throws if AllowScripAccess does not exist (introduced in 6.0r47)
|
---|
| 37 | axo.AllowScriptAccess = "always";
|
---|
| 38 |
|
---|
| 39 | // safe to call for 6.0r47 or greater
|
---|
| 40 | version = axo.GetVariable("$version");
|
---|
| 41 |
|
---|
| 42 | } catch (e) {
|
---|
| 43 | }
|
---|
| 44 | }
|
---|
| 45 |
|
---|
| 46 | if (!version)
|
---|
| 47 | {
|
---|
| 48 | try {
|
---|
| 49 | // version will be set for 4.X or 5.X player
|
---|
| 50 | axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
|
---|
| 51 | version = axo.GetVariable("$version");
|
---|
| 52 | } catch (e) {
|
---|
| 53 | }
|
---|
| 54 | }
|
---|
| 55 |
|
---|
| 56 | if (!version)
|
---|
| 57 | {
|
---|
| 58 | try {
|
---|
| 59 | // version will be set for 3.X player
|
---|
| 60 | axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
|
---|
| 61 | version = "WIN 3,0,18,0";
|
---|
| 62 | } catch (e) {
|
---|
| 63 | }
|
---|
| 64 | }
|
---|
| 65 |
|
---|
| 66 | if (!version)
|
---|
| 67 | {
|
---|
| 68 | try {
|
---|
| 69 | // version will be set for 2.X player
|
---|
| 70 | axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
|
---|
| 71 | version = "WIN 2,0,0,11";
|
---|
| 72 | } catch (e) {
|
---|
| 73 | version = -1;
|
---|
| 74 | }
|
---|
| 75 | }
|
---|
| 76 |
|
---|
| 77 | return version;
|
---|
| 78 | }
|
---|
| 79 |
|
---|
| 80 | // JavaScript helper required to detect Flash Player PlugIn version information
|
---|
| 81 | function GetSwfVer(){
|
---|
| 82 | // NS/Opera version >= 3 check for Flash plugin in plugin array
|
---|
| 83 | var flashVer = -1;
|
---|
| 84 |
|
---|
| 85 | if (navigator.plugins != null && navigator.plugins.length > 0) {
|
---|
| 86 | if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
|
---|
| 87 | var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
|
---|
| 88 | var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
|
---|
| 89 | var descArray = flashDescription.split(" ");
|
---|
| 90 | var tempArrayMajor = descArray[2].split(".");
|
---|
| 91 | var versionMajor = tempArrayMajor[0];
|
---|
| 92 | var versionMinor = tempArrayMajor[1];
|
---|
| 93 | var versionRevision = descArray[3];
|
---|
| 94 | if (versionRevision == "") {
|
---|
| 95 | versionRevision = descArray[4];
|
---|
| 96 | }
|
---|
| 97 | if (versionRevision[0] == "d") {
|
---|
| 98 | versionRevision = versionRevision.substring(1);
|
---|
| 99 | } else if (versionRevision[0] == "r") {
|
---|
| 100 | versionRevision = versionRevision.substring(1);
|
---|
| 101 | if (versionRevision.indexOf("d") > 0) {
|
---|
| 102 | versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
|
---|
| 103 | }
|
---|
| 104 | }
|
---|
| 105 | var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
|
---|
| 106 | }
|
---|
| 107 | }
|
---|
| 108 | // MSN/WebTV 2.6 supports Flash 4
|
---|
| 109 | else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
|
---|
| 110 | // WebTV 2.5 supports Flash 3
|
---|
| 111 | else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
|
---|
| 112 | // older WebTV supports Flash 2
|
---|
| 113 | else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
|
---|
| 114 | else if ( isIE && isWin && !isOpera ) {
|
---|
| 115 | flashVer = ControlVersion();
|
---|
| 116 | }
|
---|
| 117 | return flashVer;
|
---|
| 118 | }
|
---|
| 119 |
|
---|
| 120 | // When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
|
---|
| 121 | function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
|
---|
| 122 | {
|
---|
| 123 | versionStr = GetSwfVer();
|
---|
| 124 | if (versionStr == -1 ) {
|
---|
| 125 | return false;
|
---|
| 126 | } else if (versionStr != 0) {
|
---|
| 127 | if(isIE && isWin && !isOpera) {
|
---|
| 128 | // Given "WIN 2,0,0,11"
|
---|
| 129 | tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"]
|
---|
| 130 | tempString = tempArray[1]; // "2,0,0,11"
|
---|
| 131 | versionArray = tempString.split(","); // ['2', '0', '0', '11']
|
---|
| 132 | } else {
|
---|
| 133 | versionArray = versionStr.split(".");
|
---|
| 134 | }
|
---|
| 135 | var versionMajor = versionArray[0];
|
---|
| 136 | var versionMinor = versionArray[1];
|
---|
| 137 | var versionRevision = versionArray[2];
|
---|
| 138 |
|
---|
| 139 | // is the major.revision >= requested major.revision AND the minor version >= requested minor
|
---|
| 140 | if (versionMajor > parseFloat(reqMajorVer)) {
|
---|
| 141 | return true;
|
---|
| 142 | } else if (versionMajor == parseFloat(reqMajorVer)) {
|
---|
| 143 | if (versionMinor > parseFloat(reqMinorVer))
|
---|
| 144 | return true;
|
---|
| 145 | else if (versionMinor == parseFloat(reqMinorVer)) {
|
---|
| 146 | if (versionRevision >= parseFloat(reqRevision))
|
---|
| 147 | return true;
|
---|
| 148 | }
|
---|
| 149 | }
|
---|
| 150 | return false;
|
---|
| 151 | }
|
---|
| 152 | }
|
---|
| 153 |
|
---|
| 154 | function AC_AddExtension(src, ext)
|
---|
| 155 | {
|
---|
| 156 | if (src.indexOf('?') != -1)
|
---|
| 157 | return src.replace(/\?/, ext+'?');
|
---|
| 158 | else
|
---|
| 159 | return src + ext;
|
---|
| 160 | }
|
---|
| 161 |
|
---|
| 162 | function AC_Generateobj(objAttrs, params, embedAttrs)
|
---|
| 163 | {
|
---|
| 164 | var str = '';
|
---|
| 165 | if (isIE && isWin && !isOpera)
|
---|
| 166 | {
|
---|
| 167 | str += '<object ';
|
---|
| 168 | for (var i in objAttrs)
|
---|
| 169 | str += i + '="' + objAttrs[i] + '" ';
|
---|
| 170 | str += '>';
|
---|
| 171 | for (var i in params)
|
---|
| 172 | str += '<param name="' + i + '" value="' + params[i] + '" /> ';
|
---|
| 173 | str += '</object>';
|
---|
| 174 | } else {
|
---|
| 175 | str += '<embed ';
|
---|
| 176 | for (var i in embedAttrs)
|
---|
| 177 | str += i + '="' + embedAttrs[i] + '" ';
|
---|
| 178 | str += '> </embed>';
|
---|
| 179 | }
|
---|
| 180 |
|
---|
| 181 | document.write(str);
|
---|
| 182 | }
|
---|
| 183 |
|
---|
| 184 | function AC_FL_RunContent(){
|
---|
| 185 | var ret =
|
---|
| 186 | AC_GetArgs
|
---|
| 187 | ( arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
|
---|
| 188 | , "application/x-shockwave-flash"
|
---|
| 189 | );
|
---|
| 190 | AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
|
---|
| 191 | }
|
---|
| 192 |
|
---|
| 193 | function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
|
---|
| 194 | var ret = new Object();
|
---|
| 195 | ret.embedAttrs = new Object();
|
---|
| 196 | ret.params = new Object();
|
---|
| 197 | ret.objAttrs = new Object();
|
---|
| 198 | for (var i=0; i < args.length; i=i+2){
|
---|
| 199 | var currArg = args[i].toLowerCase();
|
---|
| 200 |
|
---|
| 201 | switch (currArg){
|
---|
| 202 | case "classid":
|
---|
| 203 | break;
|
---|
| 204 | case "pluginspage":
|
---|
| 205 | ret.embedAttrs[args[i]] = args[i+1];
|
---|
| 206 | break;
|
---|
| 207 | case "src":
|
---|
| 208 | case "movie":
|
---|
| 209 | args[i+1] = AC_AddExtension(args[i+1], ext);
|
---|
| 210 | ret.embedAttrs["src"] = args[i+1];
|
---|
| 211 | ret.params[srcParamName] = args[i+1];
|
---|
| 212 | break;
|
---|
| 213 | case "onafterupdate":
|
---|
| 214 | case "onbeforeupdate":
|
---|
| 215 | case "onblur":
|
---|
| 216 | case "oncellchange":
|
---|
| 217 | case "onclick":
|
---|
| 218 | case "ondblClick":
|
---|
| 219 | case "ondrag":
|
---|
| 220 | case "ondragend":
|
---|
| 221 | case "ondragenter":
|
---|
| 222 | case "ondragleave":
|
---|
| 223 | case "ondragover":
|
---|
| 224 | case "ondrop":
|
---|
| 225 | case "onfinish":
|
---|
| 226 | case "onfocus":
|
---|
| 227 | case "onhelp":
|
---|
| 228 | case "onmousedown":
|
---|
| 229 | case "onmouseup":
|
---|
| 230 | case "onmouseover":
|
---|
| 231 | case "onmousemove":
|
---|
| 232 | case "onmouseout":
|
---|
| 233 | case "onkeypress":
|
---|
| 234 | case "onkeydown":
|
---|
| 235 | case "onkeyup":
|
---|
| 236 | case "onload":
|
---|
| 237 | case "onlosecapture":
|
---|
| 238 | case "onpropertychange":
|
---|
| 239 | case "onreadystatechange":
|
---|
| 240 | case "onrowsdelete":
|
---|
| 241 | case "onrowenter":
|
---|
| 242 | case "onrowexit":
|
---|
| 243 | case "onrowsinserted":
|
---|
| 244 | case "onstart":
|
---|
| 245 | case "onscroll":
|
---|
| 246 | case "onbeforeeditfocus":
|
---|
| 247 | case "onactivate":
|
---|
| 248 | case "onbeforedeactivate":
|
---|
| 249 | case "ondeactivate":
|
---|
| 250 | case "type":
|
---|
| 251 | case "codebase":
|
---|
| 252 | ret.objAttrs[args[i]] = args[i+1];
|
---|
| 253 | break;
|
---|
| 254 | case "id":
|
---|
| 255 | case "width":
|
---|
| 256 | case "height":
|
---|
| 257 | case "align":
|
---|
| 258 | case "vspace":
|
---|
| 259 | case "hspace":
|
---|
| 260 | case "class":
|
---|
| 261 | case "title":
|
---|
| 262 | case "accesskey":
|
---|
| 263 | case "name":
|
---|
| 264 | case "tabindex":
|
---|
| 265 | ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
|
---|
| 266 | break;
|
---|
| 267 | default:
|
---|
| 268 | ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
|
---|
| 269 | }
|
---|
| 270 | }
|
---|
| 271 | ret.objAttrs["classid"] = classid;
|
---|
| 272 | if (mimeType) ret.embedAttrs["type"] = mimeType;
|
---|
| 273 | return ret;
|
---|
| 274 | }
|
---|
| 275 |
|
---|
| 276 |
|
---|