// Begin FormCheck Scripts
// FormCheck.js - (based on code found at Netscape's Developer Site)
// (NOTE: SEE FULL VERSION FOR COMMENTS AND MORE FUNCTIONS; THIS IS STRIPPED VERSION)

var digits="0123456789";
var lowercaseLetters="abcdefghijklmnopqrstuvwxyz"
var uppercaseLetters="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var whitespace=" \t\n\r";
var phoneNumberDelims="()- ";
var digitsInPhoneNumber=10;
var USStateCodeDelim="|";
var USStateCodes="AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY|AE|AA|AE|AE|AP"
var USStateCodesList=USStateCodes + ",";

var pivotYear = 5;	// years less than or equal to pivot are assumed to be in 21st century, else 20th

// m is an abbreviation for "missing"
var mPrefix="You did not enter a value into the "
var mSuffix=" field. This is a required field. Please enter it now."

// p is an abbreviation for "prompt" as displayed in status bar and MsgBox
var pEntryPrompt	= "Please enter "
var pCurHistChoice	= "Current OR Historical Address Search."
var pNatStCntyChoice= "National,State,OR County Search."
var pCASENUM		= "User-Defined Case Number."
var pFullName		= "Full Name."
var pFirstName		= "First Name."
var pMiddleName		= "Middle Name."
var pName			= "Name."
var pLastName		= "Last Name."
var pSuffix			= "Name Suffix."
var pDate			= "Date in MM/DD/YYYY format."
var pDOB			= "Date of Birth."
var pDOBFrom		= "Date of Birth Starting Range."
var pDOBTo			= "Date of Birth Ending Range."
var pDOD			= "Date of Death."
var pDODFrom		= "Date of Death Starting Range."
var pDODTo			= "Date of Death Ending Range."
var pAgeFrom		= "Age Starting Range."
var pAgeTo			= "Age Ending Range."
var pStreetAddress	= "Street Address."
var pStreetName		= "Street Name."
var pAddressNumFrom	= "Numeric Portion of Address Starting Range."
var pAddressNumTo	= "Numeric Portion of Address Ending Range."
var pAptNumFrom		= "Apartment Number Starting Range."
var pAptNumTo		= "Apartment Number Ending Range."
var pZip			= "5 or 9 digit Zip Code."
var pCity			= "City."
var pCompanyName	= "Company Name."
var pCounty			= "state County or Parish."
var pState			= "2 character State code."
var pTelephone		= "10 digit Telephone Number."
var pLookupDL		= "Driver's Licenese Number."
var pDL				= "Driver's Licenese Number."
var pSSN			= "9 digit U.S. Social Security Number (like 123 45 6789)."
var pVIN			= "Vehicle Identification Number."
var pTag			= "Texas License Plate Number."
var pOwnerName		= "Owner Name keywords."
var pPrimaryWord	= "Most important Keyword."
var pSecondaryWord	= "Second most important Keyword."
var pTertiaryWord	= "Third most important Keyword."
var pAcctNo			= "Account Number or Login ID."
var pDeptNo			= "Department Code. (Some user's don't require this value.)"
var pUserCode		= "User Code that identifies this account."
var pPass			= "Password for this Account."
var pPCID			= "Workstation ID for this machine."
var pUserID			= "User Code that identifies this account."
var pLookupUserID	= "User Code that identifies this account."
var pRegionCode		= "Region Code for this accout."
var pOfficeCode		= "Office Code for this accout."
var pMemberNumber   = "CSC Member Number."
var pCSCFile		= "CSC File Number."
var pReportDate		= "Date for report MM/DD/YY or MM/YY."

