var EXPECTED_MIN_SUN_JVM_VERSION = 1.4;
var EXPECTED_MIN_MS_JVM_BUILD = 2435;
var EXPECTED_MIN_MS_JVM_VERSION = 4.79;
var EXPECTED_MIN_IE_VERSION = 6.0;
var EXPECTED_MIN_FIREFOX_VERSION = 1.5;
var EXPECTED_MIN_SAFARI_VERSION = 300;
var MSIE = "MSIE";
var SUN = "sun";
var APPLE = "apple";
var FIREFOX = "Firefox";
var SAFARI = "Safari";

function yrBrowser()
{
	var userAgent = navigator.userAgent;;
	this.version = "";
	this.appName = navigator.appName;
    this.platform = "";
    this.ie60up = false;
    this.ff15up = false;
	this.safari300up = false;
    var pos = userAgent.indexOf("(");
    if(pos != -1 && userAgent.indexOf(";",pos) != -1)
		this.platform = userAgent.substring(pos+1, userAgent.indexOf(";", pos))

	var iePos = userAgent.indexOf(MSIE);
	var firefoxPos = userAgent.indexOf(FIREFOX);
	var safariPos = userAgent.indexOf(SAFARI);

	try
	{
		if (iePos >= 0)
		{
			this.platform = navigator.platform
			var iePosEnd = userAgent.indexOf(";", iePos)
			if(iePosEnd < 0)
				iePosEnd = userAgent.length
			this.version = userAgent.substring(iePos+5, iePosEnd)
			var i = userAgent.indexOf(")", iePosEnd)
			if(i != -1)
				this.platform = userAgent.substring(iePosEnd+1, i);
			var ver = parseFloat(this.version);
			if (!isNaN(ver) && ver >= EXPECTED_MIN_IE_VERSION)
				this.ie60up = true;
		}
		else if (safariPos >= 0)
		{
			this.platform = navigator.platform;
			this.appName = SAFARI;
			this.version = userAgent.substr(safariPos + 7) + ' ';
			this.version = this.version.substr(0, Math.min(this.version.indexOf(' '), this.version.length));
			var fltVer = parseFloat(this.version); 
			if (!isNaN(fltVer) && fltVer >= EXPECTED_MIN_SAFARI_VERSION)
				this.safari300up = true;
		}
		else if (firefoxPos >= 0)
		{
			//Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax)
			//Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.6) Gecko/20040206 Firefox/0.8
			//Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040804 Firefox/0.9.3
			//Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.4) Gecko/20030624 Netscape/7.1
			this.platform = navigator.platform;
			this.appName = FIREFOX;
			this.version = userAgent.substr(firefoxPos + 8) + ' ';
			this.version = this.version.substr(0, Math.min(this.version.indexOf(' '), this.version.length));
			var fltVer = parseFloat(this.version); 
			if (!isNaN(fltVer) && fltVer >= EXPECTED_MIN_FIREFOX_VERSION)
				this.ff15up = true;
		}
		else
		{
			// try to get browser info
			var namePos = userAgent.lastIndexOf(' ', userAgent.lastIndexOf('/') - 1) + 1;
			var nameLen = userAgent.lastIndexOf('/') - namePos;
			this.platform = navigator.platform;
			this.appName = userAgent.substr(namePos, nameLen);
			this.version = userAgent.substr(namePos + nameLen + 1) + ' ';
			this.version = this.version.substr(0, Math.min(this.version.indexOf(' '), this.version.length));
		}
	}
	catch(e)
	{
		var msg = 'Cannot determine';
		this.platform = msg;
		this.appName = msg;
		this.version = msg;
	}

	this.isVerified = (this.ie60up || this.safari300up || this.ff15up);
	this.js = jsVersion;
}

function getCookieValue (pos)
{
	var temp = document.cookie.indexOf (";", pos)
	if (temp == -1)
		temp = document.cookie.length
	return unescape(document.cookie.substring(pos, temp))
}

function getCookie (name)
{
	var cName = name + "="
	var len = cName.length
	var cookieLen = document.cookie.length
	var i = 0, j
	while (i < cookieLen)
	{
		j = i + len
		if (document.cookie.substring(i, j) == cName)
			return getCookieValue (j)
		i = document.cookie.indexOf(" ", i) + 1
		if (i == 0)
			break
	}
	return null
}

