/*
*********************************
	Browser detection section
*********************************
*/

var sUserAgent = navigator.userAgent;
var fAppVersion = parseFloat(navigator.appVersion);
var sUserBrowser = sUserBrowserVer = sUserPlatform = '';

// Compares two version numbers to determine which is the newer one
function compareVersions(sVersion1, sVersion2) {
	// Put each '.' separated number in the version in an array element
	var aVersion1 = sVersion1.split('.');
	var aVersion2 = sVersion2.split('.');

	// If one array is longer than the other, pad it with zeros
	if (aVersion1.length > aVersion2.length) {
		for (var i=0; i < aVersion1.length - aVersion2.length; i++)
			aVersion2.push('0');
	} 
	else if (aVersion1.length < aVersion2.length) {
		for (var i=0; i < aVersion2.length - aVersion1.length; i++)
			aVersion1.push('0');
	}

	// Determine which is the newer version and return the result
	for (var i=0; i < aVersion1.length; i++) {
		if (aVersion1[i] < aVersion2[i]) {
		return -1;
		} 
		else if (aVersion1[i] > aVersion2[i]) {
			return 1;
		}
	}
	return 0;
}

// ** Detection of the opera browser **
var isOpera = sUserAgent.indexOf('Opera') > -1;
var isMinOpera4 = isMinOpera5 = isMinOpera6 = isMinOpera7 = isMinOpera7_5 = false;

if (isOpera) {
	var fOperaVersion;
	sUserBrowser = 'Opera';
	if(navigator.appName == 'Opera') {
		fOperaVersion = fAppVersion;
	} 
	else {
		var reOperaVersion = new RegExp('Opera (\\d+\\.\\d+)');
		reOperaVersion.test(sUserAgent);
		fOperaVersion = parseFloat(RegExp['$1']);
	}

	isMinOpera4 = fOperaVersion >= 4;
	isMinOpera5 = fOperaVersion >= 5;
	isMinOpera6 = fOperaVersion >= 6;
	isMinOpera7 = fOperaVersion >= 7;
	isMinOpera7_5 = fOperaVersion >= 7.5;
	sUserBrowserVer = fOperaVersion;
	sUserBrowser = Opera;
}

// ** Dectection of Safari and Konqueror browsers **
var isKHTML = sUserAgent.indexOf('KHTML') > -1 || sUserAgent.indexOf('Konqueror') > -1 || sUserAgent.indexOf('AppleWebKit') > -1;
var isMinSafari1 = isMinSafari1_2 = false;
var isMinKonq2_2 = isMinKonq3 = isMinKonq3_1 = isMinKonq3_2 = false;

if (isKHTML) {
	isSafari = sUserAgent.indexOf('AppleWebKit') > -1;
	isKonq = sUserAgent.indexOf('Konqueror') > -1;
	if (isSafari) {
		var reAppleWebKit = new RegExp('AppleWebKit\\/(\\d+(?:\\.\\d*)?)');
		reAppleWebKit.test(sUserAgent);
		var fAppleWebKitVersion = parseFloat(RegExp['$1']);
		isMinSafari1 = fAppleWebKitVersion >= 85;
		isMinSafari1_2 = fAppleWebKitVersion >= 124;
		if(isMinSafari1) sUserBrowserVer = 1;
		if(isMinSafari1_2) sUserBrowserVer = 1.2;
		sUserBrowser = 'Safari';
	}
	else if (isKonq) {
		var reKonq = new RegExp('Konqueror\\/(\\d+(?:\\.\\d+(?:\\.\\d)?)?)');
		reKonq.test(sUserAgent);
		isMinKonq2_2 = compareVersions(RegExp['$1'], '2.2') >= 0;
		isMinKonq3 = compareVersions(RegExp['$1'], '3.0') >= 0;
		isMinKonq3_1 = compareVersions(RegExp['$1'], '3.1') >= 0;
		isMinKonq3_2 = compareVersions(RegExp['$1'], '3.2') >= 0;
		sUserBrowserVer = parseFloat(RegExp['$1']);
		sUserBrowser = 'Konqueror';
	}
}

