// 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. 

var nvrml  = 0;
var vrmlok = 0;
var vrmlPlugin = '';
var vrml = new Array(20);
var nenabled = 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;

var bold  = 0;

// detect plugins in 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)) {
            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;}
        }
      }
    }
  }
  
  if (nenabled > 1) {
    vrmlPlugin = 'undefined';
    bold = 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 && parseFloat(navigator.appVersion) >= 4) {

// 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('SGI.CosmoPlayer.2')) {
      nvrml = nvrml + 1; vrml[nvrml] = "Cosmo Player";
    } else if (IEDetectObject('SGI.CosmoPlayer.1')) {
      nvrml = nvrml + 1; vrml[nvrml] = "Cosmo Player";
    }
    if (IEDetectObject('Cortona.Control.1')) {
      nvrml = nvrml + 1; vrml[nvrml] = "Cortona";
    }
    if (IEDetectObject('bsContact.bsContact.1')) {
      nvrml = nvrml + 1; vrml[nvrml] = "BS Contact";
      nx3d  = nx3d  + 1; x3d[nx3d]   = "BS Contact";
    }
    if (IEDetectObject('blaxxunCC3D.blaxxunCC3D.1'))   {
      nvrml = nvrml + 1; vrml[nvrml] = "blaxxun Contact";
    }
    if (IEDetectObject('Nexternet.NexternetPlayer.1')) {
      nvrml = nvrml + 1; vrml[nvrml] = "Pivoron Player";
    }
    if (IEDetectObject('VenuesCtrl.VenuesCtrl.1')) {
      nvrml = nvrml + 1; vrml[nvrml] = "Venues";
      nx3d  = nx3d  + 1; x3d[nx3d]   = "Venues";
    }
	
	//alert(IEDetectObject);
// detecting the following causes an error in IE
//    if (IEDetectObject('ANIMA.AnimaCtrl.1')) {
//      nvrml = nvrml + 1; vrml[nvrml] = "Flux";
//      nx3d  = nx3d  + 1; x3d[nx3d]   = "Flux";
//    }

//     if (IEDetectObject('OCTAGAX.OctagaXCtrl.1')) {
//       nvrml = nvrml + 1; vrml[nvrml] = "Octaga";
//       nx3d  = nx3d  + 1; x3d[nx3d]   = "Octaga";
//     }

    if (nvrml == 0) {
      if (IEDetectObject('Owatl.OwCtl.1')) {nvrml = nvrml + 1; vrml[nvrml] = "OpenWorlds";}
      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;
}

// ----------------------------------------------------------------------------
// The rest of the code below is optional.  It reports which VRML and X3D plugins
// were found and makes some recommendations if none was found.  The variables
// 'nvrml' and 'nx3d' indicate how many plugins were found.  The arrays 'vrml'
// and 'x3d' contain the names of the plugins that were found.

// OS

var win   = 0;
var wince = 0;
var mac   = 0;
var irix  = 0;
var unix  = 0;
var linux = 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('Linux') != -1) {unix  = 1; linux = 1;}
if (navigator.userAgent.indexOf('IRIX')  != -1) {unix  = 1; irix  = 1;}
if (navigator.userAgent.indexOf('Windows CE') != -1) {wince = 1;}
 
// VRML plugin URLs, update as necessary

var httpBlaxxun = '<A HREF="http://www.blaxxun.com/en/products/contact/index.html">';
var httpContact = '<A HREF="http://www.bitmanagement.de/">';
var httpCortona = '<A HREF="http://www.parallelgraphics.com/products/cortona/">';
var httpCosmo   = '<A HREF="http://cic.nist.gov/vrml/cosmoplayer.html">';
var httpCyber   = '<A HREF="http://www.cybergarage.org/vrml/">';
var httpFlux    = '<A HREF="http://www.mediamachines.com/">';
var httpFreeWRL = '<A HREF="http://freewrl.sourceforge.net/">';
var httpOpnVRML = '<A HREF="http://www.openvrml.org/">';
var httpOctaga  = '<A HREF="http://www.octaga.com/">';
var httpVenues  = '<A HREF="http://www.vcom3d.com/Viewer.htm">';
var httpX3DKit  = '<A HREF="http://artis.imag.fr/Members/Yannick.Legoc/X3D/">';
var httpXj3D    = '<A HREF="http://www.xj3d.org/">';
var httpLive3D  = '<A HREF="http://wp.netscape.com/eng/live3d/live3d_overview.html">';

