/*******************************************************************
Browser Detection

	JavaScript Browser Sniffer
	Eric Krok, Andy King, Michel Plungjan Jan. 31, 2002
	see http://www.webreference.com/ for more information

	This program is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation; either version 2 of the License, or
	(at your option) any later version.

	please send any improvements to aking@internet.com

	adapted from Netscape's Ultimate client-side JavaScript client sniffer
	and andy king's sniffer
	Revised May 7 99 to add is.nav5up and is.ie5up (see below). (see below).
	Revised June 11 99 to add additional props, checks
	Revised June 23 99 added screen props - gecko m6 doesn't support yet - abk
	                   converted to var this. from is object to work everywhere
	19990624 - added cookie forms links frames checks - abk
	20001031 - ie4 mod 5.0 -> 5. (ie5.5 mididentified - abk)
	           this.ie4 mod tp work with ie6+ - abk
	20001120 - ns6 released, document.layers false, put back in
	         - this.nav6 test added - abk
	20001121 - ns6+ added, used document.getElementById, better test, dom-compl
	20010117 - actual version for ie3-5.5 by Michel Plungjan
	20010118 - actual version for ns6 by Michel Plungjan
	20010217 - netscape 6/mz 6 ie5.5 onload defer bug docs - abk
	20011107 - added this.ie6 and this.ie6up variables - dmr
	20020128 - added link to netscape's sniffer, on which this is based - abk
	           updated sniffer for aol4-6, ie5mac = js1.4, TVNavigator, AOLTV,
	           hotjava
	20020131 - cleaned up links, added more links to example object detection
	20020131 - a couple small problems with Opera detection. First, when Opera
	           is set to be compatible with other browsers it will contain their
	           information in the userAgent strings. Thus, to be sure we have
	           Opera we should check for it before checking for the other bigs.
	           (And make sure the others are !opera.) Also corrected a minor
	           bug in the this.opera6up assignment.
	20020214 - Added link for Opera/JS compatibility; added improvements for
	           windows xp/2000 id in opera and aol 7 id.
	20020531 - Added N6/7 and moz identifiers.
	20020605 - Added mozilla guessing, Netscape 7 identification, and cleaner
	           identification for Netscape 6.
	20020725 - Added this.gecko. -- dmr
	20021205 - Added this.Flash and this.FlashVersion, based on Doc JavaScript code.
	           Added Opera 7 variables. -- dmr
	20021209 - Added aol8. -- dmr
	20030110 - Added this.safari, added 1.5 js designation for Opera 7. --dmr
	20030128 - Added this.konq.
	           Removed duplicate Opera checks left over after last revision. - dmr
	20031124 - Added this.fb and version. We report this right after the this.moz
	           report. - dmr
	20040325 - Added this.firefox and version. We report this right after the this.moz
	           report. - dmr
	20040421 - Added Debian check to this.moz.
	20040517 - Added this.fb/this.firefox to plugins based flash detection.
	20040617 - On Mac IE, appVersion differs from the version in the ua,
	           with the UA appearing to be more accurate. As an experiment,
	           for Mac we'll pull this.minor from the ua instead.
	20040831 - Fixed Opera bug in flash detection logic; when Opera has
	           "enable plugins" unchecked in preferences, the "plugin"
	           variable is still true, but the "description" property
	           belonging to it is undefined.

	Everything you always wanted to know about your JavaScript client
	but were afraid to ask. Creates "this." variables indicating:
	(1) browser vendor:
	    this.nav, this.ie, this.opera
	(2) browser version number:
	    this.major (integer indicating major version number: 2, 3, 4 ...)
	    this.minor (float   indicating full  version number: 2.02, 3.01, 4.04 ...)
	(3) browser vendor AND major version number
	    this.nav2, this.nav3, this.nav4, this.nav4up, this.nav5, this.nav5up,
	    this.nav6, this.nav6up, this.ie3, this.ie4, this.ie4up, this.ie5up, this.ie6...
	(4) JavaScript version number:
	    this.js (float indicating full JavaScript version number: 1, 1.1, 1.2 ...)
	(5) OS platform and version:
	    this.win, this.win16, this.win32, this.win31, this.win95, this.winnt, this.win98
	    this.os2
	    this.mac, this.mac68k, this.macppc
	    this.unix
	       this.sun, this.sun4, this.sun5, this.suni86
	       this.irix, this.irix5, this.irix6
	       this.hpux, this.hpux9, this.hpux10
	       this.aix, this.aix1, this.aix2, this.aix3, this.aix4
	       this.linux, this.sco, this.unixware, this.mpras, this.reliant
	       this.dec, this.sinix, this.freebsd, this.bsd
	    this.vms

	based in part on
	http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
	The Ultimate JavaScript Client Sniffer
	and Andy King's object detection sniffer

	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 this.nav4up ("Nav4 or greater")
	and this.ie4up ("IE4 or greater") instead of this.nav4 or this.ie4
	to check version in code which you want to work on future
	versions. For DOM tests scripters commonly used the
	this.getElementById test, but make sure you test your code as
	filter non-compliant browsers (Opera 5-6 for example) as some
	browsers return true for this test, and don't fully support
	the W3C's DOM1.
*******************************************************************/