// ** Detection of MSIE **
var isIE = sUserAgent.indexOf('compatible') > -1 && sUserAgent.indexOf('MSIE') > -1 && !isOpera;
var isMinIE4 = isMinIE5 = isMinIE5_5 = isMinIE6 = false;
if (isIE) {
	var reIE = new RegExp('MSIE (\\d+\\.\\d+);');
	reIE.test(sUserAgent);
	var fIEVersion = parseFloat(RegExp['$1']);
	isMinIE4 = fIEVersion >= 4;
	isMinIE5 = fIEVersion >= 5;
	isMinIE5_5 = fIEVersion >= 5.5;
	isMinIE6 = fIEVersion >= 6.0;
	sUserBrowserVer = fIEVersion;
	sUserBrowser = 'Microsoft Internet Explorer'
}

// ** Detection of the Mozilla browsers **
var isMoz = sUserAgent.indexOf('Gecko') > -1 && !isKHTML;
var isMinMoz1 = sMinMoz1_4 = isMinMoz1_5 = false;
var isFox = sUserAgent.indexOf('Gecko') > -1 && sUserAgent.indexOf('Firefox') > -1 && !isKHTML;
var isMonkey = sUserAgent.indexOf('Gecko') > -1 && sUserAgent.indexOf('SeaMonkey') > -1;
var sFoxVersion = sMonkeyVersion = sNetscapeVersion = false;

if (isMoz && !isFox && !isMonkey) {
	var reMoz = new RegExp('rv:(\\d+\\.\\d+(?:\\.\\d+)?)');
	reMoz.test(sUserAgent);
	isMinMoz1 = compareVersions(RegExp['$1'], '1.0') >= 0;
	isMinMoz1_4 = compareVersions(RegExp['$1'], '1.4') >= 0;
	isMinMoz1_5 = compareVersions(RegExp['$1'], '1.5') >= 0;
	sUserBrowserVer = parseFloat(RegExp['$1']);
	sUserBrowser = 'Mozilla';
}

if(isFox) {
	var reFox = new RegExp('Firefox/(\\d+\\.\\d+(?:\\.\\d+)?)');
	reFox.test(sUserAgent);
	sFoxVersion = parseFloat(RegExp['$1']);
	sUserBrowserVer = sFoxVersion;
	sUserBrowser = 'Firefox';
}

if(isMonkey) {
	var reMonkey = new RegExp('SeaMonkey/(\\d+\\.\\d+(?:\\.\\d+)?)');
	reMonkey.test(sUserAgent);
	sMonkeyVersion = parseFloat(RegExp['$1']);
	sUserBrowserVer = sMonkeyVersion;
	sUserBrowser = 'SeaMonkey';
}

// ** Detection of the Netscape browser **
var isNS4 = !isIE && !isOpera && !isMoz && !isKHTML && (sUserAgent.indexOf('Mozilla') == 0) && (navigator.appName == 'Netscape') && (fAppVersion >= 4.0 && fAppVersion < 5.0);
var isMinNS4 = isMinNS4_5 = isMinNS4_7 = isMinNS4_8 = false;
var isNet = sUserAgent.indexOf('Netscape') > -1 && !isNS4;

if (isNS4) {
	isMinNS4 = true;
	isMinNS4_5 = fAppVersion >= 4.5;
	isMinNS4_7 = fAppVersion >= 4.7;
	isMinNS4_8 = fAppVersion >= 4.8;
	sUserBrowserVer = fAppVersion;
	sUserBrowser = 'Netscape';
}

