var browserDetect

function browserDetect() {	
	// define arrays
	this.osList = new Array('Win','X11','SunOS','Mac','PPC')
	this.browsers = new Array('MSIE','Opera')
	this.browserList = new Array('Microsoft Internet Explorer','Netscape','Opera','Konqueror','AOL')
	this.browserRef = new Array('ie','ns','op','kq','ao')
	
	// get agent string
	ua = navigator.userAgent
	str = ua.substring(ua.indexOf("(")+1,ua.indexOf(")"))
	str = str.split("; ")
	
	// check for os:
	for (i=0;i<str.length;i++) for (f=0;f<this.osList.length;f++) if (str[i].indexOf(this.osList[f])!=-1) this.os=str[i]
	if (!this.os) this.os = navigator.platform

	// check for browsers:
	for (i=0;i<str.length;i++) for (f=0;f<this.browsers.length;f++) if (str[i].indexOf(this.browsers[f])!=-1) this.browser=str[i]
	if (!this.browser) this.browser = navigator.appName
	else if (this.browser.indexOf("MSIE")!=-1) this.browser = 'Microsoft Internet Explorer'
	this.paren = str

	// check for version:
	for (i=0;i<str.length;i++) {
		if (str[i].indexOf(this.browsers[0])!=-1) this.ver = str[i].substring(str[i].indexOf(" ")+1,str[i].length)
		else if (!this.ver) this.ver = navigator.appVersion.substring(0,navigator.appVersion.indexOf(" "))
	}
	this.mainVer = this.ver.substring(0,this.ver.indexOf("."))
	this.subVer = this.ver.substring(this.ver.indexOf(".")+1,this.ver.length)

	// get ref name:
	for (i=0;i<this.browserList.length;i++) if (this.browser == this.browserList[i]) {this.ref = this.browserRef[i];break}
	if (!this.ref) this.ref = 'xx'
	this.ref+=this.mainVer
	
	// check for encoding engine:
	this.engine = navigator.appCodeName
	
	// browser version checks
	maxVer = (this.majorVer>10)? this.majorVer : 10
	for (i=0;i<this.browserRef.length;i++) {
		eval("this."+this.browserRef[i]+" = (this.browser.indexOf('"+this.browserList[i]+"')!=-1)? true:false")
		for (j=2;j<=maxVer;j++) {
			eval("this."+this.browserRef[i]+j+" = (this."+this.browserRef[i]+" && this.mainVer==j)? true:false")
			eval("this."+this.browserRef[i]+j+"up = (this."+this.browserRef[i]+" && this.mainVer>=j)? true:false")
		}
	}
	
	// platform checks
	this.win	= (this.os.indexOf('Win')!=-1)? true:false
	this.mac	= (this.os.indexOf('Mac')!=-1 || this.os.indexOf('PPC')!=-1)? true:false
	this.unix	= (this.os.indexOf('Sun')!=-1 || this.os.indexOf('X11')!=-1)? true:false

	// browser capabilities
	this.dom	= (document.getElementById)? true:false
	this.java	= navigator.javaEnabled()
	this.lang	= (this.ns)? navigator.language : navigator.browserLanguage
	
	// window properties
	extended = (this.ie)? (document.body!=null) : false	// check if properties are available to ie
	
	this.x		= (this.ns)? window.screenX : window.screenLeft
	this.y		= (this.ns)? window.screenY : window.screenTop
	this.innerW	= (this.ns)? window.innerWidth : ((extended)? document.body.clientWidth : 'N/A')
	this.innerH	= (this.ns)? window.innerHeight : ((extended)? document.body.clientHeight: 'N/A')
	this.outerW	= (this.ns)? window.outerWidth : 'N/A'		// buggy for ie
	this.outerH	= (this.ns)? window.outerHeight : 'N/A'		// buggy for ie
	this.docW	= (this.ns)? document.width : ((extended)? document.body.scrollWidth: 'N/A')
	this.docH	= (this.ns)? document.height : ((extended)? document.body.scrollHeight: 'N/A')
}