// * 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";
	},	
	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"
			}
	] 
};
BrowserDetect.init();
