
//' ** browser and OS detection: **
var bName = navigator.appName;
var bVer = parseInt(navigator.appVersion);
var ua = navigator.userAgent;
var browser = "";
var os = "";

//'** set the browser variable:
if (ua.indexOf("Opera") != -1) {
	browser = "Opera";
} else if (ua.indexOf("Gecko") != -1) {
	browser = "NS6";
} else if (bName == "Netscape") {
	if (bVer == 4)
		browser = "NS4";
	else if (bVer < 4)
		browser = "NS3";
} else if (ua.indexOf("MSIE 5") != -1 || 
		   ua.indexOf("MSIE 6") != -1) { //' put IE6 here for now
	browser = "IE5";
} else if (ua.indexOf("MSIE 4") != -1) {
	browser = "IE4";
} else if (bName == "Microsoft Internet Explorer" && bVer < 4) {
	browser = "IE3";
} else {
	browser = "NS6";
}

//' set the OS variable:
if (ua.indexOf("Mac") != -1)
	os = "Mac";
else if (ua.indexOf("Win") != -1)
	os = "Win";
else
	os = "other";

/*
Plugin Detector()
Source: Webmonkey Code Library
(http://www.hotwired.com/webmonkey/javascript/code_library/)
Author: Nadav Savio (based on taylor's original scheme)
*/

// this is where we write out the VBScript for MSIE Windows
var WM_startTagFix = '</';
var msie = 0;
if (browser == "IE4" || browser == "IE5")
{
  msie = 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 WM_detect_through_vb');
  document.writeln('WM_detect_through_vb = 0');
  document.writeln('If ScriptEngineMajorVersion >= 2 then');
  document.writeln('  WM_detect_through_vb = 1');
  document.writeln('End If');
  document.writeln('Function WM_activeXDetect(activeXname)');
  document.writeln('  on error resume next');
  document.writeln('  If ScriptEngineMajorVersion >= 2 then');
  document.writeln('     WM_activeXDetect = False');
  document.writeln('     WM_activeXDetect = IsObject(CreateObject(activeXname))');
  document.writeln('     If (err) then');
  document.writeln('        WM_activeXDetect = False');
  document.writeln('     End If');
  document.writeln('   Else');
  document.writeln('     WM_activeXDetect = False');
  document.writeln('   End If');
  document.writeln('End Function');
  document.writeln(WM_startTagFix+'script>');
}

var hasFlash = hasFlashPlugin();
function hasFlashPlugin()
{
	if (os == "Mac")
		return true;
	else
		return WM_easyDetect('flash');
}

function WM_pluginDetect(plugindescription, 
                         pluginxtension, 
                         pluginmime, 
                         activeXname) {

  //This script block will test all user agents that have a real plug-in array
  //(i.e., Netscape) and set the variables, otherwise it directs the routine
  // to WM_activeXDetect to detect the activeX control.

  // First define some variables
  var i, plugin_undetectable = false, detected = false, daPlugin=new Object();

  // Then we check to see if it's an MSIE browser where you can actually
  // check for the plugin in question. 
  if ((browser == "IE4" || browser == "IE5") && WM_detect_through_vb){
      plugin_undetectable = false;
  } else {
      plugin_undetectable = true;
  }

  // If it has a real plugins or mimetypes array, 
  // we look there for the plugin first
	if(navigator.plugins) {
    	numPlugins = navigator.plugins.length;
		if (numPlugins > 1) {
          	// seems like we have it, 
        	// let's just make sure and check the version (if specified):
     		if (navigator.mimeTypes && navigator.mimeTypes[pluginmime] && 
              	navigator.mimeTypes[pluginmime].enabledPlugin && 
               (navigator.mimeTypes[pluginmime].suffixes.indexOf(pluginxtension) != -1)) {
				detected = true;
	         // Mac weirdness:
    	      if (navigator.mimeTypes[pluginmime] == null) {
        	  	detected = false;
          	}
      	}
			return detected;
		} else if((browser == "IE4" || browser == "IE5") && !plugin_undetectable){
   		return WM_activeXDetect(activeXname);
    	} else {
     		return false;
     	}
  	} else {
		return false;
  	}
}

// This function just makes it easy to do basic plug-in detection without
//  knowing all the mimetypes and activeX names and such
function WM_easyDetect(whichPlugin) {
var isItThere = 0;
if ((whichPlugin == 'flash') || (whichPlugin == 'Flash')) {
  isItThere = WM_pluginDetect('Flash',
                              'swf',
                              'application/x-shockwave-flash',
                              'ShockwaveFlash.ShockwaveFlash');
} else if ((whichPlugin == 'director') || (whichPlugin == 'Director')) {
  isItThere = WM_pluginDetect('Shockwave', 
                              'dcr',
                              'application/x-director',
                              'SWCtl.SWCtl.1');
} else if ((whichPlugin == 'quicktime') || (whichPlugin == 'Quicktime') 
                                        || (whichPlugin == 'QuickTime')) {
  isItThere = WM_pluginDetect('QuickTime',
  							  'mov',
  					          'video/quicktime',
  							  'QuickTimeCheckObject.QuickTimeCheck.1');
} else if ((whichPlugin == 'realaudio') || (whichPlugin == 'Realaudio') 
                                        || (whichPlugin == 'RealAudio')) {
  isItThere = (WM_pluginDetect('RealPlayer',
                               'rpm',
                               'audio/x-pn-realaudio-plugin',
                               'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)')) 
              || (WM_pluginDetect('RealPlayer',
                                  'rpm', 
                                  'audio/x-pn-realaudio-plugin',
                                  'rmocx.RealPlayer G2 Control')) 
              || (WM_pluginDetect('RealPlayer',
                                  'rpm',
                                  'audio/x-pn-realaudio-plugin',
                                  'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)')) 
              || (WM_pluginDetect('RealPlayer',
                                  'rpm',
                                  'audio/x-pn-realaudio-plugin',
                                  'RealVideo.RealVideo(tm) ActiveX Control (32-bit)'))
} else if ((whichPlugin == 'pdf') || (whichPlugin == 'PDF')) {
  isItThere = (WM_pluginDetect('Adobe Acrobat Document',
                               'pdf',
                               'application/pdf',
                               'AcroExch.Document')) 
              || (WM_pluginDetect('Adobe Acrobat Document', 
                                  'pdf', 
                                  'application/pdf', 
                                  'PDF.PdfCtrl.1'))
} else {
  alert('You need to tell me which plug-in to look for, like so:\n\n' 
        + '          WM_easyDetect(\'flash\')\n\n' 
        + '          WM_easyDetect(\'director\')\n\n' 
        + '          WM_easyDetect(\'quicktime\')\n\n' 
		+ '          WM_easyDetect(\'pdf\')\n\n' 
        + '          WM_easyDetect(\'realaudio\')');
}
  return isItThere;
}
