
// debug = true;

function cookiesAreEnabled()
{
	return navigator.cookieEnabled;
}

function javaIsEnabled() 
{
	return navigator.javaEnabled();
}

function browserName() 
{
	return CSDU_GetBrowserName();
}

function browserVersion() 
{
	return CSDU_GetBrowserVersion();
}

function getBrowserWidth()
{
	if( typeof( window.innerWidth ) == 'number' )
	{
		return window.innerWidth;
	}
	else if ( document.documentElement && document.documentElement.clientWidth )
	{
		return document.documentElement.clientWidth;
	}
	else if ( document.body && document.body.clientWidth )
	{
		return document.body.clientWidth;
	}
	else
		return null;
}

function getBrowserHeight()
{
	if( typeof( window.innerHeight ) == 'number' )
	{
		return window.innerHeight;
	}
	else if ( document.documentElement && document.documentElement.clientHeight )
	{
		return document.documentElement.clientHeight;
	}
	else if ( document.body && document.body.clientHeight )
	{
		return document.body.clientHeight;
	}
	else
		return null;
}

function getPDFplugin()
{
	var result = null;
	if (CSDU_BrowserIsIE() && CSDU_OSIsWin())
	{
		// special detection of PDF plugin for IE/PC (using ActiveXObject)
		if (window.ActiveXObject)
		{   
		    var control = null;   
		    try
		    {   
		        // AcroPDF.PDF is used by Adobe Acrobat version 7 and later   
		        control = new ActiveXObject('AcroPDF.PDF');   
		    } catch (e)
		    {   
		    	// Do nothing   
		    }   
		    if (!control)
		    {   
		       try
		       {   
		            // PDF.PdfCtrl is used by Adobe Acrobat version 6 and earlier   
		            control = new ActiveXObject('PDF.PdfCtrl');
		       } catch (e)
		       {   
		          // Do nothing   
		       }   
		    }   
		    if (control)
		    {   
		    	result = "Adobe Acrobat";
		    }
		}
	}
	else
	{
		// normal detection of PDF plugin for other browsers/platforms
		result = pluginForMimeType("application/pdf");
	}
	return result;
}

function pluginForMimeType(type)
{
	if (navigator.mimeTypes)
	{
		count = navigator.mimeTypes.length;
		
		for (index = 0; index < count; index++)
		{
			if (navigator.mimeTypes[index].type == type)
			{
				return (navigator.mimeTypes[index].enabledPlugin == null) ? 
							null :
							navigator.mimeTypes[index].enabledPlugin.name;
			}
		}
	}	
	
	return null;
}