if(isNet) {
	if(sUserAgent.indexOf('Netscape6') > -1)
		var reNet = new RegExp('Netscape6/(\\d+\\.\\d+(?:\\.\\d+)?)');
	else
		var reNet = new RegExp('Netscape/(\\d+\\.\\d+(?:\\.\\d+)?)');
	reNet.test(sUserAgent);
	sNetscapeVersion = parseFloat(RegExp['$1']);
	sUserBrowserVer = sNetscapeVersion;
	sUserBrowser = 'Netscape';
}

/*
********************************** 
	Platform detection section
**********************************
*/
// ** Detection of Windows systems **
var isWin = (navigator.platform == 'Win32') || (navigator.platform == 'Windows');
var isMac = (navigator.platform == 'Mac68K') || (navigator.platform == 'MacPPC') || (navigator.platform == 'Macintosh');
var isUnix = (navigator.platform == 'X11') && !isWin && !isMac;
var isWin95 = isWin98 = isWinNT4 = isWin2K = isWinME = isWinXP = false;
var isMac68K = isMacPPC = false;
var isSunOS = isMinSunOS4 = isMinSunOS5 = isMinSunOS5_5 = false;
if (isWin) {
	isWin95 = sUserAgent.indexOf('Win95') > -1 || sUserAgent.indexOf('Windows 95') > -1; 
	isWin98 = sUserAgent.indexOf('Win98') > -1 || sUserAgent.indexOf('Windows 98') > -1;
	isWinME = sUserAgent.indexOf('Win 9x 4.90') > -1 || sUserAgent.indexOf('Windows ME') > -1;
	isWin2K = sUserAgent.indexOf('Windows NT 5.0') > -1 || sUserAgent.indexOf('Windows 2000') > -1;
	isWinXP = sUserAgent.indexOf('Windows NT 5.1') > -1 || sUserAgent.indexOf('Windows XP') > -1;
	isWinNT4 = sUserAgent.indexOf('WinNT') > -1 || sUserAgent.indexOf('Windows NT') > -1 || sUserAgent.indexOf('WinNT4.0') > -1 || sUserAgent.indexOf('Windows NT 4.0') > -1 && (!isWinME && !isWin2K && !isWinXP);
	if(isWin95) sUserPlatform = 'Windows 95';
	if(isWin98) sUserPlatform = 'Windows 98';
	if(isWinME) sUserPlatform = 'Windows ME';
	if(isWin2K) sUserPlatform = 'Windows 2000';
	if(isWinXP) sUserPlatform = 'Windows XP';
	if(isWinNT4) sUserPlatform = 'Windows NT4';
}

// ** Detection of Mac Systems **
if (isMac) {
	isMac68K = sUserAgent.indexOf('Mac_68000') > -1 || sUserAgent.indexOf('68K') > -1;
	isMacPPC = sUserAgent.indexOf('Mac_PowerPC') > -1 || sUserAgent.indexOf('PPC') > -1;
	if(isMac68K) sUserPlatform = 'Mac 68000';
	if(isMacPPC) sUserPlatform = 'Mac PowerPC';
}

// ** Detection of Unix systems **
if (isUnix) {
	isSunOS = sUserAgent.indexOf('SunOS') > -1;
	if (isSunOS) {
		var reSunOS = new RegExp('SunOS (\\d+\\.\\d+(?:\\.\\d+)?)');
		reSunOS.test(sUserAgent);
		isMinSunOS4 = compareVersions(RegExp['$1'], '4.0') >= 0;
		isMinSunOS5 = compareVersions(RegExp['$1'], '5.0') >= 0;
		isMinSunOS5_5 = compareVersions(RegExp['$1'], '5.5') >= 0;
		sUserPlatform = 'SunOS';
	}
	isLinux = sUserAgent.indexOf('linux') > -1;
	if(isLinux) sUserPlatform = 'Linux';
}

function showInfo(){
	document.write('The browser you are currently using is <em>' + sUserBrowser + '</em> version <em>' + sUserBrowserVer + '</em>');
}