// Obsolete.  Replace with isEmail() 
 function emailchk(fld)
 {
  var eiddot=false;
  var eidat=false;
  if (fld.value != "")
   {
	 for (var i=0;i<fld.value.length;i++)
	  if (fld.value.charAt(i) == ".")
	   {
	    eiddot=true;
	   }
	 for (var i=0;i<fld.value.length;i++)
	  if (fld.value.charAt(i) == "@")
	   {
	    eidat=true;
	   }
   }
   if ((! eiddot) ||( ! eidat))
    {
     return false
	}
 return true
  }// end of emailchk
  
  
// Returns false if field fld is zero length or contains only spaces  
 function isempty(fld)
 {   
  var empti=false;
  if (fld.value != "")
   {
	 for (var i=0;i<fld.value.length;i++)       
	  if (fld.value.charAt(i) != " ")	   
	    empti=true;	  
   }       
   if (! empti)
    return false      	    	
 return true    	 
 }// end of isempty()

// Returns true if field fld is zero length or only contains white space characters
function isEmpty(fld)
 {	var nLen = fld.value.length;
 
 	if (!nLen)
 		return true;
 		
 	for (var nIndex=0; nIndex<nLen; ++i)
 	{	if (!isSpace(fld.value.charAt(nIndex)))
 			return false;
 	}
 	
 	return false;
 }

