flash.js
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:16k
源码类别:

OA系统

开发平台:

Java

  1. /*
  2. Copyright (c) 2004-2006, The Dojo Foundation
  3. All Rights Reserved.
  4. Licensed under the Academic Free License version 2.1 or above OR the
  5. modified BSD license. For more information on Dojo licensing, see:
  6. http://dojotoolkit.org/community/licensing.shtml
  7. */
  8. dojo.provide("dojo.flash");
  9. dojo.require("dojo.string.*");
  10. dojo.require("dojo.uri.*");
  11. dojo.require("dojo.html.common");
  12. dojo.flash = function () {
  13. };
  14. dojo.flash = {flash6_version:null, flash8_version:null, ready:false, _visible:true, _loadedListeners:new Array(), _installingListeners:new Array(), setSwf:function (fileInfo) {
  15. if (fileInfo == null || dojo.lang.isUndefined(fileInfo)) {
  16. return;
  17. }
  18. if (fileInfo.flash6 != null && !dojo.lang.isUndefined(fileInfo.flash6)) {
  19. this.flash6_version = fileInfo.flash6;
  20. }
  21. if (fileInfo.flash8 != null && !dojo.lang.isUndefined(fileInfo.flash8)) {
  22. this.flash8_version = fileInfo.flash8;
  23. }
  24. if (!dojo.lang.isUndefined(fileInfo.visible)) {
  25. this._visible = fileInfo.visible;
  26. }
  27. this._initialize();
  28. }, useFlash6:function () {
  29. if (this.flash6_version == null) {
  30. return false;
  31. } else {
  32. if (this.flash6_version != null && dojo.flash.info.commVersion == 6) {
  33. return true;
  34. } else {
  35. return false;
  36. }
  37. }
  38. }, useFlash8:function () {
  39. if (this.flash8_version == null) {
  40. return false;
  41. } else {
  42. if (this.flash8_version != null && dojo.flash.info.commVersion == 8) {
  43. return true;
  44. } else {
  45. return false;
  46. }
  47. }
  48. }, addLoadedListener:function (listener) {
  49. this._loadedListeners.push(listener);
  50. }, addInstallingListener:function (listener) {
  51. this._installingListeners.push(listener);
  52. }, loaded:function () {
  53. dojo.flash.ready = true;
  54. if (dojo.flash._loadedListeners.length > 0) {
  55. for (var i = 0; i < dojo.flash._loadedListeners.length; i++) {
  56. dojo.flash._loadedListeners[i].call(null);
  57. }
  58. }
  59. }, installing:function () {
  60. if (dojo.flash._installingListeners.length > 0) {
  61. for (var i = 0; i < dojo.flash._installingListeners.length; i++) {
  62. dojo.flash._installingListeners[i].call(null);
  63. }
  64. }
  65. }, _initialize:function () {
  66. var installer = new dojo.flash.Install();
  67. dojo.flash.installer = installer;
  68. if (installer.needed() == true) {
  69. installer.install();
  70. } else {
  71. dojo.flash.obj = new dojo.flash.Embed(this._visible);
  72. dojo.flash.obj.write(dojo.flash.info.commVersion);
  73. dojo.flash.comm = new dojo.flash.Communicator();
  74. }
  75. }};
  76. dojo.flash.Info = function () {
  77. if (dojo.render.html.ie) {
  78. document.writeln("<script language="VBScript" type="text/vbscript">");
  79. document.writeln("Function VBGetSwfVer(i)");
  80. document.writeln("  on error resume next");
  81. document.writeln("  Dim swControl, swVersion");
  82. document.writeln("  swVersion = 0");
  83. document.writeln("  set swControl = CreateObject("ShockwaveFlash.ShockwaveFlash." + CStr(i))");
  84. document.writeln("  if (IsObject(swControl)) then");
  85. document.writeln(" swVersion = swControl.GetVariable("$version")");
  86. document.writeln("  end if");
  87. document.writeln("  VBGetSwfVer = swVersion");
  88. document.writeln("End Function");
  89. document.writeln("</script>");
  90. }
  91. this._detectVersion();
  92. this._detectCommunicationVersion();
  93. };
  94. dojo.flash.Info.prototype = {version:-1, versionMajor:-1, versionMinor:-1, versionRevision:-1, capable:false, commVersion:6, installing:false, isVersionOrAbove:function (reqMajorVer, reqMinorVer, reqVer) {
  95. reqVer = parseFloat("." + reqVer);
  96. if (this.versionMajor >= reqMajorVer && this.versionMinor >= reqMinorVer && this.versionRevision >= reqVer) {
  97. return true;
  98. } else {
  99. return false;
  100. }
  101. }, _detectVersion:function () {
  102. var versionStr;
  103. for (var testVersion = 25; testVersion > 0; testVersion--) {
  104. if (dojo.render.html.ie) {
  105. versionStr = VBGetSwfVer(testVersion);
  106. } else {
  107. versionStr = this._JSFlashInfo(testVersion);
  108. }
  109. if (versionStr == -1) {
  110. this.capable = false;
  111. return;
  112. } else {
  113. if (versionStr != 0) {
  114. var versionArray;
  115. if (dojo.render.html.ie) {
  116. var tempArray = versionStr.split(" ");
  117. var tempString = tempArray[1];
  118. versionArray = tempString.split(",");
  119. } else {
  120. versionArray = versionStr.split(".");
  121. }
  122. this.versionMajor = versionArray[0];
  123. this.versionMinor = versionArray[1];
  124. this.versionRevision = versionArray[2];
  125. var versionString = this.versionMajor + "." + this.versionRevision;
  126. this.version = parseFloat(versionString);
  127. this.capable = true;
  128. break;
  129. }
  130. }
  131. }
  132. }, _JSFlashInfo:function (testVersion) {
  133. if (navigator.plugins != null && navigator.plugins.length > 0) {
  134. if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
  135. var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
  136. var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
  137. var descArray = flashDescription.split(" ");
  138. var tempArrayMajor = descArray[2].split(".");
  139. var versionMajor = tempArrayMajor[0];
  140. var versionMinor = tempArrayMajor[1];
  141. if (descArray[3] != "") {
  142. var tempArrayMinor = descArray[3].split("r");
  143. } else {
  144. var tempArrayMinor = descArray[4].split("r");
  145. }
  146. var versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
  147. var version = versionMajor + "." + versionMinor + "." + versionRevision;
  148. return version;
  149. }
  150. }
  151. return -1;
  152. }, _detectCommunicationVersion:function () {
  153. if (this.capable == false) {
  154. this.commVersion = null;
  155. return;
  156. }
  157. if (typeof djConfig["forceFlashComm"] != "undefined" && typeof djConfig["forceFlashComm"] != null) {
  158. this.commVersion = djConfig["forceFlashComm"];
  159. return;
  160. }
  161. if (dojo.render.html.safari == true || dojo.render.html.opera == true) {
  162. this.commVersion = 8;
  163. } else {
  164. this.commVersion = 6;
  165. }
  166. }};
  167. dojo.flash.Embed = function (visible) {
  168. this._visible = visible;
  169. };
  170. dojo.flash.Embed.prototype = {width:215, height:138, id:"flashObject", _visible:true, protocol:function () {
  171. switch (window.location.protocol) {
  172.   case "https:":
  173. return "https";
  174. break;
  175.   default:
  176. return "http";
  177. break;
  178. }
  179. }, write:function (flashVer, doExpressInstall) {
  180. if (dojo.lang.isUndefined(doExpressInstall)) {
  181. doExpressInstall = false;
  182. }
  183. var containerStyle = new dojo.string.Builder();
  184. containerStyle.append("width: " + this.width + "px; ");
  185. containerStyle.append("height: " + this.height + "px; ");
  186. if (this._visible == false) {
  187. containerStyle.append("position: absolute; ");
  188. containerStyle.append("z-index: 10000; ");
  189. containerStyle.append("top: -1000px; ");
  190. containerStyle.append("left: -1000px; ");
  191. }
  192. containerStyle = containerStyle.toString();
  193. var objectHTML;
  194. var swfloc;
  195. if (flashVer == 6) {
  196. swfloc = dojo.flash.flash6_version;
  197. var dojoPath = djConfig.baseRelativePath;
  198. swfloc = swfloc + "?baseRelativePath=" + escape(dojoPath);
  199. objectHTML = "<embed id="" + this.id + "" src="" + swfloc + "" " + " quality="high" bgcolor="#ffffff" " + " width="" + this.width + "" height="" + this.height + "" " + " name="" + this.id + "" " + " align="middle" allowScriptAccess="sameDomain" " + " type="application/x-shockwave-flash" swLiveConnect="true" " + " pluginspage="" + this.protocol() + "://www.macromedia.com/go/getflashplayer">";
  200. } else {
  201. swfloc = dojo.flash.flash8_version;
  202. var swflocObject = swfloc;
  203. var swflocEmbed = swfloc;
  204. var dojoPath = djConfig.baseRelativePath;
  205. if (doExpressInstall) {
  206. var redirectURL = escape(window.location);
  207. document.title = document.title.slice(0, 47) + " - Flash Player Installation";
  208. var docTitle = escape(document.title);
  209. swflocObject += "?MMredirectURL=" + redirectURL + "&MMplayerType=ActiveX" + "&MMdoctitle=" + docTitle + "&baseRelativePath=" + escape(dojoPath);
  210. swflocEmbed += "?MMredirectURL=" + redirectURL + "&MMplayerType=PlugIn" + "&baseRelativePath=" + escape(dojoPath);
  211. }
  212. if (swflocEmbed.indexOf("?") == -1) {
  213. swflocEmbed += "?baseRelativePath=" + escape(dojoPath) + "' ";
  214. }
  215. objectHTML = "<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" " + "width="" + this.width + "" " + "height="" + this.height + "" " + "id="" + this.id + "" " + "align="middle"> " + "<param name="allowScriptAccess" value="sameDomain" /> " + "<param name="movie" value="" + swflocObject + "" /> " + "<param name="quality" value="high" /> " + "<param name="bgcolor" value="#ffffff" /> " + "<embed src="" + swflocEmbed + "' " + "quality="high" " + "bgcolor="#ffffff" " + "width="" + this.width + "" " + "height="" + this.height + "" " + "id="" + this.id + "" " + "name="" + this.id + "" " + "swLiveConnect="true" " + "align="middle" " + "allowScriptAccess="sameDomain" " + "type="application/x-shockwave-flash" " + "pluginspage="" + this.protocol() + "://www.macromedia.com/go/getflashplayer" />" + "</object>";
  216. }
  217. objectHTML = "<div id="" + this.id + "Container" style="" + containerStyle + ""> " + objectHTML + "</div>";
  218. document.writeln(objectHTML);
  219. }, get:function () {
  220. return document.getElementById(this.id);
  221. }, setVisible:function (visible) {
  222. var container = dojo.byId(this.id + "Container");
  223. if (visible == true) {
  224. container.style.visibility = "visible";
  225. } else {
  226. container.style.position = "absolute";
  227. container.style.x = "-1000px";
  228. container.style.y = "-1000px";
  229. container.style.visibility = "hidden";
  230. }
  231. }, center:function () {
  232. var elementWidth = this.width;
  233. var elementHeight = this.height;
  234. var scroll_offset = dojo.html.getScroll().offset;
  235. var viewport_size = dojo.html.getViewport();
  236. var x = scroll_offset.x + (viewport_size.width - elementWidth) / 2;
  237. var y = scroll_offset.y + (viewport_size.height - elementHeight) / 2;
  238. var container = dojo.byId(this.id + "Container");
  239. container.style.top = y + "px";
  240. container.style.left = x + "px";
  241. }};
  242. dojo.flash.Communicator = function () {
  243. if (dojo.flash.useFlash6()) {
  244. this._writeFlash6();
  245. } else {
  246. if (dojo.flash.useFlash8()) {
  247. this._writeFlash8();
  248. }
  249. }
  250. };
  251. dojo.flash.Communicator.prototype = {_writeFlash6:function () {
  252. var id = dojo.flash.obj.id;
  253. document.writeln("<script language="JavaScript">");
  254. document.writeln("  function " + id + "_DoFSCommand(command, args){ ");
  255. document.writeln(" dojo.flash.comm._handleFSCommand(command, args); ");
  256. document.writeln("}");
  257. document.writeln("</script>");
  258. if (dojo.render.html.ie) {
  259. document.writeln("<SCRIPT LANGUAGE=VBScript> ");
  260. document.writeln("on error resume next ");
  261. document.writeln("Sub " + id + "_FSCommand(ByVal command, ByVal args)");
  262. document.writeln(" call " + id + "_DoFSCommand(command, args)");
  263. document.writeln("end sub");
  264. document.writeln("</SCRIPT> ");
  265. }
  266. }, _writeFlash8:function () {
  267. }, _handleFSCommand:function (command, args) {
  268. if (command != null && !dojo.lang.isUndefined(command) && /^FSCommand:(.*)/.test(command) == true) {
  269. command = command.match(/^FSCommand:(.*)/)[1];
  270. }
  271. if (command == "addCallback") {
  272. this._fscommandAddCallback(command, args);
  273. } else {
  274. if (command == "call") {
  275. this._fscommandCall(command, args);
  276. } else {
  277. if (command == "fscommandReady") {
  278. this._fscommandReady();
  279. }
  280. }
  281. }
  282. }, _fscommandAddCallback:function (command, args) {
  283. var functionName = args;
  284. var callFunc = function () {
  285. return dojo.flash.comm._call(functionName, arguments);
  286. };
  287. dojo.flash.comm[functionName] = callFunc;
  288. dojo.flash.obj.get().SetVariable("_succeeded", true);
  289. }, _fscommandCall:function (command, args) {
  290. var plugin = dojo.flash.obj.get();
  291. var functionName = args;
  292. var numArgs = parseInt(plugin.GetVariable("_numArgs"));
  293. var flashArgs = new Array();
  294. for (var i = 0; i < numArgs; i++) {
  295. var currentArg = plugin.GetVariable("_" + i);
  296. flashArgs.push(currentArg);
  297. }
  298. var runMe;
  299. if (functionName.indexOf(".") == -1) {
  300. runMe = window[functionName];
  301. } else {
  302. runMe = eval(functionName);
  303. }
  304. var results = null;
  305. if (!dojo.lang.isUndefined(runMe) && runMe != null) {
  306. results = runMe.apply(null, flashArgs);
  307. }
  308. plugin.SetVariable("_returnResult", results);
  309. }, _fscommandReady:function () {
  310. var plugin = dojo.flash.obj.get();
  311. plugin.SetVariable("fscommandReady", "true");
  312. }, _call:function (functionName, args) {
  313. var plugin = dojo.flash.obj.get();
  314. plugin.SetVariable("_functionName", functionName);
  315. plugin.SetVariable("_numArgs", args.length);
  316. for (var i = 0; i < args.length; i++) {
  317. var value = args[i];
  318. value = value.replace(//g, "\0");
  319. plugin.SetVariable("_" + i, value);
  320. }
  321. plugin.TCallLabel("/_flashRunner", "execute");
  322. var results = plugin.GetVariable("_returnResult");
  323. results = results.replace(/\0/g, "x00");
  324. return results;
  325. }, _addExternalInterfaceCallback:function (methodName) {
  326. var wrapperCall = function () {
  327. var methodArgs = new Array(arguments.length);
  328. for (var i = 0; i < arguments.length; i++) {
  329. methodArgs[i] = arguments[i];
  330. }
  331. return dojo.flash.comm._execFlash(methodName, methodArgs);
  332. };
  333. dojo.flash.comm[methodName] = wrapperCall;
  334. }, _encodeData:function (data) {
  335. var entityRE = /&([^;]*);/g;
  336. data = data.replace(entityRE, "&amp;$1;");
  337. data = data.replace(/</g, "&lt;");
  338. data = data.replace(/>/g, "&gt;");
  339. data = data.replace("\", "&custom_backslash;&custom_backslash;");
  340. data = data.replace(/n/g, "\n");
  341. data = data.replace(/r/g, "\r");
  342. data = data.replace(/f/g, "\f");
  343. data = data.replace(//g, "\0");
  344. data = data.replace(/'/g, "\'");
  345. data = data.replace(/"/g, "\"");
  346. return data;
  347. }, _decodeData:function (data) {
  348. if (data == null || typeof data == "undefined") {
  349. return data;
  350. }
  351. data = data.replace(/&custom_lt;/g, "<");
  352. data = data.replace(/&custom_gt;/g, ">");
  353. data = eval(""" + data + """);
  354. return data;
  355. }, _chunkArgumentData:function (value, argIndex) {
  356. var plugin = dojo.flash.obj.get();
  357. var numSegments = Math.ceil(value.length / 1024);
  358. for (var i = 0; i < numSegments; i++) {
  359. var startCut = i * 1024;
  360. var endCut = i * 1024 + 1024;
  361. if (i == (numSegments - 1)) {
  362. endCut = i * 1024 + value.length;
  363. }
  364. var piece = value.substring(startCut, endCut);
  365. piece = this._encodeData(piece);
  366. plugin.CallFunction("<invoke name="chunkArgumentData" " + "returntype="javascript">" + "<arguments>" + "<string>" + piece + "</string>" + "<number>" + argIndex + "</number>" + "</arguments>" + "</invoke>");
  367. }
  368. }, _chunkReturnData:function () {
  369. var plugin = dojo.flash.obj.get();
  370. var numSegments = plugin.getReturnLength();
  371. var resultsArray = new Array();
  372. for (var i = 0; i < numSegments; i++) {
  373. var piece = plugin.CallFunction("<invoke name="chunkReturnData" " + "returntype="javascript">" + "<arguments>" + "<number>" + i + "</number>" + "</arguments>" + "</invoke>");
  374. if (piece == """" || piece == "''") {
  375. piece = "";
  376. } else {
  377. piece = piece.substring(1, piece.length - 1);
  378. }
  379. resultsArray.push(piece);
  380. }
  381. var results = resultsArray.join("");
  382. return results;
  383. }, _execFlash:function (methodName, methodArgs) {
  384. var plugin = dojo.flash.obj.get();
  385. plugin.startExec();
  386. plugin.setNumberArguments(methodArgs.length);
  387. for (var i = 0; i < methodArgs.length; i++) {
  388. this._chunkArgumentData(methodArgs[i], i);
  389. }
  390. plugin.exec(methodName);
  391. var results = this._chunkReturnData();
  392. results = this._decodeData(results);
  393. plugin.endExec();
  394. return results;
  395. }};
  396. dojo.flash.Install = function () {
  397. };
  398. dojo.flash.Install.prototype = {needed:function () {
  399. if (dojo.flash.info.capable == false) {
  400. return true;
  401. }
  402. if (dojo.render.os.mac == true && !dojo.flash.info.isVersionOrAbove(8, 0, 0)) {
  403. return true;
  404. }
  405. if (!dojo.flash.info.isVersionOrAbove(6, 0, 0)) {
  406. return true;
  407. }
  408. return false;
  409. }, install:function () {
  410. dojo.flash.info.installing = true;
  411. dojo.flash.installing();
  412. if (dojo.flash.info.capable == false) {
  413. var installObj = new dojo.flash.Embed(false);
  414. installObj.write(8);
  415. } else {
  416. if (dojo.flash.info.isVersionOrAbove(6, 0, 65)) {
  417. var installObj = new dojo.flash.Embed(false);
  418. installObj.write(8, true);
  419. installObj.setVisible(true);
  420. installObj.center();
  421. } else {
  422. alert("This content requires a more recent version of the Macromedia " + " Flash Player.");
  423. window.location.href = +dojo.flash.Embed.protocol() + "://www.macromedia.com/go/getflashplayer";
  424. }
  425. }
  426. }, _onInstallStatus:function (msg) {
  427. if (msg == "Download.Complete") {
  428. dojo.flash._initialize();
  429. } else {
  430. if (msg == "Download.Cancelled") {
  431. alert("This content requires a more recent version of the Macromedia " + " Flash Player.");
  432. window.location.href = dojo.flash.Embed.protocol() + "://www.macromedia.com/go/getflashplayer";
  433. } else {
  434. if (msg == "Download.Failed") {
  435. 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.");
  436. }
  437. }
  438. }
  439. }};
  440. dojo.flash.info = new dojo.flash.Info();