﻿/*
 * FlashWriter Control
 */
var FlashDetect = new function() {
	var self = this;

	self.installed = false;
	self.raw = "";
	self.major = -1;
	self.minor = -1;
	self.revision = -1;
	self.revisionStr = "";

	var activeXDetectRules = [
		{
			"name": "ShockwaveFlash.ShockwaveFlash.7",
			"version": function(obj) {
				return getActiveXVersion(obj);
			}
		},
		{
			"name": "ShockwaveFlash.ShockwaveFlash.6",
			"version": function(obj) {
				var version = "6,0,21";
				try {
					obj.AllowScriptAccess = "always";
					version = getActiveXVersion(obj);
				} catch (err) { }
				return version;
			}
		},
		{
			"name": "ShockwaveFlash.ShockwaveFlash",
			"version": function(obj) {
				return getActiveXVersion(obj);
			}
		}
	];

	var getActiveXVersion = function(activeXObj) {
		var version = -1;

		try {
			version = activeXObj.GetVariable("$version");
		} catch (err) { }

		return version;
	};

	var getActiveXObject = function(name) {
		var obj = -1;

		try {
			obj = new ActiveXObject(name);
		} catch (err) { }

		return obj;
	};

	var parseActiveXVersion = function(str) {
		var versionArray = str.split(",");
		return {
			"raw": str,
			"major": parseInt(versionArray[0].split(" ")[1], 10),
			"minor": parseInt(versionArray[1], 10),
			"revision": parseInt(versionArray[2], 10),
			"revisionStr": versionArray[2]
		};
	};

	var parseStandardVersion = function(str) {
		var descParts = str.split(/ +/);
		var majorMinor = descParts[2].split(/\./);
		var revisionStr = descParts[3];
		return {
			"raw": str,
			"major": parseInt(majorMinor[0], 10),
			"minor": parseInt(majorMinor[1], 10),
			"revisionStr": revisionStr,
			"revision": parseRevisionStrToInt(revisionStr)
		};
	};

	var parseRevisionStrToInt = function(str) {
		return parseInt(str.replace(/[a-zA-Z]/g, ""), 10) || self.revision;
	};

	self.majorAtLeast = function(version) {
		return self.major >= version;
	};

	self.FlashDetect = function() {
		if (navigator.plugins && navigator.plugins.length > 0) {
			var type = 'application/x-shockwave-flash';
			var mimeTypes = navigator.mimeTypes;
			if (mimeTypes && mimeTypes[type] && mimeTypes[type].enabledPlugin && mimeTypes[type].enabledPlugin.description) {
				var version = mimeTypes[type].enabledPlugin.description;
				var versionObj = parseStandardVersion(version);
				self.raw = versionObj.raw;
				self.major = versionObj.major;
				self.minor = versionObj.minor;
				self.revisionStr = versionObj.revisionStr;
				self.revision = versionObj.revision;
				self.installed = true;
			}
		} else if (navigator.appVersion.indexOf("Mac") == -1 && window.execScript) {
			var version = -1;
			for (var i = 0; i < activeXDetectRules.length && version == -1; i++) {
				var obj = getActiveXObject(activeXDetectRules[i].name);
				if (typeof obj == "object") {
					self.installed = true;
					version = activeXDetectRules[i].version(obj);
					if (version != -1) {
						var versionObj = parseActiveXVersion(version);
						self.raw = versionObj.raw;
						self.major = versionObj.major;
						self.minor = versionObj.minor;
						self.revision = versionObj.revision;
						self.revisionStr = versionObj.revisionStr;
					}
				}
			}
		}
	} ();
};

function writeFlash(flashSrc, width, height) {
	document.write('<object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" wmode="transparent" width="' + width + '" height="' + height + '">');
	document.write('<param name="movie" value="' + flashSrc + '" />');
	document.write('<param name="wmode" value="transparent" />');
	document.write('<embed src="' + flashSrc + '" width="' + width + '" height="' + height + '" menu="false" quality="high" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" wmode="transparent" />');
	document.write('</embed></object>');
}

function writeImage(imageHref, imageSrc, imageName, width, height) {
	document.write('<a href="' + imageHref + '"><img src="' + imageSrc + '" height="' + height + '" width="' + width + '" alt="' + imageName + '" /></a>');
}

function writeFlashWithImage(flashSrc, width, height, imageHref, imageSrc, imageWidth, imageHeight, imageName, bgcolor) {
	if (FlashDetect.installed) {
		writeFlash(flashSrc, width, height);
	} else {
		writeImage(imageHref, imageSrc, imageName, imageWidth, imageHeight);
	}
}

