var isNav = false;
var isIE = false;
var rBrowserVersion = 0.0;
var isAOL = false;
var isMac = false;
var isWindows = false;

var isFlash = false;
var iFlashVers = 0;
var isDirector = false;
var iDirectorVers = 0;
var iDirectorMinorVers = 0;

var iScreenH = 0;
var iScreenW = 0;
var iPixelDepth = 0;


// isAOL only occassionally works. Some version of AOl do not put the
// string "AOL" in the version.
function GetBrowserInfo()
{
  iScreenH = window.screen.height;
  iScreenW = window.screen.width;
  iPixelDepth = window.screen.colorDepth;
  rBrowserVersion = parseFloat(navigator.appVersion);
  if (navigator.appName.indexOf("Netscape") != -1) {
     isNav = true;
   } else if (navigator.appName.indexOf("Microsoft") != -1) {
     isIE = true;
     if (navigator.appVersion.indexOf("MSIE 5.") != -1) rBrowserVersion = 5.0;
     if (navigator.appVersion.indexOf("MSIE 6.") != -1) rBrowserVersion = 6.0;
     if (navigator.appVersion.indexOf("MSIE 5.5") != -1) rBrowserVersion = 5.5;
   }
   if (isIE && (navigator.appVersion.indexOf("AOL") != -1)) {
     isAOL = true;
   }
   if (navigator.appVersion.indexOf("Win") != -1) {
     isWindows = true;
   }
   if (navigator.appVersion.indexOf("Mac") != -1) {
     isMac = true;
   }
  if (isIE) {
     if (isWindows) {
      PluginDetect_IE_Windows();
     } else {
       PluginDetect_IE_Macintosh();
     }
   } else if (isNav) {
     if (isWindows) {
      PluginDetect_NS_Windows();
     } else {
       PluginDetect_NS_Macintosh();
     }
   } else {
    isFlash = true;
     isDirector = true;
     iFlashVers = 7;
     iDirectorVers = 8;
   }
   szShock = getCookie( "ShockwaveOverride=" );
   if (szShock != null) {
     iVers = parseInt(szShock);
     if (iDirectorVers < iVers || isDirector == false) {
      isDirector = true;
      iDirectorVers = iVers;
     }
   }
   szFlash = getCookie( "FlashOverride=" );
   if (szFlash != null || isFlash == false) {
     iVers = parseInt(szFlash);
     if (iFlashVers < iVers) {
       isFlash = true;
       iFlashVers = iVers;
     }
   }
}

function PluginDetect_IE_Windows()
{
  document.writeln( '<script language="VBScript">' );
  document.writeln( '    Function TestActiveX(objectID)' );
  document.writeln( '            on error resume next' );
  document.writeln( '            TestActiveX = IsObject(CreateObject(objectID))' );
  document.writeln( '    End Function' );
  document.writeln( '    </script>' );
  
  if ( TestActiveX("ShockwaveFlash.ShockwaveFlash.8"))  { iFlashVers = 8; }
  else if ( TestActiveX("ShockwaveFlash.ShockwaveFlash.7"))  { iFlashVers = 7; }
  else if ( TestActiveX("ShockwaveFlash.ShockwaveFlash.6"))  { iFlashVers = 6; }
  else if ( TestActiveX("ShockwaveFlash.ShockwaveFlash.5"))  { iFlashVers = 5; }
  else if ( TestActiveX("ShockwaveFlash.ShockwaveFlash.4"))  { iFlashVers = 4; }
  else if ( TestActiveX("ShockwaveFlash.ShockwaveFlash.3"))  { iFlashVers = 3; }
  else if ( TestActiveX("ShockwaveFlash.ShockwaveFlash.1"))  { iFlashVers = 2; }
  if (iFlashVers > 0) isFlash = true;
  
  if ( TestActiveX("SWCtl.SWCtl.11"))  { iDirectorVers = 11; }
  else if ( TestActiveX("SWCtl.SWCtl.10"))  { iDirectorVers = 10; }
  else if ( TestActiveX("SWCtl.SWCtl.9"))  { iDirectorVers = 9; }
  else if ( TestActiveX("SWCtl.SWCtl.8")) {
    if (TestActiveX("SWCtl.SWCtl.8.5")) {
      iDirectorMinorVers = 5;
    }
    if (TestActiveX("SWCtl.SWCtl.8.5.1")) {
      iDirectorMinorVers = 5;
    }
    iDirectorVers = 8;
  }
  else if ( TestActiveX("SWCtl.SWCtl.7"))  { iDirectorVers = 7; }
  else if ( TestActiveX("SWCtl.SWCtl.1"))  { iDirectorVers = 6; }
  if (iDirectorVers > 0) isDirector = true;
}

