var doCheck = (document.all!=null);

if (doCheck == false) {
	versionNN = navigator.appVersion;
	if (versionNN.search(/5.0/i) == -1) {
		browser = "NN4";
	}
	else {
		browser = "NN6";
	}
}
else {
	browser = "IE";
}

function detectBrowser(loc){
	var browserName=navigator.appName; 
	var browserVer=parseFloat(navigator.appVersion); 
	var trgt = document.getElementById(loc);
	//alert(browserName);
	if (browserName=="Netscape")
		trgt.innerHTML = 'Your browser may not render this page correctly.\n\nThis page works best on IE 5.5 or higher browsers.';
	else if (browserName=="Microsoft Internet Explorer" && browserVer < 3) 
		trgt.innerHTML = 'Your browser may not be compatible for this page.\n\nThis page works best on IE 5.5 or higher browsers.';
}

function detectResolution(){
	var w = parseInt(screen.width);
	var h = parseInt(screen.height);
	if (w==800 && h==600){
		document.getElementById("resolution").innerHTML='This page is better viewed with browser having screen resolution greater than 800x600 pixels.';
	}
}

function getLayer(ids) {
   if (browser == "IE")
		return document.all[ids];
   else if (browser == "NN4")
		return document.layers[ids];
   else
		return document.getElementById(ids);
}

function showLayer(ids) {
   var get = getLayer(ids)
   if (get != null) {
		if (browser == "IE" || browser == "NN6")
			get.style.visibility = "visible";
		else if (browser == "NN4")
			get.visibility = "show";
	}
}

function hideLayer(ids) {
	var get = getLayer(ids)
	if (get != null){
		if (browser == "IE" || browser == "NN6")
			get.style.visibility = "hidden";
		else
			get.visibility = "hide";
	}
}

var lTime=40*60;		
function LogoutTimer() {		
	lTime=lTime-1;
	var lMins=(lTime-(lTime%60))/60;
	var lSecs=lTime%60;
	window.status="Inactive session automatically logged-out in: " + lMins + " Min " + lSecs + " Sec" ;
	var trgt=  getLayer('msgArea');
	var msg = '<div style=\"text-align:right;\"><span class=\"small\"><a href=\"JavaScript: void hideLayer(\'msgArea\');\">close</span></a></div>' + 
			  '<div>WARNING: You are about to time out.<br /><br />As a security measure, we log you out after 40 minutes of inactivity.<br />You have been inactive for 38 minutes.<br /><br />If you are logged out, you will need to log in again to continue your session.</div>';
	
	//5 min warning
	if (lMins==2 & lSecs==0) {
		trgt.style.visibility = 'visible';
		trgt.innerHTML = msg;
	}
	//timeout warning
	if (lMins==0 & lSecs==0) {
		alert('WARNING: You have timed out.\n\nAs a security measure, you have been logged out after 40 minutes of inactivity.\n\nClick "Ok" to log-in again to continue your session.');
		document.__appForm.__page.value="000"
		document.__appForm.submit();
	}		
}

function navigate (page)
{
	document.__appForm.__page.value = page;
	document.__appForm.submit();	
}

function navigateWithWait (page, id, li)
{
	var element = document.getElementById (id);
	element.innerHTML = 'Wait...';
	document.__appForm.__line.value = li;
	document.__appForm.__page.value = page;		
	setTimeout('document.__appForm.submit();', 100)	
}

function doPost(page, val)
{
	document.__appForm.action = page;
	document.__appForm.method = "POST";
	document.__appForm.variable.value = val;
	document.__appForm.submit();	
}

function doPost2(page, val)
{
	document.__appForm.variable.value = val;
	navigate (page);	
}

function checkSignature(theForm, name)
{
	var result = true;
	
	if (!validRequired(theForm.DigitalSign,"Digital Signature"))
		return false;	
	else if (theForm.DigitalSign.value != name)
	{
		msgAlert('<p>The signature does not match with the \nsignature appearing on the side of the box.</p><p>Try Again.</p>');
		theForm.DigitalSign.value='';
		theForm.DigitalSign.focus();
		result = false;
	}	
	return result;
}

function isDigit(c)
{
	return((c >= "0") && (c <= "9"))
}

function isInteger(theField)
{
	var s = theField.value;

	for (var i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
		if (!isDigit(c) )
			return false;
	}
	return true;
}

function isValidNumber(theField){
	var result = true;	
	if (theField.value !='' ) {
		if (!isInteger(theField) ) {
			alert('Please enter a valid number.');
			theField.value='';
			theField.focus();			
			result = false;
		}
	}
	return result;
}

function isValidDate(theField){
	var result = true;
	
	if ( parseInt(theField.value) > 31 || parseInt(theField.value) < 1 || !isInteger(theField) ){
		alert('Please enter a valid date.');
		theField.value='';	
		theField.focus();			
		result = false;		
	}
	return result;
}

function isValidMonth(theField) {
	var result = true;
	if ( parseInt(theField.value) > 12 || parseInt(theField.value) < 1 || !isInteger(theField) ){
		alert('Please enter a valid month.');
		theField.value='';	
		theField.focus();			
		result = false;		
	}
	return result;
}
 