function dumpNavigatorValues()
{
	try
	{
		debugprint("navigator: " + navigator);
			
		// debugprint("appCodeName:      " + navigator.appCodeName);
		debugprint("appName:          " + navigator.appName);
		debugprint("appVersion:       " + navigator.appVersion);
		// debugprint("appMinorVersion:  " + navigator.appMinorVersion);
		debugprint("userAgent:        " + navigator.userAgent);
		debugprint("platform:         " + navigator.platform);
		// debugprint("product:          " + navigator.product);
		// debugprint("productSub:       " + navigator.productSub);
		debugprint("cookieEnabled:    " + navigator.cookieEnabled);
		debugprint("javaEnabled:      " + navigator.javaEnabled());
		// debugprint("taintEnabled:     " + navigator.tainEnabled());
		// debugprint("preference:       " + navigator.preference());
		// debugprint("oscpu:            " + oscpu);
		// debugprint("cpuClass:         " + navigator.cpuClass);
		debugprint("onLine:           " + navigator.onLine);
		// debugprint("browserLanguage:  " + navigator.browserLanguage);
		// debugprint("systemLanguage:   " + navigator.systemLanguage);
		debugprint("userLanguage:     " + navigator.userLanguage);
		debugprint("language:         " + navigator.language);
		// debugprint("securityPolicy:   " + navigator.securityPolicy);
		// debugprint("userProfile:      " + navigator.userProfile);
		
		var index;
		var count;
		 
		if (navigator.plugins)
		{
			count = navigator.plugins.length;
			
			debugprint("plugins:          " + count);
			
			for (index = 0; index < count; index++)
			{
				debugprint("  plugin - name:             " + navigator.plugins[index].name);
				debugprint("  plugin - description:      " + navigator.plugins[index].description);
				debugprint("  plugin - filename:         " + navigator.plugins[index].filename);
				debugprint("  plugin - length:           " + navigator.plugins[index].length);
			}
		}
	
		if (navigator.mimeTypes)
		{
			count = navigator.mimeTypes.length;
			
			debugprint("mimeTypes:        " + count);
			
			for (index = 0; index < count; index++)
			{
				debugprint("  mimeType - type:           " + navigator.mimeTypes[index].type);
				debugprint("  mimeType - description:    " + navigator.mimeTypes[index].description);
				debugprint("  mimeType - suffixes:       " + navigator.mimeTypes[index].suffixes);
				debugprint("  mimeType - enabledPlugin:  " + navigator.mimeTypes[index].enabledPlugin);
			}
		}
	}
	catch(e)
	{
		debugprint("Caught exception: \n" + e.message);
	}	
}

var kCSDU_BROWSER_IE       				= "Microsoft Internet Explorer";
var kCSDU_BROWSER_NETSCAPE 				= "Netscape";
var kCSDU_Browser_Chrome   				= "Chrome";
var kCSDU_Browser_Safari   				= "Safari";
var kCSDU_Browser_Opera    				= "Opera";
var kCSDU_Browser_Firefox  				= "Firefox";
var kCSDU_MIN_WIN_IE_VERSION			= 5;
var kCSDU_MIN_MAC_IE_VERSION			= 5;
var kCSDU_MinMacSafariVersion			= 85;
var kCSDU_NAVIGATOR_PLATFORM_WIN		= "Win32";
var kCSDU_NAVIGATOR_PLATFORM_MAC		= "MacPPC";
var kCSDU_OS_WIN = "Windows";
var kCSDU_OS_MAC = "Macintosh";

function CSDU_GetBrowserName() 
{
	if ( CSDU_BrowserIsChrome() )
	{
		return kCSDU_Browser_Chrome;
	}
	if ( CSDU_BrowserIsSafari() )
	{
		return kCSDU_Browser_Safari;
	}
	if ( CSDU_BrowserIsFirefox() )
	{
		return kCSDU_Browser_Firefox;
	}
	else if ( CSDU_BrowserIsOpera() )
	{
		return kCSDU_Browser_Opera;
	}
	else
	{
		return navigator.appName;
	}
}//CSDU_GetBrowserName

function CSDU_BrowserIsIE() 
{
	return ( CSDU_GetBrowserName() == kCSDU_BROWSER_IE );
}//CSDU_BrowserIsIE

function CSDU_BrowserIsNetscape() 
{
	return ( CSDU_GetBrowserName() == kCSDU_BROWSER_NETSCAPE );
}//CSDU_BrowserIsNetscape

function CSDU_BrowserIsChrome() 
{
	return ( navigator.appVersion.indexOf( kCSDU_Browser_Chrome ) != - 1 );
}//CSDU_BrowserIsChrome

function CSDU_BrowserIsSafari() 
{
	return ( navigator.appVersion.indexOf( kCSDU_Browser_Safari ) != - 1 );
}//CSDU_BrowserIsSafari

function CSDU_BrowserIsFirefox()
{
	return ( navigator.userAgent.indexOf( kCSDU_Browser_Firefox ) != - 1 );
}

function CSDU_BrowserIsOpera() 
{
	return ( navigator.userAgent.indexOf( kCSDU_Browser_Opera ) != - 1 );
}//CSDU_BrowserIsOpera