function makeCookie(name, value)
{
	var x1 = makeCookie.arguments
	var x2 = makeCookie.arguments.length
	var expDate = (x2 > 2) ? x1[2] : null
	var path = (x2 > 3) ? x1[3] : null
	var domain = (x2 > 4) ? x1[4] : null
	var secure = (x2 > 5) ? x1[5] : false
	var buf = name + "=" + escape (value)
	buf += ((expDate == null) ? "" : ("; expires=" + expDate.toGMTString()))
    buf += ((path == null) ? "" : ("; path=" + path))
	buf += ((domain == null) ? "" : ("; domain=" + domain))
	buf += ((secure == true) ? "; secure" : "")
	document.cookie = buf
}

function deleteCookie (cookieName)
{
	var now = new Date()
	now.setTime (now.getTime() - 1)
	var cookieValue = getCookie (cookieName)
	document.cookie = cookieName + "=" + cookieValue + "; expires=" + now.toGMTString()
}

function setCookie(name, value, expireDays,path) 
{
	var pair = name + "=" + value
	if (expireDays) 
	{
		var expires = new Date()
		var expTime = expires.getTime() + (expireDays * 86400000)
		expires.setTime(expTime)
		pair += "; expires=" + expires.toGMTString()
	}
	if (path) 
		pair += "; path=" + path
	else 
	{
		var docpath= document.location.pathname
		var position = docpath.indexOf("/",1)
		if (position >0) 
		{
			docpath=docpath.substring(0,position)
			pair += "; path=" + docpath
		}
	}
	document.cookie = pair
}

function setJvmCheckCookie(value)
{
  var name = getJvmCheckCookieName()
  var d = new Date()
  d.setDate(d.getDate() + 10)
  makeCookie(name, value,d)
}

function getJvmCheckCookieName()
{
  return "jvmCheckCookie"
}

function expectedJVMVersion()
{
    var jvmApplet = document.jvmCheckApplet;
    var expected = false;
    if(jvmApplet)
    {
		try
		{
			var vendor= String(jvmApplet.getSystemProperty("java.vendor")).toLowerCase();
			if(vendor.indexOf(SUN) == 0 || vendor.indexOf(APPLE) == 0)
			{
				var pluginVersion = parseFloat(jvmApplet.getSystemProperty("java.version"));
				if (!isNaN(pluginVersion) && pluginVersion >= EXPECTED_MIN_SUN_JVM_VERSION)
					expected = true;
			}
		}
		catch(e)
		{}
    }
    return expected;
}


function getCookie(name, item) 
{
	var arg = name.toUpperCase() + "="
	var alen = arg.length
	var clen = document.cookie.length
	var i = 0
	while (i < clen) 
	{
		var j = i + alen
		if (document.cookie.substring(i, j).toUpperCase() == arg) 
		{
			var cEnd = document.cookie.indexOf(";",j)
			if (cEnd == -1) {
				cEnd = document.cookie.length
			}
			var cookie = document.cookie.substring(j, cEnd)
			if (item != null) 
			{ // Find item
				arg = item.toUpperCase() + "="
				alen = arg.length
				clen = cookie.length
				i = 0
				while (i < clen) 
				{
					j = i + alen
					if (cookie.substring(i, j).toUpperCase() == arg) 
					{
						cEnd = cookie.indexOf("&",j)
						if (cEnd == -1) 
							cEnd = cookie.length
						cookie = cookie.substring(j, cEnd)
						return unescape(cookie)
					} 
					else 
					{
						i = cookie.indexOf("&", i) + 1
						if (i == 0) return ""
					}
				}
			}
			return unescape(cookie)
		} 
		else 
		{
			i = document.cookie.indexOf(" ", i) + 1
			if (i == 0) break;
		}
	}
	return null
}

var g_cookieEnabled = null;
function isCookieEnabled()
{
	if (g_cookieEnabled == null)
	{
		g_cookieEnabled = false
		deleteCookie("testCookie");
		makeCookie("testCookie", "true");
		if ("true" == getCookie("testCookie"))
			g_cookieEnabled = true;
		deleteCookie("testCookie");
	}
	return g_cookieEnabled
}

