
// * Browser name: BrowserDetect.browser
// * Browser version: BrowserDetect.version
// * Browser check (z.B. Safari): BrowserDetect.isSafari()
// * OS name: BrowserDetect.OS
var BrowserDetect = {
init: function () {	
	this.browser = this.searchString(this.dataBrowser) || "An unknown browser";	
	this.version = this.searchVersion(navigator.userAgent)
		|| this.searchVersion(navigator.appVersion) 
		|| "an unknown version";
	this.OS = this.searchString(this.dataOS) || "an unknown OS";
	this.CPU = this.searchString(this.dataCPU) || "an unknown CPU";
},
searchString: function (data) {
	var ident;
	for (var i=0;i<data.length;i++){
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			eval("this.is"+data[i].identity+" = function(){return this.browser == \""+data[i].identity+"\";}");
			if(!ident)this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
			if (dataString.indexOf(data[i].subString) != -1)
				if(!ident)ident = data[i].identity;
			}
			else if (dataProp)
				if(!ident)ident = data[i].identity;
	}
	return ident;
},
searchVersion: function (dataString) {
	if (this.versionSearchString == "Safari") this.versionSearchString = "Version";
	var index = dataString.indexOf(this.versionSearchString);
	if (index == -1) return;
	var versionstr = dataString.substring(index+this.versionSearchString.length+1);
	for (var i=0;i<versionstr.length;i++){
		if (isNaN(parseFloat(versionstr.substring(i, i+1))) && versionstr.substring(i, i+1) != ".") break;		
	}
	return versionstr.substring(0, i);
},
dataBrowser: [
	{ string: navigator.userAgent,
		subString: "OmniWeb",
		versionSearch: "OmniWeb/",
		identity: "OmniWeb"
	},
	{string: navigator.userAgent,
		subString: "Chrome",
		versionSearch: "Chrome",
		identity: "Chrome"
	},
	{string: navigator.vendor,
		subString: "Apple",
		identity: "Safari"
	},
	{prop: window.opera,
		identity: "Opera"
	},
	{string: navigator.vendor,
		subString: "iCab",
		identity: "iCab"
	},
	{string: navigator.vendor,
		subString: "KDE",
		identity: "Konqueror"
	},
	{string: navigator.userAgent,
		subString: "Firefox",
		identity: "Firefox"
	},
	{string: navigator.vendor,
		subString: "Camino",
		identity: "Camino"
	},
	{	// for newer Netscapes (6+)	
		string: navigator.userAgent,
		subString: "Netscape",
		identity: "Netscape"
	},
	{string: navigator.userAgent,
		subString: "freenet",
		identity: "freenetIE",
		versionSearch: "MSIE"		
	},	
	{string: navigator.userAgent,
		subString: "MSIE",
		identity: "Explorer",
		versionSearch: "MSIE"
	},
	{string: navigator.userAgent,
		subString: "Gecko",
		identity: "Mozilla",
		versionSearch: "rv"
	},
	{ 	// for older Netscapes (4-)	
		string: navigator.userAgent,
		subString: "Mozilla",
		identity: "Netscape",
		versionSearch: "Mozilla"
	}
],
dataOS : [
	{string: navigator.platform,
		subString: "Win",
		identity: "Windows"
	},	
	{string: navigator.platform,
		subString: "Mac",
		identity: "Mac"
	},
	{string: navigator.platform,
		subString: "Linux",
		identity: "Linux"
	}
],
dataCPU : [
		{string: navigator.userAgent,
		subString: "Windows NT 5.1",
		identity: "XP"
		},	
		{string: navigator.userAgent,
		subString: "Windows NT 6.0",
		identity: "Vista"
		}
	] 
};
BrowserDetect.init();
