var FlashDetect = {
	version : {
		Major:0,
		Minor:0,
		Revision:0
	},
	
	isIE  : (navigator.appVersion.indexOf("MSIE") != -1) ? true : false,
	isWin : (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false,
	isOpera : (navigator.userAgent.indexOf("Opera") != -1) ? true : false,	
	
	GetSwfVer : function (){
		// NS/Opera version >= 3 check for Flash plugin in plugin array
		var flashPlugs = new Array;
		if (navigator.plugins != null && navigator.plugins.length > 0) {
			for(x=0; x< navigator.plugins.length; x++){
				if(navigator.plugins[x].name.indexOf('Shockwave Flash')>=0){
					flashPlugs.push(navigator.plugins[x]);
				}
			}

			var version = [0,0,0];
			
			for(x=0; x< flashPlugs.length; x++){
				var flashDescription = flashPlugs[x].description;
				var descArray = flashDescription.split(" ");
				var tempVersion = descArray[2].split(".");
				tempVersion.push(parseInt(descArray[descArray.length-1].substr(1,descArray[descArray.length-1].length)));
				
				var major = parseInt(tempVersion[0]);
				var minor = parseInt(tempVersion[1]);
				var revis = parseInt(tempVersion[2]);
				tempVersion = [major,minor,revis];
				
				if ((tempVersion[0]>version[0]) || (tempVersion[0]==version[0] && tempVersion[1]>version[1]) || (tempVersion[0]==version[0] && tempVersion[1]==version[1] && tempVersion[2]>version[2])){
					version = tempVersion;
				}
			}
			this.version.Major = version[0];
			this.version.Minor = version[1];
			this.version.Revision = version[2];
		}
		// 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 ( FlashDetect.isIE && FlashDetect.isWin && !FlashDetect.isOpera ) {
			flashVer = this.ControlVersion();
			if (flashVer==-1) return this.version;
			
			flashVerString = flashVer + '';
			if(flashVerString.indexOf('WIN')>=0){
				flashVer = flashVerString.substr((flashVerString.indexOf('WIN')+4) , flashVerString.length);
			}
			version = flashVer.split(',');
			this.version.Major = version[0];
			this.version.Minor = version[1];
			this.version.Revision = version[2];
		}
		return this.version;
	},
	ControlVersion : 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.9");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
		
		
		try {
			// version will be set for 7.X or greater players
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.8");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
		
		
		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 = "WIN 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 = "WIN 3,0,18,0";
			} catch (e) {
			}
		}
	
		if (!version)
		{
			try {
				// version will be set for 2.X player
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
				version = "WIN 2,0,0,11";
			} catch (e) {
				version = -1;
			}
		}
		
		return version;
	},
	DetectVersion : function (major,minor,revision){
		var compare = this.GetSwfVer();
		return ((compare.Major>major) || (compare.Major==major && compare.Minor>minor) || (compare.Major==major && compare.Minor==minor && compare.Revision>=revision));
	}
}
