var MISSING_FIELD_PREFIX = "You did not enter a value into the ";
var MISSING_FIELD_SUFFIX = " field. This is a required field. Please enter it now.";
var LAST_NAME = "Last Name";
var FIRST_NAME = "First Name";
var SURNAME = "Surname";
var NICKNAME = "Nickname";
var NAME = "Name";
var ITEM_TITLE = "Title";
var BODY = "Detail";
var USER_NAME = "User ID";
var PASSWORD = "Password";
var TITLE = "Title";
var COMPANY_NAME = "Company Name";
var COURSE = "Golf Course";
var ADDRESS = "Street Address";
var CITY = "City";
var STATE_CODE = "State Code";
var STATE = "State";
var COUNTRY = "Country";
var ZIP_CODE = "ZIP Code";
var PHONE = "Phone Number";
var FAX = "Fax Number";
var DATE_OF_BIRTH = "Date of Birth";
var EXPIRATION_DATE = "Expiration Date";
var EMAIL = "Email";
var SSN = "Social Security Number";
var CREDIT_CARD_NUMBER = "Credit Card Number";
var OTHER_INFO = "Other Information";
var BAD_STATE_CODE = "This field must be a valid two character U.S. state abbreviation (like CA for California). Please reenter it now.";
var BAD_ZIP_CODE = "This field must be a 5 or 9 digit U.S. ZIP Code (like 94043). Please reenter it now.";
var BAD_PHONE = "This field must be a 10 digit U.S. phone number (like 415 555 1212). Please reenter it now.";
var BAD_INTEGER = "This field must be a numeric whole number from 0 to infinity.";
var BAD_SCORE = "You did not enter your golf score in a proper format.  Please use whole integers like 75, 85, etc.";
var BAD_RATING = "You did not enter your rating properly.  It must be numeric like 72.6";
var BAD_SLOPE = "You did not enter your slope properly.  It must be numeric like 131 or 131.5";
var BAD_MONEY = "This field must be a numeric field to represent a monetary value.";
var BAD_SSN = "This field must be a 9 digit U.S. social security number (like 123 45 6789). Please reenter it now.";
var BAD_EMAIL = "This field must be a valid email address (like foo@bar.com). Please reenter it now.";
var BAD_DAY = "This field must be a day number between 1 and 31.  Please reenter it now.";
var BAD_MONTH = "This field must be a month number between 1 and 12.  Please reenter it now.";
var BAD_YEAR = "This field must be a 2 or 4 digit year number.  Please reenter it now.";
var BAD_DATE = "The Date that you have entered is not in a valid format (such as 04/14/1999).  Please reenter this date now.";
var BAD_CREDIT_CARD = "This field must be a valid credit card number. Please reenter it now.";
var DATE_PREFIX = "The Day, Month, and Year for ";
var DATE_SUFFIX = " do not form a valid date.  Please reenter them now.";
var ENTRY_PROMPT = "Please enter a ";
var HELP_STATE = "2 character code (like CA).";
var HELP_ZIP = "5 or 9 digit U.S. ZIP Code (like 94043).";
var HELP_PHONE = "10 digit U.S. phone number (like 415 555 1212).";
var HELP_SSN = "9 digit U.S. social security number (like 123 45 6789).";
var HELP_EMAIL = "valid email address (like foo@bar.com).";
var HELP_DAY = "day number between 1 and 31.";
var HELP_MONTH = "month number between 1 and 12.";
var HELP_YEAR = "2 or 4 digit year number.";
var HELP_CREDIT_CARD = "valid credit card number.";
var HELP_DATE = " the a valid date (like 4/14/1999).";


function promptEntry (strInput)
{
	window.status = ENTRY_PROMPT + strInput;
}

function warnEmpty (objField, strInput)
{
	objField.focus();
	alert(MISSING_FIELD_PREFIX + strInput + MISSING_FIELD_SUFFIX);
	return false;
}

function warnInvalid (objField, strInput)
{
	objField.focus();
	objField.select();
	alert(strInput);
	return false;
}

