alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Struts example source code file (flash.js)

This example Struts source code file (flash.js) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Struts tags/keywords

array, array, container, flash, flash, function, macromedia, mmredirecturl, player, player, shockwave, shockwave, this, vbgetswfver

The Struts flash.js source code

/*
	Copyright (c) 2004-2006, The Dojo Foundation
	All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/



dojo.provide("dojo.flash");
dojo.require("dojo.string.*");
dojo.require("dojo.uri.*");
dojo.require("dojo.html.common");
dojo.flash = function () {
};
dojo.flash = {flash6_version:null, flash8_version:null, ready:false, _visible:true, _loadedListeners:new Array(), _installingListeners:new Array(), setSwf:function (fileInfo) {
	if (fileInfo == null || dojo.lang.isUndefined(fileInfo)) {
		return;
	}
	if (fileInfo.flash6 != null && !dojo.lang.isUndefined(fileInfo.flash6)) {
		this.flash6_version = fileInfo.flash6;
	}
	if (fileInfo.flash8 != null && !dojo.lang.isUndefined(fileInfo.flash8)) {
		this.flash8_version = fileInfo.flash8;
	}
	if (!dojo.lang.isUndefined(fileInfo.visible)) {
		this._visible = fileInfo.visible;
	}
	this._initialize();
}, useFlash6:function () {
	if (this.flash6_version == null) {
		return false;
	} else {
		if (this.flash6_version != null && dojo.flash.info.commVersion == 6) {
			return true;
		} else {
			return false;
		}
	}
}, useFlash8:function () {
	if (this.flash8_version == null) {
		return false;
	} else {
		if (this.flash8_version != null && dojo.flash.info.commVersion == 8) {
			return true;
		} else {
			return false;
		}
	}
}, addLoadedListener:function (listener) {
	this._loadedListeners.push(listener);
}, addInstallingListener:function (listener) {
	this._installingListeners.push(listener);
}, loaded:function () {
	dojo.flash.ready = true;
	if (dojo.flash._loadedListeners.length > 0) {
		for (var i = 0; i < dojo.flash._loadedListeners.length; i++) {
			dojo.flash._loadedListeners[i].call(null);
		}
	}
}, installing:function () {
	if (dojo.flash._installingListeners.length > 0) {
		for (var i = 0; i < dojo.flash._installingListeners.length; i++) {
			dojo.flash._installingListeners[i].call(null);
		}
	}
}, _initialize:function () {
	var installer = new dojo.flash.Install();
	dojo.flash.installer = installer;
	if (installer.needed() == true) {
		installer.install();
	} else {
		dojo.flash.obj = new dojo.flash.Embed(this._visible);
		dojo.flash.obj.write(dojo.flash.info.commVersion);
		dojo.flash.comm = new dojo.flash.Communicator();
	}
}};
dojo.flash.Info = function () {
	if (dojo.render.html.ie) {
		document.writeln("<script language=\"VBScript\" type=\"text/vbscript\">");
		document.writeln("Function VBGetSwfVer(i)");
		document.writeln("  on error resume next");
		document.writeln("  Dim swControl, swVersion");
		document.writeln("  swVersion = 0");
		document.writeln("  set swControl = CreateObject(\"ShockwaveFlash.ShockwaveFlash.\" + CStr(i))");
		document.writeln("  if (IsObject(swControl)) then");
		document.writeln("	swVersion = swControl.GetVariable(\"$version\")");
		document.writeln("  end if");
		document.writeln("  VBGetSwfVer = swVersion");
		document.writeln("End Function");
		document.writeln("</script>");
	}
	this._detectVersion();
	this._detectCommunicationVersion();
};
dojo.flash.Info.prototype = {version:-1, versionMajor:-1, versionMinor:-1, versionRevision:-1, capable:false, commVersion:6, installing:false, isVersionOrAbove:function (reqMajorVer, reqMinorVer, reqVer) {
	reqVer = parseFloat("." + reqVer);
	if (this.versionMajor >= reqMajorVer && this.versionMinor >= reqMinorVer && this.versionRevision >= reqVer) {
		return true;
	} else {
		return false;
	}
}, _detectVersion:function () {
	var versionStr;
	for (var testVersion = 25; testVersion > 0; testVersion--) {
		if (dojo.render.html.ie) {
			versionStr = VBGetSwfVer(testVersion);
		} else {
			versionStr = this._JSFlashInfo(testVersion);
		}
		if (versionStr == -1) {
			this.capable = false;
			return;
		} else {
			if (versionStr != 0) {
				var versionArray;
				if (dojo.render.html.ie) {
					var tempArray = versionStr.split(" ");
					var tempString = tempArray[1];
					versionArray = tempString.split(",");
				} else {
					versionArray = versionStr.split(".");
				}
				this.versionMajor = versionArray[0];
				this.versionMinor = versionArray[1];
				this.versionRevision = versionArray[2];
				var versionString = this.versionMajor + "." + this.versionRevision;
				this.version = parseFloat(versionString);
				this.capable = true;
				break;
			}
		}
	}
}, _JSFlashInfo:function (testVersion) {
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			if (descArray[3] != "") {
				var tempArrayMinor = descArray[3].split("r");
			} else {
				var tempArrayMinor = descArray[4].split("r");
			}
			var versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
			var version = versionMajor + "." + versionMinor + "." + versionRevision;
			return version;
		}
	}
	return -1;
}, _detectCommunicationVersion:function () {
	if (this.capable == false) {
		this.commVersion = null;
		return;
	}
	if (typeof djConfig["forceFlashComm"] != "undefined" && typeof djConfig["forceFlashComm"] != null) {
		this.commVersion = djConfig["forceFlashComm"];
		return;
	}
	if (dojo.render.html.safari == true || dojo.render.html.opera == true) {
		this.commVersion = 8;
	} else {
		this.commVersion = 6;
	}
}};
dojo.flash.Embed = function (visible) {
	this._visible = visible;
};
dojo.flash.Embed.prototype = {width:215, height:138, id:"flashObject", _visible:true, protocol:function () {
	switch (window.location.protocol) {
	  case "https:":
		return "https";
		break;
	  default:
		return "http";
		break;
	}
}, write:function (flashVer, doExpressInstall) {
	if (dojo.lang.isUndefined(doExpressInstall)) {
		doExpressInstall = false;
	}
	var containerStyle = new dojo.string.Builder();
	containerStyle.append("width: " + this.width + "px; ");
	containerStyle.append("height: " + this.height + "px; ");
	if (this._visible == false) {
		containerStyle.append("position: absolute; ");
		containerStyle.append("z-index: 10000; ");
		containerStyle.append("top: -1000px; ");
		containerStyle.append("left: -1000px; ");
	}
	containerStyle = containerStyle.toString();
	var objectHTML;
	var swfloc;
	if (flashVer == 6) {
		swfloc = dojo.flash.flash6_version;
		var dojoPath = djConfig.baseRelativePath;
		swfloc = swfloc + "?baseRelativePath=" + escape(dojoPath);
		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\">";
	} else {
		swfloc = dojo.flash.flash8_version;
		var swflocObject = swfloc;
		var swflocEmbed = swfloc;
		var dojoPath = djConfig.baseRelativePath;
		if (doExpressInstall) {
			var redirectURL = escape(window.location);
			document.title = document.title.slice(0, 47) + " - Flash Player Installation";
			var docTitle = escape(document.title);
			swflocObject += "?MMredirectURL=" + redirectURL + "&MMplayerType=ActiveX" + "&MMdoctitle=" + docTitle + "&baseRelativePath=" + escape(dojoPath);
			swflocEmbed += "?MMredirectURL=" + redirectURL + "&MMplayerType=PlugIn" + "&baseRelativePath=" + escape(dojoPath);
		}
		if (swflocEmbed.indexOf("?") == -1) {
			swflocEmbed += "?baseRelativePath=" + escape(dojoPath) + "' ";
		}
		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\"> " + " " + " " + " " + " " + "" + "";
	}
	objectHTML = "<div id=\"" + this.id + "Container\" style=\"" + containerStyle + "\"> " + objectHTML + "
"; document.writeln(objectHTML); }, get:function () { return document.getElementById(this.id); }, setVisible:function (visible) { var container = dojo.byId(this.id + "Container"); if (visible == true) { container.style.visibility = "visible"; } else { container.style.position = "absolute"; container.style.x = "-1000px"; container.style.y = "-1000px"; container.style.visibility = "hidden"; } }, center:function () { var elementWidth = this.width; var elementHeight = this.height; var scroll_offset = dojo.html.getScroll().offset; var viewport_size = dojo.html.getViewport(); var x = scroll_offset.x + (viewport_size.width - elementWidth) / 2; var y = scroll_offset.y + (viewport_size.height - elementHeight) / 2; var container = dojo.byId(this.id + "Container"); container.style.top = y + "px"; container.style.left = x + "px"; }}; dojo.flash.Communicator = function () { if (dojo.flash.useFlash6()) { this._writeFlash6(); } else { if (dojo.flash.useFlash8()) { this._writeFlash8(); } } }; dojo.flash.Communicator.prototype = {_writeFlash6:function () { var id = dojo.flash.obj.id; document.writeln("<script language=\"JavaScript\">"); document.writeln(" function " + id + "_DoFSCommand(command, args){ "); document.writeln(" dojo.flash.comm._handleFSCommand(command, args); "); document.writeln("}"); document.writeln("</script>"); if (dojo.render.html.ie) { document.writeln("<SCRIPT LANGUAGE=VBScript> "); document.writeln("on error resume next "); document.writeln("Sub " + id + "_FSCommand(ByVal command, ByVal args)"); document.writeln(" call " + id + "_DoFSCommand(command, args)"); document.writeln("end sub"); document.writeln("</SCRIPT> "); } }, _writeFlash8:function () { }, _handleFSCommand:function (command, args) { if (command != null && !dojo.lang.isUndefined(command) && /^FSCommand:(.*)/.test(command) == true) { command = command.match(/^FSCommand:(.*)/)[1]; } if (command == "addCallback") { this._fscommandAddCallback(command, args); } else { if (command == "call") { this._fscommandCall(command, args); } else { if (command == "fscommandReady") { this._fscommandReady(); } } } }, _fscommandAddCallback:function (command, args) { var functionName = args; var callFunc = function () { return dojo.flash.comm._call(functionName, arguments); }; dojo.flash.comm[functionName] = callFunc; dojo.flash.obj.get().SetVariable("_succeeded", true); }, _fscommandCall:function (command, args) { var plugin = dojo.flash.obj.get(); var functionName = args; var numArgs = parseInt(plugin.GetVariable("_numArgs")); var flashArgs = new Array(); for (var i = 0; i < numArgs; i++) { var currentArg = plugin.GetVariable("_" + i); flashArgs.push(currentArg); } var runMe; if (functionName.indexOf(".") == -1) { runMe = window[functionName]; } else { runMe = eval(functionName); } var results = null; if (!dojo.lang.isUndefined(runMe) && runMe != null) { results = runMe.apply(null, flashArgs); } plugin.SetVariable("_returnResult", results); }, _fscommandReady:function () { var plugin = dojo.flash.obj.get(); plugin.SetVariable("fscommandReady", "true"); }, _call:function (functionName, args) { var plugin = dojo.flash.obj.get(); plugin.SetVariable("_functionName", functionName); plugin.SetVariable("_numArgs", args.length); for (var i = 0; i < args.length; i++) { var value = args[i]; value = value.replace(/\0/g, "\\0"); plugin.SetVariable("_" + i, value); } plugin.TCallLabel("/_flashRunner", "execute"); var results = plugin.GetVariable("_returnResult"); results = results.replace(/\\0/g, "\x00"); return results; }, _addExternalInterfaceCallback:function (methodName) { var wrapperCall = function () { var methodArgs = new Array(arguments.length); for (var i = 0; i < arguments.length; i++) { methodArgs[i] = arguments[i]; } return dojo.flash.comm._execFlash(methodName, methodArgs); }; dojo.flash.comm[methodName] = wrapperCall; }, _encodeData:function (data) { var entityRE = /\&([^;]*)\;/g; data = data.replace(entityRE, "&$1;"); data = data.replace(/</g, "<"); data = data.replace(/>/g, ">"); data = data.replace("\\", "&custom_backslash;&custom_backslash;"); data = data.replace(/\n/g, "\\n"); data = data.replace(/\r/g, "\\r"); data = data.replace(/\f/g, "\\f"); data = data.replace(/\0/g, "\\0"); data = data.replace(/\'/g, "\\'"); data = data.replace(/\"/g, "\\\""); return data; }, _decodeData:function (data) { if (data == null || typeof data == "undefined") { return data; } data = data.replace(/\&custom_lt\;/g, "<"); data = data.replace(/\&custom_gt\;/g, ">"); data = eval("\"" + data + "\""); return data; }, _chunkArgumentData:function (value, argIndex) { var plugin = dojo.flash.obj.get(); var numSegments = Math.ceil(value.length / 1024); for (var i = 0; i < numSegments; i++) { var startCut = i * 1024; var endCut = i * 1024 + 1024; if (i == (numSegments - 1)) { endCut = i * 1024 + value.length; } var piece = value.substring(startCut, endCut); piece = this._encodeData(piece); plugin.CallFunction("<invoke name=\"chunkArgumentData\" " + "returntype=\"javascript\">" + "" + "" + piece + "" + "" + argIndex + "" + "" + ""); } }, _chunkReturnData:function () { var plugin = dojo.flash.obj.get(); var numSegments = plugin.getReturnLength(); var resultsArray = new Array(); for (var i = 0; i < numSegments; i++) { var piece = plugin.CallFunction("<invoke name=\"chunkReturnData\" " + "returntype=\"javascript\">" + "" + "" + i + "" + "" + ""); if (piece == "\"\"" || piece == "''") { piece = ""; } else { piece = piece.substring(1, piece.length - 1); } resultsArray.push(piece); } var results = resultsArray.join(""); return results; }, _execFlash:function (methodName, methodArgs) { var plugin = dojo.flash.obj.get(); plugin.startExec(); plugin.setNumberArguments(methodArgs.length); for (var i = 0; i < methodArgs.length; i++) { this._chunkArgumentData(methodArgs[i], i); } plugin.exec(methodName); var results = this._chunkReturnData(); results = this._decodeData(results); plugin.endExec(); return results; }}; dojo.flash.Install = function () { }; dojo.flash.Install.prototype = {needed:function () { if (dojo.flash.info.capable == false) { return true; } if (dojo.render.os.mac == true && !dojo.flash.info.isVersionOrAbove(8, 0, 0)) { return true; } if (!dojo.flash.info.isVersionOrAbove(6, 0, 0)) { return true; } return false; }, install:function () { dojo.flash.info.installing = true; dojo.flash.installing(); if (dojo.flash.info.capable == false) { var installObj = new dojo.flash.Embed(false); installObj.write(8); } else { if (dojo.flash.info.isVersionOrAbove(6, 0, 65)) { var installObj = new dojo.flash.Embed(false); installObj.write(8, true); installObj.setVisible(true); installObj.center(); } else { alert("This content requires a more recent version of the Macromedia " + " Flash Player."); window.location.href = +dojo.flash.Embed.protocol() + "://www.macromedia.com/go/getflashplayer"; } } }, _onInstallStatus:function (msg) { if (msg == "Download.Complete") { dojo.flash._initialize(); } else { if (msg == "Download.Cancelled") { alert("This content requires a more recent version of the Macromedia " + " Flash Player."); window.location.href = dojo.flash.Embed.protocol() + "://www.macromedia.com/go/getflashplayer"; } else { if (msg == "Download.Failed") { 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."); } } } }}; dojo.flash.info = new dojo.flash.Info();

Other Struts examples (source code examples)

Here is a short list of links related to this Struts flash.js source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.