// <!--
// Ultimate client-side JavaScript client sniff. Version 3.03
// (C) Netscape Communications 1999-2001.  Permission granted to reuse and distribute.

// 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, is_hotjava, is_webtv, is_TVNavigator, is_AOLTV
// (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_nav6, is_nav6up, is_gecko, is_ie3,
//     is_ie4, is_ie4up, is_ie5, is_ie5up, is_ie5_5, is_ie5_5up, is_ie6, is_ie6up
// (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_winme, is_win2k
//     is_mac, is_mac68k, is_macppc
//
// 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 new versions of browsers are released, so
// in conditional code forks, use is_ie5up ("IE 5.0 or greater") 
// is_opera5up ("Opera 5.0 or greater") instead of is_ie5 or is_opera5
// 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();

		// *** 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);
		
		    // Note: Opera and WebTV spoof Navigator.  We do strict client detection.
		    // If you want to allow spoofing, take out the tests for opera and webtv.
		    var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
		                && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
		                && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-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_nav6 = (is_nav && (is_major == 5));
		    var is_nav6up = (is_nav && (is_major >= 5));
		    var is_gecko = (agt.indexOf('gecko') != -1);
		
		
		    var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
		    var is_ie3    = (is_ie && (is_major < 4));
		    var is_ie4    = (is_ie && (is_major == 4) && (agt.indexOf("msie 4")!=-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_ie5_5  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.5") !=-1));
		    var is_ie5up  = (is_ie && !is_ie3 && !is_ie4);
		    var is_ie5_5up =(is_ie && !is_ie3 && !is_ie4 && !is_ie5);
		    var is_ie6    = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.")!=-1) );
		    var is_ie6up  = (is_ie && !is_ie3 && !is_ie4 && !is_ie5 && !is_ie5_5);
		
		// *** JAVASCRIPT VERSION CHECK ***
		    var is_js;
		    if (is_nav2 || is_ie3) is_js = 1.0;
		    else if (is_nav3) 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_nav6 || is_gecko) is_js = 1.5;
		    // 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_nav6up) is_js = 1.5;
		    // NOTE: ie5up on mac is 1.4
		    else if (is_ie5up) is_js = 1.3
		
		    // HACK: no idea for other browsers; always check for JS version with > or >=
		    else is_js = 0.0;
		
		// *** 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));
		
		    var is_winme = ((agt.indexOf("win 9x 4.90")!=-1));
		    var is_win2k = ((agt.indexOf("windows nt 5.0")!=-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);
		    // hack ie5 js version for mac
		    if (is_mac && is_ie5up) is_js = 1.4;
		    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)));

//--> end hide JavaScript
