// http://www.quirksmode.org/js/detect.html

var BrowserDetect = {
  init: function () {
    this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
    this.version = this.searchVersion(navigator.userAgent)
    || this.searchVersion(navigator.appVersion)
    || "an unknown version";
    this.OS = this.searchString(this.dataOS) || "an unknown OS";
  },

  searchString: function (data) {
    for (var i=0;i<data.length;i++){
      var dataString = data[i].string;
      var dataProp = data[i].prop;
      this.versionSearchString = data[i].versionSearch || data[i].identity;
      if (dataString) {
        if (dataString.indexOf(data[i].subString) != -1)
          return data[i].identity;
      }
      else if (dataProp) {
        return data[i].identity;
      }
    }
  },
  searchVersion: function (dataString) {
    var index = dataString.indexOf(this.versionSearchString);
    if (index == -1) return;
    return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
  },
  dataBrowser: [
    { string: navigator.userAgent,
      subString: "OmniWeb",
      versionSearch: "OmniWeb/",
      identity: "OmniWeb"
    },
    {
      string: navigator.vendor,
      subString: "Apple",
      identity: "Safari"
    },
    {
      prop: window.opera,
      identity: "Opera"
    },
    {
      string: navigator.vendor,
      subString: "iCab",
      identity: "iCab"
    },
    {
      string: navigator.vendor,
      subString: "KDE",
      identity: "Konqueror"
    },
    {
      string: navigator.userAgent,
      subString: "Firefox",
      identity: "Firefox"
    },
    {
      string: navigator.vendor,
      subString: "Camino",
      identity: "Camino"
    },
    {// for newer Netscapes (6+)
      string: navigator.userAgent,
      subString: "Netscape",
      identity: "Netscape"
    },
    {
      string: navigator.userAgent,
      subString: "MSIE",
      identity: "Explorer",
      versionSearch: "MSIE"
    },
    {
      string: navigator.userAgent,
      subString: "Gecko",
      identity: "Mozilla",
      versionSearch: "rv"
    },
    { // for older Netscapes (4-)
      string: navigator.userAgent,
      subString: "Mozilla",
      identity: "Netscape",
      versionSearch: "Mozilla"
    }
  ],
  dataOS : [
    {
      string: navigator.platform,
      subString: "Win",
      identity: "Windows"
    },
    {
      string: navigator.platform,
      subString: "Mac",
      identity: "Mac"
    },
    {
      string: navigator.platform,
      subString: "Linux",
      identity: "Linux"
    }
  ]
};

BrowserDetect.init();



function javalon(jar, clazz, codebase, width, height, params, nojava)
{
  // alert(BrowserDetect.browser + " : " + BrowserDetect.version);
  if (BrowserDetect.browser == "Explorer" ||
      (BrowserDetect.browser == "Netscape" && BrowserDetect.version >= 6) ||
      (BrowserDetect.browser == "Opera" && BrowserDetect.version >= 9) ) {
    // alert("Writing OBJECT tag...");
    document.write('<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" ');
    document.write('width="' + width + '" height="' + height + '" ');
    document.writeln('codebase="http://java.sun.com/update/1.5.0/jinstall-1_5-windows-i586.cab#Version=1,5,0,0">');
    document.writeln('<param name="code" value="' + clazz + '" />');
    document.writeln('<param name="archive" value="' + jar + '" />');
    document.writeln('<param name="codebase" value="' + codebase + '" />');
    document.writeln('<param name="mayscript" value="true" />');
    document.writeln('<param name="type" value="application/x-java-applet;version=1.5" />');
    for (var i = 0; i<params.length; i+=2) {
      document.writeln('<param name="' + params[i] + '" value="' + params[i+1] + '" />');
    }
    document.writeln(nojava);
    document.writeln("</object>");
  }
  else if (BrowserDetect.browser == "Netscape" && BrowserDetect.version < 6) {
    // alert("Writing EMBED tag...");
    document.write('<embed type="application/x-java-applet;version=1.5" ');
    document.write('code="' + clazz + '" ');
    document.write('archive="' + jar + '" ');
    document.write('codebase="' + codebase + '" ');
    document.write('width="' + width + '" height="' + height + '" ');
    document.writeln('pluginspage=http://java.sun.com/products/plugin/index.html#download"" ');
    for (var i = 0; i<params.length; i+=2) {
      document.writeln('  ' + params[i] + '="' + params[i+1] + '"');
    }
    document.writeln(' mayscript="true">');
    document.writeln('<noembed>' + nojava + '</noembed>');
    document.writeln('</embed>');
  }
  else {
    // alert("Writing APPLET tag...");

    //    document.write('<object type="application/x-java-applet;jpi-version=1.4" classid="java:'+clazz+'" archive="'+jar+'" height="'+height+'" width="'+width+'">');
    // This version (with JPI-version) at least makes Firefox show a "requires plugin" info bar if they don't have this version.
    //document.write('<object type="application/x-java-applet;jpi-version=1.4"  height="'+height+'" width="'+width+'">');

    document.write('<applet codebase="' + codebase+ '" ');
    document.write('code="' + clazz + '" ');
    document.write('archive="' + jar + '" ');
    document.writeln('width="' + width + '" height="' + height + '" mayscript>');
    document.writeln('<param name="code" value="' + clazz + '" />');
    document.writeln('<param name="archive" value="' + jar + '" />');
    document.writeln('<PARAM NAME="type" VALUE="application/x-java-applet;version=1.5" />');
    for (var i = 0; i<params.length; i+=2) {
      document.writeln('<param name="' + params[i] + '" value="' + params[i+1] + '" />');
    }
    document.writeln(nojava);
    document.writeln('</applet>');
    //    document.writeln('</object>');
  }
}