// i is an abbrev for "invalid"
var iStateCode="This field must be a valid two character U.S. state abbreviation (like CA for California). Please reenter it now."
var iZIPCode="This field must be a 5 or 9 digit U.S. ZIP Code (like 94043). Please reenter it now."
var iPhone="This field must be a 10 digit U.S. phone number like (415) 555-1212. Please reenter it now."
var iWorldPhone="This field must be a valid international phone number. Please reenter it now."
var iSSN="This field must be a 9 digit U.S. social security number (like 123 45 6789). Please reenter it now."
var iEmail="This field must be a valid email address (like foo@bar.com). Please reenter it now."
var iDate="This field must be in the format MM/DD/YY OR MM/DD/YYYY (like 12/25/76 OR 01/01/2000).	Please reenter it now."
var iDay="The day must be a day number between 1 and 31.	Please reenter it now."
var iMonth="The month field must be a month number between 1 and 12.	Please reenter it now."
var iYear="The year field must be a 2 or 4 digit year number.	Please reenter it now."
var iDatePrefix="The Day,Month,and Year for "
var iDateSuffix=" do not form a valid date.	Please reenter them now."
var iNumeric="This field must only contain numeric data.	Please reenter it now."
var iAlphaNumeric="This field must only contain AlphaNumeric data.	Please reenter it now."
var iAlpha="This field must only contain Alphabetic data.	Please reenter it now."
var iVIN="The Vehichle Identification Number must have at least 8 digits and no more than 17 digits.	Please reenter it now."

var defaultEmptyOK=true
var defaultPromptOK=true

function makeArray(n)
// NN 2.0 & IE 3.0 don't support Array constructors; hence,this function
{	for (var i=1; i <= n; i++) {
	this[i]=0
	} 
	return this
}

//var daysInMonth=makeArray(12);		// DO NOT UPDATE ON TDHS !!!
var daysInMonth = new Array(12);		// DO NOT UPDATE ON TDHS !!!
daysInMonth[1]=31;
daysInMonth[2]=29; // must programmatically check Feb
daysInMonth[3]=31;
daysInMonth[4]=30;
daysInMonth[5]=31;
daysInMonth[6]=30;
daysInMonth[7]=31;
daysInMonth[8]=31;
daysInMonth[9]=30;
daysInMonth[10]=31;
daysInMonth[11]=30;
daysInMonth[12]=31;

function isEmpty(s)
{	return ((s==null) || (s.length==0))
}

function isWhitespace (s)
{	var i;
	if (isEmpty(s)) return true;
	for (i=0; i < s.length; i++)
	{	var c=s.charAt(i);
		if (whitespace.indexOf(c)==-1) return false;
	}
	return true;
}

function stripCharsInBag (s,bag)
{	var i;
	var returnString="";
	for (i=0; i < s.length; i++)
	{	var c=s.charAt(i);
		if (bag.indexOf(c)==-1) returnString += c;
	}
	return returnString;
}

function stripCharsNotInBag (s,bag)
{	var i;
	var returnString="";
	for (i=0; i < s.length; i++)
	{	var c=s.charAt(i);
		if (bag.indexOf(c) != -1) returnString += c;
	}
	return returnString;
}

function stripWhitespace (s)
{	return stripCharsInBag (s,whitespace)
}

function charInString (c,s)
{	for (i=0; i < s.length; i++)
	{	if (s.charAt(i)==c) return true;
	}
	return false
}
function stripInitialWhitespace (s)
{	var i=0;
	s = new String(s);
	while ((i < s.length) && charInString (s.charAt(i),whitespace))
		i++;
	return s.substring (i,s.length);
}

function stripInitialZeros(s)
{	var i=0;
	s = new String(s);
	while( (i < s.length) && charInString(s.charAt(i),'0') )
		i++;
	return s.substring (i,s.length);
}

