// Ultimate client-side JavaScript client sniff.
// (C) Netscape Communications 1999.  Permission granted to reuse and distribute.
// Revised 20 April 98 to add is_nav5up and is_ie5up (see below).

// Everything you always wanted to know about your JavaScript client
// but were afraid to ask. Creates "is_" variables indicating:
// (1) browser vendor:
//     is_nav, is_ie, is_opera
// (2) browser version number:
//     is_major (integer indicating major version number: 2, 3, 4 ...)
//     is_minor (float   indicating full  version number: 2.02, 3.01, 4.04 ...)
// (3) browser vendor AND major version number
//     is_nav2, is_nav3, is_nav4, is_nav4up, is_nav5, is_nav5up, is_ie3, is_ie4, is_ie4up
// (4) JavaScript version number:
//     is_js (float indicating full JavaScript version number: 1, 1.1, 1.2 ...)
// (5) OS platform and version:
//     is_win, is_win16, is_win32, is_win31, is_win95, is_winnt, is_win98
//     is_os2
//     is_mac, is_mac68K, is_macppc
//     is_unix
//        is_sun, is_sun4, is_sun5, is_suni86
//        is_irix, is_irix5, is_irix6
//        is_hpux, is_hpux9, is_hpux10
//        is_aix, is_aix1, is_aix2, is_aix3, is_aix4
//        is_linux, is_sco, is_unixware, is_mpras, is_reliant
//        is_dec, is_sinix, is_freebsd, is_bsd
//     is_vms
//
// See http://www.it97.de/JavaScript/JS_tutorial/bstat/navobj.html and
// http://www.it97.de/JavaScript/JS_tutorial/bstat/Browseraol.html
// for detailed lists of userAgent strings.

