
/*
Copyright (c) Copyright (c) 2007, Carl S. Yestrau All rights reserved.
Code licensed under the BSD License: http://www.featureblend.com/license.txt
Version: 1.0.2
*/

var FlashDetect = new function(){
var self = this;
self.installed = false;
self.major = -1;
self.minor = -1;
self.revision = -1;
self.revisionStr = "";
self.activeXVersion = "";
var activeXDetectRules = [
	{
		"name":"ShockwaveFlash.ShockwaveFlash.7",
		"version":function(obj){
			return getActiveXVersion(obj);
		}
	},
	{
		"name":"ShockwaveFlash.ShockwaveFlash.6",
		"version":function(obj){
			var version = "6,0,21";
			try{
				obj.AllowScriptAccess = "always";
				version = getActiveXVersion(obj);
			}catch(err){}
			return version;
		}
	},
	{
		"name":"ShockwaveFlash.ShockwaveFlash",
		"version":function(obj){
			return getActiveXVersion(obj);
		}
	}
];
var getActiveXVersion = function(activeXObj){
	var version = -1;
	try{
		version = activeXObj.GetVariable("$version");
	}catch(err){}
	return version;
};
var getActiveXObject = function(name){
	var obj = -1;
	try{
		obj = new ActiveXObject(name);
	}catch(err){}
	return obj;
};
var parseActiveXVersion = function(str){
	var versionArray = str.split(",");//replace with regex
	return {
		"major":parseInt(versionArray[0].split(" ")[1], 10),
		"minor":parseInt(versionArray[1], 10),
		"revision":parseInt(versionArray[2], 10),
		"revisionStr":versionArray[2]
	};
};
var parseRevisionStrToInt = function(str){
	return parseInt(str.replace(/[a-zA-Z]/g, ""), 10) || self.revision;
};
self.majorAtLeast = function(version){
	return self.major >= version;
};
self.FlashDetect = function(){
	if(navigator.plugins && navigator.plugins.length>0){
		var type = 'application/x-shockwave-flash';
		var mimeTypes = navigator.mimeTypes;
		if(mimeTypes && mimeTypes[type] && mimeTypes[type].enabledPlugin && mimeTypes[type].enabledPlugin.description){
			var desc = mimeTypes[type].enabledPlugin.description;
			var descParts = desc.split(' ');//replace with regex
			var majorMinor = descParts[2].split('.');
			self.major = parseInt(majorMinor[0], 10);
			self.minor = parseInt(majorMinor[1], 10); 
			self.revisionStr = descParts[3];
			self.revision = parseRevisionStrToInt(self.revisionStr);
			self.installed = true;
		}
	}else if(navigator.appVersion.indexOf("Mac")==-1 && window.execScript){
		var version = -1;
		for(var i=0; i<activeXDetectRules.length && version==-1; i++){
			var obj = getActiveXObject(activeXDetectRules[i].name);
			if(typeof obj == "object"){
				self.installed = true;
				version = activeXDetectRules[i].version(obj);
				if(version!=-1){
					var versionObj = parseActiveXVersion(version);
					self.major = versionObj.major;
					self.minor = versionObj.minor; 
					self.revision = versionObj.revision;
					self.revisionStr = versionObj.revisionStr;
					self.activeXVersion = version;
				}
			}
		}
	}
}();
};
FlashDetect.release = "1.0.2";