// start VRML browser detection

var numVrml   = 0;
var vrml      = '';
vrmls = new Array(20);

function detectaPluginVRML()
{

// detect VRML browsers in Netscape, Opera, and other browsers that use
// the navigator.plugins array

if (navigator.family !="ie4") {
  var numPlugins = navigator.plugins.length;

// loop over all plugins
  for (i = 0; i < numPlugins; i++) {
    var plugin = navigator.plugins[i];
    var numTypes = plugin.length;

// look for VRML plugins by checking mimetype for 'vrml'
    for (j = 0; j < numTypes; j++) {
      mimetype = plugin[j];
      if (mimetype) {
        if (mimetype.type == 'model/vrml' ||
	    mimetype.type == 'x-world/x-vrml' ||
	    mimetype.suffixes == 'wrl' ||
	    mimetype.suffixes == 'wrz' ||
	    mimetype.suffixes == 'vrml') {
          enabledPlugin = mimetype.enabledPlugin;
          if (enabledPlugin && (enabledPlugin.name == plugin.name)) {
	    vrml = plugin.name;
            if (!navigator.vbenabled) {navigator.vbenabled = 1;}
	  }
	  ok = 1;
	  for (k = 1; k <= numVrml; k++) {
	    if (plugin.name == vrmls[k]) {ok = 0;}
	  }
	  if (ok) {
	    numVrml = numVrml + 1; vrmls[numVrml] = plugin.name;
	  }
        }
      }
    }
  }

// *****************************************************************************
// detect VRML browsers in Microsoft Internet Explorer, only with Windows
// The main limitation is, if more than one VRML browser is installed,
// then vrml is set to 'undefined' with IE.  It isn't possible to figure
// out which one of multiple VRML browsers is being used with IE.

} else if (navigator.appName == "Microsoft Internet Explorer") {
  if (navigator.appVersion.indexOf('Win') != -1 && parseFloat(navigator.appVersion) >= 4) {

// the VBScript function chkBrowser is needed to detect objects in MSIE
    document.writeln('<SCRIPT LANGUAGE="VBScript">');
    document.writeln('function chkBrowser(id,vbname)');
    document.writeln('  dim src');
    document.writeln('  dim vb');
    document.writeln('  vb = ""');
    document.writeln('  on error resume next');
    document.writeln('  if (id = "cplay") then src = cplay.src');
    document.writeln('  if (id = "corto") then src = corto.src');
    document.writeln('  if (id = "blaxn") then src = blaxn.World');
    document.writeln('  if (id = "pivor") then src = pivor.src');
    document.writeln('  if (id = "wview") then src = wview.World');
    document.writeln('  if (id = "mvrml") then src = mvrml.World');
    document.writeln('  if (id = "viscp") then src = viscp.World');
    document.writeln('  if (not err = 0) then');
    document.writeln('    err.clear');
    document.writeln('  else');
    document.writeln('    vb = vbname');
    document.writeln('  end if');
    document.writeln('  chkBrowser = vb');
    document.writeln('end function');
    document.writeln('</SCR' + 'IPT>');

    document.write('<OBJECT ID=cplay WIDTH=0 HEIGHT=0 CLASSID="clsid:06646724-bcf3-11d0-9518-00c04fc2dd79"></OBJECT>');
    document.write('<OBJECT ID=corto WIDTH=0 HEIGHT=0 CLASSID="clsid:86A88967-7A20-11D2-8EDA-00600818EDB1"></OBJECT>');
    document.write('<OBJECT ID=blaxn WIDTH=0 HEIGHT=0 CLASSID="clsid:4B6E3013-6E45-11D0-9309-0020AFE05CC8"></OBJECT>');
    document.write('<OBJECT ID=wview WIDTH=0 HEIGHT=0 CLASSID="clsid:B0D7D800-4EBF-11D0-9490-00A02494D8A5"></OBJECT>');
    document.write('<OBJECT ID=mvrml WIDTH=0 HEIGHT=0 CLASSID="clsid:90A7533D-88FE-11D0-9DBE-0000C0411FC3"></OBJECT>');
    document.write('<OBJECT ID=viscp WIDTH=0 HEIGHT=0 CLASSID="clsid:1b487523-BEC2-11CF-BF9E-0020AF998FF5"></OBJECT>');
    document.write('<OBJECT ID=pivor WIDTH=0 HEIGHT=0 CLASSID="clsid:332F83AF-3367-45C8-819F-9F7AE87410F8"></OBJECT>');

    name = chkBrowser ("cplay","Cosmo Player");
    if (name != "") {numVrml = numVrml + 1; vrmls[numVrml] = name;}
    name = chkBrowser ("corto","Cortona");
    if (name != "") {numVrml = numVrml + 1; vrmls[numVrml] = name;}
    name = chkBrowser ("blaxn","blaxxun Contact");
    if (name != "") {numVrml = numVrml + 1; vrmls[numVrml] = name;}
    name = chkBrowser ("wview","WorldView");
    if (name != "") {numVrml = numVrml + 1; vrmls[numVrml] = name;}
    name = chkBrowser ("mvrml","Microsoft VRML Viewer");
    if (name != "") {numVrml = numVrml + 1; vrmls[numVrml] = name;}
    name = chkBrowser ("viscp","Viscape SVR");
    if (name != "") {numVrml = numVrml + 1; vrmls[numVrml] = name;}
    name = chkBrowser ("pivor","Pivoron Player");
    if (name != "") {numVrml = numVrml + 1; vrmls[numVrml] = name;}

    if (numVrml > 0) {
      navigator.vbenabled = 1;
      if (numVrml == 1) {vrml = vrmls[1];}
      if (numVrml > 1) {vrml = 'undefined';}
    }
  }
}

}

