var Browser =
{
	Browser: null,
	Version: null,
	OS: null,

	BrowserData: {
		"OmniWeb": { String: navigator.userAgent, Search: "OmniWeb" },
		"Safari": { String: navigator.vendor, Search: "Apple" },
		"Opera": { Property: window.opera },
		"iCab": { String: navigator.vendor, Search: "iCab" },
		"Konqueror": { String: navigator.vendor, Search: "KDE" },
		"Firefox":{ String: navigator.userAgent, Search: "Firefox" },
		"Camino": { String: navigator.vendor, Search: "Camino" },
		"Netscape": { String: navigator.userAgent, Search: "Netscape" },
		"Explorer": { String: navigator.userAgent, Search: "MSIE" },
		"Mozilla": { String: navigator.userAgent, Search: "Gecko" }
	},

	VersionData: {
		"OmniWeb": { Object: navigator.userAgent, Search: "OmniWeb/" },
		"Safari": { Object: navigator.userAgent, Search: "Safari" },
		"Opera": { Object: navigator.userAgent, Search: "Opera" },
		"iCab": { Object: navigator.userAgent, Search: "iCab" },
		"Konqueror": { Object: navigator.userAgent, Search: "Konqueror" },
		"Firefox": { Object: navigator.userAgent, Search: "Firefox" },
		"Camino": { Object: navigator.userAgent, Search: "Camino" },
		"Netscape": { Object: navigator.userAgent, Search: "Netscape" },
		"Explorer": { Object: navigator.userAgent, Search: "MSIE" },
		"Mozilla": { Object: navigator.userAgent, Search: "rv" }
	},

	OSData: {
		"Windows": { Object: navigator.platform, Search: "Win" },
		"Mac": { Object: navigator.platform, Search: "Mac" },
		"Linux": { Object: navigator.platform, Search: "Linux" }
	},

	Initialize: function ()
	{
		this.Browser = this.FindBrowser() || "Unknown";
		this.Version = this.FindVersion(this.Browser) || "Unknown";
		this.OS = this.FindOS() || "Unknown";
	},

	FindBrowser: function()
	{
		for (var BrowserName in this.BrowserData)
		{
			if (this.BrowserData[BrowserName].String)
			{
				if (this.BrowserData[BrowserName].String.indexOf(this.BrowserData[BrowserName].Search)!=-1)
					return(BrowserName);
			}
			else if (this.BrowserData[BrowserName].Property)
				return(BrowserName);
		}
		return(false);
	},

	FindVersion: function(Browser)
	{
		var Index = this.VersionData[Browser].Object.indexOf(this.VersionData[Browser].Search);
		if (Index == -1)
			return(false);
		else
			return(parseFloat(this.VersionData[Browser].Object.substring(Index+this.VersionData[Browser].Search.length+1)));
	},

	FindOS: function()
	{
		for (var OSName in this.OSData)
		{
			if (this.OSData[OSName].Object.indexOf(this.OSData[OSName].Search)!=-1)
				return(OSName);
		}
		return(false);
	}
};

Browser.Initialize();
