// start VRML and X3D plugin detection

// Author: Robert Lipman, robert.lipman@nist.gov, http://cic.nist.gov/lipman/
// Disclaimer: http://www.nist.gov/public_affairs/disclaim.htm

// This software was developed at the National Institute of Standards and Technology by employees of the
// Federal Government in the course of their official duties. Pursuant to Title 17 Section 105 of the United
// States Code this software is not subject to copyright protection and is in the public domain.  This software
// is an experimental system.  NIST assumes no responsibility whatsoever for its use by other parties, and makes 
// no guarantees, expressed or implied, about its quality, reliability, or any other characteristic.  We would 
// appreciate acknowledgement if the software is used.

// This software can be redistributed and/or modified freely provided that any derivative works bear some notice 
// that they are derived from it, and any modified versions bear some notice that they have been modified. 

// modified by vhaus 2007

var nvrml  = 0;
var vrmlok = 0;
var vrmlPlugin = '';
var vrml = new Array(20);
var nenabled  = 0;
var nenabledx = 0;
var bold  = 0;
var boldx = 0;

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';
x3dMime[2] = 'model/x3d+xml';
x3dMime[3] = 'model/x3d+vrml';
x3dMime[4] = 'model/x3d+binary';
var nx3dMime = 4;

// detect plugins in Firefox, Netscape, Mozilla, Opera, and other browser that use the navigator.plugins array

if (navigator.plugins && navigator.plugins.length > 0) {
  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 == vrmlMime[1] ||
            mimetype.type == vrmlMime[2] ||
            mimetype.suffixes == 'wrl' ||
            mimetype.suffixes == 'wrz' ||
            mimetype.suffixes == 'vrml') {
          enabledPlugin = mimetype.enabledPlugin;
          if (enabledPlugin && (enabledPlugin.name == plugin.name)) {
            if (plugin.name != vrmlPlugin) {
              vrmlPlugin = plugin.name;
              nenabled = nenabled + 1;
            }
            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;}
        }

// look for X3D plugins by checking mimetype for 'x3d'
        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)) {
            if (plugin.name != x3dPlugin) {
              x3dPlugin = plugin.name;
              nenabledx = nenabledx + 1;
            }
            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;}
        }
      }
    }
  }
  
  if (nenabled > 1) {
    vrmlPlugin = 'undefined';
    bold = 1;
  }
  if (nenabledx > 1) {
    x3dPlugin = 'undefined';
    boldx = 1;
  }

// *****************************************************************************
// detect VRML and X3D plugins in Microsoft Internet Explorer, only with Windows

} else if (navigator.appName == "Microsoft Internet Explorer") {
  if (navigator.appVersion.indexOf('Win') != -1) {

// IEDetectObject is used to detect ActiveX Controls
    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>');

// detect VRML and X3D ActiveX controls
    if (IEDetectObject('blaxxunCC3D.blaxxunCC3D.1'))   {
      nvrml = nvrml + 1; vrml[nvrml] = "blaxxun&nbsp;Contact";
    }
    if (IEDetectObject('bsContact.bsContact.1')) {
      nvrml = nvrml + 1; vrml[nvrml] = "BS&nbsp;Contact";
      nx3d  = nx3d  + 1; x3d[nx3d]   = "BS&nbsp;Contact";
    }
    if (IEDetectObject('Cortona.Control.1')) {
      nvrml = nvrml + 1; vrml[nvrml] = "Cortona";
    }
    if (IEDetectObject('SGI.CosmoPlayer.2')) {
      nvrml = nvrml + 1; vrml[nvrml] = "Cosmo&nbsp;Player";
    } else if (IEDetectObject('SGI.CosmoPlayer.1')) {
      nvrml = nvrml + 1; vrml[nvrml] = "Cosmo&nbsp;Player";
    }

// detecting Flux might cause an error in IE
    if (IEDetectObject('ANIMA.AnimaCtrl.1')) {
      nvrml = nvrml + 1; vrml[nvrml] = "Flux&nbsp;Player";
      nx3d  = nx3d  + 1; x3d[nx3d]   = "Flux&nbsp;Player";
    }

    if (IEDetectObject('OCTAGAX.OctagaXCtrl.1')) {
      nvrml = nvrml + 1; vrml[nvrml] = "Octaga&nbsp;Player";
      nx3d  = nx3d  + 1; x3d[nx3d]   = "Octaga&nbsp;Player";
    }
    if (IEDetectObject('OctagaProX.OctagaProX.1')) {
      nvrml = nvrml + 1; vrml[nvrml] = "Octaga&nbsp;Pro";
      nx3d  = nx3d  + 1; x3d[nx3d]   = "Octaga&nbsp;Pro";
    }
    if (IEDetectObject('VenuesCtrl.VenuesCtrl.1')) {
      nvrml = nvrml + 1; vrml[nvrml] = "Venues&nbsp;Viewer";
      nx3d  = nx3d  + 1; x3d[nx3d]   = "Venues&nbsp;Viewer";
    }

    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;
  boldx = 1;
}

// ----------------------------------------------------------------------------
var nix = 0;
	  
if (nvrml > 0) {  
  
  for (k = 1; k <= nvrml; k++) {
    ip = vrml[k].indexOf(' 2.1');
    if (ip != -1) {vrml[k] = vrml[k].substring(0,ip);}
    ip = vrml[k].indexOf(' Plugin for Mozilla');
    if (ip != -1) {vrml[k] = vrml[k].substring(0,ip);}
    ip = vrml[k].indexOf(' VRML Version');
    if (ip != -1) {vrml[k] = vrml[k].substring(0,ip);}
    ip = vrml[k].indexOf(' VRML Client');
    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);}
    ip = vrml[k].indexOf(' X3D/VRML');
    if (ip != -1) {vrml[k] = vrml[k].substring(0,ip);}
    ip = vrml[k].indexOf(' VRML/X3D');
    if (ip != -1) {vrml[k] = vrml[k].substring(0,ip);}  

    if (vrml[k].indexOf('blaxxun') != -1) { }
    if (vrml[k].indexOf('BS') != -1 && vrml[k].indexOf('Contact') != -1) { nix = 1; }
	
	if (vrml[k].indexOf('Cortona') != -1) { }  
    if (vrml[k].indexOf('Cosmo') != -1) { }
	if (vrml[k].indexOf('Flux') != -1) { }
	if (vrml[k].indexOf('Octaga') != -1) { }
	if (vrml[k].indexOf('Venues') != -1) { }
	if (vrml[k].indexOf('FreeWRL') != -1) { }
	if (vrml[k].indexOf('OpenVRML') != -1) { }

    }
} 
//enter3d = 0;
if (nix == 0) { 
  document.write('<table width="150" border="0" cellspacing="0" cellpadding="0"><tr><td height="35" align="center">');
  document.write('<a href="stadler_en.php?dim=2d"><img src="/html/images/uk.jpg" width="30" height="20" border="0"></a></td>');
  document.write('</tr><tr><td align="center"><a href="stadler.php?dim=2d">english</a></td></tr><tr><td height="100">&nbsp;</td></tr></table>');
  
}
else {
  document.write('<table width="150" border="0" cellspacing="0" cellpadding="0"><tr><td height="35" align="center">');
  document.write('<a href="stadler_en.php?dim=3d"><img src="/html/images/uk.jpg" width="30" height="20" border="0"></a></td>');
  document.write('</tr><tr><td align="center"><a href="stadler.php?dim=3d">english</a></td></tr><tr><td height="100">&nbsp;</td></tr></table>');
  

}
					


