
// * 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();
