root / trunk / web / dojo / dojox / flash / _base.js @ 10
History | View | Annotate | Download (8.43 KB)
1 | 9 | andrej.cim | /*
|
---|---|---|---|
2 | Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
||
3 | Available via Academic Free License >= 2.1 OR the modified BSD license.
|
||
4 | see: http://dojotoolkit.org/license for details
|
||
5 | */
|
||
6 | |||
7 | |||
8 | if(!dojo._hasResource["dojox.flash._base"]){ |
||
9 | dojo._hasResource["dojox.flash._base"]=true; |
||
10 | dojo.provide("dojox.flash._base");
|
||
11 | dojo.experimental("dojox.flash");
|
||
12 | dojo.require("dojo.window");
|
||
13 | dojox.flash=function(){ |
||
14 | }; |
||
15 | dojox.flash={ready:false,url:null,_visible:true,_loadedListeners:[],_installingListeners:[],setSwf:function(_1,_2){ |
||
16 | this.url=_1;
|
||
17 | this._visible=true; |
||
18 | if(_2!==null&&_2!==undefined){ |
||
19 | this._visible=_2;
|
||
20 | } |
||
21 | this._initialize();
|
||
22 | },addLoadedListener:function(_3){ |
||
23 | this._loadedListeners.push(_3);
|
||
24 | },addInstallingListener:function(_4){ |
||
25 | this._installingListeners.push(_4);
|
||
26 | },loaded:function(){ |
||
27 | dojox.flash.ready=true;
|
||
28 | if(dojox.flash._loadedListeners.length){
|
||
29 | for(var i=0;i<dojox.flash._loadedListeners.length;i++){ |
||
30 | dojox.flash._loadedListeners[i].call(null);
|
||
31 | } |
||
32 | } |
||
33 | },installing:function(){ |
||
34 | if(dojox.flash._installingListeners.length){
|
||
35 | for(var i=0;i<dojox.flash._installingListeners.length;i++){ |
||
36 | dojox.flash._installingListeners[i].call(null);
|
||
37 | } |
||
38 | } |
||
39 | },_initialize:function(){ |
||
40 | var _5=new dojox.flash.Install(); |
||
41 | dojox.flash.installer=_5; |
||
42 | if(_5.needed()){
|
||
43 | _5.install(); |
||
44 | }else{
|
||
45 | dojox.flash.obj=new dojox.flash.Embed(this._visible); |
||
46 | dojox.flash.obj.write(); |
||
47 | dojox.flash.comm=new dojox.flash.Communicator();
|
||
48 | } |
||
49 | }}; |
||
50 | dojox.flash.Info=function(){ |
||
51 | this._detectVersion();
|
||
52 | }; |
||
53 | dojox.flash.Info.prototype={version:-1,versionMajor:-1,versionMinor:-1,versionRevision:-1,capable:false,installing:false,isVersionOrAbove:function(_6,_7,_8){ |
||
54 | _8=parseFloat("."+_8);
|
||
55 | if(this.versionMajor>=_6&&this.versionMinor>=_7&&this.versionRevision>=_8){ |
||
56 | return true; |
||
57 | }else{
|
||
58 | return false; |
||
59 | } |
||
60 | },_detectVersion:function(){ |
||
61 | var _9;
|
||
62 | for(var _a=25;_a>0;_a--){ |
||
63 | if(dojo.isIE){
|
||
64 | var _b;
|
||
65 | try{
|
||
66 | if(_a>6){ |
||
67 | _b=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_a); |
||
68 | }else{
|
||
69 | _b=new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); |
||
70 | } |
||
71 | if(typeof _b=="object"){ |
||
72 | if(_a==6){ |
||
73 | _b.AllowScriptAccess="always";
|
||
74 | } |
||
75 | _9=_b.GetVariable("$version");
|
||
76 | } |
||
77 | } |
||
78 | catch(e){
|
||
79 | continue;
|
||
80 | } |
||
81 | }else{
|
||
82 | _9=this._JSFlashInfo(_a);
|
||
83 | } |
||
84 | if(_9==-1){ |
||
85 | this.capable=false; |
||
86 | return;
|
||
87 | }else{
|
||
88 | if(_9!=0){ |
||
89 | var _c;
|
||
90 | if(dojo.isIE){
|
||
91 | var _d=_9.split(" "); |
||
92 | var _e=_d[1]; |
||
93 | _c=_e.split(",");
|
||
94 | }else{
|
||
95 | _c=_9.split(".");
|
||
96 | } |
||
97 | this.versionMajor=_c[0]; |
||
98 | this.versionMinor=_c[1]; |
||
99 | this.versionRevision=_c[2]; |
||
100 | var _f=this.versionMajor+"."+this.versionRevision; |
||
101 | this.version=parseFloat(_f);
|
||
102 | this.capable=true; |
||
103 | break;
|
||
104 | } |
||
105 | } |
||
106 | } |
||
107 | },_JSFlashInfo:function(_10){ |
||
108 | if(navigator.plugins!=null&&navigator.plugins.length>0){ |
||
109 | if(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]){ |
||
110 | var _11=navigator.plugins["Shockwave Flash 2.0"]?" 2.0":""; |
||
111 | var _12=navigator.plugins["Shockwave Flash"+_11].description; |
||
112 | var _13=_12.split(" "); |
||
113 | var _14=_13[2].split("."); |
||
114 | var _15=_14[0]; |
||
115 | var _16=_14[1]; |
||
116 | var _17=(_13[3]||_13[4]).split("r"); |
||
117 | var _18=_17[1]>0?_17[1]:0; |
||
118 | var _19=_15+"."+_16+"."+_18; |
||
119 | return _19;
|
||
120 | } |
||
121 | } |
||
122 | return -1; |
||
123 | }}; |
||
124 | dojox.flash.Embed=function(_1a){ |
||
125 | this._visible=_1a;
|
||
126 | }; |
||
127 | dojox.flash.Embed.prototype={width:215,height:138,id:"flashObject",_visible:true,protocol:function(){ |
||
128 | switch(window.location.protocol){
|
||
129 | case "https:": |
||
130 | return "https"; |
||
131 | break;
|
||
132 | default:
|
||
133 | return "http"; |
||
134 | break;
|
||
135 | } |
||
136 | },write:function(_1b){ |
||
137 | var _1c;
|
||
138 | var _1d=dojox.flash.url;
|
||
139 | var _1e=_1d;
|
||
140 | var _1f=_1d;
|
||
141 | var _20=dojo.baseUrl;
|
||
142 | var _21=document.location.protocol+"//"+document.location.host; |
||
143 | if(_1b){
|
||
144 | var _22=escape(window.location);
|
||
145 | document.title=document.title.slice(0,47)+" - Flash Player Installation"; |
||
146 | var _23=escape(document.title);
|
||
147 | _1e+="?MMredirectURL="+_22+"&MMplayerType=ActiveX"+"&MMdoctitle="+_23+"&baseUrl="+escape(_20)+"&xdomain="+escape(_21); |
||
148 | _1f+="?MMredirectURL="+_22+"&MMplayerType=PlugIn"+"&baseUrl="+escape(_20)+"&xdomain="+escape(_21); |
||
149 | }else{
|
||
150 | _1e+="?cachebust="+new Date().getTime(); |
||
151 | _1e+="&baseUrl="+escape(_20);
|
||
152 | _1e+="&xdomain="+escape(_21);
|
||
153 | } |
||
154 | if(_1f.indexOf("?")==-1){ |
||
155 | _1f+="?baseUrl="+escape(_20);
|
||
156 | }else{
|
||
157 | _1f+="&baseUrl="+escape(_20);
|
||
158 | } |
||
159 | _1f+="&xdomain="+escape(_21);
|
||
160 | _1c="<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" "+"codebase=\""+this.protocol()+"://fpdownload.macromedia.com/pub/shockwave/cabs/flash/"+"swflash.cab#version=8,0,0,0\"\n "+"width=\""+this.width+"\"\n "+"height=\""+this.height+"\"\n "+"id=\""+this.id+"\"\n "+"name=\""+this.id+"\"\n "+"align=\"middle\">\n "+"<param name=\"allowScriptAccess\" value=\"always\"></param>\n "+"<param name=\"movie\" value=\""+_1e+"\"></param>\n "+"<param name=\"quality\" value=\"high\"></param>\n "+"<param name=\"bgcolor\" value=\"#ffffff\"></param>\n "+"<embed src=\""+_1f+"\" "+"quality=\"high\" "+"bgcolor=\"#ffffff\" "+"width=\""+this.width+"\" "+"height=\""+this.height+"\" "+"id=\""+this.id+"Embed"+"\" "+"name=\""+this.id+"\" "+"swLiveConnect=\"true\" "+"align=\"middle\" "+"allowScriptAccess=\"always\" "+"type=\"application/x-shockwave-flash\" "+"pluginspage=\""+this.protocol()+"://www.macromedia.com/go/getflashplayer\" "+"></embed>\n"+"</object>\n"; |
||
161 | dojo.connect(dojo,"loaded",dojo.hitch(this,function(){ |
||
162 | var _24=this.id+"Container"; |
||
163 | if(dojo.byId(_24)){
|
||
164 | return;
|
||
165 | } |
||
166 | var div=document.createElement("div"); |
||
167 | div.id=this.id+"Container"; |
||
168 | div.style.width=this.width+"px"; |
||
169 | div.style.height=this.height+"px"; |
||
170 | if(!this._visible){ |
||
171 | div.style.position="absolute";
|
||
172 | div.style.zIndex="10000";
|
||
173 | div.style.top="-1000px";
|
||
174 | } |
||
175 | div.innerHTML=_1c; |
||
176 | var _25=document.getElementsByTagName("body"); |
||
177 | if(!_25||!_25.length){
|
||
178 | throw new Error("No body tag for this page"); |
||
179 | } |
||
180 | _25=_25[0];
|
||
181 | _25.appendChild(div); |
||
182 | })); |
||
183 | },get:function(){ |
||
184 | if(dojo.isIE||dojo.isWebKit){
|
||
185 | return dojo.byId(this.id); |
||
186 | }else{
|
||
187 | return document[this.id+"Embed"]; |
||
188 | } |
||
189 | },setVisible:function(_26){ |
||
190 | var _27=dojo.byId(this.id+"Container"); |
||
191 | if(_26){
|
||
192 | _27.style.position="absolute";
|
||
193 | _27.style.visibility="visible";
|
||
194 | }else{
|
||
195 | _27.style.position="absolute";
|
||
196 | _27.style.y="-1000px";
|
||
197 | _27.style.visibility="hidden";
|
||
198 | } |
||
199 | },center:function(){ |
||
200 | var _28=this.width; |
||
201 | var _29=this.height; |
||
202 | var _2a=dojo.window.getBox();
|
||
203 | var x=_2a.l+(_2a.w-_28)/2; |
||
204 | var y=_2a.t+(_2a.h-_29)/2; |
||
205 | var _2b=dojo.byId(this.id+"Container"); |
||
206 | _2b.style.top=y+"px";
|
||
207 | _2b.style.left=x+"px";
|
||
208 | }}; |
||
209 | dojox.flash.Communicator=function(){ |
||
210 | }; |
||
211 | dojox.flash.Communicator.prototype={_addExternalInterfaceCallback:function(_2c){ |
||
212 | var _2d=dojo.hitch(this,function(){ |
||
213 | var _2e=new Array(arguments.length); |
||
214 | for(var i=0;i<arguments.length;i++){ |
||
215 | _2e[i]=this._encodeData(arguments[i]); |
||
216 | } |
||
217 | var _2f=this._execFlash(_2c,_2e); |
||
218 | _2f=this._decodeData(_2f);
|
||
219 | return _2f;
|
||
220 | }); |
||
221 | this[_2c]=_2d;
|
||
222 | },_encodeData:function(_30){ |
||
223 | if(!_30||typeof _30!="string"){ |
||
224 | return _30;
|
||
225 | } |
||
226 | _30=_30.replace("\\","&custom_backslash;"); |
||
227 | _30=_30.replace(/\0/g,"&custom_null;"); |
||
228 | return _30;
|
||
229 | },_decodeData:function(_31){ |
||
230 | if(_31&&_31.length&&typeof _31!="string"){ |
||
231 | _31=_31[0];
|
||
232 | } |
||
233 | if(!_31||typeof _31!="string"){ |
||
234 | return _31;
|
||
235 | } |
||
236 | _31=_31.replace(/\&custom_null\;/g,"\x00"); |
||
237 | _31=_31.replace(/\&custom_lt\;/g,"<").replace(/\&custom_gt\;/g,">").replace(/\&custom_backslash\;/g,"\\"); |
||
238 | return _31;
|
||
239 | },_execFlash:function(_32,_33){ |
||
240 | var _34=dojox.flash.obj.get();
|
||
241 | _33=(_33)?_33:[]; |
||
242 | for(var i=0;i<_33;i++){ |
||
243 | if(typeof _33[i]=="string"){ |
||
244 | _33[i]=this._encodeData(_33[i]);
|
||
245 | } |
||
246 | } |
||
247 | var _35=function(){ |
||
248 | return eval(_34.CallFunction("<invoke name=\""+_32+"\" returntype=\"javascript\">"+__flash__argumentsToXML(_33,0)+"</invoke>")); |
||
249 | }; |
||
250 | var _36=_35.call(_33);
|
||
251 | if(typeof _36=="string"){ |
||
252 | _36=this._decodeData(_36);
|
||
253 | } |
||
254 | return _36;
|
||
255 | }}; |
||
256 | dojox.flash.Install=function(){ |
||
257 | }; |
||
258 | dojox.flash.Install.prototype={needed:function(){ |
||
259 | if(!dojox.flash.info.capable){
|
||
260 | return true; |
||
261 | } |
||
262 | if(!dojox.flash.info.isVersionOrAbove(8,0,0)){ |
||
263 | return true; |
||
264 | } |
||
265 | return false; |
||
266 | },install:function(){ |
||
267 | var _37;
|
||
268 | dojox.flash.info.installing=true;
|
||
269 | dojox.flash.installing(); |
||
270 | if(dojox.flash.info.capable==false){ |
||
271 | _37=new dojox.flash.Embed(false); |
||
272 | _37.write(); |
||
273 | }else{
|
||
274 | if(dojox.flash.info.isVersionOrAbove(6,0,65)){ |
||
275 | _37=new dojox.flash.Embed(false); |
||
276 | _37.write(true);
|
||
277 | _37.setVisible(true);
|
||
278 | _37.center(); |
||
279 | }else{
|
||
280 | alert("This content requires a more recent version of the Macromedia "+" Flash Player."); |
||
281 | window.location.href=+dojox.flash.Embed.protocol()+"://www.macromedia.com/go/getflashplayer";
|
||
282 | } |
||
283 | } |
||
284 | },_onInstallStatus:function(msg){ |
||
285 | if(msg=="Download.Complete"){ |
||
286 | dojox.flash._initialize(); |
||
287 | }else{
|
||
288 | if(msg=="Download.Cancelled"){ |
||
289 | alert("This content requires a more recent version of the Macromedia "+" Flash Player."); |
||
290 | window.location.href=dojox.flash.Embed.protocol()+"://www.macromedia.com/go/getflashplayer";
|
||
291 | }else{
|
||
292 | if(msg=="Download.Failed"){ |
||
293 | alert("There was an error downloading the Flash Player update. "+"Please try again later, or visit macromedia.com to download "+"the latest version of the Flash plugin."); |
||
294 | } |
||
295 | } |
||
296 | } |
||
297 | }}; |
||
298 | dojox.flash.info=new dojox.flash.Info();
|
||
299 | } |