//
// Note: you don't want your Nav4 or IE4 code to "turn off" or
// stop working when Nav5 and IE5 (or later) are released, so
// in conditional code forks, use is_nav4up ("Nav4 or greater")
// and is_ie4up ("IE4 or greater") instead of is_nav4 or is_ie4
// to check version in code which you want to work on future
// versions.

    // convert all characters to lowercase to simplify testing
    var agt=navigator.userAgent.toLowerCase();
    var is_java = false;

    // *** BROWSER VERSION ***
    // Note: On IE5, these return 4, so use is.ie5up to detect IE5.
    var is_major = parseInt(navigator.appVersion);
    var is_minor = parseFloat(navigator.appVersion);

    var is_nav     = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
                     && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                     && (agt.indexOf('webtv')==-1));
    var is_nav2    = (is_nav && (is_major == 2));
    var is_nav3    = (is_nav && (is_major == 3));
    var is_nav4    = (is_nav && (is_major == 4));
    var is_nav4up  = (is_nav && (is_major >= 4));
    var is_navonly = (is_nav && ((agt.indexOf(";nav") != -1) ||
                          (agt.indexOf("; nav") != -1)) );
    var is_nav5    = (is_nav && (is_major == 5));
    var is_nav5up  = (is_nav && (is_major >= 5));

    var is_ie      = (agt.indexOf("msie") != -1);
    var is_ie3     = (is_ie && (is_major < 4));
    var is_ie4     = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")==-1) );
    var is_ie4up   = (is_ie  && (is_major >= 4));
    var is_ie5     = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
    var is_ie5up   = (is_ie  && !is_ie3 && !is_ie4);

    var is_aol     = (agt.indexOf("aol") != -1);
    var is_aol3    = (is_aol && is_ie3);
    var is_aol4    = (is_aol && is_ie4);

    var is_opera   = (agt.indexOf("opera") != -1);
    var is_webtv   = (agt.indexOf("webtv") != -1);
    

    // *** JAVASCRIPT VERSION CHECK ***
    // Useful to workaround Nav3 bug in which Nav3
    // loads <SCRIPT LANGUAGE="JavaScript1.2">.
    var is_js;
    if (is_nav2 || is_ie3) is_js = 1.0;
    else if (is_nav3 || is_opera) is_js = 1.1;
    else if ((is_nav4 && (is_minor <= 4.05)) || is_ie4) is_js = 1.2;
    else if ((is_nav4 && (is_minor > 4.05)) || is_ie5) is_js = 1.3;
    else if (is_nav5) is_js = 1.4;
    // NOTE: In the future, update this code when newer versions of JS
    // are released. For now, we try to provide some upward compatibility
    // so that future versions of Nav and IE will show they are at
    // *least* JS 1.x capable. Always check for JS version compatibility
    // with > or >=.
    else if (is_nav && (is_major > 5)) is_js = 1.4;
    else if (is_ie && (is_major > 5)) is_js = 1.3;
    // HACK: no idea for other browsers; always check for JS version with > or >=
    else is_js = 0.0;

    // NN and IE check if Java is enabled
    if ( (is_nav4up) || (is_ie4up) ) is_java = navigator.javaEnabled();

    // *** PLATFORM ***
    var is_win    = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
    // NOTE: On Opera 3.0, the userAgent string includes "Windows 95/NT4" on all
    //        Win32, so you can't distinguish between Win95 and WinNT.
    var is_win95  = ((agt.indexOf("win95")!=-1) || (agt.indexOf("windows 95")!=-1));

    // is this a 16 bit compiled version?
    var is_win16  = ((agt.indexOf("win16")!=-1) || 
                    (agt.indexOf("16bit")!=-1) || (agt.indexOf("windows 3.1")!=-1) || 
                    (agt.indexOf("windows 16-bit")!=-1) );  

    var is_win31  = ((agt.indexOf("windows 3.1")!=-1) || (agt.indexOf("win16")!=-1) ||
                    (agt.indexOf("windows 16-bit")!=-1));

    // NOTE: Reliable detection of Win98 may not be possible. It appears that:
    //       - On Nav 4.x and before you'll get plain "Windows" in userAgent.
    //       - On Mercury client, the 32-bit version will return "Win98", but
    //         the 16-bit version running on Win98 will still return "Win95".
    var is_win98  = ((agt.indexOf("win98")!=-1) || (agt.indexOf("windows 98")!=-1));
    var is_winnt  = ((agt.indexOf("winnt")!=-1) || (agt.indexOf("windows nt")!=-1));
    var is_win32  = (is_win95 || is_winnt || is_win98 || 
                    ((is_major >= 4) && (navigator.platform == "Win32")) ||
                    (agt.indexOf("win32")!=-1) || (agt.indexOf("32bit")!=-1));

    var is_mac    = (agt.indexOf("mac")!=-1);
    var is_mac68K = (is_mac && ((agt.indexOf("68k")!=-1) || 
                               (agt.indexOf("68000")!=-1)));
    var is_macppc = (is_mac && ((agt.indexOf("ppc")!=-1) || 
                                (agt.indexOf("powerpc")!=-1)));

    var is_os2    = ((agt.indexOf("os/2")!=-1) || 
                    (navigator.appVersion.indexOf("OS/2")!=-1) ||   
                    (agt.indexOf("ibm-webexplorer")!=-1));


    var is_sun    = (agt.indexOf("sunos")!=-1);
    var is_sun4   = (agt.indexOf("sunos 4")!=-1);
    var is_sun5   = (agt.indexOf("sunos 5")!=-1);
    var is_suni86 = (is_sun && (agt.indexOf("i86")!=-1));
    var is_irix   = (agt.indexOf("irix") !=-1);    // SGI
    var is_irix5  = (agt.indexOf("irix 5") !=-1);
    var is_irix6  = ((agt.indexOf("irix 6") !=-1) || (agt.indexOf("irix6") !=-1));
    var is_hpux   = (agt.indexOf("hp-ux")!=-1);
    var is_hpux9  = (is_hpux && (agt.indexOf("09.")!=-1));
    var is_hpux10 = (is_hpux && (agt.indexOf("10.")!=-1));
    var is_aix    = (agt.indexOf("aix") !=-1);      // IBM
    var is_aix1   = (agt.indexOf("aix 1") !=-1);    
    var is_aix2   = (agt.indexOf("aix 2") !=-1);    
    var is_aix3   = (agt.indexOf("aix 3") !=-1);    
    var is_aix4   = (agt.indexOf("aix 4") !=-1);    
    var is_linux  = (agt.indexOf("inux")!=-1);
    var is_sco    = (agt.indexOf("sco")!=-1) || (agt.indexOf("unix_sv")!=-1);
    var is_unixware = (agt.indexOf("unix_system_v")!=-1); 
    var is_mpras    = (agt.indexOf("ncr")!=-1); 
    var is_reliant  = (agt.indexOf("reliantunix")!=-1);
    var is_dec   = ((agt.indexOf("dec")!=-1) || (agt.indexOf("osf1")!=-1) || 
           (agt.indexOf("dec_alpha")!=-1) || (agt.indexOf("alphaserver")!=-1) || 
           (agt.indexOf("ultrix")!=-1) || (agt.indexOf("alphastation")!=-1)); 
    var is_sinix = (agt.indexOf("sinix")!=-1);
    var is_freebsd = (agt.indexOf("freebsd")!=-1);
    var is_bsd = (agt.indexOf("bsd")!=-1);
    var is_unix  = ((agt.indexOf("x11")!=-1) || is_sun || is_irix || is_hpux || 
                 is_sco ||is_unixware || is_mpras || is_reliant || 
                 is_dec || is_sinix || is_aix || is_linux || is_bsd || is_freebsd);

    var is_vms   = ((agt.indexOf("vax")!=-1) || (agt.indexOf("openvms")!=-1));