function PluginDetect_IE_Macintosh()
{
  if (rBrowserVersion >= 5) {
    PluginDetect_NS_Windows();
  } else {
    isFlash = true;
    isDirector = true;
    iFlashVers = 7;
    iDirectorVers = 8;
  }
}

function PluginDetect_NS_Windows()
{
  aPlugins = navigator.plugins
  nElements = aPlugins.length
    
  for (i=0;i<nElements;i++) {
    theplugin = aPlugins[i]
    szName   = theplugin.name
    szDesc   = theplugin.description
    if (szName == "Shockwave for Director") {
      if      (szDesc.indexOf("6.") != -1) { iDirectorVers = 6 }
      else if (szDesc.indexOf("7.") != -1) { iDirectorVers = 7 }
      else if (szDesc.indexOf("7 .") != -1) { iDirectorVers = 7 }
      else if (szDesc.indexOf("8.") != -1) { iDirectorVers = 8 }
      else if (szDesc.indexOf("9.") != -1) { iDirectorVers = 9 }
      else if (szDesc.indexOf("10.") != -1) { iDirectorVers = 10 }
      else if (szDesc.indexOf("11.") != -1) { iDirectorVers = 11 }
      else if (szDesc.indexOf("5.") != -1) { iDirectorVers = 5 }
      if (szDesc.indexOf(".5") != -1) { iDirectorMinorVers = 5 }
    }
    
    if (szDesc.indexOf("Shockwave Flash 8.") != -1) { iFlashVers = 8 }
    if (szDesc.indexOf("Shockwave Flash 7.") != -1) { iFlashVers = 7 }
    if (szDesc.indexOf("Shockwave Flash 6.") != -1) { iFlashVers = 6 }
    if (szDesc.indexOf("Shockwave Flash 5.") != -1) { iFlashVers = 5 }
    if (szDesc.indexOf("Shockwave Flash 4.") != -1) { iFlashVers = 4 }
    if (szDesc.indexOf("Shockwave Flash 3.") != -1) { iFlashVers = 3 }
    if (szName.indexOf("Shockwave Flash 2.") != -1) { iFlashVers = 2 }
  }
  if (iFlashVers > 0) isFlash = true;
  if (iDirectorVers > 0) isDirector = true;
}

function PluginDetect_NS_Macintosh()
{
  // Same function detects both
  PluginDetect_NS_Windows();
}

/*
Plugin Detector()

Source: Webmonkey Code Library
(http://www.hotwired.com/webmonkey/javascript/code_library/)

Author: Nadav Savio
Author Email: webmonkey@giantant.com

*/

// this is where we write out the VBScript for MSIE Windows
var WM_startTagFix = '</';
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 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>');
}

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=0,detected=0, daPlugin=new Object();


  // Then we check to see if it's an MSIE browser that you can actually

  // check for the plugin in question. 

  if (msie_windows && WM_detect_through_vb){
      plugin_undetectable = 0;
  } else {
      plugin_undetectable = 1;
  }



  // 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) {
	  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;
		      }
		  }
	      }

	      // Mac weirdness
      if (navigator.mimeTypes[pluginmime] == null) {
		  detected = 0;
	      }
	  }
	  return detected;
      } else if((msie_windows == 1) && !plugin_undetectable){
	  return WM_activeXDetect(activeXname);
      } else { 		
	  return 0;
      }
  } else {
      return 0;
  }
}


// this next function just makes it easy to detect the common plugins

function WM_easyDetect(whichPlugin) {

    // this function just makes it easy to do basic plug-in detection without

    // knowing all the mimetypes and activeX names and such
    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', '');
    } 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 {

	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(\'realaudio\')');
    }
    return isItThere;
}

function NeedDirector(szDir)
{
  if (isDirector == false) {
    window.location = szDir + "/noshockwave.htm";
  } else if (iDirectorVers < 8) {
    window.location = szDir + "/noshockwave.htm";
  }
}

function NeedFlash(szDir)
{
  if (isFlash == false) {
    window.location = szDir + "/noflash.htm";
  } else if (iFlashVers < 6) {
    window.location = szDir + "/noflash.htm";
  }
}