var g_popupsEnabled = null;
function isPopupsEnabled()
{
	if (g_popupsEnabled == null)
	{
		var mine = window.open('','','width=1,height=1,left=9000,top=0,scrollbars=no');
		if(mine)
		{
			mine.close()
			g_popupsEnabled = true;
		}
		else
			g_popupsEnabled = false;
	}
	return g_popupsEnabled;
}

function onLoadBody()
{
	var browserProblem=document.getElementById("browserProblem")
	browserProblem.style.display = "none";
	setValueAndCheck("jsEnabled", "Yes", "true")

	 // if applets turned off by web master in constants.asp, hide fields related to java and jvm
	if (blnUseApplet) 
	{
		SetRowDisplayStyle('jvmEnabled', true);
		SetRowDisplayStyle('jvmVM', true);
	}

	var clientBrowser = new yrBrowser()
	var bError = false;
	var jvmOk =  "true"
	var platform = clientBrowser.platform
	try
	{
		platform = java.lang.System.getProperty("os.name") + " " + java.lang.System.getProperty("os.version")
	}
	catch(e)
	{
		platform = clientBrowser.platform;
	}

	if (!clientBrowser.isVerified)
	{
		document.getElementById('verifiedBrowser').style.display = "inline";
		setValueAndCheck("appName",	 clientBrowser.appName, "warn");
	}
	else
		setValueAndCheck("appName",	clientBrowser.appName, "true")
	setValueAndCheck("appVersion",	clientBrowser.version, "true")
	setValueAndCheck("platform",		platform, "true")
	setValueAndCheck("jsVersion",		clientBrowser.js, "true")

	if(!navigator.javaEnabled())
	{
		jvmOk =  "false"
		setValueAndCheck("java", "No", "warning")
		SetRowDisplayStyle('jvmVM', false);
	}
	else
	{
		setValueAndCheck("java", "Yes", "true")
		jvmOk = setJvmInfo()
	}

	if(jvmOk != "true" && blnUseApplet)
	{
		var tr = document.getElementById("jvmWarning")
		if(tr)
			tr.style.display="inline"

		SetRowDisplayStyle('jvmRec', true);
		SetRowDisplayStyle('jvmSup', true);
	}

	if(!isCookieEnabled())
	{
		setValueAndCheck("cookie", "No", "false")
		bError = true;
	}
	else
		setValueAndCheck("cookie", "Yes", "true");

	if(!isPopupsEnabled())
	{
		setValueAndCheck("popups", "No", "false")
		bError = true;
	}
	else
		setValueAndCheck("popups", "Yes", "true");

   var validBrowser=document.getElementById("validBrowser")
	browserProblem.style.display = bError ? "inline" : "none";
	validBrowser.style.display = bError ? "none" : "inline";
}

function setValueAndCheck(name, value, check)
{
	var element=document.getElementById(name)
	if(element)
		 element.innerHTML = value
	element=document.getElementById(name+"Img")
	if(element)
	{
	   if(check == "true")
		 element.src="images/bc_right.gif"
	   else if(check == "false")
		 element.src="images/bc_wrong.gif"
	   else
		 element.src="images/bc_warning.gif"
	 }
}

function setJvmInfo()
{
	 var jvmNoInfo = 'Can not find JVM Info';
	 var jvmOk="true"
	 var javaVirtualMachine = jvmNoInfo
	 var jvmApplet = document.jvmCheckApplet;
	 if(jvmApplet)
	 {
		 try
		 {
			javaVirtualMachine=jvmApplet.getVMVersion()
		  }
		  catch(e)
		  {
			javaVirtualMachine = jvmNoInfo;
			jvmOk="warning"
		  }
	  }
	  if(!expectedJVMVersion())
	  {
		   jvmOk="warning"
		   var browserProblemTr = document.getElementById("browserProblemTr")
		   if(browserProblemTr)
			  browserProblemTr.style.display="inline"
	  }
	  setValueAndCheck("jvm",javaVirtualMachine, jvmOk)
	  return jvmOk
}

function SetRowDisplayStyle(id, blnVisible)
{
	if (navigator.userAgent.indexOf(MSIE) > -1)
		document.getElementById(id).style.display = blnVisible ? 'block' : 'none';
	else
		document.getElementById(id).style.visibility = blnVisible ? 'visible' : 'collapse';
}