function Browser(){
	this.platform=navigator.platform;
	this.agent=navigator.userAgent.toLowerCase();
	this.appVer=navigator.appVersion.toLowerCase();
	this.psub=navigator.productSub;

	// *** BROWSER VERSION ***
	this.minor = parseFloat(this.appVer);
	this.major = parseInt(this.minor);

	this.dom=document.getElementById?1:0;
	this.getElementById   = (document.getElementById)?true:false;
	this.getElementsByTagName = (document.getElementsByTagName)?true:false;
	this.documentElement = (document.documentElement)?true:false;

	// *** NAVIGATORS ***

	// Note: On IE, start of appVersion return 3 or 4
	// which supposedly is the version of Netscape it is compatible with.
	// So we look for the real version further on in the string
	// And on Mac IE5+, we look for this.minor in the ua; since
	// it appears to be more accurate than appVersion - 06/17/2004

	iePos = this.appVer.indexOf('msie');
	if (iePos !=-1) {
		if(this.mac) {
			iePos = this.agent.indexOf('msie');
			this.minor = parseFloat(this.agent.substring(iePos+5, this.agent.indexOf(';',iePos)));
		}
		else this.minor = parseFloat(this.appVer.substring(iePos+5, this.appVer.indexOf(';',iePos)));
		this.major = parseInt(this.minor);
	}

	this.webtv = (this.agent.indexOf("webtv") != -1)?true:false;

	this.TVNavigator = ((this.agent.indexOf("navio") != -1) || (this.agent.indexOf("navio_aoltv") != -1))?true:false;
	this.AOLTV = this.TVNavigator;

	this.hotjava = (this.agent.indexOf("hotjava") != -1)?true:false;
	this.hotjava3 = (this.hotjava && (this.major == 3))?true:false;
	this.hotjava3up = (this.hotjava && (this.major >= 3))?true:false;

	this.konq = false;
	kqPos = this.agent.indexOf('konqueror');
	if (kqPos !=-1) {
	   this.konq  = true;
	   this.minor = parseFloat(this.agent.substring(kqPos+10, this.agent.indexOf(';',kqPos)));
	   this.major = parseInt(this.minor);
	}

	this.safari = ((this.agent.indexOf('safari')!=-1)&&(this.agent.indexOf('mac')!=-1))?true:false;
	this.khtml  = (this.safari || this.konq)?true:false;

	this.gecko = ((!this.khtml)&&(navigator.product)&&(navigator.product.toLowerCase()=="gecko"))?true:false;
	this.gver  = 0;
	if (this.gecko) this.gver=navigator.productSub;

	this.moz = ((this.agent.indexOf('mozilla/5')!=-1) && (this.agent.indexOf('spoofer')==-1) &&
                (this.agent.indexOf('compatible')==-1) && (this.agent.indexOf('opera')==-1)  &&
                (this.agent.indexOf('webtv')==-1) && (this.agent.indexOf('hotjava')==-1)     &&
                (this.gecko) &&
                ((navigator.vendor=="")||(navigator.vendor=="Mozilla")||(navigator.vendor=="Debian")))?true:false;
	this.fb = ((this.agent.indexOf('mozilla/5')!=-1) && (this.agent.indexOf('spoofer')==-1) &&
				(this.agent.indexOf('compatible')==-1) && (this.agent.indexOf('opera')==-1)  &&
				(this.agent.indexOf('webtv')==-1) && (this.agent.indexOf('hotjava')==-1)     &&
				(this.gecko) && (navigator.vendor=="Firebird"))?true:false;
	this.firefox = ((this.agent.indexOf('mozilla/5')!=-1) && (this.agent.indexOf('spoofer')==-1) &&
				(this.agent.indexOf('compatible')==-1) && (this.agent.indexOf('opera')==-1)  &&
				(this.agent.indexOf('webtv')==-1) && (this.agent.indexOf('hotjava')==-1)     &&
				(this.gecko) && ((navigator.vendor=="Firefox") || (this.agent.indexOf('firefox')!=-1)))?true:false;
	if ((this.moz)||(this.fb)||(this.firefox)) {
		this.moz_ver = (navigator.vendorSub)?navigator.vendorSub:0;
		if(!(this.moz_ver)) {
			this.moz_ver = this.agent.indexOf('rv:');
			this.moz_ver = this.agent.substring(this.moz_ver+3);
			this.paren   = this.moz_ver.indexOf(')');
			this.moz_ver = this.moz_ver.substring(0,this.paren);
	   }
	   this.minor = this.moz_ver;
	   this.major = parseInt(this.moz_ver);
	}
	this.fb_ver = this.moz_ver;
	this.firefox_ver = this.moz_ver;

	this.opera = (this.agent.indexOf("opera") != -1)?true:false;
	this.opera2 = (this.agent.indexOf("opera 2") != -1 || this.agent.indexOf("opera/2") != -1)?true:false;
	this.opera3 = (this.agent.indexOf("opera 3") != -1 || this.agent.indexOf("opera/3") != -1)?true:false;
	this.opera4 = (this.agent.indexOf("opera 4") != -1 || this.agent.indexOf("opera/4") != -1)?true:false;
	this.opera5 = (this.agent.indexOf("opera 5") != -1 || this.agent.indexOf("opera/5") != -1)?true:false;
	this.opera6 = (this.agent.indexOf("opera 6") != -1 || this.agent.indexOf("opera/6") != -1)?true:false;
	this.opera7 = (this.agent.indexOf("opera 7") != -1 || this.agent.indexOf("opera/7") != -1)?true:false;
	this.opera5up = (this.opera && !this.opera2 && !this.opera3 && !this.opera4)?true:false;
	this.opera6up = (this.opera && !this.opera2 && !this.opera3 && !this.opera4 && !this.opera5)?true:false; // new020128
	this.opera7up = (this.opera && !this.opera2 && !this.opera3 && !this.opera4 && !this.opera5 && !this.opera6)?true:false; // new021205 -- dmr
	this.operaOld=window.opera&&!this.opera7?true:false;

	this.ie      = ((iePos!=-1) && (!this.opera) && (!this.khtml))?true:false;
	this.ie3     = (this.ie && (this.major < 4))?true:false;
	this.ie4     = (this.ie && this.major == 4)?true:false;
	this.ie4up   = (this.ie && this.minor >= 4)?true:false;
	this.ie5     = (this.ie && this.major == 5)?true:false;
	this.ie5up   = (this.ie && this.minor >= 5)?true:false;
	this.ie55   = (this.ie && (this.agent.indexOf("msie 5.5") !=-1))?true:false;
	this.ie55up =(this.ie && this.minor >= 5.5)?true:false;
	this.ie6     = (this.ie && this.major == 6)?true:false;
	this.ie6up   = (this.ie && this.minor >= 6)?true:false;
	this.ie7     = (this.ie && this.major == 7)?true:false;
	this.ie7up   = (this.ie && this.minor >= 7)?true:false;

	this.mac = (this.agent.indexOf("mac")!=-1)?true:false;
	this.mac_ie = this.mac && this.ie?true:false;

	this.nav  = ((this.agent.indexOf('mozilla')!=-1) && (this.agent.indexOf('spoofer')==-1) && (this.agent.indexOf('compatible') == -1)
	            && (!this.webtv) && (!this.hotjava) && (!this.opera)
	            && (!this.khtml) && (!(this.moz)) && (!this.fb) && (!this.firefox))?true:false;

	// Netscape6 is mozilla/5 + Netscape6/6.0!!!
	// Mozilla/5.0 (Windows; U; Win98; en-US; m18) Gecko/20001108 Netscape6/6.0
	// Changed this to use navigator.vendor/vendorSub - dmr 060502
	// var nav6Pos = this.agent.indexOf('netscape6');
	// if (nav6Pos !=-1) {
	if ((navigator.vendor)&&((navigator.vendor=="Netscape6")||(navigator.vendor=="Netscape"))&&(this.nav)) {
	   this.major = parseInt(navigator.vendorSub);
	   // here we need this.minor as a valid float for testing. We'll
	   // revert to the actual content before printing the result.
	   this.minor = parseFloat(navigator.vendorSub);
	}
	this.navonly = (this.nav && ((this.agent.indexOf(";nav") != -1) || (this.agent.indexOf("; nav") != -1)))?true:false;
	this.nav2   = (this.nav && (this.major == 2))?true:false;
	this.nav3   = (this.nav && (this.major == 3))?true:false;
	this.nav4 = (this.nav && (this.major == 4))?true:false;
	//this.nav4   = (document.layers && !this.dom)?true:false;
	this.nav4up = (this.nav && (this.minor >= 4))?true:false;

	//this.nav6   = (this.nav && this.major==6)?true:false;
	this.nav6   = (this.nav && this.dom && this.major>=5)?true:false;
	this.nav6up = (this.nav && this.minor >= 6)?true:false;
	this.nav5   = (this.nav && this.major == 5 && !this.nav6)?true:false;
	this.nav5up = (this.nav && this.minor >= 5)?true:false;
	this.nav7   = (this.nav && this.major == 7)?true:false;
	this.nav7up = (this.nav && this.minor >= 7)?true:false;

	// KNOWN BUG: On AOL4, returns false if IE3 is embedded browser
	// or if this is the first browser window opened.  Thus the
	// variables this.aol, this.aol3, and this.aol4 aren't 100% reliable.
	this.aol   = (this.agent.indexOf("aol") != -1)?true:false;
	this.aol3  = (this.aol && this.ie3)?true:false;
	this.aol4  = (this.aol && this.ie4)?true:false;
	this.aol5  = (this.agent.indexOf("aol 5") != -1)?true:false;
	this.aol6  = (this.agent.indexOf("aol 6") != -1)?true:false;
	this.aol7  = ((this.agent.indexOf("aol 7")!=-1) || (this.agent.indexOf("aol7")!=-1))?true:false;
	this.aol8  = ((this.agent.indexOf("aol 8")!=-1) || (this.agent.indexOf("aol8")!=-1))?true:false;

	this.bw=(this.ie4up||this.nav4up||this.opera||this.mac||this.gecko)?true:false;
	this.usedom= (this.nav6||this.opera7)?true:false;  //Use dom creation
	this.reuse = (this.ie||this.opera7||this.usedom)?true:false;   //Reuse layers
	this.px = (this.dom&&!this.opera5)?"px":"";


	// *** JAVASCRIPT VERSION CHECK ***
	// Useful to workaround Nav3 bug in which Nav3
	// loads <SCRIPT LANGUAGE="JavaScript1.2">.
	// 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 >=.
	this.js;
	if (this.nav2 || this.ie3) this.js = 1.0;
	else if (this.nav3 || this.opera) this.js = 1.1;
	else if (this.opera5 || this.opera6) this.js = 1.3;
	else if ((this.nav4 && (this.minor <= 4.05)) || this.ie4) this.js = 1.2;
	else if (this.nav4 && (this.minor > 4.05)) this.js = 1.3;
	else if (this.ie5up) this.js = 1.3;
	else if (this.nav5up && !this.nav6up) this.js = 1.4;
	else if (this.hotjava3up) this.js = 1.4;
	else if (this.nav6up || this.opera7up || this.khtml) this.js = 1.5;
	else if (this.moz || this.fb || this.firefox) this.js = 1.5;
	// what about ie6 and ie6up for js version? abk
	// HACK: no idea for other browsers
	else this.js = 0.0;
	// HACK FOR IE5 MAC = js vers = 1.4 (if put inside if/else jumps out at 1.3)
	if ((this.agent.indexOf("mac")!=-1) && this.ie5up) this.js = 1.4;


	// *** PLATFORM ***
	this.win   = ( (this.agent.indexOf("win")!=-1) || (this.agent.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.
	this.win95 = ((this.agent.indexOf("win95")!=-1) || (this.agent.indexOf("windows 95")!=-1));

	// is this a 16 bit compiled version?
	this.win16 = ((this.agent.indexOf("win16")!=-1) ||
	           (this.agent.indexOf("16bit")!=-1) || (this.agent.indexOf("windows 3.1")!=-1) ||
	           (this.agent.indexOf("windows 16-bit")!=-1) );

	this.win31 = ((this.agent.indexOf("windows 3.1")!=-1) || (this.agent.indexOf("win16")!=-1) ||
	                (this.agent.indexOf("windows 16-bit")!=-1));

	this.winme = ((this.agent.indexOf("win 9x 4.90")!=-1));    // new 020128 - abk
	this.win2k = ((this.agent.indexOf("windows nt 5.0")!=-1) || (this.agent.indexOf("windows 2000")!=-1)); // 020214 - dmr
	this.winxp = ((this.agent.indexOf("windows nt 5.1")!=-1) || (this.agent.indexOf("windows xp")!=-1)); // 020214 - dmr

	// 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".
	this.win98 = ((this.agent.indexOf("win98")!=-1) || (this.agent.indexOf("windows 98")!=-1));
	this.winnt = ((this.agent.indexOf("winnt")!=-1) || (this.agent.indexOf("windows nt")!=-1));
	this.win32 = (this.win95 || this.winnt || this.win98 ||
	                ((this.major >= 4) && (navigator.platform == "Win32")) ||
	                (this.agent.indexOf("win32")!=-1) || (this.agent.indexOf("32bit")!=-1));

	this.os2   = ((this.agent.indexOf("os/2")!=-1) ||
	                (this.appVer.indexOf("OS/2")!=-1) ||
	                (this.agent.indexOf("ibm-webexplorer")!=-1));

	this.mac    = (this.agent.indexOf("mac")!=-1);
	if (this.mac) { this.win = !this.mac; } // dmr - 06/20/2002
	this.mac68k = (this.mac && ((this.agent.indexOf("68k")!=-1) ||
	                           (this.agent.indexOf("68000")!=-1)));
	this.macppc = (this.mac && ((this.agent.indexOf("ppc")!=-1) ||
	                            (this.agent.indexOf("powerpc")!=-1)));

	this.sun   = (this.agent.indexOf("sunos")!=-1);
	this.sun4  = (this.agent.indexOf("sunos 4")!=-1);
	this.sun5  = (this.agent.indexOf("sunos 5")!=-1);
	this.suni86= (this.sun && (this.agent.indexOf("i86")!=-1));
	this.irix  = (this.agent.indexOf("irix") !=-1);    // SGI
	this.irix5 = (this.agent.indexOf("irix 5") !=-1);
	this.irix6 = ((this.agent.indexOf("irix 6") !=-1) || (this.agent.indexOf("irix6") !=-1));
	this.hpux  = (this.agent.indexOf("hp-ux")!=-1);
	this.hpux9 = (this.hpux && (this.agent.indexOf("09.")!=-1));
	this.hpux10= (this.hpux && (this.agent.indexOf("10.")!=-1));
	this.aix   = (this.agent.indexOf("aix") !=-1);      // IBM
	this.aix1  = (this.agent.indexOf("aix 1") !=-1);
	this.aix2  = (this.agent.indexOf("aix 2") !=-1);
	this.aix3  = (this.agent.indexOf("aix 3") !=-1);
	this.aix4  = (this.agent.indexOf("aix 4") !=-1);
	this.linux = (this.agent.indexOf("inux")!=-1);
	this.sco   = (this.agent.indexOf("sco")!=-1) || (this.agent.indexOf("unix_sv")!=-1);
	this.unixware = (this.agent.indexOf("unix_system_v")!=-1);
	this.mpras    = (this.agent.indexOf("ncr")!=-1);
	this.reliant  = (this.agent.indexOf("reliantunix")!=-1);
	this.dec   = ((this.agent.indexOf("dec")!=-1) || (this.agent.indexOf("osf1")!=-1) ||
	       (this.agent.indexOf("dec_alpha")!=-1) || (this.agent.indexOf("alphaserver")!=-1) ||
	       (this.agent.indexOf("ultrix")!=-1) || (this.agent.indexOf("alphastation")!=-1));
	this.sinix = (this.agent.indexOf("sinix")!=-1);
	this.freebsd = (this.agent.indexOf("freebsd")!=-1);
	this.bsd = (this.agent.indexOf("bsd")!=-1);
	this.unix  = ((this.agent.indexOf("x11")!=-1) || this.sun || this.irix || this.hpux ||
	             this.sco ||this.unixware || this.mpras || this.reliant ||
	             this.dec || this.sinix || this.aix || this.linux || this.bsd || this.freebsd);

	this.vms   = ((this.agent.indexOf("vax")!=-1) || (this.agent.indexOf("openvms")!=-1));

	// additional checks, abk
	this.anchors = (document.anchors) ? "true":"false";
	this.regexp = (window.RegExp) ? "true":"false";
	this.option = (window.Option) ? "true":"false";
	this.all = (document.all) ? "true":"false";
	// cookies - 990624 - abk
	document.cookie = "cookies=true";
	this.cookie = (document.cookie) ? "true" : "false";
	this.images = (document.images) ? "true":"false";
	this.layers = (document.layers) ? "true":"false"; // gecko m7 bug?
	// new doc obj tests 990624-abk
	this.forms = (document.forms) ? "true" : "false";
	this.links = (document.links) ? "true" : "false";
	this.frames = (window.frames) ? "true" : "false";
	this.screen = (window.screen) ? "true" : "false";

	// java
	this.java = (navigator.javaEnabled());

	// Flash checking code adapted from Doc JavaScript information;
	// see http://webref.com/js/column84/2.html

	this.Flash        = false;
	this.FlashVersion = 0;

	if ((this.nav||this.opera||this.moz||this.fb||this.firefox)||
	   (this.mac&&this.ie5up)) {
	  var plugin = (navigator.mimeTypes &&
	                navigator.mimeTypes["application/x-shockwave-flash"] &&
	                navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin) ?
	                navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0;
	//      if (plugin) {
	  if (plugin&&plugin.description) {
	     this.Flash = true;
	     this.FlashVersion = parseInt(plugin.description.substring(plugin.description.indexOf(".")-1));
	  }
	}

	if (this.win&&this.ie4up)
	{
	  document.write(
	     '<scr' + 'ipt language=VBScript>' + '\n' +
	     'Dim hasPlayer, playerversion' + '\n' +
	     'hasPlayer = false' + '\n' +
	     'playerversion = 10' + '\n' +
	     'Do While playerversion > 0' + '\n' +
	        'On Error Resume Next' + '\n' +
	        'hasPlayer = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & playerversion)))' + '\n' +
	        'If hasPlayer = true Then Exit Do' + '\n' +
	        'playerversion = playerversion - 1' + '\n' +
	     'Loop' + '\n' +
	     'this.FlashVersion = playerversion' + '\n' +
	     'this.Flash = hasPlayer' + '\n' +
	     '<\/sc' + 'ript>'
	  );
	}

	this.getBrowser=function getBrowser() {
		this.browser="";
		this.client="";
		this.version=this.minor;

		if (this.aol) this.client = "AOL Explorer";
		if(this.aol3) this.browser= "aol3";
		if(this.aol4) this.browser= "aol4";
		if(this.aol5) this.browser= "aol5";
		if(this.aol6) this.browser= "aol6";
		if(this.aol7) this.browser= "aol7";
		if(this.aol8) this.browser= "aol8";
		if(this.AOLTV) { this.browser= "AOLTV"; this.client = "AOL"; }

		if (this.ie) this.client = "Internet Explorer";
		if(this.ie3) this.browser= "ie3";
		if(this.ie4) this.browser= "ie4";
		if(this.ie5) this.browser= "ie5";
		if(this.ie55) this.browser= "ie55";
		if(this.ie6) this.browser= "ie6";
		if(this.ie7) this.browser= "ie7";

		if (this.nav)  this.client = "Netscape Navigator";
		if(this.nav2) this.browser= "nav2";
		if(this.nav3) this.browser= "nav3";
		if(this.nav4) this.browser= "nav4up";
		if(this.nav6) this.browser= "nav6";
		if(this.nav7) this.browser= "nav7";
		if(this.nav8) this.browser= "nav8";

		if (this.opera) this.client = "Opera";
		if(this.opera2) this.browser= "opera2";
		if(this.opera3) this.browser= "opera3";
		if(this.opera4) this.browser= "opera4";
		if(this.opera5) this.browser= "opera5";
		if(this.opera6) this.browser= "opera6";
		if(this.opera7) this.browser= "opera7";

		if(this.moz ){this.browser= "moz"; this.client = "Mozilla";}
		if(this.gecko){this.browser= "gecko"; this.client = "Gecko";}
		if(this.firebird){this.browser= "firebird"; this.client = "Firebird";}
		if(this.firefox){this.browser= "firefox"; this.client = "Firefox";}
		if(this.hotjava3){this.browser= "hotjava3"; this.client = "HotJava";}
		if(this.mac){this.browser= "mac"; this.client = "Mac";}

		if(this.khtml){this.browser= "khtml"; this.client = "KHTML";}
		if(this.konq){this.browser= "konq"; this.client = "Konqueror";}
		if(this.safari){this.browser= "safari"; this.client = "Safari";}
		if(this.TVNavigator){this.browser= "TVNavigator"; this.client = "TVNavigator";}
		if(this.webtv){this.browser= "webtv"; this.client = "WebTV";}

		return this.browser;
	}
/*
	this.getPlatform=function getPlatform() {
		this.platform="";
		if(this.aix){this.platform="aix";}if(this.aix1){this.platform="aix1";}if(this.aix2){this.platform="aix2";}if(this.aix3){this.platform="aix3";}if(this.aix4){this.platform="aix4";}if(this.irix){this.platform="irix";}if(this.irix5){this.platform="irix5";}if(this.irix6){this.platform="irix6";}
		if(this.bsd){this.platform="bsd";}if(this.dec){this.platform="dec";}if(this.freebsd){this.platform="freebsd";}if(this.mac){this.platform="mac";}if(this.mac68k){this.platform="mac68k";}if(this.macppc){this.platform="macppc";}
		if(this.mpras){this.platform="mpras";}if(this.os2){this.platform="os2";}if(this.reliant){this.platform="reliant";}if(this.sco){this.platform="sco";}if(this.sinix){this.platform="sinix";}if(this.sun){this.platform="sun";}if(this.sun4){this.platform="sun4";}if(this.sun5){this.platform="sun5";}if(this.suni86){this.platform="suni86";}
		if(this.hpux){this.platform="hpux";}if(this.hpux9){this.platform="hpux9";}if(this.hpux10){this.platform="hpux10";}if(this.linux){this.platform="linux";}if(this.unix){this.platform="unix";}if(this.unixware){this.platform="unixware";}if(this.vms){this.platform="vms";}
		if(this.win){this.platform="win";}if(this.win16){this.platform="win16";}if(this.win2k){this.platform="win2k";}if(this.win31){this.platform="win31";}if(this.win32){this.platform="win32";}if(this.win95){this.platform="win95";}if(this.win98){this.platform="win98";}if(this.winme){this.platform="winme";}if(this.winnt){this.platform="winnt";}if(this.winxp){this.platform="winxp";}
		return this.platform;
	}
*/

	this.browserTest=function browserTest() {
		document.write("appVer: " + this.appVer+ "<br />\nagent: " + this.agent+ "<br />\ndom: " + this.dom
			+ "<br />\nnav4: " + this.nav4+ "<br />\nopera: " + this.opera+ "<br />\nmoz: " + this.moz
			+ "<br />\nie: " + this.ie+ "<br />\nopera5: " + this.opera5+ "<br />\nopera6: " + this.opera6
			+ "<br />\nopera7: " + this.opera7+ "<br />\nnav6 : " + this.nav6 + "<br />\nie4 : " + this.ie4
			+ "<br />\nie5 : " + this.ie5 + "<br />\nie55 : " + this.ie5_5 + "<br />\nie6 : " + this.ie6
			+ "<br />\nmac: " + this.mac+ "<br />\nbw: " + this.bw+ "<br />\nusedom: " + this.usedom
			+ "<br />\nreuse : " + this.reuse + "<br />\npx: " + this.px + "<br />\n");
	}

	return this
};



var bwsr = new Browser();



