1 if(!dojo._hasResource["dojox.av._base.flash"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
2 dojo._hasResource["dojox.av._base.flash"] = true;
3 dojo.provide("dojox.av._base.flash");
6 /*******************************************************
9 Base functionality to insert a flash movie into
10 a document on the fly.
12 Support for Flash 6 is dropped in favor of Flash 8;
13 multiple movies are supported.
14 ******************************************************/
16 // TODO: solve the Eolas problem, the function that actually pushes
17 // Flash movie into the doc must be loaded from an external script.
19 // TODO: add Brad's ExpressInstall for automated installation.
21 var fMarkup, fVersion, __def__={
22 expressInstall: false,
29 var keyBase="dojox-av-flash-", keyCount=0;
30 function prep(kwArgs){
31 kwArgs=dojo.mixin(dojo.clone(__def__), kwArgs || {});
32 if(!("path" in kwArgs)){
33 console.error("dojox.av._base.flash(ctor):: no path reference to a Flash movie was provided.");
36 if(!("id" in kwArgs)){
37 kwArgs.id=(keyBase + keyCount++);
43 // *** Internet Explorer branch ******************************************************************
44 fMarkup=function(kwArgs){
46 if(!kwArgs){ return null; }
47 var s='<object id="' + kwArgs.id + '" '
48 + 'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" '
49 + 'width="' + kwArgs.width + '" '
50 + 'height="' + kwArgs.height + '"'
51 + ((kwArgs.style)?' style="' + kwArgs.style + '"':'')
53 + '<param name="movie" value="' + kwArgs.path + '" />';
54 for(var i=0, l=kwArgs.params.length; i<l; i++){
55 s += '<param name="' + kwArgs.params[i].key + '" value="' + kwArgs.params[i].value + '" />';
58 return { id: kwArgs.id, markup: s };
62 var testVersion=10, testObj=null;
63 while(!testObj && testVersion > 7){
65 testObj = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + testVersion--);
69 var v = testObj.GetVariable("$version").split(" ")[1].split(",");
71 major: (v[0]!=null)?parseInt(v[0]):0,
72 minor: (v[1]!=null)?parseInt(v[1]):0,
73 rev: (v[2]!=null)?parseInt(v[2]):0
76 return { major: 0, minor: 0, rev: 0 };
79 // attach some cleanup for IE, thanks to deconcept :)
80 dojo.addOnUnload(function(){
81 var objs=dojo.query("object");
82 for(var i=objs.length-1; i>=0; i--){
83 objs[i].style.display="none";
84 for(var p in objs[i]){
85 if(p!="FlashVars" && dojo.isFunction(objs[i][p])){
86 objs[i][p]=function(){ };
92 // TODO: ...and double check this fix; is IE really firing onbeforeunload with any kind of href="#" link?
93 var beforeUnloadHandle = dojo.connect(dojo.global, "onbeforeunload", function(){
95 if(__flash_unloadHandler){ __flash_unloadHandler=function(){ }; }
96 if(__flash_savedUnloadHandler){ __flash_savedUnloadHandler=function(){ }; }
98 dojo.disconnect(beforeUnloadHandle);
101 // *** Sane browsers branch ******************************************************************
102 fMarkup=function(kwArgs){
104 if(!kwArgs){ return null; }
105 var s = '<embed type="application/x-shockwave-flash" '
106 + 'src="' + kwArgs.path + '" '
107 + 'id="' + kwArgs.id + '" '
108 + 'name="' + kwArgs.id + '" '
109 + 'width="' + kwArgs.width + '" '
110 + 'height="' + kwArgs.height + '"'
111 + (("style" in kwArgs)?' style="' + kwArgs.style + '"':'')
112 + 'swLiveConnect="true" '
113 + 'allowScriptAccess="sameDomain" '
114 + 'pluginspage="' + window.location.protocol + '//www.adobe.com/go/getflashplayer" ';
115 for(var i=0, l=kwArgs.params.length; i<l; i++){
116 s += ' ' + kwArgs.params[i].key + '="' + kwArgs.params[i].value + '"';
119 return { id: kwArgs.id, markup: s };
122 fVersion=(function(){
123 var plugin = navigator.plugins["Shockwave Flash"];
124 if(plugin && plugin.description){
125 var v = plugin.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split(".");
127 major: (v[0]!=null)?parseInt(v[0]):0,
128 minor: (v[1]!=null)?parseInt(v[1]):0,
129 rev: (v[2]!=null)?parseInt(v[2]):0
132 return { major: 0, minor: 0, rev: 0 };
136 // *** the static object for inserting Flash movies ******************************************************
139 available: fVersion.major,
140 supported: (fVersion.major >= 8),
143 onInitialize: function(){
144 dojox.av.flash.initialized=true;
146 __ie_markup__: function(kwArgs){
147 return fMarkup(kwArgs);
154 var e=document.createElement("script");
155 e.type="text/javascript";
156 e.src=dojo.moduleUrl("dojox", "av/_base/_ieFlash.js");
158 document.getElementsByTagName("head")[0].appendChild(e);
160 // we can use document.write. What a kludge.
161 document.write('<scr'+'ipt defer type="text/javascript" src="' + dojo.moduleUrl("dojox", "av/_base/_ieFlash.js") + '">'
165 dojox.av.flash.place = function(node, kwArgs){
166 node=dojo.byId(node);
167 var o = fMarkup(kwArgs);
169 node.innerHTML = o.markup;
170 return document[o.id];
176 dojox.av.flash.onInitialize();
178 dojo.addOnLoad(function(){
179 console.log("firing off dojox.av.flash.onInitialize() for sane browsers.");
180 dojox.av.flash.onInitialize();