
function isLeap(currYear) {
	retValue = false;

	// any year divisible by 4 except those divisible by 100 but
	// not by 400 are leap years.
	if (currYear % 400 == 0) {
		retValue = true;
	} else if (currYear % 4 == 0) {
		retValue = true;
	}

	return retValue;
}


function isDate(fieldObject) {
	var fldValue;
	var currentDate;
	var currMonth, currDay, currYear;

	fldValue = fieldObject.value.replace(/ /g, "");
	if (fldValue != "") {
		currentDate = new Date(fldValue);
		if (isNaN(currentDate)) {
			alert("Please enter in mm/dd/yyyy format.");
			fieldObject.value = "";
			fieldObject.focus();
		} else {
			currMonth = parseInt(currentDate.getMonth()) + 1;
			currDay  = parseInt(currentDate.getDate());
			currYear = parseInt(currentDate.getFullYear());
			fieldObject.value = currMonth + "/" + currDay + "/" + currYear;
		}
	}
}

function isValidDate(currMonth, currDay, currYear) {
	retValue = true;

	if (currMonth < 0 || currMonth > 12) {
		retValue = false;

	} else if (currMonth == 4 || currMonth == 6 || currMonth == 9 || currMonth == 11) {
		if (currDay > 30) {
			retValue = false;
		}
	} else if (currMonth != 2) {
		if (currDay > 31) {
			retValue = false;
		}
	} else {
		if (isLeap(currYear)) {
			if (currDay > 29) {
				retValue = false;
			}
		} else {
			if (currDay > 28) {
				retValue = false;
			}
		}
	}

	return retValue;

}

function isEmail(fieldObject) {
	fldValue = fieldObject.value;
	currPos1 = fldValue.indexOf(" ");
	currPos2 = fldValue.indexOf("@");
	nl = fldValue.length;

	fldTest = isNaN(fldValue);
	if (fldValue == "") {
		fieldObject.value = "";
	} else if (currPos1 != -1 || currPos2 == -1) {
		alert("Please enter a valid e-mail address.  An email must not have spaces, and must have an @ symbol.");
		fieldObject.value = "";
		fieldObject.select();
		fieldObject.focus();
	}
			
}

function isZip(fieldObject) {
	var currForm;
	var countryObj;
	var countryText;

	currForm = fieldObject.form;
	countryObj = currForm.country;
	countryText = countryObj.options[countryObj.selectedIndex].text;

	fldValue = fieldObject.value;
	fldValue = fldValue.replace(/ /g, "");
	fldValue = fldValue.replace(/\./g, "");
	fldValue = fldValue.replace(/\+/g, "");
	fldValue = fldValue.replace(/\-/g, "");
	fldValue = fldValue.replace(/\)/g, "");
	fldValue = fldValue.replace(/\(/g, "");
	nl = fldValue.length;

	fldTest = isNaN(fldValue);
	if (countryText != "United States" && countryText != "USA") {
	} else if (fldValue == "") {
		fieldObject.value = "";
	} else if (fldValue != "" && ((nl != 5 && nl != 9)|| fldTest == true)) {
		alert("Please enter the correct Zip Code.");
		fieldObject.value = "";
		fieldObject.select();
		fieldObject.focus();
	} else if (fldValue != "" && (nl == 9 || fldTest ==true)) {
		fieldObject.value = fldValue.substring(0,5) + "-" + fldValue.substring(5);
	}
			
}

function isPhoneNumber(fieldObject) {
	var currForm;
	var countryObj;
	var countryText;

	currForm = fieldObject.form;
	countryObj = currForm.country;
	countryText = countryObj.options[countryObj.selectedIndex].text;

	fldValue = fieldObject.value.replace(/ /g, "");
	fldValue = fldValue.replace(/\./g, "");
	fldValue = fldValue.replace(/\+/g, "");
	fldValue = fldValue.replace(/\-/g, "");
	fldValue = fldValue.replace(/\)/g, "");
	fldValue = fldValue.replace(/\(/g, "");
	nl = fldValue.length;

	fldTest = isNaN(fldValue);
	if (countryText != "United States" && countryText != "USA") {
	} else if (fldValue == "") {
		fieldObject.value = "";
	} else if (fldValue != "" && (nl != 10 || fldTest == true)) {
		alert("Please enter in xxx-xxx-xxxx format.");
		fieldObject.value = "";
		fieldObject.select();
		fieldObject.focus();
	} else if (fldValue != "") {
		fieldObject.value = fldValue.substring(0,3) + "-" + fldValue.substring(3,6) + "-" + fldValue.substring(6);}

}

function setRadioOn(fieldObject, fieldName, offset) {
	var currForm;
	var currObj;

	currForm = fieldObject.form;
	eval("currObj = currForm." + fieldName);
	if (fieldObject.value.replace(/ /g, "") != "") {
		currObj[offset].checked = true;
	} else {
		currObj[offset].checked = false;
	}
}

function isNumeric(fieldObject) {
	var fldValue;

	fldValue = fieldObject.value.replace(/ /g, "");
	fldValue = fldValue.replace(/\$/g, "");
	fldValue = fldValue.replace(/,/g, "");

	if (fldValue != "" && isNaN(parseFloat(fldValue))) {
		alert("Please enter a valid amount.");
		fieldObject.value = "";
		fieldObject.select();
		fieldObject.focus();
	} else if (fldValue != "") {
		fieldObject.value = Math.round(fldValue * 100) / 100;
	}
}

function isCVV2Number(cvvField) {
	var strlen;
	var cvvValue;

	retValue = true;

	cvvValue = cvvField.value.replace(/ /g, "");
	cvvValue = cvvValue.replace(/\./g, "");
	cvvValue = cvvValue.replace(/\+/g, "");
	cvvValue = cvvValue.replace(/\-/g, "");
	cvvValue = cvvValue.replace(/\)/g, "");
	cvvValue = cvvValue.replace(/\(/g, "");
	strlen = cvvValue.length;
	fldTest = isNaN(cvvValue);

	if (strlen != 3 && strlen != 4) { 
		retValue = false;
	}

	return retValue;

}

function isCCNumber(cardNumField, cardTypeField) {
	var strlen;
	var ccNumValue;
	var ccTypeValue;

	retValue = true;

	ccTypeValue = cardTypeField.options[cardTypeField.selectedIndex].text;
	ccNumValue = cardNumField.value.replace(/ /g, "");
	ccNumValue = ccNumValue.replace(/\./g, "");
	ccNumValue = ccNumValue.replace(/\+/g, "");
	ccNumValue = ccNumValue.replace(/\-/g, "");
	ccNumValue = ccNumValue.replace(/\)/g, "");
	ccNumValue = ccNumValue.replace(/\(/g, "");
	strlen = ccNumValue.length;
	fldTest = isNaN(ccNumValue);

	if ((ccTypeValue == "Visa" || ccTypeValue == "MasterCard" || ccTypeValue == "Discover") && strlen != 16) { 
		retValue = false;
	} else if (ccTypeValue == "American Express" && strlen != 15) { 
		retValue = false;
	}

	if (ccTypeValue == "Visa" && ccNumValue.charAt(0) != "4") {
		retValue = false;
	} else if (ccTypeValue == "MasterCard" && ccNumValue.charAt(0) != "5") {
		retValue = false;
	} else if (ccTypeValue == "Discover" && ccNumValue.charAt(0) != "6") {
		retValue = false;
	} else if (ccTypeValue == "American Express" && ccNumValue.charAt(0) != "3") {
		retValue = false;
	}

	return retValue;

}