function CSDU_GetBrowserVersion() 
{
	var strUserAgent;
	var strVersionString;
	var intVersionNumber;
	
	strUserAgent = navigator.userAgent;
	
	if ( CSDU_BrowserIsNetscape() )
	{
		var intPos = -1;
		var blnNS4 = false;
		var blnNS6 = false;
		var blnNS7 = false;
		intPos = strUserAgent.indexOf("Mozilla/4");
		if(intPos != -1)
		{
			blnNS4 = true
		}
		if(!blnNS4)
		{
			intPos = strUserAgent.indexOf("Netscape6");
			if(intPos != -1)
			{
				blnNS6 = true;
			}
		}
		if((!blnNS4) && (!blnNS6))
		{
			intPos = strUserAgent.indexOf("Netscape/");
			blnNS7 = true;
		}
		if(blnNS4)
		{
			strVersionString = strUserAgent.substr(intPos + 8);
		}
		else if(blnNS6)
		{
			strVersionString = strUserAgent.substr(intPos + 10);
		}
		else if(blnNS7)
		{
			strVersionString = strUserAgent.substr(intPos + 9);
		}
		intVersionNumber = CSDU_RemoveNonNumericalCharsFromVersionString(strVersionString);
	}
	else if ( CSDU_BrowserIsIE() )
	{
		var intMSIEPos = strUserAgent.indexOf("MSIE");
		var intSemiColonPos = strUserAgent.indexOf(";", intMSIEPos);
		strVersionString = strUserAgent.substring(intMSIEPos + 5, intSemiColonPos);
		intVersionNumber = CSDU_RemoveNonNumericalCharsFromVersionString(strVersionString);
	}
	else if ( CSDU_BrowserIsChrome() )
	{
		strVersionString = strUserAgent.substring( strUserAgent.indexOf( "Chrome/" ) + 7 );
		intVersionNumber = CSDU_RemoveNonNumericalCharsFromVersionString( strVersionString );
	}
	else if ( CSDU_BrowserIsSafari() )
	{
		strVersionString = strUserAgent.substring( strUserAgent.indexOf( "Version/" ) + 8 );
		intVersionNumber = CSDU_RemoveNonNumericalCharsFromVersionString( strVersionString );
	}
	else if ( CSDU_BrowserIsFirefox() )
	{
		strVersionString = strUserAgent.substring( strUserAgent.indexOf( "Firefox/" ) + 8 );
		intVersionNumber = CSDU_RemoveNonNumericalCharsFromVersionString( strVersionString );
	}
	else if ( CSDU_BrowserIsOpera() )
	{
		strVersionString = strUserAgent.substring( strUserAgent.indexOf( "Opera/" ) + 6 );
		intVersionNumber = CSDU_RemoveNonNumericalCharsFromVersionString( strVersionString );
	}
	else
	{
		intVersionNumber = "";
	}
	return intVersionNumber;
}//CSDU_GetBrowserVersion

function CSDU_RemoveNonNumericalCharsFromVersionString(strVersionString) 
{
	var intIndex;
	var intCurrentCharCode;
	var strCorrectedVersionString = "";
	for(intIndex = 0; intIndex < strVersionString.length; intIndex++) 
	{
		intCurrentCharCode = strVersionString.charCodeAt(intIndex);
		if(((intCurrentCharCode < 48) || (intCurrentCharCode > 57)) && (intCurrentCharCode != 46)) 
		{
			break;
		}//if
		
		strCorrectedVersionString += strVersionString.charAt(intIndex)
	}//for
	return strCorrectedVersionString;
}//CSDU_RemoveNonNumericalCharsFromVersionString

function CSDU_BrowserVersionIsOK()
{
	var strBrowserName;
	var strOSName;
	var strBrowserResult;
	strBrowserName = CSDU_GetBrowserName();
	strOSName = CSDU_GetOSName();
	strBrowserResult = 2;
	if ( false == true )
	{
		if ( strBrowserName == kCSDU_Browser_Safari )
		{
			strBrowserResult = CSDU_CheckMacOSXSafariBrowserVersion();
		}
		else if ( strBrowserName == kCSDU_Browser_Firefox )
		{
			strBrowserResult = CSDU_CheckMacOSXFirefoxBrowserVersion();
		}
	}
	else if ( ( strOSName == kCSDU_OS_WIN ) && ( strBrowserName == kCSDU_BROWSER_IE ) )
	{
		strBrowserResult = CSDU_CheckWinIEBrowserVersion();
	}
	else if ( ( strOSName == kCSDU_OS_MAC ) && ( strBrowserName == kCSDU_BROWSER_IE ) )
	{
		strBrowserResult = CSDU_CheckMacOS9IEBrowserVersion();
	}
	else if ( ( strOSName == kCSDU_OS_WIN ) && ( strBrowserName == kCSDU_Browser_Firefox ) )
	{
		strBrowserResult = CSDU_CheckWinFirefoxBrowserVersion();
	}
	return strBrowserResult;	
}//CSDUBrowserVersionIsOK

function CSDU_CheckWinIEBrowserVersion()
{
	var strResult;
	strResult = 1;
	if ( CSDU_GetBrowserVersion() >= kCSDU_MIN_WIN_IE_VERSION )
	{
		strResult = 0;
	}
	return strResult;
}//CSDU_CheckWinIEBrowserVersion

function CSDU_CheckMacOS9IEBrowserVersion()
{
	var strResult;
	strResult = 1;
	if ( CSDU_GetBrowserVersion() >= kCSDU_MIN_MAC_IE_VERSION )
	{
		strResult = 0;
	}
	return strResult;
}//CSDU_CheckMacOS9IEBrowserVersion

function CSDU_CheckMacOSXSafariBrowserVersion()
{
	var strResult;
	var aryResult;
	strResult = CSDU_GetBrowserVersion();
	aryResult = strResult.split( "." );
	if ( aryResult[0] >= kCSDU_MinMacSafariVersion )
	{
		strResult = 0;
	}
	return strResult;
}//CSDU_CheckMacOSXSafariBrowserVersion

function CSDU_CheckMacOSXFirefoxBrowserVersion()
{
	return 0;
}//CSDU_CheckMacOSXFirefoxBrowserVersion

function CSDU_CheckWinFirefoxBrowserVersion()
{
	return 0;
}//CSDU_CheckWinFirefoxBrowserVersion

function CSDU_GetOSName() 
{
	var strPlatform;
	var strOSName;
	strPlatform = navigator.platform;
	if(strPlatform == kCSDU_NAVIGATOR_PLATFORM_WIN) 
	{
		strOSName = kCSDU_OS_WIN;
	} 
	else if(strPlatform == kCSDU_NAVIGATOR_PLATFORM_MAC) 
	{
		strOSName = kCSDU_OS_MAC;
	}
	return strOSName;
}//CSDU_GetOSName

function CSDU_OSIsWin() 
{
	return CSDU_GetOSName() == kCSDU_OS_WIN;
}//CSDU_OSIsWin

function CSDU_OSIsMac() 
{
	return CSDU_GetOSName() == kCSDU_OS_MAC;
}//CSDU_OSIsWin

function CSDU_CookiesAreEnabled() 
{
	var blnCookiesEnabled;
	document.cookie = "cookie_test=yes";
	if(document.cookie.indexOf("cookie_test=") != -1) 
	{
		blnCookiesEnabled = true;
	} 
	else 
	{
		blnCookiesEnabled = false;
	}//if
	return blnCookiesEnabled;
}//CSDU_CookiesAreEnabled

function CSDU_JavaIsEnabled() 
{
	return navigator.javaEnabled();
}//CSDU_JavaIsEnabled




