Description:
added visualization by @nattster
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r263:c4b0fa192d57 - - 4 files changed: 399 inserted, 0 deleted

@@ -0,0 +1,276
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 +
@@ -0,0 +1,123
1 + <!-- saved from url=(0014)about:internet -->
2 + <html lang="en">
3 +
4 + <!--
5 + Smart developers always View Source.
6 +
7 + This application was built using Adobe Flex, an open source framework
8 + for building rich Internet applications that get delivered via the
9 + Flash Player or to desktops via Adobe AIR.
10 +
11 + Learn more about Flex at http://flex.org
12 + // -->
13 +
14 + <head>
15 + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
16 +
17 + <!-- BEGIN Browser History required section -->
18 + <link rel="stylesheet" type="text/css" href="history/history.css" />
19 + <!-- END Browser History required section -->
20 +
21 + <title></title>
22 + <script src="AC_OETags.js" language="javascript"></script>
23 +
24 + <!-- BEGIN Browser History required section -->
25 + <script src="history/history.js" language="javascript"></script>
26 + <!-- END Browser History required section -->
27 +
28 + <style>
29 + body { margin: 0px; overflow:hidden }
30 + </style>
31 + <script language="JavaScript" type="text/javascript">
32 + <!--
33 + // -----------------------------------------------------------------------------
34 + // Globals
35 + // Major version of Flash required
36 + var requiredMajorVersion = 9;
37 + // Minor version of Flash required
38 + var requiredMinorVersion = 0;
39 + // Minor version of Flash required
40 + var requiredRevision = 28;
41 + // -----------------------------------------------------------------------------
42 + // -->
43 + </script>
44 + </head>
45 +
46 + <body scroll="no">
47 + <script language="JavaScript" type="text/javascript">
48 + <!--
49 + // Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)
50 + var hasProductInstall = DetectFlashVer(6, 0, 65);
51 +
52 + // Version check based upon the values defined in globals
53 + var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
54 +
55 + if ( hasProductInstall && !hasRequestedVersion ) {
56 + // DO NOT MODIFY THE FOLLOWING FOUR LINES
57 + // Location visited after installation is complete if installation is required
58 + var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
59 + var MMredirectURL = window.location;
60 + document.title = document.title.slice(0, 47) + " - Flash Player Installation";
61 + var MMdoctitle = document.title;
62 +
63 + AC_FL_RunContent(
64 + "src", "playerProductInstall",
65 + "FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle,
66 + "width", "100%",
67 + "height", "100%",
68 + "align", "middle",
69 + "id", "CodeJom",
70 + "quality", "high",
71 + "bgcolor", "#869ca7",
72 + "name", "CodeJom",
73 + "allowScriptAccess","sameDomain",
74 + "type", "application/x-shockwave-flash",
75 + "pluginspage", "http://www.adobe.com/go/getflashplayer"
76 + );
77 + } else if (hasRequestedVersion) {
78 + // if we've detected an acceptable version
79 + // embed the Flash Content SWF when all tests are passed
80 + AC_FL_RunContent(
81 + "src", "CodeJom",
82 + "width", "100%",
83 + "height", "100%",
84 + "align", "middle",
85 + "id", "CodeJom",
86 + "quality", "high",
87 + "bgcolor", "#869ca7",
88 + "name", "CodeJom",
89 + "allowScriptAccess","sameDomain",
90 + "type", "application/x-shockwave-flash",
91 + "pluginspage", "http://www.adobe.com/go/getflashplayer",
92 + "FlashVars", "dataURL=../statuses.xml&refreshInterval=5&fontName=Tahoma&fontSize=20&fontBold=true"
93 + );
94 + } else { // flash is too old or we can't detect the plugin
95 + var alternateContent = 'Alternate HTML content should be placed here. '
96 + + 'This content requires the Adobe Flash Player. '
97 + + '<a href=http://www.adobe.com/go/getflash/>Get Flash</a>';
98 + document.write(alternateContent); // insert non-flash content
99 + }
100 + // -->
101 + </script>
102 + <noscript>
103 + <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
104 + id="CodeJom" width="100%" height="100%"
105 + codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
106 + <param name="movie" value="CodeJom.swf" />
107 + <param name="quality" value="high" />
108 + <param name="bgcolor" value="#869ca7" />
109 + <param name="allowScriptAccess" value="sameDomain" />
110 + <param name="flashVars" value="dataURL=http://localhost/example_data.xml&refreshInterval=5&fontName=Tahoma&fontSize=20&fontBold=true" />
111 + <embed src="CodeJom.swf" quality="high" bgcolor="#869ca7"
112 + width="100%" height="100%" name="CodeJom" align="middle"
113 + play="true"
114 + loop="false"
115 + quality="high"
116 + allowScriptAccess="sameDomain"
117 + type="application/x-shockwave-flash"
118 + pluginspage="http://www.adobe.com/go/getflashplayer">
119 + </embed>
120 + </object>
121 + </noscript>
122 + </body>
123 + </html>
new file 100644
binary diff hidden
new file 100644
binary diff hidden
You need to be logged in to leave comments. Login now