function ShowNsUpdate()
{
  document.writeln("<table border=\"0\">");
  document.writeln("    <tr>");
  document.writeln("        <td><font face=\"Arial\"><img");
  document.writeln("        src=\"./images/logo_ns.gif\"");
  document.writeln("        width=\"32\" height=\"30\"></font></td>");
  document.writeln("        <td>&nbsp;</td>");
  document.writeln("        <td><font size=\"3\" face=\"Arial\"><strong>Netscape Browsers</strong></font></td>");
  document.writeln("    </tr>");
  document.writeln("</table>");
  document.writeln("");
  document.writeln("<p><font color=\"#000000\" face=\"Arial\">Your Netscape browser does");
  document.writeln("not have a fully Java 1.1 compliant JVM. All Netscape versions");
  document.writeln("prior to 4.06 does not have this correct JVM.</font></p>");
  document.writeln("");
  document.writeln("<p><font color=\"#000000\" face=\"Arial\">It is recommended to update");
  document.writeln("your Netscape browser to version 4.06 or higher.</font></p>");
  document.writeln("");
  document.writeln("<p><font color=\"#000000\" face=\"Arial\"><em><strong><u>Advantage</u></strong></em>:</font></p>");
  document.writeln("<ul>");
  document.writeln("    <li><font face=\"Arial\">Browser with integrated JVM which offers");
  document.writeln("        you the ability to use all product features such as");
  document.writeln("        printing and sharing the system clipboard with other");
  document.writeln("        applications.</font></li>");
  document.writeln("</ul>");
  document.writeln("");
  document.writeln("<p><font color=\"#000000\" face=\"Arial\"><em><strong><u>Disadvantage:</u></strong></em></font></p>");
  document.writeln("");
  document.writeln("<ul>");
  document.writeln("    <li><font color=\"#000000\" face=\"Arial\">You have to download");
  document.writeln("        at least 10 Mb and install Netscape therefore you have to");
  document.writeln("        stop this session</font></li>");
  document.writeln("</ul>");
  document.writeln("<p><font color=\"#000000\" face=\"Arial\">Go to the Netscape site and");
  document.writeln("download a new version by following </font><a");
  document.writeln("href=\"http://www.netscape.com/download/index.html#clients\"><font");
  document.writeln("face=\"Arial\">http://www.netscape.com/download/</font></a><font");
  document.writeln("face=\"Arial\">. Another option is to use Netscape's SmartUpdate.");
  document.writeln("Please goto </font><a");
  document.writeln("href=\"http://www.netscape.com/smartupdate/index.html?cp=downlsmup\"");
  document.writeln("target=\"_blank\"><font face=\"Arial\">Netscape SmartUpdate</font></a><font");
  document.writeln("face=\"Arial\"> page for more information.</font></p>");
}

function ShowMsIeUpdate()
{
  document.writeln("<table border=\"0\">");
  document.writeln("    <tr>");
  document.writeln("        <td><font face=\"Arial\"><img src=\"./images/logo_ie.gif\" width=\"32\" height=\"30\"></font></td>");
  document.writeln("        <td>&nbsp;</td>");
  document.writeln("        <td><font face=\"Arial\"><strong>Microsoft Internet Explorer</strong></font></td>");
  document.writeln("    </tr>");
  document.writeln("</table>");
  document.writeln("<p><font face=\"Arial\">Microsoft offers you the possibility to");
  document.writeln("update your current JVM.</font></p>");
  document.writeln("<p><font face=\"Arial\"><em><strong><u>Advantage:</u></strong></em></font></p>");
  document.writeln("<ul>");
  document.writeln("    <li><font face=\"Arial\">Fast browser integrated JVM which");
  document.writeln("        offers you the ability to use all product features such");
  document.writeln("        as printing and using the system clipboard.</font></li>");
  document.writeln("</ul>");
  document.writeln("<p><font face=\"Arial\"><em><strong><u>Disadvantage:</u></strong></em></font></p>");
  document.writeln("<ul>");
  document.writeln("    <li><font color=\"#000000\" face=\"Arial\">You have to download");
  document.writeln("        and install the new VM and </font><font face=\"Arial\">you");
  document.writeln("        may need to restart your machine before doing so");
  document.writeln("        depending on your environment. </font></li>");
  document.writeln("</ul>");
  document.writeln("<p><font face=\"Arial\">For more information and instructions");
  document.writeln("please follow </font><a href=\"http://www.microsoft.com/java/\"");
  document.writeln("target=\"_blank\"><font face=\"Arial\">http://www.microsoft.com/java/</font></a><font");
  document.writeln("face=\"Arial\"> on how to download the latest VM.</font></p>");
  document.writeln("<p><font face=\"Arial\">It is important that the VM is not");
  document.writeln("currently in use when attempting to update. Please exit Internet");
  document.writeln("Explorer start it again and navigate directly to </font><a");
  document.writeln("href=\"http://www.microsoft.com/java/\" target=\"_blank\"><font");
  document.writeln("face=\"Arial\">http://www.microsoft.com/java/</font></a><font");
  document.writeln("face=\"Arial\">. </font></p>");
}

