// checkFlash.js is developed from concepts from 
// http://www.adobe.com/products/flashplayer/download/detection_kit/
// and is used to return an array of Flash information,
//
// parameters requiredMajorVersion, requiredMinorVersion, and requiredRevision
// 	are checked to ensure the installed Flash meets the requirements
//
// returning 
//	result['sufficient'] to be a Boolean 'true' if Flash is
//    		of a sufficient Version and revision and 'false' if not
//	result['majorVersion'] being the major version
//	result['minorVersion'] being the minor version
//	result['revision'] being the revision
//  result['description'] being the string returned by the browser that has been parsed for the above

var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function checkFlash(requiredMajorVersion, requiredMinorVersion, requiredRevision)
{
	var VersionStr = -1;
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins['Shockwave Flash 2.0'] || navigator.plugins['Shockwave Flash']) {
			var swv = navigator.plugins['Shockwave Flash 2.0'] ? ' 2.0' : '';
			var flashDescription = navigator.plugins['Shockwave Flash' + swv].description;
			var descFlash = flashDescription.split(' ');
			var descMajor = descFlash[2].split('.');
			var majorVersion = descMajor[0];
			var minorVersion = descMajor[1];
			if ( descFlash[3] != '')
				descMinor = descFlash[3].split('r');
			else
				descMinor = descFlash[4].split('r');
			var revision = descMinor[1] > 0 ? descMinor[1] : 0;
			VersionStr = majorVersion + '.' + minorVersion + '.' + revision;
		}
	}
	else if ( isIE && isWin && ! isOpera) {
		try {
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
			VersionStr = axo.GetVariable("$Version");
		} catch (e) {
		}
		flashDescription = VersionStr;
	}
	var result = new Array();
	if (VersionStr == -1 ) {
		result['sufficient'] = false;
		result['description'] = 'No Flash installed';
		result['majorVersion'] = '';
		result['minorVersion'] = '';
		result['revision'] = '';
		return result;
	} else if (VersionStr != 0) {
		if(isIE && isWin && !isOpera) { // Given "WIN 2,0,0,11"
			tempArray = VersionStr.split(" "); // ["WIN", "2,0,0,11"]
			tempString = tempArray[1]; // "2,0,0,11"
			VersionArray = tempString.split(","); // ['2', '0', '0', '11']
		} else {
			VersionArray = VersionStr.split(".");
		}
		var majorVersion = result['majorVersion'] = VersionArray[0];
		var minorVersion = result['minorVersion'] = VersionArray[1];
		var revision = result['revision'] = VersionArray[2];
		// is the major.revision >= requested major.revision AND the minor Version >= requested minor
		if (majorVersion > parseFloat(requiredMajorVersion)) {
			result['sufficient'] = true;
			result['description'] = flashDescription;
			return result;
		} else if (majorVersion == parseFloat(requiredMajorVersion)) {
			if (minorVersion > parseFloat(requiredMinorVersion)) {
				result['sufficient'] = true;
				result['description'] = flashDescription;
				return result;
			} else if (minorVersion == parseFloat(requiredMinorVersion)) {
				if (revision >= parseFloat(requiredRevision)) {
					result['sufficient'] = true;
					result['description'] = flashDescription;
					return result;
				}
			}
		}
		result['sufficient'] = false;
		result['description'] = flashDescription;
		return result;
	}
}