/*
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.3
*/
var FlashDetect = new function(){
var self = this;
self.installed = false;
self.raw = "";
self.major = -1;
self.minor = -1;
self.revision = -1;
self.revisionStr = "";
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 {
   "raw":str,
   "major":parseInt(versionArray[0].split(" ")[1], 10),
   "minor":parseInt(versionArray[1], 10),
   "revision":parseInt(versionArray[2], 10),
   "revisionStr":versionArray[2]
  };
};
var parseStandardVersion = function(str){
  var descParts = str.split(/ +/);
  var majorMinor = descParts[2].split(/\./);
  var revisionStr = descParts[3];
  return {
   "raw":str,
   "major":parseInt(majorMinor[0], 10),
   "minor":parseInt(majorMinor[1], 10), 
   "revisionStr":revisionStr,
   "revision":parseRevisionStrToInt(revisionStr)
  };
};
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 version = mimeTypes[type].enabledPlugin.description;
    var versionObj = parseStandardVersion(version);
    self.raw = versionObj.raw;
    self.major = versionObj.major;
    self.minor = versionObj.minor; 
    self.revisionStr = versionObj.revisionStr;
    self.revision = versionObj.revision;
    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.raw = versionObj.raw;
      self.major = versionObj.major;
      self.minor = versionObj.minor; 
      self.revision = versionObj.revision;
      self.revisionStr = versionObj.revisionStr;
     }
    }
   }
  }
}();
};
FlashDetect.release = "1.0.3";

