//********************************************************************************
//
// Browser compatibility functionality.
//
// Original author: Rob Baker, Stephen Chapman, Felgall Pty Ltd.
// Current maintainer: Rob Baker.
//
// Copyright 1 February 2003, by Stephen Chapman, Felgall Pty Ltd
//
//********************************************************************************


//********************************************************************************
// Get the name of the current browser.
//********************************************************************************

function BrowserName()
{
	var agt = navigator.userAgent.toLowerCase();

	if (agt.indexOf("opera") != -1)
		return 'Opera';
		
	if (agt.indexOf("staroffice") != -1)
		return 'Star Office';
		
	if (agt.indexOf("webtv") != -1)
		return 'WebTV';
		
	if (agt.indexOf("beonex") != -1)
		return 'Beonex';
		
	if (agt.indexOf("chimera") != -1)
		return 'Chimera';
		
	if (agt.indexOf("chrome") != -1)
		return 'Chrome';
		
	if (agt.indexOf("netpositive") != -1)
		return 'NetPositive';
		
	if (agt.indexOf("phoenix") != -1)
		return 'Phoenix';
		
	if (agt.indexOf("firefox") != -1)
		return 'Firefox';
		
	if (agt.indexOf("safari") != -1)
		return 'Safari';
		
	if (agt.indexOf("skipstone") != -1)
		return 'SkipStone';
		
	if (agt.indexOf("msie") != -1)
		return 'Internet Explorer';
		
	if (agt.indexOf("netscape") != -1)
		return 'Netscape';
		
	if (agt.indexOf("mozilla/5.0") != -1)
		return 'Mozilla';
		
	if (agt.indexOf('\/') != -1)
	{
		if (agt.substr(0,agt.indexOf('\/')) != 'mozilla')
		{
			return navigator.userAgent.substr(0,agt.indexOf('\/'));
		}
		else
		{
			return 'Netscape';
		}
	}
	else if (agt.indexOf(' ') != -1)
	{
		return navigator.userAgent.substr(0,agt.indexOf(' '));
	}
	else
	{
		return navigator.userAgent;
	}
}


//********************************************************************************
//********************************************************************************

function ExplorerVersion()
{
	var agt = navigator.userAgent.toLowerCase();
	var index = agt.indexOf("msie");

	if (index != -1)
	{
		var version = agt.substring(index + 5);
		var versionParts = version.split(".", 2);

		if (versionParts.length > 0)
			return versionParts[0];
	}
	
	return 0;
}


//********************************************************************************
// Does the current browser support opacity and alpha channels properly?
//********************************************************************************

function BrowserSupportsAlpha()
{
	var version = navigator.appVersion;
	var versionParts = version.split(".", 2);
	
	switch (BrowserName())
	{
		case "Safari":
			if (versionParts.length > 0)
				return (versionParts[0] >= 4);
			return false;

		case "Firefox":
			if (versionParts.length > 0)
				return (versionParts[0] >= 4);
			return false;

		case "Chrome":
			if (versionParts.length > 0)
				return (versionParts[0] >= 4);
			return false;

		case "Opera":
			if (versionParts.length > 0)
				return (versionParts[0] >= 9);
			return false;
	}
	
	return false;
}


//********************************************************************************
// Does the current browser support transparency with options properly?
//********************************************************************************

function BrowserSupportsOptionTransparency()
{
	var version = navigator.appVersion;
	var versionParts = version.split(".", 2);
	
	switch (BrowserName())
	{
		case "Safari":
			if (versionParts.length > 0)
				return (versionParts[0] >= 4);
			return false;

		case "Firefox":
			if (versionParts.length > 0)
				return (versionParts[0] >= 4);
			return false;

		case "Chrome":
			if (versionParts.length > 0)
				return (versionParts[0] >= 4);
			return false;

		case "Internet Explorer":
			return (ExplorerVersion() >= 8);
	}
	
	return false;
}


//********************************************************************************
// Does the current browser support background colour with options properly?
//********************************************************************************

function BrowserSupportsOptionBackground()
{
	var version = navigator.appVersion;
	var versionParts = version.split(".", 2);
	
	switch (BrowserName())
	{
		case "Safari":
			if (versionParts.length > 0)
				return (versionParts[0] >= 4);
			return false;

		case "Firefox":
			if (versionParts.length > 0)
				return (versionParts[0] >= 4);
			return false;

		case "Chrome":
			if (versionParts.length > 0)
				return (versionParts[0] >= 4);
			return false;

		case "Opera":
			if (versionParts.length > 0)
				return (versionParts[0] >= 9);
			return false;

		case "Internet Explorer":
			return (ExplorerVersion() >= 8);
	}
	
	return false;
}


//********************************************************************************
//********************************************************************************

function BrowserDysfunctionalInput()
{
	return (!BrowserSupportsOptionBackground());
}

