
function detectClientEnvironment(prefLanguage, contextPath)	{
	var requestMajorVersion = 10;
	var requestMinorVersion = 0;
	var requestRevision = 0;

	var bestMajorVersion = 10;
	var bestMinorVersion = 0;
	var bestRevision = 32;

	// Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)
	var hasProductInstall = DetectFlashVer(6, 0, 65);
	var hasRequestedVersion = DetectFlashVer(requestMajorVersion, requestMinorVersion, requestRevision);
	var hasBestVersion = DetectFlashVer(bestMajorVersion, bestMinorVersion, bestRevision);

	var lang = prefLanguage;
	var flashVersionStr = "0.0.0";

	if (hasProductInstall && hasRequestedVersion && hasBestVersion) {
		flashVersionStr = bestMajorVersion + "." + bestMinorVersion + "." + bestRevision;
	} else if (hasProductInstall && hasRequestedVersion && !hasBestVersion) {
		flashVersionStr = requestMajorVersion + "." + requestMinorVersion + "." + requestRevision;
		var mainUrl = window.location;
		
		window.location = contextPath + "/downloadflash/" + lang + "/downloadFlash.jsp?hasRequestedVersion=false&mainUrl=" + mainUrl;
		return null;
	} else if (hasProductInstall && !hasRequestedVersion) {
		var mainUrl = window.location;
		
		window.location = contextPath + "/downloadflash/" + lang + "/downloadFlash.jsp?hasRequestedVersion=false&mainUrl=" + mainUrl;
		return null;
	} else if (hasProductInstall == false) {
		window.location = contextPath + "/downloadflash/" + lang + "/downloadFlash.jsp";
		return null;
	}

	var jre = PluginDetect.getVersion("Java");
	var jreVersionStr = "";

	if (jre != undefined && jre != "null" && jre != "") {
		try {
			var versions = jre.split(",");
			if (versions.length == undefined) {
				jreVersionStr = jre;
			} else {
				  for (var k=0; k<versions.length; k++) {
					  if (k > 3) {
						 break;
					  }
					  if (k == 3 || (k+1) == versions.length) {
						 jreVersionStr = jreVersionStr + versions[k];
					  } else {
						 jreVersionStr = jreVersionStr + versions[k] + ".";
					  }
				  }
			}
		} catch(err) {
			//alert("Error: " + err);
		}
	}
	
	var agt = navigator.userAgent.toLowerCase();
	var browserMajor = parseInt(navigator.appVersion);
	var browserMinor = parseFloat(navigator.appVersion);
	
	var isIE = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
	var isIE3 = (isIE && (browserMajor < 4));
	var isIE4 = (isIE && (browserMajor == 4) && (agt.indexOf("msie 4")!=-1) );
	var isIE5 = (isIE && (browserMajor == 4) && (agt.indexOf("msie 5.0")!=-1) );
	var isIE5_5 = (isIE && (browserMajor == 4) && (agt.indexOf("msie 5.5") !=-1));
	var isIE6 = (isIE && (browserMajor == 4) && (agt.indexOf("msie 6.")!=-1) );
	var isIE7 = (isIE && (browserMajor == 4) && (agt.indexOf("msie 7.")!=-1) );
	var isIE7up = (isIE && !isIE3 && !isIE4 && !isIE5 && !isIE5_5 && !isIE6 && !isIE7);

	var isFireFox = ((agt.indexOf("firefox") != -1) && (agt.indexOf("opera") == -1));
	var isFireFox1 = (isFireFox && (agt.indexOf("firefox/1.0") != -1));
	var isFireFox2 = (isFireFox && (agt.indexOf("firefox/2") != -1));
	var isFireFox3 = (isFireFox && (agt.indexOf("firefox/3") != -1));
	var isFireFox3up = (isFireFox && !isFireFox1 && !isFireFox2 && !isFireFox3);

	var isSafari = ((agt.indexOf("safari") != -1) && (agt.indexOf("opera") == -1));
	var isSafari3down = (isSafari && ( (agt.indexOf("version/2") != -1) || (agt.indexOf("version/1") != -1) ));
	var isSafari3 = (isSafari && (agt.indexOf("version/3") != -1));
	var isSafari4 = (isSafari && (agt.indexOf("version/4") != -1));
	var isSafari4up = (isSafari && !isSafari3 && !isSafari3down && !isSafari4);

	var isNav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)	&& (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
					&& (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
	var isNav9 = (isNav && (browserMajor == 9));
	
	var isChrome = (agt.indexOf('chrome/')!=-1);
	var isChrome1 = (isChrome && (agt.indexOf("chrome/1") != -1))
	var isChrome1up = (isChrome && !isChrome1);

	// need to remove the spacing in the browser name
	var browserVer = "" + browserMajor + "." + browserMinor;
	var browserNameTemp = navigator.appName.split(" ");
	var browserName = "";
	for (var x = 0; x<browserNameTemp.length; x++)	{
		browserName += browserNameTemp[x];
	}

	//identify supported browser versions
	var browserSupported = false;

	//IE support 7 and above
	if( isIE && (isIE7 || isIE7up) )	{
		browserSupported = true;
	}

	//Mozilla Firefox support 2 and above
	if( isFireFox && (isFireFox2 || isFireFox3 || isFireFox3up) )	{
		browserSupported = true;
	}

	//Google Chrome support 1 and above
	if( isChrome && (isChrome1 || isChrome1up) )	{
		browserSupported = true;
	}

	//Safari support 3 and above
	if( isSafari && (isSafari3 || isSafari4 || isSafari4up) )	{
		browserSupported = true;
	}

	//Netscape Navigator suuport 9 (no release after v9)
	if( isNav && isNav9 )	{
		browserSupported = true;
	}

	//build the query string with the retrieve information about the browser
	var clientEnv = "&jre=" + jreVersionStr + "&flashVersion=" + flashVersionStr 
						+ "&browserSupported=" + browserSupported + "&browserName=" + browserName + "&browserVer=" + browserVer;

	return clientEnv;
}