root / trunk / web / dojo / dojox / embed / Flash.js @ 12
History | View | Annotate | Download (6.42 KB)
| 1 |
/*
|
|---|---|
| 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.embed.Flash"]){ |
| 9 |
dojo._hasResource["dojox.embed.Flash"]=true; |
| 10 |
dojo.provide("dojox.embed.Flash");
|
| 11 |
(function(){
|
| 12 |
var _1,_2;
|
| 13 |
var _3=9; |
| 14 |
var _4="dojox-embed-flash-",_5=0; |
| 15 |
var _6={expressInstall:false,width:320,height:240,swLiveConnect:"true",allowScriptAccess:"sameDomain",allowNetworking:"all",style:null,redirect:null}; |
| 16 |
function _7(_8){ |
| 17 |
_8=dojo.delegate(_6,_8); |
| 18 |
if(!("path" in _8)){ |
| 19 |
console.error("dojox.embed.Flash(ctor):: no path reference to a Flash movie was provided.");
|
| 20 |
return null; |
| 21 |
} |
| 22 |
if(!("id" in _8)){ |
| 23 |
_8.id=(_4+_5++); |
| 24 |
} |
| 25 |
return _8;
|
| 26 |
}; |
| 27 |
if(dojo.isIE){
|
| 28 |
_1=function(_9){ |
| 29 |
_9=_7(_9); |
| 30 |
if(!_9){
|
| 31 |
return null; |
| 32 |
} |
| 33 |
var p;
|
| 34 |
var _a=_9.path;
|
| 35 |
if(_9.vars){
|
| 36 |
var a=[];
|
| 37 |
for(p in _9.vars){ |
| 38 |
a.push(p+"="+_9.vars[p]);
|
| 39 |
} |
| 40 |
_9.params.FlashVars=a.join("&");
|
| 41 |
delete _9.vars;
|
| 42 |
} |
| 43 |
var s="<object id=\""+_9.id+"\" "+"classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" "+"width=\""+_9.width+"\" "+"height=\""+_9.height+"\""+((_9.style)?" style=\""+_9.style+"\"":"")+">"+"<param name=\"movie\" value=\""+_a+"\" />"; |
| 44 |
if(_9.params){
|
| 45 |
for(p in _9.params){ |
| 46 |
s+="<param name=\""+p+"\" value=\""+_9.params[p]+"\" />"; |
| 47 |
} |
| 48 |
} |
| 49 |
s+="</object>";
|
| 50 |
return {id:_9.id,markup:s}; |
| 51 |
}; |
| 52 |
_2=(function(){
|
| 53 |
var _b=10,_c=null; |
| 54 |
while(!_c&&_b>7){ |
| 55 |
try{
|
| 56 |
_c=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_b--); |
| 57 |
} |
| 58 |
catch(e){
|
| 59 |
} |
| 60 |
} |
| 61 |
if(_c){
|
| 62 |
var v=_c.GetVariable("$version").split(" ")[1].split(","); |
| 63 |
return {major:(v[0]!=null)?parseInt(v[0]):0,minor:(v[1]!=null)?parseInt(v[1]):0,rev:(v[2]!=null)?parseInt(v[2]):0}; |
| 64 |
} |
| 65 |
return {major:0,minor:0,rev:0}; |
| 66 |
})(); |
| 67 |
dojo.addOnUnload(function(){
|
| 68 |
var _d=function(){ |
| 69 |
}; |
| 70 |
var _e=dojo.query("object").reverse().style("display","none").forEach(function(i){ |
| 71 |
for(var p in i){ |
| 72 |
if((p!="FlashVars")&&dojo.isFunction(i[p])){ |
| 73 |
try{
|
| 74 |
i[p]=_d; |
| 75 |
} |
| 76 |
catch(e){
|
| 77 |
} |
| 78 |
} |
| 79 |
} |
| 80 |
}); |
| 81 |
}); |
| 82 |
}else{
|
| 83 |
_1=function(_f){ |
| 84 |
_f=_7(_f); |
| 85 |
if(!_f){
|
| 86 |
return null; |
| 87 |
} |
| 88 |
var p;
|
| 89 |
var _10=_f.path;
|
| 90 |
if(_f.vars){
|
| 91 |
var a=[];
|
| 92 |
for(p in _f.vars){ |
| 93 |
a.push(p+"="+_f.vars[p]);
|
| 94 |
} |
| 95 |
_f.params.flashVars=a.join("&");
|
| 96 |
delete _f.vars;
|
| 97 |
} |
| 98 |
var s="<embed type=\"application/x-shockwave-flash\" "+"src=\""+_10+"\" "+"id=\""+_f.id+"\" "+"width=\""+_f.width+"\" "+"height=\""+_f.height+"\""+((_f.style)?" style=\""+_f.style+"\" ":"")+"swLiveConnect=\""+_f.swLiveConnect+"\" "+"allowScriptAccess=\""+_f.allowScriptAccess+"\" "+"allowNetworking=\""+_f.allowNetworking+"\" "+"pluginspage=\""+window.location.protocol+"//www.adobe.com/go/getflashplayer\" "; |
| 99 |
if(_f.params){
|
| 100 |
for(p in _f.params){ |
| 101 |
s+=" "+p+"=\""+_f.params[p]+"\""; |
| 102 |
} |
| 103 |
} |
| 104 |
s+=" />";
|
| 105 |
return {id:_f.id,markup:s}; |
| 106 |
}; |
| 107 |
_2=(function(){
|
| 108 |
var _11=navigator.plugins["Shockwave Flash"]; |
| 109 |
if(_11&&_11.description){
|
| 110 |
var v=_11.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."); |
| 111 |
return {major:(v[0]!=null)?parseInt(v[0]):0,minor:(v[1]!=null)?parseInt(v[1]):0,rev:(v[2]!=null)?parseInt(v[2]):0}; |
| 112 |
} |
| 113 |
return {major:0,minor:0,rev:0}; |
| 114 |
})(); |
| 115 |
} |
| 116 |
dojox.embed.Flash=function(_12,_13){ |
| 117 |
if(location.href.toLowerCase().indexOf("file://")>-1){ |
| 118 |
throw new Error("dojox.embed.Flash can't be run directly from a file. To instatiate the required SWF correctly it must be run from a server, like localHost."); |
| 119 |
} |
| 120 |
this.available=dojox.embed.Flash.available;
|
| 121 |
this.minimumVersion=_12.minimumVersion||_3;
|
| 122 |
this.id=null; |
| 123 |
this.movie=null; |
| 124 |
this.domNode=null; |
| 125 |
if(_13){
|
| 126 |
_13=dojo.byId(_13); |
| 127 |
} |
| 128 |
setTimeout(dojo.hitch(this,function(){ |
| 129 |
if(_12.expressInstall||this.available&&this.available>=this.minimumVersion){ |
| 130 |
if(_12&&_13){
|
| 131 |
this.init(_12,_13);
|
| 132 |
}else{
|
| 133 |
this.onError("embed.Flash was not provided with the proper arguments."); |
| 134 |
} |
| 135 |
}else{
|
| 136 |
if(!this.available){ |
| 137 |
this.onError("Flash is not installed."); |
| 138 |
}else{
|
| 139 |
this.onError("Flash version detected: "+this.available+" is out of date. Minimum required: "+this.minimumVersion); |
| 140 |
} |
| 141 |
} |
| 142 |
}),100);
|
| 143 |
}; |
| 144 |
dojo.extend(dojox.embed.Flash,{onReady:function(_14){
|
| 145 |
console.warn("embed.Flash.movie.onReady:",_14);
|
| 146 |
},onLoad:function(_15){ |
| 147 |
console.warn("embed.Flash.movie.onLoad:",_15);
|
| 148 |
},onError:function(msg){ |
| 149 |
},_onload:function(){ |
| 150 |
clearInterval(this._poller);
|
| 151 |
delete this._poller; |
| 152 |
delete this._pollCount; |
| 153 |
delete this._pollMax; |
| 154 |
this.onLoad(this.movie); |
| 155 |
},init:function(_16,_17){ |
| 156 |
this.destroy();
|
| 157 |
_17=dojo.byId(_17||this.domNode);
|
| 158 |
if(!_17){
|
| 159 |
throw new Error("dojox.embed.Flash: no domNode reference has been passed."); |
| 160 |
} |
| 161 |
var p=0,_18=false; |
| 162 |
this._poller=null; |
| 163 |
this._pollCount=0; |
| 164 |
this._pollMax=15; |
| 165 |
this.pollTime=100; |
| 166 |
if(dojox.embed.Flash.initialized){
|
| 167 |
this.id=dojox.embed.Flash.place(_16,_17);
|
| 168 |
this.domNode=_17;
|
| 169 |
setTimeout(dojo.hitch(this,function(){ |
| 170 |
this.movie=this.byId(this.id,_16.doc); |
| 171 |
this.onReady(this.movie); |
| 172 |
this._poller=setInterval(dojo.hitch(this,function(){ |
| 173 |
try{
|
| 174 |
p=this.movie.PercentLoaded();
|
| 175 |
} |
| 176 |
catch(e){
|
| 177 |
console.warn("this.movie.PercentLoaded() failed");
|
| 178 |
} |
| 179 |
if(p==100){ |
| 180 |
this._onload();
|
| 181 |
}else{
|
| 182 |
if(p==0&&this._pollCount++>this._pollMax){ |
| 183 |
clearInterval(this._poller);
|
| 184 |
throw new Error("Building SWF failed."); |
| 185 |
} |
| 186 |
} |
| 187 |
}),this.pollTime);
|
| 188 |
}),1);
|
| 189 |
} |
| 190 |
},_destroy:function(){ |
| 191 |
try{
|
| 192 |
this.domNode.removeChild(this.movie); |
| 193 |
} |
| 194 |
catch(e){
|
| 195 |
} |
| 196 |
this.id=this.movie=this.domNode=null; |
| 197 |
},destroy:function(){ |
| 198 |
if(!this.movie){ |
| 199 |
return;
|
| 200 |
} |
| 201 |
var _19=dojo.delegate({id:true,movie:true,domNode:true,onReady:true,onLoad:true}); |
| 202 |
for(var p in this){ |
| 203 |
if(!_19[p]){
|
| 204 |
delete this[p]; |
| 205 |
} |
| 206 |
} |
| 207 |
if(this._poller){ |
| 208 |
dojo.connect(this,"onLoad",this,"_destroy"); |
| 209 |
}else{
|
| 210 |
this._destroy();
|
| 211 |
} |
| 212 |
},byId:function(_1a,doc){ |
| 213 |
doc=doc||document; |
| 214 |
if(doc.embeds[_1a]){
|
| 215 |
return doc.embeds[_1a];
|
| 216 |
} |
| 217 |
if(doc[_1a]){
|
| 218 |
return doc[_1a];
|
| 219 |
} |
| 220 |
if(window[_1a]){
|
| 221 |
return window[_1a];
|
| 222 |
} |
| 223 |
if(document[_1a]){
|
| 224 |
return document[_1a];
|
| 225 |
} |
| 226 |
return null; |
| 227 |
}}); |
| 228 |
dojo.mixin(dojox.embed.Flash,{minSupported:8,available:_2.major,supported:(_2.major>=_2.required),minimumRequired:_2.required,version:_2,initialized:false,onInitialize:function(){
|
| 229 |
dojox.embed.Flash.initialized=true;
|
| 230 |
},__ie_markup__:function(_1b){ |
| 231 |
return _1(_1b);
|
| 232 |
},proxy:function(obj,_1c){ |
| 233 |
dojo.forEach((dojo.isArray(_1c)?_1c:[_1c]),function(_1d){
|
| 234 |
this[_1d]=dojo.hitch(this,function(){ |
| 235 |
return (function(){ |
| 236 |
return eval(this.movie.CallFunction("<invoke name=\""+_1d+"\" returntype=\"javascript\">"+"<arguments>"+dojo.map(arguments,function(_1e){ |
| 237 |
return __flash__toXML(_1e);
|
| 238 |
}).join("")+"</arguments>"+"</invoke>")); |
| 239 |
}).apply(this,arguments||[]); |
| 240 |
}); |
| 241 |
},obj); |
| 242 |
}}); |
| 243 |
dojox.embed.Flash.place=function(_1f,_20){ |
| 244 |
var o=_1(_1f);
|
| 245 |
_20=dojo.byId(_20); |
| 246 |
if(!_20){
|
| 247 |
_20=dojo.doc.createElement("div");
|
| 248 |
_20.id=o.id+"-container";
|
| 249 |
dojo.body().appendChild(_20); |
| 250 |
} |
| 251 |
if(o){
|
| 252 |
_20.innerHTML=o.markup; |
| 253 |
return o.id;
|
| 254 |
} |
| 255 |
return null; |
| 256 |
}; |
| 257 |
dojox.embed.Flash.onInitialize(); |
| 258 |
})(); |
| 259 |
} |