var nvrml = 0;
var vrmlok = 0;
var vrmlPlugin = '';
var vrml = new Array(20);

var vrmlMime = new Array(10);
vrmlMime[1] = 'model/vrml';
vrmlMime[2] = 'x-world/x-vrml';
var nvrmlMime = 2;

var nx3d = 0;
var x3dok = 0;
var x3dPlugin = '';
var x3d = new Array(20);

var x3dMime = new Array(10);
x3dMime[1] = 'model/x3d+xml';
x3dMime[2] = 'model/x3d+vrml';
x3dMime[3] = 'model/x3d+binary';
var nx3dMime = 3;

var bold = 0;

if (navigator.plugins && navigator.plugins.length > 0) {
  var numPlugins = navigator.plugins.length;

  for (i = 0; i < numPlugins; i++) {
    var plugin = navigator.plugins[i];
    var numTypes = plugin.length;

    for (j = 0; j < numTypes; j++) {
      mimetype = plugin[j];
      if (mimetype) {
        if (mimetype.type == vrmlMime[1] ||
            mimetype.type == vrmlMime[2] ||
            mimetype.suffixes == 'wrl' ||
            mimetype.suffixes == 'wrz' ||
            mimetype.suffixes == 'vrml') {
          enabledPlugin = mimetype.enabledPlugin;
          if (enabledPlugin && (enabledPlugin.name == plugin.name)) {
            vrmlPlugin = plugin.name;
            if (!vrmlok) {vrmlok = 1;}
          }
          ok = 1;
          for (k = 1; k <= nvrml; k++) {if (plugin.name == vrml[k]) {ok = 0;}}
          if (ok) {nvrml = nvrml + 1; vrml[nvrml] = plugin.name;}
          ok = 1;
          for (m = 1; m <= nvrmlMime; m++) {if (mimetype.type == vrmlMime[m]) {ok = 0;}}
          if (ok) {nvrmlMime = nvrmlMime + 1; vrmlMime[nvrmlMime] = mimetype.type;}
        }

        if (mimetype.type.indexOf('x3d') != -1 ||
            mimetype.type.indexOf('X3D') != -1 || 
            mimetype.suffixes.indexOf('x3d') != -1 || 
            mimetype.suffixes.indexOf('x3b') != -1 || 
            mimetype.suffixes.indexOf('b3d') != -1 || 
            mimetype.suffixes.indexOf('b3z') != -1 || 
            mimetype.suffixes.indexOf('X3D') != -1) {
          enabledPlugin = mimetype.enabledPlugin;
          if (enabledPlugin && (enabledPlugin.name == plugin.name)) {
            x3dPlugin = plugin.name;
            if (!x3dok) {x3dok = 1;}
          }
          ok = 1;
          for (k = 1; k <= nx3d; k++) {if (plugin.name == x3d[k]) {ok = 0;}}
          if (ok) {nx3d = nx3d + 1; x3d[nx3d] = plugin.name;}
          ok = 1;
          for (m = 1; m <= nx3dMime; m++) {if (mimetype.type == x3dMime[m]) {ok = 0;}}
          if (ok) {nx3dMime = nx3dMime + 1; x3dMime[nx3dMime] = mimetype.type;}
        }
      }
    }
  }

} else if (navigator.appName == "Microsoft Internet Explorer") {
  if (navigator.appVersion.indexOf('Win') != -1 && parseFloat(navigator.appVersion) >= 4) {

    document.writeln('<SCRIPT LANGUAGE="VBScript">');
    document.writeln('function IEDetectObject(activeXControlName)');
    document.writeln('  On Error Resume Next');
    document.writeln('  IEDetectObject = IsObject(CreateObject(activeXControlName))');
    document.writeln('End function');
    document.writeln('</SCR' + 'IPT>');

    if (IEDetectObject('SGI.CosmoPlayer.2')) {
      nvrml = nvrml + 1; vrml[nvrml] = "Cosmo Player 2.1.1";
    } else if (IEDetectObject('SGI.CosmoPlayer.1')) {
      nvrml = nvrml + 1; vrml[nvrml] = "Cosmo Player 2.0";
    }
    if (IEDetectObject('Cortona.Control.1'))         {nvrml = nvrml + 1; vrml[nvrml] = "Cortona";}
    if (IEDetectObject('blaxxunCC3D.blaxxunCC3D.1')) {nvrml = nvrml + 1; vrml[nvrml] = "blaxxun Contact";}
    if (IEDetectObject('Owatl.OwCtl.1'))             {nvrml = nvrml + 1; vrml[nvrml] = "OpenWorlds";}
    if (IEDetectObject('bsContact.bsContact.1')) {
      nvrml = nvrml + 1; vrml[nvrml] = "BS Contact VRML";
      nx3d  = nx3d  + 1; x3d[nx3d]   = "BS Contact VRML";
    }
    if (IEDetectObject('VenuesCtrl.VenuesCtrl.1')) {
      nvrml = nvrml + 1; vrml[nvrml] = "Vcom3D Venues";
      nx3d  = nx3d  + 1; x3d[nx3d]   = "Vcom3D Venues";
    }

    if (nvrml == 0) {
      if (IEDetectObject('Nexternet.NexternetPlayer.1')) {nvrml = nvrml + 1; vrml[nvrml] = "Pivoron Player";}
      if (IEDetectObject('MSVRML2C.VRMLBrowserCtl.1'))   {nvrml = nvrml + 1; vrml[nvrml] = "Microsoft VRML Viewer";}
      if (IEDetectObject('WorldView.WorldView VrmlViewer.1')) {
        nvrml = nvrml + 1; vrml[nvrml] = "WorldView";
      } else if (IEDetectObject('WorldView.WorldView VrmlViewer.2')) {
        nvrml = nvrml + 1; vrml[nvrml] = "WorldView";
      } else if (IEDetectObject('WORLDVIEW.WorldViewCtrl.1')) {
        nvrml = nvrml + 1; vrml[nvrml] = "WorldView";
      }
    }

    if (nvrml > 0) {
      vrmlok = 1;
      if (nvrml == 1) {
        vrmlPlugin = vrml[1];
      } else {
        vrmlPlugin = 'undefined';
      }
    }
    if (nx3d > 0) {
      x3dok = 1;
      if (nx3d == 1) {
        x3dPlugin = x3d[1];
      } else {
        x3dPlugin = 'undefined';
      }
    }
  }
  bold = 1;
}

var win   = 0;
var wince = 0;
var mac   = 0;
var irix  = 0;
var unix  = 0;
if (navigator.appVersion.indexOf('Win')  != -1)      {win   = 1;}
if (navigator.appVersion.indexOf('Mac')  != -1)      {mac   = 1;}
if (navigator.appVersion.indexOf('X11')  != -1)      {unix  = 1;}
if (navigator.userAgent.indexOf('Windows CE') != -1) {wince = 1;}
if (navigator.userAgent.indexOf('Linux') != -1)      {unix  = 1;}
if (navigator.userAgent.indexOf('IRIX') != -1 && parseFloat(navigator.appVersion) < 5) {irix = 1; unix = 0;}
 
var httpBlaxxun = '<A TARGET=_blank HREF="http://www.bitmanagement.de/">';
var httpContact = '<A TARGET=_blank HREF="http://www.bitmanagement.de/">';
var httpCortona = '<A TARGET=_blank HREF="http://www.parallelgraphics.com/products/cortona/">';
var httpCosmo   = '<A TARGET=_blank HREF="http://ca.com/cosmo/home.htm">';
var httpCyber   = '<A TARGET=_blank HREF="http://www.cybergarage.org/vrml/">';
var httpFlux    = '<A TARGET=_blank HREF="http://www.mediamachines.com/">';
var httpFreeWRL = '<A TARGET=_blank HREF="http://freewrl.sourceforge.net/">';
var httpLookat  = '<A TARGET=_blank HREF="http://sourceforge.net/projects/openvrml/">';
var httpOctagon = '<A TARGET=_blank HREF="http://www.octaga.com/">';
var httpOpenWrl = '<A TARGET=_blank HREF="http://www.vcom3d.com/Viewer.htm">';
var httpVcom3d  = '<A TARGET=_blank HREF="http://www.vcom3d.com/Viewer.htm">';
var httpXj3D    = '<A TARGET=_blank HREF="http://www.xj3d.org/">';

if (mac) {
  httpCortona = '<A TARGET=_blank HREF="http://www.parallelgraphics.com/products/cortonamac/">';
} else if (irix) {
  httpCosmo   = '<A TARGET=_blank HREF="http://www.sgi.com/software/cosmo/irix_player.html">';
} else if (wince) {
  httpCortona = '<A TARGET=_blank HREF="http://www.parallelgraphics.com/products/cortonace/">';
}

var urlBlaxxun = httpBlaxxun + 'blaxxun Contact</A>';
var urlContact = httpContact + 'BS Contact VRML</A>';
var urlCortona = httpCortona + 'Cortona</A>';
var urlCosmo   = httpCosmo   + 'Cosmo Player</A>';
var urlCyber   = httpCyber   + 'CyberX3D</A>';
var urlFlux    = httpFlux    + 'Flux</A>';
var urlFreeWRL = httpFreeWRL + 'FreeWRL</A>';
var urlLookat  = httpLookat  + 'OpenVRML-Lookat</A>';
var urlOctagon = httpOctagon + 'Octagon Player</A>';
var urlVcom3d  = httpVcom3d  + 'Vcom3D Venues</A>';
var urlXj3D    = httpXj3D    + 'Xj3D</A>';
if (wince) {urlCortona = httpCortona + 'Pocket Cortona</A>';}

var blaxxun  = 0;
var contact  = 0;
var cortona  = 0;
var cosmo    = 0;
var flux     = 0;
var freewrl  = 0;
var lookat   = 0;
var octagon  = 0;
var vcom3d   = 0;

var ip = vrmlPlugin.indexOf(' from PLATINUM');
if (ip != -1) {vrmlPlugin = vrmlPlugin.substring(0,ip);}
ip = vrmlPlugin.indexOf(' Netscape - Mozilla Plugin');
if (ip != -1) {vrmlPlugin = vrmlPlugin.substring(0,ip);}
var urlHelp = "";

document.write('<P></P><P>');
if (nvrml >0) {
	document.all['player'].runtimeStyle.display="inline";
  
  for (k = 1; k <= nvrml; k++) {
    ip = vrml[k].indexOf(' from PLATINUM');
    if (ip != -1) {vrml[k] = vrml[k].substring(0,ip);}
    ip = vrml[k].indexOf(' Netscape - Mozilla Plugin');
    if (ip != -1) {vrml[k] = vrml[k].substring(0,ip);}
    
    if (vrml[k].indexOf('Cosmo') != -1) {
      cosmo = 1;
    } else if (vrml[k].indexOf('Cortona') != -1) {
      cortona = 1;
    } else if (vrml[k].indexOf('blaxxun') != -1) {
      blaxxun = 1;
    } else if (vrml[k].indexOf('BS Contact') != -1) {
      contact = 1;
    } else if (vrml[k].indexOf('FreeWRL') != -1) {
      freewrl = 1;
    } else if (vrml[k].indexOf('ookat') != -1 || vrml[k].indexOf('OpenVRML') != -1) {
      lookat  = 1;
    } else if (vrml[k].indexOf('Octagon') != -1) {
      octagon = 1;
    } else if (vrml[k].indexOf('Vcom') != -1) {
      vcom3d = 1;
    }
  }

} else {
  document.write('<IMG src=/images/exclam.gif align=absMiddle>&nbsp;<B>NO VRML Plugins available to display this content</B>');
}

if (win && !wince && !cosmo && !cortona && !contact) {
   now = new Date()
   var nows = now.getTime().toString();
   var jdx = new Array(3);
   var idx = 0;
   idx = parseInt(now.getTime().toString().substring(9,13));
   if (idx < 1666)      {jdx[0] = 0; jdx[1] = 1; jdx[2] = 2;}
   else if (idx < 3332) {jdx[0] = 0; jdx[1] = 2; jdx[2] = 1;}
   else if (idx < 4998) {jdx[0] = 1; jdx[1] = 2; jdx[2] = 0;}
   else if (idx < 6664) {jdx[0] = 1; jdx[1] = 0; jdx[2] = 2;}
   else if (idx < 8330) {jdx[0] = 2; jdx[1] = 0; jdx[2] = 1;}
   else                 {jdx[0] = 2; jdx[1] = 1; jdx[2] = 0;}

   var winplug = new Array(3);
   winplug[0] = urlCosmo; // + '  (<A HREF="./vrmlnotes.html">Install help</A>)';
   winplug[1] = urlCortona;
   winplug[2] = urlContact;

   document.write('<BR>Available VRML plugins:<BR>&nbsp;');
   for (k = 0; k < 3; k++) {
     document.write(winplug[jdx[k]]);
     if (k < 2) {document.write(',  ');}
   }
   if (navigator.appName == "Microsoft Internet Explorer") {
     document.write(',  ' + urlVcom3d);
     document.write(',  ' + urlOctagon);
     document.write(',  ' + urlFlux);
   }

} else if (unix) {
  if (!freewrl && !lookat) {
    document.write('<BR>Available VRML plugins:<BR>&nbsp; ');
    document.write(urlFreeWRL);
    document.write(',  ' + urlLookat);
    document.write(',  ' + urlXj3D);
    document.write(',  ' + urlCyber);
  }
  document.write('<BR>More information can be found at <A HREF="http://chromebob.com/vrml/">VRML4Linux</A>.');

} else if (mac) {
  if (!cortona && !freewrl) {
    document.write('<BR>Available VRML plugins:<BR>&nbsp; ');
    document.write(urlCortona);
    document.write(',  ' + urlFreeWRL);
    document.write(',  ' + urlLookat);
    document.write(',  ' + urlCosmo);
  }
  document.write('<BR>More information can be found at <A HREF="http://www.macweb3d.org/">MacWeb3D</A>.');

} else if (irix && !cosmo) {
  document.write('<BR>Available VRML plugin:<BR>&nbsp; ' + urlCosmo);

} else if (wince && !cortona) {
  document.write('<BR>Available VRML plugin:<BR>&nbsp; ' + urlCortona);
}
document.write('</P>');
