FlashWriter = function(source, alternateImageSource, width, height, requiredVersion)
{
	this.alternateImageSource = alternateImageSource;
	this.flashPage = "flash.html";
	this.height = height ? parseInt(height) : 0;
	this.noFlashPage = "noflash.html";
	this.requiredVersion = requiredVersion ? parseInt(requiredVersion) : 5;
	this.source = source;
	this.upgradePage = "upgrade.html";
	this.useRedirect = false;
	this.width = width ? parseInt(width) : 0;
}


FlashWriter.currentVersion = 0;
FlashWriter.flash2Installed = false;
FlashWriter.flash3Installed = false;
FlashWriter.flash4Installed = false;
FlashWriter.flash5Installed = false;
FlashWriter.flash6Installed = false;
FlashWriter.flash7Installed = false;
FlashWriter.flash8Installed = false;
FlashWriter.flash9Installed = false;
FlashWriter.maxVersion = 9;
FlashWriter.minVersion = 2;


FlashWriter.init = function(detect)
{
	if (detect && detect == true)
	{
		if (navigator.plugins)
		{
			var versionDescription = "";
			var versionKey = "Shockwave Flash";

			// append to key if version 2.0
			if (navigator.plugins["Shockwave Flash 2.0"])
			{
				versionKey += " 2.0";
			}
			
			if (navigator.plugins[versionKey])
			{
				var versionDescription = navigator.plugins[versionKey].description;
				var versionNumber = parseInt(versionDescription.substring(16));
				
				for (var i = FlashWriter.minVersion; i <= FlashWriter.maxVersion; i++)
				{
					eval("FlashWriter.flash" + i + "Installed = versionNumber == " + i);
				}
			}
		}
			
		// loop through checked versions to get highest detected version
		for (var i = FlashWriter.minVersion; i <= FlashWriter.maxVersion; i++)
		{
			if (eval("FlashWriter.flash" + i + "Installed") == true)
			{
				FlashWriter.currentVersion = i;
			}
		}

		// If we're on msntv (formerly webtv), the version supported is 4
		if (navigator.userAgent.indexOf("WebTV") != -1)
		{
			FlashWriter.currentVersion = 4;
		}
	}
	else
	{
		if (navigator.appVersion.indexOf("MSIE") >= 0 && navigator.appVersion.toLowerCase().indexOf("win") >= 0) FlashWriter.initVB();
		else FlashWriter.init(true);
	}
}


FlashWriter.initVB = function()
{
	document.write("<scr" + "ipt type=\"text/vbscript\">");
	document.write("\n\tOn Error Resume Next");
	
	for (var i = FlashWriter.minVersion; i <= FlashWriter.maxVersion; i++)
	{
		document.write("\n\tFlashWriter.flash" + i + "Installed = (IsObject(CreateObject(\"ShockwaveFlash.ShockwaveFlash." + i + "\")))");
	}
	
	document.write("\n\tFlashWriter.init(true)");
	document.write("\n</scr" + "ipt>");
}


FlashWriter.prototype.writeObject = function()
{
	var correctVersion = FlashWriter.currentVersion >= this.requiredVersion;
	
	if (correctVersion == false && this.useRedirect)
	{
		window.location.href = this.upgradePage;
	}
	else
	{
		var obj = "";

		obj += "<object" + (document.all ? " classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=" + this.requiredVersion + ",0,0,0\"" : " data=\"" + this.source + "\" type=\"application/x-shockwave-flash\"") + " width=\"" + this.width + "\" height=\"" + this.height + "\">";
		obj += "<param name=\"movie\" value=\"" + this.source + "\" />";
		obj += "<param name=\"quality\" value=\"high\" />";
		obj += "<param name=\"wmode\" value=\"transparent\" />";
		obj += "<img alt=\"\" src=\"" + this.alternateImageSource + "\" width=\"" + this.width + "\" height=\"" + this.height + "\" />";
		obj += "</object>";
		
		document.write(obj);
	}
}


// setup complete, initialize detection
FlashWriter.init();