// Ultimate client-side JavaScript client sniff. Version 3.03
// (C) Netscape Communications 1999-2001.  Permission granted to reuse and distribute.
// Revised 17 May 99 to add is_nav5up and is_ie5up (see below).
// Revised 20 Dec 00 to add is_gecko and change is_nav5up to is_nav6up
//                      also added support for IE5.5 Opera4&5 HotJava3 AOLTV
// Revised 22 Feb 01 to correct Javascript Detection for IE 5.x, Opera 4,
//                      correct Opera 5 detection
//                      add support for winME and win2k
//                      synch with browser-type-oo.js
// Revised 26 Mar 01 to correct Opera detection
// Revised 02 Oct 01 to add IE6 detection
// Revised 19 Jul 10 to add IE7, IE8, Vista, Windows 2008, Firefox 3 (dfd)
// Revised 20 Jul 10 to rewrote section that determine Windows
// Revised 28 Nov 11 to added numerous browser versions

	var _ClientSniff = "ClientSniff.js";
	var agt;
	if (typeof(Server) == 'undefined')
		agt		= navigator.userAgent;
	else
		agt		= Request.ServerVariables("HTTP_USER_AGENT") + '';
	agt			= agt.toLowerCase();

	var appVer;
	for (var i=0; i < agt.length; i++)
	{
		if (parseInt(agt.substr(i)) + '' != 'NaN')
		{
			appVer	= agt.substr(i);
			break;
		}
	}
	var is_major = parseInt(appVer);
	var is_minor = parseFloat(appVer);

    // 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.

	// Navigator
    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);

	// FireFox
	var is_firefox  = ((is_major == 5) && (agt.indexOf("firefox")!=-1));
	var is_firefox2 = ((is_major == 5) && (agt.indexOf("firefox/2.")!=-1));
	var is_firefox3 = ((is_major == 5) && (agt.indexOf("firefox/3.") != -1));
	var is_firefox4 = ((is_major == 5) && (agt.indexOf("firefox/4.") != -1));
	var is_firefox5 = ((is_major == 5) && (agt.indexOf("firefox/5.") != -1));
	var is_firefox6 = ((is_major == 5) && (agt.indexOf("firefox/6.") != -1));
	var is_firefox7 = ((is_major == 5) && (agt.indexOf("firefox/7.") != -1));
	var is_firefox8 = ((is_major == 5) && (agt.indexOf("firefox/8.") != -1));

	// Internet Explorer
    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_ie5		= (is_ie && (agt.indexOf("msie 5.0")!=-1) );
    var is_ie5_5	= (is_ie && (agt.indexOf("msie 5.5") !=-1));
	var is_ie5up	= (is_ie && !is_ie4 && !is_ie3);
    var is_ie6		= (is_ie && (agt.indexOf("msie 6.")!=-1) );
	var is_ie6up	= (is_ie5up && !is_ie5_5 && !is_ie5);
	var is_ie7		= (is_ie && (agt.indexOf("msie 7.")!=-1));
	var is_ie8		= (is_ie && (agt.indexOf("msie 8.")!=-1));
	var is_ie9		= (is_ie && (agt.indexOf("msie 9.")!=-1));

	// America On Line
    var is_aol		= (agt.indexOf("aol") != -1);
    var is_aol3		= (is_aol && is_ie3);
    var is_aol4		= (is_aol && is_ie4);
    var is_aol5		= (agt.indexOf("aol 5") != -1);
    var is_aol6		= (agt.indexOf("aol 6") != -1);
    var is_aol7		= (agt.indexOf("aol 7") != -1);
    var is_aol8 = (agt.indexOf("aol 8") != -1);
    var is_aol9 = (agt.indexOf("aol 9") != -1);

	// Opera
    var is_opera	= (agt.indexOf("opera") != -1);
    var is_opera2	= (agt.indexOf("opera 2") != -1 || agt.indexOf("opera/2") != -1);
    var is_opera3	= (agt.indexOf("opera 3") != -1 || agt.indexOf("opera/3") != -1);
    var is_opera4	= (agt.indexOf("opera 4") != -1 || agt.indexOf("opera/4") != -1);
    var is_opera5	= (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1);
    var is_opera5up	= (is_opera && !is_opera2 && !is_opera3 && !is_opera4);
    var is_opera6	= (agt.indexOf("opera 6") != -1 || agt.indexOf("opera/6") != -1);
    var is_opera7 = (agt.indexOf("opera 7") != -1 || agt.indexOf("opera/7") != -1);
    var is_opera8 = (agt.indexOf("opera 8") != -1 || agt.indexOf("opera/8") != -1);
    var is_opera9 = (agt.indexOf("opera 9") != -1 || agt.indexOf("opera/9") != -1);
    var is_opera10 = (agt.indexOf("opera 10") != -1 || agt.indexOf("opera/10") != -1);
    var is_opera11 = (agt.indexOf("opera 11") != -1 || agt.indexOf("opera/11") != -1);

	// Hot Java
    var is_hotjava	= (agt.indexOf("hotjava") != -1);
    var is_hotjava3	= (is_hotjava && (is_major == 3));
    var is_hotjava3up = (is_hotjava && (is_major >= 3));

	// Misc. Browsers
    var is_webtv 	= (agt.indexOf("webtv") != -1);
    var is_TVNavigator = ((agt.indexOf("navio") != -1) || (agt.indexOf("navio_aoltv") != -1));
    var is_AOLTV	= is_TVNavigator;

    // *** 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_opera5up)
		is_js = 1.3;
    else if (is_opera)
		is_js = 1.1;
    else if ((is_nav4 && (is_minor <= 4.05)) || is_ie4)											//> (shut up NoteTab Pro)
		is_js = 1.2;
    else if ((is_nav4 && (is_minor > 4.05)) || is_ie5)
		is_js = 1.3;
    else if (is_hotjava3up)
		is_js = 1.4;
    else if (is_nav6 || is_gecko)
		is_js = 1.5;
    else if (is_nav6up)
		is_js = 1.5;
    else if (is_ie5up)
		is_js = 1.3
    else if ((agt.indexOf("mac")!=-1) && is_ie5up)
		is_js = 1.4;
    else
		is_js = 0.0;


	var browserVer = "(unknown browser)";

	/////////////////////////////////////////////////////////////
	// Internet Explorer
	/////////////////////////////////////////////////////////////
	if (is_ie9)
		browserVer	= 'Windows Internet Explorer 9';
	if (is_ie8)
		browserVer	= 'Microsoft Internet Explorer version 8';
	else if (is_ie7)
		browserVer	= 'Microsoft Internet Explorer version 7';
	else if (is_ie6)
		browserVer	= 'Microsoft Internet Explorer version 6';
	else if (is_ie5_5)
		browserVer	= 'Microsoft Internet Explorer version 5.5';
	else if (is_ie5)
		browserVer	= 'Microsoft Internet Explorer version 5.0';
	else if (is_ie4)
		browserVer	= 'Microsoft Internet Explorer version 4';
	else if (is_ie3)
		browserVer	= 'Microsoft Internet Explorer version 3';
	else if (is_ie)
		browserVer	= 'Microsoft Internet Explorer version 2';

	/////////////////////////////////////////////////////////////
	// FireFox
	/////////////////////////////////////////////////////////////
	else if (is_firefox8)
		browserVer = 'Mozilla Firefox version 8';
	else if (is_firefox7)
		browserVer = 'Mozilla Firefox version 7';
	else if (is_firefox6)
		browserVer = 'Mozilla Firefox version 6';
	else if (is_firefox5)
		browserVer = 'Mozilla Firefox version 5';
	else if (is_firefox4)
		browserVer = 'Mozilla Firefox version 4';
	else if (is_firefox3)
		browserVer	= 'Mozilla Firefox version 3';
	else if (is_firefox2)
		browserVer	= 'Mozilla Firefox version 2';
	else if (is_firefox)
		browserVer	= 'Mozilla Firefox (unknown version)';

	/////////////////////////////////////////////////////////////
	// NetScape
	/////////////////////////////////////////////////////////////
	else if (is_nav6 || is_nav6up)
		browserVer	= 'Netscape Navigator version 6';
	else if (is_nav4 || is_nav4up)
		browserVer	= 'Netscape Navigator version 4';
	else if (is_nav3)
		browserVer	= 'Netscape Navigator version 3';
	else if (is_nav2)
		browserVer	= 'Netscape Navigator version 2';
	else if (is_nav)
		browserVer	= 'Netscape Navigator (unknown version)';

	/////////////////////////////////////////////////////////////
	// America OnLine
	/////////////////////////////////////////////////////////////
	else if (is_aol9)
		browserVer = 'America Online version 9';
	else if (is_aol8)
		browserVer = 'America Online version 8';
	else if (is_aol7)
		browserVer	= 'America Online version 7';
	else if (is_aol6)
		browserVer	= 'America Online version 6';
	else if (is_aol5)
		browserVer	= 'America Online version 5';
	else if (is_aol4)
		browserVer	= 'America Online version 4';
	else if (is_aol3)
		browserVer	= 'America Online version 3';
	else if (is_aol)
		browserVer	= 'America Online (unknown version)';

	/////////////////////////////////////////////////////////////
	// Opera
	/////////////////////////////////////////////////////////////
	else if (is_opera11)
		browserVer = 'Opera version 11';
	else if (is_opera10)
		browserVer = 'Opera version 10';
	else if (is_opera9)
		browserVer = 'Opera version 9';
	else if (is_opera8)
		browserVer = 'Opera version 8';
	else if (is_opera7)
		browserVer = 'Opera version 7';
	else if (is_opera6)
		browserVer	= 'Opera version 6';
	else if (is_opera5up || is_opera5)
		browserVer	= 'Opera version 5';
	else if (is_opera4)
		browserVer	= 'Opera version 4';
	else if (is_opera3)
		browserVer	= 'Opera version 3';
	else if (is_opera2)
		browserVer	= 'Opera version 2';
	else if (is_opera)
		browserVer	= 'Opera (unknown version)';



	//////////////////////////////////////////////////////////////////////////
	// Windows
	//////////////////////////////////////////////////////////////////////////

	var is_win7			= false;
	var is_win2k8		= false;
	var is_winVista		= false;
	var is_win2k3		= false;
	var is_winxp_up		= false;
	var is_winxp		= false;
	var is_win2k		= false;
	var is_winme		= false;
	var is_win98		= false;
	var is_win95		= false;
	var is_winnt		= false;
	var is_win16		= false;

	var is_win32		= false;
	var is_winxp_up		= false;
	var is_win			= false;

	if ((agt.indexOf("windows nt 6.1")!=-1) && (agt.indexOf("trident/5.0")!=-1))
		is_win7			= true;
	else if ((agt.indexOf("windows nt 6.1")!=-1) && ((agt.indexOf("trident/4.0")!=-1) || agt.indexOf("wow64")!=-1))
		is_win2k8		= true;
	else if (agt.indexOf("windows nt 6.0")!=-1)
		is_winVista		= true;
	else if (agt.indexOf("windows nt 5.2")!=-1)
		is_win2k3		= true;
	else if (agt.indexOf("windows nt 5.1")!=-1)
		is_winxp		= true;
	else if (agt.indexOf("windows nt 5.0")!=-1)
		is_win2k		= true;
	else if (agt.indexOf("win 9x 4.90")!=-1)
		is_winme		= true;
	else if ((agt.indexOf("win98")!=-1) || (agt.indexOf("windows 98")!=-1))
		is_win98		= true;
	else if ((agt.indexOf("win95")!=-1) || (agt.indexOf("windows 95")!=-1))
		is_win95		= true;
	else if ((agt.indexOf("winnt")!=-1) || (agt.indexOf("windows nt")!=-1))
		is_winnt		= true;
	else if ((agt.indexOf("win16")!=-1) || (agt.indexOf("16bit")!=-1) || (agt.indexOf("windows 3.1")!=-1) || (agt.indexOf("windows 16-bit")!=-1))
		is_win16 = true;

	is_win 			= (is_win7 || is_win2k8 || is_winVista || is_win2k3 || is_winxp || is_win2k || is_winme || is_win98 || is_win95 || is_winnt || is_win16);
	is_win32		= (is_win7 || is_win2k8 || is_winVista || is_win2k3 || is_winxp || is_win2k || is_winme || is_win98 || is_win95 || is_winnt);
	is_winxp_up		= (is_win7 || is_win2k8 || is_winVista || is_win2k3 || is_winxp);



	///////////////////////////////////////////////////////////////////
	// Non-Microsoft Operating Systems
	///////////////////////////////////////////////////////////////////

    var is_os2  	= ((agt.indexOf("os/2")!=-1) || (agt.indexOf("ibm-webexplorer")!=-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_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));


	////////////////////////////////////////////////////////////////
	// Operating System Descriptions and End of Life
	////////////////////////////////////////////////////////////////

	var osVer				= 'unknown';
	var osNonSupportDate	= '';

	if (is_win7)
	{
		osVer				= 'Windows 7';
		osNonSupportDate	= '1/13/2015';
	}
	if (is_win2k8)
	{
		osVer				= 'Windows Server 2008';
		osNonSupportDate	= '7/9/2013';
	}
	if (is_winVista)
	{
		osVer				= 'Windows Vista';
		osNonSupportDate	= '4/10/2012';
	}
	else if (is_win2k3)
	{
		osVer				= 'Windows Server 2003';
		osNonSupportDate	= '7/14/2015';
	}
	else if (is_winxp)
	{
		osVer				= 'Windows XP';
		osNonSupportDate	= '4/8/2014';
	}
	else if (is_win2k)
	{
		osVer				= 'Windows 2000';
		osNonSupportDate	= '7/13/2010';
	}
	else if (is_winnt)
	{
		osVer				= 'Windows NT';
		osNonSupportDate	= '6/30/2004';
	}
	else if (is_winme)
	{
		osVer				= 'Windows ME';
		osNonSupportDate	= '7/11/2006';
	}
	else if (is_win98)
	{
		osVer				= 'Windows 98';
		osNonSupportDate	= '7/11/2006';
	}
	else if (is_win95)
	{
		osVer				= 'Windows 95';
		osNonSupportDate	= '12/31/2001';
	}
	else if (is_win16)
	{
		osVer				= 'Windows 3.1x';
		osNonSupportDate	= '12/31/2000';
	}

	else if (is_mac)
	{
		osVer				= 'Macintosh';
	}
	else if (is_unix)
	{
		osVer				= 'Unix';
	}
	else if (is_os2)
	{
		osVer				= 'OS/2';
	}
	else if (is_vms)
	{
		osVer				= 'VMS';
	}