function isLetter (c)
{	return (((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")))
}

function isDigit (c)
{	return ((c >= "0") && (c <= "9"))
}

function isLetterOrDigit (c)
{	return (isLetter(c) || isDigit(c))
}

function isInteger (s)
{	var i;
	if (isEmpty(s)) 
		if (isInteger.arguments.length==1) return defaultEmptyOK;
		else return (isInteger.arguments[1]==true);
	for (i=0; i < s.length; i++)
	{	
		var c=s.charAt(i);
		if (!isDigit(c)) return false;
	}
	return true;
}

function isSignedInteger (s)
{	if (isEmpty(s)) 
		if (isSignedInteger.arguments.length==1) return defaultEmptyOK;
		else return (isSignedInteger.arguments[1]==true);
	else {
		var startPos=0;
		var secondArg=defaultEmptyOK;
		if (isSignedInteger.arguments.length > 1)
			secondArg=isSignedInteger.arguments[1];
		if ((s.charAt(0)=="-") || (s.charAt(0)=="+"))
			startPos=1;	
		return (isInteger(s.substring(startPos,s.length),secondArg))
	}
}

function isNonnegativeInteger (s)
{	var secondArg=defaultEmptyOK;
	if (isNonnegativeInteger.arguments.length > 1)
		secondArg=isNonnegativeInteger.arguments[1];
	return (isSignedInteger(s,secondArg)
		&& ((isEmpty(s) && secondArg)	|| (parseInt (s) >= 0)));
}

function isAlpha (s)
{	var i;
	if (isEmpty(s)) 
		if (isAlpha.arguments.length==1) return defaultEmptyOK;
		else return (isAlpha.arguments[1]==true);
	for (i=0; i < s.length; i++)
	{	var c=s.charAt(i);
		if (!isLetter(c) && !isWhitespace(c))
		return false;
	}
	return true;
}

function isAlphaNumeric (s)
{	var i;
	if (isEmpty(s)) 
		if (isAlphaNumeric.arguments.length==1) return defaultEmptyOK;
		else return (isAlphaNumeric.arguments[1]==true);
	for (i=0; i < s.length; i++)
	{	
		var c=s.charAt(i);
		if (!(isLetter(c) || isDigit(c) || isWhitespace(c)))
		return false;
	}
	return true;
}

function reformat (s)
{	var arg;
	var sPos=0;
	var resultString="";
	for (var i=1; i < reformat.arguments.length; i++) {
		arg=reformat.arguments[i];
		if (i % 2==1) resultString += arg;
		else {
			resultString += s.substring(sPos,sPos + arg);
			sPos += arg;
		}
	}
	return resultString;
}

function isSSN (s)
{	if (isEmpty(s)) 
		if (isSSN.arguments.length==1) return defaultEmptyOK;
		else return (isSSN.arguments[1]==true);
	return (isInteger(s) && s.length==9)
}

function isPhoneNumber (s)
{	if (isEmpty(s)) 
		if (isPhoneNumber.arguments.length==1) return defaultEmptyOK;
		else return (isPhoneNumber.arguments[1]==true);
	return (isInteger(s) && s.length==digitsInPhoneNumber)
}

function isZIPCode (s)
{	if (isEmpty(s)) 
		if (isZIPCode.arguments.length==1) return defaultEmptyOK;
		else return (isZIPCode.arguments[1]==true);
	return (isInteger(s) && 
			((s.length==5) ||
			(s.length==9)))
}

function isStateCode(s)
{	if (isEmpty(s)) 
		if (isStateCode.arguments.length==1) return defaultEmptyOK;
		else return (isStateCode.arguments[1]==true);
	return ((s.length==2) && (USStateCodes.indexOf(s) != -1) &&
			(s.indexOf(USStateCodeDelim)==-1))
}

function isYear (s)
{	if (isEmpty(s)) 
		if (isYear.arguments.length==1) return defaultEmptyOK;
		else return (isYear.arguments[1]==true);
	if (!isNonnegativeInteger(s)) return false;
	return ((s.length==2) || (s.length==4));
}

function isIntegerInRange (s,a,b)
{	if (isEmpty(s)) 
		if (isIntegerInRange.arguments.length==1) return defaultEmptyOK;
		else return (isIntegerInRange.arguments[1]==true);
	if (!isInteger(s,false)) return false;
	var num=parseInt (stripInitialZeros(s));
	return ((num >= a) && (num <= b));
}

function isMonth (s)
{	if (isEmpty(s)) 
		if (isMonth.arguments.length==1) return defaultEmptyOK;
		else return (isMonth.arguments[1]==true);
	return isIntegerInRange (s,1,12);
}

function isDay (s)
{	if (isEmpty(s)) 
		if (isDay.arguments.length==1) return defaultEmptyOK;
		else return (isDay.arguments[1]==true);	
	return isIntegerInRange (s,1,31);
}

function daysInFebruary (year)
{	// February has 29 days in any year evenly divisible by four,
	// EXCEPT for centurial years which are not also divisible by 400.
	return (	((year % 4==0) && ((!(year % 100==0)) || (year % 400==0))) ? 29 : 28);
}

function isDate (year,month,day)
{	if (! (isYear(year,false) && isMonth(month,false) && isDay(day,false))) return false;
	var intYear=parseInt(year);
	var intMonth=parseInt(month);
	var intDay=parseInt(day);
	if (intDay > daysInMonth[intMonth]) return false; 
	if ((intMonth==2) && (intDay > daysInFebruary(intYear))) return false;
	return true;
}

function prompt (s)
{	window.status=s
}

function jsPromptEntry (s)
{	window.status=pEntryPrompt + s
}
function promptEntry (s)
{	jsPromptEntry(s)
}

function warnEmpty (theField,s)
{	alert(mPrefix + s + mSuffix)
	theField.focus()
	theField.select()
	return false
}

function warnInvalid(theField,s)
{	alert(s)
	theField.focus()
	theField.select()
	return false
}

function checkString (theField,s,emptyOK,promptOK)
{	if (checkString.arguments.length==2) emptyOK	= defaultEmptyOK;
	if (checkString.arguments.length <= 3) promptOK=defaultPromptOK;
	if ((emptyOK==true) && (isEmpty(theField.value))) return true;
	if (isWhitespace(theField.value)) 
		return (promptOK)?warnEmpty(theField,s):false;
	else return true;
}

function reformatZIPCode (ZIPString)
{	if (ZIPString.length==5) return ZIPString;
	else return (reformat (ZIPString,"",5,"-",4));
}
function checkZIPCode (theField,emptyOK,promptOK)
{	if (checkZIPCode.arguments.length==1) emptyOK=defaultEmptyOK;
	if (checkZIPCode.arguments.length <= 2) promptOK=defaultPromptOK;
	if ((emptyOK==true) && (isEmpty(theField.value))) return true;
	else
	{	var normalizedZIP=stripCharsInBag(theField.value,"-")
		if (!isZIPCode(normalizedZIP,false)) 
			return (promptOK)?warnInvalid(theField,iZIPCode):false;
		else 
		{	theField.value=reformatZIPCode(normalizedZIP)
			return true;
		}
	}
}

function reformatPhone (Phone)
{	return (reformat (Phone,"(",3,") ",3,"-",4))
}

function checkPhone (theField,emptyOK,promptOK)
{	if (checkPhone.arguments.length==1) emptyOK=defaultEmptyOK;
	if (checkPhone.arguments.length <= 2) promptOK=defaultPromptOK;
	if ((emptyOK==true) && (isEmpty(theField.value))) return true;
	else
	{	var normalizedPhone=stripCharsInBag(theField.value,phoneNumberDelims)
		if (!isPhoneNumber(normalizedPhone,false)) 
			return (promptOK)?warnInvalid(theField,iPhone):false;
		else 
		{	theField.value=reformatPhone(normalizedPhone)
			return true;
		}
	}
}

function reformatSSN (SSN)
{	return (reformat (SSN,"",3,"-",2,"-",4))
}

function checkSSN (theField,emptyOK,promptOK)
{	if (checkSSN.arguments.length==1) emptyOK=defaultEmptyOK;
	if (checkSSN.arguments.length <= 2) promptOK=defaultPromptOK;
	if ((emptyOK==true) && (isEmpty(theField.value))) return true;
	else
	{	var normalizedSSN=stripCharsInBag(theField.value,"- ")
		if (!isSSN(normalizedSSN,false)) 
			return (promptOK)?warnInvalid(theField,iSSN):false;
		else 
		{	theField.value=reformatSSN(normalizedSSN)
			return true;
		}
	}
}

function checkYear (theField,emptyOK,promptOK)
{	if (checkYear.arguments.length==1) emptyOK=defaultEmptyOK;
	if (checkYear.arguments.length <= 2) promptOK=defaultPromptOK;
	if ((emptyOK==true) && (isEmpty(theField.value))) return true;
	if (!isYear(theField.value,false)) 
		return (promptOK)?warnInvalid(theField,iYear):false;
	else return true;
}

function checkMonth (theField,emptyOK,promptOK)
{	if (checkMonth.arguments.length==1) emptyOK=defaultEmptyOK;
	if (checkMonth.arguments.length <= 2) promptOK=defaultPromptOK;
	if ((emptyOK==true) && (isEmpty(theField.value))) return true;
	if (!isMonth(theField.value,false)) 
		return (promptOK)?warnInvalid(theField,iMonth):false;
	else return true;
}

function checkDay (theField,emptyOK,promptOK)
{	if (checkDay.arguments.length==1) emptyOK=defaultEmptyOK;
	if (checkDay.arguments.length <= 2) promptOK=defaultPromptOK;
	if ((emptyOK==true) && (isEmpty(theField.value))) return true;
	if (!isDay(theField.value,false)) 
		return (promptOK)?warnInvalid(theField,iDay):false;
	else return true;
}

function checkDate (theField,yr,mo,da,labelString,OKtoOmitDay,promptOK)
{	if (checkDate.arguments.length <= 5) OKtoOmitDay=false;
	if (checkDate.arguments.length <= 3) promptOK=defaultPromptOK;
	if (!isYear(yr)) return (promptOK)?warnInvalid(theField,iYear):false;
	if (!isMonth(mo)) return (promptOK)?warnInvalid(theField,iMonth):false;
	if (OKtoOmitDay)
		return isDate(yr,mo,01);
	else if (!isDay(da))
		return (promptOK)?warnInvalid(theField,iDay):false;
	if (isDate(yr,mo,da))
		return true;
	if(promptOK) alert (iDatePrefix + labelString + iDateSuffix + yr + '/' + mo + '/' + da);
	return false;
}

function reformatDateStr (mo,da,yr,fmt)
{	
	if(mo.length == 1)	mo = '0' + mo;
	if(da.length == 1)	da = '0' + da;
	if(yr.length == 2)
	{
		var iYr = parseInt(yr);
		if( yr <= pivotYear )
			yr = 2000 + iYr;
		else
			yr = 1900 + iYr;
	}
	if( reformatDateStr.arguments.length == 4 )	// fmt must be 'MM/DD/YY' or 'DD/MM/YYYY'
	{
		var retVal = '';
		var arrFmt = fmt.split("/");
		for( var i = 0; i < arrFmt.length; i++ )
		{
			switch( arrFmt[i] )
			{
				case 'MM':
					retVal += new String(mo);
					break;
				case 'DD':
					retVal += new String(da);
					break;
				case 'YY':
					retVal += new String(yr).substr(2,2);
					break;
				case 'YYYY':
					retVal += new String(yr);
					break;
				default:
					alert('Date format option was not understood: \'' + arrFmt[i] + '\'' );
					return '';
			}
			if( i < (arrFmt.length-1) )
				retVal += '/';
		}
		return (retVal);
	}
	else
	{
		return (mo+'/'+da+'/'+yr);
	}
}

function checkDateStr (theField,emptyOK,OKtoOmitDay,promptOK,fmt)
{	var labelString="" //*** this should be passed!
	if (checkDateStr.arguments.length < 2) emptyOK=defaultEmptyOK;
	if (checkDateStr.arguments.length < 3) OKtoOmitDay=false;
	if (checkDateStr.arguments.length < 4) promptOK=defaultPromptOK;
	if (checkDateStr.arguments.length < 5) fmt='MM/DD/YYYY';
	if ((emptyOK==true) && (isEmpty(theField.value))) return true;
	var mo,da,yr,dateStr,slash1,slash2;
	mo=da=yr="";
	slash1=slash2=-1;
	dateStr=theField.value;
	if( isInteger( dateStr ) )
	{
		if( dateStr.length == 4 )		// if 'MM/YY"
		{
			if ((mo=dateStr.substr(0,2))=='') return (promptOK)?warnInvalid(theField,iDate + ' (problem in parsing month)'):false;
			if ((yr=dateStr.substr(2,2))=='') return (promptOK)?warnInvalid(theField,iDate + ' (problem in parsing year)'):false;
			if (checkDateStr.arguments.length < 5) fmt='MM/YY';
		}
		else if( dateStr.length == 6 )	// if 'MM/DD/YY"
		{
			if ((mo=dateStr.substr(0,2))=='') return (promptOK)?warnInvalid(theField,iDate + ' (problem in parsing month)'):false;
			if ((da=dateStr.substr(2,2))=='') return (promptOK)?warnInvalid(theField,iDate + ' (problem in parsing day)'):false;
			if ((yr=dateStr.substr(4,2))=='') return (promptOK)?warnInvalid(theField,iDate + ' (problem in parsing year)'):false;
		}
		else if( dateStr.length == 8 )	// if 'MM/DD/YYYY"
		{
			if ((mo=dateStr.substr(0,2))=='') return (promptOK)?warnInvalid(theField,iDate + ' (problem in parsing month)'):false;
			if ((da=dateStr.substr(2,2))=='') return (promptOK)?warnInvalid(theField,iDate + ' (problem in parsing day)'):false;
			if ((yr=dateStr.substr(4,4))=='') return (promptOK)?warnInvalid(theField,iDate + ' (problem in parsing year)'):false;
		}
		else
		{
			return (promptOK)?warnInvalid(theField,iDate + ' (problem parsing date)'):false
		}
	}
	else
	{
		if ((slash1=dateStr.indexOf('/'))==-1)
		{	if ((slash1=dateStr.indexOf('-'))==-1)
			{	if ((slash1=dateStr.indexOf('\\'))==-1) return (promptOK)?warnInvalid(theField,iDate + ' (problem in parsing first slash)'):false;
			}
		}
		if ( (fmt.length > 5) && ((slash2=dateStr.lastIndexOf('/'))==-1) )
		{	if ((slash2=dateStr.lastIndexOf('-'))==-1)
			{	if ((slash2=dateStr.indexOf('\\'))==-1) return (promptOK)?warnInvalid(theField,iDate + ' (problem in parsing second slash)'):false;
			}
		}
		if (slash1==slash2) return (promptOK)?warnInvalid(theField,iDate):false;
		if ((mo=dateStr.substring(0,(slash1)))==-1) return (promptOK)?warnInvalid(theField,iDate + ' (problem in parsing month)'):false;
		if( (fmt.length > 5) )
		{
			if ((da=dateStr.substring((slash1+1),(slash2)))==-1) return (promptOK)?warnInvalid(theField,iDate + ' (problem in parsing day)'):false;
			if ((yr=dateStr.substring((slash2+1),(dateStr.length)))==-1) return (promptOK)?warnInvalid(theField,iDate + ' (problem in parsing year)'):false;
		}
		else
		{
			if ((yr=dateStr.substring((slash1+1),(dateStr.length)))==-1) return (promptOK)?warnInvalid(theField,iDate + ' (problem in parsing year)'):false;
		}
	}
	if (checkDate (theField,yr,mo,da,labelString,OKtoOmitDay,promptOK))
	{
		theField.value = reformatDateStr(mo,da,yr,fmt);
		return true;
	}
	// should have already made prompt; if(promptOK) { alert (iDatePrefix + labelString + iDateSuffix + '(error validating date)'); }
	return false;
}

function checkNumeric (theField,emptyOK,promptOK)
{	if (checkNumeric.arguments.length==1) emptyOK=defaultEmptyOK;
	if (checkNumeric.arguments.length <= 2) promptOK=defaultPromptOK;
	if ((emptyOK==true) && (isEmpty(theField.value))) return true;
	if (!isInteger(theField.value,false)) 
		return (promptOK)?warnInvalid(theField,iNumeric):false;
	else return true;
}

function checkAlpha (theField,emptyOK,promptOK)
{	if (checkAlpha.arguments.length==1) emptyOK=defaultEmptyOK;
	if (checkAlpha.arguments.length <= 2) promptOK=defaultPromptOK;
	if ((emptyOK==true) && (isEmpty(theField.value))) return true;
	if (!isAlpha(theField.value,false)) 
		return (promptOK)?warnInvalid(theField,iAlpha):false;
	else return true;
}

function checkAlphaNumeric (theField,emptyOK,promptOK)
{	if (checkAlphaNumeric.arguments.length==1) emptyOK=defaultEmptyOK;
	if (checkAlphaNumeric.arguments.length <= 2) promptOK=defaultPromptOK;
	if ((emptyOK==true) && (isEmpty(theField.value))) return true;
	if (!isAlphaNumeric(theField.value,false)) 
		return (promptOK)?warnInvalid(theField,iAlphaNumeric):false;
	else return true;
}

function checkStateCode (theField,emptyOK,promptOK)
{	if (checkStateCode.arguments.length==1) emptyOK=defaultEmptyOK;
	if (checkStateCode.arguments.length <= 2) promptOK=defaultPromptOK;
	if ((emptyOK==true) && (isEmpty(theField.value))) return true;
	theField.value=theField.value.toUpperCase();
	if (!isStateCode(theField.value,false)) 
		return (promptOK)?warnInvalid(theField,iStateCode):false;
	else return true;
}

function checkStateCodesList (theField,emptyOK,promptOK)
{	if (checkStateCodesList.arguments.length==1) emptyOK=defaultEmptyOK;
	if (checkStateCodesList.arguments.length <= 2) promptOK=defaultPromptOK;
	if ((emptyOK==true) && (isEmpty(theField.value))) return true;
	if ((emptyOK==false) && (isEmpty(theField.value))) return (promptOK)?warnInvalid(theField,iStateCode):false;
	theField.value=theField.value.toUpperCase();

	theField.value=stripCharsNotInBag (theField.value,USStateCodesList);
	var s=theField.value;
	var i,j,n;
	i=n=0;
	j=s.indexOf(',',(i+1));
	if (j < 0) j=s.length;
	while (i<s.length && n<10)
	{
		if (!isStateCode(s.substring(i,j) ,false)) 
			return (promptOK)?warnInvalid(theField,iStateCode):false;
		i=s.indexOf(',',++i);
		if (i==-1) {n=10;} else {i++;}
		j=s.indexOf(',',(i+1));
		if (j < 0) j=s.length;
		n++;
	}
	return true;
}

function checkVIN (theField,emptyOK,promptOK)
{	if (checkVIN.arguments.length==1) emptyOK=defaultEmptyOK;
	if (checkVIN.arguments.length <= 2) promptOK=defaultPromptOK;
	if ((emptyOK==true) && (isEmpty(theField.value))) return true;
	else
	{	if (!isAlphaNumeric(theField.value,false)) 
			return (promptOK)?warnInvalid(theField,iAlphaNumeric):false;
		if (!(theField.value.length>=8 && theField.value.length<=17)) 
			return (promptOK)?warnInvalid(theField,iVIN):false;
	}
	return true;
}

function typeTag ()
{
	return 1; // *** validate length >= 8; and alphanumeric w/ no whitespace
}

function checkOneWord ()
{
	return 1; // *** validate input as alphanumeric and no whitespace
}


var bDoneLoadingScript = true;
