/**
 * Test the MSXML version and output the version information.
 *
 * Usage:
 *  1) add this JScript to your HTML document with e.g. 
 *     <script language="JScript" src="detect.js"></script>
 *  2) add the testMSXML30() to the list of methods to be executed on load e.g.
 *     <body onload="testMSXML30();">
 *  3) create and/or identity the element with identifier "version" where you
 *     want the MSXML version information to be displayed, e.g.
 *     <span id="version"></span>
 *
 * Author: Jarno Elovirta <jarno@elovirta.com>
 * Date: 22.1.2001
 */
window.onerror = errorTrap;
var msxml = "Msxml2.DOMDocument.3.0";
var stylesheet;

function testMSXML30() {
  stylesheet = new ActiveXObject(msxml);
  stylesheet.loadXML("<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"><xsl:output omit-xml-declaration=\"yes\" /><xsl:template match=\"/\"><xsl:choose><xsl:when test=\"function-available('format-number')\" /><xsl:when test=\"function-available('document')\">July</xsl:when><xsl:when test=\"element-available('xsl:number')\">May</xsl:when><xsl:when test=\"element-available('xsl:call-template')\">March</xsl:when><xsl:otherwise>January</xsl:otherwise></xsl:choose></xsl:template></xsl:stylesheet>");
  var preview = stylesheet.transformNode(stylesheet);
  if (preview == "") {
    document.all("version").innerHTML = "MSXML 3.0";
  } else {
    document.all("version").innerHTML = "MSXML 3.0 "+preview+" preview";
  }
}

function testMSXML26() {
  stylesheet = new ActiveXObject(msxml);
  document.all("version").innerHTML = "MSXML 2.6";
}

function testMSXML20() {
  stylesheet = new ActiveXObject(msxml);
  document.all("version").innerHTML = "MSXML 2.0";
}

function errorTrap(sMsg,sUrl,sLine){
  if (msxml == "Msxml2.DOMDocument.3.0") {
    msxml = "Msxml2.DOMDocument.2.6";
    testMSXML26();
  } else if (msxml == "Msxml2.DOMDocument.2.6") {
    msxml = "Msxml.DOMDocument";
    testMSXML20();
  } else {
    document.all("version").innerHTML = "no MSXML version";
  }
  return true;
}