// Returns true if chr is a white space character 
 function isSpace(chr)
 {	var spaceChars = " \t\n";
 
 	if (spaceChars.indexOf(chr) == -1)
 		return false;
 	else
 		return true;
 }
 
 
 function isEmail (strEmail)
 {
 // Regular expression matches an email address of form blah@abc.abc.123.abc
 // Good email addresses do not break any of the following rules:
 //  1) There must be one and only one "@" symbol in the address.
 //    (i.e "george.bush" and "re@gan@lalaland.org" are bad addresses)
 //  2) There must be text preceding the @ symbol and that text cannot
 //    include any of the following characters: /#,^*\
 //    (i.e. "pl#ck@you.edu" is a bad address)
 //  3) After the @ symbol there must be some text with at least one period.
 //    (i.e. "fee@fiefoefum" and "fee@." are bad addresses)
 //  4) The text following the final period in the address must be composed of
 //    alphabetical letters and there must be either 2 or three letters.
 //    (i.e. "fee@fie.foefu.m" and "cha@ka.kahn.r3" are bad addresses)
 //  5) Other character elements following the @ symbol and preceeding periods
 //    can only consist of letters, numbers or hyphens (-). These strings must be
 //    at least one character in length
 //    (in other words "fi@fo..com" and "fee@fo.?.com" are a bad addresses)
 	
     return (strEmail.match(/^[^/#,^*\\]+\@[A-Za-z0-9\-.]+\.[A-Za-z]{2,3}$/) ? true:false);
 }

function setMonthDays(sFormName)
{	var objForm = document.forms[sFormName];
	var optDay = objForm.MoveDay.options;
	var nMonth = objForm.MoveMonth.options[objForm.MoveMonth.selectedIndex].value;
	var nYear = objForm.MoveYear.options[objForm.MoveYear.selectedIndex].value;
	var nMaxDay;
	var i;
	var nCurrentDay = optDay.selectedIndex + 1;

	if (nMonth == 2)
	{	if (((nYear % 4 == 0) && (nYear % 100 != 0)) || (nYear % 400 == 0))
			nMaxDay = 29;
		else
			nMaxDay = 28;
	}
	else if (nMonth == 4 || nMonth == 30 || nMonth == 9 || nMonth == 11)
		nMaxDay = 30
	else
		nMaxDay = 31;

	if (nCurrentDay > nMaxDay)
		nCurrentDay = nMaxDay;

	optDay.length = 0;
	for (i=1; i<=nMaxDay; ++i)
	{	optDay[i-1] = new Option;
		optDay[i-1].text = i;
		optDay[i-1].value = i;
	}
	optDay.selectedIndex = nCurrentDay - 1;
}

function GetZip(strForm, strElement, strCity, strState)
{
	var objForm = document.forms[strForm];
	
		window.open('/ZipHelp.asp?State='  
		    + objForm.elements[strState].value 
		    + '&City=' + objForm.elements[strCity].value 
		    +'&Form=' + strForm + '&Element=' 
		    + strElement, 'mem', 'width=460,height=500,menubar=no,scrollbars=yes,toolbar=no,location=no,directories=no,resizable=yes,left=300,top=250')
}


// Open popup window.  sURL is the only required parameter.  If nHeight is not provided, then
// the window height defaults to 686.  If sFeatures is not provided, then all features default
// to being off.  See makeWindowFeatures() for feature codes.
// Returns false for use in onClick event handlers to suppress normal link action.
function newWindow(sURL, sWindowName, nHeight, sFeatures)
{
	var helpWin
	var sWinProps;
	
	if (!sWindowName || !sWindowName.length)
		sWindowName = 'helpWin';
		
	if (!nHeight)
		nHeight = 686;

	helpWin = window.open(sURL, sWindowName, 
	    'width=450,height=' + nHeight + ',' + makeWindowFeatures(sFeatures));
	helpWin.focus();
	
	return false;
}

// Returns a string that can be used in the features parameter of the window.open method.
//   Each feature can be enabled or disabled by passing the associated feature code in the 
//   sFeatures argument.
function makeWindowFeatures(sFeatures)
{	var aFeatureCodes = new Array("tb", "sb", "mb", "re", "ab", "st", "lo");
	var aFeatureNames = new Array("toolbar", "scrollbars", "menubar", "resizable", "addressbar",
	                           "status", "location");
	var nIndex;
	var sResults = "";
	
	if (!sFeatures) sFeatures = "";
	
	for (nIndex=0; nIndex<aFeatureCodes.length; ++nIndex)
	{	sResults += aFeatureNames[nIndex] + "=";
		if (sFeatures.indexOf(aFeatureCodes[nIndex]) >= 0)
			sResults += "yes,";
		else
			sResults += "no,";
	}
	return sResults.substring(0, sResults.length - 1);
}


//function onStateChange(strStateElm, strCityElm)
function checkForWashDC(sStateField, sCityField, objElement)
{	var objForm = objElement.form;

	if (objForm.elements(sStateField).value == 52) 
		objForm.elements(sCityField).value = 'Washington';

//	if (document.getElementsByName(sStateField)[0].value == 52) 
//		document.getElementsByName(sCityField)[0].value = 'Washington';
}


// Remove leading and trailing whitespace characters
function trim(input)
{
	var lre = /^\s*/;
	var rre = /\s*$/;
	input = input.replace(lre, "");
	input = input.replace(rre, "");
	return (input);
}

function valStdForm(objForm)
{	var i;
	var objFld;
	var nLen;
	var sErrorMsg;

	bRetVal = true;
	for (i=0; i<objForm.elements.length; ++i)
	{	objFld = objForm.elements[i];
		nLen = objFld.name.length;
		if (objFld.name.substring(nLen-2, nLen) == '_r')
		{	sErrorMsg = valStdField(objFld, objFld.name.substring(3, nLen-2).replace('_', ' '), 1);
			if (sErrorMsg.length == 0 && objFld.name.substring(3, 8).toLowerCase() == 'email')
			{	if (!isEmail(objFld.value))
					sErrorMsg = 'Please enter a valid email address';
			}
			if (sErrorMsg.length > 0)
			{	alert(sErrorMsg);
				objFld.focus();
				return false;
			}
		}
	}
	return true;
}


function valStdField(objFld, sRefName, nMinValue)
{	switch (objFld.type)
	{	case 'select-one':
			if (objFld.options[objFld.selectedIndex].value < nMinValue)
				return('Please select a ' + sRefName);
			break;
		case 'text':
			if (objFld.value.length < nMinValue)
				return('Please enter ' + sRefName);
			break;
	}
	
	return '';
}