function checkInteger (objField, bolEmptyOK)
{
	if (checkInteger.arguments.length == 1) bolEmptyOK = bolDefaultEmptyOK;
	if ((bolEmptyOK == true) && (isEmpty(objField.value))) return true;
	if (!isInteger(objField.value)) 
		//return warnEmpty (objField, BAD_INTEGER);
		alert(BAD_INTEGER);
	else return true;
}

function checkFloat (objField, bolEmptyOK)
{
	if (checkFloat.arguments.length == 1) bolEmptyOK = bolDefaultEmptyOK;
	if ((bolEmptyOK == true) && (isEmpty(objField.value))) return true;
	if (!isSignedFloat(objField.value)) 
		alert(BAD_MONEY);
	else return true;
}


function checkString (objField, strInput, bolEmptyOK)
{
	if (checkString.arguments.length == 2) bolEmptyOK = bolDefaultEmptyOK;
	if ((bolEmptyOK == true) && (isEmpty(objField.value))) return true;
	if (isWhitespace(objField.value)) 
		return warnEmpty (objField, strInput);
	else return true;
}

function checkStateCode (objField, bolEmptyOK)
{
	if (checkStateCode.arguments.length == 1) bolEmptyOK = bolDefaultEmptyOK;
	if ((bolEmptyOK == true) && (isEmpty(objField.value))) return true;
	else
	{
		objField.value = objField.value.toUpperCase();
		if (!isStateCode(objField.value, false)) 
			return warnInvalid (objField, BAD_STATE_CODE);
		else return true;
    }
}

function reformatZIPCode (strZIPString)
{
	if (strZIPString.length == 5) return strZIPString;
	else return (reformat (strZIPString, "", 5, "-", 4));
}

function checkZIPCode (objField, bolEmptyOK)
{
	if (checkZIPCode.arguments.length == 1) bolEmptyOK = bolDefaultEmptyOK;
	if ((bolEmptyOK == true) && (isEmpty(objField.value))) return true;
	else
	{
		var strNormalizedZIP = stripCharsInBag(objField.value, strZIPCodeDelimiters)
		if (!isZipCode(strNormalizedZIP, false)) 
			return warnInvalid (objField, BAD_ZIP_CODE);
		else
		{
			objField.value = reformatZIPCode(strNormalizedZIP)
			return true;
		}
	}
}

function reformatPhone (strPhoneString)
{
	return (reformat (strPhoneString, "(", 3, ") ", 3, "-", 4))
}

function checkPhone (objField, bolEmptyOK)
{
	if (checkPhone.arguments.length == 1) bolEmptyOK = bolDefaultEmptyOK;
	if ((bolEmptyOK == true) && (isEmpty(objField.value))) return true;
	else
	{
		var strNormalizedPhone = stripCharsInBag(objField.value, strPhoneNumberDelimiters)
		if (!isPhoneNumber(strNormalizedPhone, false)) 
			return warnInvalid (objField, BAD_PHONE);
		else 
		{
			objField.value = reformatPhone(strNormalizedPhone)
			return true;
		}
	}
}

function checkEmail (objField, bolEmptyOK)
{
	if (checkEmail.arguments.length == 1) bolEmptyOK = bolDefaultEmptyOK;
	if ((bolEmptyOK == true) && (isEmpty(objField.value))) return true;
	else if (!isEmail(objField.value, false)) 
		return warnInvalid (objField, BAD_EMAIL);
	else return true;
}

function reformatSSN (strSSN)
{
	return (reformat (strSSN, "", 3, "-", 2, "-", 4));
}

function checkSSN (objField, bolEmptyOK)
{
	if (checkSSN.arguments.length == 1) bolEmptyOK = bolDefaultEmptyOK;
	if ((bolEmptyOK == true) && (isEmpty(objField.value))) return true;
	else
	{
		var strNormalizedSSN = stripCharsInBag(objField.value, strSSNDelimiters);
		if (!isSSN(strNormalizedSSN, false)) 
			return warnInvalid (objField, BAD_SSN);
		else 
		{
			objField.value = reformatSSN(strNormalizedSSN);
			return true;
		}
	}
}

