// this is where we write out the VBScript for MSIE Windows

var plugin_startTagFix = '</';
var plugin_typeArray;

plugin_populateKnownTypes();

function plugin_populateKnownTypes(){
	plugin_typeArray = new Array();
	plugin_typeArray[plugin_typeArray.length] = new plugin_pluginType_obj('Flash 6', 'swf', 'application/x-shockwave-flash','ShockwaveFlash.ShockwaveFlash.6')
	plugin_typeArray[plugin_typeArray.length] = new plugin_pluginType_obj('Flash 5', 'swf', 'application/x-shockwave-flash','ShockwaveFlash.ShockwaveFlash.5')
	plugin_typeArray[plugin_typeArray.length] = new plugin_pluginType_obj('Flash 4', 'swf', 'application/x-shockwave-flash','ShockwaveFlash.ShockwaveFlash.4')
	plugin_typeArray[plugin_typeArray.length] = new plugin_pluginType_obj('Flash 3', 'swf', 'application/x-shockwave-flash','ShockwaveFlash.ShockwaveFlash.3')
}

function plugin_pluginType_obj(plugindescription, pluginxtension, pluginmime, activeXname){
	this.description	= plugindescription;
	this.extension		= pluginxtension;
	this.mimetype		= pluginmime;
	this.activexName	= activeXname;
}

function plugin_detectKnownTypeID(typeID, goodPage, badPage){
	if(typeID > -1 && typeID < plugin_typeArray.length){
		if(plugin_pluginDetect(plugin_typeArray[typeID].description, plugin_typeArray[typeID].extension, plugin_typeArray[typeID].mimetype, plugin_typeArray[typeID].activexName)){
			return true;
		}else{
			return false;
		}
	}else{
		return false;
	}
}

var msie_windows = 0;

if ((navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1)){
  msie_windows = 1;
  document.writeln('<script language="VBscript">');
  document.writeln('\'This will scan for plugins for all versions of Internet Explorer that have a VBscript engine version 2 or greater.');
  document.writeln('\'This includes all versions of IE4 and beyond and some versions of IE 3.');
  document.writeln('Dim plugin_detect_through_vb');
  document.writeln('plugin_detect_through_vb = 0');
  document.writeln('If ScriptEngineMajorVersion >= 2 then');
  document.writeln('  plugin_detect_through_vb = 1');
  document.writeln('End If');
  document.writeln('Function plugin_activeXDetect(activeXname)');
  document.writeln('  on error resume next');
  document.writeln('  If ScriptEngineMajorVersion >= 2 then');
  document.writeln('     plugin_activeXDetect = False');
  document.writeln('     plugin_activeXDetect = IsObject(CreateObject(activeXname))');
  document.writeln('     If (err) then');
  document.writeln('        plugin_activeXDetect = False');
  document.writeln('     End If');
  document.writeln('   Else');
  document.writeln('     plugin_activeXDetect = False');
  document.writeln('   End If');
  document.writeln('End Function');
  document.writeln(plugin_startTagFix+'script>');
}



function plugin_pluginDetect(plugindescription, pluginxtension, pluginmime, activeXname){

  // First define some variables
  var i,plugin_undetectable=0,detected=0, daPlugin=new Object();

  if (msie_windows && plugin_detect_through_vb){
      plugin_undetectable = 0;
  } else {
      plugin_undetectable = 1;
  }

  if(navigator.plugins) {
      numPlugins = navigator.plugins.length;
      if (numPlugins > 1) {
	  if (navigator.mimeTypes && navigator.mimeTypes[pluginmime] && navigator.mimeTypes[pluginmime].enabledPlugin && (navigator.mimeTypes[pluginmime].suffixes.indexOf(pluginxtension) != -1)) { // seems like we have it, let's just make sure and check the version (if specified)
	      if ((navigator.appName == 'Netscape') && (navigator.appVersion.indexOf('4.0') != -1)) { // stupid, stupid Netscape can't handle the references to navigator.plugins by number, sooo...
		  for(i in navigator.plugins) {
		      if ((navigator.plugins[i].description.indexOf(plugindescription) != -1) || (i.indexOf(plugindescription) != -1)) { // some versions of quicktime have no description. feh!
			  detected=1;
			  break;
		      }
		  }
	      } else {
		  for (i = 0; i < numPlugins; i++) {
		      daPlugin = navigator.plugins[i];
		      if ((daPlugin.description.indexOf(plugindescription) != -1) || (daPlugin.name.indexOf(plugindescription) != -1)) {
			  detected=1;
			  break;
		      }
		  }
	      }
	      if (navigator.mimeTypes[pluginmime] == null) {
			  detected = 0;
	      }
	  }
	  return detected;
      } else if((msie_windows == 1) && !plugin_undetectable){
	  return plugin_activeXDetect(activeXname);
      } else { 		
	  return 0;
      }
  } else {
      return 0;
  }
}

