root / trunk / web / dojo / dojox / flash / _base.js
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 | } |