function checkYear (objField, bolEmptyOK)
{
	if (checkYear.arguments.length == 1) bolEmptyOK = bolDefaultEmptyOK;
	if ((bolEmptyOK == true) && (isEmpty(objField.value))) return true;
	if (!isYear(objField.value, false)) 
		return warnInvalid (objField, BAD_YEAR);
	else return true;
}

function checkMonth (objField, bolEmptyOK)
{
	if (checkMonth.arguments.length == 1) bolEmptyOK = bolDefaultEmptyOK;
	if ((bolEmptyOK == true) && (isEmpty(objField.value))) return true;
	if (!isMonth(objField.value, false)) 
		return warnInvalid (objField, BAD_MONTH);
	else return true;
}

function checkDay (objField, bolEmptyOK)
{
	if (checkDay.arguments.length == 1) bolEmptyOK = bolDefaultEmptyOK;
	if ((bolEmptyOK == true) && (isEmpty(objField.value))) return true;
	if (!isDay(objField.value, false)) 
		return warnInvalid (objField, BAD_DAY);
	else return true;
}

function checkDate (objYearField, objMonthField, objDayField, strLabelString, bolOKtoOmitDay)
{
	if (checkDate.arguments.length == 4) bolOKtoOmitDay = false;
	if (!isYear(objYearField.value)) return warnInvalid (objYearField, BAD_YEAR);
	if (!isMonth(objMonthField.value)) return warnInvalid (objMonthField, BAD_MONTH);
	if ( (bolOKtoOmitDay == true) && isEmpty(objDayField.value) ) return true;
	else if (!isDay(objDayField.value)) 
		return warnInvalid (objDayField, BAD_DAY);
	if (isDate (objYearField.value, objMonthField.value, objDayField.value))
		return true;
	alert (DATE_PREFIX + strLabelString + DATE_SUFFIX);
	return false;
}

function reformatDate(strInputDate)
{
	var strDate;
	strDate = "";
	for (intI = 0; intI < strInputDate.length; intI++)
	{   
		var strChar = strInputDate.charAt(intI);
		if (isDigit(strChar) == false) strDate += "/";
		else strDate += strInputDate.charAt(intI);
	}
	return strDate;
}

function checkDateString (objDateField, bolEmptyOK)
{
	if (checkDateString.arguments.length <= 1) bolEmptyOK = bolDefaultEmptyOK;
	if ((bolEmptyOK == true) && (isEmpty(objDateField.value))) return true;
	var strDay;
	var strMonth;
	var strYear;
	var strDate;
	strDate = reformatDate(objDateField.value);
	var aDateParts = strDate.split("/");   
	if (aDateParts.length >= 2 && aDateParts.length <= 3)
	{
		strMonth = aDateParts[0];
		if (aDateParts.length == 2)
		{
			strYear = aDateParts[1];
		}
		else
		{
			strDay = aDateParts[1];
			strYear = aDateParts[2];
		}
	}
	else
	{
		warnInvalid (objDateField, BAD_DATE);
		return false;
	}
	if (isDate (strYear, strMonth, strDay))
	{
		objDateField.value = strDate
		return true;
	}
	else
	{
		warnInvalid (objDateField, BAD_DATE);
		return false;
	}
}

function checkCreditCard (objField, bolEmptyOK)
{
	if (checkCreditCard.arguments.length == 1) bolEmptyOK = bolDefaultEmptyOK;
	if ((bolEmptyOK == true) && (isEmpty(objField.value))) return true;
	var strNormalizedCCN = stripCharsInBag(objField.value, strCreditCardDelimiters)
	if (!isCreditCard(strNormalizedCCN)) 
	return warnInvalid (objField, BAD_CREDIT_CARD);
	else 
	{
		objField.value = strNormalizedCCN;
		return true;
	}
}



