function defined(variable)
{
	return (variable != null && variable != undefined);
}
function FlashConfiguration() {
	this._hasFlash;
	this._flashVersion;
	this._hasWindowsMedia; 
	this._windowsMediaSupport;
	this._bandwith;
}

// Flash detection
FlashConfiguration.prototype.hasFlash = function() {
	if(!defined(this._hasFlash))
		this._detectFlash();
	return this._hasFlash;
};

FlashConfiguration.prototype.getFlashVersion = function() {
	if(!defined(this._flashVersion))
		this._detectFlash();
	return this._flashVersion;
};

FlashConfiguration.prototype.hasMinFlashVersion = function(minVersion) {
	if(!defined(this._flashVersion))
		this._detectFlash();
	if(this._flashVersion == -1)
		return false;
	var arrVersion = this._flashVersion.split('.');
	var arrMinVersion = minVersion.split('.');
	if (this._flashVersion == minVersion)
		return true;
	if (arrVersion.length < arrMinVersion.length)
	{
		version = this._flashVersion;
		for (var i = 0; i < arrMinVersion.length - arrVersion.length; ++i)
			version += '.0';
		if (version == minVersion)
			return true;
		var arrVersion = version.split('.');
	}
	for (var i = 0; i < arrMinVersion.length && i < arrVersion.length; ++i)
	{
		if (parseInt(arrVersion[i]) > parseInt(arrMinVersion[i]))
			return true;
		else if (arrVersion[i] < arrMinVersion[i])
			return false;
	}
	return false;
};

FlashConfiguration.prototype._detectFlash = function() {
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
		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];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
		flashVer = this._controlFlashVersion();
	}
	this._hasFlash = flashVer != -1;
	this._flashVersion = flashVer;
};
	
FlashConfiguration.prototype._controlFlashVersion = function() {
	var version;
	var axo;
	var e;
	
	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}
		if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version = "6.0.21.0";
				// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";
				// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");
		} catch (e) {}
	}
		if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {}
	}
		if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "3.0.18.0";
		} catch (e) {}
	}
		if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "2.0.0.11";
		} catch (e) {
			version = -1;
		}
	}
	if(version != -1) {
		version = version.replace(/,/g, '.');
		version = version.replace(/[a-zA-Z]* /, '');
	}
	return version;
};

