/* Temporarily set new error handler */
var _onerror = self.onerror;
self.onerror = function () { return true; };

var FlashPlayer = {};

/* FlashPlayer properties. */
FlashPlayer.debug = false;
FlashPlayer.minVersion = 2;
FlashPlayer.maxVersion = 9;
FlashPlayer.maxInstalledVersion = 0;
FlashPlayer.installedVersions = [];

/* FlashPlayer methods. */
FlashPlayer.getVersion = function () {
	// Detect the player version (0 if not found).
	var version = 0;
	// Determine if this is WinIE.
	var isIE = (navigator.appVersion.toLowerCase().indexOf("msie") != -1) ? true : false;
	var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
	var isWinIE = isIE && isWin;
	
	if (isWinIE) {
		
		// For WinIE, use VBScript to create and check the ShockwaveFlash objects.
		// See below the FlashPlayer declaration for the inline VBS.
		if (this.debug) alert("FlashPlayer.getVersion(): is Win IE, so using VBScript");
		for (var i=this.minVersion; i<=this.maxVersion; i++) {
			if (this.installedVersions[i] == false) continue;
			version = i;
		}
		if (this.debug) alert("FlashPlayer.getVersion(): version is " + version);

	} else if (navigator.plugins) {
		
		if (this.debug) alert("FlashPlayer.getVersion(): delving into navigator.plugins");
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {

			var pluginDescription;
			var pluginElement = "Shockwave Flash";
			if (navigator.plugins["Shockwave Flash 2.0"]) pluginElement += " 2.0";
			pluginDescription = navigator.plugins[pluginElement].description;
			delete pluginElement;

			if (this.debug) alert("FlashPlayer.getVersion(): plugin description: " + pluginDescription);

			var indexB = pluginDescription.indexOf(".");
			var indexA = pluginDescription.lastIndexOf(" ", indexB) + 1;
			version = parseInt(pluginDescription.substring(indexA, indexB));
			delete pluginDescription;

			if (this.debug) alert("FlashPlayer.getVersion(): version is " + version);

			for (var i=this.minVersion; i<=this.maxVersion; i++) {
				this.installedVersions[i] = (version <= i);
			}

		} else {

			if (this.debug) alert("FlashPlayer.getVersion(): aborted delving into navigator.plugins");

		}
	} else {

		if (this.debug) alert("FlashPlayer.getVersion(): navigator.plugins undefined");

	}
	
	// Detect for MSNTV/WebTV (as of 2004.01.01)
	if (navigator.userAgent.toLowerCase().indexOf("WebTV") != -1) version = 4;
	
	// Store the installed version.
	this.maxInstalledVersion = version;

	// Return.
	return this.maxInstalledVersion;
}

/*
VBScript Detection
If browser is WinIE, write a VBS script block, and populate the 
FlashPlayer object with the appropriate version information. Then
the FlashPlayer.getVersion() method uses the variables to determine
installed versions.
*/

var isIE = (navigator.appVersion.toLowerCase().indexOf("msie") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isWinIE = isIE && isWin;

if (isWinIE) {
	
	var min = FlashPlayer.minVersion;
	var max = FlashPlayer.maxVersion;

	// Declare the variables we need to set with VBScript;
	for (var i=min; i<=max; i++) {
		eval("var f" + i + " = false;");
	}

	// Write the VBScript code.
	document.write('<scr' + 'ipt language="vbscript"\> \n');
	document.write('on error resume next \n');
	for (var i=min; i<=max; i++) {
		var vb = 'f' + i + ' = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.' + i + '")))\n';
		document.write(vb);
	}
	document.write('<\/scr' + 'ipt\> \n');
	
	// Set property values in FlashPlayer.
	for (var i=min; i<=max; i++) {
		FlashPlayer.installedVersions[i] = (eval("f" + i) == true);
		eval("delete f" + i + ";");
	}

	// Clean up.
	delete min;
	delete max;
}

delete isIE;
delete isWin;
delete isWinIE;
/* end VB */


/* Start detection routine */
FlashPlayer.getVersion();


/* Restore old error handler */
self.onerror = _onerror;
delete _onerror;