if (mac) {
  httpCortona = '<A HREF="http://www.parallelgraphics.com/products/cortonamac/">';
  httpCosmo   = '<A HREF="http://ovrt.nist.gov/cosmo/">';
} else if (irix) {
  httpCosmo   = '<A HREF="http://www.sgi.com/software/cosmo/irix_player.html">';
} else if (wince) {
  httpCortona = '<A HREF="http://www.parallelgraphics.com/products/cortonace/">';
}

var urlBlaxxun = httpBlaxxun + 'blaxxun Contact</A>';
var urlContact = httpContact + 'BS Contact</A><A HREF="http://www.bitmanagement.de/?page=/products/licensing.html">*</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 urlOpnVRML = httpOpnVRML + 'OpenVRML</A>';
var urlOctaga  = httpOctaga  + 'Octaga</A>';
var urlVenues  = httpVenues  + 'Venues</A>';
var urlX3DKit  = httpX3DKit  + 'X3DToolKit</A>';
var urlXj3D    = httpXj3D    + 'Xj3D</A>';
var urlLive3D  = httpLive3D  + 'Live3D</A>';
if (wince) {urlCortona = httpCortona + 'Pocket Cortona</A>';}

var aov = "<BR>Descargar ";
var aox = "<BR>Descargar ";
if (nvrml > 0) {aov = "<BR>Otros ";}
if (nx3d  > 0) {aox = "<BR>Otros ";}

// report VRML plugins -----------------------------------------------------------------------
// Variables are set that indicate which type of VRML plugin is installed based on the 'vrml' array 

var blaxxun = 0;
var contact = 0;
var cortona = 0;
var cosmo   = 0;
var flux    = 0;
var freewrl = 0;
var opnvrml = 0;
var octaga  = 0;
var venues  = 0;
var live3d  = 0;
var xj3d    = 0;

var ip = vrmlPlugin.indexOf(' from PLATINUM');
if (ip != -1) {vrmlPlugin = vrmlPlugin.substring(0,ip);}
var urlHelp = "";