function ShowMacInfo()
{
  document.writeln("You have only one option to enjoy this great product on your Mac. <br><HR>");
  document.writeln("<table border=\"0\">");
  document.writeln("    <tr>");
  document.writeln("        <td><font face=\"Arial\"><img src=\"images/logo_mac.gif\" width=\"35\" height=\"35\"></font></td>");
  document.writeln("        <td>&nbsp;</td>");
  document.writeln("        <td><font face=\"Arial\"><strong>Apple iMac</strong></font></td>");
  document.writeln("    </tr>");
  document.writeln("</table>");
  document.writeln("");
  document.writeln("<p><font face=\"Arial\">Java Clients running on a Mac require Mac");
  document.writeln("OS 8.1 or later.</font></p>");
  document.writeln("");
  document.writeln("<p><font face=\"Arial\">It is recommended to use the Apple JVM in");
  document.writeln("combination with Microsoft Internet Explorer for Mac in order");
  document.writeln("to get the best results. </font></p>");
  document.writeln("");
  document.writeln("<p><font face=\"Arial\">Make sure you have the Apple Virtual");
  document.writeln("Machine enabled. Check this by starting <strong>Internet");
  document.writeln("Explorer</strong>. Follow the steps descibed:</font></p>");
  document.writeln("<ul>");
  document.writeln("    <li><font face=\"Arial\">Open Edit menu</font></li>");
  document.writeln("    <li><font face=\"Arial\">Select preferences. The Internet");
  document.writeln("        Explorer Preferences dialog will appear.</font></li>");
  document.writeln("    <li><font face=\"Arial\">Web Browser &gt;&gt;&gt; Java. Make");
  document.writeln("        sure that the Java Virtual Machine setting says: <strong>&quot;Apple");
  document.writeln("        MRJ&quot;</strong></font></li>");
  document.writeln("</ul>");
  document.writeln("<p><font face=\"Arial\">Visit </font><a");
  document.writeln("href=\"http://www.microsoft.com/mac/ie/\" target=\"_blank\"><font");
  document.writeln("face=\"Arial\">http://www.microsoft.com/mac/ie/</font></a><font");
  document.writeln("face=\"Arial\"> and get the latest Internet Explorer for your Mac.</font></p>");
  document.writeln("<p><font face=\"Arial\">For more information about your Apple and");
  document.writeln("the Apple Java virtual machines refer to the iMac site at </font><a");
  document.writeln("href=\"http://www.apple.com/imac/\" target=\"_blank\"><font");
  document.writeln("face=\"Arial\">http://imac.com/</font></a></p>");
}

function ShowEnableJava()
{
var agt=navigator.userAgent.toLowerCase();
var is_ie      = (agt.indexOf("msie") != -1);

document.writeln("<p><font face=\"Arial\" font size=\"6\">Java is not enabled.</font></p>");
document.writeln("<p><font face=\"Arial\">Since Java is essential to run this");
document.writeln("application you have to enable Java </font></p>");
document.writeln("<p><font face=\"Arial\">Please enable Java by following the steps");
document.writeln("described below:</font></p>");

if (is_ie)
  {
  document.writeln('<table border=\"0\">');
  document.writeln('    <tr>');
  document.writeln('        <td><font face=\"Arial\"><img src=\"./images/logo_ie.gif\" width=\"32\" height=\"30\"></font></td>');
  document.writeln('        <td><font face=\"Arial\"></font>&nbsp;</td>');
  document.writeln('        <td><font face=\"Arial\"><strong>Microsoft Internet Explorer</strong></font></td>');
  document.writeln('    </tr>');
  document.writeln('</table>');
  document.writeln('<ul>');
  document.writeln('    <li><font face=\"Arial\">Open <strong>View</strong> menu.</font></li>');
  document.writeln('    <li><font face=\"Arial\">Select <strong>Internet Options...</strong></font></li>');
  document.writeln('    <li><font face=\"Arial\">Select <strong>Security</strong> Tab.</font></li>');
  document.writeln('    <li><font face=\"Arial\"><strong>Enable Java!</strong></font></li>');
  document.writeln('</ul>');
  }
else
  {
  document.writeln('<table border=\"0\">');
  document.writeln('    <tr>');
  document.writeln('        <td><font face=\"Arial\"><img src=\"./images/logo_ns.gif\" width=\"32\" height=\"31\"></font></td>');
  document.writeln('        <td><font face=\"Arial\"></font>&nbsp;</td>');
  document.writeln('        <td><font face=\"Arial\"><strong>Netscape</strong></font></td>');
  document.writeln('    </tr>');
  document.writeln('</table>');
  document.writeln('<ul>');
  document.writeln('    <li><font face=\"Arial\">Open <strong>Edit</strong> menu.</font></li>');
  document.writeln('    <li><font face=\"Arial\">Select <strong>Preferences...</strong></font></li>');
  document.writeln('    <li><font face=\"Arial\">Select <strong>Advanced</strong> from the Category list.</font></li>');
  document.writeln('    <li><font face=\"Arial\">Check the <strong>Enable Java</strong> checkbox.</font></li>');
  document.writeln('</ul>');
  }
}