function validateDate(obj){
	var result = true;
	var dateVar = new Date(obj.value);
	if(obj.value!='' && (isNaN(dateVar.valueOf()) || (dateVar.valueOf() ==0) ) ){
		alert('Invalid date.\n\nEnter a date in mm/dd/yyyy format.');
		obj.value='';	
		obj.focus();			
		result=false;
	}
	return result;
}

function isEmailAddr(email)
{   
	var pattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	return(pattern.test(email) );
}

/*
function isEmailAddr(email)
{
  var result = false;
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0)
  {
	var pindex = theStr.indexOf(".",index);
	if ((pindex > index+1) && (theStr.length > pindex+1))
  result = true;
  }

  return result;
}
*/

function validEmail(formField,fieldLabel,required)
{
  var result = true;

  if (required && !validRequired(formField,fieldLabel))
	result = false;

  if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
  {
	alert("Please enter a complete email address in the form: yourname@yourdomain.com");
	formField.value='';
	formField.focus();
	result = false;
  }

  return result;
}

function validRequired(formField,fieldLabel)
{
	var result = true;

	if (formField.value == "")
	{
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}
  return result;
}

function verifyEmailOrPassword(formField1, formField2, fieldLabel)
{
	var result = true;

	if(formField1.value != formField2.value)
	{
		msgAlert(fieldLabel +' could not be verified!');
		formField2.value='';
		formField2.focus();
		result = false;
	}
 return result;
}

function checkCardExpDate(cboExpMonth,cboExpYear)
{
	var result = true;
	var nowDate = new Date();
	var nowYear = nowDate.getYear();
	var nowMonth = nowDate.getMonth() + 1;

	var expYear = cboExpYear.options[cboExpYear.selectedIndex].value;
	var expMonth = cboExpMonth.options[cboExpMonth.selectedIndex].value;
	
	if(expYear=="" || expMonth==""){
		alert("The credit card expiry date must have values");
		cboExpMonth.focus();
		result= false;
	}

	// some browsers return only 99 for the year so we need
	// to compensate for that
	if (result) {
		if (nowYear < 1900)
			nowYear = nowYear + 1900;
	
		if (expYear <= nowYear)
		{
			if (expMonth < nowMonth)
			{
				alert("The credit card expiry date you have selected has expired");
				cboExpMonth.focus();
				result= false;
			}
		}
	}
	return result;
}

function capsDetect(e) 
{
	if(!e) 
		e = window.event;
	if(!e) { 
		capsError(false); 
		return; 
	}
	var theKey = e.which ? e.which : (e.keyCode ? e.keyCode : (e.charCode ? e.charCode : 0));
	var theShift = e.shiftKey || ( e.modifiers && ( e.modifiers & 4 ) );
	capsError((theKey > 64 && theKey < 91 && !theShift) || (theKey > 96 && theKey < 123 && theShift));
}

function capsError(capsEngaged) 
{
	if(capsEngaged)	{ 	
		document.getElementById("_pw").innerHTML = capsLockNote;
	}
	else {
		document.getElementById("_pw").innerHTML = "&nbsp;";
	}
}

function wait(sec) {
	//setTimeout('dummy()', 5000);
	//alert("");
	for(var i=0; i <sec; i++){;}	
}

function dummy() {
	for(var i=0; i <1000000; i++){;}
}

//function checkMsgLen(formObj, maxlen) {
//  var len = formObj.msg.value.length
 // formObj.count.value = maxlen-len
  //if ( len>=maxlen) {
   // return false
  //}
//}
function numTyped(current, next, maxlen) {
  var len = current.value.length
  if (len==maxlen) {
    next.focus()
  }
}

//Counts number of characters
function limitCharactersText(field, maxlen) {
	if (field.value.length > maxlen) {
		field.value = field.value.substring(0, maxlen);
		alert('You have reached maximum allowable limit of '+ maxlen +' characters!\n\nYour last input has been truncated.');
		field.focus();
	} 
}

//counts the number of words and trucates the excess entry
function limitWords(field, maxlen) {
	var sWhitespace = " \t\f\n\r\v";		
	var sString = field.value;
	var wCount = 0;
	var cCount = 0;
		
	for (var i=0; i<sString.length; i++){
		if (sWhitespace.indexOf(sString.charAt(i)) != -1)
			wCount++;
		else
			cCount++;
				
		if (wCount>maxlen-1){
			field.value = field.value.substring(0, (wCount+cCount) );
			alert('You have reached maximum allowable limit of '+ maxlen +' words!\n\nYour last input has been truncated.');
			field.focus();
			break;
		}			
	}	
}

function clickThisButton(btn)
{		
	n = document.getElementsByTagName('input'); 
	for (i=0; i<n.length; i++){
		if (n[i].value == btn)	
			n[i].click();
	}	
}

//Allow only alphanumeric
function validatePassword(theField, fieldLabel)
{
	var pw = theField.value;
	if (pw.length < 6) {
		alert('Password must be at least 6 characters long.');
		theField.value='';
		theField.focus();
		return false;
	}
	
	for (var i = 0; i < pw.length; i++)
	{
		var c = pw.charAt(i);
		if (!isAlphaNumeric(c) ) {
			alert('Only letters and numbers are allowed in '+fieldLabel+' field.');
			theField.value='';
			theField.focus();
			return false;
		}
	}
	return true;
}

function isAlphaNumeric(c)
{	
	var re = new RegExp('[A-Za-z0-9]');
	return(c.match(re) );
}