var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || 'unknown';
		this.browserVersion = this.searchBrowserVersion(navigator.userAgent) || this.searchBrowserVersion(navigator.appVersion) || 'unknown';
		this.OS = this.searchString(this.dataOS) || 'unknown';
		this.OSVersion = this.searchOSVersion(navigator.userAgent) || this.searchOSVersion(navigator.appVersion) || 'unknown';
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			this.subString = data[i].subString;	
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)					
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchBrowserVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseInt(dataString.substring(index+this.versionSearchString.length+1));
	},
	searchOSVersion: function (dataString) {		
		var v = '';
		if (this.subString == 'Win') {
			if (dataString.indexOf(this.versionSearchString + ' NT 7.0') != -1) v = '7';
			if (dataString.indexOf(this.versionSearchString + ' NT 6.0') != -1) v = 'Vista';
			if (dataString.indexOf(this.versionSearchString + ' NT 5.2') != -1) v = 'Server 2003/Windows XP x64 Edition';
			if (dataString.indexOf(this.versionSearchString + ' NT 5.1') != -1) v = 'XP';
			if (dataString.indexOf(this.versionSearchString + ' NT 5.01') != -1) v = '2000 SP1';
			if (dataString.indexOf(this.versionSearchString + ' NT 5.0') != -1) v = '2000';
			if (dataString.indexOf(this.versionSearchString + ' NT 98') != -1) v = '98';
		}else{
			v = 'OS 9';
			var index = dataString.indexOf(this.versionSearchString);
			if (index != -1) v = 'OS X';	
		}
		return v;
	},
	dataBrowser: [
		{ string: navigator.userAgent, subString: 'OmniWeb', versionSearch: 'OmniWeb/', identity: 'OmniWeb' },
		{ string: navigator.vendor, subString: 'Apple', versionSearch: 'Version', 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.userAgent, subString: 'Chrome', identity: 'Google Chrome', versionSearch: 'Chrome' },
		{ string: navigator.vendor, subString: 'Camino', identity: 'Camino' },		
		{ string: navigator.userAgent, subString: 'Netscape', identity: 'Netscape' }, // for newer Netscapes (6+)
		{ string: navigator.userAgent, subString: 'MSIE', identity: 'Internet Explorer', versionSearch: 'MSIE' },
		{ string: navigator.userAgent, subString: 'Gecko', identity: 'Mozilla', versionSearch: 'rv' },		
		{ string: navigator.userAgent, subString: 'Mozilla', identity: 'Netscape', versionSearch: 'Mozilla' } // for older Netscapes (4-)
	],
	dataOS : [
		{ string: navigator.platform, subString: 'Win', identity: 'Windows', versionSearch: 'Windows' },
		{ string: navigator.platform, subString: 'MacPPC', identity: 'Mac (PPC)', versionSearch: 'Mac OS X' },
		{ string: navigator.platform, subString: 'MacIntel', identity: 'Mac (Intel)', versionSearch: 'Mac OS X' },
		{ string: navigator.platform, subString: 'Linux', identity: 'Linux' },
		{ string: navigator.platform, subString: 'X11', identity: 'Unix' }
	]
};
BrowserDetect.init();