//document.write('<P></P><P>');
if (nvrml > 0) {
  //document.write('plugin VRML ');
  if (nvrml > 1) {//document.write('s');
  }
  //document.write(' instalado: &nbsp;');
  
  for (k = 1; k <= nvrml; k++) {
    ip = vrml[k].indexOf(' from PLATINUM');
    if (ip != -1) {vrml[k] = vrml[k].substring(0,ip);}
    
    if (nvrml > 1) {//document.write('[');
									   }    
    if (bold || vrmlPlugin.indexOf(vrml[k]) != -1) {//document.write('<B>');
	}
    //alert(vrml[k]);
    if (vrml[k].indexOf('Cosmo') != -1) {
      //document.write(httpCosmo + vrml[k] + '</A>');
      cosmo = 1;
      if (win) {
        urlHelp = '<A HREF="http://cic.nist.gov/vrml/cosmo/Doc/frames-help.html">';
      } else if (irix) {
        urlHelp = '<A HREF="file://localhost/usr/CosmoPlayer/doc/en/frames-help.html">';
      }

    } else if (vrml[k].indexOf('Cortona') != -1) {
      //document.write(httpCortona + vrml[k] + '</A>');
      cortona = 1;
      urlHelp = '<A HREF="http://www.parallelgraphics.com/developer/products/cortona/help/">';

    } else if (vrml[k].indexOf('BS Contact') != -1) {
      //document.write(httpContact + vrml[k] + '</A><A HREF="http://www.bitmanagement.de/?page=/products/licensing.html">*</A>');
      contact = 1;
      urlHelp = '<A HREF="http://www.bitmanagement.de/developer/contact/userguide/index.html">'; 

    } else if (vrml[k].indexOf('blaxxun') != -1) {
      //document.write(httpBlaxxun + vrml[k] + '</A>');
      blaxxun = 1;
      urlHelp = '<A HREF="http://www.blaxxun.com/en/products/contact/documentation.html">'; 

    } else if (vrml[k].indexOf('FreeWRL') != -1) {
      //document.write(httpFreeWRL + vrml[k] + '</A>');
      freewrl = 1;
      urlHelp = '<A HREF="http://freewrl.sourceforge.net/freewrl.html">'; 

    } else if (vrml[k].indexOf('ookat') != -1 || vrml[k].indexOf('OpenVRML') != -1) {
      //document.write(httpOpnVRML + vrml[k] + '</A>');
      opnvrml = 1;

    } else if (vrml[k].indexOf('Flux') != -1) {
      //document.write(httpFlux + vrml[k] + '</A>');
      flux = 1;
      urlHelp = '<A HREF="http://www.mediamachines.com/userguide.html">'; 

    } else if (vrml[k].indexOf('Vivaty') != -1) {
      //document.write(httpFlux + vrml[k] + '</A>');
      flux = 1;
      urlHelp = '<A HREF="http://www.mediamachines.com/userguide.html">'; 

    } else if (vrml[k].indexOf('Octag') != -1) {
      //document.write(httpOctaga + vrml[k] + '</A>');
      octaga = 1;
      urlHelp = '<A HREF="http://www.octaga.com/freedownloads/Octaga/User%20Manual.rtf">';

    } else if (vrml[k].indexOf('Vcom') != -1 || vrml[k].indexOf('Venues') != -1) {
      //document.write(httpVenues + vrml[k] + '</A>');
      venues = 1;
      urlHelp = '<A HREF="http://www.vcom3d.com/viewer/X3D_Browser_and_Simulation_EngineB2.pdf">'; 

    } else if (vrml[k].indexOf('Xj3D') != -1) {
      //document.write(httpXj3D + vrml[k] + '</A>');
      xj3d = 1;

    } else if (vrml[k].indexOf('Live3D') != -1) {
      //document.write(httpLive3D + vrml[k] + '</A>');
      live3d = 1;

    } else {
      //document.write(vrml[k]);
    }

    if (bold || vrmlPlugin.indexOf(vrml[k]) != -1) {//document.write('</B>');
	}

    if (urlHelp != "") {//document.write(' (' + urlHelp + 'Help</A>)');
	}

    if (cosmo && irix) {//document.write(' (<A HREF="file://localhost/usr/CosmoPlayer/doc/en/frames-relnotes.html">Release Notes</A>)');
	}

    if (nvrml > 1) {
      //document.write(']');
	}
      if (k < nvrml) {//document.write('&nbsp;&nbsp;');
    }
  }

// no VRML plugins

} else {
  //document.write('plugin VRML  instalado &nbsp;<B>ninguno</B>');
}

// VRML plugin recommendations ----------------------------------------------------------------
// This section can be modified to take different actions depending on the VRML plugin

// win   = 0;
// unix  = 1;
// irix  = 0;
// linux = 1;
// mac   = 1;

if (win && !wince) {
		//document.write(aov + 'plugins VRML:');
		if (!cosmo)   {//document.write('&nbsp&nbsp' + urlCosmo);
		}
		if (!cortona) {//document.write('&nbsp&nbsp' + urlCortona);
		}
		if (navigator.appName == "Microsoft Internet Explorer") {
				if (!octaga)  {//document.write('&nbsp&nbsp' + urlOctaga);
				}
				if (!flux)    {//document.write('&nbsp&nbsp' + urlFlux);
				}
				if (!venues)  {//document.write('&nbsp&nbsp' + urlVenues);
				}
				if (!blaxxun) {//document.write('&nbsp&nbsp' + urlBlaxxun);
				}
		} else if (navigator.userAgent.indexOf('Gecko') == -1) {
				if (!blaxxun) {//document.write('&nbsp&nbsp' + urlBlaxxun);
				}
		}
		if (!contact) {//document.write('&nbsp&nbsp' + urlContact);
		}

} else if (unix) {
		//document.write(aov + 'VRML software:');
		if (irix && !cosmo) {//document.write('&nbsp&nbsp' + urlCosmo);
		}
		if (linux)    {//document.write('&nbsp&nbsp' + urlOctaga);
		}
		if (!freewrl) {//document.write('&nbsp&nbsp' + urlFreeWRL);
		}
		if (!opnvrml) {//document.write('&nbsp&nbsp' + urlOpnVRML);
		}
		if (!xj3d)    {//document.write('&nbsp&nbsp' + urlXj3D);
		}
		//document.write('&nbsp&nbsp<A HREF="http://www.orbisnap.com/">Orbisnap</A>');
		//document.write('&nbsp&nbsp<A HREF="http://www.netcae.com/tv/">TogetherView Viewer</A>');
		if (irix)  {//document.write('&nbsp&nbsp<A HREF="http://www.sim.no/products/SIM_VRMLview/">VRMLView</A>');
		}
		//document.write('&nbsp&nbsp' + urlCyber);
//		if (linux) {document.write('&nbsp&nbsp(<A HREF="http://chromebob.com/vrml/">VRML for Linux</A>)');}

} else if (mac) {
		//document.write(aov + 'VRML software:');
		if (!cortona) {//document.write('&nbsp&nbsp' + urlCortona);
		}
		if (navigator.userAgent.indexOf('OS X') == -1) {
		  if (!cosmo) {//document.write('&nbsp&nbsp' + urlCosmo);
		  }
		} else {
				if (!freewrl) {//document.write('&nbsp&nbsp' + urlFreeWRL);
				}
				if (!opnvrml) {//document.write('&nbsp&nbsp' + urlOpnVRML);
				}
				if (!xj3d)    {//document.write('&nbsp&nbsp' + urlXj3D);
				}
		  //document.write('&nbsp&nbsp<A HREF="http://www.orbisnap.com/">Orbisnap</A>');
				//document.write('&nbsp&nbsp<A HREF="http://www.netcae.com/tv/">TogetherView Viewer</A>');
		}
  //document.write('&nbsp&nbsp<A HREF="http://www.macweb3d.org/">MacWeb3D</A>');

} else if (wince && !cortona) {
  //document.write(aov + 'VRML plugin:&nbsp; ' + urlCortona);
}

//document.write('</P>');

// report X3D plugins -----------------------------------------------------------------------
// Variables are set that indicate which type of X3D plugin is installed based on the 'x3d' array

var xblaxxun = 0;
var xcontact = 0;
var xcortona = 0;
var xflux    = 0;
var xfreewrl = 0;
var xopnvrml = 0;
var xoctaga  = 0;
var xvenues  = 0;
var xxj3d    = 0;

if (!wince) {
  urlHelp = "";

  //document.write('<P></P><P>');
  if (nx3d > 0) {
    //document.write('X3D plugin');
    if (nx3d > 1) {//document.write('s');
	}
    //document.write(' instalado: &nbsp;');

    for (k = 1; k <= nx3d; k++) {
      if (nx3d > 1) {//document.write('[');
										}
      if (bold || x3dPlugin.indexOf(x3d[k]) != -1) {//document.write('<B>');
	  }

      if (x3d[k].indexOf('BS Contact') != -1) {
								//document.write(httpContact + x3d[k] + '</A><A HREF="http://www.bitmanagement.de/?page=/products/licensing.html">*</A>');
								xcontact = 1;
        urlHelp = '<A HREF="http://www.bitmanagement.de/developer/contact/userguide/index.html">'; 

      } else if (x3d[k].indexOf('Flux') != -1) {
								//document.write(httpFlux + x3d[k] + '</A>');
								xflux = 1;
								urlHelp = '<A HREF="http://www.mediamachines.com/userguide.html">'; 

      } else if (x3d[k].indexOf('FreeWRL') != -1) {
								//document.write(httpFreeWRL + x3d[k] + '</A>');
								xfreewrl = 1;
								urlHelp = '<A HREF="http://freewrl.sourceforge.net/freewrl.html">'; 

      } else if (x3d[k].indexOf('Octag') != -1) {
								//document.write(httpOctaga + x3d[k] + '</A>');
								xoctaga = 1;

      } else if (x3d[k].indexOf('Vcom') != -1 || x3d[k].indexOf('Venues') != -1) {
								//document.write(httpVenues + x3d[k] + '</A>');
								xvenues = 1;
        urlHelp = '<A HREF="http://www.vcom3d.com/viewer/X3D_Browser_and_Simulation_EngineB2.pdf">'; 

      } else if (x3d[k].indexOf('Cortona') != -1) {
								//document.write(httpCortona + x3d[k] + '</A>');
								xcortona = 1;
								urlHelp = '<A HREF="http://www.parallelgraphics.com/developer/products/cortona/help/">';

      } else if (x3d[k].indexOf('ookat') != -1 || x3d[k].indexOf('OpenVRML') != -1) {
								//document.write(httpOpnVRML + x3d[k] + '</A>');
								xopnvrml = 1;

						} else if (x3d[k].indexOf('Xj3D') != -1) {
								//document.write(httpXj3D + x3d[k] + '</A>');
								xxj3d = 1;

      } else {
								//document.write(x3d[k]);
      }
      if (bold || x3dPlugin.indexOf(x3d[k]) != -1) {//document.write('</B>');
	  }
      if (urlHelp != "") {//document.write(' (' + urlHelp + 'Help</A>)');
	  }
      if (nx3d > 1) {
								//document.write(']');
	  }
								if (k < nx3d) {//document.write('&nbsp;&nbsp;');
      }
    }

// no X3D plugins

  } else {
    //document.write('plugin X3D instalado: &nbsp;<B>ninguno</B>');
  }

// X3D plugin recommendations -----------------------------------------------------------------
// This section can be modified to take different actions depending on the X3D plugin

  if (win && !wince) {
    //document.write(aox + 'plugins X3D :');
    if (navigator.appName == "Microsoft Internet Explorer") {
      if (!xoctaga) {//document.write('&nbsp;&nbsp;' + urlOctaga);
	  }
      if (!xflux)   {//document.write('&nbsp;&nbsp;' + urlFlux);
	  }
      if (!xvenues) {//document.write('&nbsp;&nbsp;' + urlVenues);
	  }
    }
    //document.write('&nbsp;&nbsp;' + urlXj3D + '<FONT SIZE=-1> (no es un plugin)</FONT>');
    if (!xcontact) {//document.write('&nbsp;&nbsp;' + urlContact);
	}

  } else if ((unix || mac)) {
    //document.write(aox + 'X3D software:');
				if (linux)     {//document.write('&nbsp;&nbsp;' + urlOctaga);
				}
    if (!xfreewrl) {//document.write('&nbsp;&nbsp;' + urlFreeWRL);
	}
    if (!xxj3d)    {//document.write('&nbsp;&nbsp;' + urlXj3D);
	}
    //document.write('&nbsp;&nbsp;' + urlX3DKit);
    //document.write('&nbsp;&nbsp;' + urlCyber);
  